Python ile soketler - 2

Bir önceki yazıda, Python ile soketlerin kullanımı konusuna genel bir giriş yapmıştım. O yazıda sadece istemci (client) soketlere yüzeysel olarak değinmiştim. Bu yazıda ise, sunucu özelliği olan programlarda soketlerin nasıl kullanılacağına değineceğim.

Bu yazıları tek bir seferde okuyup anlamaya daha müsait olması için, kısa ve öz tutmaya gayret ediyorum. Bu sebeple, bu yazıda sunucu programlarda kullanıldığını görebileceğimiz select ve threading gibi modüllerine değinmeyeceğim. Bunun yerine, bunların kendilerine ait kısa yazılar ile anlatılması bana daha verimli geliyor.

Devamını oku…

Python ile soketlere giriş

Merhabalar,

Bu yazıda, Python programlama diliyle soketlerin kullanılışı konusuna kısaca giriş yapmaya çalışacağım. Okuyucuda soketler hakkında temel bilgilerin olduğunu varsayıyorum. Bunların ne olduğu veya ne için kullanıldığı konusunda hiçbir bilgisi olmayanlar için şöyle özetleyebiliriz; soketler iletişim kanallarıdır. Bunlar aynı bilgisayarda iki işlem arası iletişim sağlayabilse de (örn: unix soketleri) bunları en çok ağ üzerinde iletişim için kullanırız. İnternetten bilgisayarınıza gelip giden tüm veriler için, mutlaka birer soket kullanılır.

Anlatıma geçmeden önce şunu da söylemek istiyorum ki, Python'daki socket modülünü lazım olmadıkça kullanmayınız. Demek istediğim şu ki, bir internet sayfası indirmek için socket açmak, HTTP başlıklarını göndermek, gerekirse yönlendirilen sayfaya yeniden soket açmak gibi bir uğraşa girmeyin. Python bu tip yaygın kullanımlar için zaten daha üst seviye modüllere sahip bir dil. Amerika'yı yeniden keşfetmeye gerek yok.

Devamını oku…

Python ve decorator... Nedir, ne işe yarar?

Python dilindeki decorator'ları anlamadan önce, fonksiyonların Python dilinde "first class citizen" olduklarını bilmek gerekir. "first class citizen" birebir çevirildiğinde, birinci sınıf vatandaş demek. Programlama dilleriyle ilgili kullanıldığında bu deyim, o dildeki bir varlığın, şu özellikleri taşıdığı anlamına gelir;

  • Çalışma anında oluşturulabilir.
  • Parametre olarak geçirilebilir.
  • Fonksiyonlardan döndürülebilir.
  • Bir değişkene atanabilir.

Python'da fonksiyonların birinci sınıf objeler olduğunu anlamak o kadar da zor değil. Python'daki her şey gibi, fonksiyonlar da birer obje. Ve biz, objelerin yukarıdaki tüm özellikleri taşıdıklarını biliyoruz. Dolayısıyla, fonksiyonlar da bu özellikleri taşıyor.

Devamını oku…

Python yield deyimi nedir? Ne işe yarar?

Yazıya başlamadan önce, kullandığım dil ile ilgili bir açıklamada bulunmam gerek. Her ne kadar bu yazının dili Türkçe olsa da, bazı kelimeleri, özellikle de Türkçe'ye tam olarak geçmemiş, veya Türkçe karşılığı henüz tam olarak yaygınlaşmamış bazı kelime ve terimleri İngilizcede olduğu gibi kullanmaya karar verdim. Birtakım şeyleri Türkçeye çevirmeye zorlamak, hem çok anlamsız oluyor, hem de bu terimleri İngilizce adlarıyla bilenler için kafa karışıklığına neden oluyor. Bu yüzden, yazının geri kalanında, aralara serpiştirilmiş İngilizce kelimeler bulacaksınız.

Python dilindeki yield deyimini anlamak için, generator'ları bilmek gerekiyor, generator'ları anlamak için de, iterator ve iterable kavramlarını anlamak gerekiyor. İngilizcede "iterate" kelimesi, tekrar tekrar uygulanmak veya işlenmek anlamına geliyor. Python'daki iterable ve iterator kavramları bu kelimeden türetilmiş. Python'da iter() yerleşik fonksiyona argüman olarak verebildiğimiz objelere iterable diyoruz. iter() fonksiyonu bize bir iterator döndürüyor. Iterator, objenin elemanları ne şekilde tanımlanırsa tanımlansın, bir koleksiyon içindeki tüm elemanlara sırasıyla erişebilmemiz için ortak bir arayüz oluşturan bir mekanizma. Kısacası, elemanları üzerinde sırasıyla gezinebildiğimiz, listeler ve demetler gibi objelere iterable diyoruz. Bu objeler, iter() fonksiyonu ile çağrıldığında, birer iterator döndürüyor, ve bu iterator'lar bir koleksiyondan sırasıyla eleman almak için kullanılıyor.

Devamını oku…

Arch Linux Paket Grafiği

Şu aralar, Python'daki bilimsel araçlar ve grafik kütüphanelerini inceliyorum. Bunlarla uğraşırken, merak edip, işletim sistemimi kurduğum günden bu yana paket ekleme, kaldırma ve güncelleme sayılarımın grafiğini çizdirdim. Bunlarla ilgilenenler, aşağıdaki örneğe göz atmak isteyebilirler.

Devamını oku…