Python (eski yazılar, sayfa 3)

Python ile kayıt (log) dosyaları

Son uğraştığım ufak programda Python'un logging modülünü kullanarak kayıt işlemleri yapıyorum. Kısaca nasıl yapıldığını açıklayayım dedim.

Python ile logging modülü kullanmak için gereken ilk iş, logging modülünü içe aktarıp, getLogger ile yeni bir kayıt tutucu oluşturmak. Bunun nasıl yapıldığını görmek için, aşağıdaki örnek python kodunu inceleyelim.

Devamını oku…

Python ile Çeşitli Yazılım Geliştirme Desenleri (Design Patterns)

İnsan programlamayı kendi çabalarıyla öğrenince, işin okulunu okumuş insanlardan bazı konularda eksik kalıyor. En azından ben böyle hissediyorum. Hem aradaki açığı kapatmak, hem de kendimi geliştirmek adına, birkaç yazılım geliştirme deseni öğrenmek ve bunları Python ile uygulamaya geçirmek istedim. Bunu yapmanın hem kendi gelişimime faydası olacağını düşünüyorum, hem de bunu okuyan birkaç kişinin, en azından konuya giriş yapmış olması açısından, işini kolaylaştıracağını zannediyorum.

Devamını oku…

Python'da and ve or

Python'daki and ve or dil yapısının biraz akılda kalması güç bir özelliği var. Bu yüzden buraya biraz özet geçmek istedim. Daha sonra kendim ve başkaları referans olarak bakabilelim diye.

Devamını oku…

Django'da Sınıf Temelli Genel Görünümler

Django'da geliştirirken, ister istemez genel görünümlere dokunuyoruz. Son günlerde, django gezegeninde ve mail gruplarında, sınıf temelli görünümlerden bahsedildiğini gördüm, ancak, bunların nasıl kullanılacağı hakkındaki bilgim yok denecek kadar azdı. Bu yüzden, Django belgelerine biraz göz attım, ve etkin kullanıldığında, sınıf temelli görünümlerin, çok verimli olabileceği kanısına vardım. Şimdilik yüzeysel olarak, örnekler ve kısa açıklamalar yazmak istedim, kendimi bu konuda geliştirirsem, ileride daha derin olarak inceleyebilirim bunları.

Devamını oku…

Python ve Google Api ile Url Kısaltma

Url kısaltmak için google kullanmak bana kolay geliyor. Çünkü, temel işlemler için, api anahtarına ihtiyaç yok. Tek yapmanız gereken, kısaltmak istediğiniz url'i json formatında, post metoduyla https://www.googleapis.com/urlshortener/v1/url adresine göndermeniz. Python ile bunu nasıl yapılacağına ait aşağıda bir örnek var. İhtiyaca göre düzenlenip, kullanılabilir.

İlk iş, urllib2 ve json modüllerini içe aktarmak. Bu araçlar olmazsa, http isteği göndermek ve aldığımız cevabı kullanabileceğimiz bir python değişkenine dönüştürmek, oldukça güç olur.

Devamını oku…

Python'da Hız Ölçme: profile Modülü

Python'da hız ölçmek için profile veya cprofile modülleri kullanılabilir. Bu modüllerin arasındaki fark, ilkinin saf python ile diğerinin ise C ile uygulanmış olmasıdır. Performans açısından, cprofile modülü daha verimlidir. profile modülü, cprofile modülüne göre yavaş kalır, ancak, saf python ile yazıldığından dolayı, genişletmeye daha müsaittir. Bir de, bazı platformlarda, cprofile modülü bulunmayabilir.

Devamını oku…

Python'da str Objesini Genişletmek

Python'da str ve unicode gibi objelerin alt sınıflarını oluşturmak istediğinizde, biraz sıkıntıya düşebilirsiniz. Bunlar, yerinde değiştirilemeyen nesneler olduğu için, bunların metotlarını kullanmak, kendi objenizin kaybolmasına neden olur. Bu problemin önüne geçmek için, __getattribute__() metodunun üzerine yazabilirsiniz. Aşağıdaki örnekte, çoğul eki, iyelik eki ve ismin hallerini bulan bununla birlikte, bir unicode objesinin de tüm metotlarına erişebilen bir sınıf tanımlayacağız.

Devamını oku…

Python Hakkında Birkaç Soruya Cevap

Bir arkadaşımın Python hakkındaki birkaç sorusu üzerine, bu soruları blog'umdan cevaplamayı ve aynı soruların cevaplarını arayan diğer arkadaşlarla da paylaşmış olmayı istedim.

Sorulara ve cevaplara geçmeden önce, şunu belirtmek istiyorum, python öğrenmeye başlamış eski bir C veya Java geliştiricisiyseniz, bu geçmişiniz Python öğrenmeniz açısından talihsiz bir durum. Python öğrenmeden önce, C, Java, Php gibi diğer dilleri kullanmış geliştiriciler, bu dillerdeki alışkanlıklarını Python'a taşımaya meyillidir. Ancak, Python'un iş yapış şekli, kendine özgüdür. Bu yüzden, Python öğrenmeye başlarken, daha önce programlama ile öğrendiğiniz herşeyi gözardı etmeye çalışın, ve Python felsefesini öğrenmeye çalışın. Bu konuda anlaştıysak, soru-cevap bölümüne geçebiliriz.

Devamını oku…

Django'da Aggregate ve Annotate

Django veritabanı yönetiminde annotate() ve aggregate() kullanarak,satırların toplamı, ortalaması gibi, veritabanında birden çok satırdan veya ilgili diğer tablolardan bilgi toplayarak bulunması gereken değerleri bulabilirsiniz. annotate() ve aggregate() metodlarının farkı, aggregate'in tüm tablo için tek bir sonuç döndürmesi, annotate'in ise veritabanındaki tüm satırlar için ayrı birer değer oluşturmasıdır. Bu yazıda kısaca Django'da annotate ve aggreate kullanımı ile ilgili örnekler göstereceğim.

Burada anlatılanlar kısaca django'da annotate ve aggregate nasıl kullanılır konusuna giriş yapmak içindir, daha fazlasını django belgelerinde aggregate ile ilgili bölümden bulabilirsiniz.

Devamını oku…