Salı, Temmuz 25, 2006

Hızlı ve Kirli Bir mod_chroot Kılavuzu

Başlangıç ve Sorumluluk Reddi

Bu belge Apache yi chroot içinde çalıştırmak için uğraşırken yaşadığım kişisel tecrübelerden ortaya çıkmıştır. Kullanılan sistem Fedora Legacy projesi ile güncellemeleri yapılan bir Fedora Core 1 sunucu ve üzerinde Apache 2.x PHP 4.x barındırmaktadır. Bu belgeyi uygularken sorumluluk tamamen size aittir doğacak zaralardan vs vs. Artık başlayabiliriz;

Ben Apache yi kafes içinde çalıştırmak için 3 temel yöntem biliyorum. Önce bunlara kısaca bir göz atalım;

1. Klasik chroot yaklaşımları


Zor ve zahmetlidir ( genellikle ) aşağıdaki yapıyı chroot içinde oluşturmanız gerektirir

* C kütüphanesi
* Pekçok diğer kütüphane (libssl? libm? libmysqlclient?)
* Çözümleyici dosyalar (/etc/nsswitch.conf, /etc/resolv.conf)
* Kullanıcı dosyaları (/etc/passwd, /etc/group)
* log dosyaları için ayrı bir klasör
* Program tarafında kullanılacak modül dosyaları (for Apache: mod_php and other modules)

2. Mod-security nin chroot fonksiyonu

Basit, ancak kılavuzdaki kurulum belgesi kaynak koddan kurulmuş bütün dosyaları tek dizin içinde toplayan bir apache sunucusuna uygun. Dosyaları değişik konumlara dağılmış bir sunucuda uygulaması zor.

3. Mod_Chroot yaklaşımı


Basit hızlı ve kolay. Yalnızca chroot işlemine odaklanmış sade bir modül. Ek hiç bir dosyanın kopyalanmasına gerek kalmaz ( 1 - 2 istisnai durum olabilir :) )

Mod-security ve Mod_chroot u kısaca kıyaslarsak

* mod_chroot uzak istemcilerle iletişim kurmaz.
* mod_chroot yalnızca bir kere hafıza ayırır, başlangıçta.
* mod_chroot istekleri yakalamaz kendi işi ile uğraşır :)

Kurulum

Kuruluma başlamadan önce aşağıdaki sistemlerden birini kullanıyorsanız hazır paketlerden kurulum yapabilecek şanslı kişilerdensiniz :)
Apache Dinamik modülleri ile mod_chroot kurulumu için birkaç basit adım gerekiyor.

1. Kodu indirin ve açın

wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
tar zxvf mod_chroot-0.5.tar.gz


2. Kendi sunucunuza uygun kaynak kod klasörüne gidin ( örneğin mod_chroot-0.5/src/apache20/ ) ve

apxs -cia mod_chroot.c

komutunu root olarak çalıştırın.

Not: Bazı headerlara ihtiyaç duyabilirsiniz eğer debian kullanıyorsanız apache2-prefork-dev veya
apache2-threaded-dev paketlerinden birini kurmanız gerekmekte.

Not 2: apsx fedora üzerinde apache-dev paketi ile gelmekte Dinamik modül olarak mod_chroot kurmak için bunu indirin.

Ayarlar

Sunucunuzun konfigürasyon dosyasında ( httpd.conf ) Apache için root olarak kabul edeceğiniz dizini ChrootDir direktifi ile belirtin ve DocumentRoot unuzu buna göre ayarlayın, Örneğin:

ChrootDir /var/www
DocumentRoot /


( Eğer DocumentRoot u /var/www şeklinde bırakırsanız sunucu /var/www/var/www dizinide arayacaktır ana dizininizi )

Apache 2.x için Özel Ayar Notları

Apache 2 deki MPM (multi-processing modules) yapısından dolayı pid dosyası chroot un içinde yer almalı Bunun için;

1. Pid dosyası için özel bir klasör yaratılmalı

mkdir -p /var/www/var/run
chown -R root.root /var/www/var/run


2. apachectl nin mutluluğu için gerçek pid dosyası ile arada bir sembolik bağ kurulmalı

ln -s /var/www/var/run/httpd.pid /var/run/httpd.pid

3. ve son olarak httpd.conf a chroot direktifinden önce

PidFile /var/run/httpd.pid

satırı eklenmeli. Sonuç olarak yapılandırma dosyanız şuna benzemeli

PidFile /var/run/httpd.pid
ChrootDir /var/www
DocumentRoot /
... diğer MPM direktifleri (LockFile? ScoreBoardFile?)


Yalnızca pid dosyasını jail içine almak yeterli olmalı ancak Apachenin özelleşterilebilirliğini düşünecek olursak kullanıcıya göre değişiklik gösteren istisnalar her zaman olabilir. mod_chroot tarafından etkilenen bütün MPM lerin tam listesi için buraya bakın adresine bakın.


Modül Sıralaması


mod_chroot Apache nin bütün işi bittikten sonra çağırılmalı bunun için modül listesinin en başına eklenmeli ( Apache modülleri yazım sırasının tersine yükler ) . Eğer modülü dinamik olarak derlediyseniz.

LoadModule chroot_module /usr/lib/httpd/modules/mod_chroot.so

satırlarını modül listesinin en başına ekleyin. Tabi burada kullandığınız dağıtıma bağlı olarak mod_chroot.so dosyasının tam yolunu yazmalısınız (apsx bu direktifi ( büyük ihtimalle ) modül listenizin en sonuna eklemiş olacak buradan kes-yapıştır yapabilirsiniz).

Evet buraya kadar mod_chroot un kurulum ve ayarlarını bitirdik. Ancak;

Başlamadan Önce

Apache yi chroot içinde çalıştırmak bir takım problemlere sebep olabilir.

Bilinen problemler ve çözümleri için okumaya devam edin :)

Apache yi Yeniden Başlatmak

'apachectl reload', 'apachectl graceful' veya 'kill -HUP apache_pid' komutlarını kullandığınız günleri unutun. Apache bunları yapmak için konfigürasyon dosyasını okumak log dosyalarına yazmak ve modüllerini yeniden yüklemek isteyecek ancak kafesinin dışına çıkamayacaktır. Tabi bu sorunu çözmek için gerekli dosyaları kafesin içine yerleştirebilirsiniz ancak bu durumda da chroot yapmanızın bir anlamı kalmaz :)

Sözü fazla uzatmadan çözümü söyleyeyim bundan sonra apacheyi durdurup başlatmak için yalnız iki komut kullanıyoruz. apachectl stop' ve 'apachectl start'

Veritabanları

Eğer veritabanı sunucunuz yalnız Unix soketlerini dinliyorsa onu 127.0.0.1 i de dinlemesi için ayarlamalısınız.

PHP mail() fonksiyonu


Unix altında php nin mail() fonksiyonu sendmail programının çalıştırılabilir haline ihtiyaç duyar. Bu sorunu aşmak için birkaç alternatif metod olmasına karşın ben smtp ile direkt olarak mail gönderen bir sınıf kullanmanızı önereceğim ( örneğin http://pear.php.net/package/Mail gibi).

Paylaşımlı Kütüphaneler Meselesi


Paylaşımlı kütüphaneler programlara çalışma zamanında bağlanan kütüphanelerdir. Bir programın kullandığı paylaşımlı kütüphanelerin tam listesine ldd /programın/tam/yolu şeklinde erişebilirsiniz.

Normal şartlarda bu kütüphaneler başlangıç sırasında ld.so tarafından otomatik olarak yüklenirler, mod_chroot un bu durumla ilgili bir sorunu yoktur. Ancak bazen programlar çalışmaya başladıktan sonrada bu kütüphaneleri dlopen() ve dlsym() fonksiyonları ile çağırabilirler. İşte bu durum chroot ortamı içinde size sorun yaratabilir.

Bununla ilgi şu ana kadar 2 durum raporlanmıştır. Çözüm olarak bu dosyaları chroot yapmadan önce elle yüklemeyi seçebilirsiniz. Bunun için ayar dosyanıza LoadFile direktifi ile beraber dosya adını eklemelisiniz.

1- DNS Lookup problemi için

LoadFile /lib/libnss_dns.so.2

direktifini eklemeniz gerekmektedir

2- Apache 2.0 mpm_worker modülünü Linux 2.6 çekirdeği üzerinde kullanıyorsanız GNU libc libgcc_s.so.1 kütüphanesini pthread_cancel fonksiyonu çağırıldığında yüklemeye çalışacaktır. Çözüm için:

LoadFile /lib/libgcc_s.so.1

direktifini eklemeniz gerekmektedir.

Sanal Sunucular Konusu

mod_chroot sanal sunucularla kesinlikle problemsiz ( tabi başka bir probleminiz yoksa ) çalışmaktadır. Ancak daha öncede belirtildiği gibi her bir Sanal Sunucu için ayrı bir ChrootDir direktifi kullanamazsınız yani şunu yapMAMANIZ gerekir


ServerName birinci.ornek.com
ChrootDir /var/www/bir_ornek_klasoru
DocumentRoot /

ServerName ikinci.ornek.com
ChrootDir /var/www/ikinci_ornek_klasoru
DocumentRoot /


Bunu yerine aşağıdaki biçimde bir yapılandırma oluşturmalısınız.

ChrootDir /var/www
ServerName birinci.ornek.com
DocumentRoot /birinci_ornek_klasoru

ServerName ikinci.ornek.com
DocumentRoot /ikinci_ornek_klasoru

Not: Bütün işlemleri başarıyla tamamlasanız bile apache başlangıç sırasında

Warning: DocumentRoot [/biricini_ornek_klasoru] does not exist

gibi bir hata verebilir. Bunu dikkate almayın :)


Diğer sorunlar ve destek için
modchroot@core.segfault.pl listesini kullanbilirsiniz. ( Üyelik için modchroot-subscribe@core.segfault.pl adresine boş bir posta atın )

Son olarak http://core.segfault.pl/~hobbit/mod_chroot/install.html adresinde daha detaylı bir kurulum kılavuzu bulabilirsiniz.



Pazar, Temmuz 23, 2006

Mayk Hammır nasıl Yazılır

Tost ve Çay blogundaki linkleri kurcalarken gördüm. mod-chroot la uğraşmaya başlamadan biraz kafa dağıtalım ;)

Afif Yesari, Muzaffer Ulukaya takma adıyla 200 kadar polisiyeye imza atarak bir rekorun sahibi oldu. Başlangıcından bugüne dek, Cumhuriyet döneminde Türkiye’de yazılan polisiye metinlerin toplamından çok daha fazladır “Afif Yesari”nin kaleminden çıkanlar. Bu nedenle, Mayk Hammer’i tanıtma hakkını da ona vermek gerekir:

“New York’lu ve kafadan müselleh bi polis hafiyesinin akla mantığa sığmaz deli saçmalı serüvenlerine ve eskilerine taş çıkartan yenilerini eklediğim bu detektif romanlarını şöyle yazıyordum; Patron, ressama para vermemek için yabancı dergilerden ve jiletle kesip oyduğu ve ayrı ayrı harf ve resimleri yan yana yapıştırarak hazırladığı ve kompozisyonunu da aynı yöntemle yaptığı kapakları bana veriyor ve ben de romanı bana verilen kapağa göre uyduruyordum. Örneğin kitabın adı ‘Genç Kızlar Cehennemi’ ve bir de şöyle bir resim; iri kıyım hayvan gibi bir herif, bir piknik sepeti başına çömelmiş gibi ve sarışın bir kızı, ağaçların arkasından kötü kötü dikizliyor... Ve demek oluyor ki, aşk, kin, ırza tecavüz, intikam, entrika ve fiilen tasallutta bulunma gibi olayların yanı sıra, kan ve heyecan ve bir kaç da cinayet bu kapağın hakkıdır.

Kapağı alıp eve geliyor, bir kahve, bir cıgara içiyor ve New York Şehir Rehberini önüme açarak kafadan gayri müselleh detektifi daha da çileden çıkaracak serüvenlere koşturuyordum. Ve bu 92-96 sayfalık cep kitaplarından her birini, üç günde tamamlayıp vermek zorundaydım. Bu iş için New York Şehir Rehberinden faydalanıyordum çünkü ben New York’a hiç gitmemiştim. Beş yıl süreyle bu kitaplardan bir çok yazdım ve çok da satıldı ve kimse de şikayetçi olmadı. Serüvenlerini ürettiğim detektifi uyduran yazar, uydurduğu detektiften daha üşütüktü ve bu nedenle detektif de ipe sapa gelmez bir hergelenin tekiydi. Ben, herife az bir şey çeki düzen verdim, bayağı adama döndü, daha insancıl oldu ve doktor o sıralar bana içkiyi yasakladığı için ben de ona viskiyi bıraktırdım. Böylece bu kitaplardan 200 kadar yazdım. Üşütük detektifin yazarı Spillane, o tarihte henüz 7 tane kadar Mayk yazmıştı ve 200’e yaklaşık kitabın adını taşıdığından haberi yoktu ve hala da bilmez.

Neyse bu da haberin tam kaynağı.

Cuma, Temmuz 21, 2006

En tehlikeli Cracker

Daha önce bir yerlerde okumuşsunuzdur belki ama ben yeni karşılaştım kendileriyle. http://johnny.ihackstuff.com ile google ı çok etkili bir crack aracına dönüştürebilirsiniz. Ayrıca arama için kullandığı tekniklerde oldukça öğretici.

Salı, Haziran 20, 2006

Programer Strikes Back

Neredeyse bir aydır uğraştığım sınavlar, epidemiyoloji öğrenmeye çalışmam ve grid projesi, Oracle Application server manualleri ile cebelleşme ve App Sunucusu kurulumu, ve yine sınavlarla geçen günlerin ardından tekrar kodlarıma geri döndüm. En son 2 ay önce baktığım programı çözmektense ( evet bundan sonra kodlarımı daha iyi belgelendireceğim :) ) yeni baştan başladım RoR projeme. Bu sefer mümkün olduğunca örneklerdeki her satırı özümseyerek ilerliyorum.

