8 Nisan 2013

Linux'ta RAM'i disk olarak kullanmak

Diskiniz "solid state" değilse, özellikle küçük ve çok sayıda yazma işlemi yaptığınızda bilgisayarı bir süre kullanamaz hale gelirsiniz. Örneğin ben üzerinde çalıştığım projelerde SQLite veritabanı kullanırken bu tür işlemleri çok yapıyorum ve hem diskin ömründen hem de zamandan kaybediyordum.

GB'larca kullanmadığım RAM'im varsa SSD diskin faydalarından neden geri kalayım ki diye düşünerek Google'da biraz araştırma sonucunda basit bir yöntem buldum. Ağaşıdaki komutları sırayla vererek oluşturulan bir disk_on_ram (ismini istediğiniz gibi belirleyebilirsiniz) dizini, RAM'inizde belirlediğiniz miktarda alanı disk olarak kullanabilmenize olanak sağlıyor. Yani sqlite dosyasını buraya atıp üzerindeki işlemleri eskisine göre çok daha hızlı yaptıktan sonra işlenmiş halini alabiliyorum. Benzer diske sırasız yazma işlemi gerektiğinde yine bu alanı kullanıyorum.


sudo sysctl vm.swappiness=0
mkdir disk_on_ram
mount -t tmpfs -o size=256M tmpfs disk_on_ram

İlk komutun ne yaptığından kısaca bahsedeyim. vm.swappiness, swap alanınının yüzde olarak ne sıklıkla kullanılacağını belirleyen bir sistem değişkenidir. Bunun standart değeri çoğu dağıtımda 60'tır. Bunun değeri 1 bile olsa tmpfs ile ramdisk yapmak mümkün olmuyor. Bu yüzden değeri 0'a indirdim. Eğer RAM'inizi tamamen kullanıyorsanız ve swap alanına ihtiyacınız oluyorsa bunu yapmanızı önermem, bunu yaptığım bilgisayarda 8GB RAM var ve günlük olarak en fazla 4GB kadarını kullanıyorum.

Not: Bu yöntemi yaklaşık altı aydır kullanıyorum. Nedense bugün yazmak istedim.

26 Mayıs 2011

Linux Konsolunda Bluetooth ile Cep Telefonunu Modem Olarak Kullanmak

Pardus 2011'de cep telefonuna Bluetooth üzerinden bağlanıp kısa mesaj göndermek, İnternet'e bağlanmak gibi işlemleri sadece konsol kullanarak yapmak istiyordum. Bugün biraz araştırma ve uğraşma sonucunda bunları başardım.

Aşağıdaki komutların tamamını root yetkisiyle vermek gerekiyor. Önce gerekli araçları kuralım:
pisi it python-gtk bluez -y
Bağlantı kurmak için kullanacağımız Bluetooth arayüzünün ismini öğrenelim:
hciconfig
Bu komut şöyle bir liste verecektir:
hci0: Type: BR/EDR Bus: USB
BD Address: 00:24:D2:C8:F4:A7 ACL MTU: 1021:6 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN

RX bytes:43710 acl:224 sco:0 events:815 errors:0
TX bytes:8544 acl:233 sco:0 commands:176 errors:0
Buradan bilgisayarımızda bir tane Bluetooth arayüzünün bulunduğunu ve isminin hci0 olduğunu anlıyoruz. Bluetooth arayüzünü görünür ve bağlanılabilir duruma geçirmek için şu komutu veriyoruz:
hciconfig hci0 piscan
 Şimdi şu komutu verip telefonun bağlanmasını bekler konuma geçiyoruz:
simple-agent
Telefondan Bluetooth aygıtlarını aratıp bilgisayarımızı buluyoruz ve eşleştirme için seçiyoruz. Seçtikten sonra 0000 gibi kendi seçtiğimiz herhangi bir pin kodu giriyoruz. Telefona pin kodu girdikten sonra simple-agent bunu soracaktır. Ona da aynı pini giriyoruz. Telefon eşleşmeyi onaylayacaktır. İsterseniz bu adımdan sonra telefonun ayarlarından bilgisayara tam yetki vererek iki de bir bağlantıyı onaylamak derdinden kurtulabilirsiniz. Artık simple-agent'tan çıkmak için ctrl+c'ye basabiliriz. Şimdi modem arayüzünün nerede olduğunu öğrenelim:
hcitool scan
Bu komut aşağıdaki gibi bir liste verecektir:

