ismailari.com

İsmail Arı'nın anasayfası

Nisan 2010 için arşiv

Güzel Diyarbakır

9 yorum yapıldı

Perşembe sabahı uçakla, SİU'2010 için İstanbul'dan Diyarbakır'a geldik. Konferans ile ilgili değil de yörenin bendeki izlenimleri ile ilgili yazmak daha anlamlı olacak.

İlk akşam Diyarbakır turu yaptık. Turda, bize Dicle Üniversitesi öğrencileri ve mezunları rehberlik ettiler. Önce profesyonel rehber sanmıştım ama sonra tanışınca öğrendim. Gayet güzel rehberlik ettiler. Gezilip görülesi çoğu yeri gördük. Cahit Sıtkı'nın Evi, Dengbejler Evi, Keçi Burcu, Artuklu Sarayı ve Hz. Süleyman Camii civarı, Dört Ayaklı Minare aklımda kalanlar. Aynı günün akşamı Class Otel'de belediyenin sponsor olduğu bir yemek tertip edilmiş, ona katıldık. Yemeklerden içeceklere, müzikten ışıklandırmaya çok güzel bir akşam geçirdik. Müzisyenler uzun süre oturak parçaları seslendirdiler ama sonra Delilo isteklerine itiraz edemediler ve ortam bir anda şenlendi, yüzden fazla kişi halay çektik. Delilo bir iki türküden sonra tadını yitiriyor bence. Ekip pek çeşitleme yapamadığındandır belki de. Sonra Hazal'a geçtik, daha az kişi devam etse de benim daha çok hoşuma gitti. Sonra Şemamê çaldılar ve oynadık. İki tane şey dikkatimi çekti: İlki ev sahiplerinden Şemamê oynayabilen kişi sayısı bir elin parmaklarını geçmiyordu, ikincisi de bütün akşam boyunca hiç Kürtçe türkü sözü okunmadı, öyle ki Şemamê'yi enstrumental çaldılar. İlk gözlemim Diyarbakır'a has değil. Genel olarak her yörenin insanı kendi türkülerine ve danslarına uzak; onlardan keyif alamayan ve onları köylülük, gerilik ve cahillikle örtüştüren dejenere bir kimliğe bürünüyor. Ya da tam tersi bir muhafazakarlıkta görünüp kültürü pazarlayan teyteyci kimliklere. Eğer gençler kültürü içinde yaşatırsa halk müziği ve danslarının  tadına doyum olmaz... deyip kişisel mevzuları kapatayım. Aslında bu yörede daha çok bilen insan beklentisi içine girmiştim fakat sanırım bu memleketin her yerinde benzer. İkinci konu da enstrumental şarkı konusu. Keşke Şemamê'yi özgün halinde dinleyip, onlarca kişiyle oynayabilseydik. İkinci akşam valilik sponsorluğunda gala yemeği vardı ve Gazi Köşkü'ndeydik. Bir çeşit yanık sesli amcalar korosu olan müzisyenlerimiz bu sefer özgün dilinde türkü seslendirdiler. Fakat önceki günün coşkusu yakalanamadı. Size çok saçma gelebilir ama bunda ne müzisyenlerin becerisi, ne dil, ne türkü sebepti; bence ortamın dekorasyonu etkiliydi ve de c2h5oh eksiği. Önceki akşamın loş sarı ışıklarının aksine, beyaz, ortaya çıkanı kabak gibi gözler önüne seren floresan lambaların altında meydana çıkmayı, desteklerle cesaret katsayısı arttırılmamış aynı çoklukta insan göze alamadı. Alanlarla halay çektik, misket oynadık, yine beraberce yorulduk.

Üçüncü gün Hasankeyf, Midyat ve Mardin gezisi vardı. Önce Hasankeyf'e gittik. 1970'lerde onbini bulan kale içi nüfus, bugünlerde üçbinden az. Civardaki köylerin çoğu şu an harabe konumunda. Bana kalırsa Hasankeyf bakımsızlıktan tarihi eserden çok bir harabe, bir kalıntı görünümünde. Tarihi, yazının buluşundan öncesine dayanan yerleşkenin büyük bir bölümü, eğer baraj yapılırsa sular altında kalacak. Anlatılana bakılırsa baraj yüz yıla kadar dolup işlevini yitirecek. Ve engellenmezse binlerce yıllık kültür sular altında yitirilecek. Dediğim gibi, zaten şu anda tarihi eserden öte tarihi harabe görünümünde. Önemli bir eser diye gösterdikleri Ulu Camii'nin ne ululuğu kalmış, ne de doğru düzgün bir yapısı. Yukarı tırmanırken yaya yolları çok kötü, taşlar spor ayakkabılarımı harcayacak kadar tümsekli çukurlu. Burası çok turistik bir yer, yollarının bizim köyün yollarından bir nebze farklı olması lazım. Baraj yapılacak yapılmayacak muğlaklığı ve yatırım güvensizliği yörenin insanını usandırmış. Hasankeyf'in ardından Midyat'a uğradık. Gümüş ustalarının dükkanlarında geçti zamanımız, şehirde de dolaştık biraz. Ardından Mardin'e gittik. Muhteşem bir konumu ve potansiyeli var. Kendine özgü bir motifi ve önündeki -Mezopotamya'nın bir parçası- Mardin Ovası manzarası ile tam bir açıkhava müzesi. Ama şehrin içinde yayadan çok taşıt var. Gönül rahatlığıyla yürümek mümkün değil. Tek yön olan caddelere ters yönden giren halk otobüsü şoförleri de şehrin bir parçası! Hatta aksini iddia ederek sizinle didişebiliyorlar bile. Yayalara kalan dapdar kaldırımlar şehrin iç görünümünü çok bozuyor. Bir şekilde şehrin içi mesai saatlerinde taşıt trafiğine kapatılabilse ve alternatif yollarla (tramvay, teleferik, at) ulaşım sağlansa ne kadar güzel olur. Mardin konum ve motif olarak gördüğüm en güzel şehirlerden birisi.