Tabiki bu Ruby ve RoR un ne kadar zevkli olduğunu unutmadım. Her web programcısının sıklıkla karşılaştığı bir örnek tablodan belirli bir alanı veya alanları çağırma ile ilgili.

Baştan kısaca özetlersek RoR ile çalışırken modeldeki sınıflar tablolarınız nesneler ise tablodaki alanlar (kolonlar) olarak düşünebilirsiniz. Örneğin siparişler tablonuz için;
@order = Orders.new
@order.find()
satırları ile sipariş tablonuzdaki bütün bilgileri nesnemize depoladık. Bu tabloda ad gibi bir alan olduğunu düşünürsek bu alanın bilgilerine basitçe find_by_ad fonksiyonu ile ulaşabiliriz.

35 Gün Sonra Gelen DEVAM

Yukarıdaki satırları yazıp draft olarak kaydetmemin üzerinden 35 gün geçti bu arada ben RoR projesini büyük ölçüde bitirdim. Maceralı bir Mailman kurulumu yaptım. ( Mailman ve turkish locale sorunları ayrı bir makale konusudur :) ). Bu arada QtTürkiye sitesi ve tartışma gurubu açıldı.

Ben de şu sıralar javascript kullanmadan bir popup içinden RoR a veri alabilirmiyim diye bakıyorum. Bir yol bulursam yazacağım.

Bir de unutmadan AjaxScaffold diye harika bir generator keşfettim sayfalarınızı zahmetsizce şekillendirmek için birebir. Mutlaka bakın.... Bu arada generatorlardan söz açılmışken Ruby Engines i duymuş muydunuz ?

Pazartesi, Mayıs 15, 2006

Ah şenlik vah şenlik

Evet gidemedim. 2. vizelerin ve proje teslim haftasının ortasına denk gelince Ankarada olamadım. Daha önce kaçırdığım hiç bir şenliğe bu kadar üzülmemiştim. Bu arada aklıma geldi neden şenlik mayıs ayında yapılıyor ? Mesela Temmuz başında bütün okullar (ve iş yerlerinin bir kısmı) tatilken yapılsa katılım daha yüksek olmaz mı acaba ? Belki o zaman 746 kişilik derneğin n tane üyesi (n > 59 ) katılırdı genel kurula ?

Sonunda Oldu


Bir arkadaşımın bilgisayarında müzik dinlerken karşıma çıkan tatsız süpriz. kölelik insanlık tarihinin büyük utançlarından birisidir. Ancak bu millet tarihinin hiç bir döneminde köleleştirilmedi. İnşallah bizim neslimiz ilk olmaz.

Perşembe, Mart 30, 2006

Java ve GTK+

As of v1.4.2, the Java platform supports the GTK+ look and feel, which makes hundreds of existing look and feels available to Swing programs.

Java ve GTK+ ilginç...

Salı, Mart 28, 2006

Teşekkürler Herkese

Bu gün güzel bir gün benim için. 4 gündür evden çıkamama sebep olan gribi atlattım gibi. İşler gene yığılmış beni bekliyor ama olsun en azından sağlıklıyım. Mediko-sosyal doktorumuz Mutlu Bey'e teşekkürler.

Sabah bilgisayarı açtığımda. A.Murat Eren'in bu ibretlik yazısıyla güne başladım. Zaman zaman tartışmalarımız olsada, bu önemli yazının daha fazla insana ulaşmasını sağladığı için içtenlikle teşekürler kendisine.

Akşam eve dönüp gezegene baktığımda gördümki Penguence'nin 4. sayısı çıkmış üstelik içinde benim Bilgi Üniversitesindeki Açık Kaynak Günlerinde kaçırdığım Trusted Computing yazısıyla. Teşekkürler Penguence ekibi ve Bora.

Son olarak baktım ki KDE 3.5.2 çıkmış (zamanın meşhur taktiğini hatırlamadı mı size de ? Türkiye'ye Jupp Derwal getirmişti bu oyun sistemini neyse dağıtmayalım konuyu ) ftpye göz atarken bakayım dedim başka hangi dağıtımların paketleri hazır ? Sadece 3 dağıtım var listede. Biri on milyonlarca dolarlık bütçesiyle SUSE, diğeri dünyanın en çok tercih edilen dağıtımı'nın KDE versiyonu Kubuntu ve son olarak da Pardus. Başta Pardus'daki KDE geliştiricileri olmak üzere bütün ekibe teşekkürler.

Pazar, Mart 26, 2006

Ağustos Böceği ve Karınca

Hasan Pulur'dan. Üstad yine dans ettirmiş kalemini ;)

SONRA bu hikâye değiştirildi...
O kış, hem çok şiddetli hem de uzun sürmüş, karıncanın yiyecekleri de tükenmiş, içecekleri de, yakacakları da... Zavallı yuvasında tir tir titrerken kapı çalmış, açmış. O da ne?
Ağustosböceği arabasına kurulmuş, kürkler içinde, başında kalpak, dizinde kalın battaniye...
Karınca "Bu ne hal?" demeden, ağustosböceği dalga geçmiş:
"Paris'e gidiyorum, diyeceğin var mı?"
"Var git, o La Fontaine denilen herifi bul, uydurduğu hikâyeden utansın!"
* * *
TRAKYA Üniversitesi Tıp Fakültesi Öğretim Üyesi Dr. Funda S. Pala, bu hikâyeyi çeşitli milletlere göre uyarlamış...
Çin uyarlamasında, ağustosböceği açlıktan ölüyor.
Fransız uyarlamasında, ağustosböceği karıncanın kapısını çalıyor. Elinde bavulu, "Kışı geçirmek için Karayibler'e gidiyorum!" diyor.
* * *
TÜRK uyarlamasına gelince...
Karınca bütün yaz çalışır, kış için yiyecek içecek, yakacak depolar. Ağustosböceği ise vur patlasın, çal oynasın yaşar. Kış gelince karınca sıcak yuvasında yaşarken aç kalan ağustosböceği basın toplantısı düzenler:
"Etrafta bunca aç ve üşüyen varken, bu karıncaların vurdumduymazlıklarına dur diyecek yok mu? Durumu kamuoyunun vicdanına sunuyorum."
Televizyoncular, derhal bu haberin üstüne atlayarak, bir yandan aç ağustosböceğinin, öbür taraftan da karnı tok, sırtı pek karıncanın görüntülerini "az sonra" kaydıyla tekrar tekrar yayımlarlar.
* * *
HABER bir anda bomba gibi patlar, onların deyimiyle kamuoyu "şoke olmuştur."
Yeşil Böcekleri Koruma Derneği Temsilcisi, Ali Kırca'nın "Siyaset Meydanı"na çıkarak, yıllardır çektikleri sıkıntının nedeninin renklerinin yeşil olmasından kaynaklandığını ağlayarak, gözyaşlarıyla anlatır.
Şöhretleri Türkiye'yi çoktan aşmış ve "En çok Nobel kazanamayan yazarlar" unvanını kimseye kaptırmayanlar da, Türkiye'deki bu adaletsizliği protesto ederler.
Hatta "30 bin Kürt'ü, 1 milyon Ermeni'yi katledenlerden başka ne beklenir" diye ahkâm keserler. (Bu bizim ilavemizdir. H.P.)
* * *
KONU Bakanlar Kurulu'na da gelir. Başbakan, "Geçmiş hükümetler döneminde ihmal edilen ağustosböceği kardeşlerimizi huzura kavuşturacağız, onların sorunu bizim sorunumuzdur" der.
Reha Muhtar, karıncayı canlı yayına çıkararak, "Reklamını yapmak için, zavallı bir ağustosböceğinin içler acısı durumundan yararlanmaktan utanmıyor musunuz?" diye azarlar ve haşlar.
Ertesi akşam da Fatih Altaylı, karıncayı "Teke Tek" karşısına alır, "Ağustosböceğinden çaldığın yiyecekleri nereye sakladın, öt çabuk!" der, bir güzel döver.
* * *
KARINCA, sonunda çareyi yurtdışına kaçmakta bulur... Ağustosböceği karıncanın yuvasına yerleşir, yiyeceklerine konar, eşyalarının üzerine oturur, gül gibi yaşayıp gider.
Kamuoyu baskısı bir haksızlığı daha önlemiş; adalet, anlı şanlı medyamız aracılığıyla sağlanmıştır.

Perşembe, Mart 16, 2006

Rüya Tabirleri Bölüm #1

İnsan sabahtan akşama kadar bilgisayar düşününce böyle oluyor demek ki... Rüyamda Google Maps Canlı yayına geçmişti. Ben de yukarıdan bulut hareketlerini izliyor istediğimde de zoom yapıp bulut altına inerek çok yüksek çözünürlükte dünyayı seyrediyordum. Şimdi bir yerlerden rüya tabirleri ansiklopedisi falan bulsam bunun da tabiri var mıdır acaba ? Rüyada Google görmek yazdığınız programın 10 sene daha beta aşamasından çıkamayacağına delalet eder gibisinden...

Pazar, Mart 12, 2006

Float to Integer

Buradan Object Pascal dilini tasarlayan güzel kardeşlere sesleniyorum (Türkçe bilmiyorlarsa bu onların sorunu :) ). Madem normal insanlar gibi inttostr() ve benzeri akılcı fonksiyanlar yazabiliyorsunuz da niçin floattoint() gibi basit bir fonksiyon yazmak aklınıza gelmiyor. Tamam hadi dediniz ki floatdouble dı uğraşmayalım round() ve trunc() diye iki fonksiyon yazalım, ama insan hiç olmazsa alias olarak koyar bir tane floattostr() yi. Neyse biraz daha ilerleteceğim ki Delphi bilgimi, yarın birgün insanlığı uyarırken Delphi hakkkında bildiklerimden yola çıkıp bilmediklerimi eleştirir konuma düşmeyeyim.

Cuma, Mart 10, 2006

Utanıyorum

Önce kendimden utanıyorum. Keşke Ruby bilgisi genlerimde kodlanmış olarak bulunsaydı da iyi yada kötü kod yazarak geliştirmek zorunda olmasaydım. Evet utanıyorum beni saçma sapan insanlarla aynı kefeye koyan kişilerin blogunda benden bahsedildiği için utanıyorum. Evet utanıyorum bilgisayar bilimlerini öğrenmeye çalışırken kod yazdığım için utanıyorum.

Evet utanıyorum benim yazdığım kodlara şurası da şöyle olabilirdi diyebilecek kişilerin içinden bana haykırmak geldiği için utanıyorum.

Haykırmak benim de içimden geliyor. Bu gereksiz insanların faydalı işler için çalışan o güzel insanları nasıl bir ruh haline getirdiğinden haberdar mısınız ? O saçma sapan insanlar LKD listelerini kirletirken benden başka haykıran olmadığının farkında mısınız ? Ve farkında mısınız bir zamanlar paylaşım kültürü vardı. İnsanlar birbirlerine bağırmadan haykırmadan yardım etmeye çalışırlardı. Yazık çok yazık...

...Ruby Bölüm 2

Hiç hız kesmeden yeni kodlarla devam edelim. Bu programımız da işletim sisteminde çalışan süreçleri takip ederek bir dosyaya yazıyor. ve bu dosyayı belirli aralıklarla okuyor. Eğer ardışık iki okumada bir süreç belirli bir cpu kullanım % sini aşmışsa o süreci öldürüyor. Programın içinde Ruby ye ek olarak awk da kullandım.
def anaProgram
# sistemde calisan sürecler listeleniyor
system("ps -aux")
#log dosyasi indexi
i = 0
# cpu % si ardisik iki okumada bu degerin üzerinde ise process sonlandirilir
olum = 1
# log dosyalari icin yazim araligi (sn olarak)
logla = 2
# cpu calisma kontrolu icin okuma araligi (sn olarak)
kont_zaman = 7
#loglama threadi basliyor
t1= Thread.new { loop {
sleep logla
# calisan süreclere ait butun bilgiler log dosyasina yaziliyor
system("ps aux > process#{i}.log")
# log dosyasi indexi arttiriliyor
i += 1
}
}
# kontrol threadi baslatiliyor
t2= Thread.new { loop {
# ilk okunan process id
pid1 = 0
# ikinci okunan process id
pid2 = 0
# ilk okunan cpu yuzdesi
cpu1 = 0
#ikinci okunan cpu yuzdesi
cpu2 = 0
h1 = []
h2 = []
kontrol = []

sleep kont_zaman
# her son okunan ve bir onceki process log dosyalarından pid ve cpu bilgileri alinarak
# gecici.txt adli dosyaya yaziliyor
system("awk '{ if( NR !=1 ) printf \"%d %f \", $2, $3 } { if( NR !=1 ) printf \"%d %f \\n\", $2, $3 }' process#{i}.log process#{i-1}.log > gecici.txt" )

#gecici.txt dosyasinin herbir satiri line degiskenine ataniyor
File.foreach("gecici.txt") { |line|
sayac = 0
# satir kelimelere bolunuyor
line.split.each { |kelime|
# herbir kelime uygun degiskene ataniyor

case sayac
when 0
pid1 = kelime.to_i
when 1
cpu1 = kelime.to_i
when 2
pid2 = kelime.to_i
when 3
cpu2 = kelime.to_i

end
sayac += 1


}
#atanan degiskenler 2 ayri dizide toplaniyor
h1[pid1] = cpu1
h2[pid2] = cpu2

}
pidx = 0
sayac1 = 0
#birinci okumadan gelen butun surecler taraniyor
while (pidx < 65536)
#birinci okumada olum sinirinin uzerinde oldugu saptanan
#surecler kontrol dizisine atiliyor
if (h1[pidx] != nil && h1[pidx] > olum)
kontrol[sayac1] = pidx
sayac1 +=1
end
pidx += 1

end


#ikinci okumadan gelen butun surecler taraniyor
pidy = 0
while (pidy < 65536)

# ikinci okumadan gelen süreclerin olum sinirinin
# uzerinde olup olmadigi kontrol ediliyor.
if ( h2[pidy] != nil )
if ( h2[pidy] > olum )
#Eger uzerinde ise birinci okumadan gen surec id leri ile karsilastiriliyor
kontrol.each {|kont|

if (pidy.to_i == kont.to_i)
# sureci gercekten oldurmek icin system("kill -9 pidy") satirini aktive edin
puts pidy.to_s + " olecek"
#system("kill -9 pidy")
end
}
end
end
pidy += 1
end

}
}

