June 26, 2009
So after a week I finally start to see the big picture for BDD. And here is the roadmap for a beginner on BDD. I think it'll be helpful on the road.
İntroduction to Behavior Driven Development
http://dannorth.net/introducing-bdd
http://behaviour-driven.org/
http://en.wikipedia.org/wiki/Behavior_driven_development
Jbehave2 Basics
http://jbehave.org/documentation/two-minute-tutorial/
http://www.bitmotif.com/java/jbehave-rave/
Jbehave2 Selenium and Matchers
http://blog.m.artins.net/tag/jbehave/
Jbehave2 Validations
http://www.testearly.com/2007/07/16/using-bdd-to-drive-development/
Mockito is your friend ( Also Jbehave's best friend )
http://code.google.com/p/mockito/wiki/FeaturesAndMotivations
http://mockito.googlecode.com/svn/branches/1.7/javadoc/org/mockito/Mockito.html
Deeper Jbehave2
http://www.ibm.com/developerworks/java/library/j-cq09187/
Deeper Jbehave2 Part-2 ( Some codes are misssing in the tutorial )
http://www.ryangreenhall.com/articles/bdd-by-example.html
Behavior Driven Database Development
http://www.methodsandtools.com/archive/archive.php?id=78
26 June 2009 @ 03:38 PM
June 17, 2009
(Kaptan Pardus welcome wizard which aims to help user to configure basic settings on first boot.)
Note: This is the Beta release for Kaptan 4. Design (graphics, colors, layouts) can change until Pardus 2009 stable release (30 days to launch! \m/)
Kaptan4 looks like Kaptan3 but it is fully written in Qt4 and Python. As always, comments are appreciated

More screenshots ->
(more…)
copyleft ~ pinguar for ..the mythical woman month.., 2009. |
Permalink |
17 comments
17 June 2009 @ 07:28 AM
June 15, 2009
Ayrılık hep zor gelmiştir bana. Hele bir de bunu bloglamak istediğinizde işiniz daha da zorlaşıyormuş.
Fazla uzatmamaya çalışacağım. 18 aydır profesyonel olarak yaptığım Pardus geliştiriciliğini artık amatör olarak sürdüreceğim.
Yeni işime bu gün başladım ama bu başka bir yazıya kalsın. Bütün bu macera boyunca tanıdığım, hepsinin bilgilerinden vizyonundan faydalandığım tüm ekip arkadaşlarıma, en zor zamanlarda camiamızı organize edip yardıma gelen Oi ekibine ve bu süre boyunca pek çok sorunda beraber çalıştığımız bir çoğunu yalnız ismen tanıdığım camia üyelerimize her şey için çok teşekkür ederim.
Nedense kelimeler akmıyor ekrana klavyeden, en iyisi şimdilik burada kesmek.
"So long and thanks for all the fish"
15 June 2009 @ 08:58 PM
June 12, 2009
Bir yılı aşkın süredir test süreçleri sorumlusu olarak görev yapan sevgili Serbülent Ünsal Haziran 2009 itibarı ile TÜBİTAK UEKAE’den ayrıldı. Serbülent’e yeni işi ve hayatında başarılar diliyoruz.
Test süreçleri sorumluluğunu artık sevgili Semen Cirit yürütecek, diğer görevlerine ek olarak. Semen’e yeni sorumluluğu için başarılar diliyoruz…
12 June 2009 @ 01:29 PM
June 10, 2009
May 28, 2009
Ekibin ve özellikle sürüm yöneticisinin özverili çalışmaları ile harika bir iş çıktı yine :) Buradan da görebileceğiniz gibi Pardus 2009 Alpha kullanıcıların denemesi için ftp sunucularında yerini aldı, birçok yeni Pardus aracı ve en iyi özgür yazılımların en güncel sürümleri ile gelen Pardus 2009 Alpha ‘yı bu adresten indirebilirsiniz ;)
Asıl sürüme ne kaldı ki :)

Yenileri de geldi:


