Ruby on Rails and Thin server

Rails hatta ruby hakkında sıfır denebilecek kadar az bilgim var. Fakat firma olarak yazılım geliştirirken ruby on rails kullandığımız için sunucu kurulumlarında elimi ruby’e rails’e bulaştırmak durumunda kalıyorum.

Bugün yine belgeler ve Alper (Karapınar) eşliğinde bir test sunucusuna kurulum yaptım. Sunucudaki rubygems, rails vb. sürümlerinin güncellemesi, eksik kalan gem’lerin kurulması gibi standart prosedürlerden sonra rails ile gelen webrick’i başlattık ve sayfaları görmeye niyet ettik. Niyet ettik diyorum çünkü sunucu yerel ağda olmasına rağmen sayfaları görebilmek pek mümkün olmadı. Her ne kadar rails sayfayı 1 saniyeden kısa sürede oluşturduğunu iddia etse de istemciye sayfanın ulaşması saniyeler sürüyor hatta bazen hiç yüklenemiyordu.

Biz de test sunucusu kullanıyor olmanın verdiği rahatlıkla Thin [1] denemeye karar verdik. Proje sayfasını açınca çıkan grafik oldukça iddialıydı ve bizim derdimize derman olacağını söylüyordu.

Durumun gerçekten böyle olup olmadığını görmek için hızlıca

gem install thin

ile thin’i kurup. Proje dizini içinde

thin start

diyerek sunucuyu çalıştırdık. Çalışacak ikinci yazılım için de tahmine binaen eklediğimiz -p parametresi ile port belirtmeyi başarınca birkaç dakika içinde ağlayan bir sunucudan uçan bir sunucuya terfi etmiş olduk.

Dediğim gibi ruby’den veya rails’den anlamam ama şu açıkça ortadaki thin ile sayfalar rails’in oluşturduğu hızda istemciye iletilmiş oluyor.

[1]: http://code.macournoyer.com/thin/

pfSense ile multi-wan failover – yük dengeleme kurulumu

Geçtiğimiz hafta boyunca iki adsl hattını kullanarak failover yapısı oluşturabileceğimiz bir sistem kurmak için uğraştım. Bu işi yapabilen bir takım donanımsal çözümler bulunmasına rağmen öncelikli hedefimiz bu yapıyı özgür çözümlerle oluşturmak olduğu için internette sistem avına çıktım.

Yaygın kullanılan sistemlerde bu işin nasıl yapılacağından, bu gibi işler için özelleşmiş dağıtımlara kadar birçok seçeneği araştırdım. Genel intiba özelleşmiş sistemlerle, arayüzlerle uğraşmadan sistem tarafında gerekli kuralları yazarak bu işi yapmanın daha kolay olduğu yönündeydi. Lakin sistemi teslim edeceğimiz sistem yöneticisine bir arayüz de sunmak istediğimiz için arayüz üzerinden ayar yapabileceğimiz çözümlere yöneldik. (İşbu noktada insanların söylediği gibi arayüzün daha zahmetli olduğunu tecrübe ettim.)

(more…)

“Türkiye sansüre dayalı bir ülke değil.” (!)

“Türkiye de sansüre dayalı bir ülke değil.”

Bu söz  Dışişleri Bakanı Ahmet Davutoğlu’na ait.[1] Hem de öyle eski zamanlarda söylenmiş bir söz değil, bakan, bunu bugün, sansür gazeteleri, televizyonları aşmış, yeni yüzyılın özgürlük kaynağı interneti zaptetmeye çalışırken zaptetmişken söylemiş.