#threadler baslatiliyor
t1.join
t2.join

end

# ana program cagiriliyor
anaProgram

...Ruby

Sayın A.Murat EREN Ruby e ısınamadığından bahsetmiş. Olabilir... Ben Python'a çok hakim değilim ama birkaç Python denememin bana fazla tat vermediğini söyleyebilirim. Ruby de hergün biraz gelişiyorum ve temiz kodlamasından zevk alıyorum. O for ların sonuna end leri benim kodu daha rahat okumamı sağlıyor. Matz in Ruby i tasarlamadan önce Pythonu Perl ü Lisp i ve Smalltalk ı oldukça iyi incelediğini düşünürsek tasarım amacınında bu olduğunu tahmin ediyorum. Ama tabi ki kendisine de sorulabilir bu soru...

Ara ara burada yazdığım Ruby kodlarını yayınlayacağım. Daha önce yayınladığım bu küçük programa ek olarak 2 program daha geliyor... İlk programımız Ruby de thread lerin kullanımını gösteriyor.
=begin
Bir bankadaki müşteri ve memurların çalışma düzenleri simüle edilmistir. Bankadaki memur sayısı sabit tutulmus her thread in bir memuru temsil ettiği var sayılmıstır. Musteriler ise rastgele aralıklarla olusturulup musteri kuyruguna eklenmektedir.
=end
require "thread"
$global = 0 #global degisken

trap "SIGINT" , proc { # Programdan ctrl+c ile cikilması icin yordam düzenleniyor

puts "Su ana kadar " + $global.to_s + " musteriye hizmet verildi..."
exit

}

class Memurlar

def hizmet_ver (i)
sleep i # Musteriye Gore Degisen Hizmet Zamani
end
end

class Musteri

def zaman
return rand(5) # Musteri icin gereken islem zamani
end
end



def anaProgram
puts "Programdan çıkmak icin Ctrl ve C tuslarına birlikte basin"
sleep (5)

srand Time.now.to_i # Rastgele sayi üreteci baslatiliyor

memurlar = Memurlar.new #Yeni Memur nesnesi olusturuluyor
threads = [] #threadler dizisi hazırlanıyor

kuyruk = Queue.new # Musterilerin bekleme kuyrugunu temsil eder

musteriOlusturucu = Thread.new{ loop{

sleep rand(4) # Yeni musteri gelmeden gecen rastgele bekleme suresi
# Bu deger degistirilerek kuyruktaki musteri sayısı kontrol edilebilir

musteri = Musteri.new # Yeni musteri olusturuluyor
puts "Yeni Musteri Geldi Musteri No" + musteri.object_id.to_s
kuyruk << musteri # Musteri kuyruga ekleniyor
puts "Kuyrukta Bekleyen " + kuyruk.size.to_s + " Musteri Var"

}
}


3.times { |s| s += 1 # Memurları temsil eden 3 thread olusturuluyor

threads << Thread.new { loop{

musteriX = kuyruk.pop #kuyruktan yeni musteri cagiriliyor
i = musteriX.zaman # Musterinin hizmet zamanı alınıyor
puts "Memur" + s.to_s + " Hizmete Basladi Musteri Kodu" + musteriX.object_id.to_s
memurlar.hizmet_ver(i)
puts "Memur" + s.to_s + " in isi Bitti"
sleep rand(3) #Musteriler arasındaki bekleme suresi
$global += 1
}
}
}

threads.each { |aThread| aThread.join } # Threads dizisinde var olan threadler sırayla
# cagirilip aktive ediliyor

end


anaProgram # anaProgram calistiriliyor.

Çarşamba, Mart 08, 2006

Open Source Water ve Programcı Kimdir ?

Ateşli mizaca sahip bir insan olarak öncelikle gezegende süregelen acayip tartışmalardan bir şekilde uzak durduğum için kendimi tebrik ediyorum :) Emre'nin sessiz kalma konusunda yazdıklarına pek katılmıyorum çünkü insanlar net bir biçimde ortada olan gerçekler konusunda yorum yapmayı çok da gerekli bulmazlar kanısındayım.

Neyse asıl konuya girmeden Armish in çektiği fotoğraflarda görünen Açık kodlu suyun nasıl temin edileceğine dair açıklamaları beklediğimi bildirmek isterim :)

Asıl konuya gelirsek
A deterministic model for the dynamics of furunculosis in chinook salmon Oncorhynchus tshawytscha
başlıklı bir makeleyi anlamak için niçin iki gündür uğraşıyorum sorusunun yanıtını vermeye çalışıyorum. Bundan 4 yıl önce konservetuar sınavlarına hazırlanacak kadar tiyatroya aşıkken insanın bütün karakterleri anlayabilmesi gerektiğini fark etmiştim başarılı bir oyuncu olmak için. Onlarca değişik tip ve konu yüzlerce değişik psikolojik ruh hali.

Peki ya programcılar ? Bizim anlamaya çalıştığımız alan sayısı daha mı az ? Bizim karşımızdakinin isteklerini anlamak için öğrendiklerimiz, başarılı bir program yazabilmek için girdiğimiz ve okumaya çalıştığımız beyinler... Bilmiyorum bütün bu UML XP vb benzeri programcılık kavramlarının ötesinde birşey kod yazmak. İnsanın ve bilgisayarın en özel noktalarına temas edip her ikisinin çalışma biçimini sezmeyi gerektiriyor. Kullandığımız programlama dillerinin ve araçlarının yazarları ile kurduğumuz entellektüel bağdan bahsetmiyorum bile.

Yalnız matematik var bu kadar çok alanla birden ilişki kurmuş ama o da bilgisayar kadar yakın değil güncel hayata. Tabi bilgisayarında özünde matematik olduğunu gözden kaçırıyor değilim ama belki şöyle bir analoji kurulabilir. Matematik insanların ulaşamadığı tanrı ise bilgisayar onun haberci meleği, programcı ise mucizeler yaratan peygamberidir...

Not: Lütfen abuk yorumlarda bulunacak olanlar zahmet etmeden önce analoji kelimesinin anlamını bir okusunlar.

Cumartesi, Mart 04, 2006

Sinir Katsayısı

İsveç'te yüz bini aşkın Türk yaşıyor. Danimarka'dan sonra İsveç devlet radyosu da Türkler için yapılan Türkçe yayına 15 Ocak 2006 tarihinde son verdi.
İsveç radyosu yönetimi, "Türkçenin İsveç'te yaşayan Süryani ve Kürtler için çok hassas bir dil olduğunu, bu kişiler üzerinde olumsuz etki yapabileceğini, anadili Türkçe olmayanlar üzerinde psikolojik rahatsızlık yaratabileceğini göz önüne alarak" yayına son verdiklerini açıkladı.
İsveç devlet radyosu program şefi Kertsin Brunnberg, "Türkler kırk yılı aşkın süredir İsveç'teler. İsveççeyi öğrenmeliydiler. Öğrenemedilerse, bu onların sorunudur" dedi.

Devamı için http://www.milliyet.com.tr/2006/03/04/yazar/uras.html

Çarşamba, Mart 01, 2006

TABU

Tabu arkadaşlar arasında rahatlamak için güzel bir oyun. Ancak çok yoğun bir günün sonunda aşağıdaki gibi diyaloglar ortaya çıkabiliyor.

Anlatıcı: Abi hani çölde olur ???

Anlaymaya Çalışan: KUTUP AYISI

Pazartesi, Şubat 20, 2006

AB Tarama Sürecinde LKD nin Rolü

Yeni Gelen Edit: Konu ile ilgi Devlet Bakanı ve Baş Müzakereci Sn. Ali Babacan'ın özel kalemi ile görüştükten sonra Derneğimizi tanıtan ve verebileceğimiz katkıları belirten bir belgeyi hazırlamaya başladım. Bütün LKD üyelerinin wiki tarzındaki bu belgeye katkılarını bekleriz.

Geçtiğimiz 2 günlük süreçte EGE Çevre ve Kültür Platformunun bir toplantısındaydım. Bu toplantıda bu güne kadar fark etmediğimiz veya yeterli önemi vermediğimiz bir konuyu öğrendim.

Bildiğiniz gibi AB üyeliği için tarama süreci içindeyiz. Bu süreçte AB nin isteği üzerine tarama süreci için yapılan toplantılara STK larda davet edilmiştir. Bu aşamada oluşturulacak taslak metinlere göre müzakere süreci başlayacak ve bu süreç dahilinde ülkemizin geleceğini belirleyecek yasalar çıkacaktır.

Tarama süreci içindeki pek çok başlık doğrudan bilişim ve Açık Kod ile ilgili görünmesede aslında gerek bilgi-işlem dünyasını gerekse Açık Kod u ilgilendiren başlıklar olacaktır. Basit örnek vermek gerekirse eğer biz bu sürece müdahil olmaz isek önümüzdek 30 yıl Milli Eğitim Bakanlığının Müfredatında Bilgisayar Derslerinde Kelime İşlemci Değil MS Word öğretilmesi gerektiği yazabilir.

Şimdi eylem zamanı... Tarama süreci başladı ve son sürat devam ediyor. Bir an önce konu ile ilgili bir çalışma grubu oluşturulmalı AB Genel Sekreterliği ile temasa geçilip bu tarama sürecine diğer Sivil Toplum Kuruluşları gibi müdahil olmak istediğimiz söylenmeli ve en kısa zamanda her başlıkta bize neler düşüyor sorusunun cevabını bulup söz konusu toplantılara temsilcilerimizle katılmalı ve geleceğimiz üzerinde söz sahibi olmalıyız.

Geleceği göremeyiz ama ona müdahale etme ve şekillendirme şansı bugün elimizde.... Tarama süreci ile ilgili daha geniş bilgi için www.abgs.gov.tr adresine bakabilir, bu sürece destek olmak icin proje-cg listesine görüşlerinizi bildirebilirsiniz.

Çarşamba, Şubat 15, 2006

Yorum Yok !

Melih Aşık'tan

CHP Milletvekili Berhan Şimşek, dün Anadolu Ajansı'nın üst düzey bir yetkilisini aradı ve sordu:

- Başbakan'ın Mersinli çiftçi Kemal Öncel'e hakaretler yağdıran konuşmasını bütün ajanslar geçti. Bütün televizyonlar ve gazeteler verdi. Haberi bir tek sizin bültenlerinizde göremedim. Sebebi nedir acaba?

Yanıt ilginçti:

- Konuşmayı seviyesiz bulduğumuz için kullanmadık efendim!

Zor Aşk

Haber saldım
Dört bir yana
Karanfiller susuz kalmış
Muhabbete dost aradım
Bu şehri periler sarmış

Bitip tükenmez sigaram
Ciğerim nefessiz kalmış
Herşey yalan olsa bile
En güzel aşk zor olanmış

Söyle bana güzel kadın
Herşey yerli yerinde mi
Bırakıp gittiğin gibi
Deniz mavi gök yeşil mi

Perşembe, Ocak 19, 2006

Evlenmek İsteyen Kadın

"Hiç bir şey, evlenmek isteyen bir kadın ve susuz kalmış bir deve kadar kararlı olamaz"

Bir Eskimo Atasözü

Devamı burada... :-)

Salı, Ocak 17, 2006

Pardus da Lazrus Kurulumu

Delphi ile zorunlu bir gece geçirdikten sonra Linux üzerindeki alternatiflerine de göz gezdirdim. Kylix hem 90 mb lik boyutu hemde Borland a bağımlı olmasıyla beni pek cezbetmedi. Diğer taraftan daha önce adını duyduğum Lazarusu denemeye karar verdim.

İlk olarak bu adresden Free Pascal'ı yüklememiz gerekiyor. Yükleme işlemi oldukça kolay.

1. Paketi indirip açın.
2.Açtığınız klasörde sh install.sh yazıp enter a basın.
Bu noktada bir işlem daha yapacağız bu Lazarusdan kaynaklanan bir uyum probleminin üstesinden gelmek için bu adresde bulacağınız Free Pascal kaynak kodlarını indirip uygun bir klasöre açın. (Bu klasörün adı FPC daha sonra kullanacağız)

