Nis 062016
 
3.619 views

Lazarus ile ilk programım

Lazarus ile ilk programımEvet, Lazarus ile önceki gün yazmaya başladığım programı bitirdim. Programın adı Depocu. Bu program, kişisel notlarımı tuttuğum küçük bir uygulama. Tekrar ihtiyaç duyabileceğim pratik bilgileri bu uygulamayla elimin altında tutuyor, onları depoluyorum.

Veri tabanım MySQL. Windows üzerindeki veritabanlarımı toptan yedekleyip Ubuntuya aktardım. Depocu veritabanı da böylece hazır bir şekilde yeni işletim sistemime aktarılmış oldu.

Aslında tuttuğum bilgiler aşırı korumaya ihtiyaç duyan şeyler değil. Bilgi miktarı da çok fazla sayılmaz. Yani veritabanımın MySQL olması bile gerekmiyor. Belki ileride SQLite3’e geçerim. Ama şu anda MySQL’le devam etmeyi tercih ediyorum.

Depocuda, MySQL veritabanına bağlanmak için önce Lazarusun ön tanımlı SQLdb bileşenlerini kullandım. Hiç sorun çıkmadı. Gerekli tabloya ve içindeki verilere kolayca eriştim. Ama iş verileri güncellemeye, yeni veriler girmeye gelince durum biraz değişti. Biraz zaman ayırsam, ona da mutlaka bir çözüm bulurdum. Ama, daha kolayını seçtim ve Lazarusa, Delphide de kullandığım ZEOSLib bileşenlerini yükledim.

Yeni veri giriş ve güncelleme sorunu da böylece ortadan kalkmış oldu.

Programda not almış olduğum bazı internet adreslerine tek bir tuşla erişim özelliği bulunuyor. Windows ortamında bunu özel bir fonksiyonla halletmiştim. Ubuntuda bu işin de kolayına kaçtım. İnternet bağlantı bileşenleriyle uğraşmak yerine, sistemde zaten yüklü olan firefoxu komut modunda tetikleyip istediğim adresi parametre olarak yüklemesini sağladım. Daha fazlasına ihtiyacım yok zaten!

Böylece neredeyse 48 saat içinde araştırmaları, testleri ve Facebook yazışmalarıyla birlikte programımı kullanılabilir hale getirmiş oldum.

Bu arada debug bilgileriyle birlikte 50 küsur MB tutan çalışabilir kod dosyasını, debug bilgilerinden arındırarak 3 MB’a düşürdüm. Daha da küçültme olanağı bulunduğunu biliyorum ama, şimdilik gerek yok!

Önümüzdeki günlerde Lazarusu Windows ortamına da kuracağım. Böylece linux altında geliştirdiğim kodları Windows ortamında da derleyip aynen kullanabileceğim. Delphi programım Windows 10 kazası yüzünden silinmişti. Aylardır yeniden kurmamı bekliyor ama, belki de bundan sonra ona hiç ihtiyaç duymayacağım.

Bu arada bir başka gelişme daha oldu! Python ile Lazarusu birlikte kullanabileceğim. Lazarusu belki de bir tür menü ve raporlama aracı olarak, pythonu da internet erişimi, veri madenciliği, karmaşık hesaplamalar, oyunlar vb için kullanacağım.

Henüz hayallerimi fazla zorlamıyorum. Ama biliyorum ki, güzel şeyler olacak!

Gelişmelerden haberdar olmak için, beni izlemeye devam edin!

Ahmet Aksoy

Nis 052016
 
4.205 views

Legolarla Kodsuz Program Yazmak

Program yazmaktan korkanlar için tek bir satır bile kod yazmadan program geliştirmek mümkün.

Scratch isimli sistem işte tam da bunu yapıyor. Bu sistemde bir takım lego parçalarını sürükle-bırak yöntemiyle bir araya getirerek program yazıyorsunuz.

https://scratch.mit.edu/projects/103544500/ adresine bağlanıp “yeşil bayrak” butonuna tıklarsanız, basit bir Scratch programını da çalıştırmış olursunuz.

Kedinin sıçramalarını durdurmak için “kırmızı renkli” butona basmanız gerekir.

