Ana içeriğe atla

Kayıtlar

Aralık, 2006 tarihine ait yayınlar gösteriliyor

313. dönem 3.takım 5.manga

Küçükyalı Levazım Maliye Okulu ayrı bir dünya, ve burada yaşananlar hiç unutulmayacak anılar. Hiç tanışmadığım ama aynı anları paylaştığım birkaç arkadaşım da doğrular şekilde yazmışlar tecrübelerimizi.

1. günlük (en alttaki yorumlardan başlayın)
2. günlük

Kötü bir insan yoktu bizimle muhattap olan. Mecbur olmasalarda; o kadar "okumuş adamın" fotoğrafçı bir askerden yediği kazığı, yetmiyormuş gibi, şiir kitabı satan bir askere de kuzu kuzu ödediği 10 ytl yi acı acı geri aldılar bizim için. Eğitimde merhamet yoktu ama dış etkenlere karşı da bir kalkan vardı üstümüzde. Yasin Teğmen, Apti Asteğmen, Erdal Teğmen, Sermet Teğmen ve Özcan Üsteğmen kadar arkaplanda sürekli bizim için çalışan Mustafa Astsubay ımıza da teşekkürler.

Her sabah "saol" diye bağırmak için güneşin doğuşunu bize izleten komutanlarımızın çabaları için de teşekkürler. Yemekhane kıdemlisi asker Vahit ve "Dede" kantinci Vedat da unutulmaması gereken şahsiyetlerdendir.

3.takım 5.manga nın 13 elema…

apt-build

Gentoo'nun derlemeyi makineye uygun bir şekilde kurarken yapması hız avantajı sağlıyor. Ancak gerçekten aşırı derecede uzmanlık gerektiren ve vakit alan bir dağıtım. Ben Ubuntu'yu apt-get kolaylığı için seviyorum. Ayrıca son kullanıcılar için son derece kullanışlı. Ama gentoo'nun derleme özelliğini de çok istiyordum. apt-build komutunu anlatan yazıyla karşılaşınca çok iyi oldu. Artık dilediğim, hızlı olmasını ve makineme özel derlenmesini istediğim programları apt-build yardımıyla kurabiliyorum.

Türkçe apt-build nasıl belgesi (Anlatılanlar her ne kadar debian için de olsa ubuntu içinde geçerli)

Java'da pirinç saydıralım

Bir başka ödev çalışması bir resimdeki pirinç tanelerini bulmaktı. Bu iş biraz daha zor oldu benim için. Matlab içerisinde bwlabel komutuyla nesneleri sayıp etiketlendirebiliyorsunuz. Benim ise ön işlemeden sonra nesneleri kendi yazdığım bir algoritma ile bulmam gerekti. (Kodlar)

Programın sonuç ekran çıktısı aşağıdaki resimde görülebilir:

Gelelim sayma algoritmasının nasıl çalıştığı konusuna. Yukarıdaki resimde de göreceğiniz üzere ilk olarak yapılan işlem resmin siyah-beyaz tonuna çevrilmesi ve pirinç tanelerinin beyaz olarak net bir şekilde gözükmesidir. Bu iş için ön işlem yapılmıştır. Bütün bu işler için JH Labs Java görüntü işleme kütüphanesi kullanılıyor. İlk olarak Threshold filtresi uygulanıyor. Bu filtre yardımıyla varsayılan olarak 173'ten (pikseller 0-255 arası renk kodlarına sahip) aşağı olan renkler siyaha, yukarı olan renkler beyaz'a dönüştürülüyor. Daha sonra bu filtrenin değiştirdiği resim üzerinde kirlilikleri (gürültüleri) temizlemek için ReduceNoiseFilter uy…

Java'da Görüntü İşleme

Sayısal görüntü işlemi dersi kapsamında resimler üzerinde basit filtreleme işlemlerini yapan bir program yazmamız istendi. Matlab ile yapmamız gerekiyordu, ancak ben matlab ile yapmak yerine bu işi java'yla yaptım. Matlab'a nedense bir türlü için ısınmıyor. İstenen lisans ücreti ve yeni bir dili öğrenmeme isteği ısınmama konusunda önemli nedenler sanırım.

Neyse konumuza dönelim. Bu filtreleri sıfırdan java'da yazmaya kalkışınca ne kadar zor olduğunu gördüm (:D). İnternette biraz araştırma yapınca bu iş için özel filtreler üretmiş olan jhlabs sitesini buldum. Her ne kadar filtreleri Java Image Editor için hazırlamış olsa da uygun ayarlamalarla rahatça kendi programımda da kullanabildim. Filtreleri indirip kendi programlarınızda da kullanabilirsiniz. Ama lisansına uymanız gerekmektedir. Benim programın zip dosyasını indirip içerisindeki kaynak kodları inceleyip, nasıl kullanıldığını da görebilirsiniz. Kendimin yazmaya çalıştığı bir kaç filtreyi de (Threshold filtreleri) gör…

