2009
09.30

Okul işte Ben!

Okula gidip, geleli, bir hafta oldu ortalama, bu bir haftada okulda polinomlar, kayaçlar, Osmanlı Devleti, Almanca(Vi hays to? Ih hayse Taha (gibi garip bir şey))…

Okul, okul, okul birçok hobinizden uzaklaşmak, geceleri saat bilmem kaçlara kadar oturmalar ne yazık ki son buldurtuyor insana. Eskiden saat 4′de yatarım diyen (ben de diyordum artık susmayı tercih ediyorum) saat 8′den saat 17:10-50 gibi okula dönünce saat 10′da tıpış tıpış uyumayı tercih ediyor. Ne kadar dezavantaj saysam, ne kadar “ulan tatilde bitti” desem, ne kadar ağıt yaksam bitti işte bitti, bitti, bitti(Nayırrrrrr! gibi haykırışlar, evet duyabiliyorum.).

Okula ilk gittiğimde aklıma takılan klasik öğrenciliğin sizde oluşturduğu sorular vardı bende de. “Hangi sınıftayım acaba? Arkadaşlarım var mı yok mu? Hangi öğretmenler bizim sınıfa gelecek ? Bu senenin sonu gelecek mi ? Notlar ile aram bozulacak mı ? Konular ne olacak ? Bir sene daha büyüdük, acaba artık çömezleri ezebilecek miyiz ?” gibi sorulardan sonra “Lütfen ama lütfen bugün hemen bitsin!” dedikten sonra da aslında önemli bir noktanın kaçtığını unutabilirsiniz. Bu da geçen sene aynı soruların cevaplarını aldığınızı(iyi-kötü) ve bir senenin anlaşılmayacak kadar kısa sürede bittiğidir.  Fakat beklediğim o sıkıntılı, endişeli okula gidiş bir an da hoşuma gitmeye başlamıştı. Okula artık sıradaki arkadaşlarımı görünce “Okul işte Ben!” dedikten sonra biriken o üç ayın tüm faturasını çıkarıp, arkadaşlarla o fatura hakkında oturup, konuşmak sanki o kocaman yoğun geçecek tüm okul günlerinin başlangıç gününe gelmeye değerdi.

Böyle bir güzel günden sonra son olarak “Ev işte Ben!” demek belki de son nokta için yeter de artar değil mi ?

Sorulabilecek güzel bir soru: Devlet’in bastırdığı kitapları yerine yardımcı kitap almamız acaba devletin parasını çöpe atmamız olmaz mı ? Onun yerine baştan yardımcı kitap alsaydık ?
Güzel bir cevap: Kapat o bilgisayarı, görmeyeceğim onun açık olduğunu!
Güzel bir cevaba, güzel bir cevap: p(x) = x**2 + ax + 12 ifadesinin ….

Kendime bir not: Daha çok kişisel yazılar yaz.

(Okul başladı diye Python’a ara yok, _
Gelsin mi  bir “Python’da Nesne Tabanlı Programlama’ya Giriş” yazısı ?)

2009
09.15

guk

Özgürlük İçin’de Charlotte v1.0′i görünce, aklıma saat başı (ya da dakika başı) öten cd-rom’ı açıp, kapatan bir guguklu saat yapma fikri geldi. Ama sonra cd-rom’un ömrünü tüketmektense sadece ötüp, dursun diye düşünmeye başladım. İlk önce pygame .mp3 çalan önceki yazımda belirtiğim betiği kullandım. Sonra güzel bir while döngüsü ile sistem saatini durmadan güncelleyip, dakika bölümünün 0 olmasını bekleyerek ilk denememi yaptım. Fakat gelin görün ki işlemcim PyGuguk’un döngüsüyle %90′larda çalışmaya başladı.

time.sleep() kullanarak sadece saatin bir kere güncellenmesiyle yapabileceğini görüp, ikinci bir deneme daha yaptığımda pyguguk işlemcimi yormadan “guuuguuk” demeye başladı. Sonra bu güzel guguklamayı, Knazar gibi saatin yanında yer almasını istedim. Qt’deki TrayIcon ile bunu başarmışken, kullandığım while döngüsü beni yüz üstü bırakmıştı. Çünkü qt donuyordu. Google’da yaptığım onlarca aramadan sonra bana gereken thread (en küçük yönetim birimi) denen bir modülmüş. Bu modül ile arkaplanda iş yapabilir, arayüzünüze bir şey olmamasını sağlıyabiliyormuşuz. Yaptığım birkaç denemeden sonra artık PyGuguk, Knazar gibi, saatin yanında guguklamaya devam ediyor.

Fakat başaramadığım bir konu da, program açıkken sesini kesememen. Programı eğer denerseniz, “Kes sesini” dediğinizde program kendini kapatıyor.

Hataları var mı ? Evet var. guguk-thread.py’da garip bir kapatma yolu var. Neyse gene de çalışıyor. Thread modülü için güzel bir örnek olabilir.

İndirmek için buraya gidebilir, logoyu beğenmediyseniz (ben de pek beğenmedim) güzel bir logo yapabilirsiniz.
(Bu dakika başı öten sürümüdür. Python’a yeni başlayanlar modifiye edebilirler. Eğer güzel yorumlar alırsam,  guguklu saati baştan geliştireceğim.)

2009
09.11

Geçenlerde bir arkadaşım bana “random” ile ilgili bir örnek gönderdi. Hatalı olan minik betiği düzeltirken aklımdan, yaptığı oyuna bir şifreli hile açan bir şey koymak geldi. Ve şifreyi kodlarda görmemesini istiyordum. “raw_input” kullanırsam başkaları tarafından görülebilecekti. Ben biraz daha profesyonel bir şey düşünüyordum. Aynı zamanda aldığı şifreyi, bir seri numaraya dönüştürüp önceki kayıt ile karşılaştıracaktı.  Kodlamaya oturduğum da benim için yaratılmış iki modül karşıma geldi. Bunlar: “getpass” ve “hashlib” idi.

	elif cevap == "sayiyigoster":
	  a = getpass.getpass()
	  b = hashlib.md5()
	  b.update(a)
          toplam = b.hexdigest()
	  print toplam
          if toplam == "d8383ab2db089aed597fc628990caa69":
	      print "Tutulan sayı: %s" % rnumber

Yukarıdaki betik arkadaşımın oynuna eklediğim bir betik. Buradan basitçe “getpass.getpass()” ve altındaki “md5″ oluşturucuyu görebilirsiniz.

İyi pythonlamalar!

2009
09.10

Python ile MySQL bağlantısı yaptık bakalım şimdi python ile nasıl .mp3 ve .midi dosyalarını dinleyebiliriz. Öncelikle yapmanız gereken pygame paketini Pardus deposundan indirmek. Neden pygame’i kullanıyoruz diye bir soru sorarsanız cevabım ise Pardus deposundaki bir paket olduğu ve ek olarak başka büyük kütüphaneleri kullanmayacağımızdır. Aslında .mp3 ve .midi dosyalarını açarken pygame yerine direk “os.system(“play dosyadi”) ” şeklinde bir komut da kullanabilirsiniz ama python içinden bu işi yapmak daha mantıklı olduğunu söylemeliyim.

PyGame modülünü edindikten sonra kod yazımına sıra geldi. Basitçe internetten nasıl yapabilirim diye kendime sorduğumda şu sitede aşağıdaki kodlar yer alıyordu.

 
# -*- coding: utf-8 -*-
import pygame
dosya = raw_input("Dosya adı:\n")
def baslat(dosya):
    clock = pygame.time.Clock()
    try:
	print "- Dosya yüklendi -"
        pygame.mixer.music.load(dosya) #dosyayı yükler
    except pygame.error:
        print "%s adlı dosya bulunamadı.\n(%s)" % (dosya, pygame.get_error())
        return
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        clock.tick(30)
 
freq = 44100     # audio CD kalitesi
bitsize = -16    # 16 bit
channels = 2     # 1 mono, 2 stereo
buffer = 2048    
pygame.mixer.init(freq, bitsize, channels, buffer)
# 0 'dan 1.0 kadar ses seviyesi
pygame.mixer.music.set_volume(0.75)
 
try:
    baslat(dosya)
except KeyboardInterrupt:
    # CTRL-C ile kapanırsa
    pygame.mixer.music.fadeout(1000)
    pygame.mixer.music.stop()
    raise SystemExit

Kodları sitedekine göre Türkçeleştirip, bir de “raw_input” ekledim. Ama arada bir bir daha programı açarsanız, bazen susmayı ve hata vermemeyi tercih edebiliyor.

İyi Pythonlamalar!