Gezilerin ardından çoğu katılımcı geri döndü. Ben biraz da sakin ve aracısız gezmek için iki gün daha kaldım. Zira öbür türlü gözlemlerinizden kendi fikirlerinizi değil, rehber ve arkadaşlarınızın fikirlerini ediniyorsunuz.

Pazar günü uyandım, kaldığım Kaplan Otel'de kahvaltımı yapıp çıkarken İstanbul'dan gelmiş bir arkadaş ile tanıştım. Dışarıda kahvaltı yapacaktı. Hasanpaşa Hanı'ndaki Kahvaltıcı Kadri'yi tavsiye etmişleri, ben de üç gün daha erken gelmiş ve ondan önce bilgiler edinmiş birinin edasıyla bu bilgiyi sattım! Ben de eşlik ettim kahvaltısına çay içerek. Yiyemedim çünkü o kadar çok şey vardı ve ben o kadar toktum ki gözüm korktu. İnsanlar burda nasıl zayıf kalabiliyor anlamıyorum. Gün içi her dakika yemek yeseniz, çeşit bitmez. Neyse, elemanla sohbet ettik. Diyarbakır'ı sevmiş ama insanını sevmemiş. Benim fikirlerim bahsettiğim gibi dolaylı olduğundan pek yorum yapmadım, sadece dinledim. Ama gün bitiminde, itiraz etmediğime pişman oldum.

Kahvaltı ertesinde Ulu Camii'yi tekrar ziyaret ettim ve sonra Keldani Kilisesi'ne gittim. Orada çekirdek bir aile ile karşılaştım. Kilise çok güzeldi. Görevlisi tatlı bir amca. İçerde Diyarbakır'ın 19. yüzyıl sonlarındaki resmi nüfus oranları vardı. Yarıya yakını Ermeni, bir sürü Süryani, bir sürü Keldani var. Şimdi çoğunluk müslüman Kürtler. Bir ara biz de avluda dururken baba sözü bize getirdi. Bir sünni Türk, bir Alevi Kurmanci, bir Zaza ve bir Keldani aynı avluda güzel güzel sohbet ediyor... Sohbet bitti. Sonrasında birlikte Sema Ocak Evi'ne gittik. Orayı gezdik. Görevli bir kadın, çocuğuyla orada yaşıyormuş ve oraya gelen ziyeretçilerin bahşişleriyle geçimini sağlıyormuş. Zaten gezdiğimiz yerlerde temel eksik bu organizasyon eksikliği. Müze Kart'ınız olsa da bu gibi kimi yerler Kültür Bakanlığı'na bağlı olmadığı için fayda etmiyor. Buralar hep kişilerin veya vakıfların inisiyatifleri ile turizme açılmış. İyi ki de açılmış. Ama haliyle de yardımlar ile bakımları devam ettiriliyor. Tavsiyem cebinizde bol bozukluk ile gezmeniz ve benim gibi para üstü olmayan görevlilere kağıt para verip iç cızlatmamanız. Neyse ki, ev çok güzel bir konumdaydı ve değdi. İçerde Diyarbakır'da yüz-yüzelli yıl öncesinde dokunmuş örnek kıyafetler vardı. O dönemde sadece mutfağı değil, birçok yönü zenginmiş buraların. Fotoğraflardan eski insan manzaralarını görünce de çok şaşırdım. Giyimleri, saçları falan artist gibi hepsinin. Çıkışta Ermeni Kilisesi'ne uğrayacaktık ama tadilatta olduğundan giriş yapamadık. Sonrasında aile ile vedalaştım ve Ankara Üniv.'den yeni tanıştığım arkadaşlarla buluşup geziye onlarla birlikte devam ettim. Birlikte Meryem Ana Kilisesi'ne, Diyarbakır Kilisesi'ne, Melik Ahmet Paşa Camii'ne ve İskender Paşa Camii'ne gittik. İskender Paşa Camii'nin avlusunda çocuklarla epey keyifli vakit geçirdik. Kız çocuklar biraz daha uysallar. Erkekler sürekli didişiyor, boğuşuyor, hatta birbirlerine çok ağır küfür ediyorlar. Kızların arasında bir turuncu kafa vardı ki çok şekerdi. Ondan sonra ara sokaklardan dolaşarak ciğerciye, hana çay içmeye, alışverişe ve kadayıfçıya falan gittik. Her yer çocuk kaynıyor. Gezerseniz biraz sıkıntı oluyor, peşinizi bırakmıyorlar. Hele bir de benim gibi sarışınsanız "hello, where are you from, hey turist" diye hemen yanınıza üşüşüyorlar! Ama korkulacak bir şey değil kesinlikle. Çok saflar, temizler. 10 tane sakız aldık bir liraya. İstanbul'da markette bile bu fiyata bulunmaz. Çocuklar sevinçten uçarak gitti. Tabii el verip kol kaptırmamak için biraz hızlı yürümek, sabitlenmemek gerekebiliyor. Zira sakız alma hamlenizi gören öteki çocuklar anında bitebiliyor etrafınızda. Esnaf için de sıkıntı olduğunu düşünüyorum. Örneğin Midyat'ta vitrinlere bakarken yanımızda biten çocuklar sebebiyle çoğu dükkanı esgeçmek durumunda kalmıştık. Diyebilirsiniz ki vitrini değil de bu problemi esgeçmek olmuyor mu bu cümleler... Haklısınız ama ne yazık ki gözlemlerim bu yönde, haber kipinde paylaşıyorum. Otele dönüşte peşime bir ufaklık takıldı. "Abi tartıl, abi tartıl"... Adı Fatih'miş. Otele giderken girdiğim her yerde kapının önünde beni bekledi. Toplamda bir kilometre eşlik etmiştir bana. Esnaf da bana gülüyor, ben de halime gülüyorum ama Fatih peşimi bırakmıyor. Çocuklara para verince onların bu şekilde çalıştırılmasının devam etmesine vesile olduğumun farkındayım ve bunu İstanbul'da yapmam ama bu sefer dayanamadım ve bir lira verdim. Kendimi oryantalizm düşüncesindeki beyaz adam gibi hissettim ve bu hissiyattan tiksinerek otele girdim. Akşam maç vardı, izlemek için kahveye gittim. Galatasaray, Bursaspor'u yensin hevesiyle izledik ama malûmunuz Fenerbahçe kazandı.

