Async Python'u bir de benden dinleyin
Çalışan fonksiyonların birbiriyle işbirliği yaparak ne zaman block’ladıklarını birbirine haber ettiği modele async programlama diyoruz. Böyle programlara da eşzamanlı (concurrent) çalışan programlar diyoruz. Eşzamanlı çalışan bir program herhangi anda sadece bir iş yapar. Sadece async bir program yazarak paralel iki işi yürütemezsiniz.
Blocking ne?
Eğer bir fonksiyon ne zaman block’ladığını haberdar edemiyorsa bu fonksiyon blocking bir fonksiyondur. Bu tarz fonksiyonları hiç sevmeyiz zira kendileri diğer haber vermeye çalışan fonksiyonları bekleterek haber vermelerini engeller. Eğer async bir programda bilinçsiz bir şekilde blocking fonksiyonları çağırırsanız günün sonunda daha kötü bir sync program yazmış olursunuz.
…Modern Django Proje Yapısı & Docker Kullanımı
Bu yazıda, modern (bleeding edge) bir Django projesinin nasıl gözüktüğünü, hangi tool’ların kullanıldığını ve nasıl Docker ile containerize edileceğini göstereceğim.
Yazının sonunda Docker ile development ve production ortamları için birer configuration oluşturmuş olacağız, sadece tek komutla bu ortamlarda projemizi ayağa kaldırabileceğiz.
Yine projemizi lint etmek, formatlamak, ve type checking yapmak için mevcut olan en yeni ve en janjanlı yöntemleri bu yazımda anlatıyorum.
…Don't develop your app to support Django admin
The Django admin site is a very useful application, bundled with Django itself. It’s considered one of the selling points of the framework.
Having CRUD stuff ready once you write your models is really convenient. I mainly use Django admin for these 3 purposes:
Debugging and testing in my local machine. For example, creating & updating instances and checking things created via endpoints.
…
Python’da distributed lock mekanizması
Bildiğiniz üzere, eşzamanlı programlamada lock bir senkronizasyon primitifidir. Bu arkadaş sayesinde, eşzamanlı çalışan iki fonksiyonun tek bir kaynağı aynı anda yönetmeye çalışmasını engelleyebilirsiniz; bu sayede race condition senaryolarının önüne geçmiş olursunuz.
Farzımuhal bir cüzdan uygulamasında, müşteri hesabından para çektiğinde bakiyesinin azalması senaryosunu düşünelim. Bunu yapmak için kullanıcın mevcut bakiyesinden, çekilen tutarın çıkartılıp veri tabanına kaydedilmesi gerekir.
…Django’da “bilet” tabanlı WebSocket kimlik doğrulama
Bu yazıda Türkçe’ye “bilet tabanlı kimlik doğrulaması” şeklinde çevirdiğim, İngilizce’de “ticket-based authentication” olarak geçen, WebSocket bağlamında kullanılan bir kimlik doğrulama yöntemini anlatacağım.
Eğer Django’da WebSocket uygulamaları yazdıysanız bilirsiniz ki bu işleri
halletmek için genelde channels
kütüphanesinin kapısını çalarız,
dolayısıyla örnekleri bu kütüphane üzerinden göstereceğim. Yazıyı daha sade
tutmak için kütüphaneyi açıklamak için fazla zaman harcamayacağım; bildiğinizi
varsayıyorum.