Bu programcığın kodlarını görmek istiyorsanız, sağ üstteki “Proje sayfasına bak” veya “See inside” yazan mavi tuşa basın. Karşınıza aşağıdaki görüntü gelecek. En sağdaki pencerede yer alan ve rengarenk parçaların birleşiminden oluşan şekil, programımızın ta kendisi.

Legolarla Kodsuz Program Yazmak

Dikkat ederseniz, ortalıkta klasik kod satırlarına benzer hiç bir görüntü yok.

Ama sağ penceredeki şekli biraz yakından incelerseniz, buradaki lego parçalarının aslında mantıksal gruplar oluşturduğunu farkedersiniz.

Scratch

Yukarıdaki resimde görülen lego parçalarının üzerindeki yazılar İngilizce. Ama isterseniz sistem dilini Türkçe yapar ve lego açıklamalarını da otomatik olarak Türkçeye çevirebilirsiniz.

Bu yazımda size Scratch programlarının nasıl yazıldığını anlatmayacağım. Bunu, daha sonraki yazılarıma bırakıyorum. Ama çok merak ettiyseniz, internette bu konuda ayrıntılı bilgilere erişebilmeniz mümkün. Google’a “scratch” sözcüğünü arattırdığınızda 235 milyon yanıtla karşılaşırsınız. İster Türkçe, ister İngilizce sayfalardan istediklerinizi inceleyebilirsiniz.

Scratch projesi, çocukları yazılım dünyasına kazandırmak amacını güdüyor. Çocuklar kod yazmaya, yazım ve mantık hatalarıyla uğraşmaya gerek kalmadan pek çok şey yapabiliyorlar. Elbette bu sistem her türlü profesyonel yazılımın bu yöntemle hazırlanabileceğini iddia etmiyor. Ama çocukların ilgisini çekmeyi, onların zihinlerinde görsel algoritmalar oluşturmayı başarıyor. Böylece çocuklar bir oyun atmosferi içinde görsel programlar tasarlayıp, elde ettikleri sonuçların tadını çıkarabiliyorlar.

Scratch, iki boyutlu bir sahne kullanıyor. Üç boyutlu projelere yönelik Alice gibi başka sistemler de var.

Önümüzdeki günlerde, burada, Scratch ile yazılmış bazı kodları ayrıntılarıyla inceleyen yazılar yayınlayacağım.

Eğer bu konu ilginizi çekiyorsa, beni izlemeye devam edin.

Ahmet Aksoy

Nis 042016
 
2.914 views

Ubuntu ve Lazarus

Ubuntu ve LazarusGeçen yıldan beri yazılım dili olarak Python ile uğraşıyorum. Özellikle veri madenciliği açısından olağanüstü olanaklar sunuyor. Pek çok alanda çok güçlü kütüphanelere sahip.

Ama bunca gücüne rağmen, Python, görsel programcılıktan uzak durmakta ısrarcı gibi. Doğrudan desteklediği neredeyse hiç bir görsel araç yok. Resmi olarak desteklediği belirtilen tkinter ise oldukça zayıf. Python programcıları ister istemez PyQt gibi harici çözümlere razı olmak zorundalar. Ve bu nedenle, ne kadar popüler olursa olsun, pythonun javayı yakalamada pek fazla şansı olmayacak gibi.

Pythonu komut modunda gayet verimli bir şekilde kullanabiliyorum. Bu açıdan bir sıkıntım yok. Ama öte yandan, uzun yıllar boyunca yazılım dili olarak Delphi-7 kullandım. Sadece kendim için yazdığım bir sürü ufak tefek uygulamalar var. Hatta bu uygulamalardan bazıları artık benim için “olmazsa olmaz!” hale gelmiş. İşte bu uygulamaları da Python ile yeniden yazabilmek istiyorum. Ama bir türlü aradığım araçları bulamıyorum.

Son günlerde yaşadığım bir başka önemli değişiklik te kullandığım işletim sistemi ile ilgili.

