16
Ara

Yeni ve artık son okul dönemi ile birlikte Lookremix projesinden ayrılmak zorunda kaldım. Bir startup içerisinde bulunmak oldukça eğitici oldu benim için. Hem bir sosyal medya aracının oluşturulurken ne gibi badireler atlattığını görmüş oldum. Hem de bir yazılım geliştirici olarak daha önce hiç el atmadığım meselelere el atmak durumunda kaldım. Bunun yanında venezuelalı kadınların nasıl çekilmez olabileceğini devamlı sizle nasıl dalga geçmeyi başarabileceğini öğrenmiş oldum :P. Benim için oldukça çetrefilli ama bir yandan da oldukça zevkli bir iş oldu. Keşke daha fazla devam edebilseydim diyorum ama belli olmaz belki ileride yollarımız tekrar kesişir.

Şu anda ise ilk göz ağrım bilsin'i tekrar ayağa kaldırmak için elime bir fırsat geçti. Geçerli sosyal medya araçlarının zayıflığı ve bilsin'in neden güçlü bir araç olacağı konusunda okuldaki jüriye yaptığım sunum oldukça ikna edici oldu ve şu bilsin resmi olarak bitirme projem haline dönüştü. Ancak çok çalışmam gerek çünkü şu anda her ne kadar kırık dökük de olsa çalışan bir alet (tool) görünümü verse de aslında kafamdaki ideolojiden ve sağlamlıktan uzak durumda.

Projeye daha önce başlarken yaptığım yanlış teknoloji seçimlerini ve kervan yolda düzülür diyip yolda yol değiştirmeleri (gerçekten çok fazla enerji ve kaybı oluyor) tekrar yaşamamak için mümkün olduğunca belgeli, planlı davranmaya çalışıyor. Çıkacak sorunları mümkün olduğunca ön görmeye çalışıyorum. Blog üzerinden çok fazla ayrıntı vermeyi uygun görmüyorum ama projenin %90'ının sağlam restFul api oluşturmaktan geçtiğini ve mümkün olduğunca akışkan bir yapıda olacağını söyleyebilirim. Tabi bu noktada Django kullanmak bir az saçma oluyor zira api yazmak için context processorlere ya da template sistemine ihtiyaç duymuyorum. Bunun yanında Django ile long pooling yapmak ya da websockets kullanmak deveyi at yarışına sokmak gibi bir şey olurdu.

Bu noktada Node.js gel beni kullan diye göz kırpıyor, diğer kolumda da Tornado var. Bunları kendimce karşılaştırmaya çalıştım ancak eğer yanlış bilgi verdiğimi, yanıldığımı düşünüyorsanız lütfen yorum bırakın.

Performans

Node.js Google beyin V8 adlı javascript motorunu kullanıyor. Javascript kodları derlenip makina diline çevriliyor. Bu da kallavi bir hız demek. Tornado ise bunu ta ki Python 3.3 çıkana kadar yapamayacak(mış). İzlediğim node.js sunumunda yapılan testte ki bu test sadece bir "hello world" testi. Node.js saniyede 4340 cevap verebilirken tornado ise sadece 2344 cevap verebilmiş. Sözün özü Node.js performans konusunda Tornado'yu ikiye katlıyor.

Dil Yapısı

Bu noktada Tornado golünü atıyor zira hiç bir programcının Python varken Javascript kullanmak isteyeceğini sanmıyorum. Javascript'in iğrenç bir syntax yapısı var. Bu Python sever birinin şahsi fikri olmakla beraber, pek çok kişinin de noktalı virgül ya da memeli parantezler ile boğuşmak isteyeceğini sanmıyorum. Hoş, syntax olayı CofeeScript sayesinde çözülebiliyor ancak yine de dahili standartlaşmış kütüphanelerin eksikliği hissediliyor. Bir each döngüsü yaratmak için bile harici bir kütüphaneye ihtiyaç duymak, bende huzursuzluğa yol açıyor. Yengeç burcu programcılar için önermiyorum. :)

İkinci olarak javascript ilk defa browser dışında bir mecrada iş görmeye başladığı için bir çok kütüphane olgunlaşmamış durumda. Halbu ki Python 1994 de 1.0 versiyonuna ulaştı yıllardır her konuda kütüphane geliştirilmekte kendisi için. Node.js nin şu anki versiyonu 0.4.1 Tornado'nun ise 2.1.1.

Üçüncü olarak, Javascript in doğal halinin etkinlik tabanlı (event-driven) bir dil olduğunu bu yüzden geliştirilen kütüphanelerin haliyle asenkron kütüphaneler olduğunu. Python ise aslında sıralı (satır satır) işlenen bir dil olması itibari ile Tornado ile kullanacağınız kütüphanelerin özel olarak asenkron olarak yazılmış kütüphaneler olması gerektiğini eklemem gerekiyor. Anlayacağınız Tornado içinde mysqllib'i direkt olarak import edip kullanamıyorsunuz. Bunun yerine asenkron çalışacak şekilde tasarlanmış mysql kütüphanesi ne ise onu bulup kullanmanız gerekiyor.

Ancak ilginçtir ki her ne kadar Tornado daha olgun olsa da içerisinde bir session management olayı bulundurmuyor. Bu bana çok garip geldi. Sanırım Django'da ki:

if user.is_authenticated():
...
...

Türevi sorular soramayacağımız manasına geliyor Tornado'ya. Belki authentication olayları başka türlü cookie tabanlı atraksiyonlarla (OAuth?) çözülüyordur bilemiyorum.

Topluluk

Node.js'in çok heyecanlı bir topluluk henüz bir velet olmasına rağmen inanılmaz ilgi görüyor. Aşağıdaki bu rakamlar söylediğimi kanıtlar nitelikte: (Fork, Takipçi ve İlgili Depo sayılarını Github'dan aldım)

Fork Takipçi İlgili Depo Eposta Listesi
Tornado 510 3,313 364 1779
Node.js 1,339 11,944 5842 6590

Sonuç

