Ara 192011
 

Django da oluşturduğunuz bir uygulamada Modelinizi yazdınız ve syncdb parametresi ile veritabanı tablolarını oluşturdunuz. Daha sonra model sınıfınızda tablo yapısını etkileyecek düzenlemeler yaptınız ve tekrar syncdb ile tablonuzu oluşturmaya çalıştınız. Bir baktınız ki tablo da bir değişiklik yok, olduğu gibi duruyor. Bu Django’nun zayıf yanı oluyor ve güncel veritabanı tablonuzu oluşturmak için önceki tabloyu silmeniz gerekiyor. Ayrıca tablonuzun varolan sütunlarını etkilemeyen bir düzenleme varsa; bu değişiklik yeni sütun ekleme gibi bir şeyse ve tablonuz da ki mevcut veriler yerinde dursun diyorsanız Django’dan bunu şimdilik beklemeyin. Belki ileride bu özelliği eklerler…

Yukarıdaki gibi bir durum ile karşı karşıyaysanız South modülünü kullanmak durumundasınız. Öncelikle South modülünü kuralım: Bu modülü kurmanız için; ya buradan istediğiniz sürümü indirip kuracaksınız, ya setuptools modülü kuruluysa

easy_install South

komutuyla kuracaksınız, ya da easy_install ile pip modülünü kurup

pip install South

komutuyla modülü kurabilirsiniz.

South modülünü kurduysanız bir Django projesi oluşturup, uygulama oluşturalım… Continue reading »

Ara 072011
 

İlk Django yazımda çevirimiçi ziyaretçilerin hesabını yapan bir uygulama yapımını anlatacağım. Bu dersten bir şey anlamak için Django hakkında biraz bilgi sahibi olmanız gerekecektir.

Türkçe kaynak için Google araması yaptığınızda karşınıza çıkacak kaynaklar büyük ihtimal şöyle olacaktır:

  • Django ile blog yapımı
  • Django belgelemelerindeki tutorialın aynısı, yani anket uygulaması

Ve başlangıç düzeyinde; internet üzerinde Türkçe olarak zaten yaygın olan başlangıç konuları… Benim anlatacağım konu da belki bu seviyede olacaktır, ama daha önce kafamın almadığı middleware konusunu azcık kavramış olmak ve bunu pratik olarak kullanmak olacak.

Öncelikle uygulamamızı deneyebilmek için bir proje oluşturmamız gerekiyor:

django-admin.py startproject sayacprojesi

Bu komutu konsolda veriyoruz ve projemizi oluşturuyoruz. Şimdi proje dizinine girip konsoldan şu komutu veriyoruz:

python manage.py startapp onlinecounter

Sayaç uygulamamızın temelini atmış olduk. Uygulamanın içine girelim ve çevirimiçi kullanıcıların veritabanında saklanması için gerekli olan model sınıfımızı models.py içine yazalım. Continue reading »

Kas 282011
 

Bu dersimizde simülasyonumuzu geliştirmeye devam ediyoruz.

Düşen topların bir engelle karşılasmasını sağlayacağız.

def sabit_cizgi_ekle(space):
    govde = pymunk.Body(pymunk.inf, pymunk.inf)
    govde.position = (300,200)
    l1 = pymunk.Segment(govde, (-200, 0), (200.0, 0.0), 5.0)
    l2 = pymunk.Segment(govde, (-200.0, 0), (-200.0, 50.0), 5.0)
    l3 = pymunk.Segment(govde, (200.0, 0), (200.0, 50.0), 5.0)

    space.add_static(l1, l2,l3)
    return l1,l2,l3

def to_pygame(p):
    """pymunk-pygame koordinat düzenlemesi yapar."""
    return int(p.x), int(-p.y+600)

def cizgileri_ciz(ekran, cizgiler):
    for cizgi in cizgiler:
        body = cizgi.body
        pv1 = body.position + cizgi.a.rotated(body.angle)
        pv2 = body.position + cizgi.b.rotated(body.angle)
        p1 = to_pygame(pv1)
        p2 = to_pygame(pv2)
        pygame.draw.line(ekran, THECOLORS["red"], p1, p2)

