msgbartop
Python programlama, Hikaye ve daha fazlasının yer aldığı Metehan'ın kişisel sitesi…
msgbarbottom

18 Şub 10 Python-PyQt, pisi ve Birazda baharat :)

Kısa zamanda blogumun bağlantılar kısmında yeni bir bağlantı göreceksiniz.

Aşkın Yollu, Erdem Artan ve bendeniz, bir arkadaşımızın sorunu üzere ortak bir projede yer aldık.

Bazı zamanlar forumda ve özgürlükiçin de kullanıcıların; sistemlerini güncellemeleri ile ilgili yazılarını okuruz. Genellikle bu yazılarda; “internetim kotalı”, “güncellemeleri interneti olan başka bir bilgisayardan alabilirmiyiz?” gibi cümleler geçiyor. Bizim uğraşımızda bu ve bunun gibi soruların cevabını vermek.

Yukarıda kısa zamanda dediysem de kısa sürede ortaya çıkmayacak olan projemizin genel hedefi şunlar:
*Kotalı kullanıcı güncellemeri başka bir bilgisayardan indirebilecek.
*Kota sorunu yüzünden ya da internet bağlantısı olmaması yüzünden kişi hem paket kurulumu yapabilecek, hem de güncelleme yapabilecek.
*Kendi Pardus kurulu bilgisayarından 2-3 işlemden sonra platformdan bağımsız olarak güncellemeri ve kurmak istediği paketleri indirip,tekrar kendi bilgisayarına geçtiğinde kolay bir arayüz sayesinde ayrıntılarla uğraşmadan indirdiği paketleri kurabilecek.
Not: Aynı anlama gelen şeyleri tekrarlamış olabilirim, kusura bakmayın :)

Peki bunlar için neler yapıyoruz?

*Güncellemeleri alacağı ve xml biçiminde kayıt edeceği kolay bir arayüz.
*Kurmak istediği paketleri yazıp bağımlılıklarınında yer alacağı xml biçiminde kayıt edebileceği kolaybir arayüz.
*Paketleri indirebilecekleri kolay kullanımlı bir indirme yöneticisi(isterlerse html çıktı alabilecekler).
*Son olarak indirilen paketleri kurmasını sağlayacak ve gerek indexleri yenileyecek kolay kullanımlı bir arayüz.

Şuan sadece bir kısmı üzerinde yoğunlaşmış bulunuyoruz ve vakit azlığından dolayı projemiz yavaş, ama emin adımlarla ilerliyor.

pisi gibi bizde kodlama da python ve gui modülü olarak pyqt yi kullanıyoruz. Baharatta işin şakası :P

24 Oca 10 Python da kelime sayma

Bazı durumlarda yazdığımız bir yazının kaç kelime olduğunu öğrenmek isteriz. Örneğin, öykü yarışmalarında. Python da çok basit yöntemle; amatörce, bir yazının kelime sayısını öğrenebileceğimiz basit bir method mevcut.

def kelime_say(dosya):
    f = open(dosya)
    f = f.read()
    return f.count(" ") #a.isspace() true-false

dos = "asd.txt"

print(kelime_say(dos))

kelime_say fonksiyonumuzda, dosya adında bir parametre belirledik ve bu parametreye verilen dosya adıyla fonksiyon içinde okuma işlemini gerçekleştirdik. return ifadesiylede dosyanın içinde mevcut boşluk karakterlerini f.count(” “) methoduyla hesaplayıp döndürdük.

print(kelme_say(dosyaadı)) ile de(python3xiçin) kaç boşluk ve/veyaz ka kelime olduğunu öğrendik. Tabiki bu amatörce hazırlanmış bir fonksiyon.

Türkçe de 2 karakterli kelimeler olduğu gibi eklerde mevcut. Ayrıca bira yazıda “\n” ifadesiyle alt satıra geçip yazdığımızda da kelimeyi sayamıyoruz. İşimiz profesyonelce olmadığından bu bizi idare edebilir.

Ayrıca kodumuzda yorum olarak yazılmış a.isspace() methoduna bakacak olursak bunu da ancak dosyayı karakter-karakter okutursak true-false dönüşümlerine göre değeri 1 arttırarak kelime sayısını öğrenmeye çalışabiliriz, ama bu da fazladan kod yazmamıza ve görüntü kirliliğine yol açar.

09 Ara 09 LinZip 0.5

LinZip in 0.5 sürümü uzun süre önce yayınladım fakat duyurusunu sitemden şimdi yapmak aklıma geldi.

LinZip proje sayfasına buradan ulaşabilirsiniz.

09 Ara 09 Posedur 3

Posedur 3, Mamun uygulamasının kabuk değiştirmiş ve iyileştirilmiş halidir. Yazılım heceli ve hecesiz olmak üzere 4-10 karakterli, okunuşu Türkçe’ye uygun sözcükler üretmektedir. Yazılım rasgele üretilen karakterleri okunaklı bir sıraya dizerek sözcük meydana getirir.
posedur3
Yapılandırma menüsünden; ilk krakterleri, sesli ve sessiz karakterlerle hecelere müdahale edebilirsiniz. Yazılımın düzgün çalışması için her karakter yada heceden sonra boşluk bırakmadan virgül(,) konulmalıdır.
posedur3-2
Posedur 3, PyQt4 ve iniparse modülü kullanılarak Python ile yazılmış açık kaynak kodlu bir yazılımdır. Lisansı COPYING dosyasında da mevcut olan GPL V3 lisansı ile lisanslıdır.

Bağımlılıklar
- python >= 2.6
- qt ve pyqt4 >= 4.5
- iniparse

22 Eyl 09 Python ile tarfile Modülü

