FiveRuns TuneUp Rails 2.0 ve üstü kullanan uygulamalarınızı analiz ediyor ve bu bilgileri isterseniz FiveRuns TuneUp sosyal ağı üzerinden paylaşıp (kaynak koda dair herhangi bir bilgi görüntülenmiyor) diğer kullanıcılarla fikir alışverişi yapıp kodlarınızı daha optimize hale getirebiliyorsunuz.
FiveRuns analiz hizmeti development ortamında çalışan uygulamınıza kuruluyor ve her istek gelen sayfayı anlık analiz ederek, hakkında bilgi sunuyor.
Yukarıda da görüldüğü gibi TuneUp sayfanın en yukarısına kendisini yerleştiriyor. Ve analize dair basit bir istatistik sunuyor. Buradan görüleceği gibi en çok yük View sistemimize aitmiş. Ve toplam sayfa oluşturumu 326 ms. sürmüş. Daha detaylı bilgi almak için fare imlecini analiz çubuğunun üzerine tutuyoruz.

Görüldüğü gibi işlem bazlı olarak ayrıntılı bir rapor alabiliyoruz. Ayrıca modellerimizin tablo yapısını da hızlıca görebiliyoruz.

Yapılan sorguları da görebiliriz;

Daha detaylı bilgi almak için TuneUp videosunu izleyebilirsiniz.
Kuruluma dair bir kaç not düşmek gerekirse;
sudo gem install fiveruns_tuneup
ile gem paketini kurduktan sonra Rails sürümüne göre çalıştırma komutunu veriyoruz;
Rails 2.1 için config/environment.rb dosyasına config.gem ‘fiveruns_tuneup’ satırını ekliyoruz.
Rails 2.0 için fiveruns_tuneup /uygulamanızın/bulunduğu/klasör komutunu çalıştırıyoruz.
Geliştirme ortamında oldukça faydalı bir araç TuneUp. Daha büyük ve kurumsal projeler için ise FiveRuns ürünlerine göz atmakta fayda var. Gerçekten güzel uygulamaları mevcut.
İyi çalışmalar.
input type=”image” ve name 17/07/08
Farklı isimde input type imagelar var ise name üzerinden bunları algılatmak sıkıntı yaratıyor.
Aşağıdaki gibi iki image olsun:
- <input type="image" src="images/kaydet.gif"/>
- <input type="image" src="images/sakla.gif" name="sakla"/>
Sunucu tarafında “sakla” değeri gelmiş mi gelmemiş mi kontrolü yaparak sonuca ulaşamıyoruz.
Image’lardan gelen değere erişmek için name.x, name.y diye değer gönderiyor browserlar. Bu nedenle “sakla” butonuna basıldığını algılamak için “sakla.x”in var olup olmadığına bakmak yeterli.
Kaynak için buraya bakılabilir.
NetBeans Hızlandırımı 17/10/07
NetBeans açılışı biraz uzun sürüyor ve biraz çalıştıktan sonra hafiftan kasılmaya başlıyorsa netbeans için heap size ayarlamasının zamanı gelmiş demektir.
- Netbeans’un kurulduğu dizinde bulunan “etc” klasörüne giriyoruz.
- netbeans.conf dosyasını açıyoruz.
- -J-Xms32m yi -J-Xms256m ile değiştiriyoruz. (Açılışta 256m ram ile başlıyor)
- -J-Xmx512m ile istersek üst sınırı da belirleyebiliyoruz. (Netbeans otomatik olarak bizim için seçiyormuş normalde)
- -J-XX:PermSize yi de arrtırarak kalıcı hafıza oluşumunu arttırabiliriz. Buna mukabil -J-XX:MaxPermSize de arttırılmalı.
Ayrıca NetBeans.conf dosyasın yapılandırılması ile ilgili daha fazla bilgiyi burada yer alıyor.
Piyasaya çıkmış olan tüm Ruby destekleyen editörleri denemeye çalışıyorum. Zaman zaman bunların değerlendirmesini bu sayfada yayımlıyorum.
Uzunca bir süre kodlamalar için Eclipse üzerine RDT ve RadRails pluginlerini kurup işlerimi öyle hallettim. Zira RadRails güncel RDT sürümünü kullanmadığı için otomatik kod tamamlama ve folding olayları kendi içerisinde gelmiyordu.
Fakat son zamanlarda tüm ruby kodlamalarımı NetBeans üzerinden yapıyorum, halen ilk deneme sürümü olmasına rağmen şu anki hali bile kullanımda büyük kolaylık sunuyor. Eğer hala denemediyseniz sadece Ruby paketini içeren NetBeans sürümünü (19 MB) yükleme sayfasında bulabilirsiniz.
Gelelim yazının asıl konusuna, Ruby için “Dark Pastels” renklendirmesi yayımlandı dün, kod yazarken koyu zeminlerden hoşlanıyorsanız tavsiye ederim.

Kurmak için buradaki dosyayı bilgisayarınıza kaydettikten sonra, NetBeans ana menü barında “Tools > Plugins” menüsünden “Downloaded” tabını seçip “Install” düğmesine basarak eklentiyi kurabilirsiniz. Daha sonra “Options” menüsü altında bulunan “Font & Colors” sekmesinden Ruby Dark Pastels profilini seçip, NetBeans’ı yeniden başlattıktan sonra yeni renk düzeninize geçilmiş olacaktır.
Shift+ESC bir de üstüne Alt+Shift+Enter yaparsanız, tadından yenmez oluyor.
Yararlı: Taskbar Shuffle (Windows) 24/09/07
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.
content_type & internet explorer 05/09/07
İ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ı.
konqueror hızlı filtreleme 05/09/07
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.
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
komutunu vermek yeterli olacaktır.
Oluşturulan sql dosyasını “db” klasöründe bulabilirsiniz.
Dreamhost üzerinde Rails projesi 16/08/07
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.
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.
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.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.
Rss Oluşturumu 11/08/07
Controller dosyamız:
def index
@liste = Giris.find(:all, :order => "updated_at, created_at" , :limit => 15, :conditions => 'ozel = false AND aktif = true')
@headers["Content-Type" ] = "application/rss+xml"
end
index.rxml dosyamız
xml.rss "version" => "2.0" , "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
xml.channel do
xml.title 'SAYFA BAŞLIĞI'
xml.link url_for(:only_path => false, :controller => 'gunluk', :action => 'index' )
xml.pubDate CGI.rfc1123_date(@liste.first.updated_at)
xml.description h("AÇIKLAMA" )
@liste.each do |kayit|
xml.item do
xml.title kayit.baslik
xml.link url_for(:only_path => false,
:controller => 'gunluk' ,
:action => 'yazi' ,
:id => kayit.kisa_baslik)
xml.description kayit.kisa_icerik
xml.pubDate CGI.rfc1123_date(kayit.updated_at)
xml.guid url_for(:only_path => false,
:controller => 'gunluk' ,
:action => 'yazi' ,
:id => kayit.kisa_baslik)
xml.author "YAZAN"
end
end
end
end
XmlBuilder sınıfından faydalandık.
Beep’e Hayır! 07/08/07
Özellikle laptop üzerinde çalışırken, olup olmadık anlarda çıkabilecek “Beep” sesi ile tüm dikkatleri üzerine çekebilirsiniz. (Dikkat çekmek isteyenlere duyurulur ayrıca)
Windows üzerinde “Beep” sesini engellemek için şu yol mevcut imiş MSDN‘den edindiğim bilgilere göre:
net stop beep
Bir diğer yolda şu:
regedit > HKEY_CURRENT_USER > Control Panel > Sound > Beep : No
Linux üzerinde KDE için ayarlardan bunu direkt kapatabiliyoruz. (Sistem Zili)
%> ile -%> farkı? 27/07/07
Şudur:
< %= "ÇELİKER" %>
Murat
ÇELİKER
< %= "Çeliker" -%>
Sevgili Gürkan‘ın sorusuna istinaden.
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.
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.
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“