Sadece 4 gün sonra gelen düzenleme: Hiçbir şekilde sansür uygulamayan TRT’ye, sansüre dayalı bir ülke olmadığımız için TRT’den bunu yapmasını isteyemeyen hükümete ve bölgenin stratejik olarak en üstün, en sözü geçen, kimseden etkilenmeyen ülkesi olmamıza rağmen nasıl olduysa bahsi geçen dizinin son bölümünde dizinin hikayesiyle tamamen alakalı sahneler makaslanmış (gereksiz görülmüş, kaldırılmış teferruat sahneler değil yani)[2]. Radikal’in konuyla ilgili ikinci haberine göre de hikayenin yönü filistin/israil ilişkilerinden duygusal ilişkilere doğru kaydırılmış [3].

Daha üzerinden 1 hafta bile geçmeden bir bakanımızın söylediği sözün doğru olmadığının ortaya çıkmasına mı, bu gerçeğin ortaya çıkmasının konuyla ilgili kimseyi olumsuz etkilemeyeceğine mi, yoksa hepsinden beteri göz göre göre sansür batağında boğulduğumuza mı yanalım bilemiyorum.

Gazetelerde, televizyonlarda, sanat dünyasında son yıllarda hiç denk gelmediğimiz (!) sansür vakalarına örnekler;

1 2 3 4 5 6 7 8 9 10

Devletin yaptığı sansürün yanısıra sansürle alakası olmayacak insanların bile korkuları yüzünden otokontrol adı altında sansüre başvuruyor olması da işin asıl kötü yanı.

[1]: http://www.hurriyet.com.tr/gundem/12711010.asp?gid=229

[2]: http://bit.ly/22YqRM

[3]: http://bit.ly/BU8Cb

Pardus 2008 üzerinde PTSP Sunucu Kurulumu

Bu yazıda PTSP sunucusu kurmak için gerekli adımları kısaca yazdım. Basit birkaç adım olmasına rağmen el altında yazılı halde bulunması, detayları kaçırıp sorun yaşama ihtimalini azaltıyor. Yazıda belirtilen değişiklikler yapıldıktan sonra oluşan dosyalar için örnekler yazının sonunda.

Tarball Oluşturma (isteğe bağlı)

İnce istemcilerinizde Pardus depolarında bulunan ptsp paketlerindekinden çıkan uygulamalar dışında uygulamalar bulunmasını istiyorsanız build-client.py dosyasında PACKAGES listesine istediğiniz paketleri ekleyin ve build-client.py dosyasını çalıştırın.
http://svn.pardus.org.tr/pardus/2008/stable/server/ptsp/ptsp-server adresinden kaynak paketi indirip “Archive” bilgilerini yeni oluşturduğunuz tarball ile değiştirip paketi derleyin.

KDM Ayarları

/etc/X11/kdm/kdmrc dosyasından Xdmcp’yi açın.

DHCP Sunucu Ayarları

Sisteminizde birden fazla ağ arayüzü varsa /etc/conf.d/dhcpd dosyasında dhcp sunucusunun dinleyeceği ağ arayüzünü belirtin.

/etc/dhcp/dhcp.conf dosyasında bir subnet yaratıp.

  • ip havuzu aralığını (range)
  • istemci sistemi için kullanılacak kök dizini (option root-path)
  • tftp sunucusunun ip adresini (next-server)
  • pxe dosyasının yolunu (filename)

belirtin.

Adres çözümlemesi yapılabilmesi için her istemci için bir host tanımlayın ve

  • MAC adresini (hardware ethernet)
  • IP adresini (fixed-address)
  • Makina adını (option host-name)

belirtin.

NFS Sunucu Ayarı

İstemci sistemi için kullanılacak kök dizini ve ilgili seçenekleri /etc/exports dosyasında tanımlayın.

DNS Ayarları

/etc/hosts dosyası içine her istemci için dhcpd.conf dosyasındakine uygun olarak “ip – hostname” çiftlerini belirtin
Eğer sunucunuzun ip adresi 10.0.0.1 dışında bir adres olacaksa /etc/pts-client dosyasını düzenleyin.

Son olarak sistemi çalışır hale getirmek için tftp, dhcp, nfs_utils ve portmap servislerini başlatın.

