02 Ekim 2010

Gcc ve vektör işlemleri

Bir çok modern işlemcinin multimedya işleri için sınırlı bir SIMD kapasitesi mevcut. MMX, SSE vs. isimleriyle bilinen bu ek komutların fonksiyonu özetle, tek bir komutu paralel olarak birden fazla değişkene uuygulamak. Örneğin aşağıdaki kod, 32-bitlik bir derleyiciyle aşağıdaki kodu derlerseniz, 4 adet int değişkeni, başka 4 adet int'e ekleyen bir program elde etmiş olursunuz.

Burada dikkat edilmesi gereken, vector_size parantezindeki sayı, vektördeki değişlen sayısını değil, vektörün bayt cinsinden toplam büyüklüğünü verir. Bu yüzden kodun doğru çalışması, üzerinde çalıştığınız donanıma bağlı.

09 Ağustos 2010

Ubuntu DVD oynatmıyor mu?

64 bit Lucid Lynx(10.04) için komut satırına

sudo /usr/share/doc/libdvdread4/install-css.sh

yazın, bir kaç paket kursun. Daha sonra VLC, Totem vs. ile bölge kısıtlaması olmaksızın DVD izleyebilirsiniz. Bu kütüphanenin doğrudan bulunmayışının sebebi muhtemelen "yasal" kaygılar.

15 Temmuz 2010

C/C++ işlem önceliği

Benim bir kaç günüme malolan hatalı bir varsayımdan bahsedeyim.
İlkokulda işlem önceliğini ögrendiğimizde
a - b / c
gibi bir işlemi yaparken önce bölmeyi, sonra çıkarmayı yapmamız gerektiğini öğrenmiştik. Eğer parantez varsa önce parantezler halledilir tabi.

Kod yazmaya başlayınca klasik 4 işleme ek olarak bir takım mantıksal işlemlerle de haşır neşir olduk, VE, VEYA igbi işlemlerin yanı sıra sağa ve sola kaydırma işlemleri.

C dilinde >> (sağa kaydır) işlemini her zaman bölme olarak görmüşümdür, bu yüzden de işlem sırasında bölmeye denk tuttum hep.

Bir dijital filtrem
*out = 127+ temp >> LOG_SHIFT_BITS;
şeklinde bitiyor. Burada amacım temp'i kaydırıp sonra da bir sabite ekleyerek negatif olmasını engellemek. Ancak bir çok programlama dili bu durumda önce toplamayı yapıp sonra sağa kaydırır. Sonuç ise felaket, bulması zor bir hata. Doğrusu
*out = 127+ (temp >> LOG_SHIFT_BITS);
olacak.

28 Mayıs 2010

Varolan dosya için "no such file or directory" hatası almak

64-bit işletim sistemi kullanmaya başlayınca bunu gördüm. Linux göz göre göre yok abi öyle bir dosya diyor. Bunun genel sebebi, 64 bitlik bir sistem üzerinde 32 bitlik bir uygalama çalıştırmaya kalktığınızda Linux'un bunu ne yapacağını bilememesi(daha düzgün bir hata mesajı da verebilirdi). Çözüm basit, ia32-libs pakedini kurmak.

Bunun daha ilginç bir örneğini de anlatayım: Az önce yaşadığım örneğini konsolumdan kopyalayıp yapıştıriyorum. 32-bitlik makineden bir c++ projesini 64-bit makineme kopyalamışım.

$ Release/jvdh-devil
Release/jvdh-devil: error while loading shared libraries: libIL.so.1: cannot open shared object file: No such file or directory

$ file /usr/lib/libIL.so.1
/usr/lib/libIL.so.1: symbolic link to `libIL.so.1.1.0'

$ file /usr/lib/libIL.so.1.1.0
/usr/lib/libIL.so.1.1.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

E daha ne?

Sorun şuydu: kaynak kodla beraber 32bit dernelmiş .o disyalarım vardı. 32 bitlik nesne kodunu 64 bitlik kütüphaneye bağlamaya kalkınca

22 Mayıs 2010

error: storage class specified for parameter "x"

Başlıktaki hatanın kötü bir huyu var, bir kere ortaya çıktı mı kendisinden sonra onlarca satır başka hatayı da listeletiyor. Çözümü arıyorsanız doğrudan yazının sonundaki özete bakın.

Bu hatanın ortaya çıkması için gerekli koşullar biraz özel. Tipik bir örnek şu oluyor
bir .h dosyasının şu içerikte olduğunu düşünün


extern void svs_non_max(int cols, int inhibition_radius, unsigned int min_response);
extern int svs_compute_descriptor(int px, int py, unsigned char* rectified_frame_buf, int no_of_features, int row_mean)
extern int svs_get_features_vertical(unsigned char* rectified_frame_buf, int inhibition_radius, unsigned int minimum_response, int calibration_offset_x, int calibration_offset_y, int segment);

Bunun bir C kodu olduğunu söylersem biraz dikkatli biri hatayı hemen görecektir. İkinci satırın sonunda noktalı virgül yok. Bunu gören derleyici, svs_compute_descriptor(...) fonksiyonunu komple bir tanımlayıcı(static, extern, const, int gibi) olarak algılıyor fakat ne olduğunu çözemiyor. Burada itibaren "storage class specified for parameter" hataları başlıyor, başlık dosyasının sonuna kadar gidiyor, ve başlıkta tanımladığınız değiskenlerin, fonksiyonların vs. kullanıldığı yerlerde de başka hatalar ortaya çıkıyor. 

Özet: storage class specified for parameter hatasını gördüğünüz yerde parantezleri ve noktalı virgülleri kontrol edin.

06 Mayıs 2010

Youtube yasağı iki yaşında

Aşağıdaki yazı, Internet Teknolojileri Derneği(INETD)'in günün anlam ve önemine dair bildirgesi. Kendi sitelerinde olmadığından buraya aynen koyayım dedim.

Türkiye İnternetle Savaşarak Harakiri Yapmaya Devam Ediyor!
 
Mustafa Akgül / İnternet teknolojileri Derneği
 
You tube yasağı 4 mayısla 2 yılı buluyor.. Bu İnternetden korkmaktan,
interneti ve çağı algılayamaktan, internete ilişkin düzgün yapılanma
kuramamanın sonucudur. İnternetin marjinal problemlerine İnterneti
yasaklayarak çözüm aramak en çok Türkiye'ye zarar vermekte; deyim
yerindeyse Türkiye Harakiri yapmaktadır. Ülkemiz, interneti kontrol
etmeye çalışan, Donkişot vari internete savaş açan bir ülke görüntüsü
çizmektedir. Yasaklar, en iyisinden, Devekuşu misali Türkiyenin kafasını
kuma gömmesidir. Bu yasak, bir mahkememizin yetkisini tüm dünya olarak
görmesi nedeniyle devam etmektedir. Devlet ricali yasağı eleştirmekte,
ama yasağı kaldıracak çabayı da hiç kimse göstermemektedir. "zararlı
içeriği", yönetişim ilkeleri ışığında modern dünyaya paralel, ve
yurttaşları bilinçlendirerek büyük ölçüde çözmek mümkündür. Ülke olarak
yasaklama refleksinden vazgeçip, interneti yaşamımızı kolaylaştırmak,
demokrasimizi geliştirmek, toplumsal kalkınmayı sağlamak, dünya ile
rekabet için kullanmaya odaklanmamız gerekir.
 
Youtube yasağına konu olan 10 video'nun yarısı kaldırılmış, yarısının
ise Türkiye'den erişimi youtube tarafından engellenmiştir.
Mahkemelerimiz, dünya üzerindeki Türkler yoluyla, yetkisini tüm dünya
olarak görmektedir. Böylece kendi ifade özgürlüğü normumuzu ve yasakçı
bakış açımızı tüm dünyaya empoze etmeye çalışıyoruz. Ülkemiz, adı
konmadan, dünya internetine savaş açmıştır. Yasakçı bir bakış açısıyla,
dünyadaki tüm yer sağlayıcıların Türkiye'de kayıt olmasını istemekteyiz.
Tedbir olarak verilen kararlar, yargılama yapılmadan kesin karar gibi
uygulanmaktadır. Ülkemiz, İnternetin potansiyelini kavrayamadığı için,
matbaadaki gecikmeye benzer bir mantıkla, interneti yasaklamaktadır.
 
İnterneti Nasıl Algılamalıyız ?
 
İnternet bir bilgisayar ağının ötesinde, insanları ve insanlığın düşünce
ve kültür ürünlerini kapsayan bir ağ; insanların buluştuğu,
örgütlendiği, iş yaptığı, öğrendiği, öğrettiği, eğlendiği, paylaştığı;
yaşamın tüm boyutları ile içiçe geçmiş bir ortamdır. Dünya, İnternetin
başını çektiği Bilgi Toplumuna geçişin arayışı içinde. Bilgi toplumu,
bilim, teknoloji, ar-ge ve inovasyonun temel zenginlik ve istihdam
kaynağı olduğu, bağımsız ve yaratıcı bireyin öne çıktığı bir toplum
yapısını işaret ediyor. Küçük büyük tüm ülkeler bütün vatandaşlarını
internet okuryazarı yapmaya, ve internetden yararlanmasının yollarını
aramaktadır. Herkesin internete ucuz ve kolayca erişimini sağlamaya, tüm
şirketlerin iş süreçlerini internete uyumlu yapmaya, kamu yönetimini
internete taşımaya koyulmuşlardır.
 
İnternet geniş kitlelerin iş birliğine, beraber üretimine, deneyim ve
bilgi birikimini, kişisel bilgi ve meraklarını paylaşmayı mümkün
kılmıştır. İnternet hiç kimsenin tahmin edemediği biçimde gelişmekte,
sıradan yurttaşa bunları fazla teknik beceri gerektirmeden, kolay, ucuz
ve hızlı yapma ortamı sağlamıştır. 3G gibi mobil teknolojiler, ve
gelişen bilişim teknolojileri ise bunu insana her an sürekli olarak
sunmaktalar. Dünya yurttaşları da buna olumlu cevap vermişlerdir. Web
2.0 servisleri, özellikle Sosyal Ağlar, wikipedia, Linux ve Açık kaynak
dünyası, açık ders malzemeleri, bunun örnekleri arasındadır. Kitleler,
internet üzerinden insanlığın ortak sahibi olduğu ürünler geliştirmekteler.
 
İnternet üzerinde 1.8 milyar insan mevcuttur. 733 milyon bilgisayar
İnternet alan adı sistemine kayıtlıdır. Yeni tarama motoru cuil.com 127
milyar sayfayı indekslediğini söylemiştir, yani en az o kadar da sayfa
bulunmaktadır. netcraft.com 242 milyon web saymıştır. 192 milyon
civarında alan adı mevcuttur. 130 milyonu aşkın kişisel web/günlük var.
Tüm İnternette 100 milyonlar ölçüsünde video var.. Facebook'un kullanıcı
sayısı 400 milyonu, twitter 105 milyonu , linkedin 50 milyonu
aştı.Dünyada günde 250 milyar e-posta gidiyor, bu yılda 90 trilyon
demek. Sosyal ağlar, yurttaş temelli içerik aldı başını gidiyor. Sosyal
ağlarda kadınlar önde gidiyor. Twitter'da en cok izlenen kişiyi takip
eden, 4.25 milyon insan var, Obamayi 3.8 milyon kişi izliyor. Twitter'da
100 bin, Facebook'ta 500 bin uygulama var. Twitterda günde 55 milyon
kısa mesaj var. Yurttaş fotoğraflarının toplandığı Flicker'de 4 milyar
foto var. Facebook'a her ay 2,5 milyan resim yükleniyor. Her gün 200
milyon facebook kullanıcısı facebook'a bağlanıyor. Youtube üzerinde
günde 1 milyar video izleniyor. Video pazaranın %40?i youtube'ta. Her
dakika 20 saatlik video youtube'a yükleniyor.
 
Türkiye'de ise 26-30 milyon civarında kullanıcı, 3.1 milyon bilgisayar,
215 bin Türkiye içinde, 870 bini Türkiye dışında alan adı var.
Halkımızın, %27'si interneti düzenli kullanıyor, %67'i hiç internet
kullanmamış Evlerin %81'inde internet yok. Kadınların %80'i internet
kullanmıyor. Bu kırsal kesimde %90?lar ölçüsünde.
 
Youtube, facebook, twitter, flicker, myspace, linkedin gibi sosyal ağlar
bir eğlence ve arkadaşlık ortamların ötesine geçmişler; bir işbirliği,
iş yapma, örgütlenme, pazarlama, dağıtım, öğrenme, tanıtım ortamı haline
gelmekteler. Fortuna 500 firmaları, uluslarası kuruluşlar, vakıflar,
üniversiteler artık sosyal ağlarda yer almakta, paydaşlarla sosyal ağlar
üzerinden çift yönlü etkileşime girmekte, birlikte üretme, ürün ve
politika üretme sürecine girmişlerdir.
 
Youtube'ta ne var ?
 
Youtube tüm dünyada sıradan kullanıcıların, üniversitelerin, firmaların,
uluslarası kurumların, yani kullanıcıların oluşturduğu içeriği sunan,
tüm dünyaya hizmet eden, günde 1 milyar videonun izlendiği bir web.
Dünya üzerinde 9500 üniversite, youtube'u kendi ders
mazlemeleri/videolar için kullanıyor. 4000'i aşkın vakıf, 2300 banka,
2300 Enstitü youtube'u kurumsal olarak bir dağıtım kanalı olarak
kullanıyor. Youtube'da "türkiye" taranınca 320 bin, "turkey" taranıncada
476 bin video çıkıyor. Galatsaray için 107, fenerbahçe için 115,
beşiktaş için 51 bin video var. istanbul için 266, antalya , alanya,
bodrum ve marmaris için yaklaşık 7 bin video var. Obama taranınca
milyonun üstünde video, 6000 civarında kanal bulunmakta.
 
İnternet, insanların buluştuğu, iş yaptığı, eğlendiği, öğrendiği,
öğrettiği, çeşitli elektronik nesneleri değiştiği, paylaştığı, okuduğu,
yazdığı bir ortamdır. İnternet, kütüphanelerin, gazete ve dergilerin,
TV'lerin, müzelerin, laboratuvarların, sergilerin, konser salonlarının
olduğu, insanlığın kültür mirasının paylaşıldığı bir ortamdır. İnsanlar
arası iletişim, iş birliği ve dayanışmanın olduğu bir ortamdır. Yaşamın
tüm boyutlarına, tüm mesleklere, tüm yaş gruplarına hitabeden, yaşamın
yansını bulan, insanlığı etkileyen önemli bir gelişmedir.
 
Bilişim, bilgi teknolojileri ve İnternet, insanlığı yeni bir toplum
biçimine taşıyan, tetikleyen ve temsil eden içiçe geçmiş araçlar
bütünüdür. İnsanlık, sanayi ötesi bir toplum biçimine, Bilgi Toplumna
geçişin sancılarını yaşamaktadır. Bu anlamda bilgi, temel zenginlik
kaynağı, verimlilik, rekabet kaynağı ve istihdam aracıdır.
 
Beyinsel emek yaratılan katma değer açısından, kol emeğinin önüne
geçmiştir. Yer altı zenginliklerinden, bankalardaki paralardan çok
entelektüel sermaye öne çıkmıştır. Bunun sonucunda ülkelerin zenginlik
kaynağı, yetişmiş insanların beyinlerindeki bilgidir denebilmektedir.
 
"Bilgi toplumu"na yönelişin bir sonucu olarak, sektörlerin yapısında
önemli değişimler gözükmektedir. Telekom, basın, medya, eğlence
sektörleri köklü olarak değişmektedir. Kamu yönetimi, bu gelişmeler
sonucunda ciddi bir yeniden yapılanma arayışına girerek, kendini
e-devlet uygulamaları şeklinde ortaya koymaktadır. Ülkeler ve Birleşmiş
Milletler, AB, Dünya Ekonomik Forumu gibi uluslararası yapılar, ülkeleri
ve tüm dünyayı "bilgi toplumu"na taşımak için planlar yapmaya, eylem
planları ortaya çıkartmaya, her çocuğa bir dizüstü bilgisayar gibi tüm
dünya yurttaşlarına yönelik projeler üzerinde çalışmaya başlamıştır.
 
Kısaca tüm dünya, "bilgi toplumu" hedefini benimsemiş ve ona yönelmek
için ciddi bir çabaya girmiştir. Bu bağlamda ülkemizde de 2006-2010?u
kapsayan bir "Bilgi Toplumu Stratejisi" ve "Eylem Planı" bulunmaktadır.
Kamuoyunın farkında olmadığı bu proje, dağınık yapı ve sahipsizlik
nedeniyle büyük ölçüde bitirilemiştir.
 
*5651 Ne Getirdi ?*
 
Ülkemizdeki yasaklamaları tetikleyen, 5651 nolu aceleye getirilmiş,
internetden korkan bir felsefeyle yazılmış, bir tepki ve yasaklama
yasasıdır. Özgürlükler ve güvenlik dengesinin, özgürlük aleyhine
bozulduğu, "internetde benim istemediğim kuş, ne pahasına olursa olsun
uçmasın" bakış açısıyla, evrensel hukuk ve Anayasanın temel ilkelerinin
feda edildiği bir düzenlemedir. Bu amaçla, BTK içinde İletişim
Başkanlığına (TİB), hukukçu ve iletişimci ağırlıklı 93 kişilik kadro
veriliyor, ve İnterneti temizleme görevi veriliyor. Yurt dışındaki
webleri, TİB, resen, sorgusuz sualsiz, savunmasız, haber vermesiz
kapatma yetkisine sahip. Bu yetki yurt içinde mahkemelere ait. Bu gün en
az 6000 webin yasaklandığını biliyoruz, ama tam sayıyı kimse bilmiyor.
TİB hukuk mahkemlerinin medeni kanun ile fikri ve sinai haklara ilişkin
kararları görev alanı dışında saymış, ama ceza mahkemelerinden gelen
5651 dışı yasaklamaları uygulamıştır.
 
Bugün yasaklamalar konusunda , kanımca, bir hukuk faciası uygulanmakta.
Savunma alınamdan verilen tedbir kararları, kesin karar olarak
uygulanmakta, ve ülke içinde yargılam ayolu açılamaktadır. Youtube 2
yıldır yasaklaı olmasına rağmen , bu konuda devletimizin açtığı bir dava
yoktur. Bizim, İnternet Teknolojileri Derneği olarak AİHM'e açtığımız
dava var.
 
*Ne Yapılmalı ?*
 
5651 Bilişim STK'larının "imdat çığlıkları" arasında yangından mal
kaçırıcasında çıktı. Bu süreçte, 10 milyon blog'un olduğu WordPress,
Myspace.com, DailyMotion.com, alibaba.com gibi büyük, milyonlarca
kullanıcının üye olduğu, içerik eklediği çoğu weblerin yanında,
richarddawkins.net, turandursun.com, anarsist.com, ataist.org gibi
aykırı görüşlerin ortaya atıldığı weblerde yasaklardan nasibini aldı. Bu
yasaklamalar, her zaman 5651 nedeniyle olmuyor; kişisel haklar ve fikri
ve sinai hakların ihlali nedeniyle Türkiye'nin her hangi yerinde bir
mahkeme, hiç bir savunma almadan, bir bilirkişiye başvurmadan tedbir
olarak bir yasaklama getirebiliyor. 5651 kaldırılıp, daha özgürlükçü,
katılımcı, ve hukuka ve adelete uygun bir düzenlemeye gidilmedilir. Bu
yönde Kartepe Çalıştayında temel ilkeler kamu, sivil toplum ve özel
sektörçe ortaya kondu.
 
Yasakçı refleksten kurtulup, hoşgörü, katılım ve saydamlık temelinde,
ifade özgürlüğünü esas alan, uzun vadeli ülke çıkarlarını gözeten
süreçleri kurmalıyız. Yasaklama, ancak son çare olarak ve geçici olarak
düşünülmelidir. Yurttaşları adına karar veren devlet refleksiden
vazgecip, yurttaşları bilgilendirip, kararı ona bırkan bir bakış açısına
geçmeliyiz.
 
Kısa vadede hassas olduğumuz konularda, kendi normlarımızı tüm dünyaya
dayatma çabamızdan vazgeçmeli, ve İnternetin Türkiye'den görüntüsü ile
yetinmeliyiz. Bir nesne , Türkiye'deki IP'ler için yoksa onu kaldırılmış
saymalıyız. Adaletsiz bir şekilde suçsuz yurttaşlarımızı
cezalandırmaktan vazgeçmeliyiz. Bir kitap, hatta bir paragraf yüzünden
koca kütüphaneleri yasaklamak düşüncesini bırakmalıyız. Başarılı
olduğumuz sürece, kendimize zarar veririz. BTK'nın işini yapmaması
nedeniyle, bir kaç video nedeniyle youtube'u 2 yıldır kapalı tutmak
Türkiye'ye zarar veriyor. Nesne temelli filtreleme kolayca yapılabilir;
BTK bunu yapacak, mali, idari ve teknik beceriye sahiptir.
 
İnternet aynı zamanda sokaktır. "Zararlı İçerik"in yanında, çeşitli
zararlı unsurlarda var. Özgürlükler, kişisel mahremiyet ve gelişmenin
önünü tıkamamak, zararlı unsurlarla mücadelede özenle korunmalıdır.
Toplumun ilgili kesimlerini paydaş olan bir yönetişim yapısını kurmak,
gelişme için çok önemlidir. Ülkemizin hassasiyeti olduğu konulardaki
"zararlı içeriği", Bilişim STK'ları ve internet gönüllüleri ile birlikte
harekete ederek çözebiliriz. Kamunun katı refleksi yerine, sivil
toplumun esnek, katılımcı, diyalog temelli yapısı bu sorunu daha kolay
çözebilir. Devletin, esas olarak, "zararlı içerik"le mücadeleyi yurttaşa
bırakması, demokrasilerde, esastır. Devlet bunu destek olmalıdır; ama
işi yurttaşa bırakmalıdır.
 
İnternet, insanlığın gelişme önemli bir aşamayı temsil etmektedir.
Gelişme, dünya ile bütünleşmek, AB'ye girmek isteyen, özgür bireylerin
oluşturduğu, çok renkli ve çok sesli bir Türkiye için vazgeçilemez bir
araçlar bütünüdür. Gelin, İnterneti kalkınmamızı hızlandırmak,
demokrasimizi geliştirmek, ortak aklımızı oluşturmak, bireyler olarak
kendimizi geliştirmek, birlikte üretmek için kullanalım.
 
İnternet Yaşamdır !

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