30 Nisan 2009 Perşembe

seymgeym



aklıma bir algoritma problemi getirip veya (daha güzeli) yaratıp onu çözmeye uğraşmak en büyük zevklerimden birisidir. bunun uygulanması için de "oyun"dan daha iyi bir alan olamaz. bu ara same game ismiyle bilinen efsane oyunu kafaya taktım. isim belki tanıdık gelmeyebilir. aynı renkten blokları bir araya getirip patlatarak yok ettiğimiz oyun. bir kaç temel algoritma var. aynı renkten ve birbirine komşu taşların tespiti, bu tespit edilen taşların yokedilmesi sonucu bunların üstünde kalan taşların bir kare aşağı inmesi, bir sütunda hiç taş kalmamışsa sağındaki bloğun tümünün en az bir kare yanaşarak sola yapışması, oyunun bittiğinin yani birbiriyle aynı renkte olup birbirine değen birden fazla taş olmadığının tespit edilmesi. çok zor problemler değil esasen, ama asıl olan kendine özgü bir yöntem geliştirmek, kod kopyalamamak ve en az döngü ve işlemle halletmeye çalışmak.

teknik detaya girmeden yapısal olarak anlatacak olursam, oyunun temel sınıfını içeren bir dosya ve bir de görsel olarak oyunu oynanabilir kılan pyqt'yi kullandığım dosya var. kısacası bir adet oyun motoru ve bir adet de oyun kaportası var. mümkün olduğunca genişletilebilir, değiştirilebilir bir ana oyun sınıfı yazdım. renk sayısı, oyun alanının kare sayısı vs her şey esnek. ve hatta renklerin kendisini bile (onlarca renk sayısına kadar) otomatik türeten bir kod parçası mevcut.

seymgeym'i de uitopy gibi google code sayfama attım. http://code.google.com/u/penguen@linux.erciyes.edu.tr/ adresinden erişilebilir. kodunun hepsini buraya koymam biraz abes olur. onun için google code'dan inceleyebilir, indirebilirsiniz. sadece aynı renkten olan ve birbirine komşu olan taşların tespit edildiği fonksiyonu ve tespit edilen bu grubun yıkılması fonksiyonununu yazayım örnek baabında.
    def etrafaBakin(self, yG, xG):
self.grup[yG][xG] = self.hangiRenk
for x, y in [[-1, 0],[0, -1],[1, 0],[0, 1]]:
if (yG + y in range(1, self.tahtaY + 1)) and (xG + x in range(1, self.tahtaX + 1)) and (self.tahta[yG + y][xG + x] == self.hangiRenk) and (self.grup[yG + y][xG + x] == 0) :
self.grup[yG + y][xG + x] == self.hangiRenk
self.etrafaBakin(yG + y, xG + x)

    def yik(self):
for n in range(1, self.tahtaX + 1):
for m in range(self.tahtaY, 0):
if self.tahta[m][n] == self.grup[m][n]:
for y in range ((m - 1), 0):
self.tahta[y + 1][n] = self.tahta[y][n]
self.tahta[1][n] = 0
if self.tahta[self.tahtaY][n] == 0:
for x in range(n+1, self.tahtaX + 1):
for y in range(1, self.tahtaY +1):
self.tahta[y][x-1] = self.tahta[y][x]
if x == self.tahtaX:
self.tahta[y][self.tahtaX] = 0

29 Nisan 2009 Çarşamba

nevbahar


bahar, bir nevi negatif entropi kaynağı. inanılmaz bir şey. ölüm uykusuna giren doğanın bir kuvvet eliyle mucizevi bir şekilde yeniden dirilmesi.

geçenlerde iki arkadaşımla pek tanınmayan bir mekanda çok güzel bir doğa yürüyüşü yapmıştım. yürüyüş, tepe tırmanışı, akarsudan karşıya geçme çabaları, kayalar, ağaçlar... tavsiye ederim, mutlaka bir fırsat yaratıp, insan eli pek değmemiş yerlere açılmalı. parkla bahçeyle olmuyor.