28 May 2009 @ 05:22 AM
May 26, 2009
Madem soruyu Ece Ayhan’dan devraldık, devam edelim…
Özgürlükİçin yaklaşık iki yıl kadar önce, geniş katılımcılı bir Pardus geliştiricileri toplantısında ortaya bir fikir olarak atılmıştı. TÜSSİDE’de yapılan o toplantıda yanılmıyorsam 50-55 geliştirici ile katkıcı vardı ve o buluşmamız bugüne kadarki en kalabalık buluşmamızdı. Özgürlükİçin’in adını, sevgili Barış Metin’in heyecandan uyuyamayan eşi Burçin Metin bir gece vakti bulmuştu.
1. şiirimiz karadır abiler
kendi kendine çalan bir davul zurna
sesini duyunca kendi kendine güreşmeye başlayan
taşınır mal helalarında kara kamunun
şeye dar pantolonlu kostak delikanlıların şiiridir
aşk örgütlenmektir bir düşünün abiler
(…)
Üç-dört gün önce bir masada dört kişi oturuyorduk. Bir de Haliç’i ve Boğaz’ı eklesek, altı… Masadaki kızı hoşlandığı çocuk arıyor, sessizce yedi oluyoruz.
Hepimiz geçmişe dair muhasebesini döküyordu masaya. Peki, biz Özgürlükİçin’de ne yapmışız?
Günahı ve sevabıyla birlikte, son bir buçuk yıl içinde tam 424 haber girmişiz. Hepsi özgür yazılımlar/ürünler hakkında, pek çoğu Türkiye’de özgür yazılım ekosistemi algısı oluşturmaya yönelik birer mesaj taşımış okura… Bugüne dek,
- 50 Nasıl belgesi,
- 67 Paket tanıtımı,
- 36 oyun incelemesi,
- 12 İlk adım yazısı yayınlanmış Özgürlükçin’de.
- Cumartesi günü çıkacak olan sayıyla beraber, 14 tane de e-dergi…
- Bu arada Anadolu’nun dört bir yanında 40′a yakın seminer vermişiz.
…
Özgürlükİçin forumlarında dolaşan 40 bini aşkın ileti, Pardus geliştirme süreçlerinde yararlandığımız yüzlerce fikir, muazzam bir örgütlenmenin eseri. Geçtiğimiz günlerde oyun sunucularımızda, forumlarda, e-dergi’de, beyin arayüzünde kaç yöneticimiz olmuş diye bir sayalım dedik, 34-35 yöneticiye ulaştığımızın farkına vardık.
Bize düzenli haber bulan, çeviriler yapan, e-dergiye her ay yazan/çizen, PardusWiki’de madde yazan yüzlerce dostumuzun çabasıyla oldu bunların hepsi…
(…)
1. şiirimiz karadır abiler
kendi kendine çalan bir davul zurna
(…)
Kendi kendine çalan bir davul zurna mı olduk?
Evet… “OOXML’e Hayır” kampanyamıza dışarıdan fazla destek alamadık, Türk özgür yazılım camiasının en büyük derdi olan didişmelerden Özgürlükİçin’i özellikle uzak tutmaya çalıştık, kimin ne yaptığına ve ne yapmadığına ilişkin sorgulamalarda bulunmadık. Yeşil sahalardaki deyimle söylemek gerekirse, hep “önümüzdeki maçlara baktık” ve sadece işimize odaklandık.
Bu dönemde Özgürlükİçin’in beklemediğimiz çıktıları da olmadı değil. Çeşitli özgür yazılım projelerine eleman yetiştirdik, aylık bilgisayar dergilerinin Linux sayfaları bizlerden sorulur oldu, Pardus’a küsmüş dostlarımızı geri kazanmaya çalıştık. Açık olmak gerekirse bu sonuncusunda kimi zaman başarısız olduk, kimi zaman başarılı…
Kimindi bilmiyorum, ama çok sevmiştik. Sanırım sevgili Çağlar Onur’un bulduğu, sonrasında Pardus ekibinin benimsediği ve sık kullandığımız bir erotik slogandı: “Aşk ile geliyoruz!”
Biz aşkın örgütlenmek olduğunu düşündük abiler.
(…)
Özgürlükİçin’e geçmiş dönemde çeşitli saldırılar da (eleştiri değil) aldık. Neredeyse son bir yıldır, hiçbirine cevap vermedik. Geçtiğimiz günlerde şahsıma yapılan gayri ahlaki, gayrı sıhhi, gayri medeni son bir saldırı hariç.
Aslında benim açımdan çok basit bir açıklaması vardı olayın. Söz konusu mecraya gönderdiğim açıklama her şeyi açıklıyor zaten:
…
O kadar kötü ve o kadar beceriksizce yapılmış bir analiz ki bu…
Netmaster CME075 model ve 009096-xxxxxE MAC adresli (kablosuz bağlantısı olmayan) modeme bağlı tek bir bilgisayar ve bu bilgisayar üzerinden paylaşımlı internet ile dışarı çıkan birden fazla bilgisayar ve kullanıcı mevcutsa peki?
Madem log okumasını biliyorsunuz, aynı anda yukarıda verdiğim modem/IP üzerinden kaç oturum birden açılmış, buna hiç baktınız mı? Bence bakmayın, çünkü utanabilirsiniz…
Bu, bu foruma bugüne dek gönderdiğim ilk ve son açıklamadır. Bugüne dek özellikle sustum, böylelikle de sizin forumun bir kullanıcı mahremiyetinin olmadığı, yöneticilerin kafasının bozulduğu herhangi bir kişiye loglar üzerinden saldırabileceği ortaya çıkmış oldu.
Özür falan beklemiyorum. Bunu yapamayacak kadar öfkeyle dolu yöneticilerin nefret saçtığı bir yere dönüştü çünkü burası…
Bir forumun yöneticileri arasında doğru düzgün log okumayı bilen kimse yok mudur, yahu?
(…)
Özgürlükİçin’de “düzayak çivit badanalı bir kent” kurduk. Bu kent, bizden sonra da büyümeye devam edecek.
Gönlümden geçen, bizden sonrakilerin ve bizim dışımızdakilerin de aynı soruyu kendilerine sormalarıdır: “Düzayak çivit badanalı bir kent nasıl kurulur abiler?”
Bir düşünün abiler…
26 May 2009 @ 07:37 AM
May 25, 2009
May 15, 2009
Singleton pattern kullanım amacı bir sınıfın kısıtlı nesnesini (hatta çoğunlukla tek) tek bir yerden yaratılması amacıyla kullanılmaktadır. Şimdi bunu sağlayan Singleton sınıfı kodunu görelim. (Kod 1)
public class Singleton {
private static Singleton theInstance = new Singleton();
// Sınıf yüklendiğinde yaratılan tekil nesne
public static Singleton getInstance() {
// Dışarıdan nesne almak için bu metodu kullanacağız.
return theInstance;
}
private Singleton() {
// Constructor private tanımlansın ki dışarıdan erişilemesin.
System.out.println("constructor");
//Constructor 100 ms. bekleme gibi bir "iş" yapsın.
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Burada sınıfın nesnesine sadece getInstance() metodu ile erişilebilecektir. Ccnstructor 100 ms. gibi “makul” bir süre beklemektedir. Bu sınıftan nesneleri yaratan sınıfımızın kodunu da inceleyelim. (Kod 2)
public class SingletonTest {
private static Singleton singletona, singletonb;
public static void main(String[] args) {
singletona = Singleton.getInstance();
singletonb = Singleton.getInstance();
System.out.println(singletona == singletonb);
}
}
SingletonTest sınıfını çalıştırdığımızda aşağıdaki gibi bir çıktı vermektedir.
constructor
true
Görüldüğü üzere kodumuz amacına ulaşmış constructor 1 defa çağırılmıştır. Ancak bu yöntemde Singleton sınıfının nesnesi sınıf yüklendiği anda ilklenmektedir. Şimdi bu ilklemeyi ihtiyaç anına bırakalım (Lazy initilization). Yeni Singleton sınıfımız şu şekilde oluşacaktır. (Kod 3)
public class Singleton {
private static Singleton theInstance;
// İhtiyaç anında yaratılacak nesne
public static Singleton getInstance() {
// Dışarıdan nesne almak için bu metodu kullanacağız.
// Eğer nesnemiz yaratılmamış ise yaratalım.
if (theInstance == null) {
theInstance = new Singleton();
}
// Şu an ya da önceden yaratılan nesneyi döndürelim.
return theInstance;
}
private Singleton() {
// Constructor private tanımlansın ki dışarıdan erişilemesin.
System.out.println("constructor");
// Constructor 100 ms. bekleme gibi bir "iş" yapsın.
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Bu şekilde de programımızı çalıştırdığımızda aynı çıktıyı vermekte ve beklenen şekilde işlemektedir. Şimdi SingletonTest sınıfını biraz değiştirelim ve getInstance() birden çok threadden çağırıldığında ne yapıyor onu görelim. (Kod 4)
public class SingletonTest {
private static Singleton singletona, singletonb;
public static void main(String[] args) {
// getInstance() iki ayrı thread ile çağırılsın.
Thread threada = new Thread() {
@Override
public void run() {
singletona = Singleton.getInstance();
}
};
threada.start();
Thread threadb = new Thread() {
@Override
public void run() {
singletonb = Singleton.getInstance();
}
};
threadb.start();
// Her iki thread tamamlanana kadar beklensin
while (!(threada.getState() == Thread.State.TERMINATED && threadb
.getState() == Thread.State.TERMINATED))
;
System.out.println(singletona == singletonb);
}
}
Çıktımıza göre buu sefer sapıttı sanırım.
constructor
constructor
false
Evet constructor iki defa işledi ve bize iki ayrı nesne üretti. Şimdi ilklendirmemizi thread-safe hale getirelim. Bunu da getInstance() metodunu synchronized olarak tanımlayarak yapacağız. (Kod 5)
public class Singleton {
private static Singleton theInstance;
// İhtiyaç anında yaratılacak nesne
public static synchronized Singleton getInstance() {
// Dışarıdan nesne almak için bu metodu kullanacağız.
// Eğer nesnemiz yaratılmamış ise yaratalım.
// Metodu synchronized yaparak sayesinde aynı anda sadece bir yerden
// çağırılmasını garanti ettik.
if (theInstance == null) {
theInstance = new Singleton();
}
// Şu an ya da önceden yaratılan nesneyi döndürelim.
return theInstance;
}
private Singleton() {
// Constructor private tanımlansın ki dışarıdan erişilemesin.
System.out.println("constructor");
// Constructor 100 ms. bekleme gibi bir "iş" yapsın.
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Evet! Eski çıktımıza geri döndük. Ancak unutmayalım ki synchronized Java’nın bize sağladığı bir imkan onun için Wikipedia Singleton pattern başlığında gördüğüm yöntemle devam edeceğiz. Bu yöntemde ilk koddaki gibi ilkleme sınıf yükleme esnasında ancak yardımcı başka bir sınıfın yüklenmesinde gerçekleşecek. (Kod 6)
public class Singleton {
private static class SingletonHolder {
// İlklemeyi ilk örnekteki gibi sınıf yüklemesi esnasına taşıyacağız.
// Ancak bu sefer ilklemeyi Singleton değil yardımcı başka bir sınıf
// gerçekleştirecek.
private final static Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
// Bu kullanım SingletonHolder sınıfının yüklenmesini dolayısıyla
// Singleton nesnesinin ilklenmesini tetikleyecek.
return SingletonHolder.INSTANCE;
}
private Singleton() {
// Constructor private tanımlansın ki dışarıdan erişilemesin.
System.out.println("constructor");
// Constructor 100 ms. bekleme gibi bir "iş" yapsın.
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Posted in gezegen, java, linux, yazılım

15 May 2009 @ 08:24 AM
May 13, 2009
ve KDE4 macerası başladı... hayırlı uğurlu olsun..
13 May 2009 @ 04:10 AM
Taşındım.. Telekom grevde olduğundan dolayı yeni telefon abonelik işlemleri yapılmıyor, en azından tamamlanamıyor.. Dolayısı ile 1 aydır (yazıyla: bir ay) yeni evimizde telefonumuz ve dolayısı ile internetimiz yok..
Bu süre içinde bilgisayar başında geçen zamanım doğal olarak azaldı, ama daha çok ders çalıştım :) Pardus ile ilgili de sözlü tanıtım, iki ...
13 May 2009 @ 04:10 AM
Cebit Bilişim fuarına katılmak üzere Anadolu Üni. IEEE ile beraber gelecek hafta sonu İstanbul'a gidiyorum. Bu sene fuarda Pardus Linux standı olmayacakmış maalesef. İlgili açıklamayı geçen gün Ali Işıngör Pardus Kullanıcıları mail listesinde yaptı:
"CEBIT'e katılmama nedenimiz aslında çok basit. Bu etkinlikler her geçen yıl teknoloji/bilişim buluşması olmaktan çıkıp, ekran kartlarının ...
13 May 2009 @ 04:10 AM
Bugün Eskişehir NEO Alışveriş Merkezi'ne gittim. Etrafta herkese el sallayarak dolaşan yeşil canavar maskotu kostümü giymiş biri bana yaklaşıp:
- sen AEGEE'den Ayan değil misin? Hani şu Pardus'çu Ayan?
dedi...
.
.
13 May 2009 @ 04:10 AM
Pardus'u anlatırken (ikna çalışmaları) sıkça söylediğim şeylerden biri "özelleştirilebilir" olması. cartman'ın blogundaki bağlantıdan bir başkasına atlarken bu özelleştirilebilirliğe, gözden kaçmış bir örnek buldum. Bildiğiniz gibi dosya aç/kaydet diyalog kutularının solunda sık kullanılan konumlara bağlantılar var. Bunlara sağ tıklayıp düzenleyebilir, silebilir, yeni girdiler ekleyebilirsiniz. Bakınız aşağıda ben Müzik klasörüme ve Download ...
13 May 2009 @ 04:10 AM
11 Temmuz 2007 saat 11:00 itibari ile Pardus 2007.2 Caracal Caracal çıkmış olacak. İlgili haberde yazan şu satırlar Pardus'un en çok sevdiğim özelliklerinden biri aslında:
"Pardus tek bir CD üzerinde geliyor, ortalama 30-35 dk. içerisinde bilgisayarınıza kuruluyor ve bir masaüstü kullanıcısının gereksinim duyacağı her türlü yazılımı da içeriyor. Bir diğer işletim ...
13 May 2009 @ 04:10 AM
Bir ay kadar önce geda-* paketleri versiyon yükseltme çalışmalarım sırasında cartman (nam-ı değer ninja), sanki geleceği görmüş olacak ki daha önce 20070526 gibi olan paket versiyon numaralarını 0.0_20070526 olarak değiştirtmişti. İtiraf ediyorum ilk anda baştaki 0.0_ ne ya?! ne gereği var ki ne güzel YYYYMMDD diye gidiyorduk diye düşünmüştüm. Bir ...
13 May 2009 @ 04:10 AM
Eskişehir Yazılım Üssü Genç Girişimci Eğitim Merkezi'nde (EYÜGGEM)) staja başladım. www.openoffice.org.tr de EYUGGEM yansımızdan indirin diyor ya işte orası.. Burada Suse Linux Enterprise Server ile tanıştım, web/mail server kurmak için çalışıyoruz. Yanına da Pardus kurdum, bildiğim kullandığım sistemde daha kolay çalışırım, hem Pardus'u server olarak da denemiş olurum dedim. Beklendiği ...
13 May 2009 @ 04:10 AM
#pardus-devel kanalında Pardus'un bir incelemesinin daha yayımlandığını söylendi.
[00:22] I've a good news, an article was written for pardus on an important website
[00:22] in french :p
[00:22] http://www.framasoft.net/article4657.html
Bir an "in french" kısmına dikkat etmeden linke tıkladım (evet sazanım) ve o da ne? inceleme fransızca! Ne yazık ki bugüne kadar ...
13 May 2009 @ 04:10 AM
http://www.ayanozturk.com/linuxpackages/ adresinde Pardus PiSi ve Fedora Core 7 RPM paketlerini listeletmek için birkaç kod yazdım. çalışıyor gibi görünüyor şimdilik. Depolardan XML'leri alıyor, MySql veritabanına yazıyorum, sonra da MySql'den arıyorum, okuyorum, sıralıyorum vs. Sorun çıkmazsa bir tasarım yaparım üzerine birde domain alırım ooh :)
yardım etmek isteyen yada kodlar hakkında bilgi isteyen ...
13 May 2009 @ 04:10 AM
May 12, 2009

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.
12 May 2009 @ 09:16 PM
May 11, 2009
Java5 ile gelen annatationlardan biri olan @Override bir metodun eskisini geçersiz kıldığını (override) ifade eder. Ancak Gentoo’da bir hata nedeniyle farkettiğim üzereanlamı Java5 ile Java6 arasında farklılık göstermektedir. Java6′dageçersiz kılınan ve gerçekleştirilen metodlar için @Override kullanılabilirken Java5′te sadece ilk kullanımı geçerlidir. Bu bir hata olarak Sun hata kayıt sistemine defalarca raporlanmıştır. (Benzer ve çift hata kayıtlarından anlaşıldığı üzere) Benim hataların yorumlarından anladığım amacın Java5 için de her iki durumu desteklemek olduğu ancak derleyicideki hata sebebiyle Java5 spesifikasyonunun revize edilerek sadece ilk kullanımın desteklendiği ve Java6′da her iki kullanımım geçerli sayıldığı yönünde. Bunun sebebi ise hatalı da olsa Java5 için uyumluluğu korumak.
Şimdi bu durumu bir örnek üzerinden inceleyelim.
interface Interface {
public abstract void b();
}
abstract class Base {
public abstract void a();
}
public class Sub extends Base implements Interface {
@Override
public void a() {
}
@Override
public void b() {
}
}
Bu kod Java6 ile gelen derleyici ile derlenmekte ancak Java5′teikinci @Override için şu hatayı vermektedir.
Sub.java:15: method does not override a method from its superclass
@Override
İşin ilginç yanı Java6 derleyicisi ile -source 1.5 -target 1.5 parametreleri verildiğinde de hata vermemekte 1.5 ile olan uyumsuzluğu ancak ecj (Eclipse Java derleyicisi) yakalayabilmektedir. Bu sebepten ötürü arayüz metodları gerçekleştirilirken @Override kullanılmaması başka amaçla illa Java6 gerekmiyorsa kodun uyumluluğunu arttıracaktır.
Posted in gentoo, gezegen, java

11 May 2009 @ 11:40 AM
May 09, 2009
2008 Haziran ayında göreve başladığım Yakın Doğu Üniversitesinde kısa zamanda Linux ve özgür yazılımların bilinirliğini ve kullanılmasını arttırmak adına yeterli çalışma yapıp yapamadığımı tarttığım şu sıralarda üniversitemiz bilgisayar mühendisliği öğrencilerinden Renan Çakırerk‘in Pardus’09 Yaz Staj’ına kabul edildiğinin açıklanması hem gururlanmama hemde yüreğime birazda olsa su serpilmesine neden oldu. Bitirme projesi için ne yapabiliriz diye ilk görüşmeye geldiği zaman “yapacağın bu iş sadece bir bitirme projesi değil insanlarında kullanıp yararlanacağı bir şey olmalı bak Pardus için yapılması planlanan bir sürü iş var” diye konuşmaya başladığımız günleri hatırlamamak elde değil.
Elbet bu bir başlangıç, daha bir çok Renan’ın üniversitemiz adına özgür yazılım oluşumlarının içinde katılıp başarılı olacaklarına inanıyorum, başarılar Renan..
09 May 2009 @ 07:32 AM
May 07, 2009
Daha hafif ve daha uzun ömürlü bir pil ömrü için terchi edebileceğiniz en iyi notebooklardan biri Sony’nin Vaio ailesinden TZ serisi… Makine hafif, gerçekten hızlı, SSD ve ATA olmak üzere iki diski var ve Linux ile arası gayet iyi üstüne üstlük pilide 5 saatten fazla gidiyor.

3-4 gün önce geldi yeni bilgisayarım, Pardus 2009 test deposundan devşirme bir sistem kurdum, SD Kart dışında herşey kurulumun ardından çalıştı, herhangi bir iş yapmama gerek kalmadı :)
Günlük olarak kullandığım diğer yazılımları da kurduktan ve bir müddet kullandıktan sonra Yalı testleri için bir sanal makine kurmam gerekti; VirtualBox’ı derledim depodan, test isolarımı bağladım ve sistemi açtım… Kurulum süresince dikkatimi çeken yavaşlığı o sırada arka tarafta derlenme sürecindeki paketlere bağladım, fakat iş gittikçe tatsızlaşmaya başlıyordu… Sonra ofistekilerle soruna bakarken, Bahadır VirtualBox’ın sağ alt köşesindeki VT (Virtualization) simgesinin pasif olduğunu fark etti …

İşlemci tarafından desteklenen bu özelliğin BIOS’tan Sony tarafından kapatıldığını ve açılması için herhangi etik bir yol olmadığını ve bu konuda geçerli bir sebeplerinin de olmadığını öğrendiğimde bir titreme oldu bende :) Tabi bunu kabullenmek ve güzelim işlemcinin güzelim özelliğinden mahrum kalmak ayıp olurdu :)
Google’da bu konuda bir şeyler aradığınızda benim gibi dert yanan bir sürü insana rastlayabilirsiniz. Sağolsunlar kendi aralarında tartışıp Sony’ye bile şikayet mektupları yazmalarına rağmen Sony tarafından herhangi bir olumlu tepki alamamışlar. Fakat bazı insan evlatları BIOS’un bunu değiştirmek için herhangi bir arabirimi olmamasına aldırmadan, BIOS’un mevcut ayar dosyasını dump ederek gerekli değişiklikleri yapıp geri yükleme yöntemini kullanmış ve başarılı olmuşlar :)
Değişiklik yaptıkları modellerin arasında benim TZ398U yoktu haliyle :) biraz araştırdıktan sonra hangi anahtar değerini değiştireceğimi buldum ve artık VT desteği ile çok daha hızlı bir şekilde sanal makine kullanabiliyorum :)

Adımları kısaca açıklamak gerekirse;
- DOS için bu adresten FreeDos’un 8Mb’lık minik isosunu indirip bir CD’ye yazın,
- BIOS dump için gerekli program symcmos’u buradan indirin,
- CD ile boot ettikten sonra “symcmos -v2 -LDUMPDOSYASI.TXT” ile BIOS ayarlarınızın bir kopyasını alın,
- Sonra bu dosyada modelinize göre uygun anahtarı bulup 0000 olan değerini 0001 yapın *,
- Kaydettiğiniz dump dosyasını yine aynı aracı kullanarak “symcmos -v2 -UDUMPDOSYASI.TXT” komutu ile BIOS’a geri yazın, bu kadar :)
* Ayrıntılı bir anahtar tablosu bu adreste bulunuyor, genelde TZ serileri için 0363 doğru anahtar değeri.
07 May 2009 @ 04:52 PM
May 04, 2009
Uzun zamandır yazmıyorum, ama yazacak şey olmadığından değil. Bilakis, geçtiğimiz bir ay boyunca olanlar, önceki birkaç ayda olanların toplamından da fazlaydı. Buna rağmen 20 gün boyunca yazı yazmamamın sebebi; okuyucuları sıkmayacak, yapılanların küçümsenmemesini sağlayacak uzunlukta blog girdisi yazmaya çalıştığım her denemenin, "dur şu paketi 2009 deposuna alayım" ya da "şu hatayı düzelteyim" düşüncesiyle bölünmesi ve "daha sonra yazarım" dememin ardından uzunluğu sürekli değişen yapılacaklar listemin içinde kaybolmamdı.
Daha fazla ertelemenin anlamsız olduğunu ve ayda iki girdi yayınlanan sitenin de "günlük" olamayacağını düşünerek, "bu ay daha fazla yazı yazacağım" sözü ile ("gece sabahlayacağıma, şimdi yatarım; sabah dinç kafa ile kalkar çalışırım" sözü ile aynı kefeye konmamalı), geçtiğimiz ay neler olduğunu kısa cümlelerle anlatmaya karar verdim, buyrun...
Diyordum ki, "sudo libdb-4.5.so bulunamadı diye hata veriyor" diyen Gökmen, yazamama sebeplerinden biri oldu. Sona bu kadar yaklaşmışken, yazılanları silmek olmaz. Bu da "yazamamak" hakkında bir yazı olarak defterimde bulunsun.
04 May 2009 @ 12:44 AM
May 03, 2009

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:
ListString> 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.
03 May 2009 @ 12:35 PM
May 02, 2009