Son günümde Mardin Kapı'dan çıktım, Hevsel Bahçeleri'ne bakan güzel bir çay bahçesi var, oraya çömdüm, manzaraya daldım. O kadar sessiz ve huzurluydu ki, aklımdaki problemlerle uğraşmak geldi aklıma ve kağıt kalem açıp Fourier dönüşümü ardışık diziler için O(nlogn)'den daha hızlı yapılır mının çözümüne baktım ve önceki değerleri kullanarak hızlıca yapılan bir çözüm buldum. Sonra bir minibüse atlayıp On Gözlü Köprü'nün yanındaki tepede konumlu Erdebil Köşkü'ne gittim. Dicle'ye doğru yiyip içtikten ve köşk çalışanlarının hoş sohbetinden sonra yürüyerek geri döndüm. Yollar biraz ıssız, köpek çıkabilir dediler, o sebeple korkmuştum ama korktuğum başıma gelmedi ve Dağkapı'ya kadar yürüyerek geldim.

Ve zaman doldu, yel yolculuk havası esti, İstanbul'a döndüm. Aklımda Diyarbakır'a dair güzel anılar kaldı. Hem bizi ağırlayan ekibin, hem de genel olarak sokakta karşılaştığım insanın sıcaklığı, içtenliği ve Anadolu/Mezopotamya kokusu kaldı. Sokaklarda gördüğüm çoğu şehirden daha hoşgörülü insanlarla karşılaştım. Bir gün fırsatınız olursa mutlaka gitmelisiniz ve tur rehberlerinin yokluğunda sokaklarda gezerek kendi fikirlerinizi edinmelisiniz. Medyada kasıtlı olarak çirkinleştirilen tarihin büyük medeniyetlerinin yücelttiği bir yörenin güzel insanının hoşgörüsüne ve arkadaşlığına tanık olmalısınız.

Çok fotoğraf çektim, çekildim. Bazısını internete yükledim: Diyarbakır, Mardin, Hasankeyf, Midyat. Ve altta da avludaki enerjik ufaklıklarla geçen güzel anlardan kareler...

28 Nisan 2010, Kategori: Gezi,

Akademik poster hazırlama

4 yorum yapıldı

Diyarbakır'da sunmak üzere poster hazırlamam gerekiyor ve bu benim ilk poster hazırlayışım. Biraz araştırdım, etrafımdakilere danıştım ve akademik poster hazırlamak için birkaç araç kullanıldığını gördüm. İlginç ama çevremdekiler genellikle Powerpoint kullanıyor. MS Office araçlarının sadece adlarına değil de ne olduklarına bakanlar Publish'i kurcalayıp, onun bu iş için daha doğru araç olduğunda karar kılıyor. Benden daha çok LaTeX sevenler, poster paketlerini kullanarak tüm işlerini LaTeX ile yapıyor. Basım merkezleri ise Photoshop, QuarkXpress veya daha farklı ticarî ürünler kullanabiliyor ama onlar da adı üstünde ticarî ve lisansları okulda yok.