tarfile modülü Python ile tar arşivleriyle çalışabilmemizi sağlar. tarfile modülü; tar dosyalarını okuma, yazma ve ekleme; tar.gz ve tar.bz2 dosyalarını ise okuma ve yazma marifetine sahiptir. Bu yazımızda anlatılanlar Python 2.6 da denenmiştir. Eski sürümlerde çalışmama ihtimali olabilir.

Tar dosyası testi

Elinizde tar uzantılı bir dosya var ve siz bunun tar dosyası olduğundan emin değilsiniz, ama Ark veya bir başka arşiv yöneticisiyle açabiliyorsunuz. Peki, bu dosyanın tar arşivi olduğundan nasıl emin olabiliriz?
tarfile modülü bize bunu anlamak için güzel ve kullanımı basit bir fonksiyon sunar. Bunu güzel bir örnekle anlatalım.

Yazının tamamını oku. »

02 Eyl 09 Python: Md5 ve sha1 fonksiyonları

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

import hashlib

def sha1sum(dosya):
    d = open(dosya)
    h = hashlib.sha1(d.read()).hexdigest()
    return h + "\t" + dosya

def md5(dosya):
    d = open(dosya)
    h = hashlib.md5(d.read()).hexdigest()
    return h + "\t" + dosya

Tarafımca hazırlanmış olan kolay ve işlevli iki adet fonksiyon. Hashlib modülünü incelerseniz eklemeler yapabilirsiniz.

Örnek: print sha1sum(“deneme.txt”)

27 Ağu 09 LinZip Arşivleme Uygulaması

Bir önceki yazımda anlattığım konu üzere üzerinde çalıştığım uygulamayı tanıtmak istiyorum. Yan bağlantı kutularında google logolu bağlantıdan ulaşabileceğiniz linzip uygulaması linux üzerinde; zip, tar, tar.gz ve tar.bz2 arşiv türleri ile ilgili yazma ve okuma işlemlerini gerçekleştiren bir uygulamadır.

Uygulama 0.2 sürümünde ve konsol ortamından çalışıyor. Bir sonraki sürüme kadar dizin ekleme işlemini gerçekleştirmiyor. Yani sadece dosya ekleyebiliyorsunuz. Dizin ve içeriklerini toplu yazamıyor… Uygulama Python 2.6 ile yazıldı ve 2.6 ve üzeri Python sürümlerinde çalışır(3.x sürümler hariç).

Python 3.x sürümüne entegre fazla zor olmadığından bir ara 3.x uyumlusunuda çıkarabilirim. Uygulamayı deneyenler istek ve hataları bildirirlerse sevinirim…

18 Ağu 09 Python ile Zip dosyaları ile ilgili işlemler

Uzun zamandır Python ile ilgili yazılar yazmıyordum. Nitekim; evimde olan internetin, kin güden bir ağabey tarafından zapt edilmiş olmasının etkileri de var. Birkaç gündür, üzerinde çalışmak istediğim küçük bir uygulama için lazım olan zipfile modülü hakkında bilgilendirici bir yazı yazmak istiyordum ve nasip bugüneymiş…

zipfile modülü, zip dosyalarını okuma, yazma ve dosya eklemeyi mümkün kılar. Her ne kadar alt seviye dillere göre yavaş çalışsa da işimizi görecek kadar hızlıdır. O zaman hemen kodlamaya geçelim…

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

import zipfile

zip_dosyasi = zipfile.ZipFile("deneme.zip")
for dosya in zip_dosyasi.namelist():
    print dosya

nrg2iso.c
night.jpg
ye2vf8.jpg

Öncelikle zipfile modülümüzü içe aktardık ve deneme.zip adlı dosyamızı okuma kipinde açtık. For döngüsüyle de zip dosyamızın içindeki dosyaların listesini ekrana yazdırdık. Eğer print ile direk çıktı alsaydık çıktımız şöyle olurdu:

print zip_dosyasi.namelist()

[‘nrg2iso.c’, ‘night.jpg’, ‘ye2vf8.jpg’]

Buradaki namelist() fonksiyonu deneme.zip’in içindekilerini bir liste halinde barındırır.

Anlatmaya hızla başladık, ama ya deneme.zip adlı dosya bir zip arşivi değilse? Bunu doğrulamak için is_zipfile(dosya_adi) adlı fonksiyonu kullanırız. Hemen bir örnekle açıklayalım:

Yazının tamamını oku. »

14 Mar 09 Mamun Sona Erdi

En son 3.0 ın ekran görüntülerini vermiştim. O günden bu yana pek bir şey yapmadım sadece 3. sekmenin ilk, bir ya da iki satırının kodlarını hazırladım, ama daha sonra içime sinmedi ve bende son halini yayınlamaya karar verdim. Buradan en son güncellenmiş kodlar ve kullandığım dosyalar mevcut. İşine yarayacağını düşünenler istediği şekilde kullanabilir.

03 Şub 09 Mamun 3.0 Ekran Görüntüleri

2.0 sürümünü yayınladığımda ekran görüntüsü koyamamıştım. 3.0 sürümü çalışmasında evden cafeye gelmeden önce ekran görüntülerini aldım. Hem Windows için hem de Linux için. Yazının sonuna geldiğinizde ekran görüntülerinide göreceksiniz. Önce ise 3.0 la ne değiştiğini anlatıyım. 3.0 sürümü ile 3. sekme eklendi. Bu sekmede Türk alfabesinde olmayan x,q,w harfler eklendi ve Türkçe uyumu olmayan kelimeler oluşturma sağlandı. Tabiki kodlama henüz bitmedi, ama arayüz tamam :) Bundan sonraki sürümlerde ise iyileştirmeler ve yenilikler gelecek. QThread veya thread modülünüde kullanmaya başlayabilirim.

Yazının tamamını oku. »