<$BlogRSDUrl$>

Tuesday, May 19, 2009

Timbul kembali

Lama betul tak blog.

Kat company sekarang ni, agak strict sikit. Byk gak web site yg kena block. Tapi, itu bukan alasan tak blog. Lebih tepat, malas...

Hari ini, ambil cuti utk service kereta. Ada la masa utk blog sikit...


Grails

Grails 1.1.1 dah keluar. Kami mula2 cuba nak migrate ke grails 1.1, tapi ada masalah besar di mana relationship antara objects yg diload. Habis application2 yg sedia ada. Grails ver baru ni dah selesaikan masalah tu. Farid dlm proses utk migrate code base ke 1.1.1.

Satu lagi keperluan utk migrate ialah Lucene plugin utk 1.1.1 membenarkan search dilakukan dgn menggabungkan sekali attribute tertentu spt project='public news'. Ini penting utk design kami yg berkonsepkan 'project'.


Design berkonsepkan 'project'

Design ni adalah design mudah utk melakukan reuse. Reuse ada byk tahap. Reuse pada tahap class dan module masa code. Reuse pada tahap class, module dan mungkin system masa design time spt code generator dan plugin spt kebanyakan plugin grails. Reuse pada tahap module dan system masa run time spt SOA.

Design berkonsepkan 'project' ini adalah reuse tahap run time.

Cthnya, kami tgh hasilkan satu system Event yg mudah. Keperluan company ialah, kami perlu ada pelbagai event owner spt Dept Communication nak satu event channel utk public, satu event channel utk staff syarikat dan satu event channel utk dept shj. Dept HR pula nak satu event channel utk staff syarikat, satu event channel utk dept dan sejumlah event channel utk project2 HR Blueprint yg melibatkan dept HR dan sejumlah staff dari dept2 lain.

Kesan design ini menyebabkan, setiap kali ada keperluan utk mewujudkan 'Project' @ Event Channel baru, IT Admin (kami) akan menghasilkan satu project baru spt "HR Blueprint 007", assign owner dia dan semua staff yg berhak utk tambah event2 ke dlm channel ini, dan akhir sekali, assign semua staff yg berhak utk view channel ini. Kita juga blh buat supaya owner blh lakukan assignment staff yg blh tambah event dan staff yg blh view channel. Senang kerja kami.

Utk viewer pula, selain dpd yg default digenerate oleh grails, kami akan hasilkan calendar viewer, viewer yg scroll event terkini satu persatu, viewer static yg papar sejumlah event terkini, dll. Satu perkara yg penting ialah, viewer2 ini mesti blh hadkan pengambilan event2 dpd 1 event project/channel shj, DAN, juga diconfigure utk ambil event dpd sejumlah project. Tapi, perlu jaga access staff kpd project yg dia tak berhak utk access (ini kerja core class, bukan viewer).

Ada sape2 yg melihat kelemahan design ini? Blh kongsi sama2. :)


Open Source Conference 2009

InsyaAllah, saya akan ke open source conference OSCONF2009. Ni first time pergi open source conference. Sebelum ni, pergi conference tajaan MS je... :D

Salah satu sebab pergi ni, selain utk melihat sendiri perkembangan terbaru, juga untuk tinjau2 standard dan format presentation. Mungkin... mungkin tahun depan kami akan present satu paper... mungkin... tak tau nak present tajuk apa je... apa yek yg sesuai...?

Kalau ada kenalan yg terbaca blog saya ni, mungkin kita blh berjumpa di sana.


Emas

Terbaca bbrp artikel tentang emas diakhir zaman ini. Antaranya:

http://www.kitco.com/ind/Turk/turk_may042009.html

http://www.kitco.com/ind/Laird/may122009.html
USD gradual fall or crash?

Our USD system is just about to collapse. Most people by far have absolutely no idea how imminent that is, which is a serious complication for us who do track this. Whether it is a gradual collapse, or a rapid one, is yet to be determined, but collapse is definitely the term to use. The rest of the world is rapidly following suit into bankrupting themselves fighting this relentless world financial deleveraging. Most people cannot imagine a USD collapse, and even we who research about it find it impossible to predict the many consequences.

But it’s the general lack of knowledge in the general population that concerns me. They are sitting ducks. If you have a single gold coin, you will likely buy a nice house with it, I am totally serious. I made a prediction about 2005 that if you have ten ounces of gold only, you will probably survive the period of transition from the USD (with careful planning). Even two ounces would make all the difference in the world. Of course that prediction does not take care of the confiscation issue, but hell, no one strategy can cover all risks.

In short, the world is right in the middle of total change and revolution in every way. Remember how things used to be 20 or 10 years ago? Well, take all that and put it out of your mind. Most of our usual things we take for granted in our ‘world’ are either gone already or the remnants rapidly going away before our eyes. As I am sure most of you already know, it is next to impossible to convince others of the dangers.


Kesimpulannya, pelbagaikan harta anda. Meletakkan semua harta dlm bentuk wang ringgit, mungkin akan menyebabkan harta kita berkurangan (harap2 tak luput terus!). Dan Emas adalah satu cara utk melindungi harta kita dpd susut nilai.

Fikir2kan...

(6) comments

Tuesday, April 01, 2008

Apache Web Server, 2 Tomcat instance dan SSL

Aik? Lagi?

Ya, lagi. :D

Kali ini kita tambah satu instance Tomcat lagi. Step2nya:

1. Ikut sampai berjaya step2 "Apache Web Server, Tomcat dan SSL".

2. Copy & paste satu lagi dir Tomcat.

3. Ubah file <dir tomcat kedua>\conf\server.xml:
a. Tukar
<Server port="8005" shutdown="SHUTDOWN">
Kepada
<Server port="8105" shutdown="SHUTDOWN">
b. Tukar
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
Kepada
<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8543" />
c. Tukar
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Kepada
<Connector port="8109" protocol="AJP/1.3" redirectPort="8543" />

4. Buka file C:\xampp\tomcat\conf\workers.properties
a. Tambah
worker.list=worker1
worker.worker1.port=8109
# change this line to match apache ServerName and Host name in server.xml
worker.worker1.host=192.168.82.82
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
# END workers.properties

dihujung file. Dapat diperhatikan, ajp13 telah pun dideclare utk kita. Baik hati apache friends ni.

5. Rename <dir tomcat kedua>\webapps\examples kepada <dir tomcat kedua>\webapps\examples2

Ok, Tomcat settle. Apache Web Server pula.

6. Kita hubungkan non-ssl connection kat file C:\xampp\apache\conf\extra\mod_jk.conf. Selepas
JkMount /examples/* ajp13
Tambah
JkMount /examples2/* worker1

7. Kita hubungkan ssl connection kat file C:\xampp\apache\conf\extra\httpd-ssl.conf.
Selepas
JkMount /examples/* ajp13
Tambah
JkMount /examples2/* worker1

8. Uji:
a. http://192.168.82.82:8080/examples/jsp/jsp2/el/basic-comparisons.jsp - pastikan Tomcat instance 1 hidup.
b. http://192.168.82.82:8180/examples2/jsp/jsp2/el/basic-comparisons.jsp - pastikan Tomcat instance 2 hidup.
c. http://192.168.82.82/examples/jsp/jsp2/el/basic-arithmetic.jsp - pastikan Apache forward non-ssl request kpd Tomcat 1.
d. https://192.168.82.82/examples/jsp/jsp2/el/basic-arithmetic.jsp - pastikan Apache forward ssl request kpd Tomcat 1.
e. http://192.168.82.82/examples2/jsp/jsp2/el/basic-comparisons.jsp - pastikan Apache forward non-ssl request kpd Tomcat 2.
f. https://192.168.82.82/examples2/jsp/jsp2/el/basic-comparisons.jsp - pastikan Apache forward ssl request kpd Tomcat 2.

Selamat mencuba!


Apache Web Server, Tomcat dan SSL

Seterusnya, macam mana nak setup Apache Web Server supaya menyerahkan semua permohonan kepada Tomcat dengan cara perhubungan SSL. SSL dilakukan oleh Apache Web Server, bukan Tomcat yg handle.

1. Pastikan langkah2 dalam "Apache Web Server dan SSL" dibawah telah berjaya.

2. Download Xampp Add-Ons. Saya download "xampp-win32-tomcat-addon-6.0.14-2.2.8-installer.exe". Install ke c:\xampp.

3. File C:\xampp\tomcat\conf\server.xml:
a. Tukar
<Host name="localhost" appBase="webapps"
kepada
<Host name="192.168.82.82" appBase="webapps"

4. File C:\xampp\apache\conf\httpd.conf
a. Tambah
Include conf/extra/mod_jk.conf
di akhir file.
b. Tukar
ServerName localhost:80
kepada
ServerName 192.168.82.82:80

5. File C:\xampp\apache\conf\extra\httpd-ssl.conf
a. Tukar
<VirtualHost _default_:443>
kepada
<VirtualHost 192.168.82.82:443>
b. Tukar
ServerName localhost:443
kepada
#ServerName localhost:443
c. Tambah
JkMount /*.jsp ajp13
JkMount /examples/* ajp13
selepas
ServerAdmin admin@localhost

6. Rename mod_jk.conf.new kpd mod_jk.conf

7. Ganti IP "192.168.82.82" kepada IP sebenar anda.

8. Untuk memudahkan test, tambah
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
ke dalam file C:\xampp\tomcat\bin\startup.bat dan C:\xampp\tomcat\bin\shutdown.bat

9. Run Tomcat, spt double click file startup.bat. Selepas Tomcat up dgn jayanya, run Apache Web Server dpd Xampp Control Panel Application dgn tekan start button.

10. Uji dgn access URL sedemikian:
a. https://192.168.82.82/xampp/
b. http://192.168.82.82:8080/examples/jsp/jsp2/el/basic-arithmetic.jsp
c. http://192.168.82.82/examples/jsp/jsp2/el/basic-arithmetic.jsp
d. https://192.168.82.82/examples/jsp/jsp2/el/basic-arithmetic.jsp

10.a uji Apache Web Server dan SSL
10.b uji Tomcat
10.c uji Apache Web Server yg forward request kpd Tomcat
10.d uji Apache Web Server yg forward request melalui SSL kpd Tomcat.

Jika berjaya dpt sampai 10.d, maka, berjayalah setup anda.

Semoga berjaya!



Apache Web Server dan SSL

Just nak share camna nak setup Apache dan SSL.

1. Download and install xampp from apache friends. Saya download xampp-win32-1.6.6a-installer.exe

2. Create the certificate:
a. Buka dos window dan pi ke dir xampp/apache/bin
b. openssl genrsa -out server.key 1024
c. openssl req -new -key server.key -out server.csr
d. copy server.key server.key.org
e. openssl rsa -in server.key.org -out server.key
f. openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Untuk step 2c, pastikan:
i. file openssl.cnf dlm dir xampp/apache/bin diletakkan dlm dir C:\usr\local\ssl
ii. jawab sekurang2nya soalan "Common Name (eg, your name or your server's hostname) []:" spt "localhost" atau letak ip address atau domain name. Ini sangat penting kerana certificate ini hanya untuk name yang diberi dan akan beri amaran setiap kali user access page jika nama yang diberikan berlainan dgn URL. Katakan kita guna "192.168.82.82".

3. Copy kedua2 file server.key dan server.crt ke, cthnya dir C:\xampp\apache\conf

4. Letak ke dlm file "C:\xampp\apache\conf\extra\httpd-ssl.conf" dua baris berikut:
SSLCertificateFile conf/server.crt
SSLCertificateKeyFile conf/server.key

Elok komen dua line berikut:
SSLCertificateFile conf/ssl.crt/server.crt
SSLCertificateKeyFile conf/ssl.key/server.key

kepada:
#SSLCertificateFile conf/ssl.crt/server.crt
#SSLCertificateKeyFile conf/ssl.key/server.key

kerana kedua2 line ini declare "localhost" sebagai "Common Name" dan akan menggangu test kita kalau kita declare localhost mahupun IP PC yang dilakukan test ini.

5. Run apache dan test kat browser "https://192.168.82.82/xampp". Jika semuanya a ok, web page "XAMPP for Windows" akan keluar. Masalahnya, kita boleh tukar url kpd "http://localhost/xampp", tanpa 's' tu. Akibatnya, web page tu tak lagi secure.

6. Utk paksa sebahagian atau semuanya mesti https, letak ke dlm file "C:\xampp\apache\conf\httpd.conf":
<directory />
SSLRequireSSL
</directory>

Saya cuba letak kat dlm file "C:\xampp\apache\conf\extra\httpd-ssl.conf" tapi tak jalan. Selepas restart balik apache, url http akan keluar "Forbidden" dan kita hanya boleh access web page atau web application kita guna https.

Selamat mencuba!

(2) comments

Thursday, March 27, 2008

Timbul sat...

Lama betul dah tak blog ni...

Banyak yg nak diceritakan, technical mahupun non technical. Perlahan2lah saya update blog ini...


Mengundi PRU 12

8/3/08 adalah hari bersejarah buat saya dan isteri. Kami menyambut hari jadi isteriku di Plus highway. Bertolak kul 4 pagi, menuju KL, solat subuh di Air Keruh, sambung perjalanan dan sampai tol Plus Sungai Besi kul 7:30 pagi. Isi minyak dan terus ke Ulu Klang untuk mengundi. Sampai2, rupa2nya tempat mengundi dah bertukar dari sekolah di AU5 ke sekolah agama di AU4. 1st time sekolah agama ini dijadikan tempat mengundi dan ini adalah kali ke tiga saya mengundi.

Walaupun agak ramai orang, tapi proses mengundi berjalan lancar, Alhamdulillah. Sebelum 9 pagi kami berdua telah pun selesai menjalankan tanggungjawab sebagai rakyat. Terus balik. Kul 12:30 tengahari, kami berdua selamat sampai di rumah. Tak disangka2, berlakunya tsunami politik malaysia... Hebat, cukup hebat!


Backup Mysql guna Ant

Sistem kat sini guna Mysql dan setelah 6 bulan digunakan, data2nya semakin kritikal. Sebelum ni, buat backup secara manual je. Tapi, semakin hari, semakin malas nak buat backup. Dari setiap hari kpd setiap hari jumaat, sebelum balik.

Tak leh jadi ni.

Akhirnya, kerah jugalah usaha utk meng'auto'kan backup ni.

Mula2, terfikir nak buat backup ni guna code dgn scheduler sekali. Fikir2 balik, nak cuba guna ant.

Hasilnya:
Step 1. Download ant terkini. Saya download ant 1.7.0.

Step 2. Buat satu build.xml yg khas utk backup mysql ni. Contohnya spt build.xml ini. Ada 2 backup yang nak dibuat, satu setiap hari untuk DB dan satu lagi setiap minggu untuk file2 yg diupload oleh pengguna.
Saya membuat satu target untuk backup DB harian iaitu "mysql_daily_backup". Target ini menggunakan mysqldump untuk backup DB ke text file dan kemudiannya, zipkan text file ini ke backup folder.
Begitu juga untuk target "weekly_backup", berfungsi untuk backup semua file dlm folder images dalam web app dilakukan secara mingguan.


Step 3. Buat 2 batch file untuk backup harian dan mingguan setiap satu, spt:
daily_backup.bat

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set ANT_HOME=c:\mysql_ant_backup\lib\apache-ant-1.7.0
set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
set CLASSPATH=%CLASSPATH%;.
ant


dan

weekly_backup.bat

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set ANT_HOME=c:\mysql_ant_backup\lib\apache-ant-1.7.0
set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
set CLASSPATH=%CLASSPATH%;.
ant weekly_backup


Step 4. Masukkan kedua2 batch file ini ke dalam schedule microsoft. Harian set supaya run setiap hari dan yang mingguan set supaya run seminggu sekali. Untuk saya, saya setkan harian run setiap kul 7:30 malam dan mingguan run setiap jumaat, kul 8:30 malam.

Alhamdulillah, ia berjalan lancar untuk kami di sini.


Next, tentang GIS...

(2) comments

Monday, August 20, 2007

Kerja kat tempat baru

Minggu ini ialah minggu ke 4 (mula 30/7) saya bekerja di selatan tanah air. Rancangannya masuk 23/7, akan tetapi, saya kena demam campak pula. Berjangkit daripada anak2 saya. Alhamdulillah, ubat yg doktor bagi tu memang kuat. Lebih kurang 4 ke 5 hari selepas kena dan mula makan ubat tu, bhgn kulit saya yg timbul dah mula berwarna hitam, menunjukkan virus tu dah mula mati dan kering. Disebabkan ini, saya masuk kerja lewat seminggu. Ada hikmahnya. Masa rehat seminggu tu, dptlah saya bantu isteri saya mengemas rumah dan barang2 dpd kotak.

Setelah masuk, tugas pertama saya ialah develop Enquiry Management System yg perlu capture butir2 customers dan semua enquiries mereka. Tugasan ini diberikan pada pertengahan minggu pertama, tapi notebook company tak dpt lagi. Tempoh yg diberi: 2 minggu. Skop:
1. User management
2. Customer management
3. Enquiries management (beserta simple workflow utk menjawab enquiries dan approve jawapan yg diberikan)
4. Portal integration utk semua enquiries yg dibuat melalui portal kami.

So, selama 2 minggu (minggu ke3 dan ke4) saya kembali jadi programmer. Satu kelebihan develop sorang2 ni, takde sebarang bangkangan utk guna tools/lib apa. Setelah berdebat seorang diri, akhirnya, saya menang. Aku nak mencuba jboos seam. Saya nak mencuba grails. Tapi, saya menang dan aku kalah. Takpelah aku, lain kali yek.

Walaupun saya dah cuba grails berkali2 sebelum ini, tapi, mencuba dan betul2 guna adalah 2 tahap penggunaan yg jauh berbeza. So, saya mempertaruhkan berjaya atau tidaknya tugasan ini. Satu langkah yg berani? Atau bodoh? 2 hari pertama saya menggunakan grail 0.5.6, percubaan utk run web application gagal besar! Kantul dan tergolek2 dibuatnya! Saya dah mula cemas dan was-was. Akhirnya, setelah mencuba version grails yg terdahulu, saya dapati ver 0.5 boleh run dgn baik.

Inilah risiko menggunakan 'cutting edge' technology. Ceh!

Saya pun berusaha utk mengejar masa akibat dijatuhkan oleh grails masa mula2 berlari tu. Tapi, ialahkan, ini adalah projek sebenar yg pertama. Susah tentunya byk terhantuk kepala. So, 3 hari berikutnya, saya terkial2 develop guna grails.

Rasa cemas masih ada. Tapi, at least lega krn dah ada progress. User management dan Customer management siap! Enquiry management dah mula. Good progress indeed.

Masuk minggu berikutnya, Enquiry management berjaya disiapkan (fasa 1) dalam masa 2 hari, setelah memasukkan sekali feedback pertama.

2 hari berikutnya, saya buat automated web tests menggunakan canoo yg dah built in dalam grails. Best gak. Kat company lama dulu, team saya guna Watin. Tapi, saya tak pernah mencubanya. Salah satu sebab, tak reti C#. Satu lagi, malas... Tapi, guna canoo dpd grails ni, not bad. Terkial2 gak utk beberapa jam pertama, tapi lepas tu, lajuu... (read: productive).

1 hari lagi, saya siapkan integration dgn portal kami, menggunakan ftp. Guna Quartz support yg dah built in dlm grails. Best gak. Simple je nak schedulekan task.

So, dah deploy lah sistem tu, kan, kan. Nope. Tak lagi. Selain sistem ini, kami juga kena run sekali dgn system call center, no telefon yg cantik, dan segala peralatan dan persiapan yg diperlukan. Tapi, ada 2 item ni yg delay. So, delay 1 minggu lagi.

Hari ini, saya tambah lagi test script krn minggu lepas, test script yg disiapkan, sedikit sangat. Ialahkan, buat sorang2, masa terhad. (Alasan, alasan...) Tapikan, saya ni memang kurang sikit dgn documentation, termasuklah test script. Buat automated unit tests takpe. Buat test script... ntah kenapa, program dlm diri saya ni, secara auto, tukar kpd lembab. Kira, padan muka gak le. Kat company lama, manja. Ada 1 team (team system analyst) yg tolong buatkan. Ni, kena buat sendiri. Aduh! Rindu kat rakan2...

Masa rehat (byk 'take 5' pulak hari ni, ntah kenapa... ;p) sat tadi, terfikir nak masukkan sekali search engine capability. Terutamanya utk feature FAQ nanti. Boleh sekali guna keupayaan ini utk search for enquiry yg lama2 tu.

Saya cari kat grails, camna nak guna Lucene kat dlm grails. Terjumpa link ini. Akibatnya, dlm masa tak sampai 15 minute (sekali dgn download Searchable plugin), sistem tu dah support seaching utk enquires. Nice! Very nice! Nak kena tambah module FAQ management ni. Nampak simple benar. Yes! Yes!

Aloo. Sudah siap ka? Belum? Masa utk teruskan buat test script... adeh...

(7) comments

Wednesday, July 18, 2007

Hari terakhir ku di syarikat P

InsyaAllah, hari ini adalah hari terakhir saya di syarikat P. Hampir 4 tahun saya bekerja di sini. 3 project telah dilalui. Lain semuanya dan semuanya memberikan pelajaran yang berguna buat saya. Alhamdulillah, 3 orang ex bos saya kat sini, berpuas hati dgn hasil kerja dan usaha saya. Sampai menyebabkan ex big bos yang offer saya kerja kat tempat baru, di WPI (http://www.irda.com.my/). An honour to be trusted as such. An honour to lead the IT division, comprising of application development, data centers, servers and network. An honour indeed.

InsyaAllah, saya sekeluarga akan berpindah ke rumah sewa di JB hari sabtu ini. Lori sampai pagi, pukul 8:30. Rancangannya, sebelum 11 pagi, siap angkut semua masuk lori dan boleh bergerak dah. Harapannya, saya sekeluarga serta lori tersebut, sampai ke rumah sewa serta punggah semua barang2 masuk, siap semuanya sebelum waktu maghrib.

Ya Allah, selamatkanlah dan permudahkanlah perjalanan kami ini. Berkatilah hijrah kami ini. Dan sentiasalah kami berada dalam golongan yang mendapat hidayah dan petunjukMu. Aamiin, ya Allah.

Selamat tinggal KL. Setelah 13 tahun bekerja di KL, sekarang angin bertiup ke selatan. Selamat tinggal rakan-rakan seperjuangan yang meneruskan perjuangan IT di KL dan di mana-mana jua. Thanks for the sms dari Efendi, Afriza, Nazir dan rakan2 lain. InsyaAllah kita akan jumpa lagi. InsyaAllah, saya akan kembali ke KL, 5 - 6 tahun lagi.

Oh ya, hampir lupa lak. Sesiapa yang berminat atau ada kawan2 yg berminat untuk apply kerja kat WPI, dept IT, boleh email resume kpd saya. Tolong sertakan current salary dan expected salary sekali. Untuk yang dah email tu, harap bersabar. Saya kena masuk dulu WPI ni baru boleh hasilkan proper org chart serta kekosongannya. InsyaAllah, jumpa di sana... :)

(3) comments

Tuesday, July 03, 2007

Object Modeling

Salah satu sebab utama kenapa saya tak berikan cth sampai ke code ialah krn cth object model saya ni, amat high level. Takde bau apatah lagi bayang code pun. Ini disengajakan. Kenapa? Kerana, saya tekankan object modeling itu sendiri. Object model yg sampai ke code cth, sedikit sebanyak akan mempengaruhi object model itu sendiri.

While it is important and crucial even, to have an object model that is workable, the essence here is to promote object modeling knowledge itself. Knowledge that is pure and free from any implementation. Later, we can have a set of examples that goes down until code level.

Point saya, saya nak fokus kat pure object modeling, bukan object modeling berorientasikan code/implementation. Itu, kemudian. Details, kemudian.

Salah satu sebab lain ialah krn saya nak jadikan cth2 ini, sebagai bahan utk saya ajar anak2 saya object modeling, sebelum saya ajar mereka programming lagi. Ni experiment saya...


Object Modeling Kehidupan Seharian, Secara Mudah : Contoh 2 - Diri dan Perasaan

Konteks: Memodelkan diri orang dan pelbagai perasaan yang dilalui seharian apabila peristiwa atau perkara berlaku.

Class diagram akhir:


Scenario 1: Berbual cerita kelakar
1. Ali menyapa Hassan.
2. Hassan menyapa kembali Ali.
3. Ali mencerita cerita kelakar kpd Hassan.
4. Hassan ketawa terbahak2.
5. Selepas berhenti ketawa, mereka berpisah.

Scenario 2: Mood Swing
1. Hafiz memberitahu Fatimah bhw, dia dpt no 1 dlm keputusan peperiksaan.
2. Fatimah sangat gembira.
3. Hafiz memberitahu kucing kesayangan Fatimah dah mati.
4. Fatimah terperanjat.
5. Hafiz beritahu, badannya seperti lempeng akibat kena langgar kereta.
6. Fatimah sangat sedih.
7. Hafiz memberitahu bhw dia yg telah melanggar kucing kesayangan Fatimah tu.
8. Fatimah sangat marah, aura membuak2.
9. Hafiz takut lalu lari.

Sequence diagram untuk Scenario 1:


Sequence diagram untuk Scenario 2:

(2) comments

Tuesday, June 26, 2007

Object Modeling, Tahap Advance ke?

Adakah Object Modeling, salah satu aktiviti utama fasa analisa, satu cabang ilmu yang advance? Saya tak setuju. Tapi, saya bukanlah pakar dalam mengajar ilmu software development ni, hanya sekadar practitioner aje.

Untuk itu, saya akan berusaha untuk meluangkan masa memodelkan dalam bentuk object, apa shj yang sesuai dalam kehidupan seharian kita, secara mudah. Kalau terlalu banyak detail, saya takut akan defeat the purpose pula.

Dengan itu, bermula hari ini, dari masa ke semasa, bila masa dan keadaan mengizinkan, saya akan beri contoh bagaimana untuk melakukan object modeling ni. Sebarang cadangan membina amat dialu-alukan.

Diagram object model tu saya hasilkan menggunakan Visual Paradigm, Community Edition. Disebabkan limitation Community Edition ni, maka, kelihatan water mark dalam semua diagram yg dihasilkan. Harap bersabar dgn water mark yg agak mengganggu tu.

Kita bermula dgn contoh pertama dibawah...


Object Modeling Kehidupan Seharian, Secara Mudah : Contoh 1 - Membeli Makanan di Restoran Fast Food

Dalam software development ni, satu perkara yang sangat penting ialah konteks. Dalam contoh ini, konteksnya ialah membeli makanan di restoran makanan segera. Seterusnya, kita hasilkan Scenario 1 beserta class diagram untuk menyokong Scenario 1 ini:



Seterusnya, kita hasilkan interaksi antara class2 yg telah dikenal pasti utk memastikan ianya benar2 sesuai bagi memenuhi Scenario 1.



Dgn melakukan cara software development secara agile, kita ubah dan perbaiki scenario tersebut kpd Scenario 1B. Class diagram nye:



Dan sequence diagram nye:



Lagi sekali, kita improve scenario nye (boleh juga tambah scenario) di iteration berikutnya, kali ini, cara penyediaan makanan dirasakan penting untuk dimodelkan dlm konteks ini (sebagai cth je). Class diagram nye:



Dan 2 sequence diagram utk memenuhi, menunjukkan dan membuktikan scenario 1C dan 1D boleh disokong oleh object model tersebut:



dan



Setakat ini shj, cth pertama. Rasanya byk lagi kelemahan penyampaian saya ni. Segala feedback membina dialu2kan utk improve penyampaian ini.

Update: Saya sengaja tak teruskan sampai tahap code. Biarlah, buat masa ini, saya kekalkan dulu sampai tahap ini shj. Masa kurang mengizinkan. Sesiapa yg berminat, boleh implement object model ni dlm code masing2, C# ke, Java ke, Ruby ke, etc. Dan bagitau la saya. InsyaAllah, saya boleh komen mana yg mampu dan akan linkkan ke blog/website anda.

(5) comments

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