15 Nisan 2005
1 Nisan 2005
Gmail'e Övgü
Geçen sene (2004) Nisan başında Google ilginç bir deneme başlatmıştı: Her kullanıcıya bin megabyte veren yeni bir mail hizmeti. Üstelik kendi mektuplarınızda Google teknolojisine kelime aratma yeteneği ile. Haberin olağan dışı oluşu ve yayın tarihi, bunun Nisan Bir şakası sanılmasına yol açtı! Tek sorun, hizmet deneme safhasında olduğu için yeni kullanıcılar ancak eskilerin daveti ile kaydediliyordu. Yaz sonunda Tuncay bundan bahsedinceye kadar benim haberim olmamıştı. Daha önce Marmara adresimde yığılan istenmeyen mail'den bıkmış ve çare arıyordum. Gmail tam zamanında geldi. Unicode kullanması, mektupları konuya göre gruplaması, adres hatırlatması, kolay filtreleri, spam tanıması önemli üstünlükler. Ama en önemlisi, Google arama gücünün benim posta kutusuna gelmesi oldu. Her kelime indekslendiği için, kelime bazında arama çok hızlı. Gerçekten tam zamanı imiş. Bir ay sonra Fakültemizin mail server olarak kullandigi alet bozulunca, benim bir aylik e-mail o adreste kayboldu. Normal olarak server'da mail birakilmiyacagini elbette biliyorum, ama ofisteki PC de 3 hafta bozuk oldugu için bir süre orada tutmustum. Benim PC tamirden geldigi gün server gitti. Bundan alacagimiz ders: iki sistem ayni anda çökebilir, garantisi yok. Son haber olarak, Gmail javascript olmayan, hatta yalnız düz metin tanıyan tarayıcılarda bile çalışır hale geldi. Lynx ile denemedim, ama çalışacağına inanıyorum. On bir ay oldu, ne zaman beta olmaktan kurtulacak acaba? What's new on Gmail? Gmail kullanmak için dört güçlü neden:
- Google teknolojisi ile kelime aratma (çok hızlı)
- Unicode kullanarak bir mektupta birden fazla dil/yazı sistemi
- Mektupları konulara göre gruplaması (conversation)
- Kolay filtre yapma ve spam tanıma özellikleri

