12 Mayıs 2009

Chrome Turkce imla denetimi


Google Chrome tarayicisi icin Turkce imla denetimi konusunda Google muhendislerinden Mehmet Akin ve Hironori Bono ile kucuk bir calisma yapmistik (Issue 4782). Imla denetim mekanizmasi olarak Zemberek degil, Zemberek kullanilarak urettigimiz tr-spell projesinden ortaya cikan Hunspell formatindaki bir sozluk kullanildi. Turkce imla denetimi destegi henuz su anki kararli surumlerde yer almiyor. Ama beta kanalini aktiflestirdiginizde gelen guncellemeler ile (2.0.166 sonrasi surumler) Turkce imla denetimi destegi calisir hale geliyor.

02 Mayıs 2009

Jcaki


Evde arta kalan zamanlarimin bir kisminda kucuk bir yazilim kutuphanesi gelistiriyorum. Son zamanlarda Mehmet de biraz kodda duzeltmeler yapiyor. Kutuphane aslinda ufak ve basit bir sey. Buna ragmen hemen her projede benim icin vaz gecilmez bir hal aldi diyebilirim. Java dilinde yazilim gelistirirken bazi konularda isleri yapmak icin uzunca kod parcalari yazmaniz gerekebilir. Mesela bir metin dosyasinin satirlarini okumak, ya da elinizdeki bir String'i bir dosyaya kaydetmek, muhtelif dosya ve String islemleri gibi. Jcaki projesi ile bu islemler cok daha kolay bir hale geliyor (caki -> çakı). Ornegin bir metin dosyasini okumak icin SimpleTextReader sinifini kullanip sunu yapmaniz yeterli:

List<String> list = new SimpleTextReader("foo.txt").asStringList();
Eger dosya cok buyuk ise satir satir islem yapmak icin IterableReader mekanizmasi kullanilabilir mesela;
for(String s: new SimpleTextReader("foo.txt").getIterableReader())
out.println(s);
Daha karmasik bir ornek olarak, bir metin dosyasindan sadece INFO ve DEBUG kelimelerini iceren satirlari bas ve sondaki bosluklari kirparak okumak isterseniz, su sekilde bir kod ile uretilen SimpleTextReader isinizi gorecektir.
SimpleFileReader
.Builder("foo.text")
.encoding("utf-8")
.trim()
.ignoreWhiteSpaceLines()
.allowMatchingRegexp("INFO|WARNING")
.build();
Benzeri sekilde yazma siniflari da mevcut.
new SimpleTextWriter("foo.txt").writeLines("Hello","World");
dikkat edilirse bu durumda Writer nesnesini kapatmaniza gerek kalmiyor, cunku sistem verileri yazar yazmaz acilan OutputStream'i kapatiyor. ama istenirse acik kalmasi da saglanabilir. Ornegin:
SimpleTextWriter.keepOpenWriter("foo.txt","utf-8").writeLines("Hello","World");
Pek cok String islemleri de Strings sinifi uzerinden yapilabiliyor. Wiki sayfasindan cesitli kullanim sekillerini gorebilir, javadoc ile siniflari ve metotlari inceleyebilir, 1.0 Alpha surumunu indirebilirsiniz.
Aslinda buna benzeyen yardimci kutuphaneler (Apache commons gibi) mevcut, ama proje gelistirirken karsilastigim ihtiyaclar biraz farkli oldugundan ve daha modern Java 5 ozelliklerini kullanmak istedigimden bu sekilde bir yola girdim. Kod ve API henuz duragan ve olgun degil, o nedenle hata olma olasiligi her zaman var. Ama ben projelerde su ana kadar sorunsuz sekilde kullandim.