8 Ocak 2011 Cumartesi

2011, guestlogin ve diğer Pardus paketleri hakkında

Herkese mutlu yıllar,

Uzun zamandır buraları boş bıraktım. Bu aralar da bayağı bir yoğunluk var ama artık buralara bir şey yazmadıkça kötü hissetmeye başladım. 2011 de buraları boş bırakmayı düşünmüyorum. Zaten Çomak projesi yeterince doldurur gibime geliyor.

Neyse, staj projem olan guestlogin ile başlayayım.

Aslında bu yazıyı bayağı önceden yazmam gerekiyordu. Pardus-Geliştirici listesinde de tartıştığımız[1] üzere, guestlogin'e açılıp kapatılmasıyla ilgili bir özellik ekledim.

Bunlardan ilki guestlogin.conf dosyasına enabled'i eklemek oldu.

eğer enabled=false ise modül çalışmayacak. bunu eklemek için de diğer değerleri nasıl okuyorsam onun gibi 1-2 satır ekledim. Yani:
        guest_enabled = config.get('guest', 'enabled')         if guest_enabled == '':             guest_enabled = "true"
gibi oldu. Buradan da anlaşılacağı gibi, eğer değer boş bırakılsa da true oluyor.
Varsayılan guestlogin.conf dosyasında da o satır (ve yorum satırı) şu şekilde:
# If it is false, module will not work. (default is true) enabled = true
Bu işlemlerle birlikte bu sorunu halletmiş oldum. Şimdi bu proje ile ilgili geriye:
1. Bugzilla'da girilmiş bir hata[2]
2. KDM'ye bir buton eklemek.
2. sine bu aralar yine uğraşmayı düşünüyorum. Biraz uğraştım fakat araya sınavlar vs. girdi bu yüzden biraz ilgisiz kalmak zorunda kaldı. Eğer yapabilirsem çok süper olacak bence.
1. si için de pam kullanmam gerekiyor, onu uygulamak çok da kolay olmayacak ama 2. si daha öncelikli olduğu için 1 den önce onu halletmem gerekiyor.
Şimdilik guestlogin ile ilgili gelişmeler bu kadar. KDM'ye buton eklemek kısmıyla ilgili gelişmeleri de buraya aktarırım.
Diğer paketlerden bahsetmek gerekirse,
Evet, biliyorum Clanlib2'yi paketleyeceğim fakat çözemediğim zilyon tane hatası var. (undefined symbol vb.)Bunları halletmeden de review'e sokmak istemedim açıkçası. Onun haricindeki bütün sorunları hallettim, aslında biraz daha uğraşıp eğer olmaz ise review'e bu haliyle sokmayı düşünüyorum. Oradan gelen yardımlarla çözmek kolaylaşır gibi.
Clanlib2 haricinde, bir de gmailfs'i almıştım. O da eskiden çalışıyorken, şu aralar çalışmıyor, sanırım glibc güncellemesi sonucu patladı o. Zaten pek sağlıklı bir paket değildi ama bir ara bunu da gmailfs geliştiricisine bildirmeyi düşünüyorum. (sanırım o da pek ilgilenmiyor artık projeyle, bayağıdır güncellemiyor)
Ayrıca, fish paketini de üstüme aldım. Fish bir kabuk. Bence çok da güzel bir kabuk olmuş. Mesela "cp -" yazıp taba iki kere bastığınızda size hangi parametrelerin (cp için) ne işe yaradığını söylüyor. Tab tamamlaması bu konuda çoğu şeyde böyle davranıyor. Mesela "man"'ın yorumları da gayet iyi. "ls" yaparken dosyanın tipini de söylüyor. Şu anda review'da paket. Eklemek istediğim şeylerden birisi buna pisi'de tamamlama desteği. Başka tamamlamalar da eklenebilir tabi ama öncelik bu şimdilik.
Necdet Hoca'dan python-PyMT paketini aldım. 2009'da bulunan bu pakette açık bir hatası bulunuyor.[3] Hatayı çözdüm. mtdev adlı kütüphaneyi de paketlemek gerekiyormuş. Bunu da paketleyip, hatayı kapatmayı düşünüyorum.
Hermes paketini de üstüme aldım bu arada. :)
ÇOMAK projesi ile birlikte Fluxbox paketleriyle de uğraşıyorum. Biraz eksiklikler var tabi ama çok düzgün olmasa da fluxbox'u çalıştırmayı başarabildim :)
[1] http://liste.pardus.org.tr/gelistirici/2010-November/026568.html
[2] http://bugs.pardus.org.tr/show_bug.cgi?id=14233
[3] http://bugs.pardus.org.tr/show_bug.cgi?id=15793

