<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rayyildiz.com</title>
	<atom:link href="http://rayyildiz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rayyildiz.com</link>
	<description>Bilgi Paylaştıkça Güzelleşir</description>
	<lastBuildDate>Tue, 13 Jul 2010 11:35:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>JDK6 da Dependency Injection (ServiceLoader)</title>
		<link>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/</link>
		<comments>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 20:33:53 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[IoC]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk6]]></category>
		<category><![CDATA[örnek uygulama]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=226</guid>
		<description><![CDATA[DI ne olduğuna dair bir yazıyı buradan ulaşabilirsiniz. JDK6 da ise ServiceLoader gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim. Uygulamanın örnek test kodlarını github üzerinden bulabilmeniz mümkündür. Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir: UserAuth : Arayüzün yer aldığı proje.IUserAuthService [...]]]></description>
			<content:encoded><![CDATA[<p>DI ne olduğuna dair bir yazıyı <a href="http://rayyildiz.net/2010/05/what-is-dependency-injection/" target="_blank">buradan</a> ulaşabilirsiniz. JDK6 da ise <a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/util/ServiceLoader.html" target="_blank">ServiceLoader</a> gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim.</p>
<p>Uygulamanın örnek test kodlarını <a href="http://github.com/rayyildiz/UserAuthSample" target="_blank">github</a> üzerinden bulabilmeniz mümkündür.</p>
<p>Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir:</p>
<p>UserAuth : Arayüzün yer aldığı proje.IUserAuthService diye bir arayüz yer almakta ve bu arayüz login diye bir metot tanımı içermektedir.</p>
<p>UserAuthImpl: Uygulamanın gerçekleştirildiği sınıf yer alır.</p>
<p>UserAuthTest: Main sınıfının yer aldığı örnek uygulamadır.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/07/project_tree.png" rel="lightbox[226]"><img class="alignleft size-medium wp-image-227" title="project_tree" src="http://rayyildiz.com/wp-content/uploads/2010/07/project_tree-246x300.png" alt="" width="246" height="300" /></a>Arayüzün yer aldığı UserAuth projesinde farklı olarak META-INF/services klasörü  ve bu klasör içinde com.rayyildiz.userauth.IUserAuthService dosyası yer almaktadır. Bu dosya içine bakarsanız sadece bir satır yer almaktadır.</p>
<pre class="brush:java">

com.rayyildiz.userauth.impl.UserAuthService
</pre>
<p>ServiceLoader bu dosyalara bakarak hangi implemantosyunu yüklemesi gerektiğini anlar. UserAuth.jar implementasyonun yer aldığı UserAuthImpl.jar referans olarak bilmez. SericeLoader load sırasında bu implementasyonu arayacaktır.</p>
<p>Burada asıl önemli test projemize bakalım:</p>
<pre class="brush:java">
package com.rayyildiz.userauth;

import java.util.Iterator;
import java.util.ServiceLoader;

public class Main {
  public static void main(String[] args) {
    ServiceLoader&lt;IUserAuthService&gt; serviceLoader = ServiceLoader.load(IUserAuthService.class);
    Iterator&lt;IUserAuthService&gt; iterator = serviceLoader.iterator();-
    while(iterator!= null &amp;&amp; iterator.hasNext()){
      IUserAuthService userAuthService = iterator.next();
      boolean login = userAuthService.login("demo", "password");
      System.out.println("Login for username: demo and password:password is " + login);
   }
}
</pre>
<p>Gördüğünüz gibi test uygulaması implementasyon nesnesini görmez. ServiceLoader META-INF/services içinde yer alan dosyalara bakarak implementasyon nesnelerini örnek projenin olduğu klasörde ve CLASSPATH de arar.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Platformunda Tablı Ekranlar</title>
		<link>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/</link>
		<comments>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 21:41:31 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobil Teknolojiler]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android platform]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[örnek uygulama]]></category>
		<category><![CDATA[tab]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=210</guid>
		<description><![CDATA[Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;TabActivity&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı. Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout [...]]]></description>
			<content:encoded><![CDATA[<p>Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;<a href="http://developer.android.com/reference/android/app/TabActivity.html" target="_blank">TabActivity</a>&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı.</p>
<pre class="brush:xml">
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">
    <TabWidget
       android:id="@android:id/tabs"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" />
      <FrameLayout
         android:id="@android:id/tabcontent"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="5dp">
      </FrameLayout>
    </LinearLayout>
</TabHost>
</pre>
<p>Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout base bir yapıdadır. Tüm Activity leri &#8220;<a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html" target="_blank">AndroidManifest.xml</a>&#8221; içinde tanımlamalısınız.  </p>
<p>Tabları host edecek olan nesnemiz ise şu şekildedir:</p>
<pre class="brush:java">
public class ApplicationActivity extends TabActivity {
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;
    intent = new Intent().setClass(this, DashboardActivity.class);
    spec = tabHost.newTabSpec("home").setIndicator("Home",
         res.getDrawable (R.drawable.ic_tab_dashboard)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, CreditCardActivity.class);
    spec = tabHost.newTabSpec("sample1").setIndicator("Sample Tab",
         res.getDrawable (R.drawable.ic_tab_sample1)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, SettingActivity.class);
    spec = tabHost.newTabSpec("sample2").setIndicator("Sample Tab 2",
        res.getDrawable (R.drawable.ic_tab_sample2)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, AboutActivity.class);
    spec = tabHost.newTabSpec("about").setIndicator("Sample Tab 3",
        res.getDrawable (R.drawable.ic_tab_about)).setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);
  }
}
</pre>
<p>Ben burada daha şık olması amacıyla Tab seçili iken farklı bir ikon görünmesi amacıyla &#8220;ic_tab_xxx&#8221; dosyalarını kullandım. Bunlar şuna benzer bir yapıdadır:</p>
<pre class="brush:xml">
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/helpblue" android:state_selected="true" />
  <item android:drawable="@drawable/helpgray" />
</selector>
</pre>
<p>Uygulamamızı çalıştırdığımızda ekran görünütüsü buna benzer olmaktadır.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/android_sample_tab.png" rel="lightbox[210]"><img src="http://rayyildiz.com/wp-content/uploads/2010/06/android_sample_tab-201x300.png" alt="" title="android_sample_tab" width="201" height="300" class="alignnone size-medium wp-image-211" /></a><a href="http://rayyildiz.com/wp-content/uploads/2010/06/android_sample_tab2.png" rel="lightbox[210]"><img src="http://rayyildiz.com/wp-content/uploads/2010/06/android_sample_tab2-201x300.png" alt="" title="android_sample_tab2" width="201" height="300" class="alignnone size-medium wp-image-217" /></a></p>
<p>Daha sonra daha detaylı bilgi paylaşıyor olacağım, şimdilik hoşcakalın.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Uygulamalarında Veritabanı İşlemleri</title>
		<link>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/</link>
		<comments>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 01:19:18 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobil Teknolojiler]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=194</guid>
		<description><![CDATA[Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android [...]]]></description>
			<content:encoded><![CDATA[<p>Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android de ise yerleşik <a href="http://www.sqlite.org/" target="_blank">sqlite</a> veritabanının yer alması ise Android&#8217;e önemli bir artı sunmaktadır.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/SQLite.gif" rel="lightbox[194]"><img class="alignleft size-full wp-image-195" title="SQLite" src="http://rayyildiz.com/wp-content/uploads/2010/06/SQLite.gif" alt="" width="327" height="97" /></a>Sqlite, oldukça önemli projelerde kullanılmış (Firefox,Skype, Mcfee, iPhone,&#8230;) ve de oldukçe <a href="http://www.sqlite.org/th3.html" target="_blank">iyi test edilmiş</a> bir veritabanıdır. 4K stack ve 100K ise heap için yeterlidir. Android içinde ise gelen sqlite, bir android uygulamasının ihtiyac duyduğu veritabanı işlemlerini karşılayacak düzeydedir.</p>
<p>Bu giriş bilgilerinden sonra örnek bir uygulama geliştirelim. Uygulamamız, ad, soyad ve telefon numarası kayıt edeceğimiz bir &#8220;customer&#8221; tablosu olsun. Linux &#8216;ta sqliteman gibi bir uygulama ile veritabanınızı oluştururun. Örneğimizde kullanacağımız tablonun scripti şu şekildedir:<br />
<span id="more-194"></span></p>
<pre class="brush:sql">

CREATE TABLE "Customer" (
"Id" INTEGER PRIMARY KEY,
"Firstname" TEXT,
"Lastname" TEXT,
"PhoneNumber" TEXT
);
</pre>
<p>Daha sonra ise IDE nizde bir android uygulaması açınız(<a href="http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/">Android le Uygulama Geliştirme</a> yazısından faydalanabilirsiniz). Ben daha eski telefonlarda kullanılabilmesi için 1.6 uygulması actım. Daha sonra ise droiddraw ana ekran tasarlıyoruz.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/droiddraw_main.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-197" title="droiddraw_main" src="http://rayyildiz.com/wp-content/uploads/2010/06/droiddraw_main-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Veritabanı ilk acıldığında tablonun create edilmesi için create script i kod içine almamız gerekir. Aynı şekilde örneğimizde compiled statement kullanıyoruz. Şu anda sadece insert ve getAll metodunu implemente ettik.</p>
<pre class="brush:java">
public class DbHelper {
  private static final String DATABASE_NAME = "rayyildiz_sample.db";
  private static final int DATABASE_VERSION = 1;
  private static final String TABLE_NAME = "Customer";
  private static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME + " ( "
      + "  \"Id\" INTEGER PRIMARY KEY,"
      + "  \"Firstname\" TEXT,"
      + "  \"Lastname\" TEXT,"
      + "  \"PhoneNumber\" TEXT" + ")";
  private static final String TABLE_INSERT = "INSERT INTO " + TABLE_NAME + "(Firstname,Lastname,PhoneNumber) VALUES (?,?,?)";
  private Context context;
  private SQLiteDatabase database;
  private SQLiteStatement insertSQLiteStatement;

  public DbHelper(Context context) {
    this.context = context;
    DbOpenHelper dbOpenHelper = new DbOpenHelper(context);
    database = dbOpenHelper.getWritableDatabase();
    insertSQLiteStatement = database.compileStatement(TABLE_INSERT);
  }

  public long insertCustomer(Customer customer) {
    if (customer == null) {
      return -1;
    }
    insertSQLiteStatement.bindString(1, customer.getFirstname());
    insertSQLiteStatement.bindString(2, customer.getLastname());
    insertSQLiteStatement.bindString(3, customer.getPhoneNumber());

    return insertSQLiteStatement.executeInsert();
  }

  public List<Customer> getAllCustomer() {
    List<Customer> customers = new ArrayList<Customer>();
    Cursor cursor = database.query(TABLE_NAME, new String[]{"id,Firstname,Lastname,PhoneNumber"}, null, null, null, null, "id desc");
    if (cursor.moveToFirst()) {
      do {
        Customer c = new Customer();
        c.setId(cursor.getInt(0));
        c.setFirstname(cursor.getString(1));
        c.setLastname(cursor.getString(2));
        c.setPhoneNumber(cursor.getString(3));

        customers.add(c);
      } while (cursor.moveToNext());
    }
    if (cursor != null &#038;&#038; !cursor.isClosed()) {
      cursor.close();
    }
    return customers;
  }

  private static class DbOpenHelper extends SQLiteOpenHelper {
    public DbOpenHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
      onCreate(db);
    }
  }
}
</pre>
<p>Bu ise Customer nesnesi</p>
<pre class="brush:java">
public class Customer {
  private int id;
  private String firstname;
  private String lastname;
  private String phoneNumber;

  public String getFirstname() {
    return firstname;
  }

  public void setFirstname(String firstname) {
    this.firstname = firstname;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getLastname() {
    return lastname;
  }

  public void setLastname(String lastname) {
    this.lastname = lastname;
  }

  public String getPhoneNumber() {
    return phoneNumber;
  }

  public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
  }
}
</pre>
<p>İki tane Aktivity ekleyelim birisi MainActivity, diğeri ise Customer bilgilerini giriş yapabileceğimiz Activity olsun.</p>
<p>Bunlardan AddCustomerActivity şu şekilde:</p>
<pre class="brush:java">

public class AddCustomerActivity extends Activity {
    public final static int SUCCESS_RETURN_CODE = 1;
  private DbHelper m_db;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insert);

    m_db = new DbHelper(this);
    Button saveButton = (Button) findViewById(R.id.btnSave);
    final  EditText textFirstname = (EditText) findViewById(R.id.textFirstname);
    final EditText textLastname = (EditText) findViewById(R.id.textLastname);
    final EditText textPhoneNumber = (EditText) findViewById(R.id.textPhoneNumber);

    saveButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
       Intent intent = new Intent();
       Customer c = new Customer();
       c.setFirstname(textFirstname.getText().toString());
       c.setLastname(textLastname.getText().toString());
       c.setPhoneNumber(textPhoneNumber.getText().toString());
       m_db.insertCustomer(c);
       setResult(SUCCESS_RETURN_CODE, intent);
       finish();
     }
    });
  }
}
</pre>
<p>Ve Main Activity şu şekildedir</p>
<pre class="brush:java">
public class MainActivity extends Activity {
  protected static final int SUB_ACTIVITY_REQUEST_CODE = 100;

