Aylık arşivler: Şubat 2007

MapCache.rb – 1

Merhaba arkadaÅŸlar,

Bugün sizlerle eskişehirde yaptığımız seminerde yapmayı planladığım fakat seminer saatlerinin değişmesi neticesinde tamamlayamadığım sunumun konularından birisi olan MapCache adlı küçük uygulamayı sizlerle paylaşacağım.

– MapCache nedir ?
– MapCache, Hüseyin GömleksizoÄŸlu‘nun “Nasıl yapsamda cep telefonumda varolan GPS uygulamasını internete (GPRS’e) bir dünya para vermeden (ücretsiz) kullansam ?” sorusu üzerine doÄŸmuÅŸtur. MapCache uygulamasının ilk versiyonu bu ÅŸekilde Hüseyin arkadaşımız tarafından yazıldı (Kendisinin söylediÄŸine göre kaynak olarak esiyo.net’i kullanmış :) ). Daha sonra, Hüseyin arkadaşımız uygulamayı bana ulaÅŸtırdı ve iyi olup olmadığı sordu, ben de birkaç deÄŸiÅŸiklik yapıp çok güzel olduÄŸunu belirttim ve kendisinden seminerde kullanmak için izin istedim. SaÄŸolsun izni verdi ve bu konuyu sizlerle paylaÅŸma fırsatı buldum.

MapCache uygulaması Ruby ile uygulama yazımını çok güzel ve mantıklı biçimde işlediği için anlatımı oldukça basit fakat sizlerin daha rahat anlamabilmesi ve benim belli konulara daha çok ağırlık verebilmem için uygulamayı adım adım oluşturacağız.
MapCache.rb – 1 yazısına devam et

Ruby EskiÅŸehir Semineri

Merhabalar,

Uzun süredir yazı yazmadım. Bu kadar sessiz kalmamın nedeni inanın tembellik deÄŸil. Tembel bir adam deÄŸilim (Bunu kendime uzun süredir söylüyorum, sanırım iyileÅŸme göstermeye baÅŸladım.:) ). Tam aksine çok çalışkan bir ruh hali içerisindeyim. Hatta ve hatta arada sırada çalışacağım diye kendimi paraladığımı bile düşünüyorum ama hemen bu düşünce aklımdan uzaklaşıyor.. az bile çalışıyorum… (Bunu da kendime uzun süredir söylüyorum :) )

Şimdi koltukta yer alan karpuzları sıralayalım;
– Taşındım.. Artık beylikdüzünde oturuyorum.
– Evlilik hazırlıkları içerisindeyim, inÅŸallah 5 mayısta evleneceÄŸim.
– Geçen hafta sonu EskiÅŸehir’de gerçekleÅŸen bu etkinlikte Ruby hakkında bir konuÅŸma yaptım.

Ehh tüm bunlar bu ay içerisinde başladı, bazıları bitti, bazıları devam ediyor. Durum böyle olunca pek yazı yazamadım. Sizlerden özür dilerim ama arayı kapatmaya gayret edeceğim, bilginize..

Eskişehir hakkında birşeyler yazacak olursam, gerçekleşen seminer oldukça güzeldi. Hüseyin ile beraber gerçekleştirdiğimiz bu seminerde organizasyonu yapan arkadaşlar önceden bizlere her birimizin 1,5 saatlik süresi olduğunu hatta ve hatta istersek uzatabileceğimizi belirtikten sonra, her ikimizinde 1,5 saat içerisinde bitirmesini istemek gibi gaddarca bir tutuma sahip olsa da seminer düzenleyicileri, bizler mutlu ayrıldık. Umarım seminerleri izlemeye gelen arkadaşlar da mutlu ayrılmıştır.

Fakat yiğidi öldürelim hakkını verelim. Çok çok iyi insanlarla tanışma fırsatı bulduğum için organizasyonu yapan arkadaşlara teşekkür etmem gerekir, iyi ki bu şekilde bir organizasyon yapmışlar.

Yaptığım konuşmanın tam metni yok, fakat dökümanları ve kullandığım küçük kod parçalarını ilerleyen günlerde yavaş yavaş yayınlamak istiyorum. Şimdilik sizlere Eskişehir notları başlığı altında örnekleri ve vakit darlığından sunamadığım sunumu vermek istiyorum.

İlerleyen günlerde bu döküman içerisinde yer alan bilgileri ve konuları daha direnlemesine inceleyeceğim.

Kolay gelsin :)

Ruby ile Reflection – 2

Merhabalar,

Bir önceki Ruby ile Reflection adlı yazımda anlatmaya baÅŸladığım Reflection konusunu, bu yazı ile bitiriyoruz. Önceki yazımda Reflection‘ın tanımı yapmış, yazılımcıların neden kullanmak istediklerini felsefik anlamda incelemiÅŸtik. Hatta tüm bunlar yetmemiÅŸ bir de kapsamlı bir örnek yapmıştım.