6 Ocak 2011 Perşembe

Pardus 2011 ve Eclipse

Bütün sene içerisinde yoğun olduğum projeleri yapabilmemiz için eclipse'ye ihtiyacımız oldu. (Hocaların da çoğu eclipse'yi övüyor/öneriyordu.) Bunun için eclipse'yi kurdum ama yetmedi. 
 Öncelikle aldığım ders olan Çevik Yazılım Geliştirme (Agile Programming) gereği test güdümlü geliştirmemiz gerekiyordu. Bunun için de junit gerekiyordu. Pardus için olan paketini buldum ve kurdum fakat eclipse'in umurunda olmadı bu. Çözüm olarak, projeye dışardan jar ekleyerek (junit.jar'ı) çözdüm bu sorunu. Bu nasıl oldu: Projeye sağ tıklayıp oradan özellikler, java inşa yolu, üstteki sekmelerden kütüphaneler, oradan sağdaki dışarıdan jar ekle'ye tıklıyoruz. Oradan da /usr/share/java/junit.jar'ı seçiyoruz. Ve böylece bu sorun çözülüyor.
 Bende eclipse İngilizce, sizde de öyleyse yukarıda anlattığım yol şu şekilde oluyor. Projeye sağ tıklayıp oradan properties, oradan java build path, üstteki sekmelerden libraries, sağdaki butonlardan add external jar'a tıklıyoruz. Buradan da yine /usr/share/java/junit.jar'ı seçiyoruz.
 Bununla ilgili olarak, o zamanın eclipse paketinin bakıcısı olan Mete Alparslan'a eposta yolladım fakat o da sanıyorum ki Yalı ile uğraştığından dolayı pek fazla ilgilenemedi ve zaten eclipse paketinin bakıcısı da değişti. (zaten o zaman da yayımı güncelleyen de Mete değildi) Şu an yeni sürüm yayınlandı, isimler değişti. (bütün eclipse  paketlerindeki binary takıları atıldı.[1]) Bunun üzerine tekrar denemeler yapıp, eğer yine aynı işleri yapmak gerekirse bunu da bildireceğim. 
 Bunun haricinde de yaptığımız projeleri bir depoda tutuyoruz[1]. Bunun için de eclipse için svn'e ihtiyacımız var. Bunun için de eclipse eklentisi olan subversive'yi seçtim. Bunun için help->Install new software'ye giriyoruz. (Türkçesi sanırım yardım->yeni yazılım yükle) Aslında burada eclipse'in asıl deposunun olmasını bekleriz ama yok. (en azından eskisinde yoktu) Son hallerinde de durum böyleyse bakıcısına bildireceğim. Yandan add'e tıklayıp address (adres) kısmına:
 http://download.eclipse.org/releases/helios
 yazıyoruz. Name (isim) kısmına Helios vs. yazabiliriz. Bunu yaptıktan sonra Ok diyoruz. Orada  --All available sites-- (Türkçesi bütün mümkün siteler olabilir) i seçtiğimizde (üstteki work with yazan yerin yanındaki combobox'dan (açılır kutu)) bir güncelleme yapacak. (depodaki yüklenebilir paket vs.leri getiriyor ve bu işlem biraz uzun sürebilir). Arama kısmına "svn" yazıyoruz. Altta liste şeklinde çıkan seçeneklerden "Subversive SVN Team Provider (Incubation))" ya da buna en yakın olanını (subversive, svn team provider gibi şeyler olsun) seçin. Gerekli lisansı kabul etmenizi istedikten sonra indirip kuruyor. Kurulum tamamlandıktan sonra yeniden başlatmanızı isteyecek, yeniden başlattıktan sonra da ya başlarken ya da svn'den yeni proje çekmek istediğinizde svn connector kurmanızı isteyecek. SVNKit 1.3.2 yi tavsiye ederim. Eğer bunu seçtiğinizde kurulmuyorsa (ki bende böyle oldu) ve hata oluştu gibi bir hata veriyorsa endişelenmeyin. Yine help->install new software'ye girin. Add butonuna basın isim kısmına "svn connector" vb. isimler yazabilirsiniz. Adres kısmına da aşağıdaki adresi yazın:
 http://community.polarion.com/projects/subversive/download/eclipse/2.0/helios-site/
 Aslında bu siteyi eklemeden önce "Available Software Sites" e tıklayıp oradan 
 Update Site http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/  Enabled
 yazan satırdaki işareti kaldırmamız iyi olur. Çünkü SVN connectorları buradan kurmaya çalışıyor. Bu da sorun yaratıyor.
 Sonra daha önceden --All available sites-- seçtiğimiz yeri açıp oradan yeni eklediğimiz ismi ve adresi bulup onu seçiyoruz. Arama bölümüne yine "svn" yazıyoruz. Buradan SVNKit 1.3.2'yi bulup işaretleyin. (zaten 1.3.3 mevcut ama onda bir sorun var, yüklenemiyor bu yüzden yukarıdaki siteyi seçiyoruz) Sonra yine lisansı kabul ettikten sonra indirip kuracaktır. Bu işlem bitince eclipse'yi yeniden başlatmanızı isteyecektir. Yeniden başlattıktan sonra "svn" çalışıyor olmalı. SVN'den yeni bir proje çekmek için yeni proje dedikten sonra listeden  SVN->Project from SVN e tıklayın. adresi girdikten sonra gerekli işlemleri halledin (hangi revizyon olacağı, ne isimde çekileceği vs.) ve bu kadar. Eğer doğru çekebildiyseniz sorun yok demektir. SVN başarı ile kurulmuştur. 
 Commit, update vb. işlemler için projeye sağ tıklayın, team kısmına gidin, her şey orada :).
 Eğer güncelleme sırasında (update) 'Refreshing external folders' has encountered a problem yazıyor ve detaylarda da Null Pointer Exception yazıyorsa bundan endişelenmeyin ve OK diyin. Böyle bir sorun var ama sanırım ilerideki sürümlerde düzelir umarım.
 [1] http://liste.pardus.org.tr/gelistirici/2011-January/027309.html