Sonuç olarak Node.js topluluk ve performans olarak Tornado'yu dövüyor gözüküyor. Ancak sanırım geliştiriciler arasında bir garip moda ya da trendin peşinden hızla gitme durumu var. Yeni bir teknoloji afili bir sunumla anlatılıp da bir kaç yerde yazılıp çizildiği zaman hurra herkes o tarafa gidiyor. Sonra herkes sakinleşiyor hangi dili rahat kullanıyorsa onu kullanmaya devam ediyor. Bu yüzden bu 7000 kişilik e-posta listelerini falan biraz şişirilmiş rakamlar olarak görüyorum. Ayrıca bu devasa kitleden kaç tanesi gerçek bir iş görebilmek üzere sizin ofisinize gelip çalışabilecek insanlardır bunu hesap etmek gerek. üç mü beş mi?

Bunun yanında Node.js teoride bu kadar ilgi görmesine rağmen, henüz kendisini savaş arenasında görmüş değiliz. Gerçek - büyük projelerde ne gibi problemler çıkaracağı konusunda pek fikrimiz yok. Tornado ise halihazırda Facebook'un ve FriendFeed'in ağır işlerini gören bir sistem.

Bütün bunlara dayanarak, üzülerek Node.js ye bizimle değilsin diyorum. Zira saniyede 4bin request karşılayabiliyor olması bende yarattığı rahatsızlık hissini gidermeye yetmiyor. Zaten bir gün sunucularım altından kalkamayacağım bir yükle karşılaşırsa zaten para kazanıyorum demektir bir sunucu daha koyarım.

Kaynaklar:

Çalıştığım projede iş takip sistemi olarak pivotaltracker kullanıyorduk. Daha sonra GitHub'a taşınma kararı aldık. Bu taşınma işlemini otomatik olarak gerçekleştirebilecek bir script bulamadım. Bende kendim yazmaya karar verdim. Size de birgün lazm olabilir. Buyrun kullanın.

Currently i needed to migrate from pivotaltracker to github. I could'nt find any automated solution for that. So i wrote my solution in Python. Use freely when you need it. :)

from github2.client import Github
from csv import reader as CsvReader

# FILL INFORMATION BELOW

# your username at github
GITHUB_USERNAME = ""

# your api token, you can find it at https://github.com/account/admin
GITHUB_API_TOKEN = ""

# path to file that you exported from pivotal tracker
PROJECT_CSV_PATH = ""

# project path at github like: "user/projectname"
GITHUB_PROJECT_PATH = ""

github = Github(
username=GITHUB_USERNAME,
api_token=GITHUB_API_TOKEN,
request_per_second=1)

reader = CsvReader(open(PROJECT_CSV_PATH, "r"), delimiter=",")

for row in reader:
print "title :", row[1]
print "description :", row[14]
print "--------"
github.issues.open(GITHUB_PROJECT_PATH, title=row[1], body=row[14])
26
Şub
Ekşisözlük yılların sitesi. Hepimiz çok şey öğrendik ondan, güldük eğlendik. Ancak artık son zamanlarda o kadar civcivli reklamlar alıyorlar ki değil okumak, ekrana bakmak bile sorun olmaya başladı. Bende şöyle bir çözüm buldum, sizde faydalanın.

  1. Bu adresden Stylish adlı eklentiyi kurun.
  2. Sonra bu sayfaya gidin ve erkanda gördüğünüz Load into Stylish düğmesine basın. Eksisozluk - Dark Theme tamasını stylish e eklemiş oldunuz.
  3. Artık Ekşisözlüğe girdiğinizde reklamsız ve karanlık bir ekşisözlük ile karşılaşacaksınız. Okuması oldukça kolay ve göz yormuyor.
  4. Eğer hoşuna gittiyse Bildirgeç için olanı da yaptım. O da şurada
  • Zemin : Bristol kağıdı : 2tl
  • Işık : Tasarruflu ampül + duy + kablo + fiş : 8tl
  • Tripod : masa üstü tripod 15tl
  • Fotoğraf makinası : Evdeki Kodak easyshare C503
  • Fotoğraf işleme yazılımı : Gimp : Bedava
Toplam : 25tl

Sonuç :



fena değil ;)
20
Ara
Nedense yazılım işinden belli bir uzaklaşma yaşıyorum. "Belki de uzaklaşmam, biraz kendimi nadasa bırakmam gerek" diye düşünüp kendime biraz mola hakkı tanıdım. Gerçekte var olan, ekran dışında yaşayabilen bir şeyler yapmaya çalışıyorum ancak, tabi alışmış kudurmuştan beterdir basit bir iki şey kodlayarak elimi oyaladığım da oluyor.

SitePiyango da bu tip bir akşam eğlencesi olarak ortaya çıktı. Kendisi adından da anlaşılacağı üzere bir piyango sistemi. Hediye olarak ise kendisine gelen bütün trafiği gün boyunca sizin sitenize armağan etmeyi vaad ediyor. Ayrıca eğer siteniz kazandıktan sonra editörün (yani benim :) hoşuna giderse hakkında bir tanıtım yazısı yazısı da hazırlanıp Facebook daki Her Gün Bir Yeni Site sayfasında yayınlanıyor.

Ayrıca katılımcılar arasındaki, katılım kuponu kazanma savaşını izleme eğlenceli olabiliyor. :) Hem slogan bile buldum :

SitePiyango, sitenize trafik getirmenin bedava ve biraz da kumarbaz yolu.
24
Ağu



Her subdomain için ayrı kategorizasyon



Daha önceki yazılarımdan birinde (*) bilsin'de yapmayı düşündüğüm değişikliklerden bahsetmiştim. Bunlardan en önemlisi ve yazılım olarak en çetrefillisi her bölgenin kendi kategori ağacının olmasıydı. Yani bir üniversitenin duyuru sitesinin sahip olduğu kategoriler ile koskoca bir şehrin duyuru sitesinin kategorizasyon ihtiyaçlarının farklı olduğunu apaçık ortayadyı. Bu meseleyi hallettim, artık bilsin, her subdomain için ayrı bir kategorizsyon ağacına sahip.




Daha Gelişmiş Seçenekler