Bu yazıda biraz daha güncel hayat örnekleri ile beraber özellikle Rails’de bu iÅŸler nasıl yapılmış ona deÄŸineceÄŸim. Daha doÄŸrusu deÄŸinmeye çalışacağım.

Ä°lk olarak Ruby on Rails üzerinde Model kavramı ile çalışmaya baÅŸladığınızda ilk veya ikinci örnekte aÅŸağıda yer alan kod satırını görürsünüz. (Örnek; Agile Web Development With Rails’den alınmıştır.)
[ruby]
class Product < ActiveRecord::Base validates_presence_of :title, :description, :image_url end[/ruby] Bu örnekte validates_presence_of methodu ile title, description ve image_url bilgilerinin boÅŸ olamayacağını belirtmiÅŸ oluyoruz. Kodun yazım ÅŸekli biraz garip olabilir, ilk zamanlar (Ruby ile Reflection’ı öğrenmeden önce) bana garip gelmiÅŸti :)

Åžimdi bu yazım ÅŸekli de nereden çıktı diyeceksiniz, aslında çok basit; Ruby’de “:” iÅŸareti bir methodu veya deÄŸiÅŸkeni ifade etmek için kullanılır. Bu iÅŸaretle biz aslında o methodu veya deÄŸiÅŸkeni kullanmak istemediÄŸimizi sadece ifade etmek istediÄŸimizi belirtiyoruz. Eski dilde, tabir-i caiz ise adresini kullanıyoruz. Yani “:title” aslında “title” deÄŸiÅŸkenini ifade eder.
Ruby ile Reflection – 2 yazısına devam et

Ruby ile Reflection

Merhabalar,

Bu yazımızda Ruby üzerinde, daha önce yazmış olduğum Ruby ile Çalışma Zamanı ve nesneler aynı mı ? yazılarında az da olsa değindiğim fakat genel anlamı ile hiç ele almadığım Ruby ile Reflection konusunda yazmaya karar verdim.

Reflection tanım olarak, çalışma zamanında programda tanımlanmış nesnelere veya methodlara dinamik erişimi tarif eder.
Aşağı yukarı günümüzde tüm modern (hatta bazı klasik) programlama dilleri bu olguyu destekler. Ruby, çalışma ve tasarım zamanlarının birbirlerinden farklı olmaması nedeni ile Reflection olgusunu tüm yönleri ile destekler.

Günümüzde Reflection özelliği üzerine kurulu Reflective Programming adlı yeni bir yazılım geliştirme felsefesi de bulunmaktadır.

En temel anlamda düşünürsek, bir yazılımcı olarak yazdığınız program üzerinde %100 kontrol sahibi olmak isteriz. Tasarım zamanında (yani programı yazarken) elimizde olan bu gücü, çalışma zamanında da kendi yazdığımız diğer yazılımlar sayesinde (veya aracılığı ile) korumak isteyebiliriz. Reflection, tam bu esnada kullanmamız gereken teknolojinin adıdır.
Ruby ile Reflection yazısına devam et

Küresel Isınma Gerçeği

Merhabalar arkadaÅŸlar,

Bu seferki yazımız bilgisayar ile ilgili deÄŸil, daha önemli bir ÅŸey ile ilgili, küresel ısınma gerçeÄŸi ile ilgili. Aranızdan bazıları çıkabilir, “yok yahu öyle birÅŸey, bizlerin küresel ısınmaya hiçbir katkısı olmuyor.. hatta küresel ısınma diye birÅŸey yok” derse…. yakınımda demesin, uzakta desin.. bu sözleri sarfeden insana yaklaÅŸana kadar sinirim geçebilir, kendime gelebilirim.

ArkadaÅŸlar durumu kabul edelim. Küresel ısınma var ve eÄŸer önlem almazsak çok kötü sonuçları beraberinde getirecek. Bunlardan bazıları sonuçunda Dünya nüfüsunun %40’ı direkt olarak etkilecek. Biraz daha gerçekçi bir örnek vermek gerekir ise Türkiye’de yaÅŸayan 70 milyon insanın %40’ının (aÅŸağı yukarı 28 milyon ediyor.) bu durumdan direkt ve ÅŸiddetli bir biçimde etkilenebilir, etkilenecektir.