İkinci adımda Lazarus IDE'yi indirip yükleyeceğiz. Ancak bunun için gtk 1.x kütüphanelerinin kurulu olması gerekiyor. Eğer kurulu değilse PİSİ ile rahatlıkla kurmanız mümkün. Daha sonra bu adresden en son cvs kodlarını indiriyoruz ve açıyoruz. Lazarusu derlemeden önce yapmamız gereken bir diğer iş gdk-pixbuf paketini kurmak. Bunun için Gnome'un sitesinden kaynak kodu indirip ./configure, make, make install ile kuruyoruz. Daha sonra libgdk_pixbuf.so.2 dosyasının yerini tesbit edip export LD_PRELOAD=usr/local/lib/libgdk_pixbuf.so.2 şeklinde ortam değişkenimizi tanımlıyoruz. (Tabi daha sonra bunu açılış dosyalarından birine yazmakda fayda var) (Bu arada bu ipucu için cartman'a teşekkürler)
artık lazarusun kaynak kodlarını açtığımız klasöre gidip ' make clean install ' komutunu verebiliriz.

Derleme işlemi bittikten sonra aynı klasörde ./lazarus yazarak IDE mizi başlatabiliriz. IDE ilk başladığınde Free Pascal ı bulamadığına dair bir uyarı verecektir. Bu durumda Ana menüden Enviroments -> Enviroments options -> FPC source directory yi seçip daha önce açtığımız FPC klasörünün bulunduğu yeri yazıyoruz. IDE miz artık kullanıma hazır.

Çok iyi bir belge olmadığının farkındayım bunun ama Lazarus PISI paketi çıkana kadar kullanılacak geçici bir belge olduğundan çok da fazla bir önemi yok sanırım.

Pazartesi, Ocak 16, 2006

Delphi ile Bir Gece


( DELPHOI ) Antikçağ Yunanlılarının en ünlü kahinlik tapınağı

Eski Yunan inançlarına göre, tanrılar tanrısı Zeus'ün oğlu Apollon, yılan-canavar Python'un bekçilik ettiği bu tapınağı onu öldürerek ele geçirmiş. Pythia adlı kahin-büyücü kadını buraya yerleştirmiş, bu kadın gelecekten haber soranlara babası Zeus'ün sözcüsü olan Apollon'dan aldığı karşılıkları bildirirmiş. Burada yer altındaki bir yarıktan çıkan dumanın etkisiyle yarığın başındaki kahin ki adı phytia'dır transa geçer ve tanrı apollonin agzında konustuguna inanılırdı. Yarışma yeri Olympia'nın karşısında bir düşünme ve duyma yeri olan Delphoi'nin ortasında kutsal taş Omphales varmış, onun durduğu yer, dünyanın tam ortasıymış.

Gelecekten haber verme alanında ünlü eski Yunan kentlerinin sınırlarını çok aşan ve hemen o çağın bütün uygarlığına yayılan Delphoi tapınağı gerçekte, geleneğin hukuksal bir düzene dönüşmesini gerçekleştirmiştir. Apollon'un yetkesi, Zeus'ün sözcüsü olarak, düzenin sağlanması yolunda tanrılık yasalar oluşturmuştur. Delphoi antikçağ Yunanlılarının bir çeşit kilisesidir. Yunan tarihinde rastlanan ilk mezhep olan Pythagorasçılıkta bu kilisenin ürünüdür.

Bu başlığı neden yazdığıma gelince yarın sınav var Delphi'den (Tabi bu Borland'ın Delphi'si). Bu güne kadar miadı doldu diye öğrenmemekde direndiğim bu IDE'yi ( Bazılarına 100 defa yazdırmak lazım Delphi bir dil değil Object Pascal için bir IDE dir diye.) Öğrenmek için yarın saat 16.00 a kadar vaktim var. Hayırlısı olsun :-)

Cuma, Ocak 13, 2006

Yoksa siz hala ?

Evet efendim bakınız m$ si apple ı sizin için çırpınıp didiniyor pek faideli müzik ve video formatları geliştiriyorlar. Tabi ki bir hayır duanızı almaktan başka bir beklentileri olmadan. Ama siz ne yapıyorsunuz, hala mp3 dü ogg du acayip şeylerle muhattap oluyorsunuz. Peki devam edin ama aşağıdaki resmide aklınızdan çıkarmayın.

Biraz Ruby Bölüm 1

Saat 01:20 yani biraz Ruby kodlamak icin güzel bir zaman. İlk programımız ortak tampon bellek kullanan bir ana program ve çocuğu üzerine. Ana programın ortak alana yazdığını çocuk program okuyor ve ekrana yazıyor...





# ortak tampon tanimlaniyor
$buffer = nil

def anaProgram
#disaridan alinan deger integer olarak i degiskenine ataniyor
i = ARGV[0].to_i
sayac = 0

puts "Uretici kaynaklari yaratti"

# ana sürec i defa calistiriliyor
i.times {
if ($buffer == nil )
#Eger tamponda veri yoksa alfanumerik karakter uretiliyor

$buffer = rand(36).to_s(36)
puts "Uretici: \" #{$buffer} \" urettim, yaziyorum"
end

if ($buffer != nil )

#Eger tamponda veri varsa cocuk tarafindan okunuyor

fork do
puts "Tuketici: \" #{$buffer} \" okudum"
end
#tampon sifirlaniyor
$buffer = nil
end
}
end

# ana program cagiriliyor
anaProgram

Pazartesi, Ocak 09, 2006

Teorem...

Türkiyede yayınlanan gazetelerin sayını n kabul edersek. Bu gazetelerin 9*n/10 luk bir kesiminde Ali Kemal zihniyetinde n=>1 adet yazar bulunmaktadır.

Teoremin ispatını yapmıyor onun yerine Ali Kemal'den (nam-ı diğer Artin Kemal'den) bir anektod naklediyorum.Günümüzle benzerliği okuyanalar kursun...

"Demiştim sana Ankara ordusu Yunanı yenemez.Yenemiyor işte. Yunan ordusu yarın öbür gün Ankara'ya girer, bu haddini bilmez serserileri yakalar. Çok da iyi olur.Bu kuru gürültü biter,başımızı dinleriz. İstiklal, hürriyet, milli and, milliyetçilik filan gibi iyi tınlayan içi boş laflarla vakit kaybetmez, tıpkı Yunanistan gibi İngiltere'ye bağlanırız.Her sorunumuzu çözecek tılsım budur."


Anektod yine Turgut Özakman'ın Şu Çılgın Türkler Kitabından. Okumayan var mı ?

Ceylan Derisi Koltuklara İthafen...

"Salih.." dedi Kemal Paşa
"..kardeşimden mektup geldi. Paraları bitmiş. Şu notun gizlice anneme ulaşmasını sağla."

"Başüstüne."

Not çok kısaydı:"Bankadaki parayı harcayın. Yetişmezse evdeki halıları satın"

Turgut Özakman'ın Şu Çılgın Türkler kitabından...

Cuma, Ocak 06, 2006

Kedi Evden Kaçtı