Powerpoint ile hazırlamak istemedim, GNU/Linux destekli bir araç olsun istedim. Zaten Powerpoint profesyonel sunum aracı, bu iş için kullanılabilir belki ama bu işin asıl muhatabı değil. Publish'i de MS ürünü olduğu için sıkışırsam dönmek üzere esgeçtim. LaTeX sevgim çok ama sadece matematiksel formülleri yazarken ve sayfa içi referanslarda. Onun ötesinde her şeyi LaTeX'te yapmak bana göre değil. Her problemi çiviye çevirip çekiçle dalmak gibi bir şey. LaTeX ile her şey yapılabilir, tamam ama biraz da kullanıcı dostu olsun. Kullanımı kolay olsun. İşte tam bu noktada Scribus'u keşfettim. Scribus, açık kaynak ve profesyonel bir broşür, kitap, poster, vb. tasarım programı. Hem Windows hem GNU/Linux'ta çalışıyor. Powerpoint gibi kutucuk çiz, yazı ekle, stilleri ayarla, sürükle bırak, resim koy, vb. güzel bir kullanıcı dostu arayüze sahip. Son sürümlerinde içine LaTeX, GNU Plot, Lilypond kutuları derlenip gömülebiliyor. Benim LaTeX'e ihtiyacım vardı, bonus olarak konfigürasyon değişikliklerini de kendi isteğime göre yaptım ve kutuları ekledim.

PDF çıktısı alırken, basımda kullanılan CMYK ayarları yapılabiliyor. Zira bu ayarlar olmazsa bastırdığınız posterin renkleri başka telden çalabilir ve şaşırıp kalabilirsiniz. Bugün itibariyle bastırdığım (ve tasarladığımla birebir aynısını gözlemlediğim ilk posterim) şöyle:

Akademik poster veya herhangi bir broşür hazırlamak durumunda kalırsanız bir göz atın derim. İlgilenirseniz olası soruları yanıtlayayım...

LaTeX eklemek ne işime yarar? Powerpoint'te de formül yazabiliyorum.

Evet yazabiliyorsunuz ama henüz LaTeX'deki esneklik yok. Her işin erbabı var. Ayrıca tezi veya makaleyi LaTeX ile yazdıysanız o formülleri Powerpoint ile tekrar yazmak hiç hoş olmuyor. Her şey daha tembel bir dünya için: Kopyala, yapıştır!..

PDF'i yakınlaştırsam da resimler neden bozulmuyor?

Çünkü o resimler EPS veya SVG olarak kaydedildi. Siz yaklaştıkça tekrar çizilip gösteriliyorlar.  Yüz resimlerini ve yüz üstünde bulunan noktaların gösterildiği resimleri matplotlib ile EPS formatında kaydettim. Yüz resimleri %100'den daha fazla yaklaşınca bozulabilir ama diğerleri bozulmaz. Çünkü bahsettiğim gibi onlar ölçeklenebilir, yüz resimleri ise bitmap. Merak ederseniz herhangi bir EPS dosyasını bir metin editörü ile açıp bakın.

Tablolar PDF'ten gömme gibi?!

Evet, ne yazık ki tabloları tekrar oluşturmaya zamanım olmadı ve PDF'ten gömdüm. Font farkı biraz can sıkıcı ama onlar da ölçeklenebilir. Bu arada gömülen nesnede başka şeyler varsa sorun değil, nesne kaydırılıp ölçeklenerek görünen kısma getirilebiliyor. Hatta belgenize, 100 sayfalık başka bir dokümanın 99. sayfasındaki bir tabloyu gömmeniz mümkün.

Disk figürünü nasıl oluşturdun?

Bu ve benzeri SVG figürler için Inkscape kullanabilirsiniz. Hem kullanımı kolay, hem de şirin şeyler üretilebiliyor. Ayrıca çoşup pstricks ile de üretebilirsiniz. Pstricks'in kodunu doğrudan yazmaya üşenirseniz LaTeXDraw imdada yetişir.

Dokümanlarım başka formatta, nasıl format değiştireyim?

Imagemagick kullanabilirsiniz. Örneğin ben PDF olan posteri üstte görünen resmi elde etmek için PNG'ye şunu kullanarak çevirdim:

convert -scale 10% poster.pdf poster.png

Ben küçük resimler ekleyeceğim, SVG olsalar iyi olacak. Tümünü ben çizmeyeyim. İndirilecek bir depo var mı?

Var elbette. Örneğin ben openclipart'tan iki tane kullandım. Simge ararsanız Tango'ya bakabilirsiniz.

Ben de Ubuntu kullanıyorum ama depodaki Scribus senin dediklerini desteklemiyor?..

Web sayfasından Debian/Ubuntu paketlerine bakıp ekleyin. Sonra da scribus-ng paketini indirin. En son çıkan ve deneme aşamasında olan sürüm bu oluyor.