Kullanıcı artık alacağı mailleri belirleyebiliyor, anonimlik sağlamak adına isim ve soy adını sisteme girmiş olsa bile sitede gözükmemesini sağlayabiliyor. (Giriş yap -> tepedeki menüden kendi adına tıkla -> seçimlerinizi değiştirin)


Daha Gelişmiş Profil



Anonim olarak duyuru yapmak bir seçenek, bunun yanında kim olduğunuzu belli ederek, daha güvenilir ilanlar bırakmanız mümkün. (Giriş yap -> tepedeki menüden kendi adına tıkla -> profil bilgilerinizi güncelleyin)


Avatar Desteği



Eskiden kullanıcılar eğer gravatar servisine kayıtlılarsa, o serviste belirledikleri avatarları ile gözüküyorlardı bilsin'de. Şimdi ise üç adet seçenek var. (Giriş yap -> tepedeki menüden kendi adına tıkla -> seçimlerinizi değiştirin)



Gösterme
Ne yüklediğiniz bir resmi avatar olarak göstermeye çalışır ne de gravatar resmi kullanmaya çalışır. Erkekseniz Kemal Sunal, bayan iseniz Adile Naşit olursunuz :)
Avatarımı Göster
Bu seçeneği işaretlediğinizde siteye yüklediğiniz resmin avatar olarak kullanılmasını sağlarsınız. Resim yükleme işlemi de Profil bilgilerinizi güncelleyin bölümünden yapılıyor.
Gravatar Servisini Kullan
Klasik olarak gravatar servisinden avatarınızı alıp kullanmaya çalışır



Anonim İlanlar



Eskiden bir duyuru bırakmak için mutlaka siteye üye olmak ve giriş yapmak gerekiyordu. Şimdi ise bazı kategorilere anonim olarak duyuru bırakılabiliyor. Anonim olarak bırakılan duyurulara yine anonim olarak yorum yazılabiliyor. Örneğin maltepe bilsin'de itiraf kategorisi var bu bölüme gelip giriş yapmadan kim olduğunu hissettirmeden duyuru yazmak mümkün.




Sosyal Ağlara Daha Uyumlu



Artık bir ilanın kalıcı bağlantısını facebook ya da friendfeed gibi sitelerde paylaştığınızda, duyuru ile özet bilgi bu sitelere çok daha düzgün bir şekilde ulaşıyor.





Daha az Tacizkar :)



Eskiden girilen her duyuru bilsin'in twitter sayfasına oradan da friendfeed hesabına forward ediliyordu. Bu özelliği kaldırdım. Artık twitter ve friendfeed sayfalarında sadece önemli duyurular yer alacak.

Şimdilik bu kadar, her zaman belirttiğim gibi her türlü istek, öneri ve eleştirileriniz için yorum yazdığım yazılara yorum bırakabilirsiniz. Ayrıca açılmasını istediğiniz bir bilsin sitesi varsa miratcanbayrak et gmail.com adresine bir mail atın konuşalım :)
18
Oca
Bilmeyenler için söyleyeyim http://www.bilsin.com benim yaklaşık 1.5 senedir uğraştığım yerel bir duyuru sitesi. Açıkcası şu klasik ilan sitelerinin yeni web standartlarına uydurulmuşu ve daha sosyalleşmeye imkan vereni. Şekli de şuna benziyor :



İçerik olarak ise ilan sitesi demek yanlış olur. Duyuru sitesi daha çok. İstanbul'u ilgilendiren her türlü şeyi duyurmak için kullanılabilir. İndirimdeki mağzalar, ev arkadaşı arayanlar, eskimiş kıyafetlerini satanlar, ders verenler, beğendiğiniz restoranlar, soru cevaplar..

Adres olarak http://www.bilsin.com çok bir şey ifade etmiyor aslında. Sitenin çalıştığı bölge adı subdomain olarak kullanılıyor. Sözgelimi yukarıda gözüken sitenin adı http://istanbul.bilsin.com .. şimdilik en çok istanbul için uğraşıyorum, sonrasında eskişehir ve izmir var. (daha da sonrasında yurt dışına açılmak var ama çaktırmayın :)

Bu kadar anlattıktan sonra nasıl çalıştığı hakkında küçük bir brifing vermek farz oldu.

Duyuru Bırakma

En kolayı : üye ol - giriş yap - duyuru yap bağlantısına tıkla - duyurunu yaz - kategori seç :)

Silme ,Düzeltme ve Yorum yapma

Bu tip seçeneklerin hepsi duyurunuzun alt sağ kısmında ikonlar halinde bulunuyor. Seçenekleri : duyuruyu + tuşuna basarak açtıktan sonra görebiliyorsunuz. İkonlar her ne kadar look and feel olsa da fareyi üzerlerinde bekleterek ne işe yaradıklarını görebilirsiniz.

Ha, eğer silme ve düzeltme seçeneklerini göremiyorsanız duyuru size ait değil demektir.


Avatar Desteği

Fikirsel olarak ve görsel olarak tasarımını yaparken basitliği ön plana aldım. Bu yönüyle twitter a çok benziyor. Üye olma işleminde cinsiyet bile sormuyorum örneğin. Bu yüzden bilinmeyen avatarlar hep erkek olarak çıkıyor ama olsun. Basitlik başımızın tacı.. Aslında sitede avatar yüklemek diye bir şey de yok. Eğer gravatar'ınız var ise kullanılıyor o kadar.

İlan Sahiplerine Ulaşmak

İlan sahiplerine ulaşmak ise ayrı bir mesele. Normalde ilan sitelerinde açıktan açığa telefon numarası ve e-posta adresi kıyıya köşeye yazılırdı. Bizde ise kullanıcıların e-posta adreslerini ilanlara eklemelerine gerek yok. İlanın sağ alt tarafında gösterilen posta ikonuna tıklayarak posta gönderme formuna ulaşılıyor.



