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