Sayfa: « 1 ... 2 3 4 5 6 ... 10 »

Kadir Gecesi Tebriği    08/10/07

Tüm İslam Aleminin ve bu yazıyı okuyan sizlerin, Kadir Gecesi mübarek olsun.

Kadir Gecesi hakkında daha ayrıntılı bilgiyi burada bulabilirsiniz.

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.

Taskbar Shuffle, taskbar da yer alan açık yazılımların yerlerini değiştirmeyi kendine görev edinmiş daha doğrusu ettirilmiş diyelim, yazılımı yazan birileri var sonuçta.

Çokça yazılım çalıştıran biri iseniz ve ilişkilendirilmiş yazılımları sırayla açmamış iseniz yazılımdan yazılıma geçişi kolaylaştırmak için kullanılabilir.

646 Kb. büyüklüğündeki Taskbar Shuffle’ın buradan kurulum dosyasını indirebilirsiniz yahut kurulumsuz yalnızca “exe” dosyası içeren zip dosyasını edinebilirsiniz.

Daha önce CodeGear’ın bir Ruby IDE üzerinde çalıştığını belirtmiştim. İlk birkaç deneme sürümünü kullanmıştım. O zamanlar RadRails’den daha fazlalığı yoktu.

Bugün CodeGear firması 3rdRails bütünleşik geliştirme ortamının ilk sürümünü duyurdu. 30 günlük deneme sürümünü yükledim. Kısa süreli bir inceleme sonunda oldukça memnun kaldım.

Gözüme takılan birkaç özellik:

  • Entegre model/view/controller desteği: Şu demek ki, view dosyalarında controller dosyalarında tanımladığımız değişkenlere erişim ve bu değişkenlerden de model bilgilerine erişim yapabiliriz (kod tamamlama olarak) [1]
  • Yeni bir model oluşturma esnasında gui pencersinde tablo yapımızı ve tüm denetleme olaylarını belirleyebiliyoruz. Oldukça güzel olmuş. [2]
  • NetBeans’da olduğu gibi dosya yapısı organize hale getirilmiş. Daha hızlı ulaşım sağlanabiliyor.
  • Çalışan bir refactoring sistemi mevcut.
  • Dökümantasyon sistemi: Panele “Ruby Doc”u yerleştirip üzerinde bulunduğunuz komut hakkında bilgiye sahip olma imkanı. (Kendi yazdığınız sınıf/fonksiyonlarda da tüm bilgileri anlık olarak otomatik gösterebiliyor.)
  • 3rdRails kurumsal yazılım olduğu için kurulum sistemi oldukça düzenli. Kurulumla beraber ruby,rails,mysql kurulum seçenekleri de geliyor.

Ekran Görüntüleri

rails-view.gif rails-model.gif

Bu arada fiyatı 399$ - 299$.

Tablomuzda kayıt ekleme yahut güncelleme anında mutlaka doldurulması gereken alanlar olabilir.

Giriş

Rails tümleşik bir geliştirme ortamıdır. Yazılımın bölümleri arasında ki düzeni siz belirttiğiniz sürece otomatik olarak sağlayabilir.

ActiveRecord modülü gerekli alanların kontrolünü yapmak için bizlere oldukça geniş imkanlar sunar.

Avi formatında, yüksek çözünürlüklü ekran görüntüsüne ulaşabilirsiniz.

validate fonksiyonu

ActiveRecord sınıfı ve buna ait alt sınıflar “validate” fonksiyonuna sahiptir. Bu fonksiyonu yeniden yazarak kendimize göre özelleştirebiliriz.

validate fonksiyonu her kayıt öncesinde çalışır.

class Mesaj < ActiveRecord::Base
 
 
# ...
 
# ...  
 
 
protected
   
def validate
     
errors.add(:isim, "Aynı isimle daha önce mesaj yazılmış") if isim_kontrol(isim)
     
errors.add(:soyisim, "Boş bırakılamaz") if soyisim.empty?
   
end
 
end

Bazı kontrollerin sadece yeni bir kayıt anında yapılmasını ya da bazılarının sadece güncelleme anında yapılmasını isteyebiliriz.

validate_on_create & validate_on_update

Yalnızca yeni kayıt anında kontrol yapılmasını istiyorsak “validate_on_create” fonksiyonunu yeniden yazabiliriz. Aynı biçimde, yalnızca güncelleme anlarında kontrol için de “validate_on_update” fonksiyonunu yeniden yazabiliriz.

Hazır Denetleme Fonksiyonları

Rails, genel denetlemeler için bize hazır fonksiyonlar sunmuştur.

  • Alanın mutlak doluluğunu kontrol etmek için: validates_presence_of
    Örnek kullanım: validates_presence_of :isim
  • İçeriğin belirli formata uyma zorunluşuğı: validates_format_of
    Örnek kullanım: validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
  • İçeriğin uzunluğunun kontrolü: validates_length_of
    Örnek kullanım: validates_length_of :isim, :maximum=>30
  • İçeriğin sayısallığının kontrolü: validates_numericality_of
    Örnek kullanım: validates_numericality_of :oy, :only_integer => true
  • İçeriğin kayda özel olmasının kontrolü: validates_uniqueness_of
    Örnek kullanım: validates_uniqueness_of :isim, :on => :create

Sunum

Makaleye ait sunumu izleyerek örneklerin çalışmasını ve detaylı kullanımını görebilirsiniz.

Avi formatında, yüksek çözünürlüklü ekran görüntüsüne ulaşabilirsiniz.

İnternet Explorer, jpeg dosyaların content_type’ını image/pjpeg olarak döndürüyor imiş.

CSS,XHTML için özel uyumluluktan sonra şimdi bir de dosya tipi kontrolü yapmak lazım oldu internet explorer’a artık. Hadi bakalım, hayırlısı.

Klasörde tüm gif dosyalarını başka bir yere kopyalamam gerekti ve o anda konqueror açıktı, tek tek tutup seçmeye başlayacakken tam “ya tutarsa” diyip şöyle bir şey yazdım adres çubuğuna


klasör/*.gif

Bana yalnızca gif dosyalarını gösterdi böylece. Daha sonra iexplorer’da denedim, bu özelliği göremedim.

Oldukça faydalı bir özellik, konqueror takımını kutluyoruz buradan.

Rails yazarken editör tercihimi RadRails‘ten yana kullanıyordum. Kendi kurulumunda yetersiz kalan özellikler için Eclipse kurulumu yaptıktan sonra RadRails’i ve RDT‘yi plugin olarak kurup kod tamamlama gibi özelliklere kavuşabiliyordum (Bunun sebebi RDT nin halen geliştirilip yeni özellikler ekleniyor olması)

Netbeans‘ın 6 numaralı çıkacak olan sürümü Ruby için tümleşik destek sağlayacağını duyurmuştu. İlk deneme sürümlerinde başarıya ulaşamamış olsam da iki gündür MILESTONE 10 ara sürümüyle denemeler yapmaktayım, müthiş memnunum.

  • Proje yönetim kısmı müthiş olmuş
  • Otomatik kod tamamlama bölümü süper
  • Generate ve Rake yordamları eksiksiz
  • Netbeans zaten güzel bir editöre sahip
  • Liste daha da arttırılabilir.

Ekran Görüntüleri

proje_yoneticisi.png auto_complete.png

yükleme adresi

http://dlc.sun.com/netbeans/download/6.0/milestones/latest/ bağlantısı takip ederek son ara sürümü yükleyebilirsiniz.

Migration Sql Dump    30/08/07

ActiveRecord::Migration kullanarak saf-ruby komutları ile şekillendirdiğimiz tabloların SQL çıktısını almak için projenin ana dizinine gelip

rake db:structure:dump

komutunu vermek yeterli olacaktır.

Oluşturulan sql dosyasını “db” klasöründe bulabilirsiniz.

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)]
  1. isim = 'İsmim'
  2.  
  3. puts "isminiz: #{isim}"
  4. # çıktı: İsminiz: İsmim
  5.  
  6. puts 'İsminiz: #{isim}'
  7. # çıktı: İsminiz: #{isim}

Rails uygulamaları geliştiriyor ve sunucu olarak Dreamhost kullanıyorsanız, uygulamanızda eklenti (plugin) kullanmadan önce eklentinin sunucuda çalışıp çalışmadığını test etmekte fayda var. Zira sonrasında fazlaca baş ağrıtabiliyor.

Dreamhost ve Rails Uygulaması

  • ssh üzerinden sunucuya bağlanın.
  • projenizi oluşturun: rails proje
  • yereldeki “app” klasörünü, “config/routes.rb” ve “public” klasöründe değiştirmiş olduğunuz dosyaları gönderin.
  • eklentilerinizi sunucuya kurun
  • config/environment.rb dosyasından projenizi “production” ortamına geçirin.
  • config/database.yml dosyasını güncelleyin.
  • rake db:migrate ile tablolarınızı ayarlayın.
  • public/.htaccess dosyanızı açın ve dispatch.cgi yi dispatch.fcgi ile değiştirin

Bir ipucu:

Dreamhost panelinde sayfanızın “home directory” alanına proje/public yazarak (subdomain yahut domain) alan adınıza erişenlerin direkt projeye girmesini sağlayabilirsiniz.

Eğer projelerinizde in_place_edit kullanıyorsanız, kullandığınız değer sıfırlandığında kullanıcının bunu yeniden değiştirme şansı olmayacaktır. Bu nedenle ufak bir kodla bu soruna çözüm bulabilirsiniz.

Öncelikle bunu uygulayacağımız “model”imizi açıyoruz ve kayıttan önce bu alanı kontrol ediyoruz.

class Ornek < ActiveRecord::Base
 
 
before_save :kontrol
 
 
private
   
def kontrol
     
self.aciklama = 'Açıklama Yazmak İçin Tıklayın' if self.aciklama.empty?
   
end
 
end

Sayfanızda değişkeni göstereceğiniz yerde ise ufak bir ön kontrolden sonra yazdırabilirsiniz.

def _yazdir(str)
 
str == 'Açıklama Yazmak İçin Tıklayın' ? '' : str
end

“Açıklama Yazmak İçin Tıklayın” i sabit olarak tanımlamak tabii ki her daim daha iyidir.

Kodlama sürecinde yazılım hata verdiği zaman diğer bir kısma geçmeyip o hatayı bulmaya çalışmak genelde daha uzun vaktin geçmesine sebep olabiliyor. Bugün böyle bir hatanın arayışında fazlaca bir zaman yitirdim, hatayı ve çözümü yazıyorum, başa gelebilecek türden bir hata.

Hata şu: “RJS ile sayfanın bir kısmını ‘partial’ bir dosya ile değiştireceğim ve bazı yerlere efektler vereceğim”

Basit bir olay, çalışmaması için bir sebep yok.

page.replace_html 'kategori_listesi', :partial => 'kategori_listesi'
page.visual_effect :highlight, 'kategori_ekle'

Lakin gel gör bu kod çalışmamakta direniyor. Kodlarda bir sorun yok, sebep şu:

_kategori_listesi.rhtml şu şekilde:
@kategoriler.each … bla bla

Hata Sebebi:
“Kategori Listesi” kategoriler adındaki değişkeni arıyor ve ekleme yaptıktan sonra bunu gözden kaçırıp döndürmemişiz.

Özet:
replace_html ile partial bir dosyanın içeriği koymak istiyorsanız değişkenleri mutlaka düzgün gönderin. Zira, Rails size herhangi bir hata vermiyor.

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