Archive for the ‘Özgür yazılım incelemeleri’ Category

lighttpd ne kadar ‘light’tır?

Saturday, March 14th, 2009

Bir süredir bu sunucu da dahil olmak üzere Debian üzerinde lighttpd kullanmaktayım. lighttpd ismi gibi kendisi de gerçekten light bir web sunucusu. FastCGI uygulaması olarak çalışan PHP ile de, Apache’den kat kat ‘light’ olduğunu söyleyebilirim. Özellikle bellek kullanımı lighttpd’i eşsiz kılıyor. Eğer fazla belleği bulunmayan bir sunucunuz varsa hiç düşünmeden lighttpd kullanın.

lighttpd’nin özelliklerine gelecek olursak boyundan büyük bir çok özelliği bulunmakta. Proxy modülünden, Apache’de sıkça kullanılan rewrite modülüne kadar bir çok modül bulunmakta. Modül listesini ve ayarları bu linkteki sayfada görebilirsiniz.

Bunun yanında, Apache (apache-mpm-prefork) gibi her seferinde yeni bir process yaratmayıp threadler ile çalışıyor. Böylece yine bellekten tasarruf sağlanmış olunuyor.

lighttpd orijinal olarak c10k (bir sunucuda 10000 paralel bağlantıyı idare etmek) problemi üzerine yazılmış bir web sunucusu.

1 MB’dan küçük olan bu devin popularitesi gün geçtikçe artıyor. Netcraft Ocak 2009 raporuna göre, 3 milyon site tarafından kullanılan lighttpd, en çok kullanılan 5. web sunucusu özelliğini taşıyor.

lighttpd vazgeçilmezi FastCGI

Biraz da lighttpd’nin vazgeçilmezi FastCGI‘ye değinmek istiyorum.

Normalde CGI uygulamaları gelen isteğe göre çalışırlar. Örneğin siz bir CGI uygulamasına istek gördüğünüzde, bilgisayar onu yeni bir uygulama olarak başlatır ve sizin isteğiniz işlendikten sonra çıktılar size ulaştırılır. CGI uygulamalarının mantığı budur.

FastCGI ise programın bir kez çalıştırılıp belleğe yüklenmesini sağlıyor. Böylece program her seferinde çalışmak zorunda kalmıyor ve bu da performans ve kaynak kullanımı artışı sağlıyor. FastCGI orijinal olarak C dili ile yazılmış olsa da, bir çok dile implementasyonu bulunmakta. lighttpd FastCGI desteği sayesinde, fastcgi uygulamalarınızı çalıştırabilir.

Özellikle yüksek trafik gerektiren uygulamalar FastCGI ile programlanırsa, performans artışı yaşanmaması içten bile değildir.

Bunun yanında bir FastCGI uygulamasında en önemki faktör bellek kullanımıdır. Eğer FCGI uygulamanızda bellek açıkları (memory leak) var ise, bellek her istekte biraz daha şişecektir. Bu nedenle bir FCGI uygulamasında bellek kontrolü çok önemlidir.

ctorrent: Konsol tabanlı Bittorrent istemcisi

Wednesday, July 23rd, 2008


FreeBSD’ye geçmem üzerine sadece Azureus için bir X masaüstü kurduğumu farkettim. Hal böyle olunca bunun çok gereksiz olduğuna ve çok fazla sistem kaynağı yediğine kanaat getirdim.

FreeBSD portlarında Bittorrent istemcisi ararken, gözüme ctorrent ilişti. Konsoldan çalışan bu uygulama tam aradığım programdı.

ctorrent; C ile yazılmış, diğer abilerine göre çok daha az sistem kaynağı tüketen ve torrent dosyalarını indirmenize yarayan, kaldığı yerden devam edebilme, indirme veya gönderme hız limiti koyabilme, kullanıcı limiti koyabilme özelliklerine sahip komplike bir torrent istemcisi. Benim gibi sunucu üzerinde bittorrent ağını kullanabilmek isteyenler için düşünülmüş ideal bir torrent istemcisi.

Diğerlerinin yapamadığını yapmak: FreeBSD

Friday, July 18th, 2008

Bir haftadır almış olduğum Edimax 7128G Wireless kartını AP (Access Point) olarak çalıştırmaya uğraşıyorum. Öğrendim ki, bu kartın ne Linux sürücüsü ne de Windows sürücüsü AP olarak çalıştırmayı desteklemiyormuş. RT61 özgür sürücü projesinin sayfasından edindiğim bilgiye göre, wireless kartım FreeBSD altında AP olarak çalışabiliyormuş. İşte FreeBSD ile tanışma fırsatım bu şekilde oldu.

Daha önce çok kısa bir süre denemiştim FreeBSD’yi. Bu kısa sürelik dilimde, kendisi adına bir şey öğrenmek gibi bir çaba sarfetmedim. Şimdi ise bir sunucu için vazgeçilmez olarak kullanabileceğim bir işletim sistemi olarak görüyorum. Çok katı olması kendini cezbeden özelliği.

