Sayfa: « 1 2 3 »

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

Case, If Söz Dizimi    28/08/07

durum = 1
 
# if kullanımı
 
if durum == 0
 
puts "Hata var!"
elsif durum == 1
 
puts "iÅŸlem baÅŸarılı"
elsif durum == 2
 
puts "baÅŸka bir mesaj"
elsif durum == 3
 
# falan
end
 
# case kullanımı
 
case durum
 
when 0
   
puts "hata var"
 
when 1
   
puts "iÅŸlem baÅŸarılı"
end

ipucu

Eğer bir fonksiyondan dönen integer değere göre ekrana mesaj yazdırmak isteniliyorsa en kısa yol şu olabilir:

  1. # örnek bir fonksiyon
  2. def durum(kosul)
  3.   kosul
  4. end
  5.  
  6. mesajlar = ["hata var", "iÅŸlem baÅŸarılı", "mesaj üç", "mesaj dört"]
  7. puts mesajlar[durum(0)]

Sayfaya kalıcı baÄŸlantı adresleri için verilecek stringlerde temizlik yapmak lazım oluyor. Bunu yazmıştım “Muhtıra” için, onun çıkacağı yok en azından içindeki güzel kodları paylaÅŸayım.

def kisa_ceviri(isim)
   
isim.downcase!
    {
'İ' => 'i', 'Äž' => 'g', 'Ü' => 'u', 'Åž' => 's', 'Ç' => 'c', 'Ö' => 'o',
     
'ÄŸ' => 'g', 'ü' => 'u', 'ÅŸ' => 's', 'ö' => 'o', 'ç' => 'c', 'ı' => 'i'}.each_pair { |a,b| isim.gsub!(a,b) }
   
isim.gsub(/([^ a-zA-Z0-9_-]+)/, '').tr(' ', '-').gsub(/--/, '-').gsub(/-$/, '') 
 
end

irb(main):046:0> kisa_ceviri(”Permalink İçin Çeviri, String Temizleyici Falan.”)
=> “permalink-icin-ceviri-string-temizleyici-falan

Bu kodu alıp Ruby’nin nimetlerinden faydalanalım ve şöyle yapalım.

NOT: Bu kod 18/08/2008 de güncellenmiştr. downcase! ya da diğer selfi değiştiren fonksiyonlarda değişen bir yer yoksa sonuç olarak nil döndürmektedir. bu nedenle downcase! den dönen bilgi direk str değişkenine aktarılmamıştır.

class String
 
def kisa_ceviri
   
self.downcase!
   
str = self
    {
'İ' => 'i', 'Äž' => 'g', 'Ü' => 'u', 'Åž' => 's', 'Ç' => 'c', 'Ö' => 'o',
     
'ÄŸ' => 'g', 'ü' => 'u', 'ÅŸ' => 's', 'ö' => 'o', 'ç' => 'c', 'ı' => 'i'}.each_pair { |a,b| str.gsub!(a,b) }
   
str.gsub(/([^ a-zA-Z0-9_-]+)/, '').tr(' ', '-').gsub(/--/, '-').gsub(/-$/, '') 
 
end
end

irb(main):046:0> “Permalink İçin Çeviri, String Temizleyici Falan.”.kisa_ceviri
=> “permalink-icin-ceviri-string-temizleyici-falan

Ruby dilinin nimetlerinden yararlanarak Rails’in tablo iliÅŸkilendirmelerini belirtmek için Türkçe makrolar oluÅŸturdum. has_many için bir_cok ve belongs_to için suna_bagli.

Yani artık şöyle bir ilişkilendirme yapabiliriz.

class Soru < ActiveRecord::Base
 
bir_cok :cevap
 
suna_bagli :sinav
end

DiÄŸer iliÅŸkilendirmeleri kendiniz oluÅŸturabilirsiniz.

# Türkçe Tablo İlişkilendirmeleri
# muarifer , ikinoktayazilim.com/wordpress
module ActiveRecord::Associations::ClassMethods
 
alias :bir_cok :has_many
 
alias :suna_bagli :belongs_to
end

Nasıl Çalışıyor?
Anahtar Kelime: ruby alias

