import com.bora;
Bora Demir's Personel Blog Site..
Tuesday, April 6, 2010
Volkan Kerem Güzel Malatya Emret Komutanım !!!
Sadece 40 günü kalmış olan kardeşimizi saygıyla anıyoruz : )
Wednesday, August 26, 2009
RichFaces Tips And Tricks
Karşılaştığım kadarı ile bazı richfaces notlarımı sizinle paylaşmak istiyorum.
• a4j:outputPanel tagini ajaxRendered=true ile kullanırsak..bu component in içine
koyulmuş bütün compononentlerin, ekrandaki herhangi bir ajax tetiklemesi ile update
edilecegi anlamina gelir.yani her ajax tetiklemesi için reRender içinde bu componenti koymakla uğraşmak yerine böyle bir panelin içine aliriz.Örnek vermek gerekirse, sayfamızda mesajlari göstermemiz için bir message componenti var diyelim ve ekrandaki her ajax olayı için buranın güncellenmesi gerekir. Böyle bir durumda bu
message component ini a4j:outpıtPanel içine koyarsak, her ajax olayının reRender
özelligi içerisine message componentinin id sini vermek zorunda kalmayız.
• Diyelim ki böyle bir panel açtık,ajaxRendered=true dedik içine de ajax olaylarında
güncellenecek componenetleri yerleştirdik. Fakat sayfamıza da öyle bir ajax olayı
eklemek istiyoruz ki sadece bu olay için bu panelin güncellenmemesi gerektigini
düşünüyoruz. bu durumda; ajax olayını yazdıgımız yerde limitToList=true dersek
sadece ilgili olayın reRender özelligi içerisine koydugumuz componentler
güncellencektir.
• Ekrandan tetiklenen ajax olayları, server tarafina her defasında bir diğer istek
bitmeden gönderilebilir. Bir input alan düşünün ve onkeyup olayına bir ajax
bağladınız. İlgili ajax componenti basilan her tuşu server a yollar ve sizin o karakter ile ilgili logic blogunuzu çaliştirir. Ama ilk giden istegin ilk geri dönecegini garanti etmez. Böyle bir karışıklığa sebebiyet vermemek için, kullanılan ajax componenti üzerine eventsQueue özelline bir isim veririz ve bu isimle server a gönderilen istekler gönderilme sırasına göre server tarafinda çaliştirildiktan sonra ekrana geri gönderilir. Bir iş bitmeden diğer işlem yapılmaz.
• Aynı şekilde requestDelay özelliği mevcuttur ajax eventlerini tetikleyen richfaces
componentlerinde.( , , ,
, ) Bu da server tarafina gönderilecek requestlerin kaç
milisaniye aralıklarla gönderilmesi gerektiğini belirlememize yardımcı olur.
• ignoreDupResponses özelliği ise serverdan gelen response ların sıralı bir şekilde
ekranı güncellemesi sağlar. Fakat bu özellik server a request gönderme sırasında
henüz dönmeyen bir request olsa bile ikinci requestin gönderilmesini engellemez. Bu
özelliğin tek faydası ekrana gelen response ları sıralı bir şekilde işlemek ve ekran
güncellemesi sırasında olası bir karışıklığı önlemektir.
• Bir diğer özellik olan timeout özelliği ise girilen değer kadar(ms) süre geçtikten sonra hala server tarafindan bir response dönmüyorsa beklemeyi sürdürmeden ilgili işi bitirmek için kullanılır.
• ajaxSingle=true diyerek geçtiğimiz ajax olayları sadece ajaxi tetikleyen componentin ve bu compoenentin içerisindeki parametrelerin değerlerini server a gönderir. Aynı form içerisinde bulunmasina rağmen diğer hiçbir componentin değeri bean üzerine yapişmaz. Fakat tabi bu özellik combo larda filan geri dönüşte request mapte value aradıgından ötürü bazı problemlere yol açabilir. Bu durumu önlemek için de böyle gereksinimi olan componentleri a4j:region componenti içerisine alirsak bu component içerisindeki componentler de, ajaxSingle=true demiş bile olsak değerlerine ilgili scope daki bean üzerine yapıştıracaktır.
• Düşünün ki bir form’unuz var ve içerisinde inputlariniz. Size sadece bu input
değerlerinin valid olup olmadığı lazim. Yani form içerisini validate etmek istiyorsunuz fakat ilgili input değerlerinin de bean üzerine yapişmasini istemiyorsunuz. Bu durumda ilgili ajax olayına bypassUpdates=true demelisiniz.
• Ekraninizdan bir ajax request gönderdiğinizde yine ekranda mevcut olan bir bölümü
güncellemek istersiniz genelde. Fakat bazı durumlardan server tarafindan ilgili işlemle bağlantılı bir şekilde veri göndermeniz gerekebilir. Böyle durumlarda kullanılmak üzere ajax componentlerinde data adlı bir özellik bulunmaktadır. Örnek kullanım: oncomplete="alert(data)"/>.Örnekte görüldüğü üzere istemci tarafina bu şekilde custom veriler ulaştırılabilir.
• a4j:log : Bu component sayfaya yerleştirildiğinde ekrana herhangi bir görüntü
getirmez fakat ekran geldikten sonra ctrl + shift + L kombinasyonu ile ekrana bir
popup getirilir ve içerisinde request data, response data, DOM tree vs gibi debug
bilgileri gösterilir. Ayrıca defaılt tuş kombinasyonu
Şeklinde düzenlenebilir. Bu durumda . ctrl + shift + F ile ekran gösterilecektir.
• a4j:status: Bu component ekrandaki ajax olaylari sirasinda kullaniciya bilgi vermek için kullanılabilir. Ajax olayinin başlamasini ve bitmesini bu component üzerinden kontrol ederek ilgili işlemlerimizi gerçekleştirebiliriz. Örneğin yeni kayit eklediğimiz bir sayfa olsun ve bu sayfa ajax event ile gönderilip kayit işlemi gerçekleştirilsin. Kullanıcı kaydet butonuna bastıgı zaman kaydetme işlemi başlayacaktır fakat bu önemli bir işlev oldugu için veri kaybını önlemek adına önlem almak gerekmektedir. Kullanıcı kaydet butonuna basıp ajax event ini tetiklediği zaman ekrana bir modal window açip “bekleyiniz..” dersek ve ajax event bittigi zaman bu window u kapatirsak gayet şık ve güvenli bir insert sayfamız olmuş olur. Örnek vermek gerekirse;
Şeklinde bir modal window koyduktan sonra sayfamıza bir a4j:status eklersek;
onstop="Richfaces.hideModalPanel('loadingPanel');">
Ajax event tetiklendiği zaman bu status devreye girer ve ekranı bloklayarak işlemin
yapıldıgına dair bir resim görüntüler.Ayrıca bu component in for özelligi ile de sadece ilgili AjaxContainer için çalişmasi sağlanir. for=ilgiliAjaxContainerId
• a4j:outputPanel tagini ajaxRendered=true ile kullanırsak..bu component in içine
koyulmuş bütün compononentlerin, ekrandaki herhangi bir ajax tetiklemesi ile update
edilecegi anlamina gelir.yani her ajax tetiklemesi için reRender içinde bu componenti koymakla uğraşmak yerine böyle bir panelin içine aliriz.Örnek vermek gerekirse, sayfamızda mesajlari göstermemiz için bir message componenti var diyelim ve ekrandaki her ajax olayı için buranın güncellenmesi gerekir. Böyle bir durumda bu
message component ini a4j:outpıtPanel içine koyarsak, her ajax olayının reRender
özelligi içerisine message componentinin id sini vermek zorunda kalmayız.
• Diyelim ki böyle bir panel açtık,ajaxRendered=true dedik içine de ajax olaylarında
güncellenecek componenetleri yerleştirdik. Fakat sayfamıza da öyle bir ajax olayı
eklemek istiyoruz ki sadece bu olay için bu panelin güncellenmemesi gerektigini
düşünüyoruz. bu durumda; ajax olayını yazdıgımız yerde limitToList=true dersek
sadece ilgili olayın reRender özelligi içerisine koydugumuz componentler
güncellencektir.
• Ekrandan tetiklenen ajax olayları, server tarafina her defasında bir diğer istek
bitmeden gönderilebilir. Bir input alan düşünün ve onkeyup olayına bir ajax
bağladınız. İlgili ajax componenti basilan her tuşu server a yollar ve sizin o karakter ile ilgili logic blogunuzu çaliştirir. Ama ilk giden istegin ilk geri dönecegini garanti etmez. Böyle bir karışıklığa sebebiyet vermemek için, kullanılan ajax componenti üzerine eventsQueue özelline bir isim veririz ve bu isimle server a gönderilen istekler gönderilme sırasına göre server tarafinda çaliştirildiktan sonra ekrana geri gönderilir. Bir iş bitmeden diğer işlem yapılmaz.
• Aynı şekilde requestDelay özelliği mevcuttur ajax eventlerini tetikleyen richfaces
componentlerinde.(
milisaniye aralıklarla gönderilmesi gerektiğini belirlememize yardımcı olur.
• ignoreDupResponses özelliği ise serverdan gelen response ların sıralı bir şekilde
ekranı güncellemesi sağlar. Fakat bu özellik server a request gönderme sırasında
henüz dönmeyen bir request olsa bile ikinci requestin gönderilmesini engellemez. Bu
özelliğin tek faydası ekrana gelen response ları sıralı bir şekilde işlemek ve ekran
güncellemesi sırasında olası bir karışıklığı önlemektir.
• Bir diğer özellik olan timeout özelliği ise girilen değer kadar(ms) süre geçtikten sonra hala server tarafindan bir response dönmüyorsa beklemeyi sürdürmeden ilgili işi bitirmek için kullanılır.
• ajaxSingle=true diyerek geçtiğimiz ajax olayları sadece ajaxi tetikleyen componentin ve bu compoenentin içerisindeki parametrelerin değerlerini server a gönderir. Aynı form içerisinde bulunmasina rağmen diğer hiçbir componentin değeri bean üzerine yapişmaz. Fakat tabi bu özellik combo larda filan geri dönüşte request mapte value aradıgından ötürü bazı problemlere yol açabilir. Bu durumu önlemek için de böyle gereksinimi olan componentleri a4j:region componenti içerisine alirsak bu component içerisindeki componentler de, ajaxSingle=true demiş bile olsak değerlerine ilgili scope daki bean üzerine yapıştıracaktır.
• Düşünün ki bir form’unuz var ve içerisinde inputlariniz. Size sadece bu input
değerlerinin valid olup olmadığı lazim. Yani form içerisini validate etmek istiyorsunuz fakat ilgili input değerlerinin de bean üzerine yapişmasini istemiyorsunuz. Bu durumda ilgili ajax olayına bypassUpdates=true demelisiniz.
• Ekraninizdan bir ajax request gönderdiğinizde yine ekranda mevcut olan bir bölümü
güncellemek istersiniz genelde. Fakat bazı durumlardan server tarafindan ilgili işlemle bağlantılı bir şekilde veri göndermeniz gerekebilir. Böyle durumlarda kullanılmak üzere ajax componentlerinde data adlı bir özellik bulunmaktadır. Örnek kullanım:
• a4j:log : Bu component sayfaya yerleştirildiğinde ekrana herhangi bir görüntü
getirmez fakat ekran geldikten sonra ctrl + shift + L kombinasyonu ile ekrana bir
popup getirilir ve içerisinde request data, response data, DOM tree vs gibi debug
bilgileri gösterilir. Ayrıca defaılt tuş kombinasyonu
• a4j:status: Bu component ekrandaki ajax olaylari sirasinda kullaniciya bilgi vermek için kullanılabilir. Ajax olayinin başlamasini ve bitmesini bu component üzerinden kontrol ederek ilgili işlemlerimizi gerçekleştirebiliriz. Örneğin yeni kayit eklediğimiz bir sayfa olsun ve bu sayfa ajax event ile gönderilip kayit işlemi gerçekleştirilsin. Kullanıcı kaydet butonuna bastıgı zaman kaydetme işlemi başlayacaktır fakat bu önemli bir işlev oldugu için veri kaybını önlemek adına önlem almak gerekmektedir. Kullanıcı kaydet butonuna basıp ajax event ini tetiklediği zaman ekrana bir modal window açip “bekleyiniz..” dersek ve ajax event bittigi zaman bu window u kapatirsak gayet şık ve güvenli bir insert sayfamız olmuş olur. Örnek vermek gerekirse;
Şeklinde bir modal window koyduktan sonra sayfamıza bir a4j:status eklersek;
Ajax event tetiklendiği zaman bu status devreye girer ve ekranı bloklayarak işlemin
yapıldıgına dair bir resim görüntüler.Ayrıca bu component in for özelligi ile de sadece ilgili AjaxContainer için çalişmasi sağlanir. for=ilgiliAjaxContainerId
Monday, August 24, 2009
Hayırlı teskereler..
Canımız, dostumuz biricik kardeşimiz Selmanımızı askere gönderdik..içerdeki 12. gününü yaşayan dostumuza ve biz sevenlerine sabır diliyoruz..
özlüyoruz kardeşimizi belki ama kısa bir zaman sonra döneceğini ve bu askerlik denenen aktivitenin bir şekilde yapilmasi gerektiği bilinci ile onu beklemeye devam ediyoruz
rastgele dostum..
12 den sonra 143!!!
biter mi lan : ))
özlüyoruz kardeşimizi belki ama kısa bir zaman sonra döneceğini ve bu askerlik denenen aktivitenin bir şekilde yapilmasi gerektiği bilinci ile onu beklemeye devam ediyoruz
rastgele dostum..
12 den sonra 143!!!
biter mi lan : ))
Thursday, September 18, 2008
Captcha örneği (Rastgele resim üreterek secure olmak sorunsalı)
Geçenlerde her request için random image üretmekle ilgili bir ihtiyaç doğdu. Captcha diye adlandırılan bu sistemle ilgili biraz ar-ge yaptıktan sonra güzel bir kod örneği buldum. Elime gecen örnegi servlete çevirip jpg olarak response etmesini sağladım ve kullandım. Oluşacak resmin boy ve enini parametre olarak almakta, custom arkaplan rengi vs seçip customize edilebilcek olan bu servlete buradan erişebilirsiniz..
Rastgele..
Rastgele..
Monday, August 18, 2008
JSF 1.2 Impl. & Richfaces 3.2.1 GA
(1) buradan indirebileceğiniz dosya içerisinde tomcat 6.0.* ve örnek bir richfaces 3.2.1 modulu bulunmaktadır. Gerekli jarlarin yerlerine konmasi ile birlikte sorunsuz çalişan bu ikili, richfaces demolarını denemek veya bir giriş yapmak isteyenler için faydali olur umarım.
1- http://rapidshare.de/files/40265095/JSF12AndRichfacesOnTomcat6.rar.html
Rastgele..
1- http://rapidshare.de/files/40265095/JSF12AndRichfacesOnTomcat6.rar.html
Rastgele..
Monday, March 31, 2008
Şampiyonluk yarınlara kaldı ..
İnöüdeki beşiktaş maçları oldum olası hep içimi kaynatır farklı bir mutluluk verir bana..orada olmak 1200 kişi ile takımına destek verip bir de galip olarak ayrılmak..işte tarifi imkansız duygulardır bunlar :) zor tabi üç senedir insanları kendi sahalarında üzüyor umutlarını bir başka bahara bırakıyoruz..yine aynı tarife oldu..kazandık önümüze bakıyoruz
haa
bir de şu desibel olayından bahsedelim..hep söylerler inönüde desibel rekoru kırdıklarından filan ..elektrik süpürgeleri de 100 desibel ses çıkarıyormuş : )
şu son maçta gördük 1200 kanarya nasılda yıktı inönüyü başlarına
demek ki o bağıran desibel değil sibelmiş sibel :))
Websphere Application Server 6.1 Üzerinde SunJSSE
Merhabalar iki gün önce karşılaşmış olduğum bir problemi belki daha sonra birilerine lazim olur diyerekten yazmaya başlıyorum. YKS sistemi üzerindeki posnet servisi ile ilgili bir çalışma yapmam gerekti ve ekranlarımı tasarlamaya başladım. Güvenlik seviyelerindne ötürü posnet servisini çagırabilmek için secure connection istendigini öğrendim..uygulama sunucusu olarak was 6.1 kullanmaktayım ve default olarak ssl provider ların hepsi ibm in kendi JSSE implementasyonu(Java Secure Socket Extension). YKS posnet servisi için ise sun firmasının dağıtmakta olduğu JSSE implementasyonunu kullanmak zorundayım. bu nedenle was üzerinde bazı konfigurasyonlar yapmak zorundaymışız :)
öncelikle
- WASHOME\java\jre\lib\security dizinin içerisindeki java.security dosyasında ibm'in security provider'larına ek olarak uygulamada öncelikli kullanılmak üzere security.provider.1=com.sun.net.ssl.internal.ssl.Provider
(Sun Security Provider) satırını eklediyoruz.daha sonra
Uygulama içerisinde ise posnet isteğimizi yapmadan önce sistem üzerinde bazı konfigurasyonlar yapmamız icab etmekte
System.setProperty(
"java.protocol.handler.pkgs"
,"com.sun.net.ssl.internal.www.protocol");
Security.addProvider
(new com.sun.net.ssl.internal.ssl.Provider());
Rastgele..
öncelikle
- WASHOME\java\jre\lib\security dizinin içerisindeki java.security dosyasında ibm'in security provider'larına ek olarak uygulamada öncelikli kullanılmak üzere security.provider.1=com.sun.net.ssl.internal.ssl.Provider
(Sun Security Provider) satırını eklediyoruz.daha sonra
Yine java.security dosyasında, uygulamada IBM'in değil de Sun'ın SocketFactory class'ını kullanmak
üzere
ssl.SocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
satırlarını ekliyoruz.
Uygulama içerisinde ise posnet isteğimizi yapmadan önce sistem üzerinde bazı konfigurasyonlar yapmamız icab etmekte
System.setProperty(
"java.protocol.handler.pkgs"
,"com.sun.net.ssl.internal.www.protocol");
Security.addProvider
(new com.sun.net.ssl.internal.ssl.Provider());
Rastgele..
Subscribe to:
Posts (Atom)