Son 2 aydır yüksek lisans derslerine ek olarak,  2 ay önce başlayan ve benim de bir parçası olduğum TÜBİTAK tarafından desteklenen yüz tanıma konulu bir proje üzerinde yoğun olarak çalıştığım için burayla yine fazla ilgilenemedim. Projenin ilk aşaması olan resimlerdeki yüzlerin yerinin tespit edilmesi üzerine yaptığımız çalışmalardan esinlenerek Android'deki yüz bulma sınıfına bir göz atayım dedim ve basit bir uygulama yazdım. Bu yazımda da Android SDK ile birlikte gelen yüz bulma sınıfının bir resim üzerinde nasıl kullanılacağını aşağıdaki resimde çıktısını gördüğünüz bu uygulama üzerinde göstereceğim.smiley (Test resmini TÜBİTAK projesinde de kullandığım Caltech face database adlı yüz veritabanından aldım.)

Android ile yüz yanıma uygulamasının çıktısı

Android kullanan cep telefonlarına arayüz tasarlama işini sıfırdan başlayıp XML dosyası hazırlayarak yapmak istemeyenler için basit bir arayüz editörü mevcut. DroidDraw adındaki bu editör Brendan Burns adında (Bu programı yazdıktan sonra Google tarafından işe alınmış) bir şahıs tarafından yazılmış ve bedava dağıtılıyor. Beta aşamasında olduğu için kendisinden çok fazla bir şey beklememek gerekiyor ancak arayüz tasarımı sırasında kullanılan özelliklerin hangilerinin ne işe yaradığını öğrenmek açısından yararlı olabilir çünkü diğer her grafik arayüz editöründe olduğu gibi burada da yaptığınız her değişikliğin sonucunu anında görüyorsunuz.

DroidDraw Logo

Bu yazı, Google'ın Android platformu üzerinde çalışacak uygulamalar için XML tabanlı arayüz tasarımı ile ilgili yazacağım yazılardan ilki. Bu yazılarımda arayüz tasarımı sırasında kullanmak zorunda olduğumuz container elemanlarından bahsedeceğim. Bu elemanların kullanımını iyi öğrenmek çok önemli çünkü bu elemanlar olmadan arayüzdeki bileşenlerin istediğimiz şekilde dizilmesini sağlamak mümkün değil. En basitinden ekrana her satırda 2 tane olmak üzere toplamda 4 tane tuş koyup bunların simetrik bir şekilde dizilmelerini istiyorsak bu container elemanlarından kullanmak zorundayız. Bundan daha ileri bir örnek olarak web sayfalarında oldukça sık karşılaşılan türden, sol tarafta etiketlerin, sağ tarafta da ilgili yazı kutularının olduğu bir form tasarlamak istiyorsak yine bu container elemanlarından birini (hatta duruma göre iç içe daha fazlasını) kullanmak zorundayız. Bu açıdan bakıldığında container elemanlarının HTML kodu yazarken kullandığımız table ve div tag'lerine benzer amaçla kullanılan şeyler olduklarını söyleyebiliriz.

İlk yazımda bahsedeceğim container, içerisindeki bileşenlerin web tarayıcılarında olduğu gibi box model'e göre yerleşmesini sağlayan ve bu sebeple de en çok kullanılan container olan LinearLayout.

Bu yazımda Eclipse kullanarak çok basit bir Android uygulaması yazılması ve uygulamanın Android SDK ile birlikte gelen emülatör üzerinde çalıştırılması için yapılması gereken şeylerden bahsedeceğim. Göstereceğim örnek programın yapacağı tek şey ekranda bir tuş gösterip, tuşa basıldığında kullanıcıya bir mesaj göstermek.

Programın kendi bir pek işe yarar bir şey yapmıyor belki ancak bu yazının amacı için fazlasıyla yeterli. Bu yazıyı okuduktan sonra aşağıdaki soruların cevaplarını almış olacaksınız.

  • Eclipse ile bir Android projesi nasıl oluşturulur?
  • Bir Android projesi hangi klasör ve dosyaları içerir ve bunların görevleri nedir?
  • XML kullanılarak basit bir arayüz nasıl tanımlanır?
  • Tuşa basmak gibi basit olaylar nasıl karşılanır?
  • Kullanıcıya bir mesaj en kolay nasıl gösterilir?
  • Sanal bir cihaz nasıl oluşturulur ve yazılan program bu cihaz üzerinde nasıl çalıştırılır (emülatör nasıl kullanılır)?

Tabi ki bu cevaplar sadece başlangıç için yeterli olacak ancak sonraki günlerde bu konuların her birine ayrı ayrı değinmeyi planlıyorum.

Bu yazımda Google'ın çiçeği burnunda mobil işletim sistemi olan Android üzerine yazılım geliştirmeye başlamak için ihtiyacınız olan bileşenler ve bunların kurulumu hakkında bilgi vereceğim. Burada anlatacaklarımı yaptıktan sonra Android platformu için kod yazıp, yazdığınız kodu Android SDK ile birlikte gelen emülatör veya gerçek bir cihaz üzerinde çalıştırabilecek hale geleceksiniz.