Posta gönderme sayfasına ulaştıktan sonra kendi mailinizi ve mesajınızı yazıyorsunuz. Yazdığınız mail duyuru sahibine ulaşıyor. Bu giden postada gönderen kişi sizin mailiniz olarak gözüktüğü için o cevap verdiğinde sizin email adresinize cevap vermiş oluyor. Bu arada bu fikrin sahibi Oğuz Karaesmen atlamak olmasın :)



Şimdilik bu kadar.
15
Ağu
Eskiden internet'in ne olduğunu bilmediğimiz dönemlerde bazı reklam ve filmler vardı. Orada birileri internetteki kütüphaneye girer ve araştırdığı bir konu hakkında elektronik kitapları incelerdi. Ben küçüklüğümden beri meraklıydım çok etkilenirdim bunlardan. Daha sonra telefon hattı üzerinden ilk internet bağlantımı gerçekleştirdiğimde o ekranı ilk karşımda gördüğümde bu heyecanım kısa sürdü. İnternette bi b.k yoktu afedersiniz. Daha eksisozluk, streaming video-voice olayları (youtube, lastfm) denen şey bile icad olmamıştı. Eğlenceli bir şeyler bulacağımı pek umud etmiyordum zaten ama bilgi adına da hiç bir şey yoktu.

Benim gibi düşünen insanlar harekete geçmiş anlaşılan. "Hani kitaplar internette olacaktı?" hayal kırıklığından yola çıkarak bir gurup insan bir araya gelmiş ve ellerindeki kitapları kitapları internet ortamına aktarmaya başlamışlar. Bu hareketin adını da "Gutenberg Project" koymuşlar (matba'nun mucidi Johannes Gutenberg)

Şu anda veri tabanlarında 28000 'den fazla kitap bulunuyormuş. İşin güzel yönü kitaplar pdf gibi uyuz formatlarda değil düz metin belgeleri ve html sayfaları olarak yayınlandığından el bilgisayarları ya da cep telefonları üzerinde rahatlıkla okunabiliyor.

Daha fazla bilgi için buradan buyrun.
14
Eki

Firefox amblemli fabrikasyon işi tshirt’ler şapkalar çokça mevcut fakat.. Fakat… böylesine bir el emeği göz nuru daha önce görmemiştim :). Yasemin oturmuş deli gücüyle uğraşmış kanaviçe denen şeyden yapmış. Her pikselin kumaş üzerindeki gözeneklere elle çapraz olarak işlenmesi ile yapılıyor bu kanaviçe , akıllı işi değil yani :). Hanım kızımızdan geek dünyasına bir armağan.

ohanes

Daha yakından…

burger

Bu arada dikkati pür olanlar hatırlayacaktır kendisinin bir resmini Gimp ile ilgili bir yazımda kullanmıştım.

kaynak : http://ezberci.blogspot.com/

Posted in Uncategorized   Tagged: ilginç, oi   
28
Ağu
etiket oi

Hangi işletim sistemini kullandığımı öğrenmek istermisiniz? Pardus 2007.3…

Şu anda, ümitle 2008 için güncelleme çıkmasını beklemekten usandığım dakika itibari ile yazıyorum bunları size.Konuya hakim olduğumu sanmayın zira “ne zaman çıkacakmış peki güncelleme ?” diye sorarsanız bilmiyorum.

Sadece irc kanallarına girdiğim zaman edinebildiğim dedikodular ve google da arama yaptığım zaman bulduğum bu güncelleme işleminin ne kadar zorlu olduğundan ve tavsiye edilmediğinden bahseden sayfalar var. Listelerden bahsetmiyorum zira son kullanıcı olarak listeleri takip etmek zorunda değilim.

Aslında bahsi geçen güncelleme betiklerinin svn hesabına bir göz atmak isterdim en son commit ne zaman yapılmış diye(…!)

“Home klasörü başka bir partisyonda ise kuruverin baştan” gitsin deniyor.

Peki ya benim gibi home klasörü ayrı partisyonda olmayan kişiler ne yapacak? (home klasörünü cd-dvd lere kopyala demeyin 90 lara döndürmeyin beni lütfen.)

Bunu yapmak çok zor deniyor…

Bu son kullanıcıyı zerre ilgilendirmez. Mozilla vakfı arkadaşlar bu png formatına uyum sağlayamıyorum çok zor dese neremizle gülerdik? Hem bu bahsi geçen zor işlemi ilk biz mi gerçekleştiriyoruz? dünyada bir ilk midir ?

Neden bu güncelleme betiğinin ne zaman çıkacağı, hangi gelişim aşamasında olduğu, Gecikmenin sebebinin ne olduğu konularından haberdar olabileceğimiz bir sayfa bulamıyorum internette. Bu durumu ödevini yapmamış çocuğun hocadan defterini saklamasına benzetiyorum.

Şimdi ne yapacaksın diye soracak olursan kendime bir harici hdd alıp home klasörümü yedekleyip başka bir distro ile yoluma devam edeceğim.

Bu arada Gökmenle geliştirdiğimiz kurabiye projesinin gecikme sebebi benim bir türlü 2008′e geçemeyiş olmam (zira yeni pisi api’si ile birşeyler yapamamam) olduğundan dolayı projeye ayak bağı olmamak adına ayrıldığımı buradan ilan etmiş olayım.

23
Ağu

Hep yanardım eskişehirde fotoğraf çekemedim doğru dürüst diye. Sonunda abimden fotoğraf makinesini almayı başardım ve aşağıdaki resimler çıktı ortaya…

Benim için hatıra değeri taşıyan resimleri değil de daha çok sanatsal değeri olanları koyuyorum.

Diğerlerini flickr sayfamda bulabilirsiniz ilginizi çekerse.

Not: Resimler üzerindeki oynamalar gimp ile yapıldı. Üzerlerindeki tarihler rahatsız etmezse duvar kağıdı olarak kullanılabilir.

100_1373

100_1377

100_1380

100_1388

hız

100_1354

100_1366


ilk önce renkli bir resim buluyoruz. boyutları en az 640×480 olmalı



Bu resmi biraz soluk buldum. renkler->eğriler menüsüne girip renk dengesini ayarlayabilirsiniz ben öyle yaptım.