Scanning ...
        00:1C:D4:84:BD:77       jnmbk-n73
Bu listeden bağlanacağımız telefonun MAC adresini (00:1C:D4:84:BD:77) kullanarak bunun hangi kanalda modem hizmeti verdiğini öğreniyoruz:
sdptool browse 00:1C:D4:84:BD:77|grep Dial -C5
Bu komut aşağıdaki gibi bir çıktı verecektir:
Service Name: Dial-Up Networking
Service RecHandle: 0x1000b
Service Class ID List:
  "Dialup Networking" (0x1103)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2
Language Base Attr List:
  code_ISO639: 0x454e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100
Bu çıktıda bizi ilgilendiren tek şey Channel: 2 olan satırdır. Buradan modem servisinin 2 numaralı kanalda olduğunu öğreniyoruz. Öğrendiğimiz bilgileri kullanarak /etc/bluetooth/rfcomm.conf dosyasını aşağıdaki gibi düzenliyoruz:

rfcomm0 {
    bind yes;
    device 00:1C:D4:84:BD:77;
    channel 2;
    comment "jnmbk-N73";
}
Dosyayı kaydettikten sonra şu komutla modem aygıtını oluşturuyoruz:
rfcomm bind rfcomm0 
Artık /dev/rfcomm0 aygıtını dial-up modem gibi kullanabiliriz. Telefonunuz bilgisayarın Bluetooth alanı (çoğu zaman 10 metre) içinde bulunduğu sürece bağlantınız kopmayacaktır. Telefon uzaklaşıp tekrar yakınlaşırsa da modem aygıtı ek işlem yapmadan tekrar çalışır hale gelecektir. Son komutu /etc/conf.d/local.start dosyasına ekleyerek açılışta modem aygıtının otomatik oluşturulmasını sağlayabilirsiniz.

25 Aralık 2010

Pardus'ta MSP430 LaunchPad Kullanımı


MSP430 LaunchPad, şuradan da görebileceğiniz gibi öğrenme amaçlı kullanılan çok düşük fiyatlı bir mikro denetleyicidir. Geçen hafta Gerçek Zamanlı Sistemler dersinde tüm sınıfa bunlardan (msp-exp430g2) dağıtıldı ve bunun üzerinde birkaç uygulama yapmamız istendi. Bu cihazlar ayrıca mcu-turkey adlı yarışmaya katılan öğrencilere de dağıtılıyor. Geliştirmeyi Pardus'la yapmak isteyenlere bir başlangıç olabilmesi amacıyla bu yazıyı yazıyorum.

Derste gösterilen resmi geliştirme ortamı sadece Windows üzerinde çalışıyor. Sitesindeki Linux Support başlığı altında ise birkaç blog linki var. Bu bağlantıdaki blogda Ubuntu için alternatif bir geliştirme ortamının nasıl kurulup çalıştırılacağı anlatılıyor.

Windows'taki geliştirme ortamı 1GB boyutunda ve ücretsiz sürümünde kod uzunluğu sınırı bulunuyor. Linux'taki geliştirme ortamında ise sınırlama yok ve dosya boyutu birkaç MB büyüklüğünde... Yazının geri kalanında bunu Pardus 2011 üzerinde nasıl kurduğumu anlatacağım. Diğer Pardus sürümlerinde de aynen çalışacağını düşünüyorum.

Kaynak koddan derleyerek kurmamız gereken iki uygulama var: Derleyici olan mspgcc4 ve mspgcc4 ile derlenen kodu denetleyiciye yüklemeye yarayan mspdebug. Bunları derleyebilmek için pisi deposundan system.devel bileşenini ve git'i kurmalıyız. Ayrıca cihazdan okuma yapabilmek için minicom kurmamız da faydalı olacaktır. Şu komut bunları sırayla kuracaktır:

sudo pisi it -c system.devel && sudo pisi it git minicom

Pisi'nin işi bitince mspgcc4'ü kurmak için şu komutları veriyoruz:

git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4
cd mspgcc4
sudo sh buildgcc.sh

