http://esiyo.net - uordek.essiyoo.each { |yazi| esiyo.net << yazi }

Archives Posts

Şişirme Veri Girişi / Bulk Data Creation

April 6th, 2007 by Tankut ŞENTÜRK

Merhaba arkadaşlar,

Bugün sizlerle acayip, acayip olduğu kadar da zor bir konuyu paylaşacağum. Son bir haftadır çalıştığım firmada ‘Şişirme Veri Girişi’ (Bulk Data Creation) ile uğraşmaktayım. Uzun bir süre değil mi ? evet uzun :) ama yapacak birşey yok uzun sürüyor işte :)

Aklınızda hemen, bu konu neden önemli, üzerinde neden çalışıyoruz şeklinde sorular oluşabilir, oluşmalıdır da :) bu nedenle sizlere öncelikle müşterilerin şişirme veri girişini neden istediklerini izah etmeye çalışayım;
- İlk örneğimiz Microsoft’un Windows işletim sisteminden; işletim sistemine çok fazla program ekleyip kaldırdığımızda sistemin yavaşladığını Registery dosyasının şişmesine bağlarız. Zamanında Microsoft’da çalışan arkadaşlar, bu durumu test etmemiş veya test etmiş fakat sonuçlarını dikkate almamışlar ki biz halen ‘Windows’u nasıl hızlı kurarım’ gibi işlerle uğraşıyoruz.
- 3~5 yıldır kullanılan yazılımlarınızda, çok uyduruk işlemlerin bile artık çok fazla zaman aldığına şahit olabilirsiniz. Bunun nedeni başlangıç verinin çok küçük olacağını düşünüp, veri tabanında uygun indeksleri kullanmamız veya yazdığımız algoritmaların p = n^2 (buradaki ‘n’ veri adedi, ‘p’ performans) veya buna benzer bir şekilde çalışması olabilir. Örnek vermek gerekir ise; n = 1 ise, p = 1, n = 2 ise p = 4, n = 3 ise p = 9, n = 4 ise p = 16 olur… bu durumda 3~5 sene sonra n = 100 olduğunda p = 10.000 olur ki… sistem artık çalışmıyor demektir. Elbetteki örnekler daha da arttırılabilir.

Akıllı yazılım müşterilerinin artık bu soruyu sormaya başlamalarının nedeni işte bunun gibi nedenler arkadaşlar. Peki biz yazılımcılar bu durumda neler yapabiliriz. Aklınıza ‘Veri boyutu 2 katına çıkarsa sistemin bunu işleme süresi de 2 katına çıkar.’ gibi bir yaklaşım gelebilir. Bu yanlıştır, bu şekilde olmamalıdır. Günümüzdeki veri tabanı uygulamalarını akılcı kullanmak ve eğer bu da yetmiyor ise, yazılıma arvişleme yeteneği eklemek gerekir.

Veri tabanı performansı günümüzde çok büyük problemler teşkil etmemektedir. Asıl problem, programın yazıldığı algoritmanın ve yapılan dizaynın getirdiği kısıtlamalardır. İşte bu tür kısıtlamaları ve bunlara bağlı performans düşüşlerini daha rahat yakalamak için uzun vadeli çalışacak olan sistemlerde şişirme veri girişi(bulk data creation) işlemi ile beraber performans sınaması gerçekleştirilmelidir.

Evet tanımı yaptıktan sonra aklınızda oluşan bazı karışıklıkları gidermek gerekir. Öncelikle Örnek Veri Girişi ile Şişirme Veri Girişi arasındaki farkı sizlere tarif etmem gerekiyor. Örnek veri girişi; sistemin olanaklarını çok zorlamayacak şekilde, örnek teşkil edecek çoklukta veri girmektir. En fazla sistemde oluşabilecek bir aylık verinin oluşturulmasıdır. Şişirme Veri Girişi ise; Sistemde stres test yapmak ve data boyutlarının hangi sevilere doğru çıktığını, en kötü koşullarda veri tabanı üzerinde yapılacak işlemlerin veya yazılmış algoritmaların ne kadar süreceklerini görebilmek için yapılan işlemdir. Tahmini 2 veya 3 seneden daha az olmamak kaydı ile veri giriş yapılmalıdır. Diğer bir deyişle Örnek Veri Girişinin 30 veya 40 katı kadar veri girilmesi gerekir. Girilen bilgiler en az örnek veri girişinde olduğu kadar mantıklı ve kendi içerisinde tutarlı olmalıdır.

