26 Mart 2010

Hayali bir robot tekboynuz tarafından öldürüldüm

@Madness oynuyorum bu aralar. Oyun çok basit bir Rogue klonu. Diğer klonlardan ayıran farkı ise karakterimiz gittikçe delirmesi. Delirdikçe etrafı rengarenk görmeye, daha sonra da gerçek düşmanların yanı sıra halüsinasyonlarla başa çıkmaya çalışıyoruz, ve çoğunlukla da ölüyoruz. Son oyunumun raporu şurada.
Not:
[Game over: killed by imaginary robot unicorn. Press ENTER]

14 Mart 2010

Bilimsel yazılım performans karşılaştırması

Bir çok mühendis ya da mühendislik öğrencisi(özellikle elektrik ve makina) Matlab'dan haberdardır. Biraz daha iligili olanlarsa alternatifleri olduğunu da bilir.
Bu "bilimsel ve sayısal" analiz ve programlama araçları, doğrudan yorumlanan kaynak kodu çalıştırır, ama bu yavaş dilin arkasında zengin ve güçlü bir "motor" bulunur genellikle. Mümkün olan her zaman dahili fonksiyonların kullanılması ve özellikle döngülerden kaçınılması tavsiye edilir. Bense bu motorların ne kadar güçlü olduğunu görmek için ufak bir karşılaştırma yapayım dedim. Bol işlemci kasan, aynı zamanda optimizasyonlara açık bir işlem olan 2 boyutlu Hızlı Fourier Dönüşümü'nü hangisinin daha hızlı yapacağını görmek için bir deney yaptım.

Deneyleri yaptığım makinenin ayrıntıları şöyle
İşlemci: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
Bellek: 3768MB
İşletim sistemi: 2.6.31-19-generic-pae #56-Ubuntu SMP Thu Jan 28 02:29:51 UTC 2010 i686 GNU/Linux

Deneyde Matlab ve Octave için kullandığım kod: http://gist.github.com/331446
Python(Numpy) için kullandığım kod(Kaan Akşit'e teşekkürler): http://gist.github.com/331442
Bu da Scilab testi için kullandığım kod*: http://gist.github.com/331451

Hiç uzatmadan test sonuçlarına geçelim:
Matlab 7.5.0(r2007b): 0.265 s
Numpy (python 2.6.4): 2.06 s
Octave(3.0.5, qtoctave içinde) : 0.230 s
Scilab (5.1.1): 0.404 s

Açıkçası Octave'ın Matlab'ı geçmesini beklemiyordum, şahane iş çıkarmışlar. Octave ve Scilab'ın benzer sonuçlarla Matlab'ı az geriden takip etmelerini bekliyordum. Numpy ise biraz hayal kırıklığına uğrattı. Dönüşüm iki boyutlu olmasaydı belki daha iyi bir performans gösterirdi.

Not: Bu test sonuçları sadece 1024x1024'lük rasgele bir matrisin 8 defa 2 boyutlu FFT'sinin alınma süresini gösterir, söz konusu yazılımların genel performanslarını göstermez.

*: Scilab kodu, Scilab'ın "Import Matlab File" komutu kullanılarak Matlab/Octave kodunun otomatik olarak dönüştürülmesiyle elde edilmiştir. 

10 Mart 2010

Matlab'da tek boyutlu adreslemek

Bir resim işleme işi için gerekli katsayıları üreten yazılım malesef Matlab pakedi olarak mevcut. Yalnız iki boyutlu matrisleri tek boyutlu adreslerken, hücreleri soldan sağa değil yukarıdan aşağı saydığı için çıktı bir abuk oldu, yeniden düzenleyen ikinci bir aşama koymak zorunda kaldım. Bu tuhaf adresleme biçimini görmek için şuna bakabilirisniz:

>> A=[ 1 2 3; 4 5 6]
A =
     1     2     3
     4     5     6
>> for n=1:6
A(n)
end
ans =
     1
ans =
     4
ans =
     2
ans =
     5
ans =
     3
ans =
     6

20 Şubat 2010

Mount sorunu ve çözümü

Linux çekirdekli işletim sisteminiz, sebepsiz yere bir diski kullanamamaya mı başladı? mount komutu "bad fs type" gibi abuk subuk hatalar mı veriyor? Önce diski bir denetimden geçirin.

Mesela benim jfs biçimindeki usb hard diskim bu hatayı veriyordu. Ubuntunun "jfstools" paketini kurdum. Bu paket, jfs türü diskler yaratmak(mkfs) ve de hatalara karşı taramak(fsck) amaçlı araçları içeriyor.

jfs_fsck /dev/sdb2

dedikten sonra bir kaç saniye içinde diskte herhangi bir hata olmadığına dair rapor geldi, sonra da mount komutu çalıştı. Bir çok kişi benzer sorunu ntfs ile yaşar, bunların çaresi de 'ntfs-3g' ve 'ntfsprogs' paketlerinde.

10 Şubat 2010

Imagemagick ve borular

Imagemagick'in komutlarını "boru" ile birbirlerine bağlayabilirsiniz. Tek yapmanız gereken, çıktı dosyası olarak "-" vermek(tırnaklar olmadan). Mesela benim çok kullandığım bir komut olarak, bir resmi önce "equalize" işlemine tabi tutup sonra göstermeisni istiyorum, yazdığım betik tek satır:

convert -equalize $1 - | display

06 Aralık 2009

Code::blocks ve hizalama

Eğer Code::Blocks'ta kod yazıyorsanız ve bir yerlerden kopyaladığınız kodlar hizalamayı(indent) bozuyorsa, Plugins > Source code formatter(AStyle) nesnesine tıklayın, aktif olan dosyada hizalama hemen düzelir.

25 Kasım 2009

Twitter sayfam

Twitter sayfamı buradan biraz daha sıkça gündelliyorum.