Son komutu verince renkli bir ekranda birkaç soru sorulacak. Tüm soruları Enter ile geçebilirsiniz fakat son soruda "Do you want to start build right now?" diyor. Bunun öntanımlı yanıtı 'Hayır' olduğu için Enter'a basmadan önce Evet'in üzerine gelmeyi unutmayın. Derleme işlemi bir saat kadar sürebilir.

mspdebug'u indirip kurmak için şu komutları veriyoruz:
wget -O mspdebug.tar.gz http://sourceforge.net/projects/mspdebug/files/mspdebug-0.13.tar.gz/download
tar -zxvf mspdebug.tar.gz
cd mspdebug
make
sudo make install
Bunun derlenmesi birkaç saniye sürecektir.

Sonunda geliştirme ortamımız hazır. Şimdi bir program derleyip cihaz üzerinde çalıştıralım. Örnek kod olarak birinci ödevimiz için hazırladığım kodu buradan indirebilirsiniz. Kodun yaptığı işi açıklamak gerekirse:

Cihazla birlikte kurulu gelen programın yaptığı işi aynen yapıyor (yani sıcaklık ölçümü). Buna ek olarak düğmeye basınca bilgisayara proje ekibinin isimlerini gönderiyor. Ölçüm değerlerini ise değişiklik olduğu zaman bilgisayara gönderiyor. Ve bunları onaltılık sistemde derece cinsinden gönderiyor.

Kodu main.c adıyla kaydedip şu komutla derleyebilirsiniz.

/opt/msp430-gcc-4.4.5/bin/msp430-gcc -Os -mmcu=msp430x2231 -o main.elf main.c

Oluşan main.elf dosyasını mspdebug ile bilgisayarımızın USB çıkışına bağlı LaunchPad'e yükleyelim.

mspdebug rf2500 "load main.elf"

Program yüklendiği anda cihazın ledleri yanıp sönmeye başlayacaktır. Bu durumda iken minicom ile bağlantı kuralım.

Minicom ile ilk defa bağlantı kuracaksanız şu komutla minicom'u ayar modunda çalıştırın:

sudo minicom -s

Gelen ekranda Serial port setup'ı seçin. A'ya basıp aygıt adını /dev/ttyACM0 olarak değiştirin. F'ye basıp Hardware flow control'u kapatın. E'ye basıp gelen ekranda A ve B tuşlarını kullanarak Baud Rate ayarını 2400'e getirin. Sona ana menüye dönüp Save setup as dfl'yi seçin.

Artık minicom ayarları da tamam olduğuna göre cihazı usb portuna takıp birkaç saniye bekleyelim ve sadece minicom komutunu vererek bağlantı kuralım. Üzerinde P1.3 yazan düğmeye bastığınızda ekranda sıcaklık değerlerini görmeye başlayacaksınız. Cihazı elleyip ısıtarak değişimi görebilirsiniz.

Eğer minicom ile ilk denemede bağlantı kuramıyorsanız cihazı çıkarıp yeniden takmayı deneyin. Aslında minicom'u her kapattığınızda bir daha okuma yapabilmek için cihazı çıkarıp takmak gerekiyor. Şimdilik çözemedeğim tek sorun bu.

15 Nisan 2010

Star Wars ve Özgür Yazılım

Geçen cumartesi CNBC-E'de Madagaskar Penguenleri ve ardından Star Wars'ın çizgi filmini görünce Star Wars serisini tekrar izlemeye karar verdim. İzlemişken bir de Quake3 motoruyla yazılmış Jedi Academy oyununu oynadım. Bunun sonucunda Star Wars ile özgür yazılım arasında bazı bağlar olduğunu keşfettim. Ee, keşfetmişken paylaşmamak olmaz :)


Serideki bazı sözcüklerin yazılım dünyasındaki karşılıkları şöyle düşünülebilir:
force: source
dark side of the force: non-free software

force kullanıcılarının temel güçleri git komutlarına çok benziyor:
push: git push
pull: git pull
speed: git'in hızı
sense: git show branch
jump: git branch

Jedi güçleri GPL'i anlatıyor:
heal: yazılımı güçlendirir
absorb: lisansın kötü yönde değiştirilmesini engeller
protect: kullanıcıyı korur
mind trick: lisansın kendisi güzel bir akıl oyunudur