Örnek Dosyalar

/etc/dhcp/dhcpd.conf:

ddns-update-style interim;
ignore client-updates;

max-lease-time 500;
default-lease-time 500;
option routers 10.0.0.1;
option domain-name-servers 193.140.100.210, 193.140.100.215, 4.2.2.5;
option subnet-mask 255.255.255.0;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.2 10.0.0.25;
option root-path “10.0.0.1:/opt/ptsp”;
next-server 10.0.0.1;
filename “/pts/latest-ptsp/pxelinux.0″;

host client1 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 10.0.0.2;
option host-name “client1″;
}
host client2 {
hardware ethernet 00:11:22:33:44:56;
fixed-address 10.0.0.3;
option host-name “client2″;
}
}

/etc/exports:

# /etc/exports: NFS file systems being exported.  See exports(5).
/opt/ptsp       10.0.0.0/255.255.255.0(ro,no_root_squash,no_subtree_check,sync)

/etc/X11/kdm/kdmrc:



[Xdmcp]
Enable=true
Willing=/usr/kde/3.5/share/config/kdm/Xwilling

/etc/hosts:

# /etc/hosts
#
# This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem.  It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# “named” name server.  Just add the names, addresses
# and any aliases to this file…
#

127.0.0.1 localhost PTS-pardus

# Lab machines
10.0.0.2 client1
10.0.0.3 client2

Görülesi yerler

Yaz mevsiminde herkes tatilde güneşlenip ter dökerken biz de Mersin’in sıcağında proje peşinde ter dökmeye devam ediyoruz. Dolayısıyla benim görülecek yerler önerim meren ve düygü gibi gerçek hayattan değil ancak sanal dünyadan olabiliyor.

Eğer bugüne kadar denk gelip rss’ine abone olmadıysanız -ki gördüyseniz mutlaka rss’ine abone olmuşsunuzdur- mutlaka görmeniz gereken iki güzel blogu bugün hatmettim.

Birincisi siz hayatın akışına kapılmış sürüklenirken, memlekette olan biten, kimsenin elleşip göz önüne çıkarmadığı bazı detayları görmenize yardımcı olan ayrıca keyifli anılarıyla dakikalarınızı renklendiren Koray Löker’in bilöker‘i. Bolca okunası, üstüne düşünülesi yazılar barındırıyor. Sanatçı ruhunun hassasiyetiyle çoğu kişinin gözünden kaçan hassas noktalara temas ediyor, insanın ufkunu genişletiyor ve fakat normalde görmeyip duymadığınız için aklınıza takılmayan aksaklıkları sıkıntıları gösterip dertlerinize yeni dertler katıyor.

İkincisi de Doruk Fişek’in biraz yemek biraz iş az da serzeniş tadında, okurken karnınızı acıktıracak, olmadık şeyler canınız çektirecek seyir defteri. Eğer benim gibi geçmişe doğru kaptırıp okumayı düşünürseniz -ki başlayınca duramayacak bunu yapacaksınız- baştan uyarayım. Öncelikle güzel yemek yazılarıyla karnınızı acıktıracak, siz tam yiyecek almaya giderken size göstereceği ilginç bir ipucu ya da betikle sizi tekrar yerinize oturtacak, betik işlerken okumaya devam ettiğinizde birşeylere sinirlenmenize yol açıp iştahınızı kaçıracak sonuç olarak size muallakta dakikalar geçirtecek. Bence bu blogu her daim mevsiminde okumak lazım. :)

Bir yandan tweet’liyorum, bir yandan blog’a yazıyorum. 3 ay sonra laptop’uma mı kavuştum ne :D

WordPress RSS Yazım Hatası Sorunu

WordPress, blog yazarken ihtiyaç duyabileceğiniz neredeyse herşeyi öntanımlı olarak sağlıyor. Geniş eklenti yelpazesiyle de eksikler kolayca tamamlanabiliyor. Fakat zaman zaman bu eklentiler enteresan sorunlar da çıkarabiliyor.

