<$BlogRSDUrl$>

Monday, December 27, 2004

Tsunami

Takziah kpd semua mangsa gempa bumi dan ombak besar di Malaysia dan di mana2 jua, terutamanya kpd mereka yg kehilangan anak, ibu, bapa, dan sanak saudara. Sedih gak membaca nasib mereka spt En Zulkifli ini yg kehilangan 5 orang anak. Berat mata memandang, berat lagi bahu yg menanggungnya. Walau bagaimanapun, semoga tabah dan sabar menghadapi ujian yg Maha Esa. Sesungguhnya, Allah lebih menyayangi mereka. Kita dpd Allah, dan kpdNya kita kembali.


Java

ZOË - "Intertwingling Your Email".

Reflexive User Interface Builder 1.1 - UI Builder


Iraq

Video of Mosul suicide bombing.


ThreadLocal, ServletFilter dan AOP

Setelah memasukkan sokongan kpd ThreadLocal utk Castor dlm code generator saya beberapa hari lepas, semalam saya tambah satu ServletFilter khas utk cleanup Castor Database yg mungkin masih 'tergantung' dlm ThreadLocal tu. Approach ini ada sedikit persamaan dgn salah satu approach Hibernate yg menggunakan ServletFilter.

Perbezaannya ialah, seberapa yg boleh, saya guna ServletFilter tu sebagai safety net, iaitu last resort utk bersihkan dan bukan sebagai cara standard membersihkan, kecuali dlm keadaan yg tak dpt dielakkan.

Cairo pun amat menyukai cara ini, tapi utk JDBC krn dia bermain dgn JDBC, tak guna OR mapper.

Sekarang ni tengah test code utk enforce mandatory fields (code java + javascript), masukkan default focus dan email validation (dua2 javascript), diikuti dgn generate view.properties utk biasa (dulu) dan multiple class (yg baru buat ni).

Setakat ini, performance code yg dijana masih agak lembab. Utk insert 11 record ke dlm 9 table mengambil masa lebih kurang 50ms ke 100ms. DB mysql, uP pentium 4. Utk update mengambil masa lebih kurang 16ms ke 20ms. Ini dgn caching dilakukan terhadap mostly read-only tables. Secara umumnya, performance update lebih penting krn selalunya, walaupun tak semestinya, update lebih kerap berlaku dpd insert.

Listing pulak lagi la lembabnya. 1 page secara default akan listkan max sebanyak 10 item shj. Setiap page yg penuh dgn 10 item tu mengambil masa 400ms ke 600ms utk paparan 7 field dpd pelbagai table, utk setiap item.

Sebenarnya, utk insert dan update dah dilakukan 1st round of performance tuning. Utk update, mula2 setiap table menggunakan 1 transaction semasa update. Performance sangat teruk, lebih 100ms. Bila kongsi semua update dlm 1 transaction, performance turun kpd 16ms. Lagipun, update sepatutnya tak berlaku satu persatu, tapi semua table disatukan dlm 1 transaction pun. Kalau fail, sepatutnya rollback.

Utk insert pun sama. Mula2 guna insert 1 table dlm 1 transaction nye yg sendiri. Performance sangat terus, lebih 200ms. Saya implement 1 transaction utk semua insert ni menggunakan ThreadLocal.

Utk listing pun sama gak. 1 transaction utk setiap retrieval. Performance 'hancuss' iaitu lebih 3 saat(!!) utk setiap page dgn 10 item. Bila guna 1 transaction dgn ThreadLocal dan ditutup menggunakan ServletFilter ni, baru la ok sikit performance dia.

Utk improve performance insert dan update dah agak payah gak, tapi utk listing masih ada banyak room for improvement terutamanya caching object yg diretrieve.


Kpd semua peminat ServletFilter yg tak mengenali AOP:
Kesan ServletFilter adalah secara kasarnya, sama dgn aop. Kita boleh letak code sebelum dan selepas code servlet yg lain dan buat keputusan utk tak panggil code servlet yg lain. Sama la dgn aop.

Salah satu perbezaannya ialah aop bukan standard yg dikenali oleh spec servlet jadi susah sikit nak selitkan code tambahan ni menggunakan aop walaupun pun boleeeehh! :D

Satu lagi perbezaannya ialah aop melihat SEMUA code yg wujud spt dgn kaca mata ServletFilter ini. Maksudnya, semua code boleh dilakukan sebelum, selepas dan tengah2 ini, tak perlu standard spec spt ServletFilter utk melakukannya. Ada fahamkan? Ada nampak power aop ka? Anda boleh lakukan macam ServletFilter kat mana2! Feeel the power!! hahahahaha!!


Comments:
ni dah gelak macam mad scientist nih :D
power crazy (gila kuasa) ke hapa..
ehehe, gurau jek :)
 
1kHz, company yg saya kerja sekarang ni memang singkatannya GK, so, memang ngam la :D

ketawa tu bukan apa, semata2 krn seronok code generator saya pun dah semakin power, power! POWER!! HAHAHAHA!!

POWER!! code generator + POWER!! aop = SUPER POWER GILER KUASA!! HAHAHAHA!!

gurau aje ;)
 
hihihi..abg hamdi ada code generator buatan sendiri la.. envy, envy.. tapi kata pakai O/R Mapper, napa buat code generator pulak?

AOP ni dah pakai betul2 la kiranya? dah ada dlm production la?
 
Post a Comment

This page is powered by Blogger. Isn't yours?