Çinli bilge Chuangtze şöyle der;
“Bir kere rüyamda kelebek olduğumu gördüm. Şimdi artık rüyasında kelebek olduğunu gören Chuangtze’miyim yoksa rüyasında Chuangtze olduğunu görmekte olan bir kelebek miyim bilmiyorum.”
Şimdiki sorum sizi şaşırtabilir.
Peki, ya siz gerçekten siz olduğunuza emin misiniz? Gördüğünüz bir rüyadan ibaret olmadığınızın bir garantisi var mı?
Ya aslında hepimiz, zombilerin hüküm sürdüğü bir dünyanın rüyasıysak? Biraz dikkatli düşününce siz de göreceksiniz. Chuangtze’nin rüyasında kelebek olduğunu görmesi ile kelebeğin rüyasında Chuangtze olduğunu görmesi olasılıkları arasında hiçbir fark yok. İkisi de olası…
Zombistan‘ın İstila Güncesi size de çok tanıdık gelecek…
Salı, 28 Nisan 2009
Polis, içinde zombilerin barındığı tespit edilen bir eve operasyon düzenledi. Büyük başarıyla tamamlanan operasyon sonucu bir zombi itlaf edilirken, iki memur ve sokaktan geçen birkaç vatandaş şehadet mertebesine erdi.
Salı, 27 Nisan 2009
“Yaşayan ölü” virüsü taşıdığı şüphesiyle havaalanında müşahade altına alınan turistin, aslında domuz gribine yakalanmış olduğu anlaşıldı. Görevliler, söz konusu şahıstan özür dileyerek, kendisini resmi bir araçla Sultanahmet’e bıraktı. Sağlık Bakanı, “Domuz gribi ülkemiz için tehdit değil, örf ve adetlerimiz buna engeldir” dedi.
Pazartesi, 27 Nisan 2009
“Zombilerin Gerçek Kökeni” isimli kitap, H. Yahya imzasıyla çıktı ve dünyanın dört bir yanındaki akademisyenlere gönderildi. Kitapta, maymunlarda hiç zombi vakasına rastlanmadığı halde insanların “yaşayan ölü” virüsü kapabilmesi, “evrim safsatasını çürüten bir ilahî işaret” olarak anlatılıyor.
Perşembe, 23 Nisan 2009
Bazı belediyelerin, itlaf sonrası zombi leşli toplatma ihalesinde usulsüzlük yaptığı iddia edildi. Deniz Baykal, “Küçük bir sokak için milyon dolarlık masraf gösteren var! Böyle bir şey düşünülebilir mi?” dedi. RTE, “Bunlar hayatında zombi görmemiş” şeklinde yanıt verip, zombilerin ‘geri-gömülme’ işlemini dini vecibelere uygun yapmaktaki hassasiyetin altını çizdi.
Pazartesi, 20 Nisan 2009
Emre Kongar, zombi salgınıyla mücadelede hükümetin sınıfta kaldığını; çağ dışı anlayışların bu tür problemler karşısında iflas ettiğini söyledi. Mehmet Barlas ise, dünyada artık sınırların kalktığını, Türkiye’nin bu sorunu liberal bir anlayışla ve darbelere davetiye çıkarmadan çözmesi gerektiğini dile getirdi.
Cumartesi, 18 Nisan 2009
Çocukları zombi salgınından korumak için, Sağlık Bakanlığı ülke genelinde aşı kampanyası başlattı. “Yaşayan ölü olmaktan korkma, geciken diri olmaktan kork” sloganıyla yürütülen kampanyaya, tarikatlar, cemaatler ve fikir önderleri de destek veriyor.