En son üç güzide bakanımızın yaptığı açıklamada dünyayı bu hale getiren zihniyetin (Ben bu zihniyete Bush zihniyeti diyorum. Çok sevdiÄŸim müzisyenlerden biri olan Moby’nin deÄŸimi ile ‘Aptal’ zihniyeti.) Türkiye’de de etkili olduÄŸunun göstermektedir. Bu açıklama nedeni ile bizi yöneten insanlardan, özellikle çevre bakanının karadenizli olmasından (ki ben de karadenizliyim..) çok büyük bir utanç duydum. Tüm Türkiye’nin doÄŸayı sevdiÄŸini ve doÄŸaya zarar vermek istemediÄŸini biliyorum ama karadenizlilerin daha hassas olduklarını düşünürdüm, yanılmışım, hepsi deÄŸilmiÅŸ. Bu ülkenin insanları uzun süre boyunca topraktan kazançlarını elde ettiler. TopraÄŸa baktıkları zaman topraktan verim alacaklarını bilirler. Ama bu üç bakanımız bunları unutmuÅŸ gibi.

Ä°yi haber ile baÅŸlayalım Türkiye karbondioksit salınımı konusunda Dünya’daki toplam salınımın %1’ini bile yapmıyor. Hemen gevÅŸemeye baÅŸlamayın, kötü habere gelince Türkiye’de yapılan karbondioksit salınımı geçen yıla göre %70 artmış.

Öncelikle ÅŸunu görmemiz gerekir. Türkiye’deki bu artış gelecek yıllarda devam etmez diyecek kiÅŸinin anlını karışlayacak birçok çıkacaktır, bu nedenle böyle bir durumu aklınızdan bile geçirmeyin. Özellikle enerji kaynaklarının özelleÅŸtirilmesinden sonra fosil yakıtlara olan ihtiyaç oldukça artmış ve son bir (evet sadece bir yıl) içerisinde Türkiye’de daha önceden varlığı bile tartışılan bir sektör ortaya çıkmıştır. Bu sektörün büyüklüğü tahmini bir deÄŸerle (karbondioksit salınımına paralel olarak) %70 artmıştır. İçerisinde bulunduÄŸumuz 2007 senesinde %70 artması ki bu bir hayal deÄŸil, Türkiye’nin Dünya’yı kirleten ülkeler arasına girmesi demek ve biz bunu istemiyoruz.

Ä°ÅŸin özü, Dünya üzerinde 200’den fazla ülke mevcut, tam sayıyı bende bilmiyorum. Dünya üzerinde yer alan tüm ülkeler bizim kadar karbondioksit salınımı yapar ise, Dünya’nın sonu zaten gelmiÅŸti. Bunu hiç aklımızdan çıkarmayalım; Her ne durumda olursa olsun ÅŸu anki karbondioksit salınımı bile Türkiye için çoktur. Bunun artmaması için çalışmalı, diÄŸer Dünya ülkelerine örnek olmalıyız.

Sonuç olarak; Türkiye Cumhuriyeti Hükümeti, kendisine yakışanı yapmalı, doğal enerji kaynaklarını teşvik etmeli, fosil yakıtları kullanmayı bırakmalıyız. Türkiye içerisinde petrolün kısıtlı miktarda bulunması nedeni ile ortaya çıkan dışa bağımlılığı azaltabilir ve doğaya olan borçumuzu rahatlıkla ödeyebiliriz.

EÄŸer bunları yapmaksak;”EÄŸer bir kiÅŸi, bir konuyu anlamamak için para alıyorsa o kiÅŸiye gerçeÄŸi göstermek çok zordur.” sözünü söylemek gerekiyor. Bush’un petrol firmalarından para yediÄŸini tüm dünya biliyor (Salak A.B.D’liler hariç, salak olmayan biliyor :) ). Ama bunu yapmazlarsa, demek ki bizimkiler de para yiyor.
– Umarım ÅŸereflerini yüksek miktarlara satarlar.
– Umarım çocuklarının geleceklerini yüksek miktarlara satarlar.
– Umarım bu satışın sonunda paralarını harçıyacak bir dünya bulabilirler.

(Ãœstteki paragraf ile ilgili olarak; bu yazının yazıldığı tarihten 2,5 ay sonra NTV-MS-NBC‘de yayınlanan ‘Küresel ısınma öngörülerine sansür‘ haberi ile örtüşmektedir.)

Kolay gelsin…

*Not: http://www.iklimkrizi.net/ veya http://www.climatecrisis.net adreslerinden gerekli bilgileri alabilir ve bireysel olarak yapabileceklerinizi öğrenebilirsiniz. Ve elbetteki bununla beraber… “uygunsuz gerçek” filmini izyelebilirsiniz. Daha doÄŸrusu lütfen izleyin.

Ruby ile GUI Toolkits (Tk)

Merhabalar,

