Sayfa: 1 2 3 »

Yaklaşık onbeş-yirmi gündür bir-iki yazılım üzerinde çalışıyorum. Bu süre zarfında ister istemez kendimi geliştirmeye ayırdığım vakit oldukça kısaldı. Hatta kalmamaya yüz tuttu.

100_0768 Burada kendime ayırdığım vakitten kastım sosyal aktiviteler değil. Her yoğunlukta sosyal-çalışma dışı aktivitilere zaman ayırmaya çalışıyorum. Şöyle ki; gündüz çalışma, gece çalışma dışı vaktidir. Çalışmamı özel durumlar hariç her gün belli bir vakitte kesmek perfonmans artışı sağlıyor. Bu elbette ayrı bir konu.

Gelelim kendime ayırdığım vakitten kastıma; uzun zamandır ar-ge yapamıyor, yeniliklerin bir çoğunu takip etsem bile deneyemiyorum. Aslında farkettim ki, bu işlemler için insanın tüm çalışma saatlerini harcaması gerekiyor. Örneğin takip ettiğim onlarca sitede yer alan yeni yazıları henüz okuyamadım. Bunları hergün sistematik şekilde okumaya kalksam bile en az 2-3 saat geçiyor. İçindeki örnekleri denemeye de kalkarsam en az 2-3 saat daha geçecek. Normal bir çalışma düzeninde azami 12 saat ayırdığımızı düşünürsek yarısını sırf bu işlere ayırmamız gerekiyor. Evet, bu yalnızca yeni teknolojileri takip etmek için geçecek olan süre.

Eğer bir de kendiniz yeni bir teknoloji üzerinde çalışıyorsanız piyasa işlerine vakit kalmamış oluyor. Özet şudur ki, çalışmak ile teknoloji takibi aynı anda yürümüyor, yürüse bile verimli olamıyor. Bu verimli olamama durumu hem çalışmaya hem ar-ge’ye ait elbette.

ruby-logonBu yazı daha önce de yazılabilirdi yalnız kıvılcımı ateşleyen Ruby 1.9′un developer sürümü çıkması oldu. Birçok yenilik ve perfonmas artışı içeren bu yeni sürümü henüz test edemedim, sizler test edip yorumlarınızı belirtebilirsiniz. 