Şimdi yapmamız gereken şey katmanımızın bir kopyasını oluşturmak ve onu siyah beyaz hale getirmek. Bunu yapmak için “CTRL+SHIFT+D” ye basıyoruz, renkler->desaturate seçeneğine tıklayıp karşımıza gelen formda hiçbirşeye dokunmadan tamam tuşuna basıyoruz.Katmanlarımızın sırasını siyah beyaz olan üstte olacak şekilde ayarlıyoruz

Şimdi SHIFT+E tuşuna basıp elimize silgiyi alıyoruz. Siyah-beyaz olan katman seçili olmalı şimdi bir deneme yapın ve silgiyle biraz etrafa dokunun. İşin mantığını anladınız ;) ctrl+z ye basıp silme işleminizi geri alın.


Şimdi çok dikkatli bir biçimde biraz önceki işlemi tekrarlayın. ve işte sonuç ;)


** Resim için Yasemin’e teşekkürler
** anlayamadığınız birşey varsa yorum olarak ekleyin

22
Ağu
etiket oi

Gökmen’le birlikte birbirimize python anatırken kalıcı olsun arada açar bakarız, hemde isteyen faydalanır diyerek açtığımız blog, sadece 6 günde günlük 70 tekil ziyaretçi sayısına ulaştı. Bu hızla gidersek Türkiye’de yazılım konusunda en çok kurcalanan sitelerden biri olabiliriz belki.

Uzun zamandır blogumda insani yazıların, bilgisayar yazıları tarafından ezildiğini görüyordum. Artık bende yazılımla ilgili yazılarıma buradan değil oradan devam edeceğim. Böylelikle buranın ortaya karışık ketçaplı piza tadından kurtulacağını umuyorum.

Şuradaki videoda da görebileceğiniz gibi Geany editör için yaptığım eklenti size kodlama yaparken anında Python yardımı alma fırsatı sunuyor.

Bu eklentiyi nasıl kullanacağınız ise burada.

8
Ağu

İnternette Gtk ile ilgili Türkçe bir döküman aradığınızda bilgiden çok küfür var nedense. Aman abi sen ne yapıyorsun ,acayip zor ,imkansız sadece über-geek’ler gtk kullanarak programlama yapabilir. Gtk ile programlama yapanın geyşası olurum gibi yorumlar yükseliyor. Bende bu sebepten başlangıçta kendimi qt yolunda zorlamıştım fakat yapamadım. Gtk fetişim xfce ile birlikte nirvanasına ulaştı genç zihnime bir karabasan gibi bulaştı. fazla lafı uzatmadan gtk nedir ne değildir diye kimseyi yormadan Türk internet medyasını büyük bir açlıktan kurtarayım dedim.

PyGtk hello world şeysi.

İlk önce glade denen tasarım aracımızla en basit manada bir arayüz tasarlayalım. Yorumları tahmin edebiliyorum neden arayüzü glade ile yapıyorsun delikanlı gibi kodlayarak yapsana diye.. css olmadan html kodlamak neyse glade olmadan gtk kodlamak (diğer gui api’lerini bilmediğim için birşey söyleyemiyorum) odur. Glade ile arayüzünüzü tarif eden bir xml dosyası oluşturursunuz. Sonra bunu programınızın içinde ayrıştırır (”parse” demeyeceğim) kullanırsınız. Kodunuz ayrı tasarımınız ayrı olur , 1000 satırlık değil 100 satırlık kodla güreş tutarsınız gözleriniz şeş beş bakmazsınız.

  • Yeni bir glade dosyası açın
  • bir adet window ekleyin
  • içine bir adet button nesnesi ekleyin , etiketine hello world gibi bişi yazın.
  • pencerenin ismi w1, düğmenin ismi d1 olsun.

Sinyaller ve işleyiciler:

Sinyal’ler aslında hareketlerdir düğmeye basıldı, nesne yokedilmek istendi , sürükleyip bıraktılar beni vs gibi. İşleyici de bu aksiyon karşısında widget’in arkadaşlarına ne diye bağırdığı desek yeridir. Örneğin b1 tuşu tıklandığı zaman “bana tıkladılar imdat” diye bağırıyor , ve bunu dinlemekle görevli olan fonksiyon bu sesi duyunca yettim gayri değip çalışmaya başlıyor…

tabii

tabii

  • w1 widget’ının(Türkçesini bulursam yazıcam)  sinyaller sekmesine girin GtkObject altındaki destroy
    sinyalinin yanına “w1_kapatilmak_istendi” yazın.
  • b1 widget’ının sinyaller sekmesine gidin clicked sinyalinin yanına işleyici olarak “d1_basıldı” yazın.
  • dosyayı hello.glade adıyla kaydedin.

Godlamaya başlayabiliyin aybalam:

En sevdiğiniz editörle yeni bir python dosyasına başlayın en sevdiğiniz 2 satırı bu dosyanın başına yazın.

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

ilk önce pygtk modülünü ve sys modülünü import eyleyin.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk ,sys

sonra pygtk ya senin bana version 2.0′ın lazm değilsen işime yaramazsın diyeceğiz. pygtk.require(’2.0′) eğer exception kaldırırsa versionu 2.0 dan aşağı demektir o zaman program çalışmasın.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1) # [*1]

*1 : python un yeni versiyonunda sadece exit() demek yetiyormuş.

Eğer pygtk 2.0 var ise geri kalan gerekli modülleri import edelim..

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1)
import gtk , gtk.glade

Şimdi glade dosyamızı ayrıştıralım , içinden w1 ve b1 nesnemizi kullanmak üzere birer değişkene atayalım.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1)
import gtk , gtk.glade
window_tree = gtk.glade.XML(’hello.glade’)
window = self.wtree.get_widget(’w1′)
button = self.wtree.get_widget(’b1′)

