İçeriğe geç
Muslu Yüksektepe

PiSAYISI

Pi sayısının basamaklarını harflere çevirip anlamlı kelimeler arayan deneysel bir Django projesi.

PiSAYISI, pisayısı.com için 2016 yılının Kasım ayında yazdığım bir Django projesi. Pi sayısının basamaklarını farklı yöntemlerle harflere, renklere, koordinatlara ve grafiklere dönüştürüp ortaya çıkan sonuçları sitede yazılar hâlinde yayımlamak için hazırladım. Proje biraz merak, biraz eğlence için yapılmış deneysel bir çalışma; aynı zamanda Python ve Django ile farklı yazım yöntemlerini denediğim bir alan oldu.

Amaç

Pi sayısının basamakları sonsuza kadar tekrar etmeden devam ediyor. Bu basamaklar bir kurala göre harflere çevrildiğinde, içinde bildiğimiz kelimelere hatta anlamlı cümlelere rastlamak mümkün olabilir. Bu fikir beni uzun süre meşgul etti ve denemelerimi bir yerde toplamak istedim. En çok ilgimi çeken yöntem, rakamları İbrani harfleriyle eşleştirmek oldu. Sitede bu denemelerin yanında pi sayısı hakkında genel bilgileri de kategoriler altında topladım.

Nasıl çalışır

Sitenin içeriği üç katmanlı bir yapıda duruyor: kategoriler, alt kategoriler ve konular. Her konunun başlığı, yazarı, HTML içeriği ve başlıktan otomatik üretilen bir bağlantısı var. İçerikleri Django yönetim panelinden TinyMCE editörüyle girerdim. Adresler /kategori/kategorisi/, /kategori/alt-kategori/konusu/ ve /kategori/alt-kategori/konu/konu-detayi/ biçiminde kuruluyor.

Bazı konular sabit bir yazı yerine çalışan bir sayfa açıyor. Bağlantısında canvasjs geçen konu, pi'nin ilk basamaklarını CanvasJS ile grafiğe döküyor. Ziyaretçi kaç basamak görmek istediğini ve çizgi, alan, sütun ya da pasta grafiği türünü seçebiliyor; grafiğin yanında 0'dan 9'a kadar her rakamın kaç kez geçtiği de yazılıyor. Bağlantısında paperjs geçen konu ise Paper.js ile hazırlanmış etkileşimli bir çizim denemesi gösteriyor.

Denemeler

Asıl hesaplamaları static/py klasöründeki küçük Python betikleriyle yaptım. Pi'nin ilk 100.000 basamağı bir metin dosyasında duruyor ve betikler bu dosyayı okuyor.

  • pi_replace.py, sayıları İbrani alfabesinin sayı değerlerine göre harflere çeviriyor. Alef 1, Yod 10, Kuf 100 gibi değerler kullanılıyor ve büyük değerler önce eşleştiriliyor. Sonuç hem harf adlarıyla hem de İbrani karakterleriyle ayrı dosyalara yazıldı.
  • pi_hexrenk.py, basamakları altışar altışar gruplayıp her grubu bir renk kodu olarak kullanıyor ve ilk 3.000 basamaktan renkli bir tablo üretiyor.
  • pi_latlong.py, basamaklardan enlem ve boylam değerleri oluşturuyor ve her çifti Google Haritalar bağlantısına çeviriyor.
  • pi_toplacikart.py, basamakları sırayla bir ekleyip bir çıkararak ara toplamları yazıyor.
  • pi_kactanevar.py rakamların kaç kez geçtiğini sayıyor, pi_datapoints.py ise grafik için veri noktalarını hazırlıyor.
  • pi_bul.py, pi'yi arktanjant serisiyle ve yüksek hassasiyetli sayılarla hesaplamayı deniyor.

Teknik altyapı

Proje Python 2 ve Django ile yazıldı ve MySQL veritabanı kullanıyor. Yönetim paneli için Django Suit, içerik düzenleme için django-tinymce kullandım. Grafikler CanvasJS, çizim denemesi Paper.js ile yapıldı. Pi hesabı için gmpy2 kütüphanesinden yararlandım. Depoda Apache için örnek bir yapılandırma dosyası, robots.txt ve sitemap.xml de bulunuyor.

Kategori
Web siteleri
Yıl
2016

Teknolojiler

  • Python
  • Django

Bağlantılar

  • GitHub https://github.com/muslu/PiSAYISI

Tüm projelere dön