Bu aşamadan sonra sizlere nasıl hızlı ve mantıklı şişirme veya örnek veri girişi nasıl yaparsınız onları tarif etmeye çalışacağım. Bu işlem için elbetteki Ruby’yi :) kullanacağız(.NET veya Java’yı da kullanabilirdik ama henüz onlarda bu işlemler kolaylaşmadı.).

Bu işlemi Microsoft SQL Server için gerçekleştireceğiz. Böylece Microsoft SQL Server için ActiveRecord bağlantısını da incele fırsatı bulmuş oluruz. Öncelikle sizlere neden ActiveRecord kullandığımızı açıklamam gerekir, daha önceki ODBC yazılarımda (1,2,3,4) belirtiğim kütüphane ile değilde, neden ActiveRecord ile gerçekleştiriyoruz. Çünkü ODBC düşük seviyeli bir bağlantı prokolüdür. Fakat ActiveRecord yüksek seviyeli bir veri tabanı ile Ruby arasında bir eşleme kütüphanesidir. Yani ActiveRecord’da veri tabanında bulunan tablolardan Ruby sınıfları oluşturulabilir, bu sınıflar üzerinde ‘Insert’, ‘Delete’, ‘Update’ ve ‘Select’ gibi SQL işlemleri birkaç küçük hareket ile gerçekleştirilebiliriz. Fakat ODBC bize bu şekilde bir yardımda bulunmaz, aynı işlemleri ODBC kullanarak bizlerde gerçekleştirebiliriz, ama bunun için kod yazmamız gerekir ki :) tembel adamın istiyeceği en son şeydir :). Hazırı var işte ActiveRecord :). Eğer ActiveRecord üzerinde hoşumuza gitmeyen bölümler olursa Ruby’nin esnekliğinden faydalanarak bunları değiştirebiliriz. Ayrıca ActiveRecord, ODBC gibi bir bağlantı kütüphanesi değildir, tek başına herhangi bir veri tabanına bağlanamaz fakat ODBC, ADO, DBI, OCI gibi birçok bağlantı kütüphanesini kullanabilir.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 1 Yorum » yapılmış.

Archives Posts

Ruby Bucak Semineri

April 2nd, 2007 by Tankut ŞENTÜRK

Merhabalar,

Geçtiğimiz hafta sonu çok güzel bir organizasyona katıldık. Bu güzel anı bizlerle paylaştıkları için organizasyonu düzenleyen çok değerli öğretim üyelerime ve katılımcılara çok teşekkür ederim. Burdur-Bucak’ta gerçekten çok güzel, organize ve istekli insanlarla karşılaştık. Umarım bu istekleri devamlı olur, eğitimlerini başarı ile tamamlar ve sektörde önemli yerlere gelirler. Tüm ihtiyaçlarının kendi ellerinde olduğunu anladıklarını tahmin ediyorum.

Hüseyin Gömleksizoğlu ile beraber çıktığımız bu yolculukta, Hüseyin’in bazı çekinceleri ve şüpheleri vardı, ama sorunsuz bir yolculuktan sonra Bucak’a vardır.

Merak edenler olabilir hemen anlatayım; İstanbul-Bucak arası, uçak ve otobüs macerası :)
İstanbul’dan 19:10′da kalkan Pegasus’a ait uçağımız saat 20:10′da Antalya havaalanına indi. Daha sonrasında Havaş’ın servisi ile Antalya’nın diğer ucunda bulunan otobüs terminaline gittik, vardığımızda saat 21:15 idi. İstanbul’dan yaptığımız telefon görüşmelerinde 20:00′dan sonra Bucak’a gidemeyeceğimizi kesin bir dille söylemişlerdi. Ama benim gazımla beraber Hüseyin’de ikna olunca biz şansımızı denemeye karar vermiştik, terminale gittiğimizde, 2. sorduğumuz kişiden 18 ytl karşılığında saat 22:00 otobüsünde Bucak için bilet almıştık. Bu kadar kolay bulmamıza şaşırarak bileti hemen aldığımız için kendimize kızdık, hiç araştırmamıştık belki başka bir firmada 21:30 otobüsünde yer vardı :) neyse almıştık işte biletleri; saat 22:00′da otobüs kalktı ve saat 23:00′da Bucak’taydık.