30 Ekim 2010 Cumartesi

qt vs. gtk+ devam


Bir önceki yapmış olduğumuz testin ise görselleri şu şekilde:

Qt:


Gtk:



qt vs. gtk+ devam


Tekrar Merhaba,

Daha önce yapmış olduğumuz testlerin yanına bir de daha fazla görsellik içeren uygulamanın testini yaptık.

Bilgisayarların teknik özelliklerini tekrar yazıyorum.

Pardus 2009 Gnome ve 2011 Kde yüklü bilgisayarlarda 4GB RAM Intel Core i3 310 işlemci, Pardus 2009 Kde yüklü bilgisayarda İntel Core Duo T2370 @ 1.73 işlemci, 2GB RAM bulunmakta, Ubuntu yüklü bilgisayarda
6GB RAM, Intel Core 2 Duo E6420 @ 2.8Ghz işlemci var.

Pardus 2009'da Python 2.6.5, Qt 4.7.3, Gtk 2.16, Pardus 2011'de Python 2.7, Qt 4.8_20100928, Gtk 2.16, Ubuntu 10.10'da Python 2.6.6, Qt 4.7.4, Gtk 2.21 var.

[0] adresindeki dosyadaki;

2009gnometest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları,
2009kdetest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları,
2011kdetest dizininde -> Pardus 2011 yüklü, Python 2.7, Qt 4.7.0, Gtk 2.22.0
bulunan bilgisayardaki test sonuçları,
ubuntutest dizininde -> Ubuntu 10.10 yüklü, Python 2.6.6, Qt 4.7.4, Gtk 2.21
bulunan bilgisayardaki test sonuçları bulunmaktadır.