19 Ocak 2005
Hac Bugün Başlıyor
Hacı adayları bugün Arafat düzlüğünde toplanıyor. Neredeyse üç milyon kişinin kavgasız gürültüsüz bir araya geldiği bir toplantı. Bu geceyi Müzdelife'de geçirecek ve bayram günü Mina'ya giderek hacı olacaklar.
Ayrıntılar: Hac Arafat'ta Başlar
Kuzenim Halid'in çektiği harika bir resim:
Kabe
8 Aralık 2004
İsimler Değişmesin
İsim bir insanın en önemli kimliği iken neden değiştirilir? Okuldaki arkadaşımız "Fatma Kaya" nasıl birden "Aysel Uysal" oluverir? Yıllarca kendini alıştırdığı ismini bırakıp da eşinin adını taşımak neden?
Burada iki temel varsayım var, toplum olarak şartlanmışız, başka türlü olamıyacağını düşünerek:
* Bir ailede herkes aynı soyadını taşımalı
* Nüfus kayıtlarında aile fertleri bir arada olmalı
Bunların ikisi de gereksiz, çağdışı, kadınlar için ek yük getiren varsayımlar. Bu kuralları şöyle basitleştirsek ne kaybederiz?
* Her kişi babasının soyadını taşır
* Her kişi babasının nüfus kütüğündeki kayıtlara eklenir
Böylece, evlenme ve boşanmalarla insanların isimleri ve nüfus kütükleri değişmiyecek. Kimlik krizinden ve gereksiz bir işlemden kurtulacağız.
Peki, "Fatma Kaya" nasıl "Aysel Uysal" oldu?
Vukuatlı nüfus kaydından takip edelim:
* Doğum: Fatma Aysel Kaya
* Evlenme: Fatma Aysel Çalışkan, kayıt Ordu'ya nakledildi
* Boşanma: Fatma Aysel Kaya
* Evlenme: Fatma Aysel Uysal, kayıt Kars'a nakledildi
Kızcağızın adı hep Aysel idi, aslında. Ama okulda öğretmenler hep ilk ismi kullandığından, herkes ona Fatma derdi. Böylece Fatma onun esas kimliği olmuştu. İlköğretimdeki bu küçük kimlik krizinin üstüne, üç kere daha adı değişmiş ve üç kere nüfus kayıtları taşınmıştı.
Kimse kalkıp "Medeni Kanun iki ismi de taşımaya izin veriyor" demesin. Pratikte bunu uygulamaya imkan olmadığı görüldü. Kadınlar hâlâ evlenmenin "erkeğin ailesine verilmek" olduğu, boşanmanın normal kabul edilmediği bir geleneğin bıraktığı yükü taşıyorlar. Nüfus kayıtlarında “isimler ancak mahkeme kararı ile değişir, evlenme ve boşanma ile değişmez” anlayışı kabul edilmeden bu yükten kurtulamayız.
4 Aralık 2004
Neden Java?
Java'ya geçeli tam üç sene oluyor. Bu yazıya o zaman başlamıştım, ancak tamamladım.
Otuz dört senedir program yazıyorum. Bu süre içinde 50 kadar işletim sistemi ve bir o kadar programlama dili kullandım. Çeşitli düzeylerde programlama eğitimi verdim. Doktora çalışmam da dahil, ilk on iki sene sadece Fortran ile yazdım. Sonra Pascal’a geçip yirmi sene boyunca çeşitli Pascal derleyicilerinde ustalaştım. Elbette bu arada Cobol’dan APL’e, Prolog’dan SQL’e kadar bir çok dili öğrendim, ama yaptığım işlerde sadece Fortran ve Pascal ön planda kalmıştı. 2001 yılının son günlerinde Java öğrenmeye başladım. İlk izlenimlerim o kadar iyi oldu ki, hemen köklü bir karar vererek diğer derleyicileri sildim ve sadece Java kullanmaya başladım.
Bu yazıda, Java kullanımında karşılaştığım sürprizleri anlatmak istiyorum. Programlama bilenlerin ilgisini çekmek için araya bazı kod örnekleri serpiştirdim. Programcılıkla ilgilenmeyen okuyucum, bu örnekleri okumadan geçebilir.
İlk sürprizi String sınıfında yaşadım: Java karakter dizileri 32 bit ile modellendiğinden 4Gbyte ile sınırlı. Bu pratik olarak sınırsız demek. Pascal ile programlama öğretirken 255 byte limitini hatırladım. Metin dosyalarını okuturken her satırın bir diziye sığacağını bile garanti edemiyorduk. Dosyada uzun satırlar varsa karakterleri tek tek okumak gerekiyordu. Daha sonra C'de 16 bitlik karakter dizilerine izin verilince bu sınır 64K'ya çıkmıştı. Artık Java programlama öğretirken farklı bir yöntem kullanıyoruz: Bütün dosyayı bir byte dizisine okuyup işlemleri ana bellekte yapıyoruz.
InputStream in = new FileInputStream(f);
byte[] b = new byte[in.available()];
in.read(b); //read the whole file into b
String s = new String(b); //convert b to s
Java’ya geçme kararını verdiğim günlerde “Text Processing” dersini veriyor ve dosya sıkıştırma (file compression) yöntemlerini öğretiyordum. Bu arada Java’da zip dosyalarını okuyup yazan bir format olduğunu farkettim. Çok basit bir iki komutla WinZip ayarında ve hızında sıkıştırma yapabiliyorduk.
Resim dosyalarını açmak için özel bir gayret gerekmiyor. Java’nın tanıdığı resim formatları içinde jpeg, gif ve png bulunuyor. Bütün yapmamız gereken dosyanın adını verip bir JLabel içine atmak. Dosyayı açıp resmi göstermek Java Virtual Machine (JVM) denilen sistemin sorumluluğu. Açılan resmin boyu sadece bellek ile sınırlı.
Icon i = new ImageIcon(f.toURL());
JLabel x = new JLabel(i);
Otomatik çöp toplama (garbage collection) çok ilginç bir özellik. Pascal’da en büyük sorun bellekten dinamik olarak kazandığımız yerlerin geri kazanılması idi. Bunu programcı her dinamik değişken için elle yapmak zorunda idi. Bu hem programları uzatıyor hem de en küçük bir programcı hatası bellek sızıntılarına (memory leak) yol açıyordu. Şimdi programcılar bu işi JVM’ye devrettiler. Sadece “new” demesini biliyoruz, “dispose” işlemi tarihe karıştı. Kullanılmayan bellek sihirli bir şekilde geri kazanılıyor. Böyle bir çöp kutusu evlerde de çok yararlı olurdu: Siz çöpe atın kendi kendine boşalsın!
İlk Java programlarımı yazarken bir soru hep aklıma takılıyordu: “Bu programları nasıl exe dosyasına çevireceğim?” Altı ay bu sorunun cevabını bulamadım. Daha sonra jar formatını öğrenince sorunun yanlış olduğunu farkettim. Java programları exe olarak değil jar olarak dağıtılıyor. Jar dosyaları aslında zip dosyalarına eşdeğer. Aynı format kullanılıyor. Yani WinZip gibi yaygın programlar ile açılabiliyor. Bir programda geliştirilen bütün sınıflar ve ilgili diğer dosyalar bir jar dosyasında toplanıyor. Hem dosyalar “paketlenmiş” oluyor, hem de “java -jar” komutu ile bir exe programı gibi çalıştırmak mümkün. Java kurulumu doğru yapıldıysa, jar dosyalarını tek tıklama ile açabiliyoruz.
GUI uygulamalarında Java çok yetenekli. Swing library içindeki yüzlerce sınıf ile hemen her türlü ekran tasarımı mümkün. Önce JList sınıfı ile ekranda binlerce satırlık listeleri çok hızlı olarak gösterip seçim yaptırmayı öğrendim. Satır sayısı hızı hiç etkilemiyordu. Daha önceki programlama tecrübemde bir kaç yüz satırdan sonra ekrana yazmanın ne kadar yavaşladığını hatırladım. Sonra JTree sınıfı ile hiyerarşik listeler yapmayı öğrendim. Windows Gezgininde olduğu gibi disk yapısını böyle bir ağaç içinde gösterip klasörleri açıp kapamak çok zor değil. Gene binlerce satır açınca ekranda yavaşlama ya da titreme gözlenmiyor.
Kendi programlarımı ve çalıştığım bölümün eğitim dilini Java'ya taşımak güzel sonuçlar getiriyor.
__MAE
24 Kasım 2004
Firefox'a övgü
Internet Explorer yerine Firefox kullanmak için dört güçlü neden:
- Emniyet: kötü niyetli (ActiveX ve benzeri) sayfaları engelliyor
- Tab: yeni sayfaları aynı penceredeki tab bölmelerinde açıyor
- Sayfada arama: tuşlara bastıkça metindeki yerini buluyor
- Web'de arama: Google, Wiki, A9 gibi sitelere hızlı erişim