NetBeans’ın de yeni sürümünde (6.0) “Ruby” desteÄ?i vermesiyle daha da kızıÅ?acaÄ?a benzeyen Ruby Editörü savaÅ?larında Å?imdilik Eclipse tabanlı RadRails önde gibi dursa da NetBeans’in özellikleri & sunumları beni oldukça etkiledi. Netbeans’in “geliÅ?tirim sürümü”nü inceledim lakin henüz “kullanılabilir” bir mükemmeliyete ulaÅ?mamıÅ?. Bu nedenle aramızın soÄ?umaması için kendisini incelememe kararı aldım.

Ben inceleme yapana kadar buradan NetBeans, Eclipse (RadRails) ve IntelliJ Idea geliÅ?tirme ortamlarının Ruby destekleri hakkında fikir sahibi olabilir ayrıca karÅ?ılaÅ?tırmalarına bakabilirsiniz.

Ruby’nin 1.8.6 numaralı sürümü & Rails’in 1.2.3 numaralı sürümü yayımlandı.

Güncellemeler yararlıdır.

Ruby On Rails ile uygulama geliÅ?tirirken mutlaka kullanılması gereken “muhteÅ?em” özelliklerinden biridir ActiveRecord’un alansal hata kontrol mekanizmaları. Lakin, varsayılan olarak hatalar İngilizce’dir. Bunları TürkçeleÅ?tirmek için ActiveRecord modülündeki Errors sınıfında bulunan @@default_error_messages “Hash” deÄ?iÅ?keni düzenlenmelidir.

Türkçe Hata Mesajları

Varsayılan durumlarda kullanılan mesajları, Ruby sınıfının tarihsel deÄ?iÅ?kenlerini ayrıca hata penceresi mesajlarını TürkçeleÅ?tiren turkce.rb dosyasını kullanıma sunuyorum, buyrun.

Kullanmak için tasarınızda herhangi bir yere kaydedip daha sonra “environment.rb” dosyasına bu dosyayı ekleyebilirsiniz.

Ã?rneÄ?in; app klasöründe turkce.rb adıyla kaydederseniz environment.rb dosyasına

require "#{RAILS_ROOT}/app/turkce"

eklemeniz gerekli ayarları yapacaktır.

Yazının devamında gerekli dosya içeriÄ?ini bulabilirsiniz.

Devamını Okumak İstiyorum

M. Ozan Hazer günlüÄ?ünde Ruby’nin dolayısıyla Ruby On Rails’in performansının bu dili kullanıp/kullanmama konusunda ne kadar etkili olacaÄ?ına dair güzel bir yazı yazmıÅ?. (Ã?zerinden on gün geçmesine raÄ?men henüz paylaÅ?abiliyorum.)

Ã?zet olarak “Ã?oÄ?unlukla bir yerden kazanırsanız diÄ?er bir yerden kaybedersiniz”i Ruby On Rails ve diÄ?er altyapılar için ana fikir olarak seçerek “Programlamada da iÅ?ini ne kadar kolaylaÅ?tırırsanız o kadar performans kaybedersiniz” Å?eklinde yazılım konularında kullanmak üzere yazıyor.

Yazıya tamamıyla katıldıÄ?ımı belirtiyor, yazılım geliÅ?tiricinin yazılım yazarken zevk alması gerektiÄ?ini düÅ?ünüyorum.

Ruby On Rails İle Sunucuya Dosya Gönderimleri

GiriÅ?

Ruby On Rails altyapısında sunucuya dosya gönderme iÅ?lemi birkaç aÅ?amada gerçekleÅ?tirilebilir. Yazının sonunda kullanıcılardan resim alan, aldıÄ?ı bu resmi ve ufak boyutlu görüntüsünü (thumbnail) kaydeden ufak bir yazılım geliÅ?tirmiÅ? olacaÄ?ız.

Kullanıcılardan dosya almak için “form”umuzu “multipart” olarak tanımlamalıyız. Bunun için form oluÅ?turma etiketimize “:multipart => true” argümanını yollamak yeterli olacaktır.

Ã?rneÄ?i geliÅ?tirmek için kullanıcıya formu gösteren ekle fonksiyonu, formun gideceÄ?i kayit fonksiyonu ve resimleri ototomatik boyutlandırıp ve gerekli kaydetmeyi gerçekleÅ?tiren “private” Å?eklinde “resim_ekle” fonksiyonu kullanacaÄ?ız. Bunları aynı denetleyici içerisinde oluÅ?turmayı unutmayın - aynı denetleyici dıÅ?ında yapmak isterseniz formun gideceÄ?i noktayı deÄ?iÅ?tirmeniz gerektiÄ?ini unutmayın -

Formumuzun Tanımlanması

Ã?rnekte kullanmak üzere kullanıcıdan yalnızca dosya giriÅ?i yapmasını isteyen bir form tanımlayacaÄ?ız.
Bu ekran denetleyicinin “ekle” fonksiyonunda gözükecektir. Bunun içinde denetleyicide “ekle” isimli fonksiyon oluÅ?turuyoruz.

# denetleyici (controller) dosyamıza ekliyoruz
def ekle
end
 
# ekle.rhtml adı altında app/views/denetleyici klasörüne kaydediyoruz.
< %=
"<h2>#{flash[:notice]}" if flash[:notice] %>
< %=
form_tag({:action=>'kayit'}, :multipart => true) %>
< %=
file_field_tag 'resim' %>
< %=
submit_tag 'Ekle' %>
< %=
end_form_tag %>

Yukarıda belirtilen kodlarla kullanıcıya dosya giriÅ?i sunan form sayfası oluÅ?turduk. Form “kayit” sayfasına gidecektir. Kayıt sayfasında gelen bu dosyayı sunucumuza kayıt edeceÄ?iz.

Devamını Okumak İstiyorum

“CODE BLOCK” yapılı iÅ?levler oluÅ?turmak

Ã?nceki makalemizde “yapılar ve tekrarlayıcılar”ın genel kullanım türlerinden bahsetmiÅ?tik. Ã?rnek verirken Ruby tarafından bize sunulan kütüphaneleri ele almıÅ?tık. (Array.each gibi)
Bu makalede yapı kabul eden fonksiyonları kendimizin nasıl oluÅ?turacaÄ?ı üzerinde duracaÄ?ız.

Kendi oluÅ?turduÄ?umuz fonksiyona nasıl “kod yapıları” eklenebilir?

Kod yapısı kabul eden bir fonksiyon oluÅ?turmak için Ruby dili bize “yield” iÅ?levini sunar. Verilen kodun tekrarlanacaÄ?ı yere “yield” yazmak yeterlidir.

def calistir
 
puts "Ã?alıÅ?tırılıyor..."
 
# kod yapısını çalıÅ?tıralım
 
yield
 
puts "Bitti..."
end
 
calistir { puts "merhaba" }

Yukarıda belirtilen fonksiyon “yield” iÅ?levinde verilen kod yapısını tekrar edecektir. Ã?ncesinde ekrana “Ã?alıÅ?tırılıyor…” yazacak yapılan kod tekrarlandıÄ?ında “Bitti” yazacaktır.

block_given?

Devamını Okumak İstiyorum

1. KOD YAPILARI

Kod yapıları aslen bir fonksiyon olup, -kısaca- iÅ?lemden döndürülen sonuçları alarak bunları o an içerisinde iÅ?lemeye yarar. Bir fonksiyondan ayrıldıkları tek nokta çoÄ?u zaman isimlerinin olmayıÅ?ıdır. Ayrıca fonksiyona deÄ?er göndermek yerine dönen deÄ?eri/deÄ?erleri otomatik olarak yakalayıp, iÅ?leyebilir.

2. KOD YAPILARININ TANIMLANMASI

Ã?rnek olarak “Array” sınıfının “each” fonksiyonunda dönen deÄ?eri yakalayıp bu deÄ?er üzerinden iÅ?lem yapalım.

# Parantezsel Yazım
[1, 2, 3].each { |x| puts "DeÄ?er: #{x}" }
 
# Do-End Tarzı Yazım
[1, 2, 3].each do 
      |
x| puts "DeÄ?er: #{x}"
     
end

Ã?rnekte verilen “Array.each” incelendiÄ?inde döngü içerisinde tüm elemanları sırayla aktarıldıÄ?ı görülecektir. Yapı ile biz bu elemanı yakalayıp, onun üzerinden iÅ?lem yaptık.

Ã?rneÄ?i yapı kullanmadan yazmaya çalıÅ?alım:

Devamını Okumak İstiyorum

sitemap.rb verilen yerel dosya üzerinde yahut aÄ? sayfası üzerinde tüm baÄ?lantıları takip ederek (tabii sunucunuzda bulunanları ve gerekli görünenleri) kısayoldan sitemap.xml dosyası oluÅ?turmaya yarayan, oluÅ?an dosyayı bilgilerinizi girdiÄ?iniz taktirde sunucunuza yükleyebilen araçtır.

Tasarı sayfasından da gerekli bilgilere ulaÅ?abilirsiniz.

Svn hesabından geliÅ?meleri takip edebilirsiniz.
svn checkout svn://rubyforge.org/var/svn/sitemap-rb

Neler Yapabilir?

  • Verilen adresteki tüm baÄ?lantıları bulur. EÄ?er baÄ?lantı sunucunuz üzerinde ve belirlenen dosya formatlarının dıÅ?ında ise bunu listeye ekler.
  • OluÅ?turulan dosyayı sunucunuza yükleyebilir.
  • İÅ?ini yerine getirir!

Neler Yapamaz?

  • BaÄ?lantı bilgilerini el ile ayarlama yok. İkinci sürümde olma ihtimali %100.
  • Grafiksel bir arayüze sahip deÄ?il. İkinci sürümde olma ihtimali %100. (İlk “neler yapamaz”ın sebebi de grafiksel ekrandan yoksun oluÅ?u)

İlerisi İçin Tasarı GeliÅ?imi

Grafiksel arayüz eklenmesi ve hatalar var ise düzeltilmesi. Kodların genel bir incelenmesi.

Hata Olursa & Fikrim Varsa

Bunların sonraki sürümlerde yer alması/düzeltilmesi için yorum yazabilirsiniz.

sitemap.rb | sitemap.xml creator

sitemap.rb found all links - if it’s suitable - in local file or web site, then create sitemap.xml for you. if you agree, it’s send your sitemap.xml file to your server!

usage

if you want to use sitemap.rb, your system must have a ruby.
# create sitemap.xml from local file
ruby sitemap.rb index.html
# create sitemap.xml from web page
ruby sitemap.rb http://www.ikinoktayazilim.com/

download

downloadable files are in project page.

next versions?

Next version (probably 0.2) will have Graphical User Interface (gui). With new version you change every file unique properties. (like “how often updated?”)
Comments are welcome!

Derinlemesine ActiveRecord serisinin ilk bölümünde genel yapı itibariyle sistemin nasıl çalıÅ?tıÄ?ına deÄ?inmiÅ?tik. Bu bölümde ise sistem ile ilgili kullanılabilir bilgilere deÄ?ineceÄ?iz. Seride Ruby On Rails’e yönelmenin dıÅ?ında Ruby uygulamalarımızda da ActiveRecord’u nasıl kullanabilirizin cevabı da aranacaktır.

Makale Yol Haritası

  • ActiveRecord Nedir, Ne DeÄ?ildir?
  • DoÄ?ru Ayarlamalar Nedir? Nasıl Yapılır?
  • Tablo İliÅ?kilendirmeleri
    • has_one ile basit Yordamlar
    • has_many ile Basit Yordamlar
    • belongs_to ile Basit Yordamlar
    • has_one mı belongs_to mu?
  • KapanıÅ?

Devamını Okumak İstiyorum

“Ruby On Rails ile web uygulamaları geliÅ?tirmek için ne kadar Ruby bilinmeli?”

Ruby On Rails, Ruby diliyle yazılmıÅ? uygulama geliÅ?tirme altyapısıdır. Ruby On Rails, Ruby dilini kullanır, her Ruby On Rails uygulaması Ruby diliyle yazılır. RoR uygulamaları geliÅ?tirmek için bilinmesi gerekli olan Ruby kurallarına, söz dizimlerine dair genel bir giriÅ? yapacaÄ?ız. RoR öÄ?renirken mutlaka “api belgeleri”ni okumalı, Ruby’nin diziler, katarlar üzerindeki iÅ?lemlerini kavramalıyız.

Yazıda RoR içinde sıkça kullandıÄ?ımız genel Ruby söz dizimlerine ait bilgilerin ilk kısmı yer alıyor.

Belgeler

Katar, Dizi, Sayısal Sınıflarının Ve Genel Ruby Api Belgelendirmeleri

Ruby-core belgelendirmelerinden üzerinde sıkça iÅ?lem yapılacak sınıfları öÄ?renmek, belgelendirmelerinin el altında bulunması uygulama geliÅ?tirirken oldukça önemlidir.

RoR belgeleri

RoR uygulaması geliÅ?tirirken en sık baÅ?vurulan belgeler Api belgeleridir. “gem_servergem ile kurulan paketlerin RDoc belgelendirmelerini sunucuya açar, http://localhost:8808 adresinden belgelendirmelere ulaÅ?abiliriz.

Söz Dizimine Dair Genel Bilgiler

Fonksiyon Tanımlanması

Her ActionController üzerinde tanımlanan bir fonksiyon (private fonksiyonlar hariç) bir sayfa ifade etmektedir. Ã?rneÄ?in sayfa/index sayfa denetleyicisindeki “index” fonksiyonunu iÅ?ler. Bir fonksiyon Å?u Å?ekilde tanımlanır:

  1. def fonksiyon(arguman1, arguman2, .., argumann)
  2.   # fonksiyon içeriÄ?i
  3. end
  4.  
  5. def fonksiyon2
  6.   # argümansız fonksiyon
  7. end

Fonksiyonların Ã?aÄ?rılması

Ruby dilinde fonksiyonların parametlerini parantez içerisine almadan da kullanabiliriz.

  1. fonksiyon(deger1, deger2, deger3...)
  2.  
  3. # fonksiyonların parametlerini parantez içerisine almadan da kullanabiliriz.
  4. fonksiyon deger1, deger2, deger3

Devamını Okumak İstiyorum

“Derinlemesine ActiveRecord” Serisi Hakkında

Seride “Ruby On Rails”in kalbi niteliÄ?inde olan “ActiveRecord” modülüne, barındırdıÄ?ı sınıflara, nasıl çalıÅ?tıÄ?ına, ActiveRecord’un veritabanı tablolarını iliÅ?kilendirmesine detaylı bir bir inceleme yapılacaktır. ActiveRecord tabloları nasıl bulur, nasıl birbirleriyle iliÅ?kilendirir, bizim adımıza neler yapabilir soruları sorulacak bunlara örnekler eÅ?liÄ?inde cevap verilmeye çalıÅ?ılacaktır.

Ayrıca yazının sonunda “çok ufak” bir ActiveRecord kopyasına ulaÅ?acaksınız.

ActiveRecord Sınıfı

ActiveRecord Ruby On Railsde “model”lerimiz için kullandıÄ?ımız sınıfları barındıran “modülün” adıdır. Verilen tabloyu ve tabloya iliÅ?kilendirilmiÅ? diÄ?er tabloları nesnelere çevirerek, tabloyu bir nesne gibi kullanmamızı saÄ?lıyor. (Bu sistem Object-relational mapping olarak geçmektedir.)

ActiveRecord ve Ruby On Rails İçerisindeki Görevi

ActiveRecord Rails’in baÄ?ımlı olduÄ?u paketlerden biridir. ( Aslen Ruby On Rails ActiveRecord gibi olan bir çok modülün birleÅ?mesinden oluÅ?muÅ?tur. Bu sebeple ActiveRecord’u Rails dıÅ?ındaki herhangi bir Ruby yazılımında kullanmak yararınızadır. )
Veritabanındaki tabloları Rails’de nesnesel olarak kullanmak için oluÅ?turduÄ?umuz her “model” aslında ActiveRecord modülündeki “Base” sınıfından türetilen bir altsınıftır. ( class ModelAdi < ActiveRecord::Base ) Bu demek oluyor ki; Rails’in tüm veritabanı ile olan iÅ?lemlerinin yükünü ActiveRecord modülündeki Base sınıfı taÅ?ımaktadır. Veritabanını alıp nesne gibi kullanmamızı ActiveRecord modeline borçluyuz.

Yazının devamında ActiveRecord modeline ait detaylı açıklamaların “ilk” kısmını bulabilirsiniz.

Devamını Okumak İstiyorum

« Önceki Sayfa | 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.