Kardeşim bu internet nelere kadir. Sen kalk tee Prizren lerden Pardusu duy. Kurmaya kalk. Olmasın gel pardus kanalına sor. Şaka bir yana daha güzel yerlerde görürüz Pardusumuzu inşallah. Bir gün biri gelipde " Parle vu france " diye sorarsa pardus kanalında bu iş bitmiştir diyecem. Hani nasıl denir "Avrupa Avrupa Duy Sesimizi Bu Gelen Pardusun Ayak Sesleri".
Pardus kanal logundan;
<_RADIOhead> i hear from a friend of mine , we are very familiar with turkey i`m from Prizren if you know he told me that hear from a turkey TV channel so we download it :) and wanna give a try

Salı, Ocak 03, 2006

Değerlerin yerini değiştirme

Özellikle sıralama vb. algoritmalarında iki değerin yerini değiştirmemiz sıklıkla gerekir. Mesela;
int a = 1;
int b = 2;
int gecici;


gecici = a;
a = b;
b = gecici;

örneğinde olduğu gibi. Ama Ruby kullanıyorsak ne yapıyoruz;
a, b = b, a
Çok hızlı geldiyse yavaş çekimde bir daha seyredin ;-)

Perşembe, Aralık 29, 2005

Hiperaktif Çocuklar

Cesur Yeni Dünya demişken Amerika'da okullarda düzene uymayı reddeden çocukların pek çoğuna ritalin verildiği konusunda ciddi iddalar var. ( 1.bağlantı 2. bağlantı ). Huxley in ileri görüşlülüğüne saygı duyuyor ve bu girdiyide burda noktalıyorum. Yorum sizlerin efendim...

Cesur Yeni Dünya

Huxleyin bu etkileyici romanını yeni bitirmişken Emre Sevinç in yazdıklarını gördüm İlginç bir süpriz oldu benim için katkıda bulunmak istedim.

Not: Üstadın aslında tam olarak karar veremediği söylenir Cesur Yeni Dünya ve Vahşilerin Dünyası arasında. Fazlamesaide gazetelerin rss feedleri ile başlayıp şu an abes ötesi biryerlerde olan konu başlığını gördükçe bazen daha diktatör yapıda editörlerimiz olsa keşke diye aklımdan geçmiyor değil...

Tabii ki yeni totaliter sistemin eskisine benzemesini gerektirecek hiçbir neden yok. Polis copu ve idam mangaları, yapay açlık, toplu hapsetmeler ve toplu sınırdışı etmeler yoluyla devlet, yalnızca insanlıkdışı değil (bugünlerde buna kimse pek aldırmıyor); açık şekilde yetersizdir ve ileri teknoloji çağında yetersizlik, Kutsal Ruh'a karşı işlenmiş bir günahtır. Gerçekten etkili totaliter devlet, siyasi patronların ve onların yönetici ordularının tüm güçleri kendisinde toplayan hükümetinin, kölelerden oluşan nüfusu köleler köleliklerini sevdikleri için zor kullanmaksızın kontrol ettikleri devlettir. Günümüzün totaliter devletlerinde köleliği sevdirmek, propaganda bakanlıkları, gazete yayıncıları ve okul öğretmenlerine verilmiş bir görevdir. Ancak yöntemleri halen kaba ve bilim dışıdır. Cizvitlerin, "bana çocuğun aldığı eğitimi söyle sana yetişkin halinin dinî inançlarım söyleyeyim" diye böbürlenmeleri, hüsnü kuruntunun ürünüdür. Ve muhtemelen modern pedagog, öğrencilerinin reflekslerini şartlandırma konusunda, Voltaire'i yetiştiren değerli rahipler denli başarılı değildir. Propagandanın en büyük zaferleri, bir şeyi yapmakla değil onu yapmaktan kaçınmakla kazanılmıştır. Gerçek yücedir, ancak pratik bir bakış açısından bakılacak olursa daha yücesi, gerçek konusunda sessiz kalmaktır. Totaliter propagandacılar; bir takım konulardan söz etmemek yoluyla, kitlelerle yerel politika patronlarının nahoş bulduğu gerçek ya da savların arasına, Mr. Churchill'in 'demir perde' diye adlandırdığı şeyi çekerek, kamuoyuna en uzdilli karalamalarla ya da en karşı konulmaz mantıksal karşıtezlerle yapabileceklerinden çok daha etkili biçimde kanaat telkin etmişlerdir. Ama sessizlik yeterli değildir. Eğer zulüm, tasfiye ve çatışmanın diğer belirtilerinden kaçınılacaksa, propagandanın olumlu yönleri, olumsuz yönleri denli etkinleştirilmelidir. Geleceğin en önemli Manhattan Projeleri, politikacıların ve katılan bilim adamlarının 'mutluluk sorunu' adını vereceği konuda -diğer bir deyişle, insanlara köleliklerini sevdirme sorunu konusunda, devlet sponsorluğunda yürütülecek büyük çaplı araştırmalar olacaktır. Ekonomik güvence olmazsa kölelik sevgisi hayata geçirilemez; kısacası, güçleri kendinde toplayan hükümet ve idarecilerinin kalıcı güvence sorununu çözeceklerini varsayıyorum. Fakat güvenceler, kolaylıkla varmış gibi kabul edilirler. Güvencelerin sağlanması salt yüzeysel, dışsal bir devrimdir. Kölelik sevgisi, insan zihin ve bedenlerinde derin ve kişisel bir devrimin sonucu olarak oluşturulmadıkça başarılamaz. Bu devrimi gerçekleştirmek için, diğerlerinin yanında, aşağıda sayacağım keşif ve buluşlara ihtiyacımız var. Birincisi, çocuk şartlandırma ve daha sonra skopolamin gibi ilaçlar yardımıyla sağlanacak ileri bir telkin tekniği. İkincisi, devlet idarecilerine, eldeki herhangi bir bireyi sosyal ve ekonomik hiyerarşide ait olduğu yere atayabilme olanağını sağlayacak, insan farklılıkları üzerine tam gelişmiş bir bilim dalı. (Yanlış görevlerde bulunan insanlar, sosyal sistem hakkında tehlikeli düşünceler besleme ve mutsuzluklarını başkalarına bulaştırma eğilimi gösterirler.) Üçüncüsü (her ne kadar ütopyaysa da gerçeklik, insanların kendisinden, sık sık tatile çıkarak uzaklaşma gereği duyduğu bir şey olduğundan), alkol ve diğer uyuşturucuların yerini alacak, daha az zararlı, ama aynı zamanda cin ya da eroinden daha fazla keyif verecek bir madde. Dördüncüsü de (ama bu uzun vadeli bir proje olurdu ve başarılı bir sonuca ulaştırmak için nesiller boyunca totaliter kontrol gerekirdi), insan ürününü standartlaştırmak ve yönetenlerin görevini kolaylaştırmak üzere tasarlanmış anılmaz bir öjenik sistemi.* Cesur Yeni Dünya'da bu insan standartlaştırma, belki imkânsız değil, ama fantastik uçlara taşınmıştır. Teknik ve ideolojik olarak şişelenmiş bebekler ve Bokanovski yarımoron gruplarından hâlâ çok uzağız. Ama F.S. 600 yılına gelindiğinde nelerin olmayabileceğini kim bilebilir ki? Bu arada, o daha mutlu ve daha istikrarlı dünyanın belirleyici özellikleri -soma, uykuda öğrenme ve bilimsel kast sisteminin eşdeğerleri- herhalde üç dört nesilden daha uzakta değildir. Cesur Yeni Diinya'daki cinsel ilişkide herkesle birlikte olabilme de pek öyle uzak görünmemekte. Şimdiden bazı Amerikan şehirlerindeki boşanma sayıları evlenme sayılarına eşitlenmiştir. Çok değil, birkaç yıl içinde, evlilik cüzdanları; oniki ay geçerli, köpek değiştirmeyi ya da aynı anda birden fazla köpek bulundurmayı yasal olarak engellemeyen köpek ruhsatları gibi satılacaktır. Siyasi ve ekonomik özgürlükler azaldıkça, cinsel özgürlük, dengelercesine artma eğilimi gösterir. Diktatör de (boş ya da fethedilmemiş bölgeleri sömürgeleştirmek için ateşe süreceği askerlere ve ailelere ihtiyacı yoksa) bu özgürlüğü teşvik etmekle iyi yapar. Uyuşturucu, filmler ve radyonun etkisiyle gündüz düşleri kurma özgürlüğüne ek olarak cinsellik, tebasını, yazgıları olan köleliğe razı etmede yardımcı olur.

Perşembe, Aralık 22, 2005

Abi burda yeşil bişey var parıldıyo

Your results:
You are Superman
Superman
70%
Supergirl
63%
Spider-Man
60%
Green Lantern
60%
Iron Man
60%
Catwoman
60%
Robin
52%
The Flash
50%
Hulk
50%
Batman
50%
Wonder Woman
28%
You are mild-mannered, good,
strong and you love to help others.
Click here to take the "Which Superhero are you?" quiz...

Çarşamba, Aralık 21, 2005

İroni

Kelimenin anlamını bilmeyenler için bugünkü küçük bir olayı anlatmak istiyorum.

Bugün Cumhuriyet gazetesi yazarları üniversitemizdeydi. Gerçekten çok ufuk açıcı bir tartışma ortamı oldu. Ancak kendileri konuşurken ( tajmin edersiniz ki bol bol iktidara yüklendiler ) arkalarında RTE'nin İstanbul Belediye Başkanlığı döneminde çok büyük gelişme gösteren bir şirket olduğu iddaları ile gündeme gelen Albayrak Holding ve yine oldukça tartışmalı bir şekilde aldıkları Trabzon Limanı ihalesi için kurdukları Alport şirketinin flamaları asılıydı.Sanırım organizasyonun sponsoruydular.

Uğur Mumcu'nun dediği gibi paranın sağı solu olmuyor...

Salı, Aralık 20, 2005

Hoşgeldin Pardus

Sabah gezegeni açtığımda S.Çağlar Onur ve Necdet Yücel'den mutlu haberi aldım. Emek anlamında yeterince katkıda bulunamamış olsamda en azından bundan sonrası için birşeyler yapmak umuduyla birazdan indirmeye başlayacağım Pardus RC1'i. Uykusuz geceleriyle bu eserin var olmasına katkıda bulunan herkese tebrikler.

Not: Pamuk konusunda söylenecek ve bazılarına gösterilecek çok şey olsada günlüğümün yayınlandığı halka açık ortamları daha fazla meşgul etmemek için sessiz kalma hakkımı kullanacağım. Söyleyecek sözü olanlara günlüğümün yorum bölümü her zaman açıktır. Saygılarımla...

Dayanamayarak yapılmış bir edit: Rahmetli Ahmet Taner Kışlalı'nın Kaleminden Orhan Pamuk

Pazar, Aralık 18, 2005

Camcı Dükkanına Giren Filler ve Eşitlik Üzerine...

Filler konusuna gelmeden Umberto Eco'dan başlamak istiyorum. Aslında söylediklerim bu kadar farklı şekilde anlaşılmasaydı yine Umberto Eco başlıklı bir girdi yazmak isterdim ama böylesi denk geldi. Sanırım Eco ile oturup bir kahve sohbeti yapmak istemeyecek bir entellektüeli kolay kolay bulamazsınız. Diğer taraftan ( Eco ile kahve içiyor olasa da ) bir insanın birden fazla yüzü olabileceğini de unutmamak gerekir. Malum, şartlar daha farklı olsaydı belki bu gün Adolf ismi bize yalnızca 21 yüzyılın ortalarında yaşayan Avrupalı bir ressamı çağrıştıracaktı...

Pamuk konusuna gelince; Anlatabileceğim en basit biçimde anlatmaya çalışayım, olmadı anlayanlar anlamayanlara anlatsın. Birisi bana senin baban katildi, 10 Ermeni 3 Kürt öldürdü bunu kabul et derse herkesin önünde, onun bu iftirasına karşılık hakaret davası açarım. Bundan daha doğal bir hak yoktur. Bu kişi bana değil 70 milyon kişiye sizin dedeleriniz zamanında 1 milyon Ermeni , sizde 30 bin Kürt öldürdünüz derse ve bundan dolayı insanlar rencide olduysa hukuk yollarına başvurma hakları yok mudur ? Diğer taraftan konuyla ilgili her türlü şiddet içeren harekete karşı olunması gerektiğinin de özellikle altını çizmek isterim.

Ha eğer mesele bunu söyleyen adamın dünyaca ünlü yazar olmasıysa (ki öyle olmasa ortalık bu kadar ayağa kalkar mıydı ? ) işte bu en büyük ayrımcılıktır. Pespaye yazarların (ki şahıs hakkındaki sıfata tek itirazım çok hafif kalmasıdır yaptıkları karşılığında) hakkında dava açılabilir ama iyi kitap yazanların hakkında açılamaz. Bu mantık yeni değil. Birilerini kendimizden veya başkalarından üstün görüp onlara ayrıcalık tanıma isteği. Charles de Gaulle o meşhur diyalogda eğer Satre'ın 100 metre ötesinde gazete satan öğrencinin tutuklanmasına ses çıkarmayıp Satre'ın tutuklanmamasını emretmişse en büyük ikiyüzlülüğü yapmış demektir. Bilen bilir 50 li yıllarda bizde de bu zihniyet deki bazı aklı evveller, eğitimlilerin 2 eğitimsizlerin 1 oy hakkı olması gerektiğini savunmuşlar. Anlaşılan bu durum hep vardı ve ne yazik ki hep var olacak bazı zihinlerde. Büyük usta George Orwell'ın yazdığı gibi "Bütün hayvalar eşittir ama domuzlar daha eşittir" bazılarına göre.

Not: Ne bu girdimde ne de bundan öncekilerde hiç kimseyi vatan hâyinliği veya korkaklıkla suçlamadım. Bu düşüncelerimi açıklarken kullandığım bir üslup da değildir. Hiç kimsenin durup dururken bu kavramlarla suçlanmış gibi davranıp kendini mağdur hissetmesine gerek yoktur. Bu arada Emre beyin yazdıkları sayesinde "Yahu yaşda kemale ermeye başladı galiba " diye düşünürken kendimi yine genç hissettim. Kendisine teşekkür ederim. ;-)

Not2: Aslında bu girdiyi sayın başabakanımızın siyaset literatürüne kattığı veciz cümlelerin geçmişine ayıracaktım ama o da başka bir sefere.

Cumartesi, Aralık 17, 2005

Hemşerim medeniyet ne yanda kaldı ?

Murat Sağlam günlüğünde İskeletor'un düşünce özgürlüğünden dem vurmuş. Haklıdır kendisi. Yalnız merak ettim bu iskeletor kardeşimiz Avrupa'nın içinden mi köyünden mi ?

Diyeceksiniz ki ne ilgisi var ? Var, eğer herhangi bir Avrupa ülkesinin vatandaşı değilse veya onların fikirlerini savunmuyorsa mazallah hemen açarlar hakkında bir soruşturma.

Saçmalıyor muyum ? E ben olanı söylüyorum. Daha iki gün önce Türk Tarih Kurumu Başkanı olan Prof.Dr Halaçoğlu, hem de " ona buna yaranayım belki bana da verirler bir ödül " maksadıyla değil. medeni kanunumuzu aldığımız medeniyetler beşiği Avrupa'nın en bi medeni ülkesi İsviçre’nin Winterthur şehrinde yapılan bilimsel bir toplantı'da Ermeni soykırımı iddaları doğru değildir tezini savunduğu için hakkında soruşturma açılmadı mı ?.

Aslında bu medeniyet çok güzel bir şey canım. Ama biz yalnış mı anladık nedir ? Bu ülkede %100 ermeni soykırımı tezinin savunulduğu bilimsel toplantılar ( o da nasıl bir bilimsellikse tesadüfe bakınız ki; bir tane karşıt görüşlü bilim insanı yok toplantıda ) ülkede yaşayan milyonlarca insanı rencide ettiği halde yapılmadı mı ? Ki biz o insanlara millet diyoruz (Hani şu kayıtsız şartsız egemenliğe sahip olan insan topluluğu...) .

Ama biz kendi çıkarları uğruna bilimsellikten çok uzak bir yaklaşımla ülkesini alçaltma maksdıyla yapıldığından şüphe duyduğumuz bir açıklamayı soruşturmaya kalkınca dünya ayağa kaldırılıyor.

Medeniyet güzel şey canım. Ama bizim için uygulaması zor. Alışmamışız ki biz iki yüzlülüğe, gördüğümüz doğruyu yalnışı hemen söylüyoruz. Daha çok yolumuz var medeni olmak için...

İlk edit: Bu girdiyi yazdıktan 3-5 dakika sonra " şiddete açık teşvik ve bariz hakaret içermediği sürece düşünce özgürlüğü sınırsız mı olmalı ? " diye düşünerek net de gezinirken Gülay Göktürk'ün aşağıdaki ifadeleri kullandığı yazısına denk geldim ve aklımda kocamn bir Hayır yanıtı belirdi...

Yani, insanların çocuklara zarar vermedikleri sürece "sübyancı olma hakkı"nı savunuyorum... Ama çocukların porno filmlerde oynatılması kabul edilebilir bir şey değil. Ne demek istediğimi daha iyi anlatabilmek için şöyle farazi bir örnek vereyim: Diyelim ki, çocuk pornografisi çekenler, o filmlerde gerçek çocukların yerine bilgisayarda yaratılmış sanal çocuklar kullansalardı, yani filmin kahramanı animasyonla yaratılmış olsaydı, benim hiçbir itirazım kalmazdı.

Cuma, Aralık 16, 2005

Queen of the Damned

Gün bitiyor, yeni gün başlıyor. Ben hala Rails formlarında geziniyorum. Lanetliler Kraliçesi'ni az önce bitirdim. İzlenmeye değer bir film eğer fantastik-kurgu dan hoşlanıyorsanız. Gece'nin bir vakti rastladığım güzel bi Rails linki. Yazdığınız uygulamaya çoklu dil desteği vermeniz için 10 kolay adım.

Neden Ruby ?

Atilla ÖZGÜR'ün X. İnternet konferansında sunduğu " WATIR Web Application Testing in Ruby " başlıklı bildirisinden;
WATIR hakkında en çok sorulan sorulardan biri neden ruby dilinin kullanıldığıdır. Yani neden perl/python/java/c# kullanılmadığıdır. Her dilin kendisine göre güçlü ve zayıf yanları bulunmaktadır.


• WATIR kullanıcısı olarak, programlama bilmeyen veya yeni başlayan kişiler düşünülmüştür. Girişteki zorlukların mümkün olduğunca azaltılması, compiler’a ihtiyaç duyulmaması gerektiğine karar verilmiştir. Betik dillerinin tümü bu ihtiyaca cevap vermektedir. Java ve C# bu aşamada elenmektedir.

• Ruby/python/perl çok popüler üç dinamik programlama dilidir. Bunların arasında Ruby en az popüler olanıdır. Ama kullanım kolaylığı açısından tam bir nesneye yönelimli bir programlama dilidir. Java ve C#’ta olan reflection özelliğine sahiptir. Multiple inheritance özelliği olmamasına rağmen mix-in özelliği bu eksiği çok rahat bir şekilde kapatmaktadır.

• IRB (İnteraktif Ruby Shell) girilen Ruby komutlarının sonuçlarının aynı anda izlenmesine izin veren bir programdır. Sayfaları test eden betiklerin yazılmasını son derece hızlandırmaktadır.

• Ruby’nin bir diğer güzel özelliği run-time kütüphanelerinin dinamik olarak değiştirilmesine izin vermesidir. WATIR kütüphanesinden örnek vermek gerekirse
class String

def matches (x)

return self == x

end

end


Burada run-time string class’ı değiştirilerek “matches” isminde bir mettot eklenmektedir. Bunun güzel yanı, WATIR’i kullanan eklentilerin WATIR kodunda bir değişiklik yapmadan WATIR’in çalışma biçimini değiştirebilmesidir. WET eklentisi Ruby’nin bu özelliğini kullanarak bir çok yeni özelliği WATIR’e eklemiştir.

• Ruby Iteratorları. En basit şekli ile Ruby iteratorları okunması ve yazması kolay programlar sağlamaktadır. Örnek olarak

10.times{ puts “a”} ekrana 10 adet a harfi basmaktadır.


5.upto(10){|i|

puts i

}

5’ten 10 kadar olan sayıları ekrana basar.

WATIR Ruby iteratorlarını DOM nesneleri olarak kullanıcılarına sunmaktadır.

$ie.text_fields.each { |t|

}

Bu kod ekrandaki bütün textfieldları gezmektedir.

Yaram Yarimdir

Yara beni,yara beni,
aşkın oku,yara beni,
bıraksınlar,yara beni,
atsın yardan,yara beni,
yaram yarimdir,
yarim yaramdır,
azığım zehir,
bineğim gamdır,
yaram yarimdir yarim yaramdır,
yaraydın gönül yaraydın,
her yer karanlık,yar aydın,
hem ilaçtın hem yaraydın,
sırrımı deşip,
yaraydın gönül yaraydın,
azığım zehir,
bineğim gamdır,
yaram yarimdir,
yarim yaramdır,

Perşembe, Aralık 15, 2005

Şemdinli'yi Bilen Var mı ?

Aslında burada genelde teknik konuları yazarım ama bazen insanın damarında kan hareket ediyor, ve o hareketin her saniyesinde insan sanki geçmişin ruhlarıyla yüzleşiyor. İsteyen istediği kadar görmezden gelebilir. İsteyen şoven ve militarist bulabilir. Ama Galileo nun dediği gibi siz öyle istiyorsunuz diye dünya durmuyor. Belki ben bu satırları yazarken dahi birileri kimbilir hangi Çağdaş ve Modern ülkeden gelen parayla alınan kurşunu, hiç görmediği insanları korumak için yemin etmiş bir gencin hayatına sıkıyor. Ama boş verin siz bunları fazla düşünmeyinki rahatınız kaçmasın. Ama ben yine de yazıyorum. İstemeyen okumasın...

Bu yazıyı kaleme alan Oktay Yıldırım, Astsubay rütbesiyle Orduya katılmış, Güneydoğu'da yıllarca çarpışmış bir askerdir. Kendisi de güneydoğu gazilerinden olan ve üsteğmen rütbesinde iken ordudan ayrılan Hakan Evrensel'in "Yer Eksi İki" adlı romanında anlattığı gerçek
kahramanlardan biridir.Görevi gereği yerinden ayrılmadan saatlerce buzlu suda kaldığından ayaklarından sakatlanmış ve zorunlu olarak malulen emekli edilmiştir. Kendisiyle ilgili bu bilgiyi de Hakan Evrensel vermiştir Halen yürüme güçlüğü çekmektedir.Yazıları Yeni Hayat dergisinde yayımlanmaktadır. Aşağıdaki yazısı Yeni Hayat Dergisinde yer alan bir yazıdır.

ŞEMDİNLİ'Yİ BİLEN VAR MI? / Oktay YILDIRIM

Şemdinli'yi bileniniz var mı? Hiç gitmişliğiniz, Otuz iki virajları aşıp, Kaymakam çeşmenin soğuk suyunu hiç içmişliğiniz var mı? Her sabah uyandığınızda size merhaba diyen Efkâr tepeyi, Gomane tepeyi gezdiniz mi karış, karış?

Mayına basan aracın içinden, tam on dört metre uzağa fırlayan bir arkadaşınız oldu mu sizin? "Yenge vallahi az önce yanımda oturuyordu, şimdi dışarı çıktı" diye yalan söylediniz mi karısına? Dükkânına girip alışveriş yaptınız mı bir esnafın?

Gomane tepenin zirvesinden, içinde eşinizin, çocuğunuzun bulunduğu lojmana doğru yanarak gidip evinizin duvarında patlayan RPG-7'leri izlediniz mi siz?

Ama yine de bulunduğunuz görev yerini terk etmeden, acaba öldüler mi,yaralandılar mı, diye sabaha kadar hiçbir haber alamadan beklediniz mi?

"Ben bu insanlar rahat uyusun diye buradayım, ama neden benim aileme saldırıyorlar" diye düşündünüz mü hiç. Evinizin roketlendiği mahalleden ve hatta roketin atıldığı, makineli tüfeğin yanı başında çalıştığı evin sakinlerinden, "vallahi biz bir şey görmedik" dediklerini duydunuz mu kulaklarınızla?

Her şeye rağmen deyip görevinize devam ettiniz mi? O patlamalardan dolayı yıllardır psikolojik tedavi gören bir çocuğunuz veya çocuğu bu yüzden tedavi gören bir tanıdığınız oldu mu? Hiç böyle bir baba'nın veya Anne'nin yüz ifadesini gördünüz mü?

Tabancanızı evinizde bırakıp " bir şey olursa, eve girmeye çalışırlarsa gerekeni yap, son iki mermiyi de kendinize ayır, ellerine sağ geçme" diyerek her defasında eşinizle helalleşip çıktınız mı evden, ya da böyle bir tanıdığınız oldu mu?

Sürekli telsiz anonslarını dinlediği için, ilk kurduğu cümle " atışlar normal" olan bir çocuğunuz oldu mu sizin?

Lojman'ın emniyetini sağlayan silahlı nöbetçilerin yanında mı oynadı çocuklarınız ve uzaktan dahi gelse, her silah sesinde o çocukların evlere, mevzilere nasıl koşturduğunu, koşarken düşenlerin nasıl yerlerde sürüklendiğini, nasıl hıçkırarak ağladıklarını gördünüz mü hiç?

Bu gün yaşanan olayların, ilk olduğunu mu sanıyorsunuz?

Bunları yapmadı ve yaşamadıysanız eğer, orası hakkında bildiklerinizin hiç bir kıymeti harbiyesi yoktur efendiler. Affedersiniz bu kadar net konuşmak istemezdim ama ne yazık ki sabrım tükendi artık.

Siz oturduğunuz ceylan derisi koltuklarda belki farkında değilsiniz, belki de umurunuzda değil ama orada görev yapan insanların öncelik sıralarında, ailelerinden önce vatanları geliyor, yeminleri geliyor. İşte bu yüzden mevzilerini terk edip ailelerinin yanına koşmuyorlar. Biz de onun için koşmadık zamanında görevimizi bırakarak. Yüreğimiz titreyerek bekledik ama görevimizin başında, dağda, hudutta bekledik efendiler, görevimiz bitene kadar bekledik.

Bu insanlar tüm bunlara vatanları için, üstüne el koyup yemin ettikleribayrakları için katlanıyorlar, sizin başınızın üzerindeki, ama nasıl sağlandığını bile bilmediğiniz "egemenlik örtüsü"'nün bekası için katlanıyorlar.

Peki, onlar bu şartlar altında görev yaparken siz veya sizden öncekiler bu fedakârlıklara liyakat gösterebilmek için, geçmişte ne yaptınız, Şimdi ne yapıyorsunuz?

Anıtlaştırılan terörist mezarlarının hesabını mı soruyorsunuz?

O cenaze araçlarının görevlendirme emrinde kimlerin imzasının olduğunu mu araştırdınız?

Başbakana güç gösterisi yaparak "uçaklardan ve validen hoşlanmadık, ayrıca dağdakilerden vazgeçmeyiz" diyenlere mi hesap sordunuz yoksa?

Ya bütün kutsal değerlerimize söverek ayaklanan kalabalıklar, onlara
devlet'in varlığını mı hissettirdiniz?

Baldırı çıplak peşmergelerden tutun da, Danimarkalısından, Hollandalısından,Rum'undan duyduğunuz her türlü hakaret ve aşağılamaya cevap mı verdiniz?

Roj TV muhabirlerinin nasıl olup ta olaylardan 3 dakika sonra canlı yayın yaptığını mı buldunuz?

Bir el bombasının nasıl olup ta o kadar hasar meydana getirdiğini mi,Almanya ile yapılan telefon konuşmasını mı, o kalabalığın nasıl bir anda örgütlendiğini mi, araştırdınız?

Arabası parçalanarak yakıldıktan sonra, şerefsizce ve insafsızca dövülerek komaya sokulan uzman çavuşu mu, evi kurşunlanan polisi mi, okulunda tartaklanıp kovalanan asker çocuklarını mı, araştırdınız?

Bütün bu eylemleri kimin planladığını ya da organizasyonu kimin veya kimlerin yaptığını mı, o gün halkı sürüsünü idare edenbir çoban maharetiyle kimlerin idare ettiğini mi araştırdınız?

Hayır, bunların hiçbirisini yapmadınız. Siz ne yaptınız peki?

Sizin farkında bile olmadığınız değerler için orada görev yapan bir astsubay ve bir uzman çavuş bulup, sonra bütün aydıncıklar, sağduyucular, mozaikçiler, üst kimliği, yan kimliği, alt kimliği olanlar ve hatta kimliksizler, sonra dalkavuklar, sendikacılar, susurluk Paranoidleri, Soroscular, hülasa ne idüğü belirsiz, ne kadar adam varsa etrafınızda, bila istisna topunuz bir koro nizamında toplanıp, koroyu kimin yönettiğine bile bakmadan-ki ben bundan emin değilim- " Vurun Kahpeye" konseri verdiniz.

Yanlış şarkıyı çalıyordunuz ama çaldınız, sesler, akortlar, notalar hep bozuktu ama yinede çaldınız, orkestra şefi, "müzik" demişti nasılsa.

Şimdi yapılan araştırmalar neticesinde şu anda bile kuvvetle muhtemel olan

sonuç çıkarsa ki bu sonuç, olayların altından terör örgütü ve onunla beraber bazı gizli servislerin çıkmasından doğacak sonuçtur, o vakit ne yapacaksınız?

Allanıp pullanıp önüne çıkarak tek, tek arzı endam ettiğiniz o basına(!) bu defa ne söyleyeceksiniz? Acaba yapacağınız hangi açıklama ile durumu kurtarmaya çalışacaksınız?

Bir açıklamanız var mı efendiler? Daha doğrusu bir "B" planınız var mı?

Ama bana sorarsanız, sizin minik kafalarınızı böyle şeylerle yormanıza gerek de yok zaten. Zira sizin adınıza orkestra şefi düşünür, besteler, önünüze koyar ve size de yine icra-i sanat etmek kalır ki bu, yani başkalarının bestelerini okumak zaten sizin en iyi yaptığınız şey değil midir? Ne demişler "gözlerimi kaparım, vazifemi yaparım".

Yapın efendiler; vazifenizi yapın, hem de gözünüz kapalı yapın. Açarsanız gözünüzü belki Türk Bayrağına sarılı tabutları görürsünüz, ağlayan ailelerini, yetim çocuklarını görürsünüz de vicdanınız depreşir, vazifeniz yarım kalır. Sonra ne der Avrupalı, değil mi?

Hatta bakın ne diyeceğim, asın gitsin o astsubayla uzman çavuş'u,
Şemdinli'yi, Yüksekova'yı, Hakkâri'yi de belediye başkanlarına teslim edin, seçilmiştir nihayet atanmış değil. Öyle Vali'ye filan da gerek yok canım, boşa zahmet. Tayin et, beğenmediler değiştir, ne lüzum var efendim. Siz de bu arada sanatsal sergiler açın, fotoğraf çekin, resim yapın, medeniyetleri buluşturun, dinlere diyalog kurdurun.

Değil mi ki ateş düştüğü yeri yakar. Ateş sizin yüreğinize mi düştü sanki? Bölen bölsün, satan satsın, Avşar'ı da ayırsınlar, Yörüğü de ayırsınlar, dadaşı da, sarışını da, esmeri de.

Şehirleri, köyleri, mahalleleri hatta ev ev ayırsınlar Türk Milletini, size ne gam efendiler.

Siz fotoğraf çekmeye devam edin. Fakat unutmayın ki bir gün sizin de bir fotoğrafınızı çeken çıkar elbet. Ama o fotoğraf hangi salonlarda, nasıl teşhir edilir bilemem. Malum ya yaşlı tarih fotoğrafları çekilip, tozlu sayfalarında bir yerlere asılmış liderlerin, fotoğrafları ile doludur.

"VARLIĞIM TÜRK VARLIĞINA ARMAĞAN OLSUN"

OKTAY YILDIRIM
27 Kasım 2005

Çarşamba, Aralık 14, 2005

Ve O Geldi

Rails ın versiyonuna dikkat edelim...



Salı, Aralık 13, 2005

Yorgunum Dostlarım Yorgunum Yorgun

Checkbox la aldığım verileri select-option la bir türlü alamadım controllerıma. Rails dan bahsettiğimi söyleyemeyecek kadar yorgunum. Herkes kendine göre bir standart geliştiriyor OR Mapping için. Yaw yok mudur Object SQL diye standart bir dil geliştirecek 3-5 babayiğit delikanlı ? Kurtarsın birileri bizi bu OR bolluğundan.

Not : HP 1994 yılında birşeyler denemiş ama pek tutmamış anlaşılan.

Pazar, Aralık 11, 2005

Rails ve Türkçe

Rails da türkçe karakter problemleri yalnızca görüntü sorunlarına sebep olmayıp aynı zamanda veri tabanında kayıt problemlerine sebep olabiliyor. Çözüm application.rb dosyasına eklenecek aşağıdaki satırlarda
before_filter :set_content_type
def set_content_type
@headers["Content-Type"] = "text/html; charset=iso-8859-9"
end

Cumartesi, Aralık 10, 2005

Eski Alışkanlıklar

İnsan onca zaman sql yazdıktan sonra gerçek anlamda nesnel programlama ile web programcılığına alışması biraz zaman alıyor. Ama RoR da her şeyin çözümü bulunur. Neyse bugünkü kısa ipucumuz RoR da ORDER BY nerde diyenler için geliyor. İşte burda
def new
@anabilimdali = Anabilimdali.find (:all , :order => "ad")
@ogretimuye = Ogretimuye.find (:all , :order => "ad")
end

Başka bir arzunuz...

Cumartesi, Aralık 03, 2005

Gizli bir Galaksi

FM galaksi bir süredir fazlamesai takipçilerinin kullandığı bir blog alemi. Lakin bu gün daha küçük ve daha gizli bir başka galaksiyi keşfettim ;-). İşte burda.

Rails ve Öntanımlı Değerler

Rails da öntanımlı değerler insanın canını sıkabiliyor bazen. Özelliklede acemiyiseniz :) İşte bir örnek aralarında ilişki bulunan iki tabloyu belongs_to gibi bir ifade ile çok rahat bağlayabiliyorsunuz. Örneğin

class Ogretimuye < ActiveRecord::Base
belongs_to :anabilimdali
end

gibi. Ama burada Ogretim uye tablonuzdaki foreign key ön tanımlı olarak anabilimdali_id olarak tanımlanmış. Bundan başka bir alan adını tanımlamak istiyorsanız ilişki için aşağıdaki şekilde ezebilirsiniz öntanımlı değeri

class Ogretimuye < ActiveRecord::Base
belongs_to :anabilimdali , :foreign_key => "abilimdal"
end

What happens when you're not on Rails...

Cuma, Aralık 02, 2005

JSF ve Olay Yakalayıcılar

Bir süredir JSF olay yakalayıcılar (event listeners) la ilgili aklıma takılan bir soru vardı. Jsf gibi tamamen sunucu taraflı olduğu idda edilen bir teknolojide olay yakalama işlemi nasıl gerçekleşiyordu ? Bu durum kullanıcı tarafın da javascript kullanımı gerektirirmiydi ? Eğer gerektiriyorsa o zaman nerde kaldı tamamen sunucu taraflı uygulama geliştirme konsepti ?

Sonuç olarak bu soruya j2ee-tr listesinde Bora Güngören'in verdiği yanıtları derleyerek kısa bir bilgi notu oluşturdum. Faydalı olması dileğiyle...


Olay tetiklenmeleri istemci tarafında javascript veya ajax kullanılarak oluşturulabiliyor. Buradaki anahtar nokta ise bu bileşenlerin JavaScript işlemlerinin sunucu tarafı olay modelinde "değerdeğişikliği" gibi bir faaliyeti olmadığı.

JSF'de tum olay döngüsü sunucu tarafindaki görsel bilesen ağacinda olur. JavaScript ile olay döngüsü ile bağlantılı olabilecek tek sey bir HTTP istegi iletilecekse onun iceriğinin ayarlanmasıdir.

Ama şunu gözardı etmeyelim. Görsel sunuma dair detayları istemcide JavaScript ile değiştirebiliriz. Örnegin bir tabloda silmek istedigimiz bir satırın rengi değişebilir. Ancak bu o satırın silinmesi için bir istek oluşturmaz. Sadece formdaki bir değişkenin değeri (DOM olarak düşünürsek, ağactaki bir nodun degeri) değişmistir.

Form yollandığında bu DOM ağacındaki değer değişikligi önce doğrulanır. Doğrulamadan geçerse sunucudaki görsel bileşen ağacına uygulanır. Bu arada deger degisikligi olayı, vb olaylar işler. Daha sonra formun işlenmesi için olan eylemin (ornegin düğmeye tıklanması) sunucu tarafındaki görsel bileşen ağacındaki dengi olan olay işlenir.

Iste bu olay işleyici modelde yani JavaBean'lerde değişiklik yapar. Veri tabanı yada baska bir şekilde erişilen "esas veri"den silme yada benzeri
işlemler ise burada yapılır. Bu katmanlı yapı sayesinde sisteme bozuk veri giremez ve veriler de bozulamaz.

JSF bu nedenle .NET'den bir kaç gömlek ustun zaten. :-)

JSF'de Sadece render-kit değiştirilerek HTML + JS + AJAX ureten JSF kodu kolayca WAP, XUL, XSLT, vb. çıktı üretir hale getirilebilir. Bunun nedeniuygulamanın sunucuda çalışması. .NET için bu iş bu kadar kolay değil.

Resmin icine AJAX konduğu zaman; AJAX HTTP istek ve yanıtlarının sayfaya anında yansımasını engelleyen bir teknoloji. Bu nedenle siz hala aynı sayfada olduğunuzu sanırken birden fazla HTTP istek/yanıt çevrimi bitmiş oluyor. Bu durumda JSF tarafında gelen bu isteklerin işlenmesini gerekir.

Bu istekler tıpkı az önce anlattığım gibi işlenir. JSF, yani sunucu tarafında özel bir anlamları yoktur. Sunucu istegin AJAX ile gelmesini önemsemez. Sadece bir HTTP isteği olarak görür. Bu isteği işlerken değer değişiklikleri, vb şeyler olabilir. Gorsel bileşenlerde değişiklikler gerekebilir. Bu durumda render-kit tarafından olusturulan HTML farklı olacaktır. İstemcinin de bu durumda "ekranı" güncelleyeceğini bekleriz.

İstemci tarafındaki AJAX'in gelen HTTP yanıtlarını işleme becerisi ile bunu yapacağını biliyoruz.

Dolayisi ile olayları JS oluşturmuş gibi gözükse de aslında olaylar her zaman oldugu gibi JSF çevriminde yani sunucuda islenir. JSF'in kendi olay döngüsünün istemci tarafındaki hiç bir teknoloji ile ilgisi ve bağımlılığı olmaz. Onlarla render-kit ilgilenir.

Perşembe, Aralık 01, 2005

Ruby ve Türkçe

Daha önce Ruby on Rails ın tablolar ve sınıflar arasında tekil çoğul kelime ilişkileri kurduğunu yazmıştım. Yalnız bu iş türkçe tablo isimlerinde problem çıkardı. Örneğin var olan ogretimuye tablosundan bir model oluşturduğumda bunun için ogretimuyes adında bir tablo arıyor. Mysql in view özelliini kullanarak oluşturduğum sanal tablolar da yalnız okunabilir olduğu için çözümü "config" klasöründe yer alan enviroment.rb dosyasında buldum. Dosyanın sonuna şöyle bir tanım ekleyip

Inflector.inflections do |inflect|

inflect.uncountable %w( ogretimuye )
end

tablomuzu oluşturan ismi uncountable olarak gösterdiğimizde sorun çözülüyor.

Salı, Kasım 29, 2005

Daha ne Olsun

Ruby yakında konuştuğunuzu anlayacak muhtemelen ;-)

This seemingly empty class definition is the recipe business object that Rails maps to the recipes table in the database. You will see more concretely what I mean by this in a moment. Right now, I want to point out that this little bit of programming magic happened because we used a Rails naming convention: a singular model class name (Recipe) maps to a plural database table (recipes). Rails is smart about English pluralization rules, so Company maps to companies, Person maps to people, and so forth.

Pazartesi, Kasım 28, 2005

Biz kırk kişiyiz birbirimizi biliriz

Geçen hafta tıbbi bilişim derneği tarafından Antalyada düzenlenen tıbbi bilişim kongresindeydim. Beklediğimin üstünde bir etkinlikdi. Çok faydalı oldu. Özellikle sağlık bakanlığının yoğun katılımı kongrenin verimini ve etkinliğini büyük ölçüde arttırdı bana kalırsa.

Bu arada piyasadaki hastahane yönetimi programlarını da inceleme fırsatı buldum toplu halde. Ve hayatımda gördüğüm en büyük kaynak israflarından biriydi... Bu yazılımların hepsi aynı işi yapıyor, aynı şekilde yapıyor. Sağlık bakanlığı bunlardan birini alıp kodunu açsa hastahaneler büyük ölçüde bu yazılıma yöneleceklerdir. Firmalarda açık kaynak modeline uygun olarak destek satacaklardır. Geliştirilen diğer modüllerde programa ekelndikçe çok verimli ve standart bir yapı oluşacaktır sağlık camiasında ama... Nerde o vizyon...

Bir umuttur yaşatan insanı

Kötü cumartesi,
Kötü pazar,
Berbat pazartesi,

Ve umut ve hayal,
Nerden geldi ?
Tam umutdan umudumu kesmişken,
Şair söyledi,

Akıyorsa göz yaşım kurumasın
Coşup seven gönlümse durmasın,

Öyle ya

Hiç bir kere hayat bayram olmadı
yada
Her nefes alışımız bayramdı...

Salı, Ekim 18, 2005

Matematik ve Romantizm

Bu yakın çağ yazarlarının nasıl bu kadar romantik olduklarına şaşırmamak gerekiyor. Adamların yaşadığı çağın gereği. Son asırda düello sırasında vurulup ölen kaç matematikçi biliyorsunuz ki ?

Sözü fazla uzatmadan pek fazla tanınmayan bir matematikçiden bahstmek istiyorum.

Fransız matematikçisi Galois, 1811-1832 yılları arasında yaşadı. Abel'in çağdaşı olan bu matematikçinin doğum ve ölüm tarihlerine bakarsanız 21 yıllık bir ömür sürdüğünü görür ve bu işte bir yanlışlık olduğunu düşünebilirsiniz. Hiçbir yanlışlık yok. Galois'nın hayatı Brezilya dizilerine konu olmaya aday şanssızlıklarla sürüp gitmiş ve 21 yılda tükenmiştir.Fransız matematikçisi Galois, 1811-1832 yılları arasında yaşadı. Abel'in çağdaşı olan bu matematikçinin doğum ve ölüm tarihlerine bakarsanız 21 yıllık bir ömür sürdüğünü görür ve bu işte bir yanlışlık olduğunu düşünebilirsiniz. Hiçbir yanlışlık yok. Galois'nın hayatı Brezilya dizilerine konu olmaya aday şanssızlıklarla sürüp gitmiş ve 21 yılda tükenmiştir.

Paris yakınlarındaki küçük bir kasabanın belediye başkanının oğlu olan Galois, matematiğe okul yaşamı sırasında ilgi duymaya başlamış ve 14 yaşındayken Lagrange ve Abel'in eserlerini okumuştur.Sınıfta, büyük matematikçilerin kuramları üzerine düşünmesi, ödevlerini unutması ve dikkatsizliği nedeniyle öğretmenlerini kızdırdığı bilinmektedir. Galois'in matematiğe karşı duyduğu sevgi o kadar büyüktü ki birgün öğretmenlerinden birisi, "Anne-babasının Galois'e sadece matematik dersi aldırmalarının iyi olacağını düşünüyorum." demiştir.

Daha 16 yaşında iken pek çok matematik klasiğini okumuş olmasına rağmen üniversiteye kabul edilmedi. Kendisini kanıtlayabilmek için 17 yaşında zamanın tanınmış matematikçilerinden Cauchy'ye verdiği makalesini Cauchy kaybetti. 18 yaşındayken bir yarışmaya soktuğu bir diğer makalesi de, yarışmanın hakemi Fourier ölünce kayboldu. Zorla girebildiği öğretmen okulundan, okul yönetimini eleştirdiği için kovuldu. Bir dergiye sunduğu bir başka makalesi, hakem ispatların içinden çıkamadığı için reddedildi. Bir taraftan matematik dersleri vererek hayatını kazanmaya çalışan Galois bir tarfatan da siyasete bulaşmıştır. 1830 Devrimi'ne Cumhuriyetçi olarak katıldı. Siyasi nedenlerle de iki kez hapse girip çıktı.

Ve nihayet, ertesi sabah düello edeceği, o soğuk mayıs gecesi gelip çatar. Galois henüz 21 yaşındadır. Tüm hayatı siyasi fikirler ve matematik teorileriyle geçmiş bir genç elbette insan öldürme 'sanatı' üzerine bilgisizdir. Öldürüleceğini anlar. Oysa daha kafasındaki matematik fikirlerini olgunlaştıracak zamanı olmamıştır. Ölümün bekleme odasında volta vurduğu bir saatte bu genç adam insanoğlunun ölümsüzler listesine adını yazdırmak için son kez hamle yapar. Bu son gece arkadaşı Chavelier'e bir mektup yazar. Bu mektupta Gauss'un kullandığı bazı teknikleri genelleştirerek, derecesi dörtten büyük olan her polinom için çalışacak bir 'kök bulma yöntemi' bulmanın neden imkansız olduğunu anlatır. İçinde kökleri aradığımız sayı sistemleri "cisimler" ile kökleri kendi arasında döndüren permütasyon "grupları" arasında daha önce gözlenmemiş ilişkiler bulur. Bu ilişkiler yumağına bugün genel olarak Galois teorisi denir.

Denklemin katsayılarını içine alan sayı sistemine denklemin tüm köklerini teker teker katarak sistemi büyüttüğümüzü düşünelim. Öte yandan tüm kökleri kendi arasında dönüştüren permütasyon grubu ve onun bazı kökleri sabit bırakan alt gruplarını düşünelim. Galois bu iki dünya arasında köprü kurar ve bir taraftaki kök bulma problemini, öbür tarafta bir grubun yapısını inceleme problemine dönüştürür. Görür ki, eğer bu tarafta kök bulunabiliyorsa öbür tarafta da grubun özel bir yapısı olması gerekir. Oysa bu özel yapının, derecesi dörtten büyük denklemelere karşılık gelen gruplarda, her zaman olmadığını tespit eder.

Sonuç olarak insanlığın iki bin yıldır aradığı kökler, basit cebirsel yöntemlerle bulunamaz. İşte Galois teorisinin basit bir özeti. Belki bu 'basit' açıklama size gereğinden fazla ayrıntılı ve teknik gelmiş olabilir. Daha kısa ve daha öz Galois teorisini neden anlatamayacağımı Galois teorisi hakkında söylenen bir sözle açıklayayım; "Galois teorisi sarımsağa benzer, azı olmaz..."

Galois'nın mektubu ölümsüzlüğe doğru fırlatılmış bir çığlıkla biter: " Bütün bu karmaşık hesapları açmakta kendisine yarar görecek birilerinin çıkacağını umarım." Ertesi gün düelloda vurulur. Hastanede bir gün can çekiştikten sonra ölür. Arkadaşı bu mektubu üç ay sonra yayınlarsa da mektup ilgi görmez. makalelerinin çoğu 1846'da yayımlanıncaya kadar gün ışığına çıkmamıştır. Bu tarihte Cauchy, grup kuramı hakkında yayınlar yapmaya başlayınca, Galois'in çalışmaları da matematikçilerin ilgisini çekmiştir.

Galois'in öneminin tam olarak anlaşılması, Camille Jordan'ın 1870 yılındaki yayımlarıyla gerçekleşmiştir. Eğer Galois, Newton ya da Gauss gibi uzun yıllar yaşamış olsaydı, matematiğe yapacağı katkıların çok daha fazla olacağı kesindir.

Pazar, Ekim 16, 2005

İlk jsf Uygulamam

Bütün o iyi hazırlanmış help sayfalarına rağmen yinede biraz zor oldu. Ama sonunda oldu . Jdeveloper'la ilk jsf uygulamamı yazdım. İlk başta biraz karışık görünüyor ama alışınca işleri oldukça kolaylaştıracak kadar güçlü bir teknoloji hissi verdi bana JSF. I sense the power. I want the all power :-).

Not: Bu arada deployment da problem çıkardı jdeveloper. O işi şimdilik elle hallettim. Ama hata mesajlarından anlayabildiğim kadarıyla windows ve karakter problemlerinden kaynaklanıyor sorun. Büyük bir hocamızın dediği gibi "Then I curse the Bill Gates"

Not2: Bu arada bir hatada EJB diagramına veri tabanı tablolarını sürükle bırak yaparken oluşabiliyor. Verdiği hata java.lang.NullPointerException şeklinde. sorun bilinen ve düzeltilmiş bir hata (Metalink Bug number 4624229). Ancak son versiyonu nedense halen indiremedim. Geçici bir çözüm dil ayarlarını denetim masasından ingilizce olarak belirleyip programı yeniden başlatmak...

Cumartesi, Ekim 15, 2005

Let's Go

What Video Game Character Are You? I am a Gauntlet Adventurer. I am a Gauntlet Adventurer.

I strive to improve my living conditions by hoarding gold, food, and sometimes keys and potions. I love adventure, fighting, and particularly winning - especially when there's a prize at stake. I occasionally get lost inside buildings and can't find the exit. I need food badly.

What Video Game Character Are You?

Pazar, Ekim 02, 2005

Tatil Dönüşü Oracle

Tatil bitti çalışma zamanı. Bir yandan aldığım 10 ders diğer taraftan iş yerindeki projeler. Spora vakit ayırmak lazımdı ama o meseleyi sabah 6.20 de kalkıp koşarak hallettim gibi. Diğer taraftan tenis ve aikidoyu bırakmak istemiyorum. Bir de vucut geliştirme için zaman lazım. Yazın kütüphaneye iade ettiğim japonca kitabını geri almak istiyorum. Ve tüm bunların ötesinde kişisel projeler var ( para kazanmak lazım :) ). Ve bir arada eğlenmek ve dinlenmek lazım. Ooof oof benden bana bir tane daha lazım.

Tatilde Myeclipse kurcalamıştım biraz. Küçük bir JSF gösterisi yaptım bölüm başkanın hoşuna gitti ama onun kalbi alışık olduğu Oracle'dan yana :) Benden Jdeveloperı incelemi istedi. Bende ADF destekli 10.1.3 versiyonunu indirdim. Adamlar sağlam iş çıkarmış. Kapalı kodlu ama ücretsiz. Açık kodlu alternatiflerinden çok çok üztün durumda olduğunu itiraf etmem gerekiyor. Sahip olduğu özellikler gerekse Oracle ın dokümantasyon desteği sayesinde çok başarılı bir ürün çıkmış ortaya. Hemen her konudaki flash öğreticileri gerçekten çok güzel. Sanırım biraz PL/SQL öğrenmemi gerektirecek olsada Oracle ı tercih edeceğim.

Yeni projede kullanacağımız sunucu da geldi bu arada. Çok şık bir alet standart özelliklerine ek olarak + 1 GB ram ve 2 x 72.8 SCSI HDD içeriyor. İç tasarımı mükemmel. Kurulumu yapan gençlerin iddası iç tasarımı ferrarinin tasarımcısın yaptığı yönündeydi. Doğrumu bilmiyorum ama çok hoş bir oyuncak. Tek kusuru win2003 yüklü olarak gelmesi oldu :-). Ama çok yakında değişecek bir aksilik olmazsa.

Tabi bu iş için gerçekçi nedenlerim olması gerekiyordu bölüm başkanına anlatmak için.
Sonuçta Win2003 ile M$ nin iyi bir iş çıkardığını kabul etmek gerekir. Ancak kendi jvm sinin geliştirmesini durduran, Java'yı piyasadan silmek için .net e milyonlarca dolar yatıran M$ nin java teknolojileri konusunda ileride takınacağı tavrın belirsizliği ve M$ nin bu tip konulardaki kirli geçmişi yeterli nedenleri sağladı bana. Sonuçta bundan 3-4 yıl sonra M$ ve Java birlikteliği üzerine yapılan bilgi-birikimin boşa gitmesi ihtimalini sağlam bir şekilde ortaya koyduktan sonra bu anlamda oldukça yol aldım sanırım.

Bu arada yeni elemanın sorumluluğuna verdiğim php projesinden de tamamen kurtulamadım ne yazık ki :( Sorunlu kodları düzeltmem gerekiyor halen. Neyse şimdilik iyi gidiyor sanırım yeni gelen iki elemanıda yetiştirmemle php defterini tamamen kapatacağım muhtemelen ;-)

Cumartesi, Eylül 03, 2005

Hava Durumu Tahminleri ve Ekonomik Tahminler

Katrina kasırgasının ABD yi vurduğu şu günlerde fraktallarla ilgili araştırma yaparken gözüme çarptı. Yazıdan ilginç alıntılar;

1961 yılının kış aylarında bir gün, Lorenz bu ardışık sayı dizilerinin birini uzun uzadıya incelemek istediği bir sırada kestirme bir yol izlemeye kalkıştı. Programı tekrar başa dönüp çalıştırmak yerine ortalarda bir yerden başladı. Makineye başlangıç durumundaki şartları vermek için, daha önce yazıcıdan çıkardığı dizilere bakıp oradaki sayıları klavyeden aynen girdi. Sonra da hem makinanın gürültüsünden kaçmak, hem de bir fincan kahve içmek üzere koridorun sonundaki hole gitti. Bir saat kadar sonra döndüğünde hiç ummadığı bir şeyle karşılaştı; hem de öyle bir şey ki bununla artık yepyeni bir bilim dalı filizlenmeye başlıyordu.

Bilgisayarın yaptığı bu dökümde bir önceki dökümün tıpatıp tekrarlanması gerekirdi. Lorenz aynı sayıları makineye kendi elleri ile girmişti. Programda bir değişiklik yoktu. Oysa Lorenz yazıcıdan yeni çıkan döküme baktığında gördüğü şey şuydu: Hava durumu bir önceki dökümde yer alan şekilden o kadar hızla uzaklaşmaktaydı ki, bir kaç aylık bir süre zarfında, aradaki bütün benzerlik ortadan kalkmıştı. Lorenz bir bu sayı kümesine baktı, bir de önceki sayı kümesine. Sanki bir şapkanın içinden rastgele iki hava durumu seçip almış gibiydi. İlk aklına gelen şey, gene vakumlu tüplerden birinin bozulduğu oldu. (1961 yılından bahsediyoruz, o zamanlar bilgisayarlar şimdikinden çok farklıymış) Birden gerçeği farkına vardı. Makina bozulmuş falan değildi. Mesele makinaya işlediği sayılardan kaynaklanıyordu. Bilgisayarın hafızasına kaydedilen ondalık kesir sayıları altı haneydi: .506127. Yazıcıdan çıkan dökümde ise yerden kazanmak için, sadece üç hane görünüyordu: .506. Lorenz sayıları kısaltarak son üç rakamı yuvarlamış, binde birlik bir farkın sonucu etkilemeyeceğini düşünmüştü. Aslında bu varsayımın akla aykırı bir yönü yoktu. Bir meteoroloji uydusu okyanusun yüzeyindeki sıcaklığı binde birlik bir hassaslıkla okuduğunda, uzmanlar kendilerini şanslı addediler. Lorenz'in Royal McBee'si (*) klasik programı uyguluyordu. Tamamiyle determinizme dayalı denklemler sistemi kullanmaktaydı. Belirli bir çıkış noktasından hareket edildiğinde hava durumunun her seferinde tıpatıp aynı gelişmeyi göstermesi gerekirdi. Biraz daha farklı bir çıkış noktasından hareket edildiğinde, hava durumunun da biraz daha farklı bir gelişme göstermesi gerekecekti. Küçücük bir sayı hatasının rüzgarın hafif esintisinden farkı yoktu; tabi ki hafif esintiler hava durumunda önemli, büyük ölçekli değişimleri getirmeden önce ya zayıflayıp ortadan yok oluyorlar ya da birbirlerini dengeliyorlardı. Oysa Lorenz'in kendine özgü denklemler sisteminde küçücük hatalardan büyük felaketler doğmaktaydı. devamı...

Cuma, Eylül 02, 2005

Bill Gates ve Apple




Ne Yorum Yapayım ki şimdi ben bu resmin üstüne...

Çarşamba, Ağustos 31, 2005

Programcılık Nereye Gidiyor ?

Bazen düşünüyorum programcılık nereye gidiyor diye....


Linux-programlama listesinde bir süredir devam eden bir tartışma var. Bir arkadaşımız genetik ile ilgili bir proje için 2 bitlik bir veri tipni nasıl oluşturacağını ve bu işin kazançlı olup oladığını soruyordu. Tüm tartışmaya linux-programlama listesinden erişebilirsiniz. Ancak benim aklıma takılan serdar hocanın yazdığı bir iletiydi


Alıntı:
Selamlar...


İki bitlik değişken olur. Ama bu yanındaki diğer bitlerde doluysa bir anlam ifade eder. Bkz: struct, ":" vs.


10^7 ne eder 10 milyon mu? 2 bit olsa her değer ne olur ? 20 Milyon bit. Ne eder, kabaca 2.5 MB filan. Her biri 8 bit olsa, 10 MB eder.


Genel olarak çoğu mimaride "int" 32 bit uzunlukta. Bu da bir int içine 16 tane 2 bit saklayabileceğiniz anlamına gelir. Fakat bu bitleri buradan çıkarmak ve yerleştirmek için çok çok daha fazla zaman harcarsınız. Kabaca, bu bitleri karşılaştırmak 5 saat çevrimi sürse, bitleri çıkarmak 30 saat çevrimi, koymak 30 saat çevrimi filan eder. Toplam 65 saat çevrimi. Bu da 10 kat daha yavaş çalışacaksınız demek olur.


2 yerine 8 bit kullanmakta benzer bir yavaşlığa sebep olur. Genel kural olarak en hızlı işlenen değişkenler "int" olanlardır.


Görüldüğü üzere sorun optimizasyon sorunu. Seçim yapmanız lazım: "Optimize for size" yada "Optimize for speed" arasında. 256 MB RAM olan bir sisteme dudak büküldüğünü düşünürsek, bir kaç MB için bir sürü takla atmaya ihtiyaç olmaz sanıyorum. O kodu yazarken kullanacağınız elektrik/su parasına sisteme biraz daha RAM
alabilirsiniz nerdeyse.


Saygı ve sevgiler..



Yıl içinde java ile ilgili bir sunumda java için yaklaşık şöyle birşey deniyordu


Alıntı:
JIT


Java ilk çıktığında bytecode işletme hızı çok iyi değildi. yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yanı "Just-in-time compile", "anında derleme" araçları üretmeye başladılar. Yapılan şey byte kodu sanal makinenin kurulu olduğu gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede performansta ciddi artışlar sağlandı. Ama 2000 yılından sonra HotSpot teknolojisinin gelişmesi ile JIT'in işlevi VM'içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerliğini kaybetmiştir. Bugün halen bir kaç ürün pazarda bulunsa da genellikle bu yöndeki ihtiyaç yok olmuş gibi gözükmektedir.


Kaynak vikipedi



Yani sonuç olarak gelişen teknolojinin işçilerinin yerini alan robotları üretmesi gibi gelişen teknoloji ve görsel programlama araçları da biz programcıların (en azından kod optimizasyonu vs gibi konulara değer ve önem verenlerin) yerinimi alacak.


Şimdilik Büyük ölçekli projelerde kod optimizasyonu önemli olsada sıradan günlük kullanım için olan ve pc ler için yazılan programlarda önemini kaybetmekte gibi geliyor bana.


Teknolojinin bu hızda gelişimyle yakın gelecekte sunucular üzerinde yazılacak uygulamalar içinde önemini kaybedecek ve bizde hala burda lisp şöyle hızlı Ruby de şöyle kolay kod yazılıyor üstelik java dan da % bilmem kaç hızlı oluyor diye konuştuğumuzla kalacağız.


Bu gün sürekle bırak programcılığının yaygınlaşmasıyla yazdığı programın kodunun tamamını görmeyen (zaten görsede anlamayan) programcı sayısı o kadar fazla ki.


Üstelik bu adamlar bayağı ticari işlerde yapıyorlar. Mesela benim yarı-zamanlı çalıştığım kuruma gelip bizim sektör için son derece komik br fiyata komple çözüm öneren ve bayağı ciddi referanslar veren bir yazılım firması ile ilgili şefe sorduğum soru halen aklımdadır.


Ben : "Ne ile yazmışlar programı ? (Bahsettiğimiz program 300+ bilgisayar ve 100 bin doların üzerinde sunucularla çalışan bir kuruma kurulacak) "


Şef: "Visual Basic"


Ben : ..... ?!&%

Pazar, Ağustos 28, 2005

Tatil Bölüm 1

Tatile çıkabildim sonunda. Hesapta işten uzak duracaktım. Ama nerde gene jsp, jsf derken daldım işlere.

Hazır başlmışken biraz anlatayım. www.myeclipseide.com da bulabileceğiniz oldukça güzel bir ide var jsp,jsf,hibernate gibi ihtayacım olan pek çok teknolojiyi destekliyor. Ayrıca entegre bir görsel web tasarım aracı sayesinde jsp tasarımını oldukça kolaylaştırıyor. Kusursuz değil ama yıllık 29$ a sahip olabileceğiniz güzel bir ide.

Özelliklerini keşfettikçe yazacağım.

Bu arada en sonunda Kubuntu kurdum. Gerçekten güzel olmuş. Yalnız paket deposunda MidnightCommander olmamasını kınıyorum. Onun dışında güzel. Debianımın her seferinde sorun çıkardığı usb belleğimi sorunsuz tanıdı. Java ve Zemberek işini de halledersem babamı Linux a geçirmiş olacağım.

Perşembe, Ağustos 11, 2005

Hoş Geldin Galaksi

Otostopçunun galaksi rehberinin buradaki sinemaya gelişinin 3 hafta ertelendiği haberinin verdiği üzüntüyü. FM galaksi biraz olsun hafifletti. Netekim 100 ünlü türk büyğünden birinin dediği gibi "Fazlamesai zağmiağsı biır zağmia değil biır Zumğuriyettir".