Dark side güçleri de EULA'yı anlatıyor:
drain: kullanıcılardan güç toplar
grip: kullanıcının elini kolunu bağlama
thunder: istediğinde kullanıcıyı çarpar
dark rage: patent davaları

9 Ağustos 2009

Compaq Mini 110 ve Linux ile 3G bağlantısı

İki gün önce elime Turkcell'in kampanyayla dağıttığı Compaq Mini 110c-1010ET lerden geçti. Klavyesi ve sabit diski yeterince büyük ve dahili 3G modemi olan bu ufaklık çok hoşuma gitmişti.

İşin ucunda her yerden internete girebilmek olduğu için kardeşimin bilgisayarları değişelim teklifine hayır diyemedim. Bilgisayarımı hemen bıraktıktan sonra ilk iş olarak elimin altında duran Ubuntu Netbook Remix kurulu USB belleği Mini'ye takıp başladım. Ses çıkmaması ve 3G modemin ortalıkta görünmemesi dışında bir sorunu yoktu. Bundaki Gparted'i kullanarak yanlışlıkla(!) Windows bölümünü ortadan kaldırdıktan sonra Pardus ve Ubuntu'yu yan yana kurmayı düşünüp ona göre yeniden bölümlendirdim.

Ubuntu'yu kurduktan sonra Pardus 2009 kurulumunda ilk kez bu bilgisayarda bir sorunla karşılaştım. /dev içeriği dolduruluyor yazan yerde bilgisayar kilitleniyordu. Açılışta pek çok kernel parametresini denedikten sonra bir sonuca ulaşamayınca başka kurulum yöntemleri düşünmeye başladım. Diğer bilgisayarı kullanarak Pardus'u harici bir diske kurdum ve bunu Ubuntu'yla Mini'de hazırladığım Pardus bölümüne kopyalayarak kurulumu tamamlamış oldum.

/* Aşağıda Compaq Mini'ye Pardus kurulumu ile ilgili yazanları evde denememenizi öneririm. Henüz mutlu sona ulaşamadım. Sadece 3G modemle ilgileniyorsanız ikinci yorumdan itibaren okumaya devam edin. */

Kurduktan sonra tahmin ettiğim gibi yine aynı yere gelince kilitlenmeye devam ediyordu. Hemen Pardus'un açılışından sorumlu olan /sbin/mudur.py'yi inceleyip nerede kilitlendiğini bulmak için aralara ne yapıldığını anlatan çeşitli iletiler ekledim. Udev aygıtları tarayıp /dev dizinini doldurmaya başlıyor, bunun bitmesi beklenirken kilitleniyordu. /etc/udev/udev.conf'ta debug parametresini kullanarak daha ayrıntılı çıktı alabildim. Hangi aygıtın kilitlenmeye sebep olduğunu düşünürken sıkıldım ve başka fikirler denemeye karar verdim.

Önce Pardus'u Ubuntu kerneliyle (2.6.28) açmaya çalışırsam ne olur dedim ve kerneli kopyalayıp grub'a ekleyerek denedim. Tamam açılıyordu ama sürücüler olmadığı için doğal olarak konsolda kalıyordu. Sürücüleri de kopyalamaya üşendiğim için hemen başka bir şey denedim ve hazır Pardus açılmışken pisi'yle depodaki son kerneli kurayım dedim. Bu kez de dbus düzgün çalışmadığı için çomar yapılandırması başarısız oluyordu. Kernele ait çomar betiğini inceleyip çomarın işini (mkinitramfs çalıştırmak ve grub'a eklemek) elle yaparak bunu da atlattıktan sonra yeni Pardus kerneliyle başlattım ve dbusun yine çalışmadığını görünce Pardus kurulumuna biraz ara verip 3G modemle uğraşmaya karar verdim.

/* Asıl konuya dönüyoruz, okumaya devam. */

Ubuntu Jaunty Netbook Remix, 2.6.28 kerneliyle geliyordu ve Mini'deki entegre Hp un2400 Mobile Broadband modem için gerekli olan qcserial modülü 2.6.30 kerneli istiyordu. Aşağıdakileri indirip sudo dpkg -i komutuyla kurduktan sonra artık 2.6.30 kernelim de olmuştu:

linux-headers-2.6.30-020630-generic_2.6.30-020630_i386.deb
linux-headers-2.6.30-020630_2.6.30-020630_all.deb
linux-image-2.6.30-020630-generic_2.6.30-020630_i386.deb