Son zamanlarda Türkiye’de çıkan en kaliteli yerli çizgiroman albümü Zombistan çıktı!
Dileyene kasvetli, dileyene cinnetli kapakla! Kaçırmayın!
02 May 2009 @ 05:59 PM
April 30, 2009
For the second year straight, Pardus has been a Google Summer of Code mentoring organization. This year a total of 6 Pardus projects have been approved and as a change we have 4 non-Turkish-speaking students.
The students and their projects / mentors are as folows:
- Ezgi Çiçek OpenOffice.org Turkish Grammar Support / Gökçen Eraslan
- Mehmet Ali Akmanalp Fingerprint Authentication Support / Gökmen Göksel
- Rohan Anil PAM Face Authentication / Onur Küçük
- Sarath Lakshman Web-based Image Creation Tool for Pardus / Ekin Meroğlu
- Marcin Kurczych Pulseaudio Manager for KDE4 / Ozan Çağlayan
- Caio Nascimento Bug Reporting Tool for KDE4 / Pınar Yanardağ
One important observation is that only one of this year’s projects is Pardus specific and 4 of them will likely to have their place in upstream KDE.
Congratulations to all accepted students, and “Happy hacking”…
30 April 2009 @ 01:22 PM
April 29, 2009
Daha önceden buna benzer bir kodu Java 1.4 ile generics kullanmadan yazmıştım. Ancak Generics’in sağladığı özelliklerle tip dönüşümü kodunu metod içine alarak dışarıya tip güvenli bir metod sunabildim. Şimdi örnek kullanım ile metodumuzu görelim.
import java.lang.reflect.Array;
public class GenericArrayDemo {
public static void main(String[] args) {
System.out.println(getArray(String.class,10).getClass().getSimpleName());
String theArray[] = getArray(String.class, 10);
}
@SuppressWarnings("unchecked")
public static <T> T[] getArray(Class<T> clazz,int size) {
T theArray[] = (T[])Array.newInstance(clazz, size);
for(int i=0;i<size;i++)
try {
theArray[i]=clazz.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return theArray;
}
}
Burada çıktı olarak String[] üretilmekte ve oluşan dizi direk ve yalnız String dizisine atanabilmektedir. Şimdi örneğimizi genişletelim ve metodun sadece Number sınıfının alt sınıflarını üretebilmesini sağlayalım.
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class GenericArrayDemo {
public static void main(String[] args) {
/* Bu satırlar artık Number altsınıfı beklediğimizden hata alacaktır.
System.out.println(getArray(String.class,10).getClass().getSimpleName());
String theArray[] = getArray(String.class, 10);
*/
System.out.println(getArray(Double.class,10).getClass().getSimpleName());
Long theArray[] = getArray(Long.class, 10);
for (Long long1 : theArray) {
System.out.println(long1);
}
}
@SuppressWarnings("unchecked")
public static <T extends Number> T[] getArray(Class<T> clazz,int size) {
T theArray[] = (T[])Array.newInstance(clazz, size);
for(int i=0;i<size;i++)
try {
/*
* Number alt sınıfları parametresiz constructor
* içermediği için 0 ile ilklendiriyoruz
*/
Constructor<T> constructor=clazz.getConstructor(String.class);
theArray[i]=constructor.newInstance("0");
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return theArray;
}
}
Bu metod ise Double[] ve ardından 10 adet sıfır yazdırmaktadır. Artık Number alt sınıfı beklediğinden bir önceki örnekteki satırlar çalışmamaktadır. Burada sınıfa ait String parametresi alan Constructor üretilmekte ve o şekilde ilklenmektedir.
Bunu benim kullanım amacım veritabanında çağırılan stored procedure sonuçlarını uyumlu bir sınıf dizisine eşleyebilen genel bir metod yazmak idi. Belki daha farklı kullanım amaçları da olabilir.
Posted in gezegen, java

29 April 2009 @ 04:39 AM
April 24, 2009
April 22, 2009
Özgürlükİçin topluluğu tarafından hazırlanan e-derginin muhteşem bir sayısını daha çizmekte olduğumuz şu günlerde, son sayımızda yer alan ve yine topluluktan gelen bir dostumuzun çizdiği muhteşem bir bant karikatürü sizlerle paylaşmak istedim.

Peki, ya siz Özgürlükİçin e-dergisini takip ediyor musunuz?
22 April 2009 @ 08:57 PM
April 20, 2009
Bytecode uyumluluğu ve API uyumluluğu
Java kodlarımızı derlerken derleyiciye -source ve -target parametrelerini vererek belli bir sürüme ait bytecode a derleyebiliyoruz. Tabi burada yeni sürüme ait DİL özelliklerinden feragat ediyoruz. Örnek olarak kodumuzu Java 1.4 için derlemek istersek Generics, Boxing gibi özellikleri kullanamayız. Ancak bu işlem aynı garantiyi JDK’nın sunduğu API için sağlamamaktadır. Örnek olarak Java6 ile yeni gelen bir sınıfı kullanıp Java5 ile çalıştırdığımızda ClassNotFoundException, Java6 ile yeni gelen metodu Java5 ile çalıştırdığımızda NoSuchMethodError hatası alırız. Bu durumda en emin yöntem geliştirirken hedef aldığımız minimum majör sürümü (Örn: Java5) kullanmamız olacaktır. Artık pek çok IDE proje bazında kullanılan JRE/JDK sürümünü seçmemize izin vermektedir.
AmaterasUML Eclipse eklentisini Java5 ile çalıştıtırken aldığım hata
Gelelim hikayemizin gelişme bölümüne. Eclipse için geliştirilmiş açık kaynaklı bir UML eklentisi olan AmaterasUML tam olarak da bu sorundan müzdarip. Eklenti ikili dosyaları Java5 sisteminde çalışmasına rağmen UML oluşturması için sınıfları ekrana sürüklediğimizde java.lang.NoSuchMethodError: java.util.Arrays.copyOf([Ljava/lang/Object;I)[Ljava/lang/Object; hatası alıyoruz. Bunun sebebi ise Arrays.copyOf() metodunun Java6 ile yeni gelmiş olması.
Nasıl düzelttim?
Gelelim çözüme. Şanslıyız ki eklentimiz açık kaynak kodlu. Aslında bahsetmedim ama sorunun kaynağını bulabilmek için de projenin kaynak kodunu inceledim. Şimdi tek kalan şey bunu düzeltmek, test etmek ve geliştiriciye yollamak. Bunun için Proje kodunu SVN’den indirip açtım ve JDK 1.0′dan beri varolan System.arraycopy() metodunu kullandım. Daha sonra düzenlenmiş kod ile eklenti dosyasını yeniden oluşturup kendi oluşturduğum dosyadan kurdum. Ve, evet eklenti olması gerektiği gibi çalıştı ve sınıflarda UML diyagramı oluşturdu. Ardından yamayı oluşturarak projenin ulaştığım iki sitede (Sourceforge ve Java.net) yer alan hata kayıt sistemlerine bildirdim.
Hata Kayıtları
Posted in eclipse, gezegen, java

20 April 2009 @ 05:50 PM
April 17, 2009
Yeditepe Üniversitesi’n'de verdiğim “Açık Kaynak Kodlu Yazılım Geliştirme” semineri benim için bir ilkti. Daha önceden bu tarz bir seminer hiç vermemiştim. Ancak kendi adıma iyi geçtiğini düşünüyorum. İyi bir başlangıç iyi bir tecrübe oldu. Çok kalabalık bir grup olmasa da az sayıda insana da bilgi verebilmiş, açık kaynak kodlu projelere katılmayla ilgili heveslendirebildiysem ne mutlu bana. Buradan gayreti için Yeditepe Üniversitesi Bilgisayar Topluluğu başkanı Zafer ÇAKMAK’a teşekkür etmek isterim.
Şimdi darısı önümüzdekinin belki de yenilerinin başına.
Not: Seminer sunumuna yeni açtığım Verdiğim Seminerler sayfasından erişilebilir.
Posted in gezegen, linux, seminer, yazılım

17 April 2009 @ 04:10 AM
April 15, 2009
Zemberek kullanarak kelime üretimi konusunda kod örnekleri içeren küçük bir yazı yazdım, ilgilenenler okuyabilir.
15 April 2009 @ 03:25 PM
April 14, 2009
Her yerde duyuyordum, bloguma da koyayım istedim. Özellikle The Saturdays cover’ ı harika olmuş.
The Saturdays :
[See post to watch Flash video]
Madcon :
[See post to watch Flash video]
Frankie Vallie :
[See post to watch Flash video]
Bu da sözleri :
put your lovin’ hand out, baby
i’m beggin’
beggin’, put your lovin’ hand out, baby
beggin’ you, put your lovin’ hand out, baby
ridin’ high when i was king
played it hard and fast cause i had everything
walked away, wonderin’ then
but easy come and easy go and it would end
i’m beggin’ you, won’t you give your hand out, baby
beggin’, put your lovin’ hand out, baby
i need you to understand
that i tried so hard to be a man
the kind of man you’d want in the end
only then can i begin to live again
an empty shell i used to be
shadow of my life is hangin’ over me
broken man that i don’t know
will leave it standing, devil’s dancing with my soul
beggin’ you, won’t you give your hand out, baby
beggin’, put your lovin’ hand out, baby
i’m fightin’ hard to hold my own
no, i just can’t make it all alone
i’m holdin’ on, i can’t fall back
now that big brass ring is a shade of black
i’m beggin’ you, give your hand out, baby
beggin’, won’t you put your lovin’ hand out, baby
14 April 2009 @ 08:49 PM
April 13, 2009
Ogame’ydi, şuydu buydu derken, tarayıcı üzerinden oynanan oyun kervanına Intel de katılmış : IT Müdürü 3 : Görünmez Kuvvetler.
“ * IT bilginizi test edin
* En son Intel teknolojilerini edinin
* İş yerinizin işleyişini düzenli tutun
* Küresel bir IT imparatorluğu inşa edin
* Devasa bir ağ yaratın
* Başarılarıyla tanınan biri haline gelin

Bilişim teknolojisinin felsefesine dalın” buyurmuşlar. Değişik bir şeymiş.
13 April 2009 @ 08:37 PM
April 12, 2009
Pardus'un uzaktan yönetim çatısı Ahenk'in yeni sürümü için çalışmalara başladık. İlk sürümde, istemcilere ait politikaların LDAP'ta tutulduğu, istemcilerin kendilerine (ve bağlı oldukları gruba) ait politikaları belirli aralıklarla çektiği ve politikaların COMAR ile uygulandığı basit bir yapı kullandık, kurulum zorluğu ve arabirimin kullanışsız olması dışında ciddi problemlerimiz olmadı.
Mevcut sürüm, ajan uygulamasında yapılacak ufak COMAR değişiklikleri ile 2008/2009'da çalıştırılabilir durumda. Paket yönetim modülüne uzaktan paket kurma/kaldırma desteğini eklemek (ilk sürümde sadece güncelleme desteği vardı) ve servis modülünü hayata geçirmek elzem görünüyor ilk adımda. Sonrasında ise yapılması gereken değişikliklerden aklıma gelenler şöyle:
Politikaların anında uygulanabilmesi ve gerektiğinde istemciden anlık bilgi alabilmek için server-push desteği. Tek başına (Open)LDAP ile yapamayacağımız bir şey bu. İstemcilerin politika alma frekansını artırabiliriz elbet, ancak istemci sayısının fazla olduğu ortamlarda trafik yükü de artar. LDAP'la birlikte Jabber kullanmak geliyor aklıma, sevdiğimiz bir protokol kendisi. Uçlarda çalışacak ajan uygulamasına Jabber istemcisi eklemek yetiyor, İksemel'imiz, Piksemel'imiz varken oldukça kolay bir iş :)
Yönetim arabiriminin bir çeşit LDAP editörü olmaktan öteye gitmesi gerekiyor bir de. Ahenk'in ilk yönetim arabirimi Lider'in yetenekleri sınırlı, arayüzü kullanışsız. Server-push desteği için Jabber özelliklerine sahip olmalı, elbette daha fazlası yapılabilir bu enfes protokol ile.
İlk sürümde bulunan paket, kullanıcı hesapları ve servis yönetim politikalarının yeterli olmayacağı aşikâr. Muhtelif kurum ve kullanıcılarla yapılan toplantı ve sohbetlerde hangi işlerin uzaktan yönetilmesi gerektiği ortaya çıkıyor, bunların ne olacağı başka bir blog girdisinin konusu olsun...
12 April 2009 @ 11:11 PM
April 09, 2009
AppEngine Java desteği haberini duyurduktan sonra Zemberek-web'i bu hizmet ile yayınlamaya karar verdim. SVN'de yer alan özelliklerinden önemli bir kısmını aktardım (Web servisi şu an için aktif değil) Aktarım esnasında Zemberek kütüphanesinde Java'nın konsol kayıtçısının kullanımını AppEngine ile kullanılamaz sınıflardan olduğundan kaldırmam gerekti. Bunun için yerel dosya sistemimde özel bir Bazaar dalı açtım. Ve bu şekilde çalıştırmayı başardım. Ardından kodda ufak düzenlemeler de yaparak şu anki haline[1] getirdim. Bu şekilde Ekşisözlük'te de bilinen[2] zemberek-web uygulaması tekrar hayata dönmüş oldu.
Bu aşamadan sonraki hedefim GWT inceleyerek arayüzü GWT ile yazmak.
1: http://zemberek-web.appspot.com/
2: http://sozluk.sourtimes.org/show.asp?id=9157957
09 April 2009 @ 01:50 AM
April 08, 2009
Daha önceki yazımda Rail ALİEV'in Ubuntu paketlerinin hazırlanmasına yönelik çalıştığından bahsetmiştim. Evet, çalışmaları meyvelerini verdi ve kütüphane, sunucu, zpspell (Zemberek KDE3 eklentisi için gerekli program) Openoffice.org ve Firefox eklentileri için hazırlanan paketler kendisinin kişisel paket arşivinde (PPA) yerini aldı. Bağlantıda yer alan depo adreslerini kullanarak paketleri kurup kullanmaya başlayabilirsiniz.
08 April 2009 @ 12:47 PM