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.
Dizin Yapısı Öncelikle projemizin dizin yapısından başlayalım, projeniz temelde şu şekilde gözükmeli:…
Read more ⟶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.
Troubleshooting in production. Basically the same thing I do in my local machine, however in this case, its mostly read operations.…
Read more ⟶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.
Eğer kullanıcı aynı anda başka bir ödeme işlemi de yapıyorsa ve o işlem de bakiyesini değiştirecekse bu işlemleri bir sıraya sokmamız gerekir, zira bakiye sorgulama işlemi yapıldığı anda —aynı anda çalıştıklarından— ikisi de aynı bakiyeyi göreceklerdir.…
Read more ⟶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.
Öncelikle “Channels bize zaten kimlik doğrulama yöntemi veriyor, scope["user"] diye bir şey var, sen hayırdır?…
Read more ⟶Gerçek hayatta Django I: Sinsi ‘sinyal’ yürütümü
“Gerçek hayatta Django” olarak isimlendirdiğim yazı serisinin ilk yazısına hoş geldiniz. Bu seride, engin Django deneyimlerimi sizlerle paylaşıyorum.
İlk yazı olmasından ötürü ufak bir konsept tanımı yapacağım. Genel olarak, Django’da yaptığım hataları, bunları nasıl çözdüğümü ve şöyle böyle kazandığım tecrübeleri sizlere aktaracağım.
Ana amacım, Django ile fazla haşır neşir olmayan veya yeni başlayan geliştiricilerin bu tarz yazıları okuyup “vay anasını” demelerini sağlamak, mümkünse ekşi sözlükte “öğrenildiğinde ufku iki katına çıkaran şeyler” başlığının altında bu yazıların linklerin paylaşılmasını sağlamak (hehe).…
Read more ⟶