Android SDK Logosu

Kurulumundan bahsedeceğim şeyleri saymam gerekirse:

  • JDK
  • Eclipse ve ADT
  • Android SDK

Evet Google sonunda bu işe de el attığını, uzun süredir üzerinde çalıştığı programlama dili olan Google Go'nun çalışan bir sürümünü kullanıcılarla paylaşarak resmi olarak duyurmuş oldu.

Google bu dil ile yazılmış programların daha hızlı derlendiğini, daha hızlı çalıştığını, daha güvenli olduğunu iddia ediyor. Python gibi dinamik bir programlama dili ile çalışmanın hızı ile, C++ gibi bir dilin performans ve güvenilirliğini birleştiriyormuş (Vay be iddiaya bak!). Go'nun göze çarpan diğer özellikleri ise şöyle:

  • Açık kaynaklı olması.
  • Garbage collection'a sahip olması. Yani kullanılan bellek alanlarını geri verme derdi yok (Java ve C#'ta olduğu gibi).
  • Çok işlemcili sistemlere yönelik yazılım geliştirmeyi kolaylaştıracak yapılara sahip olması.
  • C++ kadar yüksek performansa sahip olması.
  • Basit olması.

Şu an için Windows üzerinde çalışan bir versiyonu olmayan ve daha emekleme aşamasında olan Google GO'nun ne kadar yaygınlaşacağını zaman gösterecek. Bu yazıda dil hakkında genel bilgi vereceğim. Detaylı bilgileri bu adresten öğrenebilirsiniz.

Önceki yazımda Ubuntu 9.10 Karmic Koala'nın VmWare üzerindeki performansının olması gerekenden daha düşük olduğunu ve bu yavaşlığı normal bir kurulum sonrasında da sürdürüp sürdürmeyeceğini merak ettiğimi söylemiştim. Bugün Ubuntu 9.10'u bilgisayarımdaki Windows XP'nin yanına kurup denedim ve performansın VWare'daki performansa kıyasla bile inanılmaz derecede kötü olduğunu gördüm.

Her tıklayışımda yapması gereken şeyi 1-2 saniye donup bekledikten sonra yerine getiriyordu. Klasörler arasında dolaşmak bile işkence halini almıştı. Terminalden "top" komutu ile çalışan proseslerin listesini açıp bu yavaşlığın sebebinin hangi proses olduğuna baktım ve Xorg prosesinin işletim sisteminde yaptığım her hareket sonrasında işlemcinin %100'e yakın kısmını kullandığını gördüm. Bu da doğal olarak beni Xorg'un kullandığım ATI Radeon X1950 ekran kartımla ilgili ciddi problemleri olduğunu düşünmeye itti.

İnernet üzeride yaptığım araştırma sonucunda sorunun çözümünün Xorg server ile ilgili ayarların bulunduğu xorg.conf dosyasında olduğunu öğrendim. Bu dosyaya gerekli satırları ekledikten sonra Ubuntu en az 9.04 sürümü kadar hızlı çalışmaya başladı. Eğer sizin de ATI Radeon ekran kartınız varsa ve benzer bir problemle karşı karşıyaysanız, bu yazıda söylediğim şeyleri yaparak sorununuzu çözebilirsiniz.

Bilgisayar kullanıcılarının tartışmasız en çok kullandığı Linux dağıtımı olan Ubuntu'nun yeni sürümü çıktı-çıkacak derken sonunda sunuculardaki yerini aldı. Bu şekilde 14 Mayıs 2009 tarihinde çıkan Alpha 1 versiyonuyla birlikte başlayan ve sonrasında çıkan 7 tane sürüm ile devam eden geliştirme serüveni sona ulaşmış oldu. Peki bu sürümde ne gibi yenilikler var?

Koala resmi

Aslına bakarsanız çok fazla yenilik var. Yani yeni bir Ubuntu sürümünün bir öncekinden bu kadar ileride olduğunu çok sık göremeyeceğimizi rahatlıkla söylebilirim. Ancak bu yazdıklarım size Ubuntu 9.10'u kurduğunuzda çok farklı bir manzara ile karşılaşacağınızı düşündürmesin. Çünkü yapılmış olan yığınla yeniliğin büyük çoğunluğu altyapıda. Bir çoğu da Ubuntu'yu geliştirenlerin bayağı uzun bir süre önceden öne sürdükleri "10 saniyede boot edilen, hızlı ve güvenli işletim sistemi" iddiasının gerçekleşmesi için atılmış adımlar. Bu yazımda gerek arayüz, gerekse de altyapıda yapılmış bir çok yenilikten en önemli olanları üzerinde duracağım.

İşletim sistemini deneme amaçlı olarak kullandığımda performansı kötüydü. Bunun sebebinin VmWare içerisinde kullanmış olmam olduğunu tahmin ediyorum. Ancak önceki versiyonlarda böyle bir yavaşlık yoktu. Umarım yakında normal bir kurulum yapıp denediğimde de benzer bir durumla karşılaşmam. Eğer karşılaşırsam burada anlattığım hiçbir özelliğin bir anlamı kalmamış oluyor çünkü.