FreeBSD yüklenirken sadece core olarak yükleniyor. Hiç bir paket kurulmuyor. Sadece Linux uyumluluğu isterseniz, Linux uyumluluğu paketi kuruluyor. Daha sonra FreeBSD protlarından istediğiniz yazılımı kurabiliyorsunuz.

FreeBSD’nin portları (paketler) ise baya esnek. İsterseniz hazır derlenmiş binary paketleri kurabiliyorsunuz, isterseniz paket CVS deposunu çekip, oradan istediğiniz paketi kurma talimatını verebiliyorsunuz. FreeBSD size paketi indiriyor ve gerekli yamaları uygulayıp kendine uygun halde derliyor. Tamamen Make tabanlı paket sistemi, istediğiniz ayarları da yapabilmenize olanak sağlıyor. Sistem aynı zamanda, istediğiniz zaman sonradan yüklediğiniz tüm paketleri silmenize izin veriyor.

FreeBSD network bazında da kendi kernelini kullanıyor. Tamamen kendisi için geliştirilmiş olan sshd, ftpd, natd gibi araçları kullanıyor. Network yapılandırması bir router için Linux’un iptables’inden çok daha kolay. Gateway özelliğini açmalı ve Nat’ı aktifleştirmeniz bir router yapmanız için yeterli.

Dökümantasyon konusunda ise yazılmış olan handbook, bilmek istediklerinizi fazlasıyla karşılıyor. Handbook FreeBSD’yi ilk defa kullanacaklardan ustalara hitap edecek seviyede. Bu kadar açık dil ile yazılmış bir tek PHP‘nin manuelini görmüştüm.

İnternet üzerinde biraz FreeBSD’yi araştırdığınızda ise Netcraft’ın uptime’ı en uzun süre olan makineler listesinde bir çok FreeBSD makina ile karşılaşıyorsunuz. Eğer linke tıklarsanız gerçekten bu sürenin hayli uzun olduğunu görebilirsiniz. 1735 gün (4 sene 10 ay) açık olan makineler söz konusu.

Programlama araçları olarak FreeBSD üzerinde, kendine göre modifiye edilmiş gcc mevcut. Kütüphaneler olarak glibc yerine kendi apileri var. İsterseniz glic’yi paket olarak kurabiliyorsunuz.

Gördüğüm bazı eksiklere değinmek gerekirse, malesef FreeBSD terminalinde UTF-8 karakter seti kullanmak mümkün değil. Terminal en fazla 255 karaktere kadar destekliyor. Bunun yanında herhangi bir sanal makina kurmak ta mümkün değil. Hostunuzda sanal makina kullanmak isterseniz sorun yaratabilir.

Uzun lafın kısası, gerek üretici tarafından, gerekse kullanıcı topluluğu tarafından AP modunda desteklenmeyen Wireless kartım FreeBSD sayesinde çok iyi bir şekilde hizmet veriyor. Bunun yanında katı Unix benzeri bir sistemi keşfetmek çok zevk verici.

Windows altında GCC

Saturday, July 12th, 2008

GNU Compiler Collection (GCC) bazı programlama dillerine ait derleyicilerin oluştuduğu bir settir. Bunlar: C, C++, Objective-C, Fortran, Java ve Ada dilleri. GCC tek başına derleyicilerden oluşmaz. Compiler, Assemler, Linker gibi yazılan programın makine koduna çevrilmesini sağlayan araçların yanında; libc, libc++, libgcj vb. gibi kütüphaneler ile gelmektedir.

Unix benzeri işletim sistemleri için geliştirilmiş olan GCC’yi MinGW aracılığı ile Window işletim sisteminde çalıştırmanız da mümkündür. MinGW (Minimalis Gnu for Windows) GCC’nin Windows için native portudur. MinGW geliştiricilerin, Window işletim sistemi altında native uygulamalar geliştirebilmelerini sağlar.

Popüler C/C++ yazılım geliştirme ortamlarından olan Dev-C++ MinGW derleyicisini kullanmaktadır.

GCC’yi edinmek için MinGW’nin Sourceforge üzerinde yer alan download sayfasına gidebilirsiniz. GCC’nin yanısıra bir çok GNU uygulamasının Windows portunu bulabileceğiniz bu adreste, GCC’yi tam anlamıyla kullanmanızı sağlayacak uygulamaları anlatayım.

GNU Binutils: C/C++ uygulamalı geliştirebilmek için gereklidir. İçerisinde linker (ld) ve assemler (ar) gibi araçları barındırır.