Sonuca gelirsek... Beni en çok korkutan kısım grafik deneyimimin Ubuntu'ya geçince ellerimden uçacakmış gibi görünmesiydi. Deneyim dediysem, gayet amatör bir deneyim, figür falan oluşturmak için. Photoshop'un muadilini (Gimp'e ısınamadım henüz) bulamasam da farklı alternatifler öğrendim. Inkscape çok hoşuma gitmişti, Scribus cabası oldu. Öğrenirken resmî dokümantasyonuna ve tutorial'e baktım. Zaten güzel arayüzü sayesinde kendiniz de öğrenebiliyorsunuz.

Yazıda tamamen özgür yazılımları kullanarak nasıl poster hazırlayabilceğinizi anlattım. Neler yapılabileceği kişinin hayalgücüne ve zevkine kalmış...

Ekleme: Bu yazının devamı niteliğinde bir yazı daha yazdım. Buradan görebilirsiniz.

21 Nisan 2010, Kategori: Genel, Etiketler: , , , ,

Araçların doğası

3 yorum yapıldı

Facebook ilk çıktığında (A.B.D.'deki bir arkadaşın davetiyle) üye olmuştum. "Aaa, ne güzel, bağlantıyı koparmıyoruz" idi ilk günlerde. Muhteşem bir açığı yakalamıştı birileri. Ardından bizim üniversiteye sıçradı. Sonra lise arkadaşlarını, hatta daha eskilerini buldum Facebook'tan. Süperdi, yıllardır görüşmediğim kişileri bulmuştum. Karşılıklı ekleşmeler, "Vay, İsmail n'aber? Nerelerdesin, neler yapıyorsun?" mesajlarına yazdığım cevaplar, "Abi biz de Beşiktaş'ta bir yer açtık, geçinip gidiyoruz. Bir akşam Taksim'de buluşalım, muhabbetleşelim." sözleri ve hiçbir zaman gerçekleşmeyen buluşmalar. Ve "kopmak istemediğim arkadaşlarla zaten hâlâ haberleştiğim"in farkedilmesi.

Sonra ufaktan başlayan bir teşhir dönemi: fotoğraf eklemeler, video göstermeler, ben şucuyum bucuyum diye gruplara üye olmalar, manken bakışlı fotoğraflar, enstrumana bir iki kerecik dokunulmasına rağmen onunla çekilen sanatsal pozlar, dünyanın buralarını gezdim diye tıklamalar, hatta yüzük takmaya politik olarak karşı olan arkadaşların sevgilileriyle boy boy fotoğrafları. İnşa edilen yeni bir Facebook kimliği.

Normal kullanımınızın tersine, tuştakımında "facebook"u bir saniyeden az bir sürede yazıyorsanız, tarayıcıyı açınca eliniz ilk "face..." karakterlerine gidiyor veya paylaşımlarınızı kimsenin "like" etmemesi(!) canınızı sıkıyorsa bilin ki yeni bir psikolojik hastalığın semptomlarını gösteriyorsunuz.

Bunları böyle yazabiliyorum, öyle ki ben de bunlardan musdaribim. Üstelik arşivomani (!) hastalığını da işin içine katarsak, işler hiç iç açıcı değil. Sıkıntım zaman değil artık. Sıkıntım bu işteki çarpıklık. Ürettiği çarpık iletişim biçimi. İki kişinin muhabbetinin genel tarafından izlenmesi, yorumlanması; işbirliği içinde mimlenmek; sergilenen yeni yapay kişilikler, teşhircilik.

"Aktivist olarak bir şeyler sergileyelim, sesimizi duyuralım"sa niyetiniz, merak etmeyin, orada da moderatörler var. Sadece izin verilen sesler duyurulur. Çatlak sesler tek tıklamayla veritabanı arşivlerine gömülür.

Madem öyle, bırak git diyebilirsiniz. Birkaç kez hesabı kapatmama rağmen -özellikle Almanya'daki arkadaşlarla- yaşadığım iletişim kopuklukları yüzünden hesabımı yine etkinleştirmek durumunda kaldım. Zaten bağlantılardan da kopmak gibi bir niyetim yok. Hatta faydalı olduğu anlar da çok. Örneğin bir etkinliğe birlikte gideceğim arkadaşa bir davetiye yollamak ve tarih/açıklama/yer bilgilerini takip etmesini sağlamak çok kolay. Ya da belli bir mekanda düzenlenen etkinlikleri aktif olarak görebiliyorum. Yani özetle, problemim araçla değil, kullanılma biçimiyle. Özetle yapay teşhircilikle. Tüketme kapasitemin çok üstünde yığılan medyayla. 3 yılın deneyimiyle biliyorum ki, Facebook bahsettiğim faydalarının ötesine geçemez ve iletişim biçimi aynı paralellikte devam eder.

Şu an farklı bir yöntem seçtim kendime. Önceden arkadaş grupları yapmıştım ve tüm arkadaşlarımın değil, sadece bu arkadaşlarımın görmesine müsaade ediyordum çoğu paylaşımımın. Hatta onları da öbeklemiştim. İzlediğim(!!!) kişiler de belliydi. Onun dışındaki paylaşımları gizlemiştim. Şimdi sildim grupları falan. Her şeyi görünür kıldım arkadaşlarıma. Kimseyi de gizlemedim. Durum böyle olunca bir şey paylaşasım gelmiyor pek. Birinin bir şeyini "like" ederken de tekrar düşünüyorum. Mesajları özel yolluyorum gerekirse. Sanırım, bu daha caydırıcı oldu benim için. Hem teşhirciliğin dik âlâsı oldu hem de caydırıcı sebebi.

İnsanlık olarak hiç tecrübemiz olmayan iletişim biçimleriyle sınanıyoruz. Sonumuz hayırlı olsun!..

17 Nisan 2010, Kategori: Genel,

Arama uzayı

Yorum yapılmadı

Arama algoritmalarında kendimize bir arama uzayı tanımlarız. Bunun ne olduğunu anlamak için bilgisayar bilimleri okumaya hiç gerek yok. Şöyle anlatayım: Herkesin hayatı, kendisi için tanımlı olan uzay ve herkesin aradığı bir şey var. Hangi algoritmayı kullandığımız (düzen, çalışma/sorgulama biçimi), nasıl bir donanıma sahip olduğumuz (zeka, pratik, ekonomik durum), kaç işlemciyle çalıştığımız (uyumluluk, birlikte çalışabilme [iş yapıp yaptırabilme] yeteneği) gibi etkenler başarıyı etkiliyor. Şüphesiz herkesin farklı bir algoritması var bu arama işleminde. Ama sanıyorum ki hepimizin kullandığı temel bir yöntem var: Bir yolda gideriz, yol ayrımına gelirsek bizi daha iyi yola sokacak yöne döneriz. Bazen de umudumuzu yitirir ve seçimi o yollardan birine doğru yapmayız. Bir sıçrama yapar ve bambaşka bir noktasına gideriz bu uzayın. Sıçramaları çocukken daha sık yapar, büyüdükçe yapışıp kalırız yolumuza. Genel olarak çok sıçrama yaparsak, aradığımızı bulamayız; az sıçrarsak yerel iyilerle yetinmek durumunda kalır, en güzelinden mahrum oluruz. Buna bilgisayar biliminde Benzetimsel Tavlama (Simulated Annealing) demişler. Bu algoritmaları, bizim de birer gezgin olduğumuzu düşünüp kısacık ömrümüzün arama/tarama ile geçtiğini hesaba katarak okursak muhakkak daha farklı yorumlarız. Yani, insandan kopuk şeyler değildir özlerinde.

Benzetimsel tavlama, sonsuzda global en iyiyi mutlaka bulacaktır. Sonsuz?.. ve en iyi?.. Hayatımızın sonsuz olmadığını ve -göreceli yaşanan her yaşamda- seçim yaparken 3 ile 5'i karşılaştırırkenki basitlik lüksüne sahip olmadığımızı aklımızdan çıkarmayalım.

13 Nisan 2010, Kategori: Genel, Etiketler:

Diyarbakır yolcusu kalmasın...

2 yorum yapıldı

Sinyal İşleme ve İletişim Uygulamaları Kurultayı'nın (SİU) bu yılki ev sahibi Dicle Üniversitesi. 22-24 Nisan'da düzenleniyor. Ben de kurultaya katılacağım. 23 Nisan sabahı bayramımızı kutlayıp, öğleden sonra 4 numaralı poster oturumunda "Yüz Nirengi Noktalarının Zamansal Öz-benzerliğine ve Kelime Çantasına Dayalı Yüz İfadesi ve Kafa Hareketi Tanıma" (Facial Expression and Head Gesture Recognition Using Temporal Self-similarity and Bag of Words of Facial Landmarks) adlı çalışmamızı sunacağım.

Bildirinin özetçesi şöyle:

Yüz ifadeleri ve kafa hareketleriyle yapılan jestlerin otomatik tanınması, işaret dili tanıma ve insan bilgisayar etkileşimi gibi birçok alanda önemli bir değere sahiptir. Bu çalışmada, hareket tanımada başarısı gösterilen, takip noktalarının öz-benzerliğine dayalı yöntem, yüz ifadesi ve kafa hareketi jestlerini sınıflandırmak için adapte edilmiştir. Ayrıca, takip edilen yüz nirengi noktalarının histogramına dayalı, daha başarılı yeni bir yöntem önerilmiştir. Sunulan yöntemler Saklı Markov Modeli tabanlı çalışmamızla birleştirilmiş ve sınıflandırma başarısında %15 artış sağlanmıştır.

Gelenlerle Diyarbakır'da görüşmek dileğiyle.

9 Nisan 2010, Kategori: Genel, Etiketler: ,

Nümerik işlemler ve bilgisayarla görmek için Python

Yorum yapılmadı

Uzun süredir nümerik hesaplarım için IPython kabuğu ile Python'ın numpy modülünü kullanıyorum ve çok memnunum. Hele Opencv'nin güzel sürümündeki (svn'deki sürümü oluyor) matris yapısını numpy dizisine (ndarray) çevirebilince işlem kolaylığı ve çokluğu arttı, daha da şık oldu.

Bunun ne faydası var konusunda bir fikir vereyim. Opencv, içinde birçok bilgisayarla görme algoritmasını barındıran muhteşem bir açık kaynak kütüphane. Numpy, Matlab'ın Python muadili. Numpy neredeyse standart oldu ve tüm nümerik kütüphaneler onu destekliyor. Benim kullandığım en temel kütüphaneler grafik kütüphaneleri (matplotlib gibi) de Numpy destekli. Numpy'ın en güçlü yanı, dilimleme ("slicing") operatörü. Matlab kullananlar bunu bilir ve sever. Ayrıca işleri vektörlemek de mümkün. Kullanımı çok esnek. Opencv'de hazır fonksiyonları kullanmak çok kolay ama resimlerden istatistik falan toplayacaksanız işiniz Numpy sözdiziminde olduğu kadar kolay değil. Böyle bir çevirme işlemiyle ikisinin gücü birleşiyor. Bu arada, tüm bahsettiğim kütüphaneler platformdan bağımsız.

Şu anlık yalnızca float32 ve uint8 veri türlerini çevirdim.

def opencv2numpy(matIn):
    """Convert opencv matrix to numpy matrix (supports 1 and 3 channels currently)"""
    if matIn[0].type == cv.CV_8UC1 or matIn[0].type == cv.CV_8UC3:
        dtype = 'uint8'
    elif matIn[0].type == cv.CV_32FC1 or matIn[0].type == cv.CV_32FC3:
        dtype = 'float32'
    else:
        print "No support except float32 and uint8 yet"
        return 0

    if matIn[0].type == cv.CV_8UC3 or matIn[0].type == cv.CV_32FC3:
        matOut = np.fromstring(matIn.tostring(), dtype=dtype).reshape(matIn.height, matIn.width, 3)
    else:
        matOut = np.fromstring(matIn.tostring(), dtype=dtype).reshape(matIn.height, matIn.width)

    return matOut
def numpy2opencv(matIn):
    if matIn.ndim == 3 and matIn.shape[2] == 3:
        nChannels = 3
    else:
        nChannels = 1

    h,w = matIn.shape[0], matIn.shape[1]
    if matIn.dtype == "uint8":
        if nChannels == 1:
            dtype = cv.CV_8UC1
        else:
            dtype = cv.CV_8UC3
    elif matIn.dtype == "float32":
        if nChannels == 1:
            dtype = cv.CV_32FC1
        else:
            dtype = cv.CV_32FC3
    else:
        print "No support except float32 and uint8 yet"
        return 0

    matOut = cv.CreateMatHeader(h, w, dtype)
    if nChannels == 1:
        cv.SetData(matOut, matIn.data, w*matIn.itemsize)
    else:
        cv.SetData(matOut, matIn.data, w*4*matIn.itemsize)

    return matOut

Güncel işimi görmesi için yazdığımdan hataları olabilir, biraz da verimsiz oldu. Örneğin bir tarafa iyiyken, diğer tarafa verimsiz çeviriyor. Fakat benim için şu an bu öncelik konusu değil. "Exception" fırlatmam lazım ama hariçten gazel okumak zor geldi, işimi görüyor.

Kullanırsanız, genellerseniz veya geliştirirseniz lütfen benimle de paylaşın.

Güncelleme:

Opencv Python arayüzünde zaten hazırmış bu kod. Hem diğer veritipleri için de genellenmiş. Yenisi dönüşümler şöyle:

def cv2array(im):
    depth2dtype = {
        cv.IPL_DEPTH_8U: 'uint8',
        cv.IPL_DEPTH_8S: 'int8',
        cv.IPL_DEPTH_16U: 'uint16',
        cv.IPL_DEPTH_16S: 'int16',
        cv.IPL_DEPTH_32S: 'int32',
        cv.IPL_DEPTH_32F: 'float32',
        cv.IPL_DEPTH_64F: 'float64',
    }

    arrdtype=im.depth
    a = np.fromstring( im.tostring(),
                              dtype=depth2dtype[im.depth],
                              count=im.width*im.height*im.nChannels)
    a.shape = (im.height,im.width,im.nChannels)
    return a

def array2cv(a):
    dtype2depth = {
        'uint8':   cv.IPL_DEPTH_8U,
        'int8':    cv.IPL_DEPTH_8S,
        'uint16':  cv.IPL_DEPTH_16U,
        'int16':   cv.IPL_DEPTH_16S,
        'int32':   cv.IPL_DEPTH_32S,
        'float32': cv.IPL_DEPTH_32F,
        'float64': cv.IPL_DEPTH_64F,
    }
    try:
        nChannels = a.shape[2]
    except:
        nChannels = 1
    cv_im = cv.CreateImageHeader((a.shape[1], a.shape[0]),
                                                dtype2depth[str(a.dtype)],
                                                nChannels)
    cv.SetData(cv_im, a.tostring(),
    a.dtype.itemsize*nChannels*a.shape[1])
    return cv_im

8 Nisan 2010, Kategori: Programlama, Etiketler: , ,

Python ile PCA (Temel Bileşenler Analizi)

Yorum yapılmadı

Bu yazı temel bileşenler analizinin Python ile kodlanması üzerinedir. Temel bileşenler analizi hakkında detaylı teorik bilgi için tıklayınız.

Uzun süre önce MATLAB ile PCA kodunu paylaşmıştım. Python kullanarak biraz daha geliştirdim. PCA bilgisi için önceki yazıya bakabilirsiniz. Farklı olarak özvektör sayısı yerine varyansın toplam varyansa oranını parametre olarak alıyorum. 1.0 demek tüm varyansın dahil olması demek oluyor. Literatürde, genelde 0.98 veya 0.95 değerleri seçiliyor.

import numpy as np

def pca(samples, percentage=None):
    """
    Perform Principal Component Analysis

    Calculate the eigenvectors V (each as a column) and eigenvalues D of the
    given samples which is a matrix involving a sample point in each row.
    If #samples is less than #dimensions, it uses the faster PCA calculation.
    Refer to the corresponding part in the thesis (Ari2008) for details."""

    nSamples, nDim = samples.shape
    meanSample = samples.mean(0)

    # Subtract the mean from all samples to align them to origin
    samples = samples - meanSample

    # For faster calculation, use the transposed matrix of samples
    if nDim > nSamples:
        samples = samples.T

    # Find the covariance of the distribution
    C = np.dot(samples.T, samples) / (nSamples * 1.0)

    # Find the eigenvectors (V) and eigenvalues (D) of the samples
    # Recall that C*V = V*D and each column of V is an eigenvector
    D,V = np.linalg.eigh(C)

    # We need the eigenvalues sorted from higher to lower
    indices = list(index for index, item in \
            sorted(enumerate(D), key=lambda item: item[1]))
    indices = np.flipud(indices)
    D = D[indices]
    V = V[:,indices]

    # If faster calculation is done, we need to create the eigenvectors from the
    # found ones and normalize them. The eigenvalues remain the same.
    if nDim > nSamples:
        V = np.dot(samples,V)
        for i in range(nSamples):
            normV = np.linalg.norm(V[:,i])
            V[:,i] = V[:,i] / normV
        V = V.T

    # Compute the required # of dimensions acquiring the given
    # variance percentage
    if percentage is not None:
        totalVariances = [sum(D[0:i]) for i in range(len(D))]
        totalVariances = totalVariances / totalVariances[-1]
        nEnoughComponents = len(totalVariances)
        for i,val in enumerate(totalVariances):
            if val > percentage:
                nEnoughComponents = i+1
                break

        V = V[0:nEnoughComponents,:]
        D = D[0:nEnoughComponents]

    return V,D

Kullanırsanız ve/veya geliştirirseniz lütfen benimle de paylaşın.

8 Nisan 2010, Kategori: Programlama, Etiketler: , ,

Sınırlı hafızaya rastgele müzik seçimi

Yorum yapılmadı

Benim şirin bir mp3çalarım var fakat 1GB hafızaya sahip. Sık sık dinlediğim albümler var ama bazen değişik şeyler dinleyeyim istiyorum. Radyosu olmadığı için, müzik arşivimde dolaşıp şarkılar seçiyorum ve mp3çalara atıyorum. Bu işlemi elle yapmaktan sıkıldım, tüm şarkıları atacak yeterli hafıza da yok. Ben de Python ile bir klasörden rastgele mp3 dosyaları seçip başka klasöre atayım istedim ve alttaki kısa kod ile bu işi kısmen hallettim.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, random, time, shutil

if __name__ == "__main__":

    kaynakKlasor = u'/home/ismail/Music'
    hedefKlasor = u'/media/MUZIKCALAR/Music/' + time.ctime()[4:10] + '/'
    enCokDosyaSayisi = 160

    kaynakKlasor = kaynakKlasor.encode('utf-8')
    tumDosyalar = []
    #altDosyalar = []

    for root, dirs, files in os.walk(kaynakKlasor):
        for f in files:
            if f.endswith('.mp3'):
                tumDosyalar.append(os.path.join(root, f))
                #if root != kaynakKlasor: # Alt klasordeyim
                #    altDosyalar.append(os.path.join(root, f))

    random.seed()
    random.shuffle(tumDosyalar)

    print "Toplam dosya sayisi: " + str(len(tumDosyalar))

    if os.path.exists(hedefKlasor):
        shutil.rmtree(hedefKlasor)
        print "Onceki icerik silindi"

    os.mkdir(hedefKlasor)

    for i in range(enCokDosyaSayisi):
        shutil.copy2(tumDosyalar[i], hedefKlasor + str(i) + " " + os.path.split(tumDosyalar[i])[-1])
        print "(" + str(i+1) + "/" + str(enCokDosyaSayisi) + ") " + os.path.split(tumDosyalar[i])[-1]

Üstteki örnek, kaynaktan hedefe en çok 160 mp3 dosyası gönderebiliyor, hafıza yetmezse duruyor.

Bunu bir süre önce kendim için yazmıştım. Kardeşim de kullanmak istedi. Windows kullanıyor. Python'ı kurduk ve nasıl kullanacağını anlattım. Lisede okuyor ve dil bölümünde. Programlama bilmiyor fakat 5 dakikada kabaca nasıl çalıştığını anladı ve kendi işi için kullanabiliyor.

5 Nisan 2010, Kategori: Programlama, Etiketler: ,

Bir Turing Makinesi

Yorum yapılmadı

Kullandığımız bilgisayarlar (hesaplayıcılar) ne denli karmaşık görünürse görünsün, işlevsel olarak Turing makinesi ile aynı yeteneğe sahipler. Mike Davey, Bir Turing Makinesi adlı projede, Turing'in 1936'da yayımlanan makalesindeki makineyi görsel olarak bize sunuyor. Örnekler (çıkartma, sayma) çok basit görünüyor. İnanmak güç de olsa bu makinenin hesaplayabilme yetisi bu yazıyı yazdığım bilgisayarımla eşdeğer.

İlgili konuların öğrenimi ve eğitimi için çok güzel bir kaynak.

4 Nisan 2010, Kategori: Genel, Etiketler: