Python ile dosya karşılaştırması yapmak
Pınar ile Jabber’den konuşurken Pardus için küçük bir iş olduğunu söylemişti. Kendisine eğer ufak tefek şeyler olursa yapmaya çalışırım demiştim zamanında. Kendisi de Fatih Aşıcı’nın küçük bir işini bana söylemişti. Fatih ile de konuştuk sonra bu işi. Gerçi sonra farklı bir yol izledik, ama ben yine de öğrendiğim ve yazdığım bu betiği paylaşayım. Bu gibi yazılar çokça görebilirsiniz şimdiden diyeyim
Gelelim işin nasıl bir şey olduğuna.
Şimdi elimizde iki tane liste var. Bu listelerde her ekran markasının hangi frekanslarda çalışması gerektiği yazar. Bir tanesi Fedora’ya ait, diğeri de Pardus’un kendi listesi. Fedora’da yaklaşık 5200 tane Pardus’ta ise yaklaşık 4400 tane girdi var. Şimdi sorun şu, Fedora’da olup ama Pardus’ta olmayan belki yüzlerce model var. Fedora’da her model için Pardus’ta olup olmadığına bakıp eklememiz lazım. Hal öyle olunca binlerce satır’a teker teker bakmak zor oluyor. Ben de bunu bir Python betiği ile halletim. İlk önce betiğinin kendisini vereyim ve ardından betik hakkında bilgileri veririm:
Parrot CK3100 LCD Araç kiti hakkında izlenimlerim
Eski aracımızı sattıktan yaklaşık iki ay sonra yeni bir araç aldık. Alırken içine de servis tarafından bir de araç kiti taktırdık. Bu kadar farklı bir şey olduğunu bilmiyordum, uyduruk bir şey takarlar derken beni şaşırttılar ciddi anlamda. Gelelim ürüne.
En basit anlamıyla Parrot CK3100 ile aracınızda kablosuz bir şekilde görüşme yapabilirsiniz. Son zamanlarda araç içinde telefon ile yapılan görüşmelerde cezalar gittikçe artıyor, ki başıma da geldi böyle bir olay. O yüzden son zamanlarda bu gibi ürünler artmış bulunmakta. Parrot ise madem kablosuz olacak o zaman iyi bir şekilde olsun diyerek bunu bir adım daha ileriye taşıyor. Özellikler gelince kısaca şu şekilde:
- Ekranı olduğu için gelen aramaları veya giden aramaların numaralarını kolayca görebiliyorsunuz. Benim en çok hoşuma giden özellik bu. Bundan önce ekranı olmayan bir araç kiti kullandığımdan bunun faydasını görebiliyorum. Menülerin kullanımı çok kolay. Zaten topu topuna 3 düğme + bir de döndürme özelliği var. Dilleri arasında Türkçe seçeneği de var.
- Dahili olarak 150′ye yakın numarayı içindeki hafızaya kayıt edebiliyorsunuz.
Ayrıca ses tanıma özelliği ile çok havalı ve kullanışlı bir şekilde kullanabiliyorsunuz. Nasıl mı ? Örneğin aracınızın içinde sürerken, “Telefon” diye sesleniyorsunuz, “Ahmet” diye sesleniyorsunuz ve araç kiti otomatik olarak Ahmet’i arıyor. Hiç bir düğme’ye basmanıza gerek kalmıyor. Görüşmeniz bittiğinde “Kapat” diye sesleniyorsunuz ve Parrot görüşmeyi sonlandırıyor. Kullanınca sanki Kara Şimşek(Knight Rider) içinde oturuyorsunuz gibi geliyor. Çünkü aramalarda Türkçe olarak seslendirmesi de var. Ahmet aranıyor diyor mesela. Görüşme kapanıyor deniliyor mesela. Gerçekten sandığımdan başaralı çıktı bu araç kiti. - Diyelim ki arabayı sizden başka birileri daha kullanıyor? Her kişinin sesi farklı haliyle, her kişinin kullandığı numaralar da farklı, Parrot bunu da düşünmüş ki CK3100 için 5 kişiye kadar ayrı profil tutuyor. Her profilin kendine has 150 numara kaydetme özelliği var, ses tanıma için kullanılan anahtar sözcükler de bu profiler için ayrı ayrı tutuluyor. O yüzden arabayı kullanan kişiler arasında kesinlikle bir uyumsuzluk olmuyor.
- Telefonunuzla bağlantı kurduğunuzda telefonun şebeke adını, pil tüketim gücünü ve çekim gücünü de ekranda gösteriyor, tabi telefonun bluetooth adı ile beraber. Mesela sırf araç için bir telefon kullanmak istiyorsanız, bluetooth destekli basit bir telefon alıp, içine sim kartı takabilir ve bu telefonu da sadece arabanızda kullanabilirsiniz.
- Bunların dışında araç içinde müzik dinlerken anında arama geldiğinde otomatik olarak müziği sessize alıyor, ayrıca otomatik olarak yaptığı başka bir şey ise eğer cep telefonunuzun bluetooth’u açık ise, arabaya yaklaştığınızda kendisi otomatik olarak bağlantı oluşturuyor. Onun dışında telefonunuzdaki mp3′leri de arabada dinleyebiliyorsunuz. Sesi doğrudan arabadaki hoparlörlere yönlendiriyor.
Genel olarak gördüğünüz gibi gayet başaralı bir ürün. Hem tasarım açısından hem de kullana birlik açısından sizi hüsrana uğratmayacaktır. İçinden çıkan mikrofonu bizde sürücünün güneşlik kısmının sağ kısmına yerleştirmişler. CK3100 ekran ünitesini ise ön konsolda yerini alıyor. Fakat bunu dilediğince istediğiniz yerle yerleştirebiliyorsunuz. Fiyat konusuna gelirsek, biz arabayı aldığımızda kendileri taktıkları için bilmiyorum, fakat küçük bir araştırma yaptım ve Gittigidiyor’da 400Ytl gibi, Hepisburada.com’da ise 360 ytl gibi bir fiyata alınabiliniyor. Ayrıca Renkli veya dahili GPS’i olan ürünleri de var. Bunların fiyatı biraz daha fazla.
Parrot ve ürünleri hakkında daha fazla bilgiyi parrot.com.tr adresinde bulabilirsiniz. Fakat şimdiden diyeyim, siteyi her kim çevirdiyse yüzlerce hata bulunuyor. Türkçe seçtiğiniz halde çoğu kelimeler İngilizce. Bu yönden eksiklikleri var.
Qt hakkında yeni bir Python kitabı siparişi
Kredi Kartı kullanmadığım için genellikle yurt dışı alışverişleri mümkün olmuyor. Bildiğiniz gibi Paypal hesabınız varsa bile ona para aktarmak için yine kredi kartı ihtiyacı doğuyor. Geriye de iki seçenek kalıyor: Ya Garanti bankasının uyguladığı sanal kart gibi bir kart ile alışveriş yapmak(ki bende kapattım garanti hesabımı) ya da bir arkadaşınız vasıtasıyla almak. Ben de öyle oldu nitekim, Irc’de Serkan abi sağ olsun alabileceğini söyledi ve bu akşam da alımı gerçekleştirdi. Ona da buradan teşekkür ederim.
Hatırlarsanız bundan yaklaşık 1 sene öne Learning Python kitabını sipariş vermiştim. Zamanımı iyi kullanabilseydim belki farklı olabilirdi, her neyse Learning Python kitabı bitti gibi bir şey. Kitap güzeldi ve bir çok şeyi öğretti, tabi yine buna rağmen bol bol alıştırma yapmak lazım yoksa bir dili iyi bir şekilde öğrenmek mümkün değil. Başka şeyleri yazarken de zaten bol bol açıp bakıyorum. Kitabın üçüncü sürümü de çıktı hatta, almak isteyenlere tavsiye edebilirim.
Artık yavaş yavaş Gui programlama hakkında bilgi edinirken Qt ilgimi çekmeye başladı. Bu yüzden Google’da belgeler aramaya başladım, başlangıç için güzel belgeler edindim. Fakat bir kitap aşığı olarak bir kitap alıp onunla çalışsam çok daha iyi olur diye düşündüm. Biraz araştırmadan sonra “Rapid GUI Programming with Python and Qt” kitabına karar verdim. Başlangıç için herkes tarafından tavsiye edilen, ve Qt4 gibi yeni kütüphaneler hakkında bilgiler içeren bir kitaptı. Tahminen 1 ay sonra kitap ellime ulaşır, çünkü diğer kitap da 1 ay sonra gelmişti.
Python ile klasör isimlerini topluca değiştirin
2-3 haftadır Python çalışıyorum tekrardan ve bu sefer bir çok şey öğrendim. Öğrendiğim yeni bilgileri sizlerle paylaşayım dedim. Uzun zamandır aklımı meşgul eden bir konu vardı onu Python sayesinde halletim bu sayede. Şimdi kısaca bilgisayarımda fotoğraflarla dolu 20-30 tane klasör var, bunları da hep şu şekilde yazmıştım:
Almanya_ekim_2007
Bolum_temmuz_2006
Bilmemne_hede_höde_2008
Fakat sonraları baktım ki bu biçim bana uygun değil,sondaki yıl ibarelerini en başa getirirsem çok daha uygun olacağını anladım, yani şu şekilde bir şey:
2007_almanya_ekim
2006_bolum_temmuz
2008_bilmemne_hede_höde
Haliyle bir sürü klasör olunca hepsini elle teker teker yapmak yerine bir tane küçük Python betiği yazayım ve kendisi hepsini değiştirsin dedim. İlk önce yazdığım betik aşağıdaki gibi:
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import os, re
- def renamer():
- for filename in os.listdir(os.curdir):
- if re.search('(\w)_(\d)', filename):
- m = re.compile('([a-z_]*)_([0-9]*)', re.IGNORECASE)
- names = m.search(filename)
- newfilename = names.group(2) + '_' + names.group(1).lower()
- print newfilename
- #os.rename(filename, newfilename)
- if __name__ == '__main__':
- renamer()
Betiği klasörleri değiştirmek istediğimiz klasörün içinde çalıştırmamız lazım. Kısaca yaptığı adımlar şunlar(satır numaralarına göre):
- Satır 7: Klasörün içindeki klasörlerin bir listesini çıkartıyor, ve teker teker isimleri alıyor
- Satır 8: Eğer klasörlerin sonunda sayılar varsa devam et, yoksa hiç bir şey yapma
- Satır 9: Klasör isimlerini için bir tane regex ifadesi yazıyoruz.
- Satır 10:Ardından bu regex ifadesi için bizim klasör’ler aranıyor ve ona göre bulunuyor
- Satır 11:Bulunduktan sonra names.group() şeklinde bunlara ulaşabiliyoruz, bunlarla da istediğimiz şekildeki yeni dosyamızı oluşturuyoruz, ben 2008 + _ + dosya_deneme şeklinde yaptım, sizler farklı yapabilirsiniz tabi.
- Satır 12:İstediğimi ifadeler doğru çıkıyor mu, çıktısına bakalım
- Satır 13:Eğer doğru ise bu satırın önünde # ifadesini kaldıralım.
Öğrendiklerim bazı noktalar var, örneğin regex ifadelerini kesinlikle çok iyi bilmek lazım. Örneğin 9′uncu satırdaki ifade’yi irc’de acemi’den aldım. Ondan önce re.split ile bir yöntem denemiştim fakat tam istediğim gibi olmadı. O yüzden bu gibi işlemler için regex ile aranız ne kadar iyi olursa sizin için daha iyi olacaktır. Örneğin 8′inci satırdaki if durumunu kitaptan bakarak yaptım ve istediğim şekilde çalıştı. \w tüm alfabetik harfler demek, \d ise tüm sayılar demek. Yani eğer harfler_sayılar şeklinde bir dosya ismi var ise filename içinde o zaman devam edecek, yoksa betik hiç bir şey yapmayacak. Ayrıca büyük harfleri küçük harflere dönüştürmek için sadece .lower() ifadesini ekledim, aynı şekilde yeni bir isim oluşturmak tıpkı lego taşları ile oynamak kadar kolay. Gerçekten sevilesi bir dil Python.
Betiği düzgün bir şekilde çalıştıdıktan sonra, sonuçlar da şu şekilde olacaktır:
Ayrıca bu betik yazdığım ilk Python betiği özelliğini taşıyor. O yüzden ki bir sürü hata ya da gereksiz kod parçası olma olasılığı çoktur. Onun dışında Python ile cidden kısa zamanda güzel işler yapabilirsiniz, zaten kullandıkça yeni şeyler öğrenmemek elde değil. Bakalım zaman ne gösterecek inşallah zamanla çok daha farklı şeyler öğrenmiş oluruz.
Fotokritik bir spam kuruluşudur
Neden mi? Çünkü son 1-2 ayda inatla “Sizi Özledik” mailleri yolladıkları için. Ben özlemedim. Site’ye giriş yapıp bunu etkisiz hale de getirmek istemiyorum, çünkü ben site’ye girmek istemiyorum. Bir yolladılar sesimi çıkarmadım, iki yolladılar bir şey demedim, baktım sesimi çıkartmadıkça bunlar dozunu artırıp artık gün gün yollamaya başladılar. Buyurun:
İnsanları kendinizden nefret ettirmeyin. Nedense son zamanlarda attıkları tüm adımlar itici geliyor herkese. Birinin çıkıp da sen haksızsın onlar doğruyu yapıyor dediğini görmedim. Tamam amacınız Flickr gibi bir kuruluş olmak değil, fakat hakkını verin bari.
Java’ya nasıl başlanılır ?
Geçen ki Sun seminerden sonra Java‘yı iyice merak etmeye başladım. İnternet’te biraz araştırdıktan sonra çat çut bir şeyler öğrendim. Daha önce C ve biraz Python ile aşinalığım vardı, fakat Java nasıl bir şey ? Derleyicisi nasıl çalışır ? Belirli bir IDE var mı? Bu gibi sorular kafamı meşgul etti. Kısaca benim gibi başlamak isteyenlere kısaca bir kaç şey anlatacağım. Ubuntuforums‘da biri bunu güzel bir şekilde özetlemiş, onu kendimce çevirip sunuyorum:
Üç tane genel Java API’si var, bunlar da şu şekilde:
Java Standard Edition(SE) - Masaüstü Uygulamaları
Java Enterprise Edition(EE) - Kurum ve web uygulamaları
Java Micro Edition(ME) - Gömülü sistemler için uygulamalar(örneğin cep telefonları)
Genel olarak normal bir kullanıcı bir masaüstü uygulaması programlayacağını düşündüğümüzde Java SE kullanacaktır. Ayrıca iki tane önemli kısımı var Java’nın, bunlar JDK ve JRE:
Java Development Kit(JDK), geliştiricilerin uygulamalar geliştirmesi için gerekli araçları içeriyor.
Java Runtime Enviroment(JRE), bu da Java uygulamaların çalışması için gereken ortam.
Bilgisayarınıza bu bileşenlerin en güncel sürümünü kurmanız gerekiyor. Şimdilik en güncel sürümü 6′dır. Linux altında paket yöneticisi ile bunları kurabilirsiniz. Tüm paketleri kurduktan sonra herhangi bir uçbirimi(konsol’u) açıp şu komutu girerek kurulu olup olmadığına bakıyoruz:
java -version
Bendeki çıktı:
fatih ~ $ java -version
java version “1.6.0_03″
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)
Evet her şey kurduk ve artık Java geliştirmeye hazırız. Tek eksiğimiz bir tane metin editörü, ya da sizin işinizi kolaylaştıracak IDE’ler. Piyasa’da meşhur olan iki tane büyük IDE var, bunlar Eclipse ve Netbeans. Ben kendi bilgisayarıma Netbeans kurdum, isterseniz diğerini de kurabilirsiniz. Tıpkı Vim ve Emacs gibi seveni çok olduğu için hangisinin daha iyi olduğuna siz karar veriniz. Bazı Linux dağıtımlarında hâlâ 5.5 var, bazılarında ise 6.0.1 sürümü mevcut. 5.5 var ise doğrudan sitesine girip indirin. İndirdikten sonra
chmod +x netbeans-6.0.1-ml-linux.sh
./netbeans-6.0.1-ml-linux.sh
adımlarını konsoldan girerek kurunuz. Gerçekten çok kolay bir kurumu var, istediğiniz yere de kurabilirsiniz. Ayrıca daha önce 5.5 kurduysanız hiç bir şekilde ona müdahale etmeyecektir. Şimdi tek yapmanız gereken iyi bir kitap alıp çalışmaya başlamak. Kitap yerine İnternet’te de bir çok Java belgesi bulabilirsiniz.
April 17, 2008 
Takip Et - Rss
Fotoğraflarım
Son Yorumlar
Okuduklarım
Desteklediklerim







Etiketler (r:30)