Bugün wordpress kullanan bir siteyi feedburner’a kaydetmeye çalışırken feedburner RSS’nin geçersiz olduğundan dert yandı. Firefox yüksek bir zeka örneği ile geçersiz de olsa RSS’i görüntüleyebildiğinden ilk başta sorunu göremedik. Daha sonra Google’dan ulaştığım bir iki forumda bunun dosyanın başında oluşan bir boşluk karakterinden kaynaklanabildiğini okudum. Firefox ile kaynak koduna bakarak bu durumu göremediğimizden wget ile RSS’i indirip baktım. Gerçekten de yarım saatimizi çalan şey dosyanın en başında bir boşluk karakteriydi. -Evet sadece basit bir boşluk.-

Forumlarda sayfayı oluştururken kullanılan dosyalardan herhangi birindeki yazım hatasının bu duruma neden olabileceği yazıyordu. Çözümler de yazım hatasını bulup düzeltmek yönündeydi. Ama birçok dosya içinde fazladan yazılmış bir boşluğu bulmak pek kolay değildi.

Bir süre forumların gazıyla birkaç dosyada arama yaptıktan sonra aklıma daha pratik bir fikir. Çıktının başlaması gereken yeri biliyorduk. Buradan önceki belleğe aktarılan tüm çıktı da soruna neden olan o boşluk olduğundan sorunun çözümü çıktının başlaması gereken yerden hemen önce bellekteki herşeyi silmekti. Bunu da ob_clean() fonksiyonu ile sağladık.

Sonuç olarak RSS’yi oluşturan wp-includes/feed-rss2.php dosyasınında

11. echo ‘<?xml version=”1.0″ encoding=”‘.get_option(‘blog_charset’).’”?’.'>’; ?>

olan kısmı

11. ob_start();
12. echo ‘<?xml version=”1.0″ encoding=”‘.get_option(‘blog_charset’).’”?’.'>’; ?>

yapmak sorunu çözdü.

Çevrimdışı PiSi paketi yüklemek

İnternet bağlantısı olmayan makinelere PiSi paketi yüklemekle ilgili birçok betik yazıldı, sayfa yapıldı. Ben de geçmiş zamanda benzer bir betik yapıp tsdesign altına atmıştım. Yazın staj sırasında PiSi API’ye aşina olunca biraz üzerinden geçip betiği güncelledim.

Betik, kurulmak istenen paketin system.base bileşeni dışındaki tüm bağımlılıklarını listeliyor, isterseniz indiriyor.

Betiği kullanmak isterseniz,

http://tsdesign.info/pardus/tarballs/pisi_getter.py.tar adresinden indirip

python pisi_getter –query <paket_adı>

şeklinde kullanabilirsiniz.

## Bu yazıyı yazarken farkettim ki betiğin yaptığı işi pisi bir ufak hileyle yapabiliyor. Yalan oldu benim betik :)   ##

Pisi ile aynı işi yapmak için,

Bir dizin yaratın,

# mkdir pisi_getter

Bu dizini kararlı depoyu ekleyin,

# pisi ar -D pisi_getter/

Daha sonra system.base’i görmezden gelerek istediğiniz paketi kurun,

# pisi it konversation -D pisi_getter/ –ignore-safety

Böylece pisi, paket için gereken bağımlılıkları hesaplayıp indirecek.

Daha sonra önbellekten topladığınız paketleri başka bir sistemde afiyetle tüketebilirsiniz.

Svn geri alma

Zaman zaman karşılaştığım irili ufaklı sorunları çözmek için internette dolanıp bulduğum çözümleri not etmek niyetiyle açtığım blogumu, biraz üşengeçlikten biraz ihmalkarlıktan, maalesef ki bu iş için kullanmak henüz nasip olamadı. Draftta, yayınlananlardan çok yazı birikmiş olması da enteresan bir durum. Bolca yeni şeyler öğreneceğim bir döneme giriyorum. Umarım bundan sonra buraya yazacak bolca notum olacak.