Artık bu nesnelere ait işlemleri gerçekleştirebiliriz. ama önce programa hangi sinyali ne için kullanacağımızı belirtelim bunu yapmak için hangi işleyicinin hangi fonksiyonu tetikleyeceğini bir sözlük üzerinde topluyor sonra autoconnect ile bu işlemleri fonksiyonlara bağlıyoruz

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1) # [*1]
window_tree = gtk.glade.XML(’hello.glade’)
window = self.wtree.get_widget(’w1′)
button = self.wtree.get_widget(’b1′)
signals = {
‘w1_kapatilmak_istendi’ : end_program,
‘d1_basıldı’ : end_program,
}
window_tree.signal_autoconnect(signals)

Gördüğünüz gibi tuşa basıldığı zaman ve pencere kapatılmak istendiği zaman end_program fonksiyonuna yönlendiriyoruz… peki bu end_program fonksiyonunu nasıl tanımlayacağız?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1) # [*1]
window_tree = gtk.glade.XML(’hello.glade’)
window = self.wtree.get_widget(’w1′)
button = self.wtree.get_widget(’b1′)
signals = {
‘w1_kapatilmak_istendi’ : end_program,
‘d1_basıldı’ : end_program,
}

def end_program(self,widget,data=None):
print “Güle güle…”
gtk.main_quit()
# sinyalleri bağlamadan önce fonksiyonların
# tanıtılmış olması gerekiyor
window_tree.signal_autoconnect(signals)

burada dikkat etmemiz gereken şey şu gtk nın sinyalleri tarafından çağırılan fonksiyonların zorunlu olarak alması gereken sırasıyla self, widget , data=None argümanları.. Aslında bunu ezberleyin çünkü hep bu şekilde kullanacaksınız.

Widget’larla işimiz bittiğine göre w1′e göster kendini emrini verelim. ve son olarak gtk ya ben işimi bitirdim bundan sonra kontrol sende demek için gtk.main() diyelim.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk, sys
try:
printpygtk.require(’2.0′)
except:
print “versiyon tutmadı…”
sys.exit(1) # [*1]
window_tree = gtk.glade.XML(’hello.glade’)
window = self.wtree.get_widget(’w1′)
button = self.wtree.get_widget(’b1′)
signals = {
‘w1_kapatilmak_istendi’ : end_program,
‘d1_basıldı’ : end_program,
}

def end_program(self,widget,data=None):
print “Güle güle…”
gtk.main_quit()
window_tree.signal_autoconnect(signals)
gtk.main()
window.show()

işte sonuç…

Buradaki kodların boşluk karakterlerinde falan bozukluk olabilir siz en iyisi kodlara şuradan da bir bakın.

hello.py hello.glade

25
Tem

Sizde benim gibi la minör gamını hesapla bakim dendiği zaman parmak hesabı yapıyorsanız. Hadi hesabı yaptınız diyelim gitarın perdeleri üzerinde nerelere basıcam peki diye kaşlarınız emrah pozisyonu alıyorsa. Bunu hesapları yapmak için guitar pro (yada muadili herhangi bir program) kurmak kullanmak istemiyorsanız. musicscale.py sizin için yazıldı (reklamcılık okumalıymışım :))

erkan görüntüsü

musicscale.py bu işleri sizin için yapan 80 satırlık bir python programı. Nasıl kullanıldığını görmek ve indirmek için buraya tıklayınız.

Kendisi gayet buggy bir arkadaş , parametreleri yanlış verirseniz sapıtıyor ama o kadarını da düzgün yapın yaw :)

28
Haz
etiket oi
2
Haz

Pardus’la ilgili eleştirileri blogumdan yapmayı seviyorum çünkü bana ait bir alan olduğu için daha rahat at koşturabiliyor , çeşitli nezaket kurallarına uymayabiliyorum :) hemde yazılarım diğer kullanıcılar tarafından okunduğu için fikir alışverişi yapmak daha kolay oluyor.

Hemen söylemeliyim ki Pardus 2008′in ne gibi yenilikler getirdiğinden sadece etrafta okuduğum kadarıyla haberdarım. Test ekibine katılmadım çünkü bilgisayarımı iş için kullanıyorum stabil olmayan bir işletim sistemi kullanamam (windows da kullanamam :) )

Bir süre için gentoo kullandım , 64 bit olarak kullanıldığında performans olarak gerçekten tatmin edici ,üfür üfür bir sistem. Fakat usb sticklerimi , samba paylaşımlarımı mount etmekten yorulup pardusa geri döndüm. İkisinin arasını bulamadım bir türlü. Gentoo tam olarak linux kullandığınızı hissettiriyor. İsterseniz içinde sadece firefox olan bir internete girme bilgisayarı ; isterseniz büyük yüklerin altına girebilecek bir sunucu olarak tasarlayabilirsiniz. Verdiği bu özgürlük hissinin yanında kullanıcıya muazzam bir yük oluşturuyor. Birinin blogunda okumuştum sanırım “bir disk takıldığında otomatik mount edilmesi bir lüks değil gereklilik diyordu” Gentoo kullanınca hak verdim kendisine :)

Pardus ise nasıl desem yanında sanki biraz zoraki bu bilgisayarı böyle kullanacaksın sistemi olarak geliyor. Siz suya sabuna dokunmuyorsunuz bu iyi , fakat bu seferde pek özelleştiremediğiniz bir sistem ortaya çıkıyor. Evet son kullanıcı için standartlaşma kesin işletim sisteminin belli bir alışkanlık yaratması için bu gerekli ama artık…

…Pardus’un thunderbird kullanıyorsam kmail i silme özgürlüğünü tanıması gerekiyor bana!…

Şu anda sistemde asla kullanmayacağım fakat bütün sistemi uçuracağı için kaldıramayacağım birsürü paket var(örn: Kaffeine).