sabit_cizgi_ekle() fonksiyonuna yine space adında bir parametre veriyoruz. Fonksyionumuzda bir gövde tanımladık ve kütlesiyle momentini pymunk.inf değişkeniyle sonsuz yaptık. Bir nevi duvara monteleme işlemide denebilir sanırım… Gövdemizin pozisyonunu vektörel olarak 300×200 olarak belirledik. l1, l2, l3 değişkenlerine Segment nesnesi tanımladık. İlk parametreyle gövdesini diğer iki parametresini pygame.draw.line() da gördüğümüz gibi çizgi koordinatlarını belirledik. Son koordinat ise çizginin çapını belirliyor; daha doğrusu kalınlığı diyebiliriz… Continue reading »

Kas 272011
 

Bu yazımı da bir zamanlar pardus-linux.org un düzenlediği yarışma için yazmıştım. Özgür yazılım adına bir şeyler yazmaya çabalamışım…

Özgürlük Savaşı

Yıl 2019…

“Memleketin her köşesi bilfiil işgal edilmiş durumda…”

16 Mayıs…

Ankara’ya ayak bastığımda memleketin durumu ile ilgili edindiğim bilgiler şöyleydi: Hükumet, dar görüşlülüğün neticesi olarak kaynağı belli olmayan yazılımları kamu kuruluşlarında kullandırmaya devam ediyordu. Yıllar önce başbakanlığın sessiz sedasız başlattığı özgürlük hareketi birilerinin çıkarları yüzünden daha sonuçlandırılamamıştı. Millet, geleceği görememiş ve herhangi bir yazılımda casus kodların olup olmamasına aldırış etmeden zevkleri uğruna; kişisel bilgilerini ve sohbet kayıtlarını kimliği meçhul kişilerin kullanımına sunmaya devam ediyordu. Ülke güvenliği kaynak kodları okunamayan sistemlerin elinde.

Bu kötü duruma karşın Milli Güvenlik Bakanlığı’nın ASAL’ı devlet destekli olan Pardus Linux dağıtımını kullanmaya yıllar öncesinden başlamıştı. Bazı kurum ve kuruluşlar ise ya özgür yazılımları tercih ettiler ya da yavaş adımlarla bu yolda ilerlemeye çalışıyorlardı.

Özgür yazılımı savunan binlerce insan ise yıllardır sivil toplum hareketleriyle halkı bilinçlendirmeye çalışıyorlardı.

Devlet erkanıyla görüşmelerim oldu ve aldığım yanıtlar hiçte iç açıcı değildi. Kimi siyasi bürokratlar mandasoft yazılımlarını ve yardakçılarını istiyordu, kimileri de kurumlara gereken yazılımların ve teknik desteğin yabancı devletlere bırakılması görüşündeydiler. Bu düşüncelerin hiç biri, özgürlüğe timsal olmuş Atamızın kabul etmeyeceği cinstendi… Son olarak en yüksek makamdaki kişiyle görüştüm.

“Evlat!.. Bu ülkeyi kurtarabilirsin…” dedi. Acaba benim düşüncelerimi mi kastediyordu? Arkasından gelen sözlerle hiçte düşüncelerimle bağdaşmayan bir konuşma dinlediğimi fark ettim.

Ne yapmalıydım?.. Elimdeki imkanlarla özgürlüğü savunan tüm sivil toplum örgütlerini ve halkı ayaklandırmalı, seminerlerle yürüyüşler düzenlenmesine önayak olmalıydım.

Öğleden sonra birkaç yakın arkadaşım ile birlikte Amasya’ ya doğru yola çıktık. Amacımız özgür yazılımın en az kullanıldığı Doğu Anadolu da halkı bilinçlendirmek ve yardım etmekti. Onlara, özgür ve Türk mühendisleri tarafından geliştirilen Pardus’u dağıtacak ve özgürlükleri için çaba sarf edecektik. Amasya’ya yolculuğumuz sırasında bize engel olmak isteyen bir takım çıkarcı kişilerle karşılaştık, ama engelleri kolayca aştık.