ÇizBakalım

İlk olarak fazlamesai'de haberiyle karşılaştığım çizbakalım oyunu bağımlılık yapabilecek bir oyun. Çizim yaratıcılığını ve kelime bilgisini arttırdığına inanıyorum. Bir kaç kere denedim, gerçekten eğlenceli olabiliyor. Bir kelimeyi anlatırken çok yaratıcı bir şekilde çizdiğiniz zaman tebrik almanız da ego tatmini açısından hayli güzel. Neyse sizin de bu güzel oyunu denemenizi isterim. Hoşunuza gidecektir. Tabi vaktinizi alacağı kesin. Ha bir de insanda tablet alma isteği uyandırıyor daha iyi çizebilmek için :D

Java 6 mustang (1.6)

Java 1.6 sonunda çıktı. Hemen denemek için dizüstüne ve okuldaki çalışma bilgisayarıma kurdum. Kurduktan sonra farkettiğim en önemli özellik Eclipse'in daha hızlı açılıyor olması ve işlemlerin hızlanmış olması. Her ne kadar kurulum aşamaları biraz zorlasa da kurduktan sonra 1.5 sürümünü doğrudan kaldırdım. Şu an dizüstünde sadece 1.6 var ve sorunsuz çalışıyor.

Ubuntu için kurulum bilgisi almak için aşağıdaki linkleri deneyebilirsiniz (Windows'ta zaten exe indirip kuracaksınız):

http://tuxicity.wordpress.com/2006/12/07/installing-jdk-6-rc-mustang-in-ubuntu-edgy/
http://munckfish.net/blog/archive/2006/12/15/howto-packaging-java-6-for-ubuntu/
Debian kurulumu için
Java 6 indirme sayfası
Java 6 özellikleri

Yazı Yazabiliyorum...

Lanet olası beta'ya geçiş yüzünden (benim hatam olmasına rağmen blogger çalışanlarını suçlayacağım :D (Ne kadar da yüzsüzüm (Bu parantezlerde lisp gibi oldu ya (çok sevinçliyim, yazı yazabiliyorum)))) 2 haftadır yazı atamıyorum. O kadar çok alışmışım ki, bu yazı yazamama süreci ben de stres birikmesine neden oldu. Bu geçiş tam da Mehmet'in acemiliğine denk gelince Mehmet'in ilk yazıyı atmasını beklemem gerekti. Bu iki hafta boyunca biriktirdiğim yazıları sırayla atacağım. Amiyane tabirle "yazı manyağı" yapacağım eğer ki herhangi bir okuyan kaldıysa :(

acemi asker geri döndü :)

Başladım yeniden; önceden hazırlanmış, planlanmış yaşamıma. İlk bölümü bitti askerliğin, 18 günde pek çok anı ve öğretisiyle. Henüz çıktım dışarı, İstanbul içindeydim haritaya göre ama 4 dönüm arazi içerisinde geçti günler, arada bir uçakları görünce hatırladım sadece hangi şehirde olduğumu.

Her insan yaşamalı, ve düşünüp anlamalı; aslında ne kadar kolay ve güzel bir hayat yaşadığını. Ve bunu ona sağlayanın; hiç tanımadığı insanların, hiç bilmediği yerlerde ne zorluklarla göğüslediğini.

Rahat bir acemilik geçirdim, ama rahat olanı bile gerçekten zordu. Dağa çıkıp, bisiklete binen, tüfek ile atış yapan biri olsanızda zorlanıyorsunuz. Bunun yapılması gerektiğini biliyorsunuz, ama zorlandığınızı görünce aslında pek de zorluklara hazır olmadığınızı görüyorsunuz. Çok daha fazla çalışmak gerek.

Yeni çıktım daha, birkaç saat oldu. Toparlayamadım kafamı, düşünüp yorumlayamadım bazı şeyleri. İlerleyen günlerde yazacağım yaşadıklarımızı. Çok güzel şeylerin yanında çok zor anlar da geçirdik. Bir ya…

Askere neler götürüyorum

Malumunuz, askere aldılar bizi. Zorla aldılar ama, defalarca gittim şubeye alsınlar diye. Ve yerimiz belli oldu, gitme günü geldi. Bugün tamamladık alacaklarımızı. Bir çok efsane sonucu şöyle bir liste çıktı, belki işine yarayanlar olur:

bloknot ve kalem
askılı cüzdan
3 kalın 5 ince siyah çorap
sabun ve sabun kutusu
traş takımı çantası
traş köpüğü,bıçağı ve kolonyası
diş fırçası ve macunu
bepanthene el-yüz kremi
mantar kremi
şampuan
ayakkabı boyası
mavi renk yüz havlusu
2 çift (alt ve üst) içlik takım
6 takım iç çamaşır(2si iç cepli)
küçük dikiş takımı
talk pudra
tırnak makası

Java RMI