Üzerinde uğraştığımız projelerde yeni kullanıcılar için öğrenmesi kolay olduğundan sürüm takip sistemi olarak subversion kullanıyoruz. Her ne kadar öğrenmesi kolay olsa da elbette arada ufak tefek sorunlar çıkıyor.

Geçtiğimiz günlerde kullanıcılardan biri yanlışlıkla neredeyse depomuzun yarısını silmiş. Her ne kadar svn kullandığımızdan bu durum çok sıkıntı olmasa da daha önce bu durumla karşılaşmamış olduğumdan irc’de konu hakkında biraz laflamak gerekti.

Sonuç olarak unutulmaması gereken komut şöyleymiş.

svn merge -r [Son Revision]:[Dönülecek Revision] URL

örn. svn merge -r 1216:1205 URL

Durup dururken durdurmak.

Youtube’un son durumunu kesin olarak bilen yok. Yetkililerin yaptığı açıklamalara göre yasal olarak henüz erişime açılmamış. Buna rağmen kimi kullanıcılar hiçbir hile hurda kullanmadan youtube’a erişebiliyor. Erişemeyenler de elbet erişmenin bir yolunu buluyor.

Ben youtube’a aracısız erişebilen kitledenim ve zaman zaman youtube’ta “related videos” marifetiyle -eskinin moda tabiriyle- sörf yapıyorum. Bu sırada da bu ve benzeri sitelerin neden “durup dururken” durdurulduklarını gitgide daha iyi anlıyorum.

Bugün dolanırken şimdiye kadar çokça duyduğum ama cevabını kimsenin ver(e)mediği bu memleketin politik durumu neden böyle sorusunun cevabını buldum. Üstat Attila İlhan gayet açık ve anlaşılır şekilde cevabını vermiş bu karmaşık ve anlatması zor görünen sorunun.

Tabii bu cevabı izlemek için bu cevabın önündeki engelleri aşmak, etrafı saran uyutucuların arasından sıyrılmak gerekiyor. Bunun için de hedefinizin bunları bulmak olması yani konularla bir miktar ilgili olmanız gerekiyor. Kısacası insanların bu bilgilere denk gelmesi ihtimali başarıyla ortadan kaldırılmış. İnce ince çalışıp bunu başaranları tebrik etmek gerekli.

Biraz daha açık yazmak gerekirse aşağıda -biri devletin resmi yayın organı olmak üzere ki özellikle bu kanalın yayın içeriği dikkat çekici- 3 ulusal TV kanalının yayın akışı var ve görülüyor ki yayınlar sadece akıp gitmesi geride bir iz bırakmaması için özel olarak hazırlanıyor. İnsanların iz bırakması muhtemel içeriklere ulaşmasının da önüne bir şekilde geçildi mi işlem tamam.

İnternete, herşeye rağmen insanlara doğruyu görebilmek adına bir şans daha tanıdığı için teşekkür ederek bahsettiğim videonun bağlantılarını ekleyeyim.

Attila İlhan’la Zaman İçinde Yolculuk, 3 Nisan 2004 (1)
Attila İlhan’la Zaman İçinde Yolculuk, 3 Nisan 2004 (2)
Attila İlhan’la Zaman İçinde Yolculuk, 3 Nisan 2004 (3)