Kıvılcımı ateşleyen diğer bir olayda Rails 2.0 hakkında uzun zamandır yazmayı düşünüp yazamadığım inceleme yazısı oldu. Ve bir diğer olayda CodeIgniter Framework’u hakkında yazmayı düşündüğüm yazı. Liste daha da uzamadan yazıyı bitirmek sanırım en iyisi (:

İyi çalışmalar.

Heroku.com beta incelemesi için başvuru yapmış idim, bugün bir davetiye geldi. Bende biraz inceleme fırsatı buldum. Güzel düşünülmüş bir sistem.

Heroku.com nedir?

Heroku.com bize diyor ki;

Daha önceden geliştirmiş olduğunuz rails uygulamanızı heroku.com’a aktarın ya da heroku.com üzerinden yeni bir rails uygulaması başlatın (kendi içinde editörü, generate, consol, migrate, veritabanı ve diğer çoğu olay mevcut) herhangi bir gönderim ve ayar işlemi yapmadan uygulamanız anında kullanılabilir hale gelsin.

railsconsole

Güzel bir düşünce aynı zamanda güzel bir uygulama ile de birleştirilmiş.

herokurenklendirme

Renklendirme eşliğinde, aynı zamanda uygulamayı düzenleyebilecek kullanıcıları belirtirek takım çalışması da yapabiliyorsunuz.

 

heroku.com güzel düşünülmüş ilginç bir sistem. Rails geliştiricileri için faydalı olacak bir sisteme benziyor. Günlüğüne de buradan ulaşabilirsiniz.

Facebook büyüdükçe büyüyor. Zamanla da büyüyecek gibi duruyor. Bu büyümeyi benim incelemem alanım dışında olduğu için sebeplerini araştırmayı pazarlamacılara bırakıyorum. Fakat geliştirici gözüyle Facebook’ta dikkat ettiğim en önemli olay “gerçekten güzel düşünülmüş bir altyapısı” olması. Özellikle “application” kavramı iyi düşünülmüş.

Yakında sunmayı planladığımız projemiz için ayrıca bir Facebook uygulaması da geliştirecektik. Öncesinde bir bilgi birikimim olması açısında Facebook Applications yapısına biraz göz attım.

Facebook java ve php geliştiricileri için official kütüphaneleri sunuyor. Özellikle PHP kütüphanesine ait bir çok örnek bulabilirsiniz.

Fakat, Kimyapacak.Com’u Ruby diliyle geliştirdiğim için RFacebook kütüphanesi benim ilgi alanıma giriyordu. RFacebook, “api”yi kullanan “api” olarak düşünülebilir. Alt yapısında “Hpricot” kullanıyor. RFacebook’un da en önemli kozu ruby “method_missing” fonksiyonu. Api’ye methodları bu şekilde iletiyor. Yani RDoc dökümantasyonunda Facebook fonksiyonlarının çoğunu görememiz bu yüzden, kullanamadığımızdan değil.

RFacebook’u gem paketi ile kurabiliyoruz:

sudo gem install rfacebook

Rails uygulamaları için; uygulamamızı kodlayıp en son bunu facebook’a entegre ediyoruz. Buradaki anahtar kelime “session” oluşturumu için :require_facebook_install | :require_facebook_login .

burhan_app.jpgKendime örnek bir uygulama seçerek ve “Burhan Altıntop” grubunun üye sayısını da göz önüne alarak Burhan Altıntop replikleri uygulaması geliştirdim. Bunun bir sebebi de fazla karmaşık bir uygulama olmamasıydı. Aslında böyle gibi dursa da işin en “zor” kısmından başladığımı sonradan anladım. Zira, facebook her sayfayı bellekte tutuyor. Özellikle profil sayfalarına büyük önem veriyor bu konuda. Yani “profil sayfasını” değiştirmek için facebook’a bilgi göndermek gerekiyor. Durum böyle olunca ve uygulama da sadece sözleri gösterince herhangi bir istek kullanıcılardan gelmemiş oluyor. Bunu çözmek için “Infinite session keys” kullanmak kaçınılmaz oluyor. Kullanıcı bir işlem yaptığı zaman (örn. uygulamayı kurmak) bunu veritabanına kaydetip daha sonra her kullanıcı için bu anahtarla giriş yapıp setFBML’yi kullanmak lazım oluyor.

Aslında tüm sayfalarda aynı içerik yer alacaksa bunun için FBML etiketi olan fb:ref düşünülmüş. Bu şekilde bir “handle” yahut “url” belirterek tüm heryeri güncelleyebiliyoruz fb:ref’e sahip olan. Fakat böyle olunca her profilde aynı içerik gösterilmiş oluyor.

Bir diğer değişken söz üretme tekniği ise uygulamayı yazdıktan sonra aklıma gelen bir sistem. Yine fb:random ile fb:ref’i birbirine katarak her sayfa güncellemesinde bir söz çıkartılabilir. Veritabanına yeni söz eklendiği zaman fb:ref’i güncellemek yeterli olacaktır.

Özet geçmek gerekirse, Facebook Applications, güzel bir yapıya sahip. İlk izlenimden elde edindiğim en önemli husus ve forumlarda da gördüğüm kadarıyla “profil kutuları” güncellenmesi. Güncelleme için mutlaka yazılıma istekte bulunulması lazım. Tetiklemeden güncellemek için (örneğin cron olayları için) infinite session’ları veritabanına kaydetmek lazım.
Bunun dışında normal bir uygulamayı facebook’a aktarmak inanılmaz bir yük değil. Özellikle kullanıcılara özel içerikli sistemlerde tabloda ekstradan “fb_user_id”yi tutan bir alan olursa sorgulamalarda user_id yerine fb_user_id ile çoğu kez işi götürebilirsiniz. (fb_user_id kullanıcının facebook id’si)

Bir de uygulamanız için iyi bir tasarımcı bulmayı ihmal etmeyin derim ben. Yazılımın tüm baloncuk hakları Sinan’a ait (:

WxRuby İle İlgili    13/11/07

vakit.rb    13/11/07

Namazvakti.com, güzel bir görünümle namaz vakitlerini kullanıcıya “online” olarak sunuyor. Aynı zamanda belirtilen şehire ait “xml” dosyasını da veriyor. Oldukça güzel bir sistem.

Bazen internet bağlantımın olmadığı zamanlar (kablomu çektiğim zamanlar) oluyor. Bu gibi zamanlarda hemen xml dosyasından günün tarihini okuyup ekrana yazdıran ufak bir araç geliştirdim. Kullanabilmek için namazvakti.com sitesinden şehrinizi arattırıp “yıllık xml” dosyasını vakit.rb’nin bulunduğu klasöre kaydetmeniz gerekiyor.

Diyanet.gov.tr ile namazvakti.com hesapları arasında oynamalar var. Bir kaç kaydı inceleyerek bunlar arasında farkın değerlerini çıkarttım. Yani sonuçları diyanet.gov.tr hesabına göre (arada yine bir-iki dakika oynama olabilir) görüyoruz.

Bursa için XML dosyası
İstanbul için XML dosyası

Kaynak kodlar

Kaynak Kod: vakit.rb
# şehrinize ait namazvakti.com xml verilerini offline olarak
# aynı klasöre "vakit.xml" dosya adı ile kayıt ediniz..
#
# murat çeliker, murat.cekiker@gmail.com
# http://www.ikinoktayazilim.com/wordpress/
#
# kasım 12, 2007
#
 
# namazvakti.com verilerini diyanet saatine göre düzenler
# birkaç veri incelenerek aradaki farklar tespit edilmiştir
#
def d(vakit, ekleme)
 
vakit = vakit.split(':')
 
saat, dakika = vakit[0].to_i, vakit[1].to_i + ekleme
 
carpim = 1
 
carpim = -1 if dakika < 0
 
saat, dakika = saat + 1 * carpim, dakika + -60 * carpim if dakika >= 60 or dakika < 0
 
"#{saat}:#{dakika}"
end
 
require 'rexml/document'
include REXML
 
bugun = Time.now.yday * 2 
bugun += 1 if (bugun % 2) == 0
vakitler = Document.new(File.new('vakit.xml')).root.to_a[bugun].text.split(/\t/)
 
puts "----- gunun namaz vakitleri ----- \n\n"
puts "  imsak: #{d(vakitler[0], 15)} \n  gunes: #{vakitler[2]} \n  oglen: #{d(vakitler[5], -4)} \n ikindi: #{d(vakitler[6], -6)} \n  aksam: #{vakitler[9]} \n  yatsi: #{d(vakitler[11], -9)} \n"
puts "\n\ncikmak icin bir tusa basiniz... \n"
gets

Faydalı olması ümidiyle.

Rails’in 2.0 sürümüne yaklaşırken Preview1 den sonra RC1 ara sürümü gem depolarında yerini aldı. Rails 2.0 dan önceki son ara sürüm olması muhtemel olan RC1′e yükseltmeyi iki şekilde yapabilirsiniz.

1. Yol: Sistemi Yükseltme

Gem paketini kaynaktan yükleyerek sisteminizdeki Rails sürümünü yükseltebilirsiniz.

gem install rails --source http://gems.rubyonrails.org

2. Yol: Uygulama için Rails kurulumu

Rails kaynak kodunu uygulamanız içine (vendor/rails) gömerek sistem sürümünü yükseltmeden uygulamanız için RC1′e geçebilirsiniz.
SVN deposunda RC1 “rel_2-0-0_RC1″ etiketi ile yer alıyor.

rake rails:freeze:edge TAG=rel_2-0-0_PR

komutu ile vendor klasörüne kopyalama yapabilirsiniz.

Aklımda Rails 2.0 hakkında daha kapsamlı bir yazı yazmak var, biraz vakit ve güç bulunca inşallah.

Ufak bir bilgi olması açısından;
Rails 2.0 a geçiş için dikkat edilecek en önemli husus “DEPRECATION WARNING” uyarını dikkate almak. Bu uyarıları development.log dosyalarından takip edebilirsiniz.

Tail Ace” kullanarak Deprecation Warning yazısını renklendirerek takip işlemini biraz daha kolaya indirgeyebilirsiniz. Aynı şekilde “Tail For Win32” de bu konuda oldukça yararlı.

Bunun dışındaki gelişmeler sistem altyapısı ile ilgili gelişmeleri ve yeni özellikleri içeriyor. Bunları zamanla yazılımıza entegre ederek daha güçlü bir yazılıma sahip olabiliriz.

İyi çalışmalar.

RubyConf 2007    01/11/07

2-4 Kasım arasında RubyConf düzenleniyor.

Konferans programı mükemmel duruyor.

Seneye katılmak üzere karar verdim inşallah aksilik olmazsa bir sene sonra bu zamanlarda “konferans ardından” konulu girdiyi okuyor olabilirsiniz. Ümidimiz bu yönde.

Ülkemizden bu sene konferansa katılan var mı acaba?

cevirgec.png

Bundan bi’ kaç hafta önce yazmıştım çevirgeç‘i anca atabildim internete.

Nedir?

Çevirgeç, belirtilen klasörlerdeki resimleri belirtilen sürede duvar kağıdı yapar. Tüm resimler duvar kağıdı olana kadar aynı ada sahip dosya bir daha duvar kağıdı olmaz. Süre ise saniye cinsinden belirtilir. Aynı zamanda win32 servisi olduğu için bellekte fazla harcama yapmaz.

Neden?

Bu tür bir çok yazılım piyasada mevcut. Bunların bir çoğunda sonraki resime basınca aynı resim gelebiliyor. Ve yine bir çoğunda süre ayarı için belirli dakikaların altına inme/üstüne çıkma olayları yoktu. Ve yine bir çoğu win32 servisi değildi. Ve yine, …

Aynı şekilde çevirgeç’in eksiklerini konu alan “ve ama” ile başlayan çokca satır da gelebilir.
Ve ama, çevirgeçin ayar penceresi yok, ayarlaması zor.
Ve ama, çevirgeç imagemagick convert.exe’ye bağımlı.
Ve ama, çevirgeçin kontrolü konsoldan ya da “hizmetlerden” yapılmak zorunda.
gibi…

Kurulum

Çevirgeçin kurulumu oldukça kolay ama ayar yapması biraz zor. Ayar programını bir sonraki sürüm için (eğer olursa) yazmayı düşünüyorum. Şimdilik “yaml” dosyasını düzenleyerek bu işlemi yapabilirsiniz.

  • gem install cevirgec komutu ile çevirgeçi kurabiliyoruz.
  • Bu sıralar Rubyforge yansılarında sorun var. Gem paketlerini listelemede sorun oluşuyor. Bu nedenle bu adresten dosyayı bilgisayarınıza kaydettikten sonra konsolda kayıt edilen klasöre girerek yukarıdaki komutu verebilirsiniz.
  • Çevirgeçi hizmetlere kurmak için komut istemcisinde: cevirgec kurulum komutunu verebilirsiniz.
  • Kurulum işlemi bu kadar.

Çevirgeç Ayarları

Çevirgeçi kurduktan sonra ayar yapmak için sırasıyla aşağıdaki yordamları izleyebilirsiniz.

  • Ruby’nin kurulu olduğu dizine girin. (Gezginden)
  • Daha sonra \lib\ruby\gems\1.8\gems\cevirgec-0.1-mswin32\lib\cevirgec klasörüne ulaşın.
  • ayarlar.yaml dosyasını açıp düzenleme yapabilirsiniz.
  • ImageMagick convert.exe programını buradan yükleyebilirsiniz. Ayarlar.yaml dosyasında yerini yüklediğiniz klasör olarak belirtmeyi unutmayınız.

Hmm, acilen ayar programı lazım, satırları yazarken bile yoruyor insanı.

Çalıştırma silme, durdurma

komut istemcisinde:
cevirgec kurulum | baslat | durdur | sil | araver | devam | durum
kurulum: cevirgec’i kurar. baslat: çalışmaya başlatır durdur: çalışmasını durdurur
sil: servislerden çevirgeçi siler. araver: çevirgeçin çalışmasına araverir. devam: yeniden çalışmaya başlatır durum: şu an ne durumdaya cevap verir.

Son;

Program sadece win32 sistemlerde çalışıyor. Ayrıca win32utils paketinden bir kaç bağımlılık bulunuyor. Gem otomatik olarak bunlara dair “kurmak ister misiniz?” sorusu soracaktır. “y” ile devam edebilirsiniz.

Yeni Ruby Logosu    31/10/07

ruby-logon.jpg

Ruby Assocation, Ruby logosu yarışması düzenlemişti.
Yarışmadan çıkan sonuca göre Ruby’nin yeni logusu yanda gözüken resmimiz.

Güzel olmuş yeni logo, önceki logonun biraz elden geçirilip kalıba sokulmuş hali gibi.

Bu aralar düz satırların yer aldığı dosyalara çok bakmaktan benim grafiksel estetik anlayışımda ciddi sorunlar oluşmuş olabilir. Grafik üstadlarımız yorumlasa daha iyi olacak sanırım.

 

Bundan önceki yazımda JRuby ile Zemberek kütüphanesinin nasıl kullanılabileceğini basitçe görmüştük. Yazıda yer alan örneklere göz attığımızda Zemberek kütüphanesini kullanırken Java’da izlenen yolu birebir izledik.

Yani bir kelimeye ait önerileri bulmak için şu kodu kullandık.

oneriler = zembo.oner(yazi)
oneriler.each_with_index do |oneri, i|
  ...
  ...

Oysa bu kod Ruby programcıları için pek de güzel sayılmayacaktır.
Şöyle bir erişimin daha güzel olacağı aşikar.

# Meraba önerilerini döndürür
oneriler = "Meraba".oneriler
 
# Meraba'nın yazımı doğru mu?
puts "Meraba".yazim_dogru?
 
# Merhaba'yı heceler, heceleri kullanıma sunar
"Merhaba".hecele { |hece| print "#{hece}-" }

Bunları yapmak için öncelikle ufak bir sınıf ve modül yazmalı daha sonra bunu String sınıfına dahil etmeliyiz.

ZemberekJRuby sınıfı

# Basit Zemberek JRuby Kullanımı
#
# Murat ÇELİKER, murat.celiker@gmail.com
# http://ikinoktayazilim.com/wordpress/
#
 
require 'java'
require 'singleton'
 
# Basit Zemberek Ayrıştırıcımız
# Yalnızca bazı methodlar yer almaktadır
#
class ZemberekJRuby
 
 
include Singleton
 
 
# zemberek kütüphanemizi dahil edelim
 
require 'zemberek-tum-2.0.jar'
 
 
# zemberek sınıflarımızı dahil edelim
 
include_class 'net.zemberek.erisim.Zemberek'
 
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'
 
 
# bir tane zemberek oluşturalım
 
def initialize
   
@zembo = Zemberek.new(TurkiyeTurkcesi.new)
 
end
 
 
# kelimeDenetle çevirisi
 
def kelime_denetle(kelime)
   
@zembo.kelimeDenetle(kelime)
 
end
 
 
# hecele çevirisi
 
def kelime_hecele(kelime)
   
@zembo.hecele(kelime)
 
end
 
 
# oner çevirisi
 
def kelime_oner(kelime)
   
@zembo.oner(kelime)
 
end
 
end

Gördüğünüz gibi basit bir Zemberek JRuby sınıfı yazdık. Singleton kullanarak yalnızca bir kez oluşturulmasını da sağladık. Şimdi artık modülümüzü de yazıp String sınıfına dahil edip daha bi rubysel kullanım yapabiliriz.

TurkceJRb::Katar

# Katar değiştiricimiz
#
# örn: "deneme".denetle
#
module TurkceJRb
 
 
module Katar
   
   
def yazim_dogru?
     
ZemberekJRuby.instance.kelime_denetle(self)
   
end
 
   
def hecele
     
heceler = ZemberekJRuby.instance.kelime_hecele(self)
     
if block_given?
       
heceler.each { |hece| yield(hece) }
     
else
       
return heceler
     
end
   
end
 
   
def oneriler
       
oneri_listesi = ZemberekJRuby.instance.kelime_oner(self)
       
if block_given?
       
oneri_listesi.each { |oneri| yield(oneri) }
     
else
       
return oneri_listesi
     
end
   
end
 
 
end
 
end

Katar sınıfını dahil edelim

# String sınıfına eklemeler yapalım
#
class String
 
include TurkceJRb::Katar
end

Yeni Örneğimiz

İlk yazıdaki örneğimiz artık şu hale geldi:

# örneğimizi katar sınıfı methodlarına çevirelim
#
# String.oneriler , String.denetle gibi
#
yazi = ARGV.shift || 'meraba'
 
if yazi.yazim_dogru?
 
puts "#{yazi} dogru yazilmis"
 
yazi.hecele { |hece| print "#{hece}-" }
else
 
oneriler = yazi.oneriler
 
 
# önerilerimizi ekrana yazdıralım
 
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
 
oneriler.each_with_index do |oneri, i|
   
puts "Oneri #{i+1}: #{oneri}"
 
end 
 
 
# yahut
 
yazi.oneriler { |oneri| puts "#{oneri}" }
 
 
end

Dosyanın tamamına ait kaynak kod yazının devamında yer almaktadır.

Devamını Okumak İstiyorum

zemberek-jruby-nb.png

Zemberek ülkemizde yazılım adına yapılan en önemli çalışmalardan biridir bana göre. Eğer Pardus ya da OpenOffice kullandıysanız zemberek’in ne denli düzgün çalıştığına şahit olmuşsunuzdur.

Bu yazıda, JRuby[1] üzerinden Zemberek kütüphanelerine erişim konusuna değineceğim.
Sisteminizde JRuby’nin kurulu olduğu varsayılmıştır.
[1] JRuby %100 java ile yazılmış Ruby yorumlayıcısıdır.

Zemberek & JRuby

Öncelikle Zemberek ile çalışabilmek için Zemberek kütüphanelerine sahip olmamız gerekmektedir. Bu kütüphaneye ait dosyaları buradan bulabilir ya da zembereğin tüm modüllerini tek jar dosyası altında toplayan zemberek-tum-2.0.jar dosyasını indirebilirsiniz.

Bu dosyayı Java’nın hali hazırda bulabileceği bir yere kaydedebilir ya da oluşturacağımız dosya ile aynı yere kaydedebilirsiniz. (JRuby’ye require ile kolayca belirtmek için)

Dosyamızı kaydettikten sonra editörümüzü açıp zemberek kullanımına geçebiliriz.

zem.rb

İlk önce JRuby’ye zemberek kütüphanesini dahil etmesini söyleyelim.

require 'java'
 
# zemberek kütüphanemizi dahil edelim
require 'zemberek-tum-2.0.jar'

Zemberek kütüphanesinde kullanacağımız sınıfları projemize dahil edelim.

include_class 'net.zemberek.erisim.Zemberek'
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'

Zemberek için nesnemizi oluşturalım

zembo = Zemberek.new(TurkiyeTurkcesi.new)

Artık şöyle bir kullanım yapabiliriz.

# yazı belirtelim
yazi = ARGV.shift || 'meraba'
 
# belirtlen yazı için öneriler isteyelim
oneriler = zembo.oner(yazi)
 
# önerilerimizi ekrana yazdıralım
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
oneriler.each_with_index do |oneri, i|
 
puts "Oneri #{i+1}: #{oneri}"
end

Yazının devamında dosyaya ait kaynak kodları bulabilirsiniz.

Devamını Okumak İstiyorum

30 Ağustos’ta yayımlanmış bir yazı, diğer editörlerle de ufak bir karşılaştırma yapılmış. Şimdiye kadar gözden kaçmış bir inceleme olmasına üzüldüm.

Buradan ulaşılabilir: Netbeans THE best ruby on rails IDE

TurkceRb projesinin yeni sürümünü yakında sunacağım inşallah. Gem paketini kurduktan sonra require “turkce” require “turkce_rails” diyerek kullanabileceğiz, ayrıca rails ile ruby modülleri de ayrılacak. Konu hakkında daha detaylı girdiyi gem paketini oluşturduktan sonra (süresi belli değil henüz) detaylıca yazacağım inşallah.

Yeni sürümü beklemeden “yaziya_cevir” fonksiyonunu siteden paylaşmayı uygun gördüm.

yaziya_cevir_resim.png

yaziya_cevir

Verilen sayıyı yazıya çeviren bir fonksiyon. Örnek olarak

puts 11221312755123.yaziya_cevir
=>
OnBirTrilyonİkiYüzYirmiBirMilyarÜçYüzOnİkiMilyonYediYüzElliBeşBinYüzYirmiÜç

Yazının devamında kaynak kodlarını bulabilirsiniz.

Devamını Okumak İstiyorum

rehber.png

Rehber, Ruby kütüphanelerini ve bu kütüphanelere ait fonksiyonları örnekler eşliğinde açıklamayı hedeflemektedir.

Rehber-ül Ruby, Ruby Rehberi, Rehber ya da daha başka bir isme sahip olabilecek bu tür bir sistem çalışmasına başladım. İlk deneme sürümünü inceleyip yorumlarınızla ve göndereceklerinizle katkıda bulunursanız sevinirim.

Şu an ulaştığınız sürümünde yalnızca olayın örneği olması açısından bi’ kaç sınıfa ait bi’ kaç fonksiyon ekledim. Sistemin ilk incelenmesinden sonra sizlerden gelecek yönergeler eşliğinde kararlı sürümü çıkartıp verileri de tam olarak sisteme geçmeye başlayacağım inşallah.

Aklımda olan kesin olarak eklenecek özellikler:

  • Arama mekanizması (modül, sınıf, fonksiyon, örnek)
  • Son eklenenler (RSS)

Şunların eklenip eklenmemesi konusunda yorumlarınıza ihtiyacım var:

  • Yüklenebilir örnekler / modüller / sınıflar (Pdf, .rb, Html)
  • E-Postanıza her gün bir modül/sınıf açıklaması

Gönderdiğiniz/göndereceğiniz modüller,sınıflar,fonksiyonlar ve örnekler ve ayrıca yorumlar için şimdiden teşekkürlerimizi sunuyoruz.

Veritabanı yordamları, geliştirilen programdan sanki ayrı bir olay imişcesine yan kısımda tutulmuş, programa veritabansal olayları yaptırmak için çoğunlukla farklı farklı kütüphaneler kullanmak zorunda kalmıştık. ORM’ler bu konuda bir derece ilerleme kaydetselerde sorgulama olayları için yine ayrı bir dil olan SQL’e muhtaç oluyorduk.

Ambition Ruby dili için bunu ortadan kaldırmayı hedefleyen bi’ kaç kütüphaneden biri.

Ben artık şöyle bir sorgulama yapabiliyorum.

Giris.select { |g| g.kisa_baslik == "ornek-bir-yazi" }

Ya da şöyle bir sorgulama

>> Giris.sort_by { |g| [ g.kisa_baslik ] }.to_sql
=>
"SELECT * FROM girisler ORDER BY girisler.kisa_baslik"

Yahut şöyle;

> Giris.select { |g| g.aktif == 'true' }.size
=>
3
 
>>
Giris.select { |g| g.aktif == true }.sort_by(&:created_at).to_sql
=>
"SELECT * FROM girisler WHERE girisler.`aktif` = 1 ORDER BY girisler.created_at"

Enumerable sınıfı dahil olduğu için şöyle bir yazdırma tekniği kullanabiliyorum.

>> Giris.select { |g| g.aktif == true }.sort_by(&:created_at).each do |yazi|
?>
puts yazi.baslik
>>
end

Henüz eksiklikleri olmasına rağmen yakın bir zamanda hemen hemen tüm sorgulamalarımızı yapabileceğimiz hale geleceğine inanıyorum.

Bağlantılar

Ambition Readme
Blog girdisi

| Sonraki Sayfa »

Sayfada yayımlanan yazılar aksi belirtmedildiği sürece Murat Arif Çeliker'e aittir. Yorumlar, yorumu yapan kullanıcıların kendi görüşleridir.
açılış - deneyhane - tasarılar - hakkımda - iletişim -

Sitede altyapı olarak Wordpress kullanılmıştır.