<$BlogRSDUrl$>

Thursday, January 29, 2004

Satu lagi bab dpd buku Hibernate in Action boleh didapati di:
Bab 6 : Practical Object/Relational Mapping
Cepat! Cepat! Cepat download sebelum terlambat! :D

Satu product yg dibuat dgn Java, MoneyDance ditawarkan secara percuma kpd semua ahli2 Javalobby di:
MoneyDance

Cit! Kena ganggu selama lebih 2 jam semalam. Tak sempat nak siapkan prototype tu hari ni. Shooot! Tapi, gangguan tu sebenarnya bagus gak krn dpt berkenalan dgn seorg pakar dlm sesuatu bidang. Memang seronok kalau dlm sesuatu projek tu, terdapat pakar yg betul2 pakar utk kita tanya segala scenario, rules and logic. Kehadiran pakar mampu melancarkan penghasilan sesuatu projek dan menjadi salah satu faktor utama utk kejayaannya. Semoga team saya berjaya dpt khidmat pakar ni :)


(0) comments

Wednesday, January 28, 2004

Agak sibuk dgn prototype. Rasanya hari jumaat ni boleh habiskan ver 0.4 of the prototype yg handle use case utama, success scenario. Hehehe, kalau betul, cuti raya haji ni bolehlah godek2 spring. doing... doing... doing...

Rasanya saya tak akan masukkan jsp ww saya ni ke dlm code generator krn ia belum capai tahap yg memuaskan lagi. Codenya agak berterabur, tapi sebab utama ialah krn patternnya belum stabil. Saya masih belum convert form struts tu kpd ww. Utk prototype ni, nak cepat punya pasal, saya gabungkan kedua2 struts dan ww, seolah2 satu application. Walhal, sebenarnya ia adalah 2 web application (.war).

Saya telah cuba menggabungkan kedua2nya, tapi bermasalah krn settings dlm web.xml macam conflict ke antara struts dan ww. Rasanya ada cara, tapi utk tidak membuang masa, saya gabungkan kedua2nya melalui view ww yg merujuk kpd url yg dihandle oleh struts. So, hak struts tu ialah semua operasi CRUD (create/retrieve/update/delete) yg digenerate oleh code gen, dan yg khusus/customise tu, saya buat dlm ww.

Setakat ni, aop yg saya implement dlm prototype ni belum ada apa2 masalah lagi. Ia berjalan dgn lancarnya, Alhamdulillah. Saya agak risau dgn keupayaan cache shift-one cache yg saya guna tu. Ntah stabil ntah tidak. Cukup laju ke, krn bila banyak concurrent access, takut bottleneck kat cache plak! Tapi setakat ni a ok la krn masih prototype. Yg syoknya, kesenangan utk tukar kpd cache lain krn code cache ni berada dlm HANYA satu aspect shj. Tak payah nak cari kat merata2 class yg guna cache ni.

(0) comments

Wednesday, January 21, 2004

Salah satu form yg saya baru siap buat, memakan masa lebih kurang 3.5 saat utk papar, bagi satu rekod yg agak banyak child nye. Masa 3.5 saat ni banyak disebabkan db lookup yg dilakukan lebih dpd 3 utk setiap child. Salah satu cara ialah optimise kan sql. Satu cara lain ialah bubuh cache guna aop.

Setelah terkial2 buat seketika, akhirnya berjaya dan faham bagaimana nak bubuh caching kat setiap DM (data manager) yg code gen saya generate. Selalunya saya guna poincut execute, tapi kali ini, utk tidak merubah kelakuan DM, saya guna pointcut call utk bubuh cache tersebut. Sebab tak guna execute ialah krn execute menyebabkan fungsi cache di embed kan kedlm DM tersebut. Masalahnya, DM ni teramat la banyaknya class yg menggunakannya dan mungkin ada class yg tak mahu ia dicache atau mahu ia dicache tapi pada tahap masa utk flush yg berbeza. Utk membolehkan ini berlaku, call adalah lebih sesuai. Kita perlu hasilkan aspek yg berbeza utk setiap class yg nak kelakuan atau setting cachenya yg berbeza.

Konsep ini adalah lebih luas, tak semestinya dgn DM yg code gen saya hasilkan je. Design DM ni adalah satu design yg cuba capai high cohesion dan seberapa low coupling yg boleh. Disebabkan itu, tiada class lain yg kawal db access utk class nye selain ia. Akibatnya, semua class lain yg nak guna, perlu guna dgn DMnya.

Kesimpulan, mana2 class yg punya ciri2 yg sewaktu dgnnya, bolehlah juga menggunakan cara aop ini. Kiranya, pembelajaran tentang bila nak guna call dan bila nak guna execute. Oh, ya. Bila dah bubuh aspect cache, form utk rekod yg sebelumnya 3.5 saat, sekarang ambil masa 0.5 saat.

(0) comments

Monday, January 19, 2004

Hampir habis baca artikel martin fowler, Dependency Injection, alias IoC (Inversion of Control)

Sekarang baru faham apa kebendanya IoC tu. OK gak. Boleh rnd selepas habis gaduh dgn ww, lagi 1 ke 2 minggu rasanya.

Semalam, baru berjaya buat benda yg teramat la mudahnya tapi punya la terkial2 saya dgn ww, iaitu redirect ke web apps lain dgn parameter berdasarkan apa yg pengguna pilih sebelum redirect. Ia sebenarnya senang aje, tapi punya la tak terror sampai hampir 1 hari suntuk mencari2 caranya. Kunci kejayaannya ialah 4 baris code dlm method doExecute kepunyaan class Action kita:

Redirect act = (Redirect)ActionFactory.getAction("webwork.action.standard.Redirect");
act.setUrl("http://10.1.1.152:8080/namaApps/abcAction.do?id="+s1[0]);
act.execute();
return null;

return null adalah penting krn jika tidak, ww akan terus mencari action/view yg lain utknya.

(0) comments

Sunday, January 18, 2004

Senarai yg dipaparkan guna ww tu menggunakan action yg mengambil senarai dpd db. Bila direfresh berkali2, secara keseluruhannya, performance nye antara 30ms ke 70ms. DB saya guna mysql.

Utk meningkatkan kelajuannya, saya guna aspect cache. Implementation pertama ialah cache yg teramat la mudahnya iaitu menggunakan java.util.Map, implementation java.util.HashMap. Jika map ini null, ambil dpd db dan simpan satu salinan dlm map. Jika map ini dah berisi, ambil dan guna. Hasilnya, kelajuan sistem meningkat kpd antara 0ms kpd 10ms. Yes!

Tapi, implementation cache ini bermasalah kalau db diupdatekan, krn cache yg telah diisi tu, tak akan diupdatekan juga. So, saya guna lib shiftone-cache, ver 1.2
sebagai cache implementation baru utk aspect cache saya. Saya set supaya cache ini 'expire' atau flush isi cache nye setiap 30 saat. Hasilnya, selagi isi dlm cache belum dibuang, saya dapat kelajuan antara 0ms ke 10ms dan isi cache ini masih terkini, paling lewat dlm tempoh 30 saat. Satu balance yg baik.

Oh, ya. Satu lagi point yg saya nak nyatakan ialah, penambahan aspek cache kpd code asal adalah amat kemas sekali. Nak ubah dpd cache mudah kpd cache yg lebih dasat pun teramat la mudah dan kemasnya. Penambahan aspek cache ni kpd code asal, memakan masa tak lebih dpd 15 minit je utk kedua2nya. Ni tak termasuk belajar cara guna cache shiftone tersebut, dll yg tiada kaitan dgn AOP.

Nampak jelas kat mana nak guna AOP ni. Amat jelas. Semoga saya semakin 'nampak' lagi dan lagi kat mana kesesuaian AOP ni. Yes! Allah Maha Besar!!!

(0) comments

Thursday, January 15, 2004

Semalam, berjaya buat satu simple form guna webwork(ww). saya guna selectmap.jsp kepunyaan ww utk paparkan senarai sesuatu. lepas kantul lebih 2 jam, terutamanya krn salah guna select.jsp, rasanya senang plak. tapi, perjalanan saya masih jauh...

Yg menariknya, ww ada velocity equivalent utk setiap reusable jsp nye. Menarik dan produktif, selepas faham cara menggunakannya.

(0) comments

Martin Fowler telah menghasilkan satu artikel menarik tentang IoC:
Dependency Injection

Perbincangan tentangnya di:
Thread perbincangan artikel martin fowler

Perbincangan tentang distributed transaction ke2 di:
Thread perbincangan distributed transaction ke2

(0) comments

Wednesday, January 14, 2004

Sedang belajar webwork... masih tahap 1 lagi...

Hasrat saya ialah utk gabungkan webwork dan spring. Strategi utk percepatkan development, mula2 develop guna tag libs yg wujud dgn begitu banyak, dan bila dah siap, cari page yg perlu dilajukan utk dibuat dlm velocity, atau jsp scriptlet tanpa tag lib.

(0) comments

Mamat mike spille dah hasilkan bhgn ke2 tentang distributed transaction. Boleh check out blog dia di bhgn sebelah kiri blog saya ni. Kalau nak fahamkan distributed transaction, baca, jgn tak baca.

(0) comments

Wah! Tak sangka Nazir, alias rizan dah mula blog sejak akhir tahun lepas. Senyap2 je dia ya. Tahniah, semoga lebih banyak ilmu teknikal dihasilkan, terutama tentang unit test ;)
Nazed's blog

(0) comments

Tuesday, January 13, 2004

Q>terangkan serba sedikit tentang low level utk sistem building automation?

saya cerita apa yg saya tahu/ingat. Utk sistem mbsa tersebut, pendawaian antara PLC Koyo dan semua peralatan2 spt lampu, chiller dll, dibuat oleh technician. tapi, setahu saya, pendawaian tidak dibuat secara direct krn voltan + arus yg dibekalkan dpd I/O PLC tidaklah mencukupi spt lampu memerlukan 230V, sementara PLC 12V rasanya. mungkin saya silap disini, tapi point saya ialah, voltan dan arusnya tak cukup.

so, selalunya technician ni akan sambung dpd I/O plc ni kpd peranti lain yg membekalkan voltan dan arus pada tahap yg mencukupi. I/O plc bertindak lebih sebagai tukang on/off kan shj. bila on, voltan dan arus dibekalkan, bila off, voltan dan arus dimatikan. maaf la, saya tak ingat namanya. 10 tahun lepas ada la belajar semua ni masa diploma dan degree electric, tapi sekarang dah lupa.

bhgn saya pulak, ialah membuatkan satu sistem yg perlu berhubung dgn PLC ini. PLC Koyo menyediakan API nya dlm bentuk MS DLL. Rakan saya hasilkan JNI(java native interface) layer supaya program java saya boleh bercakap dgn DLL Koyo ni. Dia guna C dan ambil masa lebih kurang 2 ke 3 minggu, part time (dia buat 2 ke 3 jam sehari, dan terror gile dlm C). Saya pulak ambil masa lebih kurang 2 ke 3 minggu juga, tapi full time, utk faham sepenuhnya cara utk kawal PLC tersebut guna JNI/DLL tu. Ni krn, API yg dibekalkan adalah agak low level. address conversion, plc id, analog value conversion, reconnection dan lain2 kena handle sendiri. API tu tak bantu. tu yg timbul kes, onkan FCU1, FCU3 ter off!!!

sistem saya provide smart :-) scheduler. lampu dan air cond kena onkan setiap sabtu kecuali sabtu pertama dan ketiga. setting ni buat sekali je, tak perlu setkan tarikh dan ia boleh berfungsi tanpa apa2 gangguan, bertahun2 lamanya. err, setakat ni baru 3 tahun la.


Q>apakah cara paling mudah utk belajar buat sistem building automation ni?

cara paling mudah? saya tak tahu cara mudah krn saya lalui cara sukar, pahit dan lama iaitu selama 1 tahun utk bermula from scratch, sampai la siap beserta site installation dan commisioning. 2 orang buat lebih 90% sistem tu secara full time dan 2 orang lagi part time (beberapa minggu), tolong tang jni tu dan linux+postgresql installation and setup.

awal tahun ni, kami upgrade sistem lama supaya berprestasi lebih baik lagi spt mampu menerima event spt lampu dikesan trip, dll, sampai tahap melebihi 2000 event sesaat (sistem lama hanya mampu sokong beberapa puluh event sesaat je) dan ini semua ambil masa lebih 4 bulan utk siap.

point saya, saya tak tahu apa2 cara mudah utk belajar benda alah ni.

(0) comments

>composition objects nih digunakan untuk ape ye?

dlm oop, 1 object boleh ada hubungan dgn object lain. hubungan tu berbeza dari segi kekuatannya. antara jenis2nya:
1. inheritance
2. composition/aggregation
3. association

cthnya ada 1 object Mamat yg merupakan anak kpd object Mat (inheritance). Semua ciri2 (data/field) spt mata biru, kulit merah, dll diwarisi Mamat dpd Mat. Begitu juga sifat2 dan perangai (methods) Mamat spt rajin membaca, laju lariannya, dll, juga diwarisi dpd bapanya iaitu Mat. Mamat pun boleh ada ciri atau perangai yg tidak diwarisi spt kepandaian dan kecekapan sms yg bapanya tak ada.

Object Mamat ni juga, terdiri (compose of, composition) dpd pelbagai jenis object yg lain spt 2 object tangan, 2 object kaki, 1 object otak, begitu banyak object sel darah merah, dll. Hubungan composition ni amat kuat. Keluarkan object jantung dpd object Mamat ni, habis la alamatnya riwayat hidupnya. Hilangkan 2 object matanya, menyebabkan object Mamat ni cacat akibat tak boleh lihat.

Object Mamat ni juga ada sejumlah object lain yg menjadi kawannya, spt object Man, object Din, object Pian dll. Hubungan jenis ini tidak la kuat, dan selalunya dianggap sebagai association. Apa2 terjadi kpd salah satu object ini, tidak mengganggu object Mamat selain perasaan sedih.

Ada juga jenis hubungan yg lain. Nama saya tak ingat, mungkin tergolong dlm kumpulan aggregation. Saya bagi cth je. Hubungan antara object Beg dgn isi kandungannya. object Beg mungkin ada sejumlah object baju, sejumlah object buku, dll. Hubungannya lebih kuat dpd association, tapi tak la sekuat composition krn setiap object buku tu, tak bergantung kpd object Beg. Kalau dikeluarkan, object Beg tetap wujud dan object Buku tetap wujud.

sikit2 yg saya tahu/ingat...

(0) comments

Friday, January 09, 2004

Setelah saya catch up balik dgn pembacaan forum2 theserverside dan javalobby, beberapa article/thread menarik ialah:
XA Exposed: How 2 Phase Commit works in J2EE
Opinion: Object Identity and how JDK 1.2+ removed a core feature
JBoss 4 Direction Shown with Roadmap Document

(0) comments

Thursday, January 08, 2004

Alhamdulillah, segala puji-pujian utk Allah. Anak ke4 saya selamat dilahirkan pada hari isnin, 10:55 pagi, 5/1/2004 yg lepas.

(0) comments

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