Bir kaç ay önce yanlışlıkla Windows 10 kurulumunu onayladığımdan bu yana bir türlü başım beladan kurtulmadı. Aynı gün içinde bilgisayarımın 5 – 6 kez çöktüğüne defalarca şahit oldum. Şu sıralar Windows “ehven-i şer” noktasına gelmiş olsa da, bu gelişmeler bana kesinlikle linuxa geçme kararı aldırdı. Bunu uygulamaya da soktum.

Şu anda dizüstü bilgisayarımda hem Windows 10, hem de Ubuntu 14.04 LTS yüklü. Birincil sistemim Ubuntu. Ancak çok gerekli olduğunda Windowsa geçiyorum.

İnternet bağlantılarımla ilgili hiç bir sıkıntı yaşamıyorum. Hatta çok daha rahatım. Gezgin olarak Chromium kullanıyorum.

Maillerimi Mozilla Thunderbird ile takip ediyordum. Ubuntuda da aynı programı kullanıyorum şimdi. Sadece fontlarla ilgili küçük sıkıntılarım var. Ama onu da kısa sürede çözeceğim.

Farklı Python sürümleri ve PyCharm elimin altında. Skype kurulu. Uzak erişim için TeamWiver kullanıyorum. Son dönemde ilgilenmeye başladığım Scratch 2 programı da kullanıma hazır bekliyor.

Evet, asıl eksikliğini duyduklarım, Delphi 7 ile kendim için yazmış olduğum o küçük programcıklar… Pythonun görsel araçlarına o yüzden ihtiyaç duyuyorum.

Ama iki gün önce önümde yepyeni bir sayfa açıldı: Lazarus.

Lazarus’un adını uzun zamandır biliyordum. Ama zaten lisanslı bir Delphi 7 kullanıcısı olduğum için pek te ilgilenmemiştim. İki gün önce GNU/Linux Türkiye grubuna sorduğum bir soruya cevaben bazı arkadaşlar Lazarus programını kullanmamı önerdiler. Hemen kurdum. Neredeyse bildiğim Delphi’nin aynısı. Hiç yabancılık çekmedim.

Elbette bazı ufak-tefek uyumsuzluklar çıkabilir. Buna hazırım. Ama bu kadar güzel bir çözüm bulabileceğimi hayal bile etmiyordum açıkçası.

Çok acelem yok ama, ilk programıma başladım bile. Eğer Delphide kullandığım bileşenlerin hepsi Lazarusta da mevcut olsaydı, Delphi kodlarını Lazarusa hemen dönüştürmek mümkün olacaktı.

Tamamiyle yeniden yazmam da en fazla bir-iki günümü alacak.

Gelişmeleri buradan duyurmaya devam edeceğim. Hatta bazı kodları buradan sizlerle de paylaşabilirim. Eğer bir Delphi kullanıcısıysanız ve linuxa geçmeyi planlıyorsanız, Lazarusun size Delphiyi pek fazla aratmayacağını rahatlıkla söyleyebilirim.

Ahmet Aksoy

Mar 292016
 
3.182 views

Python Pygame ve Thread Uygulaması

Python Pygame ve Thread Uygulaması

Al Sweigart tarafından Python 2 ve 3 için uyumlu şekilde yazılmış “threadworms” isimli bir uygulama var. Proje https://github.com/asweigart/threadworms adresinde paylaşılıyor.

Programın içinde ayrıntılı açıklamaların bulunması özellikle thread, pygame veya Python konusunda öğretici örnek arayanlar için onu daha değerli hale getiriyor.

Açıklamalar İngilizce. Ben de dil sorunu olan arkadaşlarımız için kodların arasına serpiştirilmiş açıklamaları büyük oranda Türkçeleştirdim. Kalan kısmını da en kısa zamanda halletmeye çalışacağım.

Tamamlanmamamış haliyle bile bu açıklamaların işe yarayacağını düşünüyorum.

Türkçe açıklamaları içeren dosyaya https://github.com/ahmetax/threadworms adresinden ulaşabilirsiniz. Orijinal kod dosyasının adı: threadworms.py. Türkçe açıklamaları içeren dosya adı ise: threadworms-tr.py. Her iki dosyadaki kodlar aynı. Sadece açıklamalar ve bazı parametreler farklı.