Java RMI (Remote Method Invocation - Uzak Metod Yürütme) programcının dağıtık Java uygulamaları yaratmasını sağlar. Remote java nesnelerindeki metodlar diğer Java sanal makinelerinden çağrılabilir (farklı sunuculardan da). RMI nesne serileştirme kullanarak gerçek nesne yönelimli çokbiçimliliğini destekleyerek parametrelerin aktarımını sağlar. Java RMI Java SE ile varsayılan olarak gelmektedir.
RMI bir arayüz, bir sunucu (arayüzün gerçekleştirimi) ve bir istemciden oluşur. Bizim örnek RMI projemiz çok basit olacak, basit bir toplama işlemi yapacak.

Arayüz sınıfımız aşağıdaki şekildedir:

Sunucu sınıfımız yukarıda gösterdiğimiz arayüzü gerçekleştirecektir. Böylece arayüz içerisinde tanımladığımız hizmetleri (metodlar) sağlamış olacaktır. Sunucu sınıfımız aşağıdaki şekildedir:

Ve bu sunucudaki hizmeti kullanabilmek için basit bir istemci yazalım. Bu istemci sadece RMI registry'e kaydetmiş olduğumuz sunucunun hizmetini talep edecek. İstemci sınıfımız aşağıdaki şekildedir:


Yukarıdaki sını…

And death shall have no dominion

Sonunda Solaris'i izledim. Şimdi Rus versiyonunu izlemek gerek. Belki de kitabı bulup okumak.

"It can be argued that 2001 deals with the relationship between humans and machines and the transformation of humanity due to those relationships, while Solaris deals with the relationships between humans themselves and the transformation of the individual due to those relationships. As the movie explains, "what we really need is a mirror"."

Java XML Parsing

Dağıtık sistemler dersinin bir önceki ödevi RMI kullanarak web üzerinden üç siteden RSS ve XML hizmetlerini kullanarak verileri çekerek basit bir arayüz ile kullanıcıya sunmaktı.

Bu proje iki temel parçadan oluşuyor. Birinci parçası bu yazıda anlatacağım XML parsing parçası. XML parsing işlemi için üç farklı API kullanmanız mümkündür.

SAX: Olay tabanlı, kullanımı kolay bir parserdır. Ancak rastgele bir etiketi bulmak zorlayabilir. SAX ayrıca verimlidir. Büyük XML dosyaları için kullanılması zorunludur. Çünkü belgenin hepsini belleğe almamaktadır.
DOM: XML belgelerini bir ağaç gibi ele alır. Yazma ve okuma API'sidir. Varolan XML belgeleri okuduğu gibi yenilerini oluşturmada da işe yarar. Her belge Document nesnesi olarak ele alınır, bu nesne sorgulanır, aranır ve güncellenir. DOM yardımıyla rastgele erişimler daha kolaydır. SAX'a nazaran daha fazla hafıza harcar. Streaming uygulamaları için uygun değildir.
JAXP: SAX ve DOM'u ortak kullanarak iş görür.
(Bunların dışında JDOM, d…

İlginç kodlama örnekleri

Dzone üzerindeki haberlere göz atıp ilginç olanlarını açıp okurum. Bu tip haberlerden biri Java'da "eşittir" kontrolünün zorluğundan bahsediyordu. Evet gerçekten "eşittir" kontrolü zordur. Önce nesnenin null olmadığını kontrol etmelisin. Sonra iki nesneyi karşılaştırabilirsin.
Neyse, asıl konumuz benim bu haberden yönlendiğim The Daily WTF sitesinde karşılaştığım ilginç kodlama örnekleri. Burada bu örneklerin bağlantılarını vermek istedim. Gerçekten şaşırtıcı kodlar ve yorumlar içeriyor:
http://thedailywtf.com/forums/thread/103463.aspx

Bu bağlantıdaki yazıdan önceki yazılara da ulaşabilirsiniz. Ancak bütün bu yazılar ingilizce.

Unutmadan örnekler ile ilgili yorumlar da güzel. Aklınıza gelmeyen bazı yöntemler açıklanabiliyor.

Mesela
if (Math.max(1, 2) == 2) return;İfadesi için Java'da boş blok compiler hatasını aşmak için kullanılmış olabileceğini söylüyor. Bu şekilde bu satırın yazıldığı satırdan sonraki kısımlar yoruma alınmış oluyor. Bu şekilde alışılmışın dışı…

ClamWin

Ubuntu kullanmaya başladıktan sonra Linux için antivirüs programı olarak ClamAV kullanmaya başlamıştım. Windows için AVG Free ve Avast kullanıyordum. Ancak AVG'nin artık ücretsiz dağıtım sağlamayacak olması Avast'la yetinmeyi gerektiriyordu. Acaba Clam'in Windows sürümü var mı diye bakarken ClamWin ile karşılaştım, hoşuma gitti. Windows yüklü bilgisayarlarda iki tane antivirüs barındırma hastalığım olduğu için AVG Free yerine artık ClamWin kullanmaya karar verdim.