Star TV ATV TRT 1
06:40 Mesut Yar’la Uyan Türkiye
08:00 Her Eve Lazım
08:30 Sabrina
09:10 Ramazan Sofrası
10:20 Arım Balım Peteğim
13:30 Gün Ortası
14:00 Esra Erol’la İzdivaç
17:30 İftara Doğru
19:00 Uğur Dündar’la Star Ana Haber
19:50 Star Spor
20:00 Pulsar
22:00 Mega Magazin
00:00 Baba Ocağı
02:00 Uğur Dündar’la Star Ana Haber
03:00 Nihat Hatipoğlu İle Sahur
05:00 Esra Erol’la İzdivaç
06:30 Kahvaltı Haberleri
08:30 Jetgiller
09:00 Kadının Gücü
10:45 Hepsi 1
13:00 Gün Ortası
13:20 Kadın Olmak
14:45 Selena
16:40 Avrupa Yakası
19:00 atv Ana Haber
19:50 Spor Haberleri
20:00 Sıla – Bölüm 67
22:00 Hatırla Sevgili – Bölüm 60
00:10 Öldüren Cazibe
02:30 Hüdaverdi
03:45 Köfteci Holding
05:00 atv Ana Haber
06:00 Çilek Kız
06:58 İstiklal Marşı ve Günün Program Akışı
07:00 Sabah Haberleri
09:00 Elma Kurdu Nam Nam
09:20 Çizgi Film “Pembe Panterin Maceraları”
09:40 Çizgi Film “Goof’un Takımı”
10:10 Hayal Fabrikası
10:30 Bir Ramazan Sabahı
12:00 Ötelerden Esintiler
13:00 Haber
13:20 Hava Durumu
13:25 Fragmanlar + Reklam
13:30 Ramazan Klipleri
13:35 Yaprak Dökümü
14:45 Türk Sineması “Rabia-İlk Kadın Evliya”
16:35 Gönlümüzde Yaşayan Peygamber
17:10 Manşettekiler
17:35 Ramazan Geldi Hoşgeldi
17:50 Ramazan Sevinci
19:50 Reklam
20:00 Ana Haber Bülteni
20:35 Spor
20:40 Hava Durumu
20:45 Milli Piyango Çekilişi
20:55 Reklam
21:00 Akşam Sefası
22:25 Reklam
22:30 Sürgün Hayatlar
23:45 Reklam
23:50 Ezberbozan
00:50 Reklam
00:55 Günün Ardından
01:15 Ramazan Geldi Hoşgeldi
01:30 Semavi Duyuşlar
02:30 Gönlümüzde Yaşayan Peygamber
03:00 Sahur Zamanı
05:00 Mukabele
06:00 Yaprak Dökümü

GSoC 2008

GSoC 2008Başvuruları kabul edilen öğrencilerin açıklanması ile GSoC 2008 sezonu, 98 ülkeden 1100 civarı öğrenci ve 175 akk yazılım projesinin katılımı ile başladı.

Geçen sene GSoC’a katılan Türk öğrenciler [1] ve bu sene Pardus’un GSoC’a katılan projeler arasında yer alması, Türkiye’de GSoC’a olan ilgiyi arttırmış olacak ki, GSoC başvurusu kabul edilen Türk öğrenci sayısı katlanarak 15′e çıkmış. [2]

Pardus ekibi de “Pardus CD/DVD/USB Dağıtım Sihirbazı” yapmak için yaptığım başvurumu kabul etmiş ve benim bu 15 öğrenciden biri olmamı sağlamış.

Bu yaz ÖSYM ve Google sayesinde oldukça yoğun ve keyifli  geçecek gibi duruyor. Umarım yaz sonunda projeyi başarı ile tamamlamış ve ortaya kullanılabilir bir ürün çıkarmış olacağım.

  1. http://nyucel.blogspot.com/2007/04/google-summer-of-code.html
  2. http://nyucel.blogspot.com/2008/04/google-summer-of-code-2008.html

Google henüz bu tarz bir bilgi (ülke/katılımcı) sunmamasına rağmen, sonuçların açıklanmasından sonra, 1 saat içinde bu bilgileri topladığı ve bizimle paylaştığı için Necdet hocaya teşekkürler.

Pardus... Özgürlük İçin... Özgürlük için Pardus... Vi The Editor Google Summer of Code Django