Bu program, thread kullanımı açısından da çok yararlı ve güzel bir örnek. Solucanların işgal ettiği hücrelerin çakışmamasını sağlayan kilit mekanizmaları adım adım açıklanıyor.

Solucan sayısını, kullanılan renkleri, hücre boyutlarını, yatay ve düşey hücre sayısını değiştirmeniz mümkün. Solucanların hızını da ayarlayabilirsiniz.

setGridSquares(squares) satırının başındaki # işaretini kaldırırsanız, squares değişkeni tarafından tanımlanan engeller ızgara üzerinde etkin hale gelir.

Thread ve/veya pygame konusunda kendinizi geliştirmek istiyorsanız, bu örneği mutlaka inceleyin!

Ahmet Aksoy

Mar 272016
 
4.197 views

Python pygame ve kar yağışı

kar yağışıPythonun en zayıf olduğu alan belki de görsel tarafı. Komut modunda olağanüstü bir performansa sahip olsa da, güncel yazılımların ihtiyaç duyduğu görsel etkileşim konusunda yardıma muhtaç.

Pythonun bu açığını kapatmaya yönelik araçlardan birisi pygame. Bu kütüphane ile iki boyutlu grafikler için pratik çözümler geliştirebilirsiniz. Klavye ve mouse etkileşimi, thread kullanımı önünüze geniş bir kullanım alanı açıyor. Gerisi hayal gücünüze kalmış.

“pygame kütüphanesi”ni Pythonun en güncel sürümüyle birlikte kullanmanız mümkün. Ne yazık ki bu çalışmayı -şimdilik- sadece windows üzerinde yapabiliyorsunuz. Python 3.5 ile uyumlu pygame sürümünü
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame
adresinden indirip bilgisayarınıza kurabilirsiniz.

İndireceğiniz dosyanın adında Python sürüm numarası ve işlemci bilgileri yer alıyor. Örneğin:
pygame-1.9.2a0-cp35-none-win32.whl
dosyası 32 bitlik sistem üzerinde çalışan Python 3.5 sürümü içindir. 64 bitlik sisteme göre derlenmiş dosya ise:
pygame-1.9.2a0-cp35-none-win_amd64.whl

Eğer sisteminiz hem 32, hem de 64 biti destekliyorsa, Pythonu hangisine göre kurduğunuz önemlidir. Örneğin benim bilgisayarım 64 biti desteklediği halde, 32 bitlik python kullanıyorum.

Python 3.5.x ve 32 bitlik bir sistemde pygame kurulum komutu şu şekilde:
pip install pygame-1.9.2a0-cp35-none-win32.whl

Yukarıda gördüğünüz kar manzarasını oluşturan açık kaynak proje github üzerinde yer alıyor. Projenin orijinal adresi: https://github.com/adamkdean/Python.Snowfall

Buradaki projeden oluşturduğum çatalın adresi ise şöyle:
https://github.com/ahmetax/Python.Snowfall

Orijinal projede yağan kar düz zeminde birikiyor. Ben ise düz bir zemin yerine ağaçlıklı bir tepecik kullandım. Kar birikimi tepenin şekline uygun şekilde gerçekleşiyor. Aslında farklı arka planlar kullanarak bu projeyi daha da ilginç bir hale getirmek mümkün olabilir.

Yağan karın birikmesi dışında kodlar rüzgar etkisini de içeriyor.

Kodları yukarıdaki adreslerden indirip inceleyebilirsiniz. Benim yeniden düzenlediğim haliyle kodlar python 3.5.1 ve pygame-1.9.2a0 sürümlerini kullanarak çalışabiliyor.

Kodlar karmaşık olmadığı için ayrıca açıklamaya gerek duymuyorum. Yine de takıldığınız bir nokta olursa, sorularınızı bana yöneltebilirsiniz.

Ahmet Aksoy

Ara 162015
 
3.032 views

MariaDB ve MySQL Kardeş Kavgası

MariaDB ve MySQL Kardeş Kavgası

Image credits: unixmen.com

Başlıkta olayı dramatize ettiğime bakmayın! Fakat MariaDB ve MySQL garçekten de kardeşmiş. Her ikisi de aynı babanın (Michael “Monty” Widenius) ürünü.

