Hari nie..kat department aku baru 3 org start kerje, aku dah tak de cuti , jadi kena lah masuk kerja awal, pagi tadi aku cuba design CMS User Interface prototype
Friday, October 19, 2007
CMS UI prototype
Posted by ryzam at 11:51 AM 0 comments
Thursday, October 18, 2007
Happy Birthday Damia Bisyri
18/10/2005 tarikh lahir puteri ku yang sulong Damia Bisyri - makna nama(Kebijakan,Kebaikan,Yang Manis Mesra Dan Menggembirakan), hari nie 18/10/2007 genap umur dia 2 tahun, semoga hidupnya diredhai dan senantiasa dalam jagaan Allah. Dan harapan ku agar Damia Bisyri murah rezeki dan bahagia di dunia dan di akhirat Amin.
Posted by ryzam at 10:51 AM 0 comments
Thursday, October 11, 2007
Selamat Hari Raya
Kepada semua pembaca blog ini, aku nak ambil kesempatan mengucapkan Selama AidilFitri Maaf Zahir & Batin. Aku start cuti esok dan masuk semula bekerja hari khamis minggu hadapan.
Posted by ryzam at 12:47 PM 0 comments
Friday, October 05, 2007
Berbuka Puasa dan Surat Perletakan Jawatan
Semalam aku, isteri dan anak-anak berbuka puasa di Istana Budaya bersama geng-geng office aku. Program nie untuk seorang rakan yang akan berhijrah ke company lain selepas raya. Puas hati juga lah dengan makanan yang disediakan tidaklah bnyk sangat tapi cukup berbaloi dengan kadar bayaran yang dikenakan, berbeza dengan hotel yang ada letak harga lebih dari RM 50. Memanglah dia orang letak makanan banyak sampai nak pilih makan yang maner satu pun tak tahu, pada masa tu semua makanan hendak rasa, tapi aku rasa mesti bila dah berbuka bnyk yang tak habis terbuang je makanan tu:)
03/10/2007 tarikh aku hantar surat perletakan jawatan, dah lebih setahun aku berkerja dicompany P sebagai team lead .Net, seronok dengan perangai geng-geng yang lain, walau dalam team yang berbeza tapi dibawah satu department Emerging Technlogy (Nie bukan nama company). Aku akan join company M 4/12/2007 sebagai Solution Architect dan insyAllah segala tunjuk ajar rakan-rakan disini seperti bro Hafiz(Java Guru), bro Fadhlan (Hibernate & Webwork guru), bro Faisal(Jasper Report), bro Hamdi (3 bulan yang lepas berhijrah ke WPI - Agile & Java Guru), bro Rushdan (Mobile/Scanner Guru), bro Yusnizam (System Analyst), Kak Kartinah (manager aku :) dan Zehan (System Analyst) dan ader lagi sorang walau pun bukan dalm team aku tapi ada project yang dia terlibat secara dengan team aku bro Ikhwan (aka 1kHz).
Aku masih ada lagi project kat sini yang perlu completekan sebelum pergi ke company M, at least aku nak keluarkan 2 release CMS project nie.
Ada lagi satu aku nak share senarai buku-buku yang aku baca, ada yang habis dan ada yang tak habis dibaca lagi walaupun ader buku tersebut dah lebih setahun aku beli :)
Ada lagi beberapa buku yang aku pun dah tak ingat dalam rak kat rumah aku. Emm...