Yeni kernelin en sevdiğim yanı Intel ekran kartını hemen hemen %50 oranında daha performanslı çalıştırıyor olmasıydı. Kötü olan yanı ise Broadcom kablosuz kartın artık çalışmamasıydı. Sahipli sürücüsü olan bu kartın 2.6.30 için sürücüsü yoktu. Durumu kurtarmak için HP'nin sitesinden ilgili Windows XP sürücüsünü indirdim ve Wine'yle çalıştırıp açılmasını sağladıktan sonra ndiswrapper ile bu sürücüyü yükledim. Sürücüyü b43 ve ssb modülleri sahiplendiği için önce rmmod ile bunları kaldırıp modprobe ndiswrapper diyerek kablosuzun çalışmasını sağlayabildim.

Bu kadar uğraştıktan sonra yine sıkılmaya başladım ve müzik dinleyebilmek için ses sorunuyla ilgilenmeye karar verdim. Ubuntu, alsa'nın biraz eski bir sürümünü kullanıyordu ve bu sürüm Mini'deki ses kartının kullandığı yepyeni kodek için destek vermiyordu. Hazır kerneli yenilemişken alsa sürücülerinin de son halini indirip sadece hda-intel sürücüsünü derledim ve kurduğum gibi ses gelmeye başladı.

Müzik de tamam olunca sıra 3G Modeme geldi. Kernel güncel olmasına rağmen lsusb çıktısında modemle ilgili hiçbir şey görünmüyordu. Bu konuda araştırırken bir forumda hp-wmi sürücüsünün adının geçtiğini gördüm. Bu sürücü HP bilgisayarlardaki kısayol düğmelerinin çalışmasını sağlıyordu. Sürücüyü modprobe ile etkinleştirip kablosuz ağ düğmesine iki kez basınca lsusb çıktısında modemi görmek heyecan vericiydi.

Çeşitli kaynaklarda yazdığına göre modem orada göründüğü haliyle bir işe yaramıyordu. Quallcomm'un ürettiği bu modemler gobi_loader denen bir araçla servis sağlayıcısının verdiği firmware'in modeme yüklenmesi ile çalışır hale geliyordu. Sonrasında da qcserial adlı bir modülün yüklenmesi gerekliydi. Hemen bu ikisini indirip derledim. Modemin firmware'ini almak bunlardan uzun sürdü çünkü HP'nin sitesindeki dosya tam 130MB büyüklüğündeydi. İçinde tüm servis sağlayıcılar için birer firmware dosyası bulunuyordu. Bunlar 0'dan 10'a kadar isimlendirilmiş dizinlerin içinde ikişer dosya halinde duruyordu. Bizim Turkcell olsa olsa sonuncu olmuştur diyerek 10 numaralı dizindekilerle şansımı denemeye karar verdim. Bunları /lib/firmware/gobi/ altına kopyaladım ve kablosuz ağ düğmesini tekrar aç-kapa yapıp biraz bekledikten sonra modem çalışmaya başladı.


Modem çalışmasına rağmen yine de bağlanamıyordu. Pardus-kullanıcıları e-posta listesinde Turkcell Vınn Modem ile bağlanabildiğini açıklayan Akın'a bir e-posta atarak fikrini aldım. SIM kartı bir telefona takıp pin kodu korumasını kaldırdım ve Apn yerine mgb yazdım. Sonra bağlan dedim ve çıkan küçük parola pencerelerini hiçbir şey yazmadan Tamam'a tıklayarak kapattım. Son pencereyi de tamam diyerek kapattığım anda bağlantı kurulmuştu.

Sırada Pardus 2009'daki sorunu bulup kurulumu tamamlamak var...

Not: Yazıdaki derleme ve kurulumlarla ilgili bağlantıları ve komutları zaman bulduğumda ekleyeceğim. Şimdilik bu haliyle yayına alıp aynı durumla uğraşan kişilerin zaman kazanmasını ve bunun mümkün olduğunu görmelerini istedim.

18 Haziran 2009

KDE 4.2 ve GPF - 2