Bu dosyalardaki;
fr_idle_qt.txt, fr_idle_gtk.txt dosyaları bilgisayarların boştaykenki free çıktıları,
ps_idle_qt.txt, ps_idle_gtk.txt dosyaları bilgisyarların boştaykenki ps aux çıktıları,

dosyalardaki idle yerine run1 olanlar betikler ilk kez çalışıyorkenki çıktılar, run2 olanlar ise ikinci kez çalıştırdığımızdaki çıktılar.
end1 olanlar betikler ilk kez kapatıldıktan sonraki çıktılar, end2 olanlar ise ikinci kez kapatıldığındaki çıktılardır.

Ayrıca /proc/$PID/status dosyaları da comak-test-gtk-status.txt ve comak-test-qt-status.txt olarak bulunmaktadır.

---------------------------------------------------------------------------------

Bunların yorumlanmış hali ise şu şekilde:

Pardus 2009 Gnome bilgisayarında:

QT için:

ps aux çıktısı:

1226 2.1 0.7 52168 23948 pts/1 S+ 21:46 0:00 python comak-test-qt.py

free çıktısında:

çalışırken 14MB civarı bellek kullanıyor. Kapattıktan sonra ise 8MB fazla gözüküyor.
Yani betik kapatıldığında sadece 6MB sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 8MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı belleğin 7MB'sini boşaltıyor.

GTK için:

ps aux çıktısı:

1207 0.5 0.4 25528 15272 pts/1 S+ 21:39 0:00 python comak-test-gtk.py

free çıktısında:

çalışırken 5MB civarı bellek kullanıyor. Kapattıktan sonra ise 5MB civarı fazla gözüküyor.
Yani betik kapatıldığında neredeyse tamamı bellekte duruyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken üzerine nereyse hiç bellek kullanmıyor.
Kapattıktan sonra ise toplam kullandığı 5MB belleği tamamen boşaltıyor.

Pardus 2011 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1604 1.8 0.7 295232 31116 pts/2 S+ 23:09 0:00 python comak-test-qt.py

free çıktısında:

çalışırken 12MB civarı bellek kullanıyor. Kapattıktan sonra ise 2MB fazla gözüküyor.
Yani betik kapatıldığında sadece 10MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 12MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı belleğin 11MB'sini boşaltıyor.

GTK için:

ps aux çıktısı:

1617 0.2 0.9 332536 36980 pts/2 S+ 23:19 0:00 python comak-test-gtk.py

free çıktısında:

çalışırken 26MB civarı bellek kullanıyor. Kapattıktan sonra ise 13MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında kullandığı belleğin 13MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 14MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı belleğin tamamını boşaltıyor.

Ubuntu bilgisayarında:

QT için:

ps aux çıktısı:

engin 2060 1.1 0.5 361104 32268 pts/1 Sl+ 21:31 0:00 python comak-test-qt.py

free çıktısında:

çalışırken 31MB civarı bellek kullanıyor. Kapattıktan sonra ise 20MB fazla gözüküyor.
Yani betik kapatıldığında sadece 11MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 12MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı belleğin 11MB'sini boşaltıyor.

GTK için:

ps aux çıktısı:

2073 1.3 0.4 323416 24540 pts/1 Sl+ 21:25 0:00 python comak-test-gtk.py

free çıktısında:

çalışırken 13MB civarı bellek kullanıyor. Kapattıktan sonra ise 1MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 12MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 12MB belleğin 10MB ini boşaltıyor.

Pardus 2009 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1620 0.6 1.0 72652 21608 pts/2 S+ 21:27 0:00 python comak-test-qt.py

free çıktısında:

çalışırken 16MB civarı bellek kullanıyor. Kapattıktan sonra ise 11MB fazla gözüküyor.
Yani betik kapatıldığında sadece 5MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 12MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 12MB belleğin 5MB ini boşaltıyor.

GTK için:

ps aux çıktısı:

1448 2.7 0.7 25388 15344 pts/2 S+ 21:37 0:00 python comak-test-gtk.py

free çıktısında:

çalışırken 23MB civarı bellek kullanıyor. Kapattıktan sonra ise 19MB fazla gözüküyor.
Yani betik kapatıldığında sadece 4MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa, çalışırken 9MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 9MB belleğin 3MB ini boşaltıyor.

Bu sonuçların görselleştirilmiş halleri ise şu şekilde:

Bu testin sonuçlarının, bir önceki hello world testine göre biraz daha farklı olduğunu fark ettikten sonra her 2 testi de bir kez daha yaptık. Fakat değişen bir şey yok. Değerler hakikatten buna çok yakın. Bir gariplik var evet, incelemeye devam...

[0] http://www.mesutcankurt.com/dosyalar/comak-testler2.tar.bz2

29 Ekim 2010 Cuma

qt. vs. gtk


Merhabalar,

ÇOMAK projesinde hangi teknolojiyi kullanacağız sorusu bizi bu karşılaştırmaya itti: Qt vs. Gtk+

Bu konuda daha önce karşılaştırma yapanlar da var.[1], [2], [3]

Bizim Karşılaştırmamız:

[0] adresindeki dosyadaki;

2009gnometest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları,
2011kdetest dizininde -> Pardus 2011 yüklü, Python 2.7, Qt 4.7.0, Gtk 2.22.0
bulunan bilgisayardaki test sonuçları,
ubuntutest dizininde -> Ubuntu 10.10 yüklü, Python 2.6.6, Qt 4.7.4, Gtk 2.21
bulunan bilgisayardaki test sonuçları bulunmaktadır.

Ayrıca bir bilgisayarda daha test yaptık. Bu bilgisayarın özellikleri;
İntel Core Duo T2370 @ 1.73 işlemci, 2GB RAM bulunmakta.

2009kdetest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları bulunmaktadır.

Bu dosyalardaki;
fr_idle_qt.txt, fr_idle_gtk.txt dosyaları bilgisayarların boştaykenki free çıktıları,
ps_idle_qt.txt, ps_idle_gtk.txt dosyaları bilgisyarların boştaykenki ps aux çıktıları,

dosyalardaki idle yerine run olanlar betikler çalışıyorkenki çıktılar,
end olanlar ise betikler kapatıldıktan sonraki çıktılar.

Bunların yorumlanmış hali ise şu şekilde:

Pardus 2009 Gnome bilgisayarında:

QT için:

ps aux çıktısı:

17848 0.9 1.5 117004 48208 pts/0 S+ 22:16 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 46MB civarı bellek kullanıyor. Kapattıktan sonra ise 21MB fazla gözüküyor.
Yani betik kapatıldığında sadece 25MB sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 23MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 23MB belleği tamamen boşaltıyor.
GTK için:

ps aux çıktısı:

1264 0.4 0.4 23856 13976 pts/0 S+ 22:09 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 6.5MB civarı bellek kullanıyor. Kapattıktan sonra ise 2MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 5MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 5MB belleği tamamen boşaltıyor.

Pardus 2011 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1783 1.5 1.0 385784 41620 pts/0 S+ 22:20 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 25MB civarı bellek kullanıyor. Kapattıktan sonra ise 10MB fazla gözüküyor.
Yani betik kapatıldığında sadece 15MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleği tamamen boşaltıyor.
GTK için:

ps aux çıktısı:

1631 1.5 0.8 325084 35192 pts/0 S+ 22:25 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 25MB civarı bellek kullanıyor. Kapattıktan sonra ise 1MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleğin 7MB ini boşaltıyor.

Ubuntu bilgisayarında:

QT için:

ps aux çıktısı:

2047 0.5 0.6 476628 41488 pts/0 Sl+ 22:31 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 73MB civarı bellek kullanıyor. Kapattıktan sonra ise 60MB fazla gözüküyor.
Yani betik kapatıldığında sadece 13MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleği tamamen boşaltıyor.

GTK için:

ps aux çıktısı:

2043 0.3 0.3 299932 22056 pts/0 Sl+ 22:27 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 22MB civarı bellek kullanıyor. Kapattıktan sonra ise 4MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 11MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 11MB belleğin 3MB ini boşaltıyor.

Pardus 2009 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1412 1.3 1.2 113148 26560 pts/2 S+ 23:23 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 22MB civarı bellek kullanıyor. Kapattıktan sonra ise 18MB fazla gözüküyor.
Yani betik kapatıldığında sadece 4MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 10MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 10MB belleğin 8MB ini boşaltıyor.

GTK için:

ps aux çıktısı:

1510 2.0 0.6 23560 14036 pts/2 S+ 23:29 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 24MB civarı bellek kullanıyor. Kapattıktan sonra ise 19MB fazla gözüküyor.
Yani betik kapatıldığında
sadece 5MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 9MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 9MB belleğin 3MB ini boşaltıyor.

Bu testin basit bir hello world uygulaması olduğunu göz önünde bulundurursanız bu
sonuçlar daha anlaşılır olacaktır.

Basit bir hello-world dışında, daha fazla görsel ögelerin kullanıldığı testler de yapacağız fakat şimdilik elimizde karşılaştırabileceğimiz bir şeyler oldu.

Bu sonuçların grafiksel karşılaştırmaları ise şu şekilde:




Devamı gelecek...



[0] http://www.mesutcankurt.com/comak/comak_testler.tar.bz2


22 Eylül 2010 Çarşamba

spamassassin ve saz arkadaşları

Uzunca bir süre yazamadım ama gezmek, UPEM, başka işler falan internete de pek nadir girebildim. :)

Neyse, okulun ilk gününde Necdet Hoca ile spamassassin ve saz arkadaşları konusunda el sıkıştık. Artık ben bakıyorum bunlara :)

Spamassassin + 60 Perl bağımlılığı konu olunca insan biraz düşünüyor ama zevkli ya. Öncelikle pspec.xml dosyalarındak Pacakger tagındaki Name ve Email taglarını düzenlemem gerekiyordu. 60+1 paket + bir de 3 tane depoda da uygulamam gerekiyordu. Tek tek yapmak pek de mantıklı değildi. Sonradan da takeover betiğini kullanmak aklıma geldi ama onun yerine daha çok işe (işime) yarayacak bir betik hazırlayayım dedim. Python ile yazdım.

betiğin adı takePisiPackages. Şu an Pardus deposundaki playground'umda[0]. Kullanımı şu şekilde:

takePisiPackages paketlerin_isimleri_bulundugu_dosya yeni_paketci_adi yeni_paketci_eposta

buradaki "paketlerin_isimleri_bulundugu_dosya" ismindeki dosyada paketlerin listesi bulunuyor. Bu dosyada

ffmpeg

şeklinde

ya da

multimedia/video/ffmpeg

ya da

multimedia/video/ffmpeg/pspec.xml

şeklinde olabilir. Yarısı öyle yarısı öbür türlü de olabilir. Eğer sadece ffmpeg var ise bulunduğunuz dizinden itibaren içeri doğru özyinelemeli (recursive) olarak arıyor. Bulduğu yere göre de pspec.xml dosyaları tekrardan düzenleniyor. Arama fonksiyonunu da kendim yazdım.

Eğer isterseniz belirli dosyaları istediğiniz editör ile açabiliyorsunuz. Mesela her açtığınız paketteki actions.py'lere de bakmak isterseniz çalıştırdıktan sonra sorulan soruya 'y' diyorsunuz sonra editör'e vim, dosyaya da actions.py dediğiniz zaman her actions.py de vim ile açılmış oluyor.

Bunlar aslında sadece benim istediğim özellikler, eğer başkalarının da istekleri olursa onları da betiğe eklerim.