Posted by ryzam at 8:35 AM 0 comments
Thursday, October 04, 2007
Pengalaman menginterview software developer
Aku tidak ada banyak pengalaman dalam menginterview software developer, so kira aku barulah juga menceburi (disuruh) untuk menilai calon-calon software developer. Setakat ini ada 6 orang yang telah aku interview, sebelum nie aku yang selalu kena interview. Cuma bila candidate nie masuk dalam bilik interview, aku tak sampai hati nak tanya soalan-soalan yang maut :) walupun gaji yang diorang minta tu tinggi, sebab bagi aku sessi interview hanyalah sekadar untuk menilai tahap keyakinan seseorang bukan hendak menilai sangat tahap skill, jika hendak menilai tahap skill aku prefer sediakan kertas soalan dan diorang jawab. Ada beberapa peristiwa yang agak kelakar, ada satu soalan diajukan pada seorang calon tentang keupayaan beliau untuk long hour working, dgn yakin dia jawab dia tiada masalah cuma selepas pukul 8 malam dia mesti kena stop tak boleh teruskan hahaha, dia kena balik tidur... kita org pun gelak, salah sorang yang interview tu cakap..ya kita bukan tak bagi you tidur. Ada juga yang sengaja diprovoke soalan jika gaji yang diberi sama, tapi peluang ditempat baru dari segi experiance technology lebih so bagaimana berminat? Calon tersebut dari muka berseri, tiba-tiba senyap je.. kita org tgk pun nak tergelak, tahan je dalam hati.
Ok lah criteria yang aku prefer untuk work dalam team aku tak semestinya excellent programmer, tapi aku suka ikut style XP dimana , average programmer yang active communicate dalam team lebih berjaya dari excellent programmer tapi hanya duduk dalam pulau yang tersendiri.
Posted by ryzam at 11:11 AM 3 comments
Monday, October 01, 2007
Problem semasa test domain menggunakan Nhibernate
Masalah yang dihadapi ini tidak terlalu besar cuma agak melambatkan development process. Seperti biasa aku akan ada 3 jenis test didalam unit test project iaitu Integration Test antara layer dari presenter<->services<->domain<->persistence dan dalam test ini penggunaan libarary mock object seperti Rhino Mock,NMock adalah mesti.
Manakala test yang paling penting ialah test domain, dimana untuk setiap method dalam domain perlulah ditest sekurang-kurangnya sekali, dan untuk mendapatkan coverage code yang dah ditest dan code yang tak disentuh lagi boleh guna NCover dan NCoverExplorer.
Masalah aku ialah bila aku buat domain test aku dah define properties name yang aku nak guna dalam test, tapi bila aku generate domain untuk persistence, ActiveWriter akan generate properties untuk aku. So nak combine apa yang dah dibuat dgn apa yang digenerate agak leceh, walaupun aku boleh guna cara partial class tapi tak best sgt.
Al-Madinah SCORM Project
Minggu lepas balik kampung dengan family semua gerak pkl 11.00 malam dari shah alam sampai melaka pkl 3 pagi.. argh aku berhenti tidur kat R&R 2 kali, sekarang nie aku cepat mengantuk bila bawa kereta kat high way... samer gak kes balik dari melaka ke shah alam malam tadi.. tapi Alhamdulillah aku berhenti rehat 1 kali je kat Hentian Senawang. Aku agak busy walaupun balik kampung, aku kena tengok SCORM LMS , macam maner fungsi SCORM , apa dia SCORM etc.. Alhamdulillah malam minggu lepas aku tidur lepas sahur. cuba buat satu test code unutk membolehkan courseware talk dengan LMS menggunakan SCORM API. Berjaya memahami API SCORM dalam 20% :) okalah tu ekk..
Aku juga kena buat comparison antara 2 open source project dokeos dan claroline.NET, nak kena submit malam nie.
Posted by ryzam at 12:35 PM 0 comments
Friday, September 28, 2007
16 Ramadhan 1428 Hijrah
Alhamdulillah dah 16 hari kita berada dalam bulan Ramadhan yang penuh dengan keberkatan. Hari ini di Masjid Negara ada perhimpunan membantah sistem kehakiman negara yang sedang menuju kehancuran. Negaraku semakin kalut dengan pelbagai jenayah yang sedang berlaku ianya amat merisaukan. Tak tahulah aku apa pemimpin hari ini buat, ok lah cukup dengan sedikit cerita pasal kesakitan hati aku melihat sistem yang dijalankan oleh pemimpin hari ini.
Hari ini kesakitan hati aku terubat sikit kerana berjaya memasukan NHibernate.Linq kedalam project aku, emm seronok apabila dapat query menggunakan ORM NHibernate berserta LINQ query statement. bdiaz developer yang menghack untuk integrate NHibernate & LINQ , ada beberapa contoh dlm site tersebut boleh dijadikan tutorial untuk memahami dengan lebih mendalam.
Jadi dengan beberapa tool yang digunakan sekrang aku harap development time untuk aku semakin pendek dan cepat.
Update
Salah seorang member dalam yahoo group message aku, hendak cari MS SQL DBA yang tahu buat database replication sebagai part time DBA, aku bukan expert dengan DB so tak dapat membantu, kena cari rakan-rakan lain.. siapa budak geng kat tmnet yang boleh buat ek..emmm.. kena cari maklumat nie..
Ada sesorang forward kedalam email aku menarik petikan ini
Di dalam hidup manusia, yang penting ialah BERKAT.
Bila hidup kita berkat, diri ini akan selamat.
Apabila diri selamat, rumahtangga jadi sepakat.
Apabila rumahtangga jadi sepakat, masyarakat jadi muafakat.
Apabila masyarakat jadi muafakat,
negara kita menjadi kuat.
Apabila negara menjadi kuat,
negara luar jadi hormat. Apabila negara luar
jadi hormat, permusuhan pun tersekat.
Apabila permusuhan tersekat,
pembangunan pun meningkat. Apabila pembangunan pun meningkat,
kemajuan menjadi pesat.
TETAPI AWAS, apabila pembangunan meningkat, kemajuan menjadi pesat,
kita lihat bangunan naik bertingkat-tingkat.
Ditengah-tengah itu, tempat maksiat tumbuh macam kulat. Apabila
tempat-tempat maksiat tumbuh macam kulat, KETIKA ITU manusia mula
mengubah tabiat. Apabila manusia telah mengubah tabiat,
ada yang jadi lalat ada yang jadi ulat.
Apabila manusia dah jadi ulat, sembahyang makin hari makin liat.
Apabila sembahyang jadi liat, orang baik ada yang bertukar jadi jahat.
Apabila orang baik bertukar jahat,
orang miskin pula nak kaya cepat.
Apabila orang miskin nak kaya cepat,
orang tua pula nak mati lambat.
Apabila orang tua nak mati lambat,
tak dapat minum madu telan jerla
minyak gamat.
Yang lelaki, budak budak muda pakai
seluar ketat. Semua nak tunjuk kuat.
Bila berjudi, percaya unsur kurafat.
Tapi hidup pula yang melarat.
Tali kasut dah tak berikat.
Rambut pun jarang sikat.
Yang perempuan, pakai mini sekerat.
Suka pakai baju ketat.
Suka sangat menunjukkan pusat.
Hingga tak pedulikan lagi batasan aurat.
Pakai pulak yang singkat-singkat.
Kadang-kadang ternampak benda 'bulat'.
Bila jadi macam ini, siapa lihat pasti tercegat.
Silap gaya jadi gawat, bohsia bohjan lagi hebat.
Duduk jauh berkirim surat .
Bila berjumpa, tangan berjabat.
Kemudian pakat lawan peluk siapa erat.
Masa tu, nafas naik sampai tersekat-sekat.
Usah peduli agama dan adat.
Usah takut Allah dan malaikat.
Yang penting apa kita nak buat?
Kita 'bukti' lah kita buat.
Akhirnya perut kempis dah jadi bulat.
Apabila perut kempis dah jadi bulat,
maka lahirlah
pula anak-anak yang tak cukup sifat.
Bila anak-anak tak cukup sifat, jam tu kita tengok bayi dibuang di
merata tempat.
MAKNANYA KETIKA ITU, IBLIS MULA MELOMPAT.
Dia kata apa? Habis manusia dah masuk jerat.
Habis manusia telah tersesat.
Inilah dia fenomena masyarakat.
Oleh itu wahai saudaraku dan para sahabat,
Marilah kita pakat mengingat,
Bahawa dunia hari ini makin singkat,
Esok atau lusa mungkin kiamat,
Sampai masa kita semua akan berangkat! .
Berangkat menuju ke negeri akhirat.
Di sana kita akan ditanya apa yang kita buat.
Masa tu, sindri mau ingat.
Umur mu banyak mana mu buat ibadat...?
Zaman muda mu, apa yang telah mu buat...?
Harta benda anta, dari mana anta dapat...?
Ilmu anta, adakah anta manafaat...?
Semoga ianya dapat mengingatkan kita supaya segera
meninggalkan maksiat dan memperbanyakkan ibadat.
(Petikan ucapan Ustaz Hj. Akil Hayy Rawa.
Sebarkanlah ini kepada ahli keluarga, saudara-mara, rakan-rakan dan
sahabat handai kita agar masyarakat
kita akan menjadi sebuah masyarakat yang bukan sahaja maju dari segi
duniawi malah ukhrawi. Insya-Allah...Allahhuakbar! Allahhuakbar!
Allahhuakbar!)
Posted by ryzam at 11:31 AM 0 comments
Thursday, September 27, 2007
Update
A'salam , aku dah lama tak dapat hendak mengupdate sebarang tulisan disini, aku akan join another company bulan 12 nie sebagai Solution Architect. Last week aku attend 2 kali sessi menginterview candidate yang insyAllah kalau dipilih akan join team aku.
Di sini masih ada lagi project ongoing yang perlu diselesaikan seperti Customer Management System.
Ada tools baru yang aku jumpa yang aku rase dpt memendekkan lagi process soft dev aku, aku dah rase menjadi semakin malas nak buat code heheh, adakah aku perlu beralih ke ruby?? emm munkin juga.. hahaha :)
Tools:
ActiveWriter
Posted by ryzam at 12:13 PM 3 comments
Thursday, September 13, 2007
Ramadhan
Selamat menyambut Ramadhan Al-Mubarak kepada semua yang singgah kedalam web ini :) Semoga ibadah puasa tahun ini lebih baik dari tahun-tahun sebelumnya.
Posted by ryzam at 11:49 AM 2 comments
Tuesday, September 04, 2007
Domain Model - Tips
Semalam aku ada update tentang bagaimana menganalisa domain dari property/attribute kepada menjadi konsep object dan akhirnya bila menbuat sekali lagi interaction object tersebut di design menjadi interface untk support pelbagai jenis kelakuan (method)
Tips
1. Mana-mana property dalam object bukannya terdiri dari simple text, ia sepatutnya dikeluarkan menjadi object yang lain dan bina hubungan antara object tersebut.
2. Hubungan antara object boleh menjadi konseptual object jika hubungan tersebut adalah kompleks
Sebagai contoh satu scenario dimana kita hendak bina sistem perkiraan harga kereta yang dijual oleh penjualkereta(salesman). Kita boleh je design seperti berikut:
Ok sekarang kita kaji hubungan salesman dan kereta, hubungan antara kedua-dua object ini dihubungankan dengan kaitan 'sale' iaitu salesman menjual kereta. Hubungan tersebut sebenarnya bukan hubungan yang simple dalam ertikata yang lain banyak perkara boleh didapati dalam hubungan tersebut. Maka hubungan 'sale' tadi boleh dijadikan konseptual object Sale
Posted by ryzam at 9:32 AM 0 comments
Monday, September 03, 2007
DDD and TDD Software Development Architecture Guideline
Cuti sempena hari kemerdekaan aku tak pergi maner, malas nak sibuk-sibuk sambut merdeka sebab dari banyak segi negaraku ni umpama negara yang benar-benar belum merdeka. Jadi aku buat initial draft untuk DDD dan TDD Software Development Architecture Guideline. Ada beberapa buku yang aku gunakan sebagai sumber seperti Domain Driven Design - Eric Evans, Apply Domain Driven Design and Pattern - Jimmy Nilsson dan beberapa web site lagi. Alhamdulillah semasa menulis draft ini nampak lagi jelas kaitan DDD dalam software development. Sebelum nie, aku baca buku bnyk juga yang aku skip, dan kenkadang maklumat tersebut penting dalam memahami software development process.
Aku dah cover beberapa point penting dalam initial draft seperti Crunching Knowledge dan Ubiquitos Language.
Update
Aku plan dah lama nak catat apa yang aku faham pasal domain, terdapat beberapa point penting semasa captured domain model bersama domain expert.
1. mana-mana property dalam object bukannya terdiri dari simple text, ia sepatutnya dikeluarkan menjadi object yang lain dan hubungankan relation antara object tersebut.
Sebagai contoh ambil scenario sistem register pendaftaran no kereta, pendaftaran no kereta boleh didapati dengan cara biasa iaitu ikut turutan, pendaftaran memilih no istimewa yang telah di paparkan oleh JPJ seperti 1111,2222 etc dan juga pendaftaran no pilihan sendiri yang kemungkinan bukan terdiri dari no istimewa yang telah di setkan oleh pihak JPJ.
Jadi jika difikirkan secara biasa no plate kereta akan menjadi property dlm class Kereta seperti contoh: 
Tiada apa yang salah cuma number plat kereta berdasarkan scenario lebih dari sekadar property , number plat boleh menjadi konsep object dimana property tersebut dikeluarkan menjadi object Plat dan tambahkan association antara object tersebut.
Kemudian kita buat satu lagi analisa untuk memenuhi scenario, number plat kereta boleh di daftarkan dengan pelbagai cara seperti ikut turutan pendaftaran, booking no pilihan dengan sejumlah bayaran dan pilih number plat sendiri. Jadi design kena tukar supaya Plat akan menjadi interface IPlat dan untuk menampung cara-cara pendaftaran tadi kita akan buat 3 lagi object yang akan implement interface IPlate
Posted by ryzam at 10:35 AM 2 comments
Tuesday, August 28, 2007
DDD and TDD document guideline
Semalam ada satu soalan ditanya kepada aku oleh seseorang, aku bercerita pasal agile methodology.. aku bercerita tentang Test Driven Design tapi dia tanya kat aku..ada any documentation guideline yang aku gunakan dalam team aku?.. argh.. sememangnya aku tak de solid documentation bagaimana nak buat nak buat DDD dan TDD, kebanyakkan cara aku..ialah mentor, ertinya aku involve dengan developer, aku terlibat dalam design..aku bercerita,ini dia base code,ini dia layer yang terlibat follow cara mcm ini.
Tapi soalan tu membuat aku berfikir yang aku perlukan juga basic documentation menerangkan methodology yang digunakan. emmmm ya masa untuk buat initial draft :)
Update
Jumpa link menarik semasa browse dlm group DomainDrivenDesign
Improving Applications Design with a Rich Domain Model
Posted by ryzam at 10:25 AM 0 comments
Friday, August 24, 2007
technical cms meeting
2 hari penuh kena masuk technical meeting dengan group PP/NCR/AP , discussion kali ini ialah untuk integrate CMS dengan project PP, kenkadang kita pandang tinggi pada consultant-consultant yang datang, ialah yang join tu rambut dan kulit putih , speaking pun memang ambil masa agak le nak faham hehehehe tapi ialah bila dah 2 hari discuss so kita tahu le tahap technical knowledge dia orang hahaha.. simple UML sequence diagram pun salah macam maner nak nie.. arghh bila dah join meeting banyak le kerja lain tertangguh, aku rindu dengan code , aku rindu dengan unit test... dan aku rindu dengan wife dan anak-anak aku..
Group kami masih macam biasa happy dengan enviroment kerja sekarang, aku rasa team yang ada sekarang nie team yang paling seronok aku bekerja, mereka -mereka ini semua mempunyai kepakaran masing-masing, ada seorang tu memang expert dalam java, bagus dalam algorithm senior daripada aku dan seorang lagi dari group java juga very active mencuba perkara baru dalam java dan kini mengikut jejak langkah ex bos aku menulis code generator dan seorang lagi sabar dalam meniti langkah yang mecabar dalam dunia soft dev.. aku doakan dia menjadi seperti senior beliau manakala group .net dibawah team aku nie pun bagus juga, cepat tangkap apa yang diajar dan kalau tak faham rajin bertanya. Team SA rajin dan cekap mengesan bugs :)
Aku masih belum buat keputusan untuk join company yang lagi satu walaupun offer letter dan dibagi..ada kat rumah simpan..ada masa lagi 10 hari untuk aku fikirkan, aku dah melalui 2 kali disscussion.. last discussion dengan panel advisor unutk company tersebut, nice person dan pertanyaan straight to the point dan jawapan yang dia hendak dari aku pun jawapan yang padat..tak nak pusing-pusing hehehe ..
ada beberapa orang rakan yang aku tahu kemampuan dia orang untuk buat kerja, aku rekomenkan, nak cakap aku bagi syarat kat company tu untuk aku join..tak juga tapi aku just kata kalau dapat this team join sekali sekali di bawah group aku..lagi ok.. i know they can perform, company nie ada kena mengena dengan kuwait & arab saudi.
knowledge aku dalam beberapa technology masih kurang , masa nak mendalami pun dah semakin tidak mencukupi, aku plan nak beli buku hujung minggu nie..buku tentang unit test pattern dan linq.
Posted by ryzam at 11:49 PM 0 comments
Monday, August 20, 2007
Start project Baru - Customer Management System CMS
Sudah lebih kurang seminggu saya mula dengan project baru, so setiap ptg selama 3 jam unutk jangkamasa 2 bulan saya akan duduk dengan domain expert dan bersoal jawab tentang CMS Domain. Saya akan lukis domain diagram, buat sequence diagram dan ajukan soalan macam-macam sperti process flow, business logic, interface dan real operation implemantation yang dia orang harapkan nanti.
Project ini agak mencabar kerana domain yang dihasilkan setakat seminggu lebih saya join session tersebut sudah agak complex kerana terlibat dengan pelbagai calculation berkaitan mail process dan logistic. Dan saya berharap saya dapat hasilkan domain ynag flexible dan skrg ini saya dah start buat test pada beberpaa use case awal untuk prototype.
Hari nie tak sihat rase macam nak demam.
Saya dapat offer kerja di sebuah international company dan package yang diberi sgt menarik.. tapi disini saya tgh handle project yang juga menarik.. experiance yang sara rasa jarang saya akan dpt dlm domain mail & logistic ini.. masih lagi berfikir..
Posted by ryzam at 7:56 PM 0 comments
Tuesday, August 14, 2007
IIS compression untuk ASP.Net
Untuk project Pickup Scheduling System , saya banyak menggunakan ASP.Net ATLAS Ajax, masalah utama dengan Ajax ialah untuk first loading java script file yang dihasilkan agak besar, selalunya lebih dari 100KB dan dari segi performance ianya agak slow. Masalah ini saya hadapi apabila saya mula redesign semula PSS dari asp.net biasa kepada Ajax dan tujuan utama redesign semua ini ialah kerana ASP.net biasa juga jika tidak handle viewstate dengan betul boleh mengakibatkan page file yang dihasilkan juga besar. So selepas mencuba beberapa alternatif saya buat keputusan untuk menggunakan ATLAS Ajax. Dan apabile telah mengguakan beberapa Ajax Extender seperti Modal Extender dan Dynamic Populate saya persaan script size increase sehingga 200K per page, walaupun script ini hanya diload sekali dan booeh dicache tetapi say masih tidak berpuas hati kerana first load adalah amat penting untuk mendapat first impression yang baik dari pengguna.
Saya google dan mendapat beberapa cara hendak selesaikan masalah ini, iaitu dengan menggunakan IIS compression, selain dari itu anda juga boleh menggunakan HTTP Module compression. Saya nmeilih menggunakan IIS Compression kerana pada pendapat saya ianya lebih mudah untuk di configure.
Saya terjumpa satu artikel berkaitan IIS Compression di IIS Compression in IIS6.0 , tapi setelah mencuba masih lagi tidak berhasil untuk compress page asp.net.
Setelah menggunkan cara edit script tidak berhasil saya terjumpa satu tool untuk edit metabase.xml dlm ISS. Tool tersebut boleh didownload di
Internet Information Services (IIS) 6.0 Resource Kit Tools
Step seperti berikut
- Enable Compression in IIS - Click Properti pada WebSite Node dalam IIS dan pilih tab Service, Check dalam checkbox Compress application files dan Compress static files.
- Seperti gambar yang diberi edit HcScriptFileExtensions pada gzip dan deflate dan letakkan aspx,axd,asmx,cc,js , dan edit juga HcDynamicCompressionLevel kepada 9.
Anda boleh lihat hasil menggunakan FireBug dalam browser FireFox.
Posted by ryzam at 12:04 PM 2 comments
Monday, August 13, 2007
Pickup Scheduling System Live today!!!
2 minggu sebelum ini saya agak busy dengan bug patch dan dateline untuk live Pickup Scheduling System, agak banyak pengalaman semasa dalam prosess untuk pindah ke production server.Tidak semua process jika berjalan di testing server akan berjalan lancar di production server. Checklist semasa hendak deploy ke production server adalah penting, sebarang langkah yang dibuat seperti server configuration , connection string dalam web config hendaklah dicatitkan dan semak semula list tersebut semasa hendak di deploy.
Saya fikir release awal small module selepas melalaui test di testing server bagus unutk mendapat signal awal problem yang berlaku di production server, jika anda mempunyai acces ke production server. Pengalaman apabila semua module complete di test di test server dan apabila hendak deploy di production tidak menjadi seprti yang diharapkan mengajar saya untuk cepat release application dan test juga di production server.
Posted by ryzam at 12:21 PM 0 comments
Wednesday, August 01, 2007
Abstract Domain Part 001
Kemahiran dalam merekabentuk domain yang mantap memerlukan usaha melakukan sendiri latihan dengan memodelkan problem tersebut. Cara sama seperti mana belajar matematik, iaitu kita kena rajin buat latihan dan mempunyai daya analisa yang tinggi, daya analisa yang tinggi datang InsyAllah jika anda sudah biasa dengan latihan-latihan memodelkan domain. InsyAllah semasa memodelkan domain anda akan nampak pattern-pattern analisa yang sama dengan masalah sebelumnya.
Dalam siri ini, insyAllah saya akan hasilkan beberapa abstract domain model . Abstract ertinya domain yang masih lagi bersifat "high level".
Domain Module Access Management:
Minggu lepas terdapat perbincangan antara saya dan rakan-rakan dan mereka minta analisa saya berkaitan bagaimana nak control user yang mempunyai roles supaya ada pelbagai access right terhadap module page yang dibina.
Sebagai contoh User A mempunyai 2 roles iaitu CustomerServices dan juga sebagai SeniorCourier. Untuk roles CustomerServices terdapat pelbagai access right boleh diberi kepada roles tersebut seperti FullAccess untuk Module A dan ReadOnly untuk Module B.
Contoh abstract domain seperti dibawah
Posted by ryzam at 1:11 PM 0 comments
Tuesday, July 31, 2007
Bagaimana nak test repository tanpa hit database?
Mock
Saya nak test repository object tapi tanpa perlu repository object tersebut melalui database bagaimana? Mock ?
Mock membolehkan saya test sesuatu object dengan beberapa expected return result. Sebagai contoh jika saya hendak find object User maka saya perlu dapatkan object User tersebut dari UserRepository, dan jika saya test UserRepository bersama dengan database, prosess test akan memakan masa yang agak lama kerana setiap test akan melalui prosess "Setup" dan "TearDown". Jadi apabila saya menggunakan mock object terhadap UserRepository, prosess interaction dengan database boleh diabaikan dan mock UserRepository boleh return expected result iaitu object User.
Dalam example code dibawah, saya hendak test ProspectServices dan didalm test tersebut saya perlu menggunakan ProspectRepository dan didalam real implementation ProspectRepository akan access DataAccessObject dan disini berlakunya communication dengan database. Untuk elakkan perkara itu berlaku maka saya akan mockkan ProspectRepository.
Selain dari itu saya juga bnyk menggunakan cara design by interface, dan cara ini sesuai digunakan dalam process test mock. Di mana kebanykkan code saya akan bermula dengan interface dan code implemantation hanya jika perlu.
Contoh code dibawah juga melibatkan 3 element penting interaction iaitu Presenter,Services dan Repository. Boleh dilihat bagaimana Presenter menggunakan Services untuk mendapatkan object Prospect dari Repository.
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using Takaful.Core.Domain;
using Rhino.Mocks;
using Takaful.Core.Services;
using Takaful.Core.Repository;
namespace Services.TestStartProgramme
{
[TestFixture]
public class TestMockProspectServices
{
private MockRepository mock;
private Prospect prospect;
[SetUp]
public void InitSetup()
{
mock = new MockRepository();
prospect = new Prospect();
}
[TearDown]
public void TestCleanup()
{
mock.ReplayAll();
mock.VerifyAll();
}
[Test]
public void ShouldCreateProspect()
{
IProspectRepository iprospectRepository = mock.CreateMock<IProspectRepository>();
IProspectView view = mock.CreateMock<IProspectView>();
iprospectRepository.Save(prospect);
mock.ReplayAll();
ProspectServicesImpl services = new ProspectServicesImpl(iprospectRepository);
ProspectPresenterImpl presenter = new ProspectPresenterImpl(view, services);
presenter.SaveProspect(prospect);
}
[Test]
public void ShouldFindPropectById()
{
IProspectRepository iprospectRepository = mock.CreateMock<IProspectRepository>();
Expect.Call(iprospectRepository.GetDomainById("001")).Return(prospect);
ProspectServicesImpl psi = new ProspectServicesImpl(iprospectRepository);
mock.ReplayAll();
Assert.IsNotNull(psi.GetProspectById("001"));
}
}
public interface IProspectServices
{
void SaveProspect(Prospect prospect);
}
public class ProspectServicesImpl : IProspectServices
{
IProspectRepository iprospectRepository;
public ProspectServicesImpl(IProspectRepository iprospectRepository)
{
this.iprospectRepository = iprospectRepository;
}
public void SaveProspect(Prospect prospect)
{
iprospectRepository.Save(prospect);
}
public Prospect GetProspectById(string Id)
{
return iprospectRepository.GetDomainById(Id);
}
}
public interface IProspectPresenter
{
}
public interface IProspectView
{
}
public class ProspectPresenterImpl : IProspectPresenter
{
IProspectView pv;
IProspectServices ps;
public ProspectPresenterImpl(IProspectView pv, IProspectServices ps)
{
this.pv = pv;
this.ps = ps;
}
public void SaveProspect(Prospect prospect)
{
ps.SaveProspect(prospect);
}
}
public interface IProspectRepository : IRepository<Prospect, string>
{
}
}
Posted by ryzam at 2:59 PM 0 comments
Tuesday, July 03, 2007
NUnit, MbUnit, NCover dan NCoverExplorer
Hari nie saya nak tulis tentang testing tools yang saya guna, supaya saya tak lupa, sebab lepas meeting pagi tadi, ada group yang minta saya hasilkan test report dan report ini jarang saya buat then bila nak hasilkan report tersebut dah terlupa caranya.
Pada kebiasaan bila run test, saya hanya melihat result yang dihasilkan dan kemudian tambah lagi test case, tapi kali ini automated test melibatkan beberapa applikasi dan autamated ini ialah fokus pada Integration test diantara applikasi tersebut maka report sangat penting untuk ditunjukkan kepada business owner.
Ada 4 tools testing yang saya guna kan, dan bukan kesemua digunakan secara serentak tapi mengikut keadaan. Biasanya untuk normal case apabila saya buat TDD saya suka gunakan NUnit GUI untuk run test dan dapatkan result.
Manakala untuk dapatkan statistic code, berapa banyak code dalam unit test dah melalui test sequence saya menggunakan NCover dan NCoverExplorer.
Tak sempat nak habiskan cerita pasal tools nie.. nanti senang2 sambung semula.. aaaa
Posted by ryzam at 2:04 PM 1 comments