Önceki yazımda KDE4'ün web çizgi romanı okuyucusundan ve GPF ile tanışmamdan bahsetmiştim. Bir süre çizgi romanı KDE4'ün plasmoidini kullanarak okuduktan sonra plasmoidin 31 Mart 2000'den sonrasını gösteremediği gerçeğiyle karşılaştım. Çünkü 1 Nisan 2000 tarihinde çizgi romanın kendisi yerine şaka amaçlı bir sayfa konmuştu ve plasmoid resmi indiremediği için ilerleyemiyordu.

Bunun ardından çizgi romanı bir süreliğine sitesinden okumaya devam ettim. Bu kez de sayfanın yenilenmesi uzun sürdüğü için parçalar arasında çok bekliyordum. En sonunda bekleme sorunumu ve belli bir tarihten sonrasını indirememe sorununu çözecek, aynı zamanda sevdiğim bölümleri kaydedebileceğim bir PyQt uygulaması yazmaya karar verdim.


Uygulamayı yazmam yaklaşık 30 dakika sürdü. İki parçadan oluşuyor. İlk parça olan indirici sadece siteye bağlanıp çizgi roman parçalarını kaldığım yerden şu anki tarihe kadar teker teker indirmeye çalışıyor ve bunları belirlediğim bir dizine tarihleriyle kaydediyor. İkinci parça olan okuyucu ise tıpkı KDE4 plasmoidinde olduğu gibi bu dizindeki resimleri sırayla gösteriyor. Artık sadece sırayla değil istediğim numaralı parçaya atlayarak da okuyabiliyor, sevdiğim parçaları ve son okuduğum parçayı kaydedebiliyordum.

Bir süre sonra plasmoidde olup da uygulamamda eksik olan bir özelliği fark ettim. KDE4 plasmoidleri istenilen açıyla çevrilebiliyorlar. Plasmoidi 90 derece çevirdiğim zaman yatarken de boynumu kırmadan okuyabiliyordum. Ekran kartımın sürücüsü desteklemediği için görüntüyü yan çevirmem de mümkün değildi. Bu yüzden uygulamama resmi gösterirken verilen açıyı kullanmasını sağlayan yeni bir özellik ekledim. Başta zor olacağını düşünmüştüm ama Qt sayesinde şu üç satır işimi gördü:
transform = QtGui.QTransform()
transform.rotate(90)
pixmap = pixmap.transformed(transform)
Diğer insanların da faydalanabilmesi için yazdığım uygulamanın kodlarını GPLv3 ile lisanslayıp sudrap SVN deposuna koydum. Bir türlü zaman ayırıp kurulabilecek hatasız bir uygulama haline getiremediğim için pisi paketini yapmaya da uğraşmadım. İlgililer kodları buradan inceleyip indirebilir, hatta değiştirip tekrar dağıtabilirler.

GPF'i sonuna kadar okuduktan sonra kendi çizgi romanımı yapma girişimlerine başladım. Aslında bu ayrı bir blog girdisinin konusu olabilir. Ama hazır başlamışken devam edeyim. Girişimlerim birkaç hafta sürdü. Sonra plasmoide yeni eklenen bir web çizgi romanı daha ilgimi çekti. Adı Geek Hero Comic olan bu çizgi romanın diğerlerinden farkı özgür olmasıydı. Tüm parçalar SVG olarak Inkscape'te çiziliyor ve Creative Commons lisansıyla yayınlanıyor. Bir yazılım şirketinde çalışan özgür yazılımcının yaşadıklarını konu alması ise ilgimi çekmek için yeterliydi.

Geek Hero Comic'in bu parçasında hacker amblemini (tabutun üzerinde) görünce nereden geldiğini merak ettim. Wikipedia'da bunun anlamını öğrendim ve başka bir simgenin varlığından haberdar oldum. Hackerlığın ikinci simgesi olan Dust Puppy, User Friendly isimli başka bir çizgi romanın karakteriydi. Tabi hemen bu çizgi romanı da okumaya başladım. User Friendly, GPF'ten daha eski olduğu için okunacak daha fazla parçası vardı. Hemen daha önce yaptığım uygulama için bir de User Friendly indirme betiği hazırladım. Bununla 1997'den günümüze kadar olan bütün parçaları indirip okumaya başladım. User Friendly'i okudukça GPF'in köklerinin nereden geldiğini anlamaya başladım. Bunda da GPF'te olduğu gibi fantastik yan karakterler vardı. İlk fantastik karakter sunucuda biriken tozlardan meydana gelen Dust Puppy, ikincisiyse bunun yazdığı Erwin adlı yapay zeka olunca okumak için uzun bir çizgi roman daha bulduğum için sevindim...