Öykünün aslını bugün öğrendim. O yüzden, asıl seçimimi ve desteğimi bugüne kadar ertelemiş olduğum için kendimi de ayıpladım.

İzninizle bu hikayeyi size de özetleyeyim:

MariaDB adını ve bu sistemle MySQL veritabanlarının hiç bir değişikliğe gerek kalmadan aynen kullanılabileceğini bir kaç hafta önce öğrendim. Python Turkiye grubunda Python ile Windows ve Ubuntudan aynı veritabanı (MySQL) dosyalarını ortak kullanmaya yönelik bir soru sormuştum. Bir arkadaşım MySQL yerine MariaDB kullanmamı önerdi. MariaDB adını da ilk kez bu vesileyle duymuş oldum.

Yıllardır MySQL kullanıyorum. WordPress ağırlıklı web sitelerimde ve kişisel bilgisayarımda kullandığım veritabanı çoğunlukla MySQL oldu. Bazen de Firebird kullanırım. Diğer popüler ve kamuya açık bir çok veritabanını da denedim ama bana en sıcak ve en kolay bu ikisi geldi.

Bugün MySQL kullanan Delphi 7 ile yazmış olduğum kişisel bir programı, Ubuntu üzerinde de rahatça kullanabilmek için Python ile yeniden yazmaya karar verdim. Daha doğrusu bu kararı çok önceden vermiştim ama, bir türlü uygulamaya geçememiştim.

Önce Python’da MySQL için hangi paketleri kullanmam gerektiğini araştırmaya başladım. İşte bu araştırmaya MariaDB konusunu da dahil ettim. Ve oldukça ilginç bir öyküyle karşılaştım. Öykünün ana başlıkları şöyle:

  • Monty’nin ekibi mSQL çalışmalarına başlıyor.
  • 1995 yılında Monty’nin kızı My’ın adını çalışmaların adına ekleyerek MySQL olarak duyuruyorlar.
  • MySQL çift lisansa sahip (biri GPL).
  • Yazılımı geliştiren TcX firması adını MySQL AB olarak değiştiriyor. Yazılımı geliştirenler bu firmanın birer çalışanı oluyor.
  • 2005’te Oracle, InnoDB tablo tipini geliştiren Innobase firmasını satın alıyor.
  • 2006’da Oracle, Berkeley DB tablo yapısını geliştiren Sleepy Cat firmasını satın alıyor.
  • 2008’de Sun, MySQL AB’yi satın alıp, açık destekli geliştirme yapısını değiştiriyor.
  • 2010’da Oracle, Sun ve dolayısıyla MySQL’i satın alıyor ve geliştirme yapısını daha da değiştiriyor. (Ticari destek ücretlerine de % 600 zam yapıyor.)
  • Bu gelişmeler üzerine Monty, MySQL kodunu çatallayarak yeni bir veritabanı sisteminin çalışmalarına başlıyor. Bu çalışmaya ikinci kızının adını veriyor: MariaDB.
  • MariaDB, MySQL modelinde kullanılan aynı komut, arayüz, kitaplık ve API’leri kullanıyor.
  • MariaDB giderek popülerlik kazanmaya başlıyor.

Öykü bu. Oracle’ın dünya çapında kendi veritabanı tekelini kurma stratejisini çok açık bir şekilde göz önüne seriyor. (Öykünün ayrıntılarına referanslardaki linkten ulaşabilirsiniz.)

Tek bu neden bile MariaDB’ye geçmek için benim açımdan yeterli.

Peki Oracle, ileride MariaDB yeterince popüler olduğunda onu da satın almaz mı?

Olabilir elbette! Ama hayat devam ediyor. Belki Monty’nin üçüncü bir kızı olmayabilir ama, ekibindeki birilerinin de kızları vardır mutlaka!..

Açık kaynak çalışmalarını engelleme girişimleri her zaman olacak, ama o da her seferinde yepyeni isimler altında yeniden filizlenip gelişecek bir başka ortam bulacaktır.

Ahmet Aksoy

Referanslar: