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’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 sqlite veritabanının yer alması ise Android’e önemli bir artı sunmaktadır.
Sqlite, oldukça önemli projelerde kullanılmış (Firefox,Skype, Mcfee, iPhone,…) ve de oldukçe iyi test edilmiş 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.
Bu giriş bilgilerinden sonra örnek bir uygulama geliştirelim. Uygulamamız, ad, soyad ve telefon numarası kayıt edeceğimiz bir “customer” tablosu olsun. Linux ‘ta sqliteman gibi bir uygulama ile veritabanınızı oluştururun. Örneğimizde kullanacağımız tablonun scripti şu şekildedir:
read more…
Android için Uygulama Geliştirme
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 biraz zaman alabilir.
Bu sırada size tafsiyem UI tasarlayabileniz için droiddraw adındaki bir uygulamayı indirmenizdir. Her ne kadar da eclipse için ADT paketi yer alsa da ben droiddraw ı daha çok beğendim. Ayrıca biz örneği netbeans ile geliştireceğiz. Bu yüzden droiddraw ı indirmenizde yarar var. Ayrıca netbeans için geliştirilmiş NBAndroid eklentisini bu adresten yardım alarak veya http://kenai.com/downloads/nbandroid/updates.xml update adresiyle kurabilirsiniz. Yapmanız gereken netbeans de Tools->Plugins oradan da Settings de “Add” butonuna tıklayarak bu plugini eklemek ve Available Plugins tabında Android diye aratıp bu plugin i kurmaktır.
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.
rayyildiz@iceface:~/Downloads/developer/droiddraw-r1b14$ sh droiddraw.sh &
Droiddraw ile widgets tab ındaki Button u sürükleyip yandaki alana bırakınız. Daha sonra Button’a tıklayıp Properties tabı na tıklayınız.Burada şu bilgileri değiştirin:
id : @+id/btnSample
Width : 100px
Text : Hi
Bunları değiştirip Apply düğmensine basın. Sizde diğer özellikleri bakabilirsiniz. Burada sadece şu aklınızda olsun; Width, height, left margin değerleri gibi yerlerde mutlaka px ekleyin. Yani 100 değil 100px olmalı. 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.
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <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" > </Button> </AbsoluteLayout>
Netbeans de yeni bir proje açalım. NBAdroid 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.
İ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 “Hello World” yazacaktır.
Ş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.
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;
}
}
Daha sonra aşağıdaki kodu MainActivity.java içine yazınız.
@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();
}
Uygulamayı çalıştırdığınızda şöylşe çalışacaktır:

Uygulamanın kaynak kodunu şu adresten indirebilirsiniz.http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz
NoSQL Giriş ve MongoDB
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, veritabanında yer alan tablolara, nesne gözüyle bakılabilmiş, OOP mantığıyla üzerinde işlem yapılabilmiştir.
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’ın BigTable, Amazon’un Dynamo, Facebook’un Cassandra bu tür birer veritabanlarıdır.Bu üç veritabanı da PB 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: MongoDB.
Git-scm ve GitHub
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’ın scala ile geliştirdiği gizzard projesi github üzerinden erişmeniz mümkün.
Git-Scm
Linux Torwalds 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’ın geliştirilmesi sürecinde ihtiyac haline gelen ve gene Linux Torwalds tarafından yazılan bir araç.
Netbeans 6.9
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.
VPS Sunucu olarak Linux, Windows?
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.
Ayrılık ve Buluşma
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; 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ı.
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.
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.
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.
Sonucta bitti ayrılıklar ve başladı beraberlikler.
Uzun bir dönemin ardından böyle bir yazı ile başlamak istedim, hoşçakal dediklerime merhabalar olsun demek istedim.
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’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 Servisleri bu konuda cok yol katetti. Gectiğimiz günlerde, twitter‘ın Amazon WS gecmesi ve hemen arkasından google app engine‘in java desteği sunması, cloud computing kavramını bir anda öne cıkardı.
Özellikle google app engine java desteği, cok önemli bir gelişme oldu. Daha öncesinde sadece python desteği sunan google engine, daha geniş kitleye hitap eden java desteği ile ciddi bir talep almış görünüyor. read more…
Java Migration Tool : Migrate4j
Migrate4j , java ortamı için geliştirilmiş bir “migration” aracıdır. “Migration” bu konuda yakın olan kişilerin cok da kullandığı bir kelime olduğu için aynen bu kelimeyi kullanmak daha doğru geldi bana. Bu araç aslında veritabanını biryerden başka yere taşırken yada yeni özellikler eklerken kullanılan bir araçtır. Çoğunlukla birden fazla kişinin aynı anda üzerinde çalıştığı veritabanlarında buna benzer sorunlar yaşanabilir. Geliştiricelerden birisi yeni tablo eklerken, diğeri ise başka tablolarda sütun ekelem yada cıkarma işlemi yapmış olabilir. İşte bu gibi nedenlerden dolayı veritabanlarının senkronize olması istenir, eksik tabloların ve yeni sütunarın otomatik olarak kurulması, eğer tablo yoksa yeni tablo oluşturulması, varsa üzerinde oynanan sütunların değiştirilmesi istenir. İşte bu tarz sorunları çözmek için çeşitli “migration” araçları vardır. Bunlardan birisi Migrate4j uygulaması.
Ubuntu/Debian Java Nasıl Kurulur
Debian türevli bir sistemde sisteme java nasıl kurabiliriz?
Grafiksel arayüze sahip bir sistemde java kurmak artık cok kolay oldu. Java sitesine girerek edineceğiniz java dosyasını önergeleri takip ederek kurabilirsiniz. Yada Syneptic Paket Yöneticisi yardımıyla cok kolay kurulum gerçekleşgtirebilirsiniz.
Terminal den Kurulumu gerçekleştirme
Grafiksel arayüz ortamı olmayan bir sistemde yada grafik ortamına gerek olmadan kurulum yapmak istiyorsanız aşağıdaki adımlari takip ederek kurulumu gerçekleştirebiliriz.
Öncelikle source.list içinde gerekli repo olup olmadığına emin olalım. Bunun için terminal ekranından aşağıdaki komutu kullanarak ilgili repoları ekleyelim.
sudo nano /etc/apt/sources.list
Daha sonra eğer yoksa aşağıdaki repo ları ekleyelim.
deb http://us.archive.ubuntu.com/ubuntu feisty main restricted deb http://us.archive.ubuntu.com/ubuntu feisty universe multiverse
Daha sonra Ctrl +X ile nano editörünü kapatalım. Tabiki kayıt edip etmeyeceğimizi soracaktır. ‘Y’ yaparak bu dosyayı yazalım. Bu aşamadan sonra paketleri güncellememiz gerekiyor. Bunun için yapmamız gereken şu:
sudo apt-get update
Bu işlem repoları bakarak paketleri güncelleyecektir. Daha sonra sun java 6 sürümünü indirip kurulumunu yapalım. Bunun yapmanız gereken aşağıdaki komutu çalıştırmak.
sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-jdk
Bu sayede gerekli süürmler indirilerek kurulum yapılacaktır. Bu kurulum sırasında size encoding ile ilgili ayar cıkacaktır. Dileğiniz doğrultusunda kurulacak encoding paketlerini seçebilirsiniz.
Bu işlemler sonunda
java -version
yaparak kurulumu test edebilirsiniz. Eğer Sun Java Version 6 ya dair bir mesaj gelmezse yapmanız gereken
update-java-alternatives -l
Bu komutsistemde birden fazla jvm varsa listeleyecektir. Bunlardan birisini aktif edebilmek için aşağıdaki komutu çalıştırmanız yeterli.
sudo update-java-alternatives -s java-1.6.0-sun
Eğer herhangi bir hata gelmediyse java -version diyerek kurulumu test edebilirsiniz. Bu sayede sun java sistemimize kurmuş olduk.
Kolay gelsin