Sanırım geri döndüğümde beni rahatsız eden, eksikliğini hissettiğim şeyler genelde depo politikası hakkında. Daha önce bugzillaya (çok oluyor) Paketlerin yeterince kategori altında yayınlanmadığından şikayetçi olduğumu belirten bir yazı girmiştim. Gerçi o zamanlar depoda gerçekten az sayıda program vardı. Hani oyunlar kategorisine girip var olan 5 oyun içinden birini seçip kuruyorduk ve o an için benim bahsettiğim gibi abartılı bir kategorilemenin gereksiz olduğu söylenmişti (bulabilsem link vericem). Artık işler değişti şu anda paket yöneticisine girdiğim zaman 143 adet oyun görüyorum. Örnek vermek gerekirse urban-terror oyunu “Oyunlar/fps” kategorisi altında bulunsa daha iyi olmazmı? Daha güçlü bir örnek verebilmek için Programlama kategorisi altına bakalım. Görsel svn arabirimi olan esvn , programlama ortamı (editörü ,hedesi) olan eclipse, Çeşitli dillere ait kütüphaneler , Django hepsi birarada .. Burası biraz daha kalabalıklaşırsa salı pazarına dönebilir gibi :). Kullanmak istediğim editor’ün adını biliyorsam ne ala ama girip depodaki editörleri deneyeyim tek tek dediğim zaman iş iç karartıcı bir hal alıyor. Biraz önce Eclipse’nin programlama kategorisi altında olduğundan bahsetmiştim ya , Gentoo’yken kullanma fırsatı bolduğum joe editör bu sefer Diğerleri kategorisi altında karşıma çıktı. Emacs’in bazı eklentileri “Programlama” kategorisi altında, bazıları “Diğerleri” kategorisi altında. Bunda paketçilerin bir suçu yok zira yaptığınız pakedin hangi kategoriye ait olduğu yoruma açık kalıyorsa illaki bu tip karışıklıklar olacaktır. Halbuki development/editors (geliştirme/düzenleyiciler(?)) şeklinde bir kategorimiz olsaydı bu tip bir karmaşa ortaya çıkmayacaktı.

Şimdilik söyleyeceklerim bu kadar, benle birlikte kafa yoran , yorum yazan herkese teşekkür ederim

13
May

ohanesburger

Yoksa gözlerim beni yanıltıyormu?

23
Mar

Bu sayfadaki fiyatlara mahkum olursunuz :\ Yiğidi öldür hakkını yeme demişler program işini çok güzel yapıyor. 30 Günlük deneme sürümünü kullanmaya başladım denemek için taradığım sayfayı %100 doğru bir şekilde çevirdi. orcad ve gocr ise başarı olarak %30-40 arasında geziniyor. Yapılacak bir şey yok mu? tabi ki var

  • http://code.google.com/p/ocropus/
  • http://code.google.com/p/tesseract-ocr/

Programlarının pardus depolarına eklenmesi ve tesseract-ocr programının Türk dili için eğitilmesi çok güzel olurdu (ben denedim ama çok uzun, zahmetli ve benim için fazlaca teknik bilgi gerektiren bir iş olduğuna karar verdim). Nasıl train edileceğine dair belge ise şurada bulunuyor.

Bunun dışında aşağıda depolarda bulunan gocr ,ocrad ve ilk verdiğim linke ait program olan OCR Shop XTR Lite programları arasındaki karşılaştırmayı sunuyorum. Orjinal resim >> http://imaj.at/36304

gocr çıktısı


2.3. Ileti3i_ Ka_ra__Bireyin ya3ant1s1n1n her an1nda etkili olan ve en önemli görevi üstlenen duygul_n

ta_nmas1 bireyin i1eti3imini de etkili kllacaIct3r. D4ygular hayatln her alanlnda etkili

old_lar1 gibi ileti3im1e ilgili her alanda da etkin rol oynaTlar. Bu sebeple bireyler

aç_slndan kendileri veya ba3ka1ar1na ait d4yg4larln iyi bir 3ekilde tan1mlanmas1 ileti3im

sürecini etkili k1lacaJc uygun ifade biçimlerinin olu3t4rulabilmesi aç1s1ndan önemlidir.

_leti3im amaca ula3mak ad1na sözcük ve diğer simgelerin kullan1lmasldlr. Yüz ifadeJeri,

vü'cut hareketleri, fiziksel göiJnüm bu simgeler içersinde yer almaktad1r (Sayers ve

diğerleri, 1993, s.9). Bir ba3ka deyi3le ileti3im al1_1n_n zihninde yollay1c_ taTafindan

tasarlanan detaylaT1n oJu3tur4lmas1d1r (Vecc_o, 2OO6, s.294).

_leti3imle ilgili olarak Gur4_- _'z ve Yaylac1 (2OO4, s.41), ileti3imin ki3ilerin bilgi duygu ve

dü3üncelerini payla3arak birbirlerini anlamalar_n3 sağlayan sii' eç olduğ_unu, _3ilej

örgütleri ve toplumu bü_1e3tiTen toplumsal bir olgu olduğunun alt1n1 çizmektedirler.

Bu  noktada  ileti3im,  bilginin  mesaJlar  arac3llğ1  ile  anlamll  deği3imi  olarak

nite1endirilebilmektedir (Boone ve K4rtz, 2OO3, s.376).

Bir ba3_a tanlmda ileti3im, birey ya da _p tarafindan yollanan mesaJlar1n diger bir

_p ya da birey t_afindan _la31lmas1 3eklinde aç1klanabilmeJctedir. B4rada bir iletim

ve ortak anlam payla31m1 mevcuttur (Kakabadse ve diğerleri, 2OO4, s. 1 49- 1 SO).

Yüksel (2OO3, s.1O), herhangi bir ileti3im etkile3imine ili3_n olaTak iki temel sistemin

i3lev  görmekte  old4ğun4  vurgu1amaktadlr.  Bireyin  icindeki  ögeler  olarak

nitelendi_lebi1ecek ic sistem, dige_ ise bireyin d133ndaki öğelejn olu3t4rdug4 d13

sistemdir. Ileti3im sürecine kat1lan her birey de kendine özgü bireysel ve te_l olan

kendi iç sistemini ileti3ime yans_tmaJctadlr. Bu ögeler, bireyin ki3isel özellikleri,

egilimle_ tutumlar1, zekâsl geçmi3 deneyimleri vb. olarak ortaya ç_kmaktad3r. Her bir

ileti3im etkile3iminde birey içsel uyaranlar ad1 verilen bu kendi iç istemi ile _eraber

dü3ünül___

