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.
Continue reading…

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.
Continue reading…

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.
Continue reading…

Ruby ile GUI Toolkits (wxRuby)

Merhabalar,

Bu yazımızda Ruby ile GUI Toolkits başlattığımız yazı dizisine devam ediyoruz. Bugün WxRuby kütüphanesini inceleyeceğiz. WxRuby kütüphanesi oldukça gelişmiş olan wxWidgets kütüphanesi üzerine kurulu bir yapıdır. WxRuby Microsoft Windows, Mac OS X, Linux ve BSD üzerinde sorunsuzca çalışır. Kendisinin herhangi bir gÖrüntü teması yoktur. Hangi işletim sistemine yüklenirse, o işletim sisteminin gÖrüntü temasını kullanır. Hemen hemen tüm Ruby uygulamalarında olduğu gibi gem ile kurulumu oldukça basit ve kolaydır. Aynı zamanda Python bağlayıcısı da (wxPython) bulunan bu yapı, C++‘da yazılmış olan wxWidgets kütüphanesinden güçünü alır.
Windows, Linux ve Mac OS X için kurulumu; gem install wxruby2-preview ile gerçekleşir… Linux ve Mac OS X’de ‘Super User(sudo)‘ ile bu işlem yapılmalıdır.

Öncelikle wxWidgets kütüphanesinin gerçekten çok güçlü olduğu tekrar vurgulamakta fayda var. Bu bilgi ışığında WxRuby’nin Önceki sürümlerinin çok kÖtü olduğunu duymuş olabilirsiniz.. duymadıysanız şimdi duydunuz, gerçekten çok kÖtü idi. Bunun farkına varan sevgili yazılımcı kardeşlerimiz, wxRuby2’yi ortaya çıkardılar ve geliştirmelerini bu yapı üzerinde yapmaya başladılar. WxRuby2, şu anda oldukça iyi durumda, yazılım geliştirme, biraz sonra Örnekte de gÖreceğiniz gibi, VRuby’den zor :) fakat FxRuby’den kolay. WxRuby‘nin genel ağ adresinden daha fazla bilgiye ulaşabilirsiniz.
Continue reading…

Ruby ile GUI Toolkits – 2 (Güncellendi)

Merhabalar arkadaşlar,

Bu yazımızda Ruby ile GUI Toolkits – 1 (VRuby) ile başlattığımız akımı devam ettiriyoruz. Geçen yazımızda konuya giriş yapmış daha sonra VRuby ile ilgili güzel bir Örnek yapmıştık. Bugün Fox isimli kütüphaneye değineceğiz. Fox kütüphanesinin Ruby (FxRuby), FxPy (Python), EiffelFox (Eiffel) dillerine başlayıcıları(bindings) bulunan ve pek çok işletim sisteminde çalışan bir uygulama olduğunu belirtmek gerekir. Yazılımların oluşturulması her ne kadar Windows’a benzemese de, sonuç yani gÖrünüm gerçekten Windows’a çok benziyor.. İyi mi, kÖtü mü, ben bilemem ama benziyor..?

FxRuby, form designer‘ı, dÖkümantasyonu ve kullanıcı kılavuzu bulunan, gerçekten güzel ve gelişmiş bir kütüphanedir. VRuby gibi değildir… Hız ve kolaylık acısından VRuby, FxRuby’i açık ara geride bırakır :). Fakat elbetteki FxRuby’nin birçok işletim sisteminde çalışması bir avantaj olarak kabul edilebilir.

Windows işletim sisteminde kurmak için, sadece “One-Click Ruby Installer” yeterli. Fakat bu yazının yazıldığı tarihlerde “One-Click Ruby Installer” içerisinde gelen FxRuby’nin 1.6.1 sürümünde bazı problemler mevcut. Herhangi bir FxRuby programı çalıştırdığınızda bir çok ‘warning’ ile karşılacaksınız. Bu sorunu gidermek için ‘gem update –include-dependencies fxruby‘ komutunu uygulayarak FxRuby kütüphanesini (şu anki sürümü)1.6.5’e güncellenmesi gerekir.

Linux için, “gem” kullanarak FxRuby’yi kurmak yeterli. Kurulumu basit olan kütüphaneleri kim sevmez :).
Continue reading…

Ruby ile GUI Toolkits – 1

Merhabalar,

Bu yazımızda Ruby ile yazdığımız programlara bir arabirim eklemek istersek ne gibi alternatifler var, avantajları ne, dezavantajları ne gibi sorulara cevap arayacağız. Umarım buluruz ;)
Ruby Özgür ve açık kaynak kodlu olmasından dolayı, gÖrüntü arabirimi küyüphanesinde birkaç alternatif mevcut. Bunlardan başlıcaları; Tk, Ruby/GTK, Ruby/Qt, wxRuby, FxRuby/Fox ve VRuby şeklinde sıralanabilir.

Hepsi ile birer tane Örnek yapmak istiyorum, ama bu yazıda sadece bir tane yapabilirim ;) Ben derim ki listenin en kolayından başlayalım,
VRuby
Sadece Windows işletim sistemi için bir kütüphanedir. Windows için Ruby kurulumu olan One-Click Ruby Installer ile beraber gelir. Herhangi bir şekilde ekstra kurulum yapmaya gerek yoktur. Proje ile ilgili dÖkümantasyon çok kÖtü olmamasına rağmen oldukça azdır. Fakat bu sayfa başlangıç sayfası olarak kullanılabilir. Kütüphaneyi yapan kişiler Visual Basic kadar basit olması gerektiğine karar vermiş ve bu yÖndede çok güzel ve Önemli adımlar atmışlardır. Kütüphanenin kolay olan kullanımı ve ‘One-Click Ruby Installer’ ile birlikte gelmesi, Ruby programlarının Windows versiyonları için çok iyi bir avantaj olarak gÖze çarpar. Form Designer‘ı ve CHM dÖkümantasyonu ve bir çok Örneği mevcut olan VRuby, Windows için gerçekten çok güçlü bir alternatiftir.
Continue reading…

Hesap İşletim Ücreti

Gomleksizoglu.com’da yer alan “Hesap İşletim Ücreti” adlı yazıya katılmamak elde değil.

Ben de kendi çalışmak istediğim bankalara bu “Hesap İşletim Ücreti” hakkındaki mektubu gÖnderdim, cevap bekliyorum.

Umarım sizler de gÖnderir ve cevaplarınızı alırsınız… Unutmayın; Bankalar paranızı saklamak için oluşturulmuş, kar amaçlı kuruluşlardır. 10 yıl Öncesinde hiç para almadan bir sürü hesap açan ve bu şekilde çok büyük karlar kazanıp bankacılık sektÖrünü gelişmesine çok Önemli katkıları olan bankaların, “artık almaya mecburuz yoksa zarar ederiz” gibi açıklamalarda bulunmalarına kanmayın. Bunun bir kuyruklu yalan olduğunu, kuyruğunun da güneş sisteminin dışında olduğunu bilin.. bilmeyenlere bildirin..!

Kolay gelsin..

Ruby ile Thread İşlemleri

Merhabalar,

Şu zamana kadar yazdığım yazılarda Ruby ile ilgili pek çok konuya değindik, bu konular arasında POP3 ve SMTP, HTTP ve FTP, Dosya İşlemleri, Çalışma zamanı, Module yapısı, Hata yakalama, Resim işlemleri, ODBC veri tabanı bağlantısı, Ruby nesnelerinin karşılaştırılması gibi konular mevcut. Aslında tüm bu yazılardan küçük bir kitap bile çıkabilirdi ama elbetteki yazım dilinin tekrar bir elden geçirilmesi gerekli. Her neyse, şu zamana kadar yazdığım yazılar umarım sizlerin de işine yaramıştır :). Benim yaradı valla, ben Ruby ile ilgili bazı konularda kendi bloğuma bakıyorum :).

SÖzü uzatmadan başlıktan da anlaşılacağı gibi yazımızın konusuna yani Thread’lere(Türkçe’sini tam kestiremedim, hoşgÖrün lütfen) geçelim. Şimdi eğer bir yazılımcıysanız, daha Önceden Multi-Thread uygulamalar ile uğraşmıssanız, kolay bir konu olmadığını bilirsiniz. Gerçekten Özellikle zor zamanlarda çok uyuz bir konu olabilir. Tüm bunlardan Öte, yapımı ve tasarlanması çok pahalıya patladığı için, yazılımcılar tarafından pek tercih de edilmez. Ama işler Ruby’de biraz daha farklı, çünkü Ruby’de bu işlemler oldukça basit ve etkileyici :).
Continue reading…