Ülkemizde popülaritesi Pardus ile doruk noktasına ulaşan Python dili için aslında ne kadar da popülermiş diye hayıflandığımız zamanlar çok da eski sayılmazken şimdi de her yerde bir Erlang'dır gidiyor. Birkaç gündür bakınıyordum, bugünde FZ Blog'da bu girdiyi görünce birkaç satır yazasım geldi (gecenin bir vakti canım sıkıldığından değil :P).
Wikipedia'daki Erlang Sayfası'nda görüldüğü üzere CouchDB'nin geliştirilmesinde hatta Facebook (buna da link isteyeni döverler)'un chat sisteminin geliştirildiği dilmiş. Tabi ki daha da niceleri var. Bir dönem Ruby de böyle bir coşagelmişti, sanırım sıra Erlang'da.
Hayırlara vesile ... !
python etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
python etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
12 Ekim 2008 Pazar
6 Ekim 2008 Pazartesi
Zen of Python
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
1 Ekim 2008 Çarşamba
Python 3.0 Kaynakları
Python 3.0 için dökümantasyonlar hız kazandı.
Python'un sitesindeki döküman son halini almaya başlamışken, bir de online kitap tanıtıldı. Kitabı okumaya buradan başlayabilirsiniz.
Bir de tanıdık bir amcadan Programming in Python 3 kitabı satışa sunulmaya başlamış. Preview yapılabiliyor.
Python'un sitesindeki döküman son halini almaya başlamışken, bir de online kitap tanıtıldı. Kitabı okumaya buradan başlayabilirsiniz.
Bir de tanıdık bir amcadan Programming in Python 3 kitabı satışa sunulmaya başlamış. Preview yapılabiliyor.
21 Ağustos 2008 Perşembe
Django'da Model Tanımlarken Gerekebilecek İpucu
Aşağıdaki gibi örnek bir model kodu oluşturmam gerekliydi. Model yapısından da anlaşılacağa üzere User'lar kendi Tag'lerini yaratabilecek (her tag'in bir creator'ı olacak) ve aynı zamanda User'lar bu Tag'leri kendilerine ekleyebilecekler. Buraya kadar gayet basit, fakat sorun model dosyasını oluşturmaya başlayınca çıkıyor ortaya.
Deneme yanılma ile problemleri aşmaya çalışıyordum.
models.py
Bunda fav_tags = models.ManyToManyField(Tag) satırındaki Tag icin tanımlanamıyor hatası verdi. Kod satır satır işlendiğinden Tag'in bir class olduğundan habersiz bu arkadaş. Aradaki relation ManyToMany olduğundan ve bu ilişki iki class içerisinden birinde yazılacağından fav_tags = models.ManyToManyField(Tag) satırını kaldırdım ve dosya şu hale geldi.
Bu defa da Tag sınıfının altında iki adet User ile ilişki tanımlandığından hata verdi. Önceki yöntem buna göre daha iyiydi, bir şekilde Tag'in class olduğunu söyleyebilirsem, sorun hallolacaktı. Python'da Forward Declaration nasıl yapılıyor diye baktım ve sonuç alamadım.
Ben de en üst satıra
ekledim ve syncdb dediğim vakit database tabloları oluşturuldu, fakat Tag sınıfı için oluşan tabloda sadece id alt alanı vardı ve sadece bu en üste eklediğim satır için tablo oluşturulmuştu, herhangi bir alt alanı olmadığından sadece id alt alanı eklenmişti.
Bir ara pes etmeye yakınken, irc'den django kanalında sorarsam belki sonuç alabilirim dedim ve hakikaten çok basit bir çözümü olduğunu öğrendim.
fav_tags = models.ManyToManyField("Tag") satırındaki Tag'i String olarak yazdığım vakit hiç sorunsuz bu işi halledebiliyormuşum. En azından çok da fazla kafayı yemeden sorun hallolduğu için mutluyum.
Bazen gereğinden fazla kompleks düşünmemek gerek... ! Mesajımı da veririm arkadaş :-m
Deneme yanılma ile problemleri aşmaya çalışıyordum.
models.py
class User(models.Model):
username = models.CharField(max_length=100)
fav_tags = models.ManyToManyField(Tag)
name = models.CharField(max_length=100)
surname = models.CharField(max_length=100)
password = models.CharField(max_length=100)
class Tag(models.Model):
creator = models.ForeignKey(User)
name = models.CharField(max_length=500)
Bunda fav_tags = models.ManyToManyField(Tag) satırındaki Tag icin tanımlanamıyor hatası verdi. Kod satır satır işlendiğinden Tag'in bir class olduğundan habersiz bu arkadaş. Aradaki relation ManyToMany olduğundan ve bu ilişki iki class içerisinden birinde yazılacağından fav_tags = models.ManyToManyField(Tag) satırını kaldırdım ve dosya şu hale geldi.
class User(models.Model):
username = models.CharField(max_length=100)
name = models.CharField(max_length=100)
surname = models.CharField(max_length=100)
password = models.CharField(max_length=100)
class Tag(models.Model):
creator = models.ForeignKey(User)
users = models.ManyToManyField(User)
name = models.CharField(max_length=500)
Bu defa da Tag sınıfının altında iki adet User ile ilişki tanımlandığından hata verdi. Önceki yöntem buna göre daha iyiydi, bir şekilde Tag'in class olduğunu söyleyebilirsem, sorun hallolacaktı. Python'da Forward Declaration nasıl yapılıyor diye baktım ve sonuç alamadım.
Ben de en üst satıra
class Tag(models.Model):
pass
ekledim ve syncdb dediğim vakit database tabloları oluşturuldu, fakat Tag sınıfı için oluşan tabloda sadece id alt alanı vardı ve sadece bu en üste eklediğim satır için tablo oluşturulmuştu, herhangi bir alt alanı olmadığından sadece id alt alanı eklenmişti.
Bir ara pes etmeye yakınken, irc'den django kanalında sorarsam belki sonuç alabilirim dedim ve hakikaten çok basit bir çözümü olduğunu öğrendim.
class User(models.Model):
username = models.CharField(max_length=100)
fav_tags = models.ManyToManyField("Tag")
name = models.CharField(max_length=100)
surname = models.CharField(max_length=100)
password = models.CharField(max_length=100)
class Tag(models.Model):
creator = models.ForeignKey(User)
name = models.CharField(max_length=500)
fav_tags = models.ManyToManyField("Tag") satırındaki Tag'i String olarak yazdığım vakit hiç sorunsuz bu işi halledebiliyormuşum. En azından çok da fazla kafayı yemeden sorun hallolduğu için mutluyum.
Bazen gereğinden fazla kompleks düşünmemek gerek... ! Mesajımı da veririm arkadaş :-m
Kaydol:
Kayıtlar (Atom)