Şimdilik betik, sed'leme şeklinde değil de satır satır okuyup ona göre yapıyor. Bunu değiştirip değiştirmeme konusunda kararsız kaldım.

Hepsinin haricinde diğer projelerden:

guestlogin'in isminin değişmesi işi var. Bu işlemi de şöyle yapıyormuşuz. (Serdar'a teşekkürler)

önce sürüm yöneticilerine haber veriyormuşuz. Sonra

eğer paket pardus depolarındaysa paketin ismini devel'de değiştiriyoruz, devel root'undaki distribution.xml dosyasına

yorum satırı içerisinde ( !-- -- tagları) replaced by yeni_paket

ve Package tagı içerisinde eski paket



gibi ekliyoruz. ( burayı düzgün yazamıyorum çünkü blogger bunun öyle yazılmasını istemiyor :)

burada dikkat edilmesi gereken

************************************************************
not gone to binary stable yet, please don't remove this mark
************************************************************


satırlarının altına yazmak. Ondan sonra da devel'i stable ile birleştirmek kalıyor. (stable şu an için sadece Pardus 2009 Deposunda olduğu için sadece 2009 da stable ile birleştirmek var)

python-guestlogin paketinin ismini de pam_guestlogin yapacağım.

Guestlogin'in bir de bug'u mevcut. Aslında bug değil de yeni bir özellik isteği.[1] Onu da yakında tamamlayacağım. Bir de KDM'ye buton eklemek var. (hmm. bitireyim bi ara bunları ya)


[0] https://svn.pardus.org.tr/pardus/playground/mesutcan/takePisiPackages
[1] http://bugs.pardus.org.tr/show_bug.cgi?id=14233

3 Eylül 2010 Cuma

guestlogin ve ptsp_installer projeleri

Öncelikle ptsp_installer projesinden başlayayım.

Hazırlamış olduğum betik zaten çalışıyordu fakat dosya düzenlemelerinde bir kaç iyileştirme yapmam gerekiyordu. (Mesela, gerekli girdi varsa bunun üzerine yazmak gibi)

Bunları tamamladım. Ben henüz bir sorunla karşılaşmadım. Proje aşağıdaki adreste mevcut:

https://svn.pardus.org.tr/uludag/trunk/playground/intern/ptsp_installer

Çalıştırmak için root iken

python ptsp_installer.py

komutunu çalıştırmanız yeterli.

Bunun haricinde de guestlogin projesi artık pardus depolarında. Projenin ismi python-guestlogin oldu.

Şu anki Kurumsal2, Pardus 2009 ve Pardus 2011 test depolarında mevcut.

Kurmak için:

pisi it python-guestlogin

yapmanız yeterli. Bunu kurarken pam_python paketini de bağımlılığı olduğu için kuruyor.

Bunu kurduktan sonra yapmanız gereken değişiklikler:

/etc/pam.d/system-auth dosyasında

auth sufficient pam_unix.so içeren satırın üstüne (genellikle en üstlerde olur):

auth sufficient pam_python.so guestlogin.py

--

session required pam_unix.so içeren satırın üstüne(genellikle en altta olur):

session sufficient pam_python.so guestlogin.py

satırlarını eklemeniz yeterli.

Bu işlemden sonra herhangi yapacağınız bir girişte "/etc/security/guestlogin.conf" dosyasındaki guestname değişkeninde yazanı yazdığınızda parola sormadan giriş yapılacaktır. (Yeni bir misafir kullanıcı oluşturulup)

Şimdilik kdm desteği yok. Bunun için kdebase-workspace'ye bir yama koymamız gerekiyor. Yama burada da bahsettiğim gibi hazır. Bunu depoya da yakında alırız.

Diğer yandan da başka alacağım paketler de olacak. (Projeler ile ilgili değil, Pardus'a katkı olarak)

Şimdilik durum böyle. Yapılması gerekenler şu an kdm'ye buton eklemek. Bunu da halledince buradan yine bilgi vereceğim.