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.
(daha fazla…)

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.
(daha fazla…)

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.
(daha fazla…)

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.
(daha fazla…)

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.
(daha fazla…)

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 :).
(daha fazla…)

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.
(daha fazla…)

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 :).
(daha fazla…)

Ruby ile POP3 ve SMTP

Merhabalar,

Önceki yazımızda Ruby ile FTP ve HTTP‘den bahsetmiş ve bu konuda birkaç örnek yapmıştık. Bununla beraber Ruby’nin ağ yetenekleri içerisinde POP3, SMTP gibi elektronik posta ile ilgili yüksek seviyeli sınıfların varlığından da bahsetmiştik. Başlıktan da anlaşılacağı gibi, bu yazımızda sizlerle beraber POP3 ve SMTP konularına değineceğiz. Kendimize güzel ve popüler birkaç sorun bulup bu sorunları çözmeye çalışacağız.

Öncelikle POP3 protokolü ile herhangi bir elektronik mail sunucusu ile haberleşme konusunu inceleyelim, sonrasında SMTP protokolü ile ilgili örneğimize geçiş yaparız.

POP3 protokolü ile ilgili popüler bir sorun olarak; WordPress‘i örnek verebiliriz. Şimdi “ne alakası var kardeşim” diyeceksiniz, demeyin :) biraz sabredin.. :) WordPress’in güzel bir yeteneği var, belirli bir e-posta adresini kontrol edebiliyor, eğer bu e-posta adresine bir e-posta gelmiş ise, bu e-postanın içeriğini bir yazı olarak yayımlıyor… :) güzel bir özellik değil mi, peki biz bunu Ruby’de nasıl yaparız ? İşte asıl soru bu.
(daha fazla…)

Wiki Kurulumu

Merhabalar

Geçen günlerde bir projenin dökümantasyonunu nasıl yapacağımıza dair tartışma halindeyken artık Office uygulamalarından daha teknolojik programları kullanmaya karar verdik. Bu programlara Wiki adını verdiklerini biliyoruz. En gelişmiş versiyonlarından olan MediaWiki ile Wikipedia‘nın yapılmış olduğunu, binlerce insana hizmet veren çok güzel bir uygulama ortaya çıktığını biliyoruz.

Daha sonra internette araştırmalar yapmaya başladım, insanlar ne yapmış, Wiki dünyasında işler nasıl yürüyor.. vs. Bu gibi soruları sora sora sonunda WikiMatrix‘i buldum. Gerçekten çok güzel bir uygulama yapılmış özellikle arama bölümü gerçekten çok güzel hazırlanmış, arkadaşları tebrik etmek gerekir.

Sonuçta biz bir takım olarak dökümantasyon işlerini yürütecektik ve buna uygun bir uygulama aramaya koyulduk, birçok alternatife baktıktan sonra gerçekten en iyisinin (yazının yazıldığı tarihlerde) MediaWiki olduğuna karar verdim. Gerçekten iyi bir uygulama.

Fakat bir de Pimki var. Ruby’de yazılmış, instiki tabanlı, çok güzel bir uygulama, pek şirin ve gem ile kurulumu “gem install –include-dependencies pimki” kadar basit.

İkisi arasında uzun süre kararsız kaldım, daha sonra MediaWiki‘nin yorum yazma yeteneği beni tavladı ve bu uygulama ile dökümantasyon işlemlerine başladık. Makinamda halen Pimki kurulu, ufak tefek uygulamarı kesinlikle daha hızlı dökümante edeceğiniz kesin. Umarım vaktim olurda yorum ekleme mekanizmasını Pimki‘ye eklerim.

Kolay gelsin :)

Ruby ile FTP ve HTTP İşlemleri

Merhabalar,

Bugün yazımızda Ruby’nin ağ(network) ve genel ağ(web) kütüphanelerini inceleyeceğiz. Bu kütüphaneleri, mail göndermek, ftp ile başka bir makinaya dosya kaydetmek, herhangi bir başka web sitesininden bir sayfayı okumak veya düşük seviyeli (socket bazlı) işlemler yapmak için kullanabiliriz.

Bu yazımda, tabii sizlerde izin verirseniz, düşük seviyeli bağlantılar (Socket, BasicSocket, IPSocket, TCPSocket, SOCKSSocket.. vb.) yerine, yüksek seviyeli bağlantılardan HTTP ve FTP’yi incelemek istiyorum. Özellikle bu tür yüksek seviyeli bağlantılar için Ruby’nin gerçekten güçlü silahları vardır, bu silahlar ile pek çok uygulamayı zorlanmaksızın yazabilir, pek çok problemini kolayca çözebilirsiniz.
(daha fazla…)

Ruby ile Gelişmiş Nesne Yönetimi

Merhabalar,

Bir önceki yazım olan Ruby ile Dosya İşlemleri‘ne gelen yorum nedeni ile uzmanlara yönelik bir yazı yazma gereği hissettim. Bu yazımın amacı, çalışma zamanında ruby’nin nesneleri nasıl yönettiğini sizlerle paylaşmak. Öncelikle karşımıza çıkacak olan problemlerden biraz bahsedelim ve daha sonra bunların çözümlerini yapalım.
(daha fazla…)

Ruby ile Dosya İşlemleri

Merhabalar,

Bugün ruby’de dosya işlemleri ve ‘standart input/output’ olarak bildiğimiz konuyu işleyeceğiz. Öncelikle çok basit bir örnek verelim, ekrandan isim ve yaş bilgilerini alarak tekrar ekrana yazalım. Ve bunu yaparken tüm bu ‘input/output’ işlemlerine örnek vermiş olalım.
[ruby]
$stdout.sync = true # İşlemleri yaparken buffer kullanmaz, verilen işlemi anında yapar.

p “Lütfen adınızı giriniz: ”
name = gets.chomp # gets ile kullanicidan herhangi bir string (get’s') bilgisi alınır.
print “Lütfen yaşınızı giriniz: ”
age = gets.chomp.to_i # chomp işlemi ile girilen son karakter çıkarılır, böylece enter karakteri işleme alınmaz.
puts “Lütfen kendiniz hakkında birşeyler yazın: ”
descr = readline.chomp # Birkaç satır bilgi almak için kullanılır(mış).

# C dilinde kullanılan bir yazım tekneği
printf “Merhaba %s, %i biraz yaşlanmışsınız.\n%s\n”, name, age, descr
[/ruby]

Bir sonraki aşamada Ruby’nin dosyalar üzerindeki işlemlerine değinelim. Öncelikle ruby’nin dünyasında herşeyin nesne olduğunu unutmayalım. Eğer bir dosya açacaksak, bu kesinlikle bir sınıf ile eşleşmeli ve işlemleri bu sınıf üzerinden yapmalıyız.
(daha fazla…)