Kısadan hisse durumuna indirecek olursak; tüm tur yetkililerinin veya otobüs işletmecilerinin o saatte gidemezsiniz dediği İstanbul - Bucak arasını uçak + otobüs ile 4 saat gibi bir sürede katettik :) mutluyuz, gururluyuz :)

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) Yorum yok » yapılmış.

Archives Posts

Ruby’nin Yeni Sürümü

March 12th, 2007 by Tankut ŞENTÜRK

Merhabalar arkadaşlar,

Uzun süredir beklenen Ruby 1.8.6 sürümü nihayet duyuruldu. ruby-lang.org adresinden indirilebilir. Windows kullanıcıları için küçük bir not, bu yazı yazılırken henüz One-Click Installer güncellenmemişti, download esnasında dikkatli olunuz.

Gelen yeniliklere deyinecek olursak;

  • Artık Visual C++ 8 Sp1′de de Ruby’yi derleyebilirmişiz.
  • Date sınıfı güncellenmiş.
  • TK bağlayıcısında (bindings) geliştirmeler yapılmış.
  • Kernel ve Module sınıflarına reflection’a yönelik yeni methodlar eklenmiş.
    - Kernel#instance_variable_defined?
    - Module#class_variable_defined?
  • Thread işlemleri, yeni bir yöntem kullanılarak, daha da hızlı hale getirilmiş.
  • Uzun süredir nokta bile eklenmeyen Webrick’de bazı geliştirmeler yapılmış.
  • Digest üzerine dosyalar üzerinde de işlem yapma yeteneği eklenmiş.
  • nkf de güncellenen sınıflar arasında yer almış.

Değişiklikler (Change Log) ve yenilikler ruby’nin resmi sitesinde de okunabilir.

Kolay gelsin :)

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 6 Yorum » yapılmış.

Archives Posts

MapCache.rb - 2

March 6th, 2007 by Tankut ŞENTÜRK

Merhabalar arkadaşlar,

Uzun bir aradan sonra tekrar berebariz. Aranızda hiç evlilik hazırlıkları yapan var mı ? Var ise halimden anlayacaktır, bu adam neden yazı yazmaz, bu süre içerisinde ne yapar gibi sorular soruyor olabilirsiniz. Ama bu aralar herşey birbirleri ile sözleşmiş gibi ardı arkasına yoğunlaşıyor, yeni hareket alanları açılıyor..vs..vs. Bunların üzerine bir tutam, olmazsa olmaz, arkadaşlarımın özellikle dostlarımın bu yoğunluğumdan şikayetçi olması eklenince, inanın tadından yenmez bir hal alıyor. Ama en çok şikayet eden benim ama duyan yok. Neyse her zamanki gibi, yoğunluk can sıkıntısından iyidir. Sözleri ile bir önceki MapCache.rb - 1 (Detayları öğrenmek için lütfen tıklayın) adlı yazımızda başladığmız küçük yazı dizisini bitirelim.

Öncelikle bir önceki yazımıza yorum yapan Hüseyin Gömleksizoğlu'nun dediği gibi, MapCache uygulamamıza Threading ekleyelim ki, Http sunuculardan daha hızlı verileri alabilsin, çalışabilsin. Üstelik sizlere Threading ile ilgili gerçek hayat örneği verebilmek ise bu işin artısı olsun.

Yazımıza başlamadan önce bazı şeyleri belirtmem gerekiyor.
- Http sunucudan yaptığımız istek içerisinde yer alan v=w2.37 alanını v=w2.43 olarak değiştirmeliyiz. Muhtemelen bu bilgi version(sürüm) bilgisini taşıyor, bu nedenle bizim bu projeyi gerçekleştirdiğimiz tarihlerde 2.37 olan sürüm 2.43'e çıkmış. Kodları güncellemek gerekir.
- MapCache.v3.rb uygulamasını denemek için MapCache.v3.rb'nin bulunduğu klasörün içerisine sunucu_1, sunucu_2 ve sunucu_3 adlı klasörler açmalıyız. Bunun nedenini sizlere kodu verdikten sonra açıklayacağım.

$stdout.sync = true

require 'net/http'

proxy = nil
proxy_port = nil
port = 80

allThread = []

