4 renk teoremi ve harita boyama

4 renk teoremi, verilen bir yüzeysel haritayı, komşu bölgeler farklı renklerde olacak şekilde boyamak için 4 rengin yeterli olacağını savunuyor. Komşuluk, köşe olmayan ortak bir sınıra sahip olmak olarak tanımlanmış. Bu teoremin geçerli olması için, bölgelerin bir bütün halinde olması gerekiyor. Dünya haritası bu kurala uymuyor, çünkü, Alaska'nın Amerikayla kara bağlantısı yok.

Devamını oku…

Neden İşletim Sistemi Geliştirmemeliyiz?

Türkiye de işletim sistemi geliştirmek, özellikle Pardus'un çıkışından sonra, ilgin çeken bir konu haline geldi. Çeşitli forumlarda, işletim sistemi nasıl geliştirilir, Python ile işletim sistemi geliştirmek mümkün müdür gibi sorular soruldu. Daha dün Neden işletim sistemi geliştirmeliyiz{: rel="nofollow" } isminde bir yazı okudum. Ben de diyorum ki, işletim sistemi geliştirmemeliyiz. Bu yazıda, neden böyle düşündüğümü açıklayacağım.

Devamını oku…

UnicodeDecodeError - ordinal not in range(128)

UnicodeError, Python 2.x sürümlerinde sıkça karşılaşılan ve Python diline veya programlamaya yeni başlayanların kafasına karıştırabilecek bir hata. Çoğu zaman, python dosyasının kullandığı encoding'i doğru belirtmemekten veya internetten alınan dosyayı doğru encoding'i kullanarak decode etmemekten kaynaklanan bu hata, hatanın doğasını bilmiyorsanız, sizi biraz uğraştırabilir. Bu yazı size bu hatanın neden kaynaklandığını, bundan kaçınmak için neler yapmak gerektiğini ve karşılaşıldığı zaman nasıl çözüleceği gösterecek. Bu yazı, biraz Python bilen başlangıç seviyesindeki programcılara yönelik olacak.

Yazının içeriği:

  • Temel encoding/decoding konseptleri
  • Python str ve unicode objeleri
  • Doğru encoding'i tespit etmek

    Devamını oku…

Parser - Kod Dönüştürme

Parser yazılarını takip ettiyseniz, kaynak kodları parse tree'e çevirebilen bir parser yazmıştık. Bu yazıda, onu biraz daha geliştirip, parse tree'den kod üretmesini sağlayacağız. Kodlar yine aynı yerde.

Daha önce bahsettiğim gibi, parser tree'i birçok farklı şekilde kullanabilirsiniz. Ben kendi parse tree'min kodları C benzeri bir dile çevirmesini istiyorum.

Devamını oku…

Python Paket İstatistikleri

Bu yazıyı, Python Paket Indeksindeki paketlerle ilgili tanıtıcı istatistikler vermek için yazıyorum. Python paket indeksindeki paketlerin sayfalarını indirip, içindeki verileri topladım. 34968 paketin PyPi sayfasını indirdim, bunlardan 34923 tanesinden veri elde edebildim. Python paket indeksinde 35813 paket olduğu rapor ediliyor. Ancak, bunlardan bazıları aynı paketlerin farklı versiyonları. Ben tekil paket son versiyonları ile çalıştım.

Neden böyle birşey yaptım? Merak ve boş zaman...

Devamını oku…

Python Package Statistics

I am writing this in order to give some descriptive statistics about Python Packages in PyPI. I crawled 34968 indiviual package pages on Python package index. I could extract data from 34923 of them. PyPI reports 35813 packages, but some of them are different versions of same packages. I preferred working with latest versions.

Why did I do this? Curiosity and spare time...

Devamını oku…

Parser - Statement

Evet, son bıraktığımızda, Parser'ımız expression'ları parse edebiliyordu. Ancak, henüz tek bir expression parse edebiliyoruz. Bu yazıda, statement'ları nasıl parse edeceğimize değineceğiz.

Önce statement (beyan) nedir, ona biraz değinelim. Statement, expression'dan bir üst kategori diyebiliriz. Her expression, aynı zamanda bir statement olabilir. Ancak, her statement bir expression olamaz. Mesela, programlama dillerindeki if sözcüğü bir statement tanımlar, ama if statement'ı bir expression diyemeyiz.

Statement'ları parse edebilmek için, statement başlatan sembollerimize özel bir std metodu tanımlayacağız. Örneğin, if statement yapmak için gerekli olan sembolü, sembol tablosuna ekleyelim:

Devamını oku…