Geçen zamanda çizgi romanlar dışında pek çok şeyle de uğraştım. Bunları başka bir gün, başka bir blog girdisinde anlatmayı umuyorum. Görüşmek üzere.

11 Ocak 2009

KDE 4.2 ve GPF

Artık alışmak için yaklaşık bir aydır KDE 4.2 Beta kullanıyorum. Geçen gün KDE4'ün çizgi roman programcığı sayesinde Dilbert dışında çizgi romanların da olduğunu keşfettim ve GPF (General Protection Fault) ilgimi çekmeye başladı. Çizgi romanın 1998'den beri var olması bana okuyacak pek çok şey bırakmış... Neyse, ben karakterlerden biraz bahsedeyim belki başkalarının da ilgisini çeker...


Dwayne Duncan


GPF Software'in karizmatik ve başarılı patronudur. Yönetimle ilgilendiği için uzun süre yazılımdan uzak kalır. Bir ara paslanmamak için çalışanlara yardım etmek ister fakat Cobol bilgisiyle Java'cı arkadaşlarına pek yardımcı olamaz. İyi niyetlidir, çalışanlarının sürekli bilgisayar başında durmasından endişelenerek onları rehabilitasyona gönderir.


Jason Barker (AKA "Fooker")


Fooker'ı tanımlamak için nerd'in önde gideni demek az kalır. Yeni çalışanların bilgisayarlarına Doom ve Quake kurarak iş için tüm ihtiyacının bunlar olduğunu söyler. Patronuna bir hafta süreceğini söylediği işi beş dakikada halleder ve geri kalan zamanda bu kurduklarıyla ilgilenir. Bir apartman dairesinde tek başına yaşar ve pasaklılığa yeni sınırlar kazandıracak kadar kirlidir. Evde rahatlamak için çıplak halde program yazar ve "Babewatch" kanalını izler. Ne zaman güzel bir kız görse çıkma teklif edip reddedilene kadar peşinden ayrılmaz. Bir de hiç belli etmediği halde çok iyi sunum yapar.


Fred


Fooker'ın yanda dediği gibi kiranın yarısını ödeyecek kadar gelişmiş bir yaşam biçimidir. Fooker'ın evinde her türlü atıktan yoğun şekilde bulunduğu için bu yaratık hızlıca evrimleşmiştir. Fooker evde yokken online bir üniversitede edebiyat dersleri vererek geçimini sağlar. Kumandayı yutarak televizyonun kontrolünü eline alır ve belgesel izler, izletir... Yılda bir kez mitoz geçirerek çoğalır.


Trudy


Trudy, GPF'in yeni pazarlama müdürüdür. Sürekli sırıtan bu kadın gerçek anlamda şeytana pabucunu ters giydirir. İşe girerken nedense diğer tüm adaylar çekilir. İşe girdikten sonra ise rakip şirketin patronu kafasına düşen bir kasadan dolayı vefat eder. Yaklaşık altı ayda bir kendine bir hedef seçer ve seçtiği kişiye hayatı zehir etmek için elinden geleni ardına koymaz.


Nick



Ana karakterimiz Nick, Fooker kadar olmasa da nerddür. Şirketin isminin bir Windows hatası olan General Protection Fault'un kısaltması olduğu teorisini ortaya atan kişidir. İş dışında rahatlamak için program yazar. Yanda kimse tanıştırmadığı ve bilgisayar başından kalkmadığı için ancak ikinci gün tanışabildiği Ki ile birlikte görülüyor. Ki'dan hoşlanır fakat IRC'deki gizli hayranını da kaybetmek istemez. Bu nedenle ikisine de açılamaz.


Ki


Ki, kolay kolay bilgisayarın başından kalkmaz. Eve gidince sabaha kadar Quake ve Doom oynar. Nick'ten ilk görüşte hoşlanmış fakat bir türlü açılamamıştır. Bu nedenle şirkete erişim kayıtlarından Nick'in evdeki IP'sini, IRC'de kullandığı takma adını bulur ve "pookel" takma adıyla girerek Nick'e gizli hayranı olduğunu söyler.