  private ProgressDialog m_ProgressDialog = null;
  private ArrayList<Customer> m_customers = null;
  private DataAdapter m_adapter;
  private Runnable viewData;
  DbHelper m_db;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    // ToDo add your GUI initialization code here
    setContentView(R.layout.main);
    m_db = new DbHelper(this);
    // initialize process
    m_customers = new ArrayList<Customer>();
    this.m_adapter = new DataAdapter(this, R.layout.row, m_customers);
    setListAdapter(this.m_adapter);

    Button refreshButton = (Button)findViewById(R.id.btnRefresh);
    refreshButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View arg0) {
        refresh();
      }
    });

    Button addButton = (Button) findViewById(R.id.btnAdd);
    addButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v
          ) {
        Intent i = new Intent(MainActivity.this,AddCustomerActivity.class);
        startActivityForResult(i, SUB_ACTIVITY_REQUEST_CODE);
        //startActivity(i);
      }
    });
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SUB_ACTIVITY_REQUEST_CODE) {
      refresh();
    }
  }

  private void setListAdapter(DataAdapter m_adapter) {
    ListView lw = (ListView) findViewById(R.id.listCustomer);
    if (lw != null) {
      lw.setAdapter(m_adapter);
    }
  }

  private void insert(Customer c){
    m_db.insertCustomer(c);
  }

  private void refresh(){
    WorkerThread thread = new WorkerThread();
    //Thread thread = new Thread(null, viewData, "MagentoBackground");
    thread.start();
    m_ProgressDialog = ProgressDialog.show(MainActivity.this,
        "Please wait...", "Resfreshing data ...", true);
  }

  private class WorkerThread extends Thread {

    @Override
    public void run() {
      getCustomers();
    }
  }

  private Runnable returnRes = new Runnable() {
    @Override
    public void run() {
      if (m_customers != null &#038;&#038; m_customers.size() > 0) {
        m_adapter.clear();
        m_adapter.notifyDataSetChanged();
        for (int i = 0; i < m_customers.size(); i++) {
          m_adapter.add(m_customers.get(i));
        }
      }
      m_ProgressDialog.dismiss();
      m_adapter.notifyDataSetChanged();
    }
  };

  private void getCustomers() {
    try {
      m_customers = new ArrayList<Customer>();

      m_customers = (ArrayList<Customer>) m_db.getAllCustomer();

      //Thread.sleep(2000);
    } catch (Exception e) {
      Log.e("BACKGROUND_PROC", e.getMessage());
    }
    runOnUiThread(returnRes);
  }

  public class DataAdapter extends ArrayAdapter<Customer>{
  private ArrayList<Customer> items;

  public DataAdapter(Context context, int textViewResourceId, ArrayList<Customer> items) {
    super(context, textViewResourceId, items);
    this.items = items;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      v = vi.inflate(R.layout.row, null);
    }
    Customer o = items.get(position);
    if (o != null) {
      TextView tt = (TextView) v.findViewById(R.id.listLabeltext);
      if (tt != null) {
        tt.setText(o.getId() +" : " + o.getFirstname() + " " + o.getLastname() + "("+ o.getPhoneNumber() + ")");
      }
    }
     return v;
  }
  }
}
</pre>
<p>Örnek uygulamamızın ekran görüntüleri</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/add_customer.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-202" title="add_customer" src="http://rayyildiz.com/wp-content/uploads/2010/06/add_customer-198x300.png" alt="" width="198" height="300" /></a></p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/list_customers.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-203" title="list_customers" src="http://rayyildiz.com/wp-content/uploads/2010/06/list_customers-201x300.png" alt="" width="201" height="300" /></a></p>
<p>Uygulamanın kaynak kodunu ise <a href="http://github.com/downloads/rayyildiz/TestProject/AndroidSampleDb1-v_1_0.zip" target="_blank">github</a> üzerinden indirebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android için Uygulama Geliştirme</title>
		<link>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/</link>
		<comments>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 11:06:15 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Teknolojiler]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=174</guid>
		<description><![CDATA[Android ile uygulama geliştirmeye başlamak için Android SDK indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor. Şu anda en son sürüm 2.2 (Android dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek [...]]]></description>
			<content:encoded><![CDATA[<p>Android ile uygulama geliştirmeye başlamak için <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a> indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor.</p>
<p>Şu anda <a href="http://developer.android.com/sdk/android-2.2.html" target="_blank">en son sürüm 2.2</a> (Android <img src='http://rayyildiz.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek biraz zaman alabilir.</p>
<p>Bu sırada size tafsiyem UI tasarlayabileniz için <a href="http://www.droiddraw.org/" target="_blank">droiddraw</a> adındaki bir uygulamayı indirmenizdir. Her ne kadar da eclipse için <a href="http://developer.android.com/sdk/eclipse-adt.html" target="_blank">ADT</a> paketi yer alsa da ben droiddraw ı daha çok beğendim. Ayrıca biz örneği <a href="http://www.netbeans.org" target="_blank">netbeans</a> ile geliştireceğiz. Bu yüzden droiddraw ı indirmenizde yarar var. Ayrıca netbeans için geliştirilmiş NBAndroid eklentisini  <a href="http://wiki.netbeans.org/IntroAndroidDevNetBeans" target="_blank">bu adresten yardım alarak</a> veya ﻿﻿ <a href="http://kenai.com/downloads/nbandroid/updates.xml" target="_blank">http://kenai.com/downloads/nbandroid/updates.xml</a> update adresiyle kurabilirsiniz. Yapmanız gereken netbeans de Tools-&gt;Plugins oradan da Settings de &#8220;Add&#8221; butonuna tıklayarak bu plugini eklemek ve Available Plugins tabında Android diye aratıp bu plugin i kurmaktır.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/nbandroid_plugin_install.png" rel="lightbox[174]"><img class="alignnone size-medium wp-image-176" title="nbandroid_plugin_install" src="http://rayyildiz.com/wp-content/uploads/2010/06/nbandroid_plugin_install-300x186.png" alt="" width="300" height="186" /></a></p>
<p>Daha sonra linux için terminalden aşağıdaki komutu  çalıştırıp DroidDraw ı açın. Windows da eğer Java6 kuruluysa, droiddraw ın içindeki droiddraw.jar ı tıklamanız yeterlidir.</p>
<pre class="brush:bash">
rayyildiz@iceface:~/Downloads/developer/droiddraw-r1b14$ sh droiddraw.sh &amp;
</pre>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/droiddraw.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-179" title="droiddraw" src="http://rayyildiz.com/wp-content/uploads/2010/06/droiddraw-300x174.png" alt="" width="300" height="174" /></a>Droiddraw ile widgets tab ındaki Button u sürükleyip yandaki alana bırakınız. Daha sonra Button&#8217;a tıklayıp Properties tabı na tıklayınız.Burada şu bilgileri değiştirin:</p>
<p>id         : <strong>@+id/btnSample</strong></p>
<p>Width : <strong>100px</strong></p>
<p>Text     : <strong>Hi</strong></p>
<p>Bunları değiştirip Apply düğmensine basın. Sizde diğer özellikleri bakabilirsiniz. <em>Burada sadece şu aklınızda olsun; Width, height, left margin değerleri gibi yerlerde mutlaka px ekleyin. Yani 100 değil 100px olmalı</em>. Bu işlemleri tamamlayıp Generete tıklanız. Output ekranında aşağıdakine benzer bir xml üretecek. Bu xml sizin UI nı oluşturacaktır.</p>
<pre class="brush:xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
&gt;
&lt;Button
android:id="@+id/btnSample"
android:layout_width="100px"
android:layout_height="wrap_content"
android:text="Hi"
android:layout_x="90px"
android:layout_y="32px"
&gt;
&lt;/Button&gt;
&lt;/AbsoluteLayout&gt;
</pre>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/06/android_new_project.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-182" title="android_new_project" src="http://rayyildiz.com/wp-content/uploads/2010/06/android_new_project-300x203.png" alt="" width="300" height="203" /></a>Netbeans de yeni bir proje açalım. <a href="http://kenai.com/projects/nbandroid" target="_blank">NBAdroid</a> eklentisini kurduysanız, yeni bir proje eklerken Android diye bir kısım yer alacaktır. Daha sorna yandaki gibi proje adı, paket adı, activity adı gibi alanları doldurmanız gerekiyor. İlk kez acıyosanız, Manageplatformu tıklayarak kurulum yaptığınız android klasörünü göstermeniz gerekiyor.</p>
<p>İlk kez projeyi actığınızda, Shift + F10 ile projeyi çalıştırabilirsiniz. Burada android emulator acılıp projenizi yükleyecektir ve ekrana klasik &#8220;Hello World&#8221; yazacaktır.</p>
<p>Şimdi uygulamaya geri dönüp Resources/layouts altında yer alan main.xml  i droiddraw ile üretttiğimiz xml i kopyalayıp yağıştıralım. Bunu yaptıktan sonra uygulamayı bir kere build etmenizde yarar var. Bu işlem sonuda otomatik üretilen R.java dosyasında aşağıaki gibi değişiklikler olacaktır.</p>
<pre class="brush:java">

public final class R {
   public static final class attr { }

   public static final class id {
      public static final int btnSample=0x7f040001;
      public static final int widget0=0x7f040000;
  }

  public static final class layout {
     public static final int main=0x7f020000;
  }

  public static final class string {
     public static final int app_name=0x7f030000;
  }
}
</pre>
<p>Daha sonra aşağıdaki kodu MainActivity.java içine yazınız.</p>
<pre class="brush:java">

@Override
public void onCreate(Bundle icicle) {
   super.onCreate(icicle);
   setContentView(R.layout.main);
   final Button button = (Button) findViewById(R.id.btnSample);
   button.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
         alert("Hello world");
      }
   });
}

private void alert(String message){
   new AlertDialog.Builder(this).setTitle("rayyildiz.com").setMessage(message).setNeutralButton("Ok",
      new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) { }
      }).show();
}
</pre>
<p>Uygulamayı çalıştırdığınızda şöylşe çalışacaktır:<br />
<a href="http://rayyildiz.com/wp-content/uploads/2010/06/application_run.png" rel="lightbox[174]"><img src="http://rayyildiz.com/wp-content/uploads/2010/06/application_run.png" alt="" title="application_run" width="500" class="alignnone size-full wp-image-187" /></a><br />
<br />
Uygulamanın kaynak kodunu şu adresten indirebilirsiniz.<a href="http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz">http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>NoSQL Giriş ve MongoDB</title>
		<link>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/</link>
		<comments>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/#comments</comments>
		<pubDate>Sat, 08 May 2010 12:42:57 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[rdms]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=126</guid>
		<description><![CDATA[NoSQL, isminden de anlaşılabileceği gibi SQL kullanılmadığı veritabanlarına verilen genel bir isimdir. Genelde ORM ile karıştırılmaktadır. NoSQL, işişkisel veritabanlarına (RDMS) alternatif bir tekniktir. ilişkisel bir veritabanında (RDMS), tablolar oluşturur, tabloları birbirleriyle ilişki kurarak, join, kartezyen gibi SQL cümlecikleriyle kullanırız. Bunun birçok faydası vardır. Hatta yazılım geliştirirken, SQL den kaçınmak maksadıyla, ORM aracları geliştirilmiştir. Bu sayede, [...]]]></description>
			<content:encoded><![CDATA[<p>NoSQL, isminden de anlaşılabileceği gibi SQL kullanılmadığı veritabanlarına verilen genel bir isimdir. Genelde ORM ile karıştırılmaktadır. NoSQL, işişkisel veritabanlarına (<a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDMS</a>) alternatif bir tekniktir.</p>
<p>ilişkisel bir veritabanında (RDMS), tablolar oluşturur, tabloları birbirleriyle ilişki kurarak, join, kartezyen gibi SQL cümlecikleriyle kullanırız. Bunun birçok faydası vardır. Hatta yazılım geliştirirken, SQL den kaçınmak maksadıyla, <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM</a> aracları geliştirilmiştir. Bu sayede, veritabanında yer alan tablolara, nesne gözüyle bakılabilmiş, OOP mantığıyla üzerinde işlem yapılabilmiştir.</p>
<p>NoSQL ise böyle birşey değildir. ORM araçları, sizin bir nesneye set ettiğiniz değerleri, SQL cevirerek, sizin SQL ile uğraşmanızı engellemiş olurlar. NoSQL veritabanları dağıtık bir mimari ile oluşturulmuş olup, yarının teknolojisi olarak görülmektedirler. Google&#8217;ın BigTable, Amazon&#8217;un Dynamo, Facebook&#8217;un <a href="http://cassandra.apache.org/" target="_blank">Cassandra</a> bu tür birer veritabanlarıdır.Bu üç veritabanı da <a href="http://en.wikipedia.org/wiki/Petabyte" target="_blank">PB</a> boyutunda veri tutmak için geliştirilmiştir. Ben bunlardan konfigurasyon acısından daha kolay yapılan döküman tabanlı bir veritabanı hakkında bilgi vereceğim: <a href="http://www.mongodb.org" target="_blank">MongoDB</a>.</p>
<p><span id="more-132"></span>MongoDB, 10gen tarafından geliştirilmiş, döküman tabanlı bir NoSQL veritabanıdır. Bu <a href="http://www.mongodb.org/display/DOCS/Downloads" target="_blank">bağlantıdan</a> işletim sisteminize göre indirebilrisiniz. Eğer Ubuntu/Debian kullanıyorsanız, <a href="http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages" target="_blank">bu adresten</a> nasıl kurabileceğinizi bakabilirsiniz.</p>
<p><strong>Örnek Java Projesi</strong></p>
<p>MongoDB denemek amacıyla örnek bir java projesi yazacağız. MongoDB ye odaklanmak amacıyla yazdığımız uygulama, konsol uygulaması olacak ve IDE olarak <a href="http://www.netbeans.org" target="_blank">netbeans</a> kullanacağız.</p>
<p>İlk önce yapmanız gereken <a href="http://github.com/mongodb/mongo-java-driver/downloads" target="_blank">mongo-java-driver</a> indirmek. Ben şu an stable versiyonu <a href="http://github.com/downloads/mongodb/mongo-java-driver/mongo-1.4.jar">mongo-1-4.jar</a> ı tercih ettim.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/05/nb_create_project.png" rel="lightbox[132]"><img class="size-full wp-image-127 alignnone" title="nb_create_project" src="http://rayyildiz.com/wp-content/uploads/2010/05/nb_create_project.png" alt="" width="497" height="334" /></a></p>
<p>Daha sonra netbeans ile örnek bir java uygulaması açıyorum. Bundan sonra yapmanız gereken, mongo java driver library olarak eklemek. Bunun için şu şelilde yapabilrisiniz.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/05/get_mongo_driver.png" rel="lightbox[132]"><img title="get_mongo_driver" src="http://rayyildiz.com/wp-content/uploads/2010/05/get_mongo_driver.png" alt="" width="496" height="371" /></a></p>
<p>Bşir tane Book adında kitap sınıfı yazalım. Bu yazdığımız nesne, &#8220;BasicDBObject&#8221; nesnesinden türetiyoruz ve getXxx- setXxx, BasicDBObject dan gelen put ve get metotlarını kullanacağız.</p>
<p><a href="http://rayyildiztemp.files.wordpress.com/2010/05/code_book.png" rel="lightbox[132]"><img class="alignnone size-full wp-image-129" title="code_book" src="http://rayyildiztemp.files.wordpress.com/2010/05/code_book.png" alt="" width="497" height="388" /></a></p>
<p>MongoDB ye erişmek için şu adımları takip ederiz.</p>
<ul>
<li>Bir Mongo nesnesi alırız. Bu nesne mongodb ye bağlanmak içindir.</li>
<li>Mongo dan bir DB alırız. Bu db eğer varsa o gelir, yoksa yenisi oluşturulur.</li>
<li>DB nesnesinden DBCollection alırız. DBCollection  tablodur.</li>
<li>Insert için bir DBObject ( veya BasicDbObject) bu DBCollection&#8217;a insert ederiz.</li>
<li>Bu DBCollection içinde gezmek için ise DBCollectiondan bir DBCursor oluşturup, DBCursor içinde dolaşırız.</li>
</ul>
<p>Şunu bilmeniz gerekiyor. NoSQL, anlayabilmek için sürekli kullandığımız ilişkisel veritabanı mantığını bir kenera bırakmamız gerekiyor. Özellikle çok büyük veriler için kullanılan bu veritabanları, elbette güzel özelliklerinin yanında (hız) eksik yanları da vardır (Her ne kadarda bu eksik yanları kapatılması için teknikler olsa bile). Size tafsiyem bir banka uygulaması geliştiriyorsanız, NoSQL kullanmak isterseniz bir kere daha düşünmeniz. Bunun yanında, sosyal bir ağ geliştiriyorsanız, bildiğiniz RDMS in dışına çıkmak çok güzel sonuçlar da doğurabilir.</p>
<p>Burada gerçekleştirdiğimiz örnek uygulamayı <a href="http://github.com/downloads/rayyildiz/TestProject/MongoDBTest.tar.gz" target="_blank">buradan</a> indirebilirsiniz. Şimdilik sadece giriş amacındaki bu yazıyı burada  bırakayım.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Git-scm ve GitHub</title>
		<link>http://rayyildiz.com/2010/05/git-scm-ve-github/</link>
		<comments>http://rayyildiz.com/2010/05/git-scm-ve-github/#comments</comments>
		<pubDate>Tue, 04 May 2010 14:47:20 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-scm]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=109</guid>
		<description><![CDATA[Github, git-scm ile opensource veya kendi projelerinizin kaynak kodlarını yönetmek için bir uygulama. SVN üzerinde yer alan kaynak kodları çok kolay bir şekilde, import edebiliyorsunuz. Ücretsiz sürümü private proje açmanıza izin vermezken, sayısız public proje açabilirsiniz. Twitter, facebook başta olmak üzere birçok önemli proje şu anda github üzerinde durmakta. Twitter&#8217;ın scala ile geliştirdiği gizzard projesi [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rayyildiz.com/wp-content/uploads/2010/05/git_hub.png" rel="lightbox[109]"><img class="alignleft size-full wp-image-110" title="git_hub" src="http://rayyildiz.com/wp-content/uploads/2010/05/git_hub.png" alt="" width="182" height="86" /></a><a href="http://github.com" target="_blank">Github</a>, <a href="http://www.git-scm.com/" target="_blank">git-scm</a> ile opensource veya kendi projelerinizin kaynak kodlarını yönetmek için bir uygulama. SVN üzerinde yer alan kaynak kodları çok kolay bir şekilde, import edebiliyorsunuz. Ücretsiz sürümü private proje açmanıza izin vermezken, sayısız public proje açabilirsiniz.</p>
<p><a href="http://twitter.com" target="_blank">Twitter</a>, <a href="http://facebook.com" target="_blank">facebook</a> başta olmak üzere birçok önemli proje şu anda github üzerinde durmakta. Twitter&#8217;ın scala ile geliştirdiği <a href="http://github.com/twitter/gizzard" target="_blank">gizzard</a> projesi github üzerinden erişmeniz mümkün.</p>
<p><strong>Git-Scm</strong></p>
<p><a href="http://en.wikipedia.org/wiki/Linus_Torvalds" target="_blank">Linux Torwalds</a> tarafından geliştirilen kaynak kod paylaşım aracıdır. Özellikle dağıtım kod yönetim sistemi olmasından ve hızlı çalışmasından dolayı gün geçtikçe populer bir hale gelmeye başladı. SVN den farklı olarak merkezi değil, dağıtık bir kod yönetimine sahiptir. Bu ise linux kernel&#8217;ın geliştirilmesi sürecinde ihtiyac haline gelen ve gene Linux Torwalds tarafından yazılan bir araç.</p>
<p><span id="more-109"></span><strong>GitHub İle Çalışma</strong></p>
<p>Github sitesinde <a href="http://github.com/plans" target="_blank">ihtiyacınıza göre</a> üye olmanız gerekmekte. Yeni bir proje açmak ise çok kolay. <a href="http://github.com/repositories/new" target="_blank"></a></p>
<p><a href="http://rayyildiztemp.files.wordpress.com/2010/05/create_new.png" rel="lightbox[109]"><img class="size-full wp-image-111 alignnone" title="create_new" src="http://rayyildiztemp.files.wordpress.com/2010/05/create_new.png" alt="" width="497" height="268" /></a></p>
<p><a href="http://github.com/repositories/new" target="_blank">Yeni proje</a> açtktan sonra yapmanız gereken git ile ilk halini almak. Git, bilgisayarınıza <a href="http://www.git-scm.com/download" target="_blank">indirdikten</a> sonra promt dan aşağıdaki adımları yapmanız gerekiyor. (Windows için tafsiyem <a href="http://code.google.com/p/msysgit/" target="_blank">msysgit</a> i denemeniz)<br />
<span style="text-decoration:underline;">Genel ayarlar</span></p>
<blockquote><p>git config &#8211;global user.name &#8220;ADINIZ SOYADINIZ&#8221;<br />
git config &#8211;global user.email [eposta adresiniz]</p></blockquote>
<p><span style="text-decoration:underline;">Projeyi Almak için</span></p>
<blockquote><p>mkdir [projenizi_adi]<br />
cd [projenizi_adi]<br />
git init<br />
touch README<br />
git add README<br />
git commit -m &#8216;mesajınız&#8221;<br />
git remote add origin [projenizin adresi]      örnek: git@github.com:rayyildiz/test_project.git<br />
git push origin master</p></blockquote>
<p>Github, ana klaösrde README klasörü kullanmanızı tafsiye etmektedir. Bu şekilde, projenizin sayfanızda bu sayfanın içeriğini göstermektedir.</p>
<p><strong>.gitignore</strong></p>
<p>Bazı derleme sonucunda ğretilen dosyaları git içinde yer almasını istemezsiniz. Bu durumda yapmanız gereken projenizin ana sayfasında .gitignore diye bir dosya açıp içine istemediğinizi klasör, uzantıları veya dosyaları çıkarmaktır. Bir ASP.NET 3.5 projesinde bin/debug klasörü, .uso gibi dosyalar sürekli değişmekte ve sıkıntı yaşatmaktadır. Bir asp.net projesi için aşağıdaki dosyayı kullanabilirsiniz.</p>
<blockquote>
<pre>.svn*
obj/
bin/
*.suo
*.user
Log/
log/
*.db</pre>
</blockquote>
<div id="LC8">Çoğunlukla kullandığınız IDE ler için git plugin geliştirlmiştir. Ancak konsoldan git projesi ile çalışmak çok zevkli <img src='http://rayyildiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div></div>
<div>Github duyurduğu <a href="http://github.com/blog/644-subversion-write-support" target="_blank">haberde</a>, github da yer alan projelerinizi artık svn ile de erişebilecek, code gönderip alabileceksiniz. Çok güzel bir gelişme. Özellikle şu günlerde, git plugin sayısı SVN plugin sayısından az olduğunu düşündüğümüzde, svn kullanan bir kişinin alışkanlığını şimdilik değiştirmesine gerek yok demektir.</div>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/git-scm-ve-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Netbeans 6.9</title>
		<link>http://rayyildiz.com/2010/05/netbeans-6-9/</link>
		<comments>http://rayyildiz.com/2010/05/netbeans-6-9/#comments</comments>
		<pubDate>Mon, 03 May 2010 15:17:23 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Teknolojiler]]></category>
		<category><![CDATA[Netbeans]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[spring 3.0]]></category>
		<category><![CDATA[springmvc]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=88</guid>
		<description><![CDATA[Netbeans 6.9 beta sürümü yayınlandı. Netbeans 6.9 adresinden detaylarına bakabilir ve indirebilirsiniz. Netbeans 6.9 da benim uzun süredir beklediğim Spring 3.0 desteği en sonunda gelmiş oldu. Daha önceki sürümlerinde netbeans Spring 2.5 desteği sunuyordu. Özellikle spring 3.0 ile gelen özellikleri kullanabileceğiz. Netbeans 6.9, 9 haziranda release olacak. Google App Engine için geliştirilmiş plugin de mevcuttur. [...]]]></description>
			<content:encoded><![CDATA[<p>Netbeans 6.9 beta sürümü yayınlandı. <a href="http://www.netbeans.com/community/releases/69/" target="_blank">Netbeans 6.9</a> adresinden detaylarına bakabilir ve indirebilirsiniz.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/05/enterprise-cdi.png" rel="lightbox[88]"><img class="alignleft size-full wp-image-93" title="enterprise-cdi" src="http://rayyildiz.com/wp-content/uploads/2010/05/enterprise-cdi.png" alt="" width="200" height="126" /></a> Netbeans 6.9 da benim uzun süredir beklediğim <a href="http://www.springsource.com" target="_blank">Spring 3.0</a> desteği en sonunda gelmiş oldu. Daha önceki sürümlerinde netbeans Spring 2.5  desteği sunuyordu. Özellikle <a href="http://blog.springsource.com/2009/12/16/spring-framework-3-0-goes-ga/?__utma=1.1917309320.1267716365.1267724045.1272898185.3&amp;__utmb=1.3.10.1272898185&amp;__utmc=1&amp;__utmx=-&amp;__utmz=1.1272898185.3.3.utmcsr=google|utmccn=%28organic%29|utmcmd=organic|utmctr=spring%203.0&amp;__utmv=-&amp;__utmk=4250035" target="_blank">spring 3.0 ile gelen özellikleri</a> kullanabileceğiz. Netbeans 6.9, <a href="http://www.netbeans.com/community/releases/roadmap.html" target="_blank">9 haziranda release</a> olacak.</p>
<p>Google App Engine için geliştirilmiş plugin de mevcuttur.</p>
<p><span id="more-88"></span><strong>JavaFX</strong></p>
<p>Bildiğiniz gibi Sun &amp; Oracle , linux platformunda javafx desteğini sunmuşlardı. Netbeans ise javafx geliştirmek için en uygun ücretsiz IDE olarak yoluna devam ediyor.</p>
<p><strong>Scala ve Git Desteği</strong></p>
<p>Ayrıca Netbeans <a href="http://wiki.netbeans.org/Scala" target="_blank">Scala</a> ve  <a href="http://nbgit.googlecode.com/" target="_blank">git</a> desteği bulunmaktadır.</p>
<p><a href="http://rayyildiztr.files.wordpress.com/2010/05/scalaeditor_080729_scala.png" rel="lightbox[88]"><a href="http://rayyildiz.com/wp-content/uploads/2010/05/scalaeditor_080729_scala.png" rel="lightbox[88]"><img class="alignnone size-medium wp-image-171" title="scalaeditor_080729_scala" src="http://rayyildiz.com/wp-content/uploads/2010/05/scalaeditor_080729_scala-300x186.png" alt="" width="300" height="186" /></a></a></p>
<p><a href="http://rayyildiz.com/2010/05/early-prototype-small.png" rel="lightbox[88]"><img class="alignnone size-full wp-image-98" title="early-prototype-small" src="http://rayyildiztemp.files.wordpress.com/2010/05/early-prototype-small.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/netbeans-6-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VPS Sunucu olarak Linux, Windows?</title>
		<link>http://rayyildiz.com/2010/05/vps-sunucu-olarak-linux-windows/</link>
		<comments>http://rayyildiz.com/2010/05/vps-sunucu-olarak-linux-windows/#comments</comments>
		<pubDate>Sun, 02 May 2010 15:48:20 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Diğer]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows 2003]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=80</guid>
		<description><![CDATA[2 yıldan fazla bir sürede, kendi blogumu barındırmak ve değişik testler yapabilmek amacıyla linux tabanlı VPS hizmetinden yararlanmıştım. Linode üzerinden aldığım bu hizmeti 2 yıl boyunca neredeyse hiç sorun yaşamadan kullandım. Bu sürenin parelelinde ise gerek windows host, gerekse windows VPS de kullanmak durumunda kaldım. Ama söyleyebilirim ki, linux sunucu tarafında büyük işler başarıyordu. Ayarları [...]]]></description>
			<content:encoded><![CDATA[<p>2 yıldan fazla bir sürede, kendi blogumu barındırmak ve değişik testler yapabilmek amacıyla linux tabanlı VPS hizmetinden yararlanmıştım. Linode üzerinden aldığım bu hizmeti 2 yıl boyunca neredeyse hiç sorun yaşamadan kullandım. Bu sürenin parelelinde ise gerek windows host, gerekse windows VPS de kullanmak durumunda kaldım. Ama söyleyebilirim ki, linux sunucu tarafında büyük işler başarıyordu. Ayarları windows a göre daha karışık olsa bile, arada cok büyük performans farkları göze carpıyordu.</p>
<p><span id="more-80"></span>Aşağıda linux ve windows VPS ların özellikleri mevcut:</p>
<p><span style="text-decoration:underline;"><strong>Linux VPS</strong></span></p>
<p>Hizmet Sağlayıcı: <strong>Linode</strong></p>
<p>İşletim Sistemi:<strong>Ubuntu 9.04</strong></p>
<p>RAM:<strong> 360 MB</strong></p>
<p>Host edilen domain sayısı: <strong>12</strong></p>
<p>Veritabanı: <strong>Mysql, Postgresql , MongoDB</strong></p>
<p>Diğer hizmetler: <strong>Svn, E-mail server (postfix), bind</strong></p>
<p>Aylık ücreti: <strong>$ 19.95</strong></p>
<p><span style="text-decoration:underline;"><strong>Windows VPS</strong></span></p>
<p>Hizmet Sağlayıcı: <strong>GoDaddy</strong></p>
<p>İşletim Sistemi:<strong>Windows 2003</strong> <strong>Enterprise</strong></p>
<p>RAM:<strong> 512  MB</strong></p>
<p>Host edilen domain  sayısı: <strong>1</strong></p>
<p>Veritabanı: <strong>MsSQL 2005 Express</strong></p>
<p>Diğer hizmetler: <strong>IIS 6</strong></p>
<p>Aylık ücreti: <strong>$ 29.99</strong></p>
<p>Arada o kadar bariz farklar vardı ki, windows VPS i birinci ay dolmadan iptal ettirdim. Linux VPS ise 2 yılı gecti, bu süre içinde sunucuyu Dallas&#8217;dan Londra&#8217;ya taşımak gibi, reboot , yeni ubuntu sürümü deploy gibi işlemleri cok kolay yapabildim. Linux sunucuyu ise bugunlerde kapatmayı düşünüyorum; ama bunun nedeni artık bir VPS e ihtiyacım kalmayışı <img src='http://rayyildiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/vps-sunucu-olarak-linux-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ayrılık ve Buluşma</title>
		<link>http://rayyildiz.com/2010/04/ayrilik-ve-bulusma/</link>
		<comments>http://rayyildiz.com/2010/04/ayrilik-ve-bulusma/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 20:04:34 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Diğer]]></category>
		<category><![CDATA[ayrılık]]></category>
		<category><![CDATA[buluşma]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=76</guid>
		<description><![CDATA[12 Ağustos 2009 tarihinde vatan-i görevimi yapmak üzere, ayrılmak zorunda kaldığım birçok şey artık geride kaldı. 18 Ocak 2010 tarihi ile bu ayrılık son bulmuş oldu. Artık yeni heyecanlara, yeni yaşamlara yelken açmanın zamanı da gelmiş oldu. Bi rçoğunun aksine, askerliğin faydalı olduğu inancındayım. Evet alışkın olduğumuz kurallara, mantıklara çok ters bir düzen var orada; [...]]]></description>
			<content:encoded><![CDATA[<p>12 Ağustos 2009 tarihinde vatan-i görevimi yapmak üzere, ayrılmak zorunda kaldığım birçok şey artık geride kaldı. 18 Ocak 2010 tarihi ile bu ayrılık son bulmuş oldu. Artık yeni heyecanlara, yeni yaşamlara yelken açmanın zamanı da gelmiş oldu.<br />
Bi rçoğunun aksine, askerliğin faydalı olduğu inancındayım. Evet alışkın olduğumuz kurallara, mantıklara çok ters bir düzen var orada; ancak askerlik kendi içinde tutarlı bir mantık ve düzen içermektedir. Ben de herkes gibi askerlik boyunca her an “bu çok saçma, bu yanlış” dedim durdum. Ancak bittikten sonra anlıyorsun faydasını.<br />
Hayatta bazı şeylerin kıymetini bilemeyiz. En son çıkan telefonun peşinde koşarken, en ilkelin bile asıl görevi olan konuşma özelliğinin ne kadar kıymetli olduğuna anlayamayız. Hayatımızını kıymetini bilmez, gece çok gec saatlerde yatar ve sabah da günün en verimli zamanlarını uyuyarak geçiririz. Sürekli İstanbul trafiğini şikayet eder, çok kalabalık olduğunu söyleriz. İşte askerlik görevi boyunca bunların kıymetini anlarsınız. Telefon “çok önemli bir iletişim aletidir” dersiniz. Aslında İstanbul o kadar da kalabalık değilmiş dersiniz. Ve bunun gibi sayabileceğim birçok şeyin kıymetini anlarsınız. Her askerlik görevini tamamlayan kişi, ne demek istediğimi anlayacaktır.<br />
Bunları yazdığımda kimse askerlik göreviminin kötü geçtiğini düşünmesin. Ben çok iyi bir yerde görevimi yaptım. Hiç küfür etmeyen komutanların tanında bulundum. Neredeyse “Ramazan bey şu yazıyı yazabilir misiniz?” gibi bir yerde görev yaptım. Gerçekten askerlik görevinin kutsal saymış kişilerle tanıştım. Sıkıntılarım da oldu ama çok az.<br />
Bu zaman ayrılığında en çok ayrılığın ne demek olduğunu anladım. Ben 16-17 senedir, gerek eğitim gerekse iş amacıyla ailemden ayrı bir şehirde yaşıyorum ama bu farklı bir durum oldu benim için.<br />
<strong>Sonucta bitti ayrılıklar ve başladı beraberlikler.</strong><br />
Uzun bir dönemin ardından böyle bir yazı ile başlamak istedim, hoşçakal dediklerime merhabalar olsun demek istedim.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/04/ayrilik-ve-bulusma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Computing Yapmak İstiyorum:Stax.net</title>
		<link>http://rayyildiz.com/2009/04/cloud-computing-yapmak-istiyorum-stax-net/</link>
		<comments>http://rayyildiz.com/2009/04/cloud-computing-yapmak-istiyorum-stax-net/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 19:19:06 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[stax]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=65</guid>
		<description><![CDATA[Cloud Computing yabancı olanlar için ne olduğu hakkında bilgi vermekle başlayayım. Cloud computing ( kümesel işlemler diye Türkçe&#8217;de kullanılıyor)  hesap duyulan birçok işlemin uzaktaki bir veya birden fazla bilgisayar üzerinde yapılabilmesine olanak sunan bir mimari.  Bu konuda başta google ile duymaya başladığımız bu mimari, amazon ws ile cok daha gün yüzüen cıktı. Özellikle Amazon Web [...]]]></description>
			<content:encoded><![CDATA[<p>Cloud Computing yabancı olanlar için ne olduğu hakkında bilgi vermekle başlayayım. <a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank">Cloud computing</a> ( kümesel işlemler diye Türkçe&#8217;de kullanılıyor)  hesap duyulan birçok işlemin uzaktaki bir veya birden fazla bilgisayar üzerinde yapılabilmesine olanak sunan bir mimari.  Bu konuda başta google ile duymaya başladığımız bu mimari,<a href="http://aws.amazon.com/" target="_blank"> amazon ws</a> ile cok daha gün yüzüen cıktı. Özellikle Amazon Web Servisleri bu konuda cok yol katetti. Gectiğimiz günlerde, <a href="http://www.twitter.com" target="_blank">twitter</a>&#8216;ın Amazon WS gecmesi ve hemen arkasından <a href="http://code.google.com/intl/tr-TR/appengine/" target="_blank">google app engine</a>&#8216;in java desteği sunması, cloud computing kavramını bir anda öne cıkardı.</p>
<p>Özellikle google app engine java desteği, cok önemli bir gelişme oldu. Daha öncesinde sadece <a href="http://www.python.org" target="_blank">python</a> desteği sunan google engine, daha geniş kitleye hitap eden java desteği ile <a href="http://googleappengine.blogspot.com/2009/04/early-look-at-java-language-support.html" target="_blank">ciddi bir talep</a> almış görünüyor.<span id="more-65"></span></p>
<p>Benimde bu konuda araştırma yaparken karşılaştığım bir servis var: <a href="http://www.stax.net" target="_blank">stax.net</a>. Şu anda beta döneminde ücretsiz sunulan servis sayesinde cloud computing yapabilmeniz mümkün. Amazon WS üzerine kurulmuş bu servis ile struts, wicket, jython, jruby, cold fusion başta olmak üzere kabaca java uygulamanızı yayınlayabiliyorsunuz. Hatta ben bu uygulama üzerinde seam çalıştırdım. Yani kabaca Apache Tomcat üzerinde çalıştırabildiğiniz tüm java uygulamalarını yayınlayabiliyorsunuz.</p>
<p>Sitesine girerek üye olduğunuzda size onay maili gelecektir(üyelik onayı birkaç gün sürebiliyor) . Daha sonra siteye giriş yaparak, yeni bir uygulama acabilirsiniz.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2010/05/febc8fbacad75e55ee3949a9128b7357.png" rel="lightbox[65]"><img class="alignleft size-medium wp-image-66" title="febc8fbacad75e55ee3949a9128b7357" src="http://rayyildiz.com/wp-content/uploads/2010/05/febc8fbacad75e55ee3949a9128b7357.png?w=300" alt="febc8fbacad75e55ee3949a9128b7357" width="300" height="216" /></a></p>
<p>Yeni bir uygulama actıktan sonra, bunu uygulamanızı kendi bilgisayarınıza indirmeniz ve geliştirmenizi devam etmelisiniz. Size uygun bir template seçerek ilk uygulamanızı acabilirsiniz.</p>
<p>Daha sonrasında <a href="http://wiki.stax.net/w/index.php/SDK" target="_blank">stax sdk</a> indirmeniz gerekiyor. <a href="http://stax-downloads.s3.amazonaws.com/sdk/stax-sdk-0.2.17-dist.zip" target="_blank">Bu adresten stax sdk </a>indirebilirsiniz.</p>
<p>Stax sdk indirdikten sonra windows ortamında iseniz kurulum dizin altındaki stax console kullanarak, linux ortamında iseniz  gerekli path ayarladıktan sonra konsole üzerinden komutları kullanabilirsiniz.</p>
<p>Benim size tavsiyem command promt üzerinden <strong>stax help</strong> komutu ile başlamanız.</p>
<p>Uygulamanız seçili iken, configuration tab kullanarak uygulamanızın nasıl çalışacağını ayarlayabilirsiniz. <a href="http://rayyildiztemp.files.wordpress.com/2009/04/3a30e757a34289ee23d8149f2311f991.png" rel="lightbox[65]"><img class="alignleft size-medium wp-image-67" title="3a30e757a34289ee23d8149f2311f991" src="http://rayyildiztemp.files.wordpress.com/2009/04/3a30e757a34289ee23d8149f2311f991.png?w=300" alt="3a30e757a34289ee23d8149f2311f991" width="300" height="170" /></a></p>
<p>Yanda da görebileceğiniz gibi şu anda stax 5&#8242;e kadar shared cluster imkanı veriyor. Beta sürecinden sonra ise ücretleri değişir bir şekilde dedicated server imkanı vereceklerini söylüyorlar.  Aynı zamanda herhangi bir bug bulmanız durumunda sizinle oldukça ilgileniyor ve bug ı kapatmaya çalışıyorlar.</p>
<p>Güzel özelliklerden bir diğeri ise, uygulamanızı app.username.staxapps.net gibi erişebilecekken, gerekli ayarlamaları yaparak bir domain olarak da erişebilmenize olanak sunması. Gerekli ayarları configuration tab altında bulabilmeniz mümkün.</p>
<p>Stax.net in güzel bir özelliği ise mysql veritabanı sunması.</p>
<p>Beta sürecinde bile olsa, verdikleri hizmetler acısından ve de ücretsiz olarak java uygulamanızı yayınlayabileceğiniz yer sunmaları acısından başarılı buldum. Bu konuda bir pazarın eksik olduğu kesin.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2009/04/cloud-computing-yapmak-istiyorum-stax-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.335 seconds -->