Firefox Ekranında Gmail Hesabı
Gmail'e Firefox ile girince bu örnek ekran görünüyor. Resim üzerinde shift ile tıklarsanız resim ayrı bir pencerede açılır, aşağıdakileri okurken işe yarıyabilir.
Menü çubuğunda pek bir fark yok. Ama menünün altındaki iki çubuk (toolbar) epey farklı. Birincide adresin yanında webde-ara kutusu var. Ctrl-K ile kutuya gidip Google, Wiki, Yahoo gibi sitelere arama mesajı gönderebilirsiniz. Resimde A9 görünüyor. İkincisi daha ilginç: IE'de Links (Bağlantılarım) adıyla bilinen bu çubuğa en çok gittiğiniz yerleri tek tek ya da klasör içinde koyabilirsiniz. Bu çubuk benim en sık kullandığım menü oldu.
Çubukların altında Tablar var, o anda açık sayfaları gösteriyor. Ctrl-1, Ctrl-2, vb ile bunlar arasında geçiş yapılıyor. Resimde aktif olan sayfa Gmail, 12 Kasım'da yolladığım bayram tebriğine gelen ilk10 cevabı gösteriyor. (Gmail ayrı bir konu olacak!)
Bağlantıları gösteren ikinci çubuktaki radar işaretleri de "Live Bookmarks" denen başka bir üstünlük. İlgili sitelerde yeni bir sayfa eklendiğinde, bu menüler değişikliği hemen gösteriyor.
Hiç mi eksikliği yok? Olmaz mı...
* Türkçe sürümü yok, ama her dilden sayfaları gösteriyor
* Google Desktop ile (henüz) uyumlu değil
* Microsoft desteği yok :-)