ocrad çıktısı


2.3. ileti_im KavramlBireyin yafantlslmn her amnda etkili olan ve en �nemli g�revi �stlenen duygulann

tamnmasl bireyin iletifimini de etkili kllacaktlr. Duygular hayatln her alamnda etkili

oldmlarl gibi iletifimle ilgili her alanda da etkin rol oynarlar. Bu sebeple bireyler

aSlslndan kendileri veya bafkalanna ait duygularln iyi bir fekilde tammlanmasl iletifim

s�recini etkili kllac�k uygun ifade biSimlerinin olu_twulabilmesi a�lslndan �nemlidir.

iletifim amaca ula_mak adlna s�zc�k ve di�er simgelerin kullamlrnasldlr. Y�z ifadeleri,

v�cut hareketleri, fiziksel g�r�n�m bu simgeler i�ersinde yer almaktadlr (Sayers �e

di�erleri, lgq3, s.9). Bir bafka deyifle iletifim allclmn zihninde yollaylcl taraflndan

tasarlanan detaylarln olufturulmasldlr (Vecchio, 2006, s.294).

iletifimle ilgili olarak G�r�z ve Yaylacl (2004, s.47), iletifimin kifilerin bilgi duygu ve

d�f�ncelerini payla_arak birbirlerini anlamalarlm sa�layan s�reS oldu�unu, ki_ileri

�rg�tleri ve toplumu b�hnleftiren toplwsal bir olg_ oldu�unun altlm Sizmektedirler.

Bu noktada iletifim, bilginin mesajlar araclll�l ile anlamll de�ifimi olarak

nitelendirilebilmeMedir (Boone ve Kurtz, 2003, s.3_6).

Bir bafka tammda iletifim, birey ya da gwp taraflndan yollanan mesajlann di�er bir

gwp ya da birey taraflndan anlafllmasl feklinde a�lklanabilmeMedir. Burada bir iletim

ve ortak anlam paylaflml mevcuM (Kakabadse ve di�erleri, 2004, s. 149-1 50).

Y�ksel (2003> s.IO)_ herhangi bir iletifirn etkilefimine ilifkin olar�k iki temel sistemin

iflev g�rmekte oldu�unu wrgulamaktadlr. Bireyin iSindeki ��eler olarak

nitelendirilebilecek is sistem, di�eri ise bireyin dlflndaki ��elerin olu_hrdu�u dl_

sistemdir. ileti_im s�recine katllan her birey de kendine �zg� bireysel ve tekil olan

kendi is sistemini iletifime yansltmaMadlr. Bu ��eler, bireyin kifisel �zellikleri,

e�ilimleri tutumlarl, zek�sl ge�mif deneyimleri vb. olar�k ortaya �lrmaktadlr. Her bir

iletifim etkilefiminde birey i�sel uyaranlar adl verilen bu kendi is istemi ile beraber

d�f�n�l�r

OCR Shop XTR Lite çıktısı


2.3. İletişim Kavramı
Bireyin yaşantısının her anında etkili olan ve en önemli görevi üstlenen duygulann
tanınması bireyin iletişimini de etkili kılacaktır. Duygular hayatın her alanında etkilioldukları gibi iletişimle ilgili her alanda da etkin rol oynarlar. Bu sebeple bireyler
açısından kendileri veya başkalarına ait duyguların iyi bir şekilde tanımlanması iletişim

sürecini etkili kılacak uygun ifade biçimlerinin oluşturulabilmesi açısından önemlidir.

İletişim amaca ulaşmak adına sözcük ve diğer simgelerin kullamimasıdır. Yüz ifadeleri,

vücut hareketleri, fiziksel görünüm bu simgeler içersinde yer almaktadır (Sayers ve

diğerleri, 1993, s.9). Bir başka deyişle iletişim alıcının zilıninde yollayıcı tarafından
tasarlanan detayların oluşturulmasıdır (Vecchio, 2006, s.294).

İletişimle ilgili olarak Gürüz ve Yaylacı (2004, s.47), iletişimin kişilerin bilgi duygu ve
düşüncelerini paylaşarak birbirlerini anlamalarını sağlayan süreç olduğunu, kişileri
örgütleri ve toplumu bütünleştiren toplumsal bir olgu olduğunun altını çizmektedirler.
Bu noktada iletişim, bilginin, mesajlar aracılığı ile anlamlı değişimi olarak
nitelendirilebilmektedir (Boone ve Kurtz, 2003, s.376).

Bir başka tanımda iletişim, birey ya da grup tarafindan yollanan mesaj ların diğer bir
grup ya da birey tarafindan anlaşılması şeklinde açıklanabilmektedir. Burada bir iletim

ve ortak anlam paylaşımı mevcuttur (Kakabadse ve diğerleri, 2004, s.149-150).

Yüksel (2003, s.10), herhangi bir iletişim etkileşimine ilişkin olarak iki temel sistemin
işlev görmekte olduğunu vurgulamaktadır. Bireyin içindeki öğeler olarak
nitelendirilebilecek iç sistem, diğeri ise bireyin dışındaki öğelerin oluşturduğu dış

sistemdir. İletişim sürecine katılan her birey de kendine özgü bireysel ve tekil olan
kendi iç sistemini iletişime yansıtmaktadır. Bu öğeler, bireyin kişisel özellikleri,

eğilimleri tutumları, zekası geçmiş deneyimleri vb. olarak ortaya çıkmaktadır. Her bir
iletişim etkileşiminde birey içsel uyaranlar adı verilen bu kendi iç istemi ile beraber düşünülür

16
Mar
UNIX Airways Herkes havalimanına gelirken uçağın bir parçasını yanında getirir. Pistin ortasında uçağı parça parça biraraya getirir ne tür bir uçak yapacakları konusunda durmadan tartışırlar Air DOS Herkes uçak havalanana kadar ittirir. uçak havalanınca içine atlar, yere çakılınca tekrar iner ve ittirirler.. böyle sürüp gider Mac Airlines Bütün plotlar , hamallar , biletçiler ve hostesler aynı gözükürler ve aynı şekilde [...]