matris carpimi

bir önceki "blog" yazım "c, mpi, uykusuz geceler ve kundante!"de yazdığım üzere matris çarpımı ile karşınızdayım!
inceleyince yazarım demiştim, netekim inceledim ve nette bu konu üzerine adam akıllı bir c kodu olmadığına kanaat getirdim, en azından benim aradığım yerlerde yoktu..
peki neden matris çarpımı? çünküüü hocamız öyle istedi P=
üç ayrı proje verdi bizlere; ilki makinalara veriyi diziyi yatay bölerek, ikincisi dikey bölerek, üçüncüsü ise satranç tahtası gibi karelere bölerek dağıtıyordu.
matrisi carpımını java'dan c'ye çevirmek sorun olmadı da çift boyutlu dizilerin mpi'da node'lar arası aktarımına çok feci takıldık.
yılmadık aramaya inandık, google'in altını üstüne getirdik ve tutoriallar okuyup takıldığımız yerlerde sorup soruşturarak c'ye kendi çapımızda takla attırdık. burda en çok emek, sevgi ve desteği purgatory'den aldık, kendisinin herkese selamı var (=
ilk proje bitip de çarpımı doğru yapınca ağlamak istedim gerçekten.. emeğimizin sonucunu almıştık..
bir ara verip diğer iki projeyi de algoritmalara uygun hazırladık, hazırladık ki ne görelim ilk projede sorunsuz çalışan metodlar ikincisi için hata vermeye başlamıştı. bunun üzerine tekrar hummalı bir çalışmaya girdik ve sorunu her üç proje için de çözdük.
şu an gurur duyduğumuz 100'e 100 bir matrisi bir vektörle 1'i master 5 makina üzerinde paralel çarptıran 3 değişik kodumuz var (=

e şimdi bir sonuca bu konuyu bağlamazsam ayıp olur o zaman ne diyeyim kıssadan hisse
c'den korkmaya gerek yok, mpi'da cici bir şey, insanın yardımsever arkadaşlarının olması çok şahane bir şey..

bu zorlu kod seansında yardım ve bilgisini esirgemeyen purgatory'e, silent strom'a, serdar'a, huzursuz'a ve disq'e çok teşekkür ederiz.

c, mpi, uykusuz geceler ve kundante!

bir okul projesi tesliminin daha sabahı bugün!
açık kaynak ve özgür yazılım günlerinde takip ettiğim kadarıyla ilgimi çekmişti quantum, genetic, parallel computing konuları baktım comp474 diye bir ders var paralel programlama, hemen atladım üzerine.
ders c tabanlı çıktı tabii.. ilk başlarda c falan görmez teori üzerine gider -hyper cube falan- verinin iletilmesi vs gibi problemleri çözüp eğlenirken acı gerçek kendini gösterdi: bunları programlamak, ama c'de!!
fena olmadığını düşündüğüm bir java bilgim var (şimdilik elime gelen projelerin altından kalkabiliyorum en azından) ama c.. tek bildiğim onun java'yla benzerlik gösterdiği ve atası olduğu.. bir de tabii c++, c# var çocukları..
dersi almamda etken arkadaşım hakan'la kafa kafaya verdik yaparız yahu dedik.. netekim ilk projemiz olan matris çarpımı algoritma olarak gayet kolay görünüyordu.
ben de kolları sıvadım gerekli ve doğru olduğunu düşündüğüm mpi komutlarının arasına bir güzel java kodu yazdım -çok parlak bir fikirdi benim için. bunu
her neyse sonuç itibariyle bu algoritma iki boyutlu dizileri gerektirdiğinden -malumunuz benim sıfır, hakan'ınsa kısıtlı c bilgisi yetmedi bu projeyi hayata geçirmeye.
hocamız matris çarpımı üzerine nette c kodu bulabileceğimizi söylemişti. evet var gördüm ama henüz inceleme fırsatım olmadı. inceleyince buraya bir ek yaparım artık..
derken final günü geldi çattı, finalin ikinci kısmı "take home" şeklindeydi ve quicksort ya da mergesort algoritmalarından birini gerçeklememiz gerekiyordu.
son finalimin ardından çarşamba günü sıvadım kolları ve pazar sabahına doğru yoğunlaşan bir şekilde çalıştım. burda çalıştık desem daha doğru olacaktır.
artık bir noktada elimizdeki algoritmalar çalışmayıp, node'lar birbiriyle alışveriş yapmamakta diretince kundante'ye sardık kendimizi.
fairuz derin bulut'un muhteşem şahane şarkısını herkese tavsiye ediyorum özellikle kodculara.. terelelli anında bundan daha iyi tesir edecek bir şey bilmiyorum. mümkünse bir kaç kere dinleyin ve eşlik edin!!
ufak bir kundante seansından sonra gene verdik kendimizi kodlara. kah c allocation sorunları çıkarıyor, kah deadlock'a giriyorduk.
ezanla gelen sabah bize artık teslim saatinin yaklaştığını hatırlattı. her şeyi yapıp da kendi arasında bilgi alışverişi yapamayan node'lu kodumuza raporlarımızı hazırlayıp kendimiz sabah uykusunun boğucu kollarına attık.
bütün bu çalışma ve bu blog'un sonucu:

"c is for cookie that's good enough for me"

creative commons

efenim az önce bütün kişisel bloglarımı creative commons ile lisansladım hayırlı uğurlu olsun..
bunu yapmak gerçekten çok kolay..
önce anasayfaya gittim, hemen orda blog diye bağlantıyı gördüm zaten atladım üzerine..
ordan blogger vb blogları kullananlar için bağlantısını keşfedip ona atladım..
sonra da tarif ettiği gibi lisansımı belirledim kodumu alıp "template"e yapıştırdım. ancak orda dediği gibi govde tag'ının bitiminden önce değil footer'a yapıştırmayı tercih ettim..
ne fark yarattı inanin bilmiyorum (=
şimdi gidip flickr hesabımı da adam edeceğim..
cc ile ilgili daha haberlerim var ama sanırım şu aşamada açıklayamam gelecek ayları bekleyin..

bilgisayar bilimleri..

sevgili tech günlük,
99 senesinde liseden mezun oldum. o zamanlar tek isteğim "taşkışla"da okumaktı.. ne de olsa "mimarlık taşkışla'da okunur".. ama ne oldu zaten mimarlığı kazanamadım, "şehir bölge planlama" gibi korkunç, ezik bir bölüme girdim. işte kendimiz avuttuk yok şehirciler yükselen değer vs diye..
şunu da belirtmeden geçemeyeceğim ki fen bölümü mezunu olarak gene bu alandan seçim yaptım.. yaptım da ayrılmaya karar verdiğim güne kadar (ki birazdan geleceğim o bölüme) bu fen bilgim ne işime yaradı? hiç..
geri dönecek olursak, ilk dönemlerdeki temel tasarım, proje dersleri falan eğlenceli geçti, çünkü ben teoriden çok elime somut bir şeyler gelmesinden hoşlanan bir insanım. mimarlık okumasam bile bu bölümü kotarabileceğimi düşündüm, ama neymiş bilimsel düşüncenin evrimsel tarihi falan gibi korkunç dersler bir yana, proje dersleri bile teoride kalır olmuş..
netekim 3. dönemde bir 200 kadar insanla beraber 2000 senesinde yürürlüğe giren ortalama tutturma kararnamesi bahane edilerek okuldan atıldım. (bu arada harcımı yatırmış olduğumu da belirtmek isterim, harçların son yatırılma tarihini müteakip atılma kararı duyuruldu çok eğlenceli değil mi? neyse konuyu dağıtmayalım ve geri dönelim)
bir dönemimi okul dışında türlü aylaklık vs ile geçirdikten sonra yeni dönemde tüm atılanlarla birlikte geri alındım (harç yanlarına kaldı tabi) işte o dönem okurken proje dersinde bana bir şeyler oldu. netekim bize proje alanı olarak vize -kıyıköy - saray bölgesi seçilmişti. burda arazi analizi yapıp uygun yere şimdi hatırlamadığım kadar kişilik konut bölgesi planlayacaktık.
arazi analizinden çıkan sonuca göre burda herhangi bir yerleşim yapılamazdı; bütün arazi akarsu, ormanlık alan ya da birinci ve ikinci (ama çoğunlukla birinci) dereceden tarım arazisiydi.
ormanlık alan ve akarsuların dışına bir yere yerleşimi planlamaya karar verdik haliyle, o kadar öğrencinin tekrar bir arazi çalışma yapması ve zaten fi tarihinden kalmış haritaları arşivlerden çıkarması o dersin hiç yapılamamasına doğru giderdi..
her neyse grupların yerleşim için seçtiği bölgeler üç aşağı beş yukarı aynı oldu, paftalar teslim edildi dönem bitti, bir sonraki dönem bu alanlara yerleşme işini yapacaktık, kişisel projeler tabii.. (bu atıldığım döneme denk geldiğinden bir sonraki sene o dersten kalanlarla birlikte bir avuç kişi olarak derse devam ettik) ben tabii günümüz insanına göre düşünüp akarsuya çok yakın olmasın gecekondulaşma olur, otobana yakın olmasın ses vs olur diye düşünürken ve tabii kaygılarımı hocama sunarken şöyle bir tepki aldım:"biz bunların olmayacağını varsayacağız, ütopik bir dünya olarak düşüneceğiz."
işte benim şalterin attığı ve koptuğum nokta bu oldu. ben bu okuldan mezun olup ya bir odaya kapanıp boyumca paftaları gazlı kalemlerle boyaya boyaya kafa bulacaktım (kokudan) ya da ütopik düşünüp "ben böyle şehircinin.." cümlelerinin gizli hedefi olacaktım.. eğer mezun olduğumda karşılaşacağım duruma hazırlamıyorsa beni bu okul benim okumamın ne anlamı vardı??
günlerle süren daralma, sinir bozukluğu ve bunalımın ardından konuyu aileme açtım ve okulu bırakıp tekrar başka bir okula girmeme destek oldular.. dersaneye yazıldım ve 2003 senesi kayıt döneminde bilgi üniversitesi'nin kapısının önünde elimde "bilgisayar bilimleri bölümü'ne girmeye hak kazanmıştır." belgesiyle dikiliyordum..

küçüklüğümden beridir bilgisayarları sevmiş, haşırneşir olmuş (amiga, dos, qbasic, win32..), 93 senesinde nete girmiş, türlü bilgisayarcı, programcı insanla tanışmış, ilgilenmekle ilgilenmemek arasında bir yerde duruyordum.
itiraf ediyorum sevgili günlük, çoğu ilgi alanım abiminkiyle çakışır. o benim "role model"ımdı. ama zaten bu ayrı bir tartışma konusu..
işte okulu bırakmaya karar verince durup bir baktım kendime, nerede durduğuma, arkadaşlarım, ilgilendiklerim, her şeyi göz önüne almam gerekiyordu.
ilgilendiğim her konudaki bölümlere üniversitelere girdim ders programlarına tanımlarına baktım. (astronomi, uzay-uçak, bilgisayar mühendisliği, vcd, genetik mühendisliği, konservatuar ve daha aklıma gelmeyen pek çok bölüm ilgimi çekiyordu.)
en son şuna kanaat getirdim; tasarımla alakalı olmalı, bilgisayarla alakalı olmalı ve elime somut bir şeyler geçmeliydi.
yalan söylemeyeceğim günlük; ilk düşüncem vcd oldu. araştırdım bakındım ön eleme sınavı, yetenek sınavı vs diyordu. dedim dalga mı geçiyorsun nerde bende o yetenek.. (zamanla vcd'cilerden çıkan işleri de pek beğenmez oldum o ayrı bir mesele)
bu ara mühendislik yapamayacağımı çünkü o ağır fizik, kimya ve matematiğin altından kalkamayacağıma da kanaat getirmiştim. programlama okuyacaktım ama 2 senelik okullara düz liseden mezunları almıyorlardı, 4 senelik programlama yoktu.
işte o noktada şu an ki bölümüm o zamanki ismiyle "bilgisayar bölümü" pırıl pırıl parlıyordu..
doğru dürüst ne olduğunu anlamadan daldım burslu burssuz olmak üzere bilgi üniversitesi bilgisayar bölümü diye doldurdum tercih formunu ve burssuz kazandım.

şimdi şu aşamada durmuş bakıyorum. 3. senem okulda, girdiğimden beri bir sürü şey değişti, tek bir şey dışında: bölümüme sevgim..
çok itici, gıcık ve anlaşamadığım bir sürü insanın dışında dünya tatlısı insanları da içinde barındıran, gelişime ve değişime açık, küçük ailem.
chris stephenson, mehmet gençer tüm çömlerin en çok gördüğü hocalar, ilk sınıf dersleri onlardan soruluyor. chris zaten bölüm başkanımız alpaslan parlakçı ile birlikte.
ve bu dönemden sonra bir daha göremeyeceğimiz (silahtarağa kampüsüne taşınmamızdan dolayı) sevgili bölüm odamızda matematikçilerle yanyana geçirdiğimiz ders araları, okulda emek emek harcanan saatler, hava almak için kışın soğuğunda kağı önü kaçamakları.. hepsini çok sevdim.
bu arada program yazmayı, javayı, networklerin nasıl çalıştığını, paralel programlamayı, açık kaynak ve özgür yazılımı, GNU'yu öğrendim, öğrenmedimse de fikrim oldu.. (=
açık kaynak günlerine, turing günlerine katıldım, fazlamesai'yi (ki zaten tanıyordum), lkd'yi tanıdım.
google diye bir sey varmış çok işe yararmış, firefox vazgeçilmezmiş, deneyimledim.
windows'un "kaka" olduğunu, gnu/linux'un "cici" olduğunu öğrendim.
debian kurdum, pardus kurdum -bir sürü başka sistem de kurdum ama onları sevmedim..
ve tüm bunların, 3 senenin sonunda hala bilgisayar bilimlerinin ne olduğuna, mezun olunca ne olacağıma verecek net bir cevabım yok.
okudum wiki'den, okulun sayfasından okudum, türkçe viki'ye şaşırdım ve..
ve inanmazsın günlük ama bir sonuca vardım.. -kişinin çelişkili beyanatlarda bulunduğu an-
bilgisayar bilimcinin amacı problem çözmek..

evet ben bu sonuca vardım. tasarım, programlama, bilgisayar bizler için sadece birer araç..

binary exam

bizim okulda bu dönem aldığım comp 232 - data structures and algorithms dersine gelen yeni uygulama "binary exam"..
buna göre öğrenci iki saat süre içerisinde daha önceden belirtilmiş (dönem başı/ortası falandı sanırım hatırlamıyorum) algoritmalardan seçilmiş bir kısmı (ki bunların da hangileri olduğu belirtildi) içerisinden bir proje çekiyor ve onu koda dökmeye çalışıyor. Bazı gerekli yan sınıflar önceden tanımlanmış ve bilgisayarlarda hazır, internet bağlantısı yok.
süre bitiminde yazılan kod derlenmesi, verdiği hatalar ve verilen algoritmaya göre işleyişine bağlı olarak 1 veya 0 olarak notlandırılıyor.
burdan alınan not şu işleme giriyor:
binaryExamNotu * (finalNotu + vizeNotu + dönemBoyuncaKodlanmışAlgoritmalar)
yani öğrencinin geçip kalması bu nota bağlı.

peki gelelim bu sistem üzerine geyiklere (:
- bu sistemin gündeme gelmesinin temel amacı kodlama bilmeyenlerin geçmesinin engellenmesi. mantıklı ve amaca yönelik. öğrencinin kodlama becerisini ölçmek açısından öğretmenlere bir avantaj.
- kopya çekerek, kod bilmeden öğrenci bu sınavı geçemez, öğrenciye (öğrenci mantığıyla) dejavantaj. [deneyim bilgim ve çeşitli tepkilere bağlı olarak söylemek isterim ki öğrencinin kopya çekmesi ve geçmesi bu sınavda çok mümkün -gözlemle sabit]
- öğrenci bütün dönem boyunca verilen algoritmalar üzerinde çalışıp kendini programlama açısından geliştirebilecek -tabi bunun için hem boş vakti hem de disiplini olması gerekiyor.
- sınav odasının, algoritmaların ayarlanması zaman alıcı, ayrıca öğrenciler gruplar halinde alınmalı ve kopya engellenmeli -ek zaman ve çaba..
- şu an ikinci sınıf ikinci dönem dersinde ilk defa uygulanıyor olmasından ve şu aşamadaki bir öğrencinin geçip kalmasına direkt etkisinden dolayı tamamıyla saçma (=

debian unstable'a java yuklemek..

bugün güzel güzel javamla uğraşıp şu projeleri hallederim derken halihazırda çalıştığını bildiğim kodu derleyip çalıştırmaya çalışınca dünyalar benim oldu..
main metodumu beğenmemekte ısrar eden bir konsolum vardı -canım benim evet ben de seni seviyorum.
hemen kendimi silent storm engin bilgi dünyasına ağlayarak attım, o da hemen bana sorunumun cevabımı verdi. ^^
tabii ki bir nevi bir hizmetim olsun herkes yararlansın ben de bu ufak hayat kurtarıcıyı serbest bir şekilde türkçeleştirmek isterim.

kaynak: Mini-HowTo: Installing Java on Debian Unstable

bu kilavuz debian unstable (sid) için hazırlandı ancak testing ve hatta ubuntu için de işe yarayabilir.
bütün bu adımlar "root" haklarına sahip olduğunuz var sayılarak anlatılmaktadır!

1. sun websitesine gidip kendisine J2SE Development Kit paketinden edinin. bize rpm değil .bin paketi lazım.
hali hazırdaki sürüm: JDK 5.0 Update 7
uygun bağlantıyı takip ettikten sonra Linux Platform - J2SE(TM) Development Kit başlığı altından .bin paketini bilgisayarınıza indirin.

2. istediğiniz yere paketi yerleştirin. debian paketlerinden çıkmayan tüm uygulamaları /opt klasörüne koyuyorum. bu yüzden /opt/java klasörünü yarattım ve .bin paketini de buraya yerleştirdim.

3. paketi açın. Bu sh [paket adı].bin komutunu çalıştırıp lisansla ilgili soruya evet (yes) demek. Kendini kendi kendini yeni bir klasöre açacak. Benimki kendini şuraya açtı: /opt/java/jdk1.5.0_07

4. açılmış JDK klasörünüzden /usr/local/lib/jdk'ya sembolik bir bağ atayın. Benim için bu şu komutu vermek demekti: ln -s /opt/java/jdk1.5.0_07 /usr/local/lib/jdk

5. java-common ve equivs paketlerini apt-get install java-common equivs komutu ile yükleyin. Bu paketler bizim sahte paketleri yaratmamızda rol oynayacaklar.

6. uygun bir klasöre (ben /opt/java'daydım) java sahte paket kontrol dosyalarını cp /usr/share/doc/java-common/dummy-packages/*.control . komutuyla kopyalayın.

7. equivs'i kontrol dosyalarından sahte paketler yaratmak için kullanın: for fn in *.control; do equivs-build $fn; done böylece klasörünüzde bir tomar .deb oldu.

8. sahte paketleri kurun: dpkg -i *.deb artık debian java'nın kurulu olduğunu biliyor.

9. son bir adım daha kaldı. şimdi update-alternatives'i kullanarak java ile gelen tüm donatılara debian-dostu sembolik bağlar atayacağız. kurulmuş JDK'nızın bin klasörüne geçip şu komutu çalıştırın: for fn in *; do update-alternatives --verbose --install /usr/bin/$fn $fn /usr/local/lib/jdk/bin/$fn 500 --slave /usr/share/man/man1/$fn.1 $fn.1 /usr/local/lib/jdk/man/man1/$fn.1; done bu döngü JDK paketinizle gelen tüm donatılara debian alternatiflerini man sayfalarıyla birlikte yaratacak.

10. şimdi herhangi bir kullanıcı olarak java -version komutuyla doğru JDK sürümünün döndüğünü kontrol edin.

ek: eğer java-version komutu sonucunda halen eski sürümü görüyorsanız şu komutu uygulayın: update-alternatives --set java /usr/local/lib/jdk/bin/java

güle güle kullanın!

technotech..

günlerden bir gün sözlük'te gezerken zerocoder takma ismine rastladım.. yıllar önce tanıştığım birisinindi, bir ihtimal mesaj attım ve süper bir arkadaşlığın içinde buldum kendimi..
bir zamanların suse kullanıcısı bu hafif sıyrık coder kişisi beni amaroK'la tanıştırdı, sözlük geyiklerinin başını, kod dünyasının içini dışını çekiştirdi. farklı şehirlerde olmamızdan kelli sadece ekranlarda kalan bir dostluğu ve sırdaşlığı paylaştık. bu arada süper bir şey yaparak ben de onu debian dünyasına kazandırdım. pek de güzel oldu.
gel zaman git zaman, ben daha "oley oley bak fibo hesaplattırıyorum" nidalarındayken o adım adım mezuniyetine yaklaşırken kısa bir ankara turu atma şansımız oldu. o gün, garip vedalaşma konuşmamıza rağmen, sanırım pek bir yere gitmeye niyetli olmadığımı anlamıştır.
ve işte tanışmamızın üzerinden bir seneden fazla geçtiği bugün bu uzak ama sevgili dostumun, minik pisinin doğum günü..
ben bu sene unuttum, bir bahanem olamaz bu duruma -ama pek çok bahanem var elbette, insanım olsun o kadar- ve o yüzden beni "bilişim" dünyasına bağlayan, türlü geyiği paylaşan ve blog'umun "isim babası" üzerine ufak bir şeyler yazmak istedim.. şey sanırım gönlünü de almak istedim biraz..
canım, doğum günün kutlu olsun çok.. iyi ki doğdun, iyi ki öyle bir tesadüf oldu da tanıştık, geceler ve günlerle tartıştık, cırcır konuştuk, icabında memleketi, kimi zaman insanları kurtardık..
bir de kocamanından .hug. (=

Merhaba Dunya!

klasik bir bilgisayarcı girişi yapayım dedim.. bu "merhaba dünya" geyiğine ezelden beri uyuzum var ama neyse bakalım..
elimden geldiğince -hali hazırda pek de becerikli olmayan bir bilgisayar/debian kullanıcısı olarak- kullandığım programlar, girdiğim siteler, belki kameralar, teknolojik ürünler üzerine deneyim ve izlenimlerimi paylaşayım dedim..
günler geçer ben -bir ihtimal- geliştikçe daha detaylı ve işe yarar bir yer haline gelir belki buralar.. yoksa herkes yazıyor ben de yazayım diye bir gayem yok.. yok ya kıskanç gibi mi duruyorum ordan? P=
amaçlarımdan biri de kendi kişisel gelişimimi bu vesile ile incelemek tabi.. bu yüzdendir ki okunma gibi bir kaygım yok -kendi kendime 2.şahıslar gibi konuşmayı çok severim zaten ben..
ha ne diyordum
Merhaba Dünya!

credits:
blog title: silent storm
webspace: v42