Wednesday, February 02, 2011

Rewrite NerdDinner + DCI + SisoDB

Salam -1Malaysia

Antara cara untuk cepat memahami dan belajar sesuatu teknik dalam programming ialah dengan rewrite existing open source application kepada teknik baru yang hendak dikuasai.Cara sebegini agak berkesan kerana bahagian UI tidak perlu dibina, boleh menggunkan UI yang dah ada, apa yang penting ialah mengubah code dibahagian belakang (backend).

Untuk itu aku akan tunjukkan cara macam maner aku rewrite + refactor existing nerddiner code kepada teknik DCI.InsyAllah aku akan bahagikan artikel nie kepada beberapa bahagian.

Untuk mereka yang tak tahu apa itu NerdDinner, boleh baca kat sini NerdDinner Codeplex.

First sekali aku perlu kenal pasti which part/code yang aku ingin rewrite.Jadi dalam nerddinner application bahagian yang aku kenal pasti pertama sekali ialah bahagian register sebagai user. NerdDinner menggunakan Membership provider which is pada aku provider yang okay bagi normal developer, tetapi tidak bagi experiance developer.

Okay first sekali tengok dalam orginal code di controller



Pada line no 8, controller akan call Membership service untuk create User. Aku rewrite code di contoller dan mengantikan Membership service kepada DCI context.



Code diatas ialah code di controller apabila ditukar untuk connect ke DCI context. Perhatikan pada line 13 iaitu RegisterAccountContext. RegisterAccountContext bertanggungjawab untuk run process mendaftarkan user.

Project Solution
Sebelum start dengan lebih detail, disini aku tunjukkan beberapa perubahan yang dilakukan tetapi tidak terlalu ekstrim, pada project solution aku tambah another 2 folder dalam project yang sama (Aku tak buat dlm project yang lain untuk tujuan demo ini). Dua folder yang baru ditambah ialah Contexts dan juga Domains folder didalam folder Model seperti ini :


Domains
Orginal nerddiner menggunakan Entity Framework Codegen, tetapi disini aku akan guna normal POCO plus SisoDB. Untuk mereka yang tidak tahu apa itu SisoDb boleh baca disini SisoDb.

Untuk first domain aku akan buat ialah UserAccount. Aku akan tunjukkan sesimple yang boleh untuk rewrite aplikasi ini.



Interface IRolePlayer hanyalah marker interface, manakala IUserAccount ialah role interface, nanti akan diterangkan secara detail.

Context

Context ialah object yang akan implement use case. Kebiasaannya nama context similar kepada nama use cases. Jadi disini aku akan create satu context yang dipanggil RegisterAccountContext.



Okay pada line 9, aku declare role interface, dimana role interface ini hanyalah available digunakan hanya dlm context register account.

Pada line 30, role akan diinject dengan RoleMethod (RegisterAccountRole) class

this.IUserAccount.PlayRole()
.Register(userName, passWord, email);


Business interaction akan berlaku didalam class RegisterAccountRole, lihat line 42.

Okay rasa setakat ini untuk bahagian 1.

Hantar email untuk sample complete code

Tuesday, February 01, 2011

Pengundi Melayu kurang ilmu demand time pilihanraya

Pengundi melayu pada umumnya masih kurang ilmu nak demand undi time pilihanraya.. pilihanraya kat malaysia sebenarnya adalah perniagaan yang menguntungkan pada mereka yang arif

sepatutnya time nie jika mereka benar2 nakkan undi..anda sepatutnya demand hak-hak dan apa-apa yang berkaitan keperluan hidup pada masa itu juga... pada penyokong pembangkang jgn hanya terlibat dalam kempen pembangkang , join sekali event bik mama yang tiada unsur maksiat lah.. so masa tu anda mintalah mereka tunai kan keperluan anda sebagai rakyat/pengundi jika mereka memerlukan undi anda.. serius...nie rahsia hidup senang bila pilihanraya.

demand sikit, jika tak bagi..undi anda pergi ke pembangkang..ada berani??.. tapi oleh kerana sifat bertolak ansur dan lembut hati ada pada pengundi melayu menyebabkan mereka ditipu hidup2 macam sekarang nie, sampai bila perlu ditipu macam nie. walaupun anda memang karat biru, salah ke nak demand?? takut?? ..anda rugi.. walaupun anda dah tekad dlm hati nak mengundi dacing so kalau anda demand sikit adakah kemelayuan anda akan hilang?

pada pembangkang pun satu, kalau kawasan tu memang dah agak pekat % < 50 untuk menang ..mereka sepatutnya tak perlu bersusah payah berkempen mengeluarkan belanja yang banyak, sekadar buat satu kain rentang muka calon dah lah, lepas tu buat kempen kerumah sampaikan maklumat, bukan suruh undi pembangkang, tapi bagi tahu pengundi untuk demand hak mereka..

Ubah sikit cara, dah memang tahu susah nak sampaikan maklumat kerakusan pihak berkuasa, nak cerita pasal rasuah kat orang kampung apa mereka nak peduli, kehidupan mereka tak terasa sangat. so cara lain ialah kempen mereka untuk dapatkan peruntukan

guna psycho cara lain, keras jgn dilawan dgn keras, serap je..oleh kerana puak2 tu suka sgt buat project segera, so galakkan supaya lebih bnyk project segera, pada masa tu kena ajar pengundi untuk bersifat tamak dengan demand yang lebih2 sikit..pembangkang kena raikan apabila mereka tawarkan sesuatu pada pengundi...hadir press conference bila ada apa-apa project yang dibuat..