Bugünkü yazımız ‘tk’ ile ilgili olacak. Aslında bu yazı ile beraber GUI Toolkits adlı yazı dizisinin sonuna gelmiÅŸ oluyoruz. Bu yazımda Tk’dan daha fazla, tüm kullanıcı grafik arabirimleri arasında karşılaÅŸtırmalar yapmak istiyorum. Öncelikle ‘Tk‘ konusunda bazı bilgileri sizlerle paylaÅŸalım. Tüm Ruby dağıtımlarında, varsayılan olarak Ruby/Tk baÄŸlayıcısı mevcuttur. Ama sadece baÄŸlayıcı(bindings) yetmez, Windows kullanıcıları için Tk’nın binary kütüphanesi varsayılan olarak gelmez. Bu nedenle ActiveState‘e baÄŸlı standart ActiveTcl ürünü ile bu kütüphaneyi ücretsiz elde edebilirsiniz. ‘Tk’ Windows, Linux ve Mac üzerinde sorunsuz çalışan bir kütüphanedir. Kendi görüntü teması mevcuttur GNOME, Fox ve wxWidgets gibi sistemlerin görüntü temaları Tk’dan daha güzel ve çeÅŸitli olabilir. Ruby One-Click Installer ile beraber gelen Programming Ruby(The Pragmatic Programmer’s Guide) adlı kitapta pek çok güzel örneklerle açıklanmış ve anlatılmıştır. Ä°ÅŸ bu nedenle (Ha..ha sanki resmi yazışma gibi oldu.. :p) herhangi bir örnek vermeyeceÄŸim. Aslına bakarsanız pek tavsiye ettiÄŸim bir kütüphane deÄŸil kendileri, Tk yerine FxRuby, WxRuby veya Gtk’nın kullanılması çok daha verimli ve kolay olur görüşündeyim. Özellikle Windows iÅŸletim sistemi için yapılacak basit uygulamalarda VisualuRuby(VRuby)‘nin kullanılmasını ÅŸiddetle tavsiye ederim.

Bu yazı dizisinin sonuçunu merak ediyorsanız, ‘diÄŸer kütüphanelerle uÄŸraÅŸmak istemiyorum’ ve ‘bana adam gibi bir kütphane tavsiye et, iyisi ile kötüsü ile kullanmak istiyorum’ diyorsanız. Önceki yazılarımda bahsettiÄŸim gibi WxRuby’den baÅŸlayabilirsiniz ;)

Kolay gelsin…

Ruby ile GUI Toolkits (Gtk)

Merhabalar,

Bu yazımızda konumuz GTK ile görüntü arabirimleri oluÅŸturmak. Öncelikle belirtmem gerekir ki, bu konu ile yazacağım yazıdan çok daha iyisi Pinguar tarafından seminer olarak verildi. Pdf’i buradan bilgisayarınıza yükleyebilir ve güzel güzel okuyabilirsiniz.
Aklınızdan şöyle bir soru geçebilir; “be adam, Pinguar konu ile ilgili güzel bir yazı yazmış diyorsun, ee peki sen neden bu yazıyı yazıyorsun…?”.. geçti deÄŸil mi ? Benim de geçti. Bu sorunun cevabı ise aslında çok basit, Pinguar çok güzel bir seminer vermiÅŸ (öyle duydum..) Ama pdf’in uzunluÄŸu 28 sayfa kadar, eee durum böyle olunca, sizlere Gtk ile ilgili ön bilgiler vermek ve küçük de olsa bir giriÅŸ yapmak bana kaldı. Ãœstelik Gtk’nın anlatılmadığı “Ruby ile GUI Toolkits” yazı dizisi düşünemiyorum doÄŸrusu.

Hemen küçük ön bilgiler ile konumuza bir giriÅŸ yapmaya çalışalım. Yazının yazıldığı sıralarda Ruby-Gtk2‘nin ‘0.16.0‘ sürümü duyrulmuÅŸtu. Bu proje isminden de anlaşılacağı gibi Ruby’nin yeni nesil GNOME 2.0 baÄŸlayıcısıdır. Proje içerisinde iki farklı paket bulunmaktadır;

  • Bunlardan ilki ‘ruby-gtk2‘ paketi. Bu paket içerisinde sadece standart grafik arabirim iÅŸlemleri destekleyici sınıflar içeren bileÅŸenler bulunur.
  • DiÄŸer ise ‘ruby-gnome2-all‘ paketidir. Bu paket, standart olarak kullanılan ‘ruby-gtk2‘ paketi üzerine çok yönlü ve birçok durumu destekleyen büyük bir mimari içerir.

Kurulum konusuna gelirsek, Gtk+, sadece Linux, FreeBSD ve Microsoft Windows işletim sistemleri üzerinde çalışır. Linux ve FreeBSD kurulumları oldukça basittir. Bu adreste yer alan bilgilerden faydalanılarak rahatlıkla kurulumu gerçekleştirilebilir.
Ruby ile GUI Toolkits (Gtk) yazısına devam et