[1,2,3].each do |index|
    # Yeni bir Thread yaratılıyor, index -> ServerNo olarak
    # Thread-safe biçimde Thread içerisine aktarılıyor.
    thread = Thread.new(index) do |serverNo|
        httpObj = Net::HTTP.new("mt#{serverNo.to_s}.google.com", port, proxy, proxy_port)
        httpObj.start do |http|
            19000.upto(19125) do |x|
                12250.upto(12375) do |y|
                    puts "X=#{x.to_s} Y=#{y.to_s}"
                    resp = http.get("/mt?n=404&v=w2.43&x=#{x.to_s}&y=#{y.to_s}&zoom=2")
                  
                    file_name = "sunucu_#{index}\\temp_#{x.to_s}_#{y.to_s}.png"
                    open(file_name, "wb") { |file|
                        file.write(resp.body)
                    }
                    puts "#{file_name} adlı dosya başarı ile yazıldı..!"
                end
            end
        end
    end
    # Yeni yaratılan Thread'in yönetilebilmesi için
    # allThread adlı diziye ekleniyor.
    allThread <<thread
end
# Ana thread üzerinde, tüm Thread'lerin bitmesi için bekleniyor.
allThread.each { |thread| thread.join }

Programı çalıştırdığımızda 3 ayrı Http sunucusuna 3 farklı Thread kullanarak istek göndermeye başladığımızı göreceksiniz. Bu bizlere büyük ölçüde performans kazandıracaktır. Peki nasıl kazandıracak ? önceki MapCache sürümlerinde sadece bir Thread üzerinden 3 farklı sunucuya sırası ile erişip isteklerde bulunuyorduk, yani ben bir sunucudan veri alırken diğer sunucular işlem sırasının kendilerine gelmelerini bekliyorlardı, bu sürümde eklediğimiz Multi-Threading yapı ile artık bu bekleme sona erdi. Böylece işlem hızımızı arttırmış olduk.

MapCache uygulamasının (elbetteki bu yazı dizisi için) son sürümü olan v4 için yapacak tek bir şey kaldı. Hüseyin arkadaşımızın bir önceki yazıya yaptığı yorumda da belirttiği gibi sunuculardan verileri alırken problem yaşıyorduk, bu nedenle 3 farklı sunucudan veri almaya başladık ve bu verileri farklı klasörlere kayıt etmeyi başardık. Şimdi bize 3 farklı sunucudan gelen verileri yorumlayıp, kayıp verileri ayıklayan bir program bloğu daha gerekiyor. Ama bu programı melesef ben yazamıyorum. Umarım sizler yazıp bana gönderirsiniz. :) Elbetteki yazan kişinin adını ve notunu yayınlayacağım.

Kolay gelsin :)

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) Yorum yok » yapılmış.

Archives Posts

MapCache.rb - 1

February 27th, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 1 Yorum » yapılmış.

Archives Posts

Ruby Eskişehir Semineri

February 26th, 2007 by Tankut ŞENTÜRK

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 :)

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 4 Yorum » yapılmış.

Archives Posts

Ruby ile Reflection - 2

February 13th, 2007 by Tankut ŞENTÜRK

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.)

class Product <ActiveRecord::Base
    validates_presence_of :title, :description, :image_url
end

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 2 Yorum » yapılmış.

Archives Posts

Ruby ile Reflection

February 12th, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) Yorum yok » yapılmış.

Archives Posts

Ruby ile GUI Toolkits (Tk)

February 7th, 2007 by Tankut ŞENTÜRK

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...

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 5 Yorum » yapılmış.

Archives Posts

Ruby ile GUI Toolkits (Gtk)

February 2nd, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 2 Yorum » yapılmış.

Archives Posts

Ruby ile GUI Toolkits (wxRuby)

January 29th, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 2 Yorum » yapılmış.

Archives Posts

Ruby ile GUI Toolkits - 2 (Güncellendi)

January 23rd, 2007 by Tankut ŞENTÜRK

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 :).
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 2 Yorum » yapılmış.

Archives Posts

Ruby ile GUI Toolkits - 1

January 21st, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 1 Yorum » yapılmış.

Archives Posts

Ruby ile Thread İşlemleri

January 13th, 2007 by Tankut ŞENTÜRK

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 :).
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 1 Yorum » yapılmış.

Archives Posts

Ruby ile POP3 ve SMTP

January 13th, 2007 by Tankut ŞENTÜRK

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.
Yazının devamı için »

Bağlı olduğu kategoriler; Bilgisayar, Ruby (Ruby on Rails) 3 Yorum » yapılmış.

« Önceki Yazılar Sonraki Yazılar »