Amasya’da bilinçli kişilerle ve meraklı insanlarla beraber bir toplantı yaptık. Toplantı sonucunda aldığımız kararları bir genelge halinde ülke çapına yaydık. Aldığımız kararlar ise şunlardı:

  1. Vatanın bütünlüğü ve milletin özgürlüğü tehlike altındadır.

  2. Çıkarcı hükumetler bu tehlikenin farkına varamamıştır.

  3. Devlet daireleri ve tüm kamu kuruluşları bir an önce özgür yazılımlara yönelmelidir.

  4. Milli güvenliği sağlayan bütün uçak, radar vs. araçların yazılımları özgürleştirilmelidir.

Yıl 2023 Cumhuriyetin 100. yılı…

Ülke çapında yapılan seçimlerle beraber hükumeti kurduk ve özgürlüğün temellerini sağlamlaştırmak için çalışmalara başladık. Öncelikle kamu kuruluşlarında kullanılan yazılımların açık kaynak ve özgür alternatiflerini araştırdık ve personellere gerekli eğitimleri verdikten sonra geçiş işlemini başardık. Alternatifi olmayan yazılımların ise devlet için proje geliştiren firmalar sayesinde kısa sürede alternatifini geliştireceğiz. Bilgisayar ve vs. sistemlerde GNU/Linux dağıtımı olan Pardus işletim sistemine geçtik. 2003 yılından beri üzerinde çalışılan proje bu süre zarfında ihtiyaçlarımızı karşılayacak şekle geldiği için pek fazla problem yaşayacağımızı sanmıyorum…

Mandasoft’un işletim sistemlerinin tekelini kırabilmek için gerekli kanuni düzenlemeleri kısa sürede gerçekleştirip, bilgisayar satışlarında işletim sistemi satılması zorunluluğunu kaldıracağız. Bilgisayardan bağımsız satılan işletim sisteminde de tekeli kırabilmek için şirketlerin GNU/Linux dağıtımlarının da beraber satımı ve/veya ücretsiz verimi zorunluluğunu getireceğiz…

GNU/Linux dağıtımları hızla gelişmesiyle pazar payını artırdı. Lakin büyük oyun firmalarının tek bir işletim sistemi için oyun çıkartma alışkanlığı son bulmadıkça Linux daha uzun süre arka planda kalabilir. Ümit ediyorum ki o şirketlerin bulunduğu ülkeler gerekli kanuni düzenlemeleri gerçekleştirir. Bu sayede daha fazla özgür yazılım kullanıcıları artacaktır.

3 Kasım

Gereken kanuni düzenlemeleri gerçekleştirmiş bulunmaktayım. Bununla beraber yol arkadaşlarımında yardımları sayesinde bu günleri görmüş oldum…

Gençliği de yazılımcılığa yönlendirmek için gerekli her şeyi yapmak için çalışmalara başlamak üzereyim… Yedi gün sonra Atamızın ölümünün 85. yıl dönümü ve O’nun karşısına alnı dik olarak çıkacağım için mutluyum. Çünkü, özgürlüğe timsal olmuş biriydi ve bugün yaşasaydı çok önceleri, benim bugün yapabildiğim şeyleri çoktan başarmıştı…

Mustafa Kemal


Bu yazı Creative Commons-BY-SA ile lisanslanmıştır. Bu yazıyı ilk sahibini belirtmek ve aynı lisansla dağıtmak koşuluyla kullanabilirsiniz.

Kas 262011
 

pymunk kullanımı basit 2 boyutlu oyunlar için hazırlanmış 2B fizik motorudur. Bu modül chipmunk üzerine inşa edilmiştir. pymunk’u pygame, pyglet, PySFML gibi oyun kütüphaneleriyle kullanabileceğiniz gibi PyQt gibi grafik arayüz kütüphaneleriyle de kullanabilirsiniz.

pymunk modülünü öğrenirken pygame modülünden faydalanacağız…