GCC Paketleri: GCC kendi alanında alt paketlere ayrılmış durumda. Eğer sadece C uygulamalrı geliştirmek istiyorsanız gcc-core olarak adlandırılan paketi indirmeniz yeterli olacaktır. C++ uygulamaları geliştirmek istiyorsanız; gcc-g++ paketini, java uygulamaları geliştirmek istiyorsanız gcc-java paketini indirmelisiniz. Diğer diller için mevcut paketleride görebilirsiniz.

GNU Make: Make programlarınızı derlemenizde yardımcı olacak bir araçtır. Her seferinde aynı derleme komutunu yazmak yerine bir Make scripti oluşturup, make’in bu işlemi yapmasını sağlayabilirsiniz.

MinGW API for MS-Windows: MinGW için Win32 apisi. Win32 apisi için gerekli header dosyalarını içerir. Bunlar yardımı ile Win32 API tabanlı programlar oluşturabilirsiniz.

MinGW Runtime: GCC’nin çalışabilmesi için gerekli bir pakettir. C header dosyalarını ve kütüphane linklerini kapsamaktadır.

Yukarıda anlattığım paketlerin son sürümlerini edinip, hepsini aynı klasöre çıkararak GCC’yi kullanabilirsiniz. Ayrıca çıkardığınız klasörü Windows’un PATH değerine de girerseniz, command altında istediğiniz yerde GCC’yi çağırabilirsiniz.

Firefox 3 Yayımlandı

Wednesday, June 18th, 2008


Firefox 3 Türkiye saati ile 17 Haziran 2008 20:00′da yayımlandı. Firefox’ın yayımlanması ile, Firefox 3 bekleyenler bu başarılı web tarayıcısını indirmeye başladılar. Firefox 3 çıkışı ile 24 saatte en çok indirilen yazılım olma rekorunu kırmayı hedefliyor. Dün gece itibariyle mozilla sunucuları yanıt veremez durumdaydı. Bugün sabah kalkıp baktığımda durumun değişmediğini farkettim. Fakat Spreadfirefox‘da bir download count görebilirsiniz.

Bana gelince, Mozilla Firefox’un amd64 sürümünü dağıtmadığı için kaynak kodlarından indirdim. Fakat Debian içerisindeki GTK 2.8 olduğundan ve Firefox için minimum 2.10 gerekli olduğundan derleyemedim. İstediğim Ubuntu gelirse kullanabileceğimi tahmin ediyorum.

Özgür yazılım farkı

Tuesday, September 4th, 2007

Kullandığım Debian işletim sisteminde cacademo isimli programın Matrix efekti göze çok çekici geliyor. Özelikle büyük bir ekrana sahipseniz ve uzaktan bakıyorsanız hem ekran koruyucusu olaran hem de görsellik açısından mükemmel. Fakat cacademo uygulaması 4 ayrı efek sergilemekte. Bense kullandığım uygulamanın saece Matrix efeğini istiyordum. İşte burada devreye Debian ve Özgür Yazılım giriyor. Hemen `apt-get source libcaca` (cacademo caca-utils paketi icinde, o da libcaca0 içinde yer alıyor) ile ilgili yazılımın kaynak kodlarını indirdim. O kadar C kastık bir işe yarasın yazılımı açtım. C kasma boşa gitmemiş karışık kodlar bile yabancı gelmiyor insana bir seviyeden sonra. Yazılımda ilgili yerleri kendi isteğim doğrultusunda değiştim. Ve iş tekrar paketlemeye geldi. Debian’da paket oluşurken önce derlenir ve sonra make install aşamasını dpkg otomatikmen paketi oluşturarak yapar. Fakat *nix bir sistemde yazılımı derleyebilmeniz için, yazılıma bağımlı kaynak kodlarına da ihtiyacınız var. Bunları yüklemek Debian gibi gelişmiş paket yönetimine sahip datığımlarda çok kolay. Debian’da sadece `apt-get build-dep libcaca` diyoruz ve libcaca nın derlenmesi için gerekli tüm paketler kuruluyor. Artık paketimizi oluşturabiliriz.

Paketimizi oluştururken debian klasörü altında gerekli bilgileri ve changelog dosyasına neleri değiştirdiğimizi yazıyoruz ve `dpkg-buildpackage -rfakeroot` diyerek paketimizi oluşturuyoruz.

Burada anlatmak istediğim olay özgür yazılım ın programcılar için ne kadar esnek ve geliştirilebilir olduğu. İnsanlar sizin yaptığı programları alıp, istedikleri gibi geliştirerek kendi amaçları için kullanabilirler. Buda insanlık nanıma daha elverişli bir katkı sağlayacaktır. Bugün caca özgür bir yazılım olmasa idi, ne istediğim matrix efeğini bilgisayarımda istediğim gibi kullanabilir, ne de yaptığım paketi sizle paylaşabilirdim.

Cacademo editlenmiş sade matrix efekli uygulamasından bir görüntü:

Paketi http://www.0nur.net/paketlerim/libcaca0/ adresinden indirebilirsiniz.