29 Mart 2010 Pazartesi

google analytics

google analytics hizmetini biliyorsunuzdur efen'im. sitenizi analytics üzerinden ayrıntılı bir biçimde raporlayabilir, bir çok bilgiyi elde edebilirsiniz. kaç kişi geldi, hangi siteden geldiler, hangi anahtar kelime ile geldiler vs... insanların sitenize hangi kelimeyi google'latıp girdiğini gösteren bölüm çok enteresan. işte arama motorunda aratılıp insanları apshalasha blog'una getiren o ifadelerin en hoşuma gidenlerinden bir seçki.

- eclipse şifre soruyor (n'apabilirim? şaka bi' yana sormaz yahu eclipse şifre falan. gene bir kelime arat ulaş bana genç adam)

- isimli resim oluşturma (fotoşop. sanal bir kimlik için avatar arayışında olan bir gençle karşı karşıyayız sanırım)

- kaplan neyi sever (beni korkutuyorsun dostum)

- mavi cicek neyi simgeliyo ("mavi çiçek" fenomeninden haberdar olması epey sevindirici. "simgeliyo" şeklinde kelime yontması ise üzücü. zıtlık söz konusu. oksimoron)

- song +"ben ölünce" ("ben ölünce yağmur yağsın" şarkısnı arıyor muhtemelen. fena değildir, ben de dinlerim. ama christina rossetti'nin müthiş "when i am dead my dearest"iyle tanışmış oluyor. kısmet)

apshalasha'nın çizgisi şiir ağırlıklı olduğu için genellikle aramalar "x'in şiirleri" şeklinde. bir cümlesini hatırladığı şiiri bulmak için aratanlar (sıklıkla yaparım) da epey var.

karikatür

karikatüristler çok saygı duyduğum insanlardır. bir espri nüvesi yakalamak, onu insanların önüne sunulabilir hale getirmek, çizgilere dökmek ve de (bence en önemlisi) anlaşılabilirliğini iyi ayarlamak zor iş. anlaşılabilirlik ifadesi ile ne anlatmak isteğimi biraz açmak istiyorum. espri çizerin kafasında yer almaktadır tüm açıklığıyla. ama bunu insanlara aktarırken, çekiciliğini artırmak için bir kısmını gizlemelidir. bu örtme işleminin ayarı işte mühim olan. çok gizlersen hiç kimse anlayamaz. tamamen açık edersen de okuyucunun zevkini elinden almış olursun. son kullanıcı, espriyi biraz da olsa kendi çabasıyla çözmeli ve bu nedenle kendini zeki ve özel hissetmelidir. karikatürlerin insanları cezbeden noktası da işte budur diye düşünüyorum. bir esprinin anlaşılma güçlüğü ne kadar yüksek olursa, anlayan kişi o denli haz alır ve bilinç altında kendisine olan saygısı artar. işte bu zor durumdan başarıyla çıkabilen karikatüriste saygı duyarım.

çizgi hususunda ise çok katı değilim. ancak tutarlılık ve kendi çizim stilini tamamen oturtmuş olma noktalarına önem veriyorum. stili çöp adamlar olan bir karikatüristi eleştirmek son derece saçma olacaktır. orijinaliteden bahsedecek olurak, kendi stilini geliştirirken tabi ki bir çok sanatçıdan ilham alacak besleneceksin. shakespeare hamlet'i yazmadan önce hiç kitap okumamış mıydı? ancak bu işi "iş olsun" diye yapmıyorsan, yeteneğin var demektir. ve bu yetenek kesinlikle diğerlerinden farklıdır. işte bunu göz önüne alarak, en başta kendine saygı duymak ve orijinal yönünü koruyarak geliştirmek gerek. kusura bakmayın, bir karikatür duayeni gibi cümleler kurdum. ama bunlar sırf okuyucu gözüyle yaptığım tespitlerdi.

doğuştan gelen bir resim yeteneğim var, tevazu göstermem bu konuda. ki kendi çabamla elde etmediğim, doğuştan gelen bir özelliğim üzerine tevazu cümleleri de komik olur herhalde. mesela okul-öncesi dönem de dahil hayatında hiç çöp adam çizmemiş birisiyim. direkt olarak normal çizimle başlamışım. ama canlı çizimleri konusunda hiç çalışmadım, (bunun metafizik, dini bir nedeni yok. sadece sevmiyorum) çalışmayı da düşünmüyorum. boyamayı da sevmem. sadece çizgiler ile çizimler yapmaktan haz alıyorum. teknik boyutta bu kadar yakınken, karikatüre bugüne kadar hiç meyil etmemem ise hala anlayamadığım bir husus.

espri yapmayı seven biriyim (sevmeyen var mı acaba?). bunları kalıplandırmak için karikatür müthiş bir fırsat. daha önce hiç denemediğim için yeteneğimi sınama fırsatım da olmamıştı. bugün kalemi kağıdı çektim önüme. onlarca çizim yaptım ve müşkülpesent kişiliğime rağmen içime sindi ortaya çıkanlar. ancak yine de çok daha iyi olana kadar (şiir serüvenim gibi) kimseyle paylaşamam sanırım.

bu arada, eklediğim karikatür de çizgisini en beğendiğim karikatürist olan özer aydoğan'dan.

19 Mart 2010 Cuma

düşüyorum


saçma sapan bir yazı olacak, özür diliyorum. bir sonraki cümleyi bile kafamda kurmadan yazıyorum. yazmaya ihtiyacım var galiba.

ben hiç günlük tutamadım. ne kağıt kalemle, ne de klavyeyle. aslında alışık değilim galiba içimi açmaya. yazmak rahatlatıyor diyorlar, doğrudur. ama her şeyden ayan beyan bahsetmek de hoşuma gitmiyor. en fazla, üstünü kapatarak bir şeyleri dışa vurabiliyorum. sanatçı tarafımı işte bunu için seviyorum. iki satırla, iki grafikle, iki kelimeyle, iki karalamayla içindekini kusabiliyorsun. ama an oluyor, yetmiyor. öğrendim, yetmiyormuş.

hayat enteresan. kendine yeni bir dünya kurup bulutsu hayallerin arasında geleceğe gülümserken, aynı gün içerisinde o yükseklikten yere çakılabiliyormuşsun. yere çakılıp, kolayca, acısızca ölmüyorsun da. öyle bir şansın da yok. bütün hücrelerinle hissediyorsun acıyı. kırılan kemiklerine mi, yoksa dağılıp giden hayallere mi üzülmeli? yoksa, her şeyin ötesinde, batan ve geri gelmeyeceğini bildiğin güneşine mi? öfke mi? ağlamak mı? pes etmek mi?

geri dönüşü olmayacak şeyler de varmış, yeni anladım. çok şey bilirim sanırdım. iyi anılar ruhunu bir kere okşayıp geçerken, kötü anılar iğrenç bir parazit gibi yaşarmış. resim kareleri ilk günkü gibi. sesler, ayrıntılar, takvimler. geriye dönme şansın yok. ama gri tonlardaki geçmişin seni bir duman gibi kovalıyor. kaçış yok. artık yaşamaya çabalayacağın her mutlu andan bir kısmını vergi olarak geçmiş hüzünlerine vereceksin. eskisi gibi olmayacak. peki ne yaptım ben? mutluluk hesapları yaparken gelecek mutluluklarımı mı ipotek ettim? hiç adil değil.

unutamıyorum. hiç bir şey bilmiyorum. evet bu, saçma bir vaziyete uygun saçma bir konuşma.

16 Mart 2010 Salı

eclipse + qt + jambi üzerine güzellemeler

bildiğiniz gibi, ki eğer bilmiyorsanız da birazdan öğreneceksiniz, qt arabirim çatısı (ui framework) platform bağımsız bir geliştirme şansı sunuyor bizlere. linux, windows, mac, windows ce, windows mobile, symbian, maemo... görüldüğü gibi platform bağımsız kavramının hakkı veriliyor. özellikle de nokia qt'yi satın aldıktan sonra mobil alanda yaygınlaşma kaçınılmaz.

asıl bahsetmek istediğim sevgi pıtırcığı ise qt-jambi. java ile, hello world'ün ötesinde görsel arayüz yazarak çalışma fırsatınız olmuşsa, java'nın mevcut arayüz kütüphanelerinin ne kadar kanserojen olduğunu biliyorsunuzdur. java'nın tüm güzelliklerine rağmen insanı soğutan ve bir çoklarını diğer seçeneklere (genellikle c#) yönelten bu sorunu artık tarihin derinliklerine gömebiliriz. qt-jambi, gelişmiş qt çatısıyla java dilini birleştiren bir ilaç. qt'nin varsayılanı olan c++ yerine java ile qt uygulamaları yazıyorsunuz. marifetli qt arayüz tasarımcıyı kullanıyorsunuz ve aynen java'da olduğu gibi qt'de de platform bağımsızlık had safhada olduğu için tek bir program yazarak bir çok farklı ortamda çalıştırabiliyorsunuz. gevrek gevrek gülebilirsiniz artık.

java demişken, eclipse demeden de olmaz. qt jambi'nin eclipse eklentisi de indirilebilir. günümüzde artık kaçınılmaz olan wysiwyg tarzı, sürükle bırak, bir geliştirme ortamı sunduğu gibi, daha profesyonel ve daha kod yoğunluklu çalışanlar için eclipse ile entegrasyon sağlıyor. qtcreator'un sınırlı sayılabilecek editörüyle kıyaslayınca eclipse'in gelişmiş özelliklerinden faydalanmak tabi ki daha cazip. download bölümünden indireceğiniz eclipse integration paketi ile bunu sağlayabiliyorsunuz. arayüz tasarlayıcısını eclipse'de kullanarak c++ qt uygulamaları yazabilirsiniz artık. şu şekilde sempatik bir ortam oluşabiliyor.
 

önemli bir hatırlatma yapmakta fayda var. eğer linux kullanıyorsanız ve dağıtımınızın paket depolarınızda bu yazıda bahsettiğim programlar, paketler, eklentiler varsa bunları kullanmanız daha büyük kolaylık sağlayacaktır. aksi halde biraz uğraşmanız gerekebilir. windows kullanıcılarının ise pek etliye sütlüye karışmasına gerek yok her zamanki gibi. indirip kuracaklar.


ben ubuntu kullandığım için şu kodla jambi'yi uğraşmadan kurabildim.
sudo apt-get install libqtjambi-dev libqtjambi-java libqtjambi-jni
eğer kullandığınız dağıtımın paket deposunda jambi yoksa, şuradaki açıklayıcı yazı yardımcı olabilir.

eclipse eklentisini kurmak ise çok kolay. indirdiğiniz sıkıştırılmış paketi açıp plugin dizininin içindeki dosyaları eclipse'nin plugins dizinine kopyalıyorsunuz. ardından eclipse'yi çalıştırıp windows > preferences > qt jambi reference page yolunu izleyip Jambi Location ksımına jambi kurulumunuzun (nereye kurduysanız) yolunu veriyorsunuz. örneğin, benimki /usr/local/lib/qtjambi-linux32-lgpl-4.5.2_01/


bunların dışında qt'yi varsayılan dilinde (c++) eclipse'de geliştirmek de mümkün. bunun için de şuradan gerekli eklentiyi indirebilirsiniz. benim ilgimi jambi kadar çekmediği için bunu böylece, kısa bir paragrafla geçiştiriyorum. ama eclipse ortamında c++ geliştirmenin de işleri ne kadar kolaylaştırdığını unutmamak lazım.

15 Mart 2010 Pazartesi

keyes ve dobik

keyes diye bir program var. pyqt ile yazılmış. masaüstünde bir adet kelle ve fare hareketlerini takip eden göz bebeklerinden oluşan ultra-eğlenceli bir program. özelleştirilebilir kafa seçenekleri mevcut. isterseniz kendiniz de bir kafa resmi oluşturup, gözlerinin koordinatlarını python dosyasına işleyerek kendi özel keyes'inizi oluşturabilirsiniz.

faces = {
    "bush":      ("keyes-bush.png",      (49, 63, 13, 9), (76, 63, 13, 9)),
"Aaron":     ("keyes-aaron.png",     (49, 63, 12, 8), (79, 63, 12, 8)),
"Adrian":    ("keyes-adrian.png",    (46, 67, 11, 6), (74, 68, 11, 6)),
"Cornelius": ("keyes-cornelius.png", (49, 68, 11, 6), (79, 68, 11, 6)),
"Eva":       ("keyes-eva.png",       (51, 63, 12, 6), (83, 63, 12, 6)),
"Sebastian": ("keyes-sebastian.png", (50, 58, 14, 7), (83, 58, 14, 7)),
}

KEyes.py dosyasında yukarıdaki bölümde kafaların isimleri, ilgili resim dosyaları ve göz koordinatları belirlenmiş. gördüğünüz gibi bir adet g.w.bush kafasını da böylece eklemiş olduk. ilgili resmi buraya da ekliyorum. kodu yukarıdaki gibi düzenleyip, resmi de programla aynı dizine koyarak masaüstünde bir bush esintisi sağlayabilirsiniz.

bu programın daha da özelleşmiş bir halini yazmayı düşünüyorum. pygtk veya pyqt arasında daha seçim yapmadım ama taslak kodlarımı yazmaya devam ediyorum. programın adı şimdilik dobik. daha absürd bir isim bulana kadar bu, en azından. dobik, benzerlerinden farklı olarak, tamamen grafik çizimlerle anında yaratılacak. resim dosyası kullanılmayacak. sadece gözler değil, tüm kafa fareye yönelecek. stabil halini elde ettikten sonra gelişmiş özelleştirme seçenekleri de eklemeyi düşünüyorum. saç rengi, göz rengi, kafanın biçimi vs.

esasında mantık basit. farenin pozisyonu ve kafanın pozisyonu noktalarını birleştirip yatay ve dikey eksenlerle kestirip bir dik üçgen elde ediyorsunuz. işte bu üçgenin açısına, daha doğrusu tanjantına göre de gözlerin yönelimini sağlıyorsunuz.

peace out. beni bekleyin anacım.

1 Mart 2010 Pazartesi

youtube'dan mp3 elde etme

öncelikle download helper, embedded objects, click downloader benzeri bir firefox eklentisi kuruyoruz. bu eklentiler, video sitelerinden ".flv" formatındaki video dosyalarını indiriyorlar bildiğiniz gibi. bazen bu dosyalardaki sesleri ".mp3" formatında elde etmemiz gerekebiliyor. işte bu iş için, python'da hızlı ve basit bir pygtk programı yazalım.

telif hakkı saklı ürünler üzerinde işlem yapmak yasal olarak sıkıntı doğurabilir. burada yer alan bilgiler sadece öğretici amaçlıdır.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 01/03/2010 16:58:13
# mustafa yılmaz aka apshalasha (apshalasha@gmail.com)

import pygtk
import gtk
import os

dialog = gtk.FileChooserDialog("Dosya Seç..", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
dialog.set_select_multiple(1)
dialog.set_default_response(gtk.RESPONSE_OK)

filter = gtk.FileFilter()
filter.set_name("flv dosyaları")
filter.add_pattern("*.flv")
dialog.add_filter(filter)

response = dialog.run()
if response == gtk.RESPONSE_OK:
dosyalar = dialog.get_filenames()
if dosyalar:
for i in dosyalar:
i = unicode(i)
dosya = os.path.basename(i)
dizin = i.replace(dosya, '')
dizin = dizin.replace(' ', '\ ')
try:
os.system('cd ' + dizin + ' && ffmpeg -i ' + dosya.replace(' ', '\ ') +' -acodec copy ' + dosya.replace(' ', '\ ') + '.mp3 -y && y')
except:
pass
elif response == gtk.RESPONSE_CANCEL:
pass
dialog.destroy()

(gerekli paketler: pygtk, gtk, ffmpeg)