29 Nisan 2011 Cuma

APACHE WICKET JAVA ILE WEB PROGRAMLAMAYA YENI BIR YAKLASIM

Merhaba Arkadaşlar,

Bugün web programlama dünyasında bence çok önemli bir mantık devrimi diyebileceğimiz java dünyasındaki Apache Wicket Framework unu konuşuyor olacağız..

Evet, Wicket nedir? ne değildir? bu sorular üzerinden konumuza giriş yapalım dilerseniz.. Wicket ler klasik önceki frameworklerimizden farklı olarak (JSF,Struts vs. gibi) aynı proje veya farklı proje olsun bilesenlerimizi bir sınıf altında saklanıp daha sonra tekrar kullanmamıza olanak tanıyan bir yapıda çalışıyor.. İş yönetimini bilesenlerin olusturulup saklandığı java sınıfları ve html sayfalarında gerçekleşmekte. İşte wicket java application tadında bize web application yapmamıza imkan veren bir yapı..

İsterseniz bir "Merhaba Dünya" diyelim.. :)



Uygulamamızı netbeans de yapıyor olacağız. Bu yüzden wicket plugin i netbeans imize yüklenmiş olması gerekmekte. Dolayısıyla bu pluginin var olduğunu düşünerek bir wicket projesi açıyoruz.. Açılınca resimdeki gibi bir yapı karşımıza çıkıyor. Dikkat etti iseniz daha önce söylediğimiz gibi projemiz sadece java ve htmml dosyalarından oluşuyor... Ayrıca yapıda bazı java ve html dosyalarının isimlerinin aynı olduğunu görüyoruz.. Evet wicket aynı isimli java ve html sayfalarında bağlantı kurarak kendisini konfigure ediyor...



Evet yavaşdan başlayalım ne dersiniz?





Web Application java dosyamız.. Bu dosya main fonksiyonumuz desek doğru olur herhalde :). Görüldüğü üzere bize HomePage sınıfı döndürmekte yani ana sayfamızı ..









HomePage java dosyamıza biraz dikkat kesilelim. Burda ilk gözümüze çarpması gereken HomePage in BasePage i extend etmesi bunu bir kenarda tutalım.. İkinci olarak bir tane label ekliyoruz sayfamıza ve bunu swing de label ekleme kolaylığında yapıyoruz..
Şimdi de HomePage in extend ettiği BasePage e bakalım..





BasePage imize baktığımızda beklediğimiz üzere bir WebPage olduğunu görüyoruz.. super komutu ile extend ettiği WebPage sınıfına modelimizi gönderiyoruz.. Burada sınıfımızlarımızın bulunduğu paketin noktadan sonraki stringini aldıktan sonra "HeaderPanel" ve "StyleSheetReference" sınıflarımızı sayfamıza ekledik.. StyleSheetReference sınıfı reference olarak eklenmiş durumda ve css dosyamızı çağırıyor.. Burda HeaderPanel dikkatimizi çekiyor.. Bakıyoruz java sınıfı projemizde...




Burada bir adet label gördük.. İlginç kısım ise "exampleTitle" string i BasePage de oluşturulurken parametre olarak gönderiliyor..

Son olarak kısaca html sayfalarımıza bakıyoruz..






Sınıflarda oluşturduğumuz yapıları wicket:id attributeı ile çağırıyoruz.. İşte bu kadar.. Wicket projemiz tamam glassfish veya tomcatiniz ile run edebilirsiniz..


Herkese Kolay gelsin.

24 Nisan 2011 Pazar

TCP SEQUENCE, ACKNOWLEDGEMENT, WINDOWING

Merhaba arkadaşlar,
Herkese şimdiden iyi yıllar. Yılın son yazısını yazıyorum... Çok çalışmam gereken bir yıla merhaba diyeceğim...
Neyse çok fazla lakırdı etmeden inceden derdimi anlatmaya başlayayım...Bu akşamki konumuz TCP...
TCP; OSI Modelimizin Transport katmanının iki büyük temsilcisinden biridir... TCP deyince aklımıza 3 önemli özelliği düşüverir;
1-) HEDEFE BAĞLANTI
2-) SIRA(SEQUENCE) NUMARALI PAKETLER
3-) GÜVENİRLİLİK

Aslında bakarsanız bu özelliklerin varlığı hissetdiğimiz uygulamalar ile hergün sarmaş oluyoruz.. Web sitesi çağırımları, dosya upload-downloadları gibi alışageldik bir çok işimizde bu protokol çakı gibi karşımıza çıkıyor...

Gelin biraz Hedefe Bağlantı özelliğinden konuşalım...

Aslında bu özellik bir çok yerde duyduğumuz three-way handshake... Bu süper üçlü geometri deki muhteşem üçlü veya 3 silahşörler (daha fazla bilgi için google da 3'ü taratın...) gibi orjinal bir olay.. Hedef ile sıcak temas kuruyoruz.. Şöyle ki..





Neler oluyor.. Gelin bir bakalım.. Öncelikle bağlantıya geçmek istediğimiz server'a bir tcp paketi yolluyoruz..Paketimiz 10 numara bir paket:D yani sequence numarası 10... bu paket serverımıza ulaşıyor ve cevap olarak seq 20,ack 11 numaralara sahip bir paket cevap olarak gidiyor.. Bu şu anlama geliyor.. ACK tarafında 11 denerek ben senin seq 10 numaralı paketini aldım ve şimdi 11 için hazırım.. Bizde durmuyoruz ve hemen seq 11 numaralı paketi sallıyoruz ileriye.. Karanlıkta kalan yerler var farkındayım.. Seq 20 de nerde çıktı? Bunu çifte takip gibi düşünebiliriz.. Orda server tarafında da 2.paket ile beraber başlamış oluyoruz.. Peki bu numaralar nerden çıktı? Ben uydurdum ama inanın bilgisayarda böyle yapıyor... Yani just make it up!!!!

Şimdi son olarak windowing'den bahsedelim..

Windowing kritik bir mevzuu ey Türk milleti... Kısaca şöyle diyelim.. Network işlemlerimizde birim zamanda ne kadar paket transferi yapabileceğimizin; gönderdiğimiz SEQ numaralarına göre aldığımız ACK nolu cevaplar ve bu cevaplara göre bir sonraki seferde göndereceğimiz paket sayısının buna göre ayarlanmasıdır. Waww!!
Süper bir olay bu... File Download:Time remaining 10 minute.. :D Sakın bu konu ile alakası olmasın şakacı.... Aynen dostlar windowing sayesinde birim zamanda kaç paket gönderceğimizi anlıyor ve buna göre hesap yapabiliyor ve dosyayı ne kadar sürede download edebileceğimizi tahmin edebiliyoruz.. Örneklersek; seq numaraları sırası ile 10,11,12,13 olan 4 paket yolladık.. Cevap olarak aldığımız son paketin ack numarası 13 bu durumda 3 paket hedefine ulaşmış 4.paket ulaşamamış.. 3 paket göndererek devam ediyoruz.. Bu konuyu bence biraz daha ayrıntılı araştırın..
Herkese iyi yıllar..

18 Ocak 2010 Pazartesi