(resim: http://run4w4y.deviantart.com/art/Barfuss-118575565 )

28 Nisan 2009 Salı

google code

google'ın güzel bir hizmeti bildiğiniz gibi. proje yayınlamak ve ekiplere katılmak için güzel bir platform. ben de boş durmayayım dedim. daha önce burada açılışını yaptığım uitopy'cığımı google'ın sunucularına emanet ettim. bu süreçte hem svn kullanımında da pratik yapmış olacağım olacağım. bir de logo çiziktiriverdim gimp'le. kendim yaptım diye demiyorum, güzel oldu. ancak logo projeden 5 gömlek fazla oldu. fazla iddialı. bu logoya yakışır bir program için kamçılanmalıyım.

http://code.google.com/p/uitopy/

projemize bekleriz. yengeniz de çay yapar.

python ne abi?

1991'de doğan güzide bir programlama dili olan python, adını sanıldığı gibi bir yılan türünden değil, monty python komedisinden alıyor. ancak şu günlerde yılan sembolüyle özdşleşmiş durumda. pyqt'nin simgesinde (değiştirin abi çok kötü) ve dahi python'un simgesinde yılan görmek mümkün. buradan incelediğimizde, kendisinden daha yeni olan bir düzine uyuz (amatör veya özelleşmiş dilleri saymıyorum, onlara saygı duyuyorum) programlama dili mevcut. örneğin, visual basic, borland pascal, borland delphi. delphi demişken, allah belanı versin delphi. şimdi elimden geldiğince ön plana çıkan özelliklerine değinmek istiyorum.

  • python son derece üst seviye bir programlama dili. konuşuyor gibi kod yazabiliyoruz. programcı dostu. sentaksı çok güzel ve yazmanın dışında bazı dillerde bela olan kod okumayı da kolaylaştırıyor..

  • çok esnek,kemiksiz bir dil. programlama yaparken "şu şöyle olsa ne süper olurdu" dediğiniz fanteziye kaçan bir şeyi düşünüyorsanız o şey python'da muhtemeln mümkündür. ayrıca bir çok dilde ömür çürüten o tip tanımlamaları yok. önemsiz gibi görünüyor, ama göreecksiniz ki tip tanımlamalarının olmaması fantastik şeylere imkan tanıyor.

  • yüksek seviye dinamik tip desteği var.

  • uyumluluk abidesi. c, c++, java (jython), .net (ironpython) uyumlu. linux/unix, windows os/2, mac, amiga ve başka ne varsa onda çalışıyor. çalışabiliyor demiyorum dikkat ederseniz çalışıyor. yani çalıştırabilmek için zorlama şeyler yapmanıza gerek yok.

  • çok geniş yelpazede, çok çeşitli kütüphane desteği

  • e, bu kadar özelliği olan bir dil tabi ki nesne tabanlı programlamaya son derece uygun


klişe cümle kalıpları kullanmayı sevmem, bu da bir exception olsun bari. insanlar ikiye ayrılır python dilini sevenler, python diliyle henüz tanışmayanlar. wiki'den de şöyle diyorlar; "django, youtube, bittorrent istemcisi, pardus linux dağıtımı python kullanan önemli projelerden bazılarıdır. ayrıca google, nasa ve cern gibi büyük kurumlar da python kullanmaktadır. ayrıca gimp (sevdiceğim), inkscape, scribus and paint shop pro gibi bazı programlarda betik dili olarak kullanılır."

"ee, çok konuştun, kod görmedik" diyebilirsiniz (show me the code and nobody hurts). bu yazıda göstermeyeceğim. ancak çok yakında python dersleri yazıp yayınlamayı düşünüyorum. geçenlerde müthiş bir "cheat-sheet" tabir edilen doküman buldum. mutlaka indirilip, göz gezdirilmesi gerekli. fizikçiler, bütün tmel kuvvetleri birleştiren "theory of everything"i (T.O.E) bulamadı. ama dokümanın müellifi "document of everything in python" gibi bir şey bulmuş. belgeler.org'da da bir türkçe doküman var efe'nim.

sonium -> someone speak python here?
lucky -> HHHHHSSSSSHSSS
lucky -> SSSSS
sonium -> the programming language


bu da böyle bir chat log'u. bash.org'da binlerce eğlenceli chat log'u var. aptal youtube videolarından sıkılanlara tavsiyemdir.

otomatik portakal (clockwork orange'a saygılarla)

geleneksel staj şenlikleri ve ateşe-tapan yay burcu afro-iskandinav kültürü şenliği başladı malumunuz. iş başvurusuna benziyor bu staj dedikleri. "öyle olmalı zaten", bu da iş hayatının ın bir simülasyonu, bir alıştırması dediğinizi duyuyorum. ancak iş hayatında ciddiyet bakımından benzemiyor maalesef. ahbab, çavuş ilişkisiyle benziyor. kod görse ayet-el-kürsi sanacak adamların isimli yerlerde staj yaptığını duyuyoruz. veya formalite staj yapanları, veya temizlik yaparak staj yapanları.

açık kaynak yazılım dostlarını daha da zor bir dönem bekliyor kuşkusuz. stajınızı, bir şeyler öğrenmek ve daha da önemlisi bir şeyler meydana getirip bir değer üretmek için araç olarak görüyorsanız, doğru düzgün bir yer bulmak son derece güç. microsoft teknolojileri'ne bağlı olmayan bir staj dönemi çok zor. "kill bill" tarzı espri yapan fanatiklerden değilim, microsoft'a garezim de yok. ancak ms teknolojilerine mahkum olmak istemiyorum. özgürlük istiyorum. geçen dönem tembellik etmeyip qt'ye iyice ağırlık vermiş olsaydım, pardus 2009 staj'ında yer alma zevkini yaşayabilecektim.

ha, portakal diyorduk. işte ben de geçenlerde portakal teknoloji'ye staj başvurusunda bulunayım dedim. türkiye'de açık kaynak denilince akla gelen öncü bir şirket. en son, açık kaynak tarafından domin edilen bilmök 09'da sponsor da olmuşlardı. neyse efe'nim, staj prosedürü biraz değişik bana uyar diyorsanız bora :et: boragungoren.com adresine bir mail atın.

yukarıdaki kaynaktan gerekli bilgiyi alabilirsiniz. ben kısaca şöyle anlatayım, cv'nin yanısıra, kendinizi gerçekten ortaya koyabilmeniz için bir özgür yazılım projesini inceleyip, kurcalayıp, hakkında bir inceleme yazısı hazırlayıp net'e (kişisel sayfanıza) koymanız istenmekte. mesela ben dm-crypt adlı bir dosya sistemi şifreleme programı'nı inceleyeceğim (incelemekteyim :) ). bu süreç sonunda staj programına kabul edilmeyenlerin bile süreç sonunda büyük bir adım atmış olacaklarına inanıyorum. benzeri bir olay yaşamıştım lisede. saygıdeğer bir geometri hocamız, sömestr tatili için 10.000 geometri sorusu çözmemizi istemişti. tabi hiç kimse bu devasa sayıyı yakalayamadı. ben de bir 4.000'de falan kalmıştım herhalde. ama en başında hocaya her dakika başı küfrettiğimiz bu süreç, sonunda bizi (en azından beni) geometri sevdalısı haline getirdi. şu an bile geometri ile uğraşmak en zevkli şeylerden biri benim için. açık kaynak camiası içerisindeyseniz veya kapı eşiğindeyseniz portakal iyidir.

bir de son olarak, otomatik portakal'la tanışmadıysanız kesinlikle kitap haliyle tanışın, sinema filmini izlemeyin. çünkü o kadar ağır sahneler var ki, bunların canlandırılması, görselleştirilmesi yaygın etik kurallara aykırı. o yüzden film kitabı layığıyla ifade edemiyor.

26 Nisan 2009 Pazar

menekşelendi sular



menekşelendi sular, sular menekşelendi
esmer yüzlü akşamı dinledim yine sensiz
leylak pırıltılarla bahçeler gölgelendi
inledi yine bülbül, olmazmış gül dikensiz

dikensiz gül olmazmış
çilesiz bülbül ayşe
her kuş bülbül olmazmış
her çiçek de gül ayşe

ne bülbül gülü sevdi seni sevdiğim kadar
ne böyle seven gönül, ne de senden güzel var
içli bir özleyişle bırak beni yanayım
gözlerinde gördüğüm rüyama inanayım

dikensiz gül olmazmış
çilesiz gönül ayşe
her kuş bülbül olmazmış
her çiçek de gül ayşe

altın pasajlar (peter camnzind - hermann hesse) 2


"yaşamım ne anlam taşımıştı, bunca sevinç ve acının üzerinden geçip gitmesinin hikmeti neydi? şimdiye kadar içimde hissettiğim, hala hissetmekte olduğum, 'gerçek'e ve 'güzel'e karşı bu susamışlık nedendi?
...
Madem yalnızlıklar içinde pek sevilmeden yaşayıp gitmek alnıma yazılmıştı, o işine akıl ermez tanrı, sevginin yakıp kavurucu özlemini ne diye yüreğime yerleştirmişti sanki?"


(resim: http://8088.deviantart.com/art/BLACK-AND-WHITE-DREAMS-28240118 )

23 Nisan 2009 Perşembe

uitopy (pyqt için pyuic otomatı)

qt4 designer ile çalıştığımızda .ui uzantılı tasarım dosyaları oluşturuyoruz biliyorsunuz. bunları pyqt ile kullanmak için pyuic4 dosya.ui -o pythondosya.py şeklinde bir komut kullanmamız gerekiyor. tasarımda yapacağımız değişiklikleri dosya.ui dosyasında gerçekleştirdikçe bu komutu verip derleme işlmini gerçekleştirmemiz gerkiyor. bu, özellikle uzun vadede ve çok sayıda ui dosyasıyla çalışıyorsak çok can sıkıcı bir hal alıyor. bu konuda işimi kolaylaştırmak için uitopy adlı (isim iddialı olmuş ütopya'yı çağrıştırıyor) bir python programcığı yazdım. bunu pyqt projemizin dizinine atıp çalıştıdrığımızda, dizinin içindeki tüm ui dosyalarına pyuic komutuyla dönüştürm işlemi gerçekleştiriyor. şöyle bir şey;
import os ,glob

for dosya in glob.glob("*.ui"):
os.system("pyuic4 " + dosya + " -o " + dosya[0:(len(dosya)-3)] + ".py")
print str(((glob.glob("*.ui")).index(dosya))+1) + "- " + dosya
print "\n" + str(len(glob.glob("*.ui"))) + " files converted"

bu arada, bu glob kütüphanesi gerçekten de çok işe yarıyor.

23 nisan enerjisiyle geliştirmeye hız kesmeden devam ettim. şimdilik bu. bir de arayüz yazmayı planlıyorum. aslında arayüz yazmak da biraz saçma, belki kde servis menüsü felan da olabilir. hadi bakalım.

uitopy'miz önceki haline göre bayağı gelişti. artık sadece ui dosylarını python dosyasına çevirmekle kalmıyor. bir de baslatici dosya oluşturuyor. orada ana pencere class'ından nesne türetiyor. init metodunu yazıyor bu başlatıcı dosyaya. yani başlangıç seviyesindeki pyqt kullanıcıları için angarya olan ne varsa yapıyor.
import os ,glob, re
from time import gmtime, strftime

dosyalar = []
siniflar = []
baslatici = "calisan"
anapencerehangisi = -1

for dosya in glob.glob("*.ui"):
dosyalar.append(dosya)
os.system("pyuic4 " + dosya + " -o " + dosya[0:(len(dosya)-3)] + ".py")
print str(((glob.glob("*.ui")).index(dosya))+1) + ") " + dosya
print "\n" + str(len(dosyalar)) + " files converted"

for i in range(len(dosyalar)):
f = open((dosyalar[i])[0:(len(dosya)-3)] + ".py", "r")
metin = f.read()
bas = re.search('class ', metin).end()
son = re.search('\(', metin).start()
f.seek(bas)
siniflar.append(f.read(son-bas))
if siniflar[i] == "Ui_MainWindow":
anapencerhangisi = i
f.close()

if os.path.isfile(baslatici + ".py") == 0:
f = open(baslatici + ".py","a+")
veri = "# -*- coding: utf-8 -*-\n\
# generated using 'uitopy' - mustafa yilmaz (penguen@linux.erciyes.edu.tr)\n"
veri += "# " + strftime("%d %m %Y - %H:%M:%S", gmtime())
veri += "\n\nimport sys\n\
from PyQt4 import QtCore, QtGui\n"
for i in range(len(dosyalar)):
veri += "from " + (dosyalar[i])[0:len(dosya)-3] + " import " + siniflar[i] + "\n\n"
veri += "class StartQT4(QtGui.QMainWindow):\n\
def __init__(self, parent=None):\n\
QtGui.QWidget.__init__(self, parent)\n\
self.ui = Ui_MainWindow()\n\
self.ui.setupUi(self)\n\
#QtCore.QObject.connect(self.ui.pushButton,QtCore.SIGNAL('clicked()'), self.fonksiyon)\n\
\n\n\n\
def main():\n\
app = QtGui.QApplication(sys.argv)\n\
program = StartQT4()\n\
program.show()\n\
sys.exit(app.exec_())\n\
\n\
if __name__ == '__main__':\n\
main()\n"
f.write(veri)
f.close()

os.system("python " + baslatici + ".py")

21 Nisan 2009 Salı

kafa kağıdı

anahtarı almadan kapıyı vurup çıktıysanız, kapıyı açmak için kafa kağıdınızı güvenle kullanabilirsiniz. kendimden biliyorum. kola şişesini kesip pvc'sini kullanmak vs. geyiklerini duymuştum. kapıda kalınca, nüfus cüzdanım geldi aklıma. pet şişe aramaya, kesmeye ne gerek var? nüfus cüzdanımız yanımızdaysa, güvendeyiz.

18 Nisan 2009 Cumartesi

altın pasajlar (peter camenzind - hermann hesse)

"hüznümün ve yaşama yeteneğinden yoksunluğumun nedenleri üzerinde bir türlü arkası gelmeyen düşünüp durmalarım sonuç vermiyor, beni yoruyordu. işimin bittiği, gücümün tükendiği gibi bir duygu benden uzaktı, yüreğimde karanlık dürtüler kaynaşıyordu daha çok, vakti zamanı gelince şöyle derin ve eli yüzü düzgün bir şeyler yaratacağıma, kuru ve yavan yaşamın elinden hiç değilse bir lokma mutluluk koparıp alacağıma inanıyordum. iyi ama, vakti zamanı gelecek miydi? içimde bir burukluk, kendilerini binlerce yapay uyarılarla sanatsal çalışmalara heveslendiren asabi mizaçlı çağdaş beylere gidiyordu aklım; oysa bendeki azımsanmayacak güçler harcanmadan varlığımda saklı yatıyordu. derken benim kabına sığmayan vücudumda nasıl bir engelin ya da şeytanın yuvalanıp ruhumu eli ayağı bağlı duruma soktuğunu ve giderek daha bir hantallaştırdığını düşünmeye başlıyordum. üstelik başkalarına benzemeyen, nasılsa kendinde doğuştan bir eksikliği barındırıp çektiği çileleri kimsenin bilmediği, anlamadığı ya da paylaşmadığı biri olduğum düşüncesi kafama yerleşmişti. hüzün denen şeyin lanet olası bir yanı varsa, adamı hastalandırmakla kalmayıp aynı zamanda kendini beğenmiş, burnunun ucunu göremeyen, hatta neredeyse kibirli biri yapmasıdır. insan kendini öyle görür ki, tıpkı heine'nin atlas'ı gibi sanki dünyanın tüm acı ve bilmeceleri sırtına yüklenmiştir, sanki aynı acılara göğüs geren ve aynı labirent içinde yitip giderek çıkar yol bulamayan binlerce başka kişi yoktur."

( bu arada portrenin orijinali, http://shalpin.deviantart.com/art/Wolf-of-the-Steppes-66375903 )

benim bile tam olarak tanımlayamadığım, boğazımın düğümünde, burnumun sızlayan çatısında, yaşaran gözlerimde, sebepsiz buhranlarımda büyüyen derdimi anlatmış üstad hesse. bu da benim grafik çalışmam,

10 Nisan 2009 Cuma

evrim geyiği

öncelikle evrim yaratılışla çelişmez diyor ve eteğimle reverans yaparak konuşmaya başlıyorum.

allah'ın yaratması ve geliştirmesi kademe kademedir. bunu her alanda görebiliriz. evren 7 günde (safhada) yaratılmıştır. insan annesinin karnında aşama aşama gelişir; kalbi, beyni, gözleri... veya şöyle anlatalım. önce büyük bir enerji vardı, bunlar kuarklara dönüştü, kuarklar hidrojene, hidrojen daha kompleks elementleri oluşturdu. güneş sistemi gezegenleri de yavaş yavaş oluşmuştur, önce güneşten parçalar kopmuş, bunlar kütle çekimi gereği dönmeye ve belli yörüngelere yerleşmeye başlamışlar, soğuyup dönme etkisiyle küreselleşmişlerdir.

evrim yok diyelim hadi bunları görmezden gelerek. o zaman öneri nedir? tüm canlılar aynı anda kütürt! diye yer kabuğundan mı çıkmışlar? kıtalar tek parça iken (bunu da reddedebilirler, belli olmaz) sonra ayrılması ve canlı türlerinin buna göre evrimleşmesi nasıl olmuştur? özellikle -af edersiniz- dna sarmalı görse mertek sanacak insanların kestikleri ahkamlar adamın canını sıkıyor. evrim teorisinin -haşa- allah'ın yaratmasının eksik olduğunu ima ettiği şeklindeki yorumlar da son derece abes oluyor. o zaman biz niye sperm ve yumurtadan oluşuyoruz, pat! diye olsak fena mı olur?

allah'ın meleklere adem'i yaratacağını söylemesinden sonra meleklerin "yeryüzünde fesat çıkaracak, kan dökecek bir şey mi yaratacaksın?" şeklindeki sorularının temelinde de bizim "adem"imizden evvel nice ademler olduğu gerçeği yatabilir. ancak insan olma özelliğini taşıyan atamız adem halife olma şerefine nail olmuştur. bu da diğer insansılardan üstün olduğunu ve yaratılanların en şereflisi olduğunu gösterir.

netice itibariyle bir müslüman evrim teorisi var diyene de inanmamalı, yok diyene de inanmamalıdır. önce "nedir ne değildir?" şeklinde konu hakkında bilgi sahibi olmalı, düşünme yetisini kullanmalıdır. özellikle de bazı post-modern mehdi kılığındaki popüler kişilerin (aslında bir tane var, meşhur) arkasına müslümanlığı alarak, yarı bilimsel yarı sallama iddialarının arkasına kuzu gibi takılmamalıdır. sonunda o adamın ve dolayısıyla kendinizin yanlış yolda olduğu ortaya çıktığında "din"inizi de kendinize yalancı şahit yaptığınızı anlarsınız, çok geç olur.

yav o değil de... (hep bu kalıpla bir yazıya başlamak istemişimdir) evrim teorisini takım tutar gibi savunmak/reddetmek ortaya çıktı ki felaket. daha da felaketi hiç bir birikim ve de kendi öz düşünce nüvesi olmadan bu tartışmanın içerisine balıklama atlayan cengaverler. bu fanatik minik teorisyenler iki takım halinede: evrimi reddedenlerin okudukları yegane şey harun yahya. daha vahimi; evrimi savunanlar ise genellikle hiç kitap okumamış benim gözlemlerime göre, bakmış gençlikte bu prim yapıyor, o ayak olmuş.

9 Nisan 2009 Perşembe

bir'den başka sayı bilmem


güzel bir hikaye.

derviş, eteğinde taşıdığı bir kucak dolusu elmayla bozkır sıcağında bayırları aşan bir genç kıza rastladı. dorgunluktan al aldı kızın yanakları. derviş kıza "niye doldurdun eteğini? Nereye gidiyorsun böyle alı al ,moru mor bu sıcakta?" diye sordu. Uzaklarda bir tarlayı gösterdi kız, dolu elleri yüzünden ,burnuyla ve "sevdiğim o tarlada çalışıyor. ona elma götürüyorum" dedi. boş bulunan derviş "kaç tane ?" diye soruverdi. kız şaşkın ve kınayan gözlerle yanıtladı soruyu "insan sevdiğine götürdüğü şeyi sayar mı hiç?" hiç belli etmeden ama utançla koparıp dağıttı elindeki tesbihi derviş.

düşündüm. ben ona sepetimde hediye taşımıyorum ki sayısını sayma gafletinde bulunayım. onun ismini dilimde zikretmiyorum ki zikrimi sayıp hesaplayayım. gözümü kapatıyorum bir anlığına, yarattığım düş ülkemde gözlerimi açıyorum. ülkemin duvarları o. nehirleri o. rüzgarları o. ateşleri o. öfkesi o. neşesi o. düş ülkemin tamamı o. bir tek o var her gözümü kapattığımda. bu durumda nasıl saymaktan söz edebilirim?

pardus grub ekranı makyajı

öncelikle, bununla ilgili bir projenin pardus 2009 yol haritasında yer aldığını belirtmek isterim. sevindim, güzel bir düşünce olmuş. benim de aklıma gelmişti çok öncelerden (şerefsizim benim aklıma...). zaten hangi kıyıda köşede özelleştirme varsa orada ben varım. pardus 2007'de ilk özelleştirdiklerimden biri grub açılış ekranı resmini, yazılarını değiştirmek olmuştu. daha sonra açılış yöneticisi tasma'ya eklenip kullanılmayan açılış seçeneklerini temizlme seçeneği eklenmişti pardus'a. neyse efe'nim, ben bu yazımda grub açılış ekranı arkaplanını değiştirmeyi göstermek istiyorum.

resmi gimp ile .xpm formatında 640x480 ebatında ve 8 renkli hazırlayacağız. başlayalım.



resmi hazırladıktan sonra renk sayısını 8'e indirme işlemini yapalım. bunu da gimp'in "posterize" filtresiyle sağlıyoruz.





kaydet dedikten sonra, dosya isimi kısmına acilis.xpm (acilis kelimesinin doğaüstü özelliği yok :) ) yazıp uygun bir yere kaydediyoruz.

bundan sonra yapacağımız işlemler için root yetkisi gerekiyor. konsoldan "su root" yazıp root şifrmizi giriyoruz ve ardından "sudo konqueror" diyerek root kipinde başlatıyoruz dosya yöneticisini. /boot/grub dizinine geçiyoruz. hazırladığımız dosyayı (acilis.xpm) kopyalayıp yapıştırıyoruz buraya. daha sonra sağ tıklayıp "sıkıştır > acilis.xpm.gz olarak sıkıştır" diyoruz.

dosyayı düzenlerken bir halt etmemiz ihtimaline karşı orijinal grub.conf dosyasının bir yedeğini alalım. şimdi grub.conf dosyasını kopyalayıp başka bir isimle kaydedip yedekleyelim. şimdi grub.conf dosyasını kwrite ile açıp düzenlemek için bir mani kalmadı.
default 0
background 10333C
timeout 10
splashimage (hd0,5)/boot/grub/splash.xpm.gz

title Pardus 2007.3 [2.6.18.8-86]
root (hd0,5)
kernel (hd0,5)/boot/kernel-2.6.18.8-86 root=/dev/sda6 video=vesafb:nomtrr,pmipal,ywrap,1024x768-32@60 splash=silent,fadein,theme:pardus console=tty2 mudur=language:tr quiet
initrd (hd0,5)/boot/initramfs-2.6.18.8-86

title Windows (ntfs) - sda1
rootnoverify (hd0,0)
makeactive
chainloader +1

muhtemelen buna benzer bir dosya karşınıza çıkacak. şimdi daha yakından bakalım.

"default 0" ifadesi varsayılan başlangıç seçeneğinin hangisi olduğunu ifade diyor. benim grub.conf dosyamda mesela, "title Pardus..." paragrafı ilk sırada olduğu için varsayılan açılışım pardus. eğer varsayılan windows olsun demiş olsam "default 1" olarak değiştirirdim ifadeyi. veya 3. seçenek olarak başka bir işletim sistemim olsa onu varsayılan yapmak için de "default 3" derdim.

"background 10333C" ifadesi açılış seçeneklerini gösteren yazılarda gezerkenki arkaplan rngini tanımlayan hex değeri. web tasarımdaki renk sistemi yani. sadece başında diyez "#" yok.

"timeout 10" zaten çok açık bir ifade. grub, 10 saniye geri sayıyor ve eğer kullanıcı diğer seçeneklerden birini seçmediyse varsayılan işletim sistmi başlatılıyor. bu değeri de kafanıza göre değiştirebilirsiniz. 0 yaparsanız, otomatik başlamış gibi olur.

"splashimage (hd0,5)/boot/grub/splash.xpm.gz" ifadesi de açılış ekranının arkaplan resmini tanımlıyor. (hd0,5), dosyanın hangi disk bölümünd olduğunu gösteriyor. buna ilişmiyoruz. "/boot/grub/splash.xpm.gz" ifadesinin yerine bizim resmimizi giriyoruz "/boot/grub/acilis.xpm.gz". hayırlı olsun.

"title" ifadesi ile başlayan her paragraf bir açılış seçeneği oluyor. eğer güncellemeler yapmış ve açılış yöneticisinden hiç bahar temizliği yapmamışsanız, "title Pardus..." ile başlayan birden fazla paragraf olacaktır. bunların en son versiyon dışındakilerini silebilirsiniz güvenle. "mudur=language:tr quiet" satırında da dil seçeneğinin yanında otomatik giriş seçeneği var. bu seçenek, varsayılan kullanıcının, şifr kranı hiç görünmedn direk giriş yapmasını sağlıyor.

http://www.kde-look.org/content/show.php/pardus+green+grub+splash?content=56581 burada daha evvelden hazırlayıp kde-look'a yüklediğim bir arkaplan resmi var. şe'yapabilirsiniz.

esen kalın. cizız krayst.

aşka riyayı bulaştırmayın

sırdır aşk. tanımlanmaz, yaşanır. yaşayana da öyle bir çarpar ki, aklını alır onun, anlatamaz. anlatsa da kimse dinlemez o deliyi. ama, süslü sözler söyleyen yalancı ozanların meclisleri dolar taşar. riyakar ozanlar, dinleyen herkesin aşkı tatmamış kimseler olduğunu bildiğinden rahattır. ne de olsa, aşık olanlar artık onun meclisinde değildir, aşık olanlar dünyada bile değildir, yer ile gök arasında bir tül perde üzerinde yaşarlar.

ve seslenmek istiyorum bu riyakar ozanlara. aşkı istekleriniz için, kendinizi farklı göstermek için kullanmayın sizi aşağılık fareler. gerçek aşıklar sizin gibi bağıra çağıra aşk nutukları atmaz. aşık giz taşır içinde. söyleyeceği her söz aşkını kirleteceğinden susmayı tercih eder.

8 Nisan 2009 Çarşamba

youtube engel kaldırma şeysi

pardus altında, youtube dışındaki yasaklanan sitelrin yasaklandığını bile başkalarından duyuyordum, wordpress vs. gibi. etkilmiyordu beni yani. ekstra bir ayar falan da yapmamıştım. ama youtube'a konulan engel harbi bir engel. hala youtube engelini kaldırmadıysanız (gülmeyin ben kaldıralı pek fazla olmuyor. üşengeçlik) belki bu işinize yarar. root olup, konsoldan

sudo konqueror

komutunu verin. /etc/ klasörünü açıp, oradaki "hosts" dosyasını açın.

127.0.0.1  localhost makinenizinadiburadaolacak

dosyanın içeriği muhtemelen bu şekildedir. neyse efendim,

208.117.236.70 youtube.com
208.117.236.70 www.youtube.com

ifadelerini dosyaya ekleyip kaydediyoruz. bu kadar.

homunculus

hayatlarını diğer madenlerden altın yapma ideali uğrunda harcayan zavallı simyacıların bir başka kızıl elması homunculus. insanı oluşturan temel unsurları kullanarak, yapay bir ortamda bir insan yaratma arzusunun ortaya çıkardığı bir kavram.

miller deneyi geliyor aklıma. dünyanın ilkel atmosferini taklit eden bir ortam simüle edilmiş laboratuvarda ve protein üretilmeye çalışılıyor. ama proteini elde etsen bile, ona bir ilk nefes, bir sihirli dokunuş, kutsal ruh, chi vs. (adına ne dersen de) bahşedemiyorsun zavallı ve cahil insan.

cahil cesareti diye bir deyim vardır. sonuna kadar katılırım. yüzyıllar önce orta çağ karanlığında, doğa bilimleri açısından 0 noktasına yaklaşmış avrupa. ama tüm bu cehaletinin ortasında sıfırdan tastamam bir insanı yaratabileceğine inanıyor. günümüze dönelim: insanlık maddeye, en küçük bir organik yapıya bile canlılık sağlamak için kıçını yırtıyor. bir homunculus ise düşten bile uzak.

ne diyelim, insanlık yaratıcını dillerinden biri olan doğa bilimlerinde ilerledikçe, haddini bilmeye başlıyor. okyanusta bir damla bile olmadığını anlıyor. kısacası insanoğlu zalim ve cahildir.

5 Nisan 2009 Pazar

kitap

bir araya gelmiş, hoş kokan matbuu kağıtlar bütünü. aslında sadece bizim anladığımızı yazan sihirli parşömenler. çünkü bazı an olur ki, daha önce bir kaç kez okuduğunuz halde bir cümleyi yeni görmüş gibi hissedersiniz. evet, sanki bir büyü yapılmış ve o cümle bir yerlerden süzülüp gelip kitabın satır arasına yerleşivermiştir. bu nedenle bazı eserleri tekrar tekrar okumak, her seferinde ruh halinize ve olgunluğunuza göre değişik tatlar almanızı sağlıyor. bu büyülü özellik keşfedildiğinden beri kitap fenomeni insanın medeniyetinde çok özel bir yere oturmuş durumda.

kişisel serüvenime gelince, bazen hiç ummadığım kitaplar bende ummadığım çağrışımlar yaptı, düşünce ufkumu genişletti, zihnimde yeni patikalar oluşturdu. aslında şiir/kitap incelemelerine temelde karşı olan birisiyim. bunun bir tecavüzden farkı olmadığını düşünürüm veya utangaç bir kızın elbisesini yırtmaktan.

körü körüne savunulan kitap okuma çılgınlığına karşıyım. genç beyinler daha ilk yıllarından itibaren kafalarını lüzumlu lüzumsuz gereksiz kitaplarla doldurmamalı. aksine onlara seçici olmayı ve sentezi öğretmeli. çünkü ne yazık ki okunan her satır, insanın özgür algısının etrafına eklenen bir parça çit haline geliyor. bir cinle yapılan antlaşma gibi adeta, bir şey öğrenmek karşılığında, içinde delicesine yanan özgür düşünce ateşinden bir parçasını kaybediyorsun.

onlar kimilerinin dediği gibi dostlarımız değil. dost veya düşman değiller düşler kurmak için aldığımız uyku haplarımız.

4 Nisan 2009 Cumartesi

kartanemiz



siz bu saf bu kar tanemiz
tozlu dünyamıza niçin geldiniz

süzülerek göklerden beni seçtiniz
yüzümde tebessümü keşfettirdiniz

ayrılık rüzgarı esmeseydi belki
günahımın ateşiyle erirdiniz

sahi niçin geldiniz

3 Nisan 2009 Cuma

sözde bilgisayar mühendisliği

bir üniversitenin bilgisayar mühendisliği bölümünde delphi ve basic öğretiliyorsa, özellikle de delphi öğretiliyorsa, o üniversitenin hayat damarlarından biri kopmuş demektir. daha da vahimi, sefil bir ülkede yaşıyoruz demektir. aptallar tarafından yönetiliyoruz demektir. ingiliz sömürgesi iken logaritma cetveli ezberletilen hint yavrucaklardan bir farkımız yok demektir. o hint yavrucaklar, şimdilerde kendilerinden kat ve kat salak insanlar için bilişim ameleliği yapıyorlar.

hint yavrucaklar demişken, bir olay geldi aklıma. anlatmadan geçemeyeceğim. "pi coşkusu" diye bir kitap okumuştum. david blather tarafından yazılmış bir kitap. kitap, tübitak popüler bilim kitaplarından. dolayısıyla üst düzey bilimsel ögeler taşımıyor fakat son derece akıcı olan kitabı okuduğunuzda gerçekten epey şey öğrendiğinizi anlıyorsunuz.

kitabın çok hoş düşünülmüş bir de ayrıntısı var. ilk sayfadan başlamak üzere sayfaların alt kısımlarında devam eden karınca duası gibi rakamlar var, pi'nin virgülden sonraki tam bir milyon haneleri. neyse, konumuzla alakası ise şu:



sanıyorum bizim eğitimimize göre liseye kadar okuyabilen bir fakir aile çocuğu ramanujan'ın tam manasıyla allah vergisi bir matematiksel zeka, analiz gücü, sezgisel sıçramaları ve inanılmaz içgüdüsüyle ortaya çıkardığı pi formüllerinini insanı hayrete düşünüyor.

kendisini anlayacak hiç kimseyi bulamayan ve düşük seviyeli bir memur olarak çalışan bu genci bir ingiliz profesörün keşfediyor tesadüfen. adam bir umut, hiç bir akademik matematik yöntemi bilmmesine rağmen, müsveddelerini sağa sola yolluyor keşfedilmek umuduyla. neyse, şans yüzüne bakıyor bizimkinin ve profesör ingiltere'ye çağırıyor. birlikte çalışmalar yapıyorlar. ramanujan, hastalanıp 32 yaşında ölüyor. tesadüfi bir olay, adamın hayatını şekillendiriyor.

allah ramanujan'lara kolaylık versin. sistemi işleten ve zaman ilerledikçe kendi gibi aptalları sisteme dahil eden aptallar karşısında kolaylık versin.

pyqt geliştirmek - insan-ı kamil olma yolu


python dili için en gelişmiş arayüz seti qt. ancak dökümantasyon eksikliği ölümcül düzeyde. qt dökümanları çok çok büyük bir çoğunlukla c++ üzerine. nadiren, allah yüzüme bakıyor da bir kaç kaynak bulabiliyorum. burada da başka bir sorun baş gösteriyor. bazı vatandaşlar qt designer'da hazırlanan arayüz (ui) tasarımlarının modifiye edilmesine dayanan bir teknik için hazırlamış, bazıları da qt designer kullanmadan, direkt kod olarak tasarım yapıp, kodlama yapmış. kafam davul oldu. sırf fare tıklama etkileşimini bulmak için kaç saat uğraştım, kaç deneme yaptım.

ben de sırf çalışan, doğru dürüst bir uygulama yapmak için qt designer'u kullanmadan kod bazında çalışıyorum şimdilik. dama uygulaması var kafamda. daha doğrusu az buçuk çalışıyor. "prc dama" şeklinde bir isim koydum şimdilik. taşları birbirinin üzerinden atlatıyoruz falan fıstık. splash (açılış ekranı)'ı bile var. hatalar da var tabi ki. bu qt'nin kapısını bir kırıp içine tam anlamıyla girersem, o zaman tam manasıyla azacağım. yarım yamalak ve bazısı sırf düşüncede kalan projeciklerimi salacağım etrafa.

eric, meric de kullanmıyorum henüz, ne de olsa genellikle 1 dosyalık programcıklar yazmaktayım. bir de eric'i öğrenmeye kalksam işler arap saçına dönecek. kwrite yeter de artar.

2 Nisan 2009 Perşembe

python imaging library (pil) - içimizdeki andy warhol



kodun çalışabilmesi için pil modülü sisteminizde kurulu olmalı. ne yapıyor bu kod, işte bunu yapıyor.

import glob
import Image

def andyWarhol(im):
imx, imy = im.size
thumb = im.resize((imx/2, imy/2))
r, g, b = thumb.split()
box1 = (0, 0, imx/2, imy/2)
thumb = Image.merge("RGB", (r, b, g))
im.paste(thumb, box1)
box2 = (imx/2, 0, imx, imy/2)
thumb = Image.merge("RGB", (g, r, b))
im.paste(thumb, box2)
box3 = (0, imy/2, imx/2, imy)
thumb = Image.merge("RGB", (r, r, g))
im.paste(thumb, box3)
box4 = (imx/2, imy/2, imx, imy)
thumb = Image.merge("RGB", (g, b, r))
im.paste(thumb, box4)
return im

for infile in glob.glob("*.jpg"):
ima = Image.open(infile)
andyWarhol(ima)
if infile[0:7] != "POPART_":
ima.save("POPART_" + infile, "JPEG")

sus söyleme

duygularımızı, sıcak yüreğimizden sıfırın altında bilmem kaç derece sıcaklıktaki dış ortama yolladığımız nefesimize benzetiyorum. duygularımızın yüreğimizde tatlı kaşıntılar yaratması onun latif özelliğinden kaynaklanıyor. ve buhar halinde olduğu için belirli bir şekli de yok. ancak bunu diğerleriyle paylaşmak istediğimizde küp şeklinde, hatları gayet kat'i bir cisim elde ediyoruz. ve tabi ki şekil kazanmışlığın bir kaçınılmaz getirisi olan ağırlık onu yükseklerden yere indiriyor. kırıyor. tuz buz.

"insanın kürsüsü suskun yüreğindedir; geveze aklında değil." (halil cibran)

gnuplot - esaslı grafik çizdirme programı

merhabalar, bu yazımızda özgür yazılım camiasının göz bebeklerinden birisini tanımaya çalışacağız. gnuplot, komut satırı tabanlı, veri ve fonksiyon grafiği çizdirme uygulamasıdır diyebiliriz. 1986'dan beri geliştirilen ve gün geçtikçe güçlenen; UNIX, IBM OS/2, MS Windows, DOS, Macintosh, VMS, Atari ve bunlardan başka bir çok sistemde çalışabilen bir uygulama. 2 boyutlu ve 3 boyutlu grafikler oluşturabiliyor. vektör, yüzey, çizgi, izdüşüm vs. bir çok farklı grafik tipi türetebiliyor ve ürettiği bu grafikleri bir çok output yöntemiyle dışa aktarabiliyor: ekrana görüntü olarak, dosya olarak(eps, fig, jpeg, LaTeX, metafont, pbm, pdf, png, postscript, svg ...), direkt çıktı olarak, web'de. eğer tüm bunlardan başka fantastik bir çıktı alma opsiyonunuz varsa o cihaza da kolayca uyum sağlayabilir. bu profesyonel özellikleriyle bir çok ciddi projede, kurumda, bilimsel araştırmada yoğun olarak kullanılmaktadır.

öncelikle paket yöneticisinden “gnuplot”u aratıp, kuruyoruz. artık kullanıma hazır etkileşimli bir komut satırı bizi bekliyor. python diliyle ilgilenmiş olanlar için, bu etkileşimli komut satırı tanıdık gelecektir. evet hemen bir konsol açmak için sabırsızlanıyoruz. konsolu açıp, gnuplot yazıp enter'liyoruz.

evet gnuplot komut satırına giriş yapmış durumdayız. kodlarımızı buradan gireceğiz. ve girdiğimiz komutların ardından ekrana grafiğimiz yeni bir pencere içerisinde gelecek. uygulamadan çıkmak içinse ctrl+d tuş kombinasyonunu kullanabiliriz. bu arada, programımızın özellikleri, yetenekleri saymakla bitmeyeceği için ben sadece bir parmak bal çalma çabası içerisinde olacağım. vereceğim örnekleri ve kendi türeteceğiniz örnekleri müteaddit defalar deneyerek eğlenerek öğreneceğinizi umuyorum.

ilk uygulama için sabırsızlanıyoruz. “hello world” yazmayacağız. onun yerine, basitçe bir grafik çizdirelim. mesela, sin(x)*cos(x)'in grafiği. plot sin(x)*cos(x) yazıp enter'lamamız yeterli.

grafiğimizin gösterileceği alanı sınırlamak istersek plot [-pi/2:pi/2] [-pi/2:pi/2] sin(x)*cos(x) şeklinde sınırlandırma da yapabiliriz. yani grafiğimizin sadece bizim belirlediğimiz bölgesi görüntüleniyor ve zoom'lanıyor gördüğünüz gibi. birinci [] ifadesinin içerisine x ekseninin başlangıç ve bitiş sınırları araya : konularak yazılıyor. ikinci [] için de aynı değerleri y ekseni için giriyoruz. bu ilk uygulamamızda plot komutu ile çizdirdik grafiği. plot, gnuplot'un 2 boyutta çalışan çizdirme komutudur.


ilk örneğimizde tek değişkenli bir grafik çizdirdik. şimdi çok parametreli bir grafik çizdirelim. plot x**2+5*x+4, x**3-7, 15*x+5. ifademizi inceleyelim. plot komutunun ardından, virgüllerle ayırarak istediğimiz sayıda fonksiyon yazarak bunların grafiğini çizdirebiliyoruz. gene bu kodumuzda da sınırlar belirtebilirdik. ancak bu konuyu önceki örnekte öğrendiğimiz için gerek görmedim. bu arada ** sembolümün ^ yani kuvvet anlamına geldiğini hatırlatalım. (2**3=8, x**2= x kare)

şimdi fantezi boyutumuzu bir basamak daha ilerletiyoruz ve üç boyutlu grafiklere geçiyoruz. 3 boyutlu grafikleri çizdirmek için ise plot'un yerine splot komutunu kullanacağız. ve artık x'in yanında bir de y değişkenimiz oldu. yani iki değişkenden gelen değerler işlenebilecek. ve tabi ki az önceki örneğimizde yaptığımız gibi virgüllerle ayırarak birden çok fonksiyonu gösterebiliyoruz.

x*y gibi basit bir ifadeyle başlayalım 3. boyuta isterseniz. splot x*y. ve artık 3. boyuta geçtiğimizi anlamak istiyoruz. bunun için fareyi grafik alanına basılı tutarak çevirelim. veya ok tuşlarını da kullanabilirsiniz. hmm, işte şimdi biraz eğlenceli olmaya başladı. o zaman tadında bırakalım.

bu yazımda, çok sınırlı özellikleri anlatabildim ve bu programla yapabileceklerimizin yanında bunlar hiç bir şey. devamı sizin ellerinizde. http://gnuplot.sourceforge.net/demo_4.3/ bu örnekleri inceleyerek, özgür bir yazılımın ne kadar farklı amaçlara uygun olarak kullanılabileceğini görebilirsiniz.

gnuplot'un münevver geliştiricilerine ve siz müşfik okurlara teşekkür ediyorum. bu arada, bu yazıyı hazırlarken, aldığım ekran görüntülerini küçültmek için kısacık bir python programcığı kullandım. ve bu vesileyle bir kez daha python'a sevgilerimi sunuyorum. kodu da yazayım şuracığa.

import glob

import Image

for infile in glob.glob("*.png"):

im = Image.open(infile)

im.thumbnail((256,256), Image.ANTIALIAS)

if infile[0:2] != "t_":

im.save("t_" + infile, "PNG")

gplot'un resmi sitesi http://www.gnuplot.info 'dan çok çeşitli örnekleri inceleyebilir, farklı tip grafik çeşitleri oluşturmayı öğrenebilir, sağlam tutorial'lerini indirebilir ve programa ek özellikler katan 3. parti eklentilere ulaşabilirsiniz. size bir kodla veda ediyorum. bunu kopyala, yapıştır ile gnuplot komut satırına yapıştırıp çalıştırabilirsiniz.

çizim dolu günler.

set dummy u,v

set parametric
set urange [ -pi : pi ] noreverse nowriteback
set vrange [ -pi : pi ] noreverse nowriteback
splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with lines, 1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with lines


sihirli değnek mektubu (yaşanmış masal)



uyuyamıyorum.

bu satırları okumaya başladıysan, Hiçbir şeyin artık eskisi gibi olmayacağı bir sürece girmeye cesaret edebildim demektir. sihirli, gizemli bir değnek değecek artık hayatıma. bu bir iyilik perisi dokunuşu da olabilir, bir cadının kara büyüsü de. ayrıca şunu bil ki, artık dayanacak takatim kalmadığı için yazıyorum. ve emin ol yazmadığım her gün yavaş yavaş eriyordum.

sen, bir sonbahar günü benim tahtaları eskimiş, boyası kavlamış, camı kirli pencereme konan bir serçeydin. hazanımın tüm o kasvetini dağıtmaya yettin. seni hep daha yakından seyretmek, hatta avucuma almak isterdim. ama bunu yapamayacağımın da farkındaydım. elimden uçacaktın. daha yakınında olmak isterken seni büsbütün kaybedebilirdim. bunu için yaklaşmaya cesaret edemedim. uzaktan iç çekişlerle seyretmeye devam ettim. bu haldeyken her geçen saniye, her içime çektiğim nefes hayat canımdan bir parça koparıyordu.

hayatlarımızın belli bir yerde kesişmesi, ilahi bir mucize. belki hayata geliş sebebim seni bulmaktı. bu hissi tatmaktı. buna her geçen gün daha da coşkun duygularla inanıyorum. kapılarımı kırdın, içeri aniden girdin. ne iyi ettin kartanemiz. bizim; benim ve meleklerin kartanesi.

“siz bu saf bu kar tanemiz
tozlu dünyamıza niçin geldiniz

süzülerek göklerden beni seçtiniz
yüzümde tebessümü keşfettirdiniz

ayrılık rüzgarı esmeseydi belki
günahımın ateşiyle erirdiniz

sahi niçin geldiniz

ben aşkı seninle tanıdım. ve belki de seni aşkla tanıdım başından. ilk gördüğüm andan itibaren serseme döndüm. ne yapacağımı şaşırır oldum. sen benim islerle kaplanmış, kapısı hiç açılmamış kalbime düşen bir beyaz kar tanesi oldun. elime almak, avucumda tutmak istedim. eriyeceğinden korktum. hatta seni kalbimde saklamaya korktum. kalbimin kirleriyle kirlenmenden korktum. sen kalbimin ortasında bir kartanesi, kartanemiz olarak duruyorsun öylece. ah işte bu bekleyiş beni eriten. sen içimdesin ama ellerim sana yaklaşamıyor. korkuyor ellerim, sana bakmaktan bile endişe duyuyor ağlamaktan şişmiş gözlerim. ben yaklaştıkça, uzaklaşacağını hissetmekteyim. mengenedeyim.

aşk buymuş demek ki, aşık olmadan önce aşk üzerine şiirler, yazılar okumayı severdim. artık delicesine biliyorum ki; aşkın bir zerresi bile sözlere, bestelere, resimlere aktarılamayacak kadar yüce ve ilahi. aşkım bir kuş gibi. özgürce uçan, yüce melodilerle ve eşsiz renkleriyle gönüllere uğrayan bir kuş. onu, başkasına dinletmek için kafese koyduğunda ötmüyor, rengi soluyor ve kanatlarını çırpamıyor. bu satırlarımın da aşkımı anlatamayacağının farkındayım. ancak başka çarem yok. aşk artık benim için susmak ve içimdeki misafir kuşu dinlemek. o ruh gibi tülden ince, şeffaf, buhardan kuşu dilimle rahatsız etmemem gerektiğini biliyorum artık.

“bir minik dudak kıvrılmasıydı sadece
tebessüm değil gülücükten bile uzak
sönmeyen bir anı oldu şimdi zihnimde
yirmi yılın saniyeden küçük hissesi

bir tebessümün bile bana ilahi bir dokunuş, bir meleğin kanatları gibi geliyor. zamanı dondurmak istiyorum böyle anlarda. ruhum, her çiçekten bir damlası alınmış bir parfümle yıkanıyor baştan aşağı. kokusu silinmiyor hiçbir zaman. ne zaman siyah hayatımdan bıkacak ve son vermek isteyecek olsam o koku bana seni hatırlatıyor. çiçekler dökülüyor başımdan aşağı. hayata sen bağlıyorsun beni. anla.

sana layık olmadığımı biliyorum. senden hiçbir bir beklentim yok. ama yazmasam ölecektim. anla lütfen. ellerim titriyor, o yüzden ellerimle yazamadım. hem böylesi daha az acı veriyor kalbime. daha az ağlıyorum yazarken.

hepsini okuduysan teşekkür ederim. okumayıp, buruşturup attıysan da teşekkür ederim ve ayrıca rahatsız ettiğim için özür dilerim. incitmek istemem. okuduklarına canını sıkma ne olur. ben bir meczubum. boş ver beni. ne dersen, ne düşünürsen haklısın. lütfun da hoş, kahrın da hoş. sen benim kartanem, kartanemiz olarak kalacaksın. kalbimde yaşayacak nazenin kartanemiz. artık hiçbir şey eskisi gibi olmayacak değil mi? şiirlerim öksüz mü kaldı?

elveda demem gerekecek sanırım.