Bir türlü oturup uzun uzun yazılar yazamıyorum, bi’ kaç gün daha böyle gidecek sanırım.

En azından “haber servisi” görevinde bulunalım diyerek Rails 2.0 RC2 duyurulduğunu belirtmek isterim. Stabil sürümün en geç 2 haftaya çıkacağı söyleniyor.

Güncelleme işlemleri için RC1 bildirisine bakabilirsiniz.

rails 1.2.6 & jRails    25/11/07

Birkaç güvenlik güncelleştirmesi ve sorunu gideren yeni rails sürümü duyuruldu.

gem install rails -y

Bu arada bugün jRails‘e denk geldim. Mevcut rails metodlarında Prototype/Scriptaculous yerine jQuery kullandırabilmeyi amaçlamış.

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.

Sinan Ata‘dan müthiş bir yazı, bu işi 300′e yapan var!

Sinan’ın dediklerine aynen katılıp, okurken yüzümde beliren ufak tebessümü bu olayları daha önce yaşamış olmama veriyorum.

Yaşanmış bir replikte (daha doğrusu tek kişilik replik, verecek cevap bulamamıştım) benden olsun. Program kurduğum bir fabrikada yaşadığım bir olay.

“Abi sen bilgisayarcısın, elektronikten de anlarsın, bizim vcd bozuldu, bi ara getireyim de bakıver…”

İçten bir ses: “obaaa”

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.

Bi’ kaç gün önce tutulduğum “programcı tembelliği” vakasından hâla kurtulabilmiş değilim. Bu programcı tembelliği bende üzerinde çalışmakta olduğum projelerin kodlarını açmak istememe şeklinde arz ediyor genelde.
Kendime de hak vermiyor değilim aslında (: Hep aynı kodların/ekranların içinde bulunmak biraz kafayı başka yönlere çevirmeyi gerektiriyor elbet.

Genelde bu durum iki-üç gün arasında sürüyor. Bu süre zarflarında genelde ben de not aldığım okunacak/araştırılacak konularıma bakıyorum. Aslında bir nevi tatil günleri oluyor. Serbest çalışan kişiler her ne kadar evde bulunup diğerleri tarafından “hergün tatil yapıyooorrrlar” anlayışında bakılsalar da durum hiç öyle değil. Sanıldığının aksine serbest çalışan insan mesaili çalışan kişiden daha fazla süre iş yapıyor. Hatta çoğu zaman bilgisayar başından kalkma zamanı yatağa gireceği zamana eşit oluyor.

Konu biraz farklı yöne kaydı, asıl bahsetmek istediğim sayfadaki tasarımsal değişiklikti. Tasarımsal derken üst kısmı değiştirip renklerle oynadım biraz. Beyaz zemine geri döndüm. Ruby pembesi sayfadaki yerini kaybetti. Değişiklikler iyidir.

Bu arada Ruby/Rails programcısı olup neden Wordpress kullanıyorsun tarzında soru gelmişti bir kaç kez. Bu konu hakkında buradan da açıklama yapmak iyi olacak sanırım.

Bunun bir çok sebebi var. Birincisi Wordpress gerçekten güzel bir sistem. Mephisto da gerçekten güzel bir sistem. İkisi de güzel olduğuna göre arada pek bi’ fark yok demektir. Sayfayı çevirmek için geçecek süre zarfında daha yararlı işler yapılabilir.

İhtiyaca göre teknoloji seçmek her zaman iyidir. İhtiyaç karşılanmadığı zaman teknoloji terkedilirse sorun yoktur. Wordpress şu an tüm ihtiyacımı karşılıyor.

Üçüncü sebep ise PHP’nin yeri de kalbimde ayrıdır. İlk göz ağrılarımdandır kendisi.

Sıfırdan blog açsam Mephisto’yu tercih ederim lakin (:

Daha önce hiç bu tür bir ihtiyaç hissetmemiştim hâla da hissetmiyorum. Bugün Planet Postgresql‘de denk geldim, denk gelmişken paylaşmak istedim.

SELECT pg_database.datname,
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM pg_database;

Kodun yer aldığı girdiyi burada bulabilirsiniz.

Bu arada sabırsızlıkla Devrim Gündüz‘ün kitabını beklediğimi belirtmemde fayda var. Kitap girdisini mutlaka okumanızı öneririm ayrıca.

JRuby’nin 1.0.2 numaralı sürümü bugün duyuruldu [ »» ]

İyileştirmeler içeren yeni sürüm 1.2.5 numaralı Rails sürümünü de desteklemeye başladı. “Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java” adlı kitapta geçen günlerde yayımlanmıştı. JRuby’yi zevkle izlemeye devam ediyoruz.

Yükleme dosyalarına buradan ulaşabiliriz.

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.

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.