pymunk ile daire, dikdörtgen ve çokgen şekilleri fizik kurallarına uydurabileceğimiz sınıflar ile eklem oluşturmak, engel oluşturmak gibi işlemler için de sınıflar mevcuttur.

pymunk modülünü; GNU/Linux kullanıcıları python-setuptools paketini depolarından kurduktan sonra “easy_install pymunk” ya da “easy_install pip” dedikten sonra “pip install pymunk” komutunu vererek kurabilir, Windows kullanıcıları ise buradan uygun buldukları setup dosyasını indirerek kurabilirler. Tabii GNU/Linux kullanıcıları komutları verirken yönetici yetkisi almalıdır. Yani komutunuzun başına “sudo” komutunu eklemelisiniz…

Kurulum tamamlandıktan sonra Python yorumlayıcısına

import pymunk

yazarak test edebilirsiniz. Eğer ImportError hatası almıyorsanız sorun yok demektir. O zaman motoru çalıştıralım :)

pymunk’ta fizik kurallarını uygulayacağımız bir alan oluşturmamız gereklidir. Bu işi Space() sınıfı ile yapıyoruz. Daha sonra gravity özelliği ile yer çekiminin uygulanacağı yönü belirliyoruz… Continue reading »

Kas 252011
 

Bir yılı geçen bir zamanda yazdığım öykümü yayınlamaya karar verdim. Hep kod, hep kod nereye kadar :) Umarım beğenirsiniz…

SAVAŞ

Terliyordu… Elleri titriyor ve sabit duramıyordu. İsrail’ in son saldırısında ailesini kaybetmişti ve ailesinin ölümüne yol açan kişilerden; biri kadın, iki kişi elindeydi. Az sonra kapalı oldukları odaya gidecek ve yapması gerekeni; onları kurtarmak için gelmelerinden önce ailesinin intikamını alacaktı… Sonrada yaşamına bir son verecekti; artık yaşamasının bir anlamı yoktu…

Mustafa; ölmeden, öldürmeden önce; o, insan demeye ağzının varmadığı canilere, yaşadığı acıyı tattırmalıydı. Onlara; ailesini kaybettiği zaman yaşadığı acıyı, en azından bir kısmını tattırmalıydı. Peki, ne yapacaktı? İşkence mi etmeliydi? Onları hayal dahi edemeyecekleri şekilde yavaş ve acılı bir ölüme mi götürmeliydi? Ama elleri, kalbi veya dürtüleri bunları gerçekleştirmesine müsaade edecek miydi? Sanmıyordu… O hiçbir zaman acımasız ve kana susamış biri olamazdı. Hayatında bir başka birini dahi incitememişti çünkü. Şimdi düşününce bile, kapalı odada elleri kolları bağlı duran iki insanı öldürebileceğini sanmıyordu. Yapmalıydı… Continue reading »

Kas 232011
 

Xml verilerini işlemek için çeşitli yapılar vardır(dom, sax gibi). Bu derste ağaç yapısını kullanan ElementTree modülünü öğreneceğiz ve hız ve performans bakımından C ile yazılmışı olan cElementTree modülünü kullanacağız.

Bu modül xml.etree modül paketinin bir parçasıdır. Modülümüzü farklı şekillerde çağırabiliriz.

from xml.etree import cElementTree
import xml.etree.cElementTree as cElementTree

Öncelikle xml etiketi oluşturmayı ve bu etiketlere nitelik ve değer atamasını öğrenelim.

from xml.etree import cElementTree

root = cElementTree.Element("diller")

child = cElementTree.SubElement(root, "dil")
child.text = "Python"

child = cElementTree.SubElement(root, "dil")
child.text = "Ruby"

Continue reading »

Eki 202011
 

Uzun süredir geliştirmediğim Parçala adlı uygulamamın yeni sürümünü çıkarmış bulunuyorum. Parçala, Hj-Split ile aynı işi gören büyük boyutlu dosyaları parçalara ayırır, birleştirir ve dosya özetini çıkarır; bu sayede birleşen dosya doğru birleşmiş mi diye kontrol etmiş olursunuz. Aşağıda kullanımını gösteren bir video paylaşıyorum… Continue reading »