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ı.
02 Ekim 2010
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.
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.
İ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
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);
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 !
Labels:
inetd,
mustafa akgül,
sansür,
türkiyede internet,
yasak,
youtube
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:
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
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.
Labels:
fft,
fft2,
hızlı fourier,
matlab,
matris,
mühendislik,
numpy,
octave,
scilab,
scipy
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
>> 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.
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
convert -equalize $1 - | display
Kaydol:
Kayıtlar (Atom)