Assalamulaikum wbt..
Artikel kali ini adalah mengenai panduan ringkas sebelum mula membangunkan aplikasi Android, terutama kepada mereka yang masih baru dalam bidang ini. Artikel lanjut dan informasi terbaru boleh didapati di blog saudara Amrud. Bagi mereka yang pernah membangunkan aplikasi dalam platform Windows Mobile (6.1 atau 6.5), langkah-langkahnya lebih kurang sama.
Untuk pengetahuan mereka yang masih baru dalam bidang aplikasi mobile, pembangunan aplikasi memerlukan sekurang-kurangnya 3 benda, iaitu IDE ( seperti Eclipse, Visual Studio atau Netbeans), Software Developement Kit atau SDK dan terakhir sekali Device Emulator. Device Emulator adalah applikasi "Sandbox" yang bila diklik, OS akan menyediakan persekitaran yang menyerupai device sebenar, sebagai contoh PDA untuk Android or Windows Mobile, termasuk jumlah RAM, peripheral, virtual SMS, MMS and Wifi connection. Ini adalah untuk memudahkan anda debug aplikasi yang anda bangunkan tanpa perlu install pada PDA sebenar.

Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts
18 December 2010
Android Developer - Getting Started
Labels:
Android,
Eclipse,
programming
22 June 2010
Baracuda - Learn Dynamic Programming Part I
Assalamulaikum wbt..
Post kali nie dedicated utk application y aku tgah wat skg nie y aku namekan Baracuda..Apps nie lanjutan daripada MediaTomyam y aku buat b4 aku blik hari tue..Ade 2 sbb knape aku wat apps nie..1st, utk isi ms lapang dikala aku boring2 xtaw nk wt mende..2nd, utk praktis programming skills utk elakkan aku tlupa n explore teknik2 baru..Kdg2 idea tue bile2 bleh dtg, time tgh mandi la, time tgah men fifa la, time ngah bwak moto..tetiba t'fikir nk wat itu la, ini la..so, stp kli idea2 canggih cmtu dtg, aku bkak lptop n write code..Baracuda nie sbenanye aku develop as a "Housing" utk sume apps2 y aku t'fikir nk wat..yela..xkan stiap kali nk wat bnde bru je kene create projek baru kat compiler ye x..
Post kali nie dedicated utk application y aku tgah wat skg nie y aku namekan Baracuda..Apps nie lanjutan daripada MediaTomyam y aku buat b4 aku blik hari tue..Ade 2 sbb knape aku wat apps nie..1st, utk isi ms lapang dikala aku boring2 xtaw nk wt mende..2nd, utk praktis programming skills utk elakkan aku tlupa n explore teknik2 baru..Kdg2 idea tue bile2 bleh dtg, time tgh mandi la, time tgah men fifa la, time ngah bwak moto..tetiba t'fikir nk wat itu la, ini la..so, stp kli idea2 canggih cmtu dtg, aku bkak lptop n write code..Baracuda nie sbenanye aku develop as a "Housing" utk sume apps2 y aku t'fikir nk wat..yela..xkan stiap kali nk wat bnde bru je kene create projek baru kat compiler ye x..
Labels:
C#,
programming,
WPF
16 May 2010
New Project Release- MediaTomyam
Assalamulaikum wbt..
Alhamdulillah, berjaya jgak lepas week y sgt memeningkn utk sumer final year student CS skol nih. Berkat usaha n doa sumer org especially mak aku, FYP aku bjalan dgn cukup baek skali..Aku sndiri pn xsgka ending die akn jadi cmtu..Sbb kalu nk ikutkn, system aku mmg xstabil lagi..combine tech mobile, grid and image processing dlam cross platform..sometimes dpt result, sometimes x..but ms demo, sume nye ok..mmg syukur ar..
"MediaTomyam"
Sperti title post kali nie, aku da la wat 1 apps smntra mengisi masa lapang coz tiket aku blik kmpung lambat lagi..Application tue adalah media player y aku namakan - "MediaTomyam" sempena media player favorite aku, MediaMonkey..Apps nie dibuat dalam ms 3 hari, start from hari Rabu smpai hari Jumaat..Primary language is C# and Xaml, ofkoz sbb gune WPF technology (part of .Net)..other than that, aku gune library TagLib-Sharp utk retrieve idtag metadata from each song played..byk library dh try utk retrieve artist, title and album from lagu, tp library nie seems usable la jgak, easy to use..kat bwah nie ade beberapa skrin shot MediaTomyam nih..
Dari segi GUI design, aku cube follow style thirteen23 utk produk Blu (twitter client ok) dorang..Windowless, and allowtransparency aku set ke true, background pn semi transparent..Wat permulaan nie, aku sediakan drag n drop lagu cam windows media player direct trus ke Now Playing List..then list tue bleh di save dlm bntuk MediaTomyam playlist with file extension *.tomyam (windows media player punye playlist gune extension *.wpl)..
"FUNCTIONAL CONTROL"
Emm boleh dikatekan sume media player function dh siap dah kot..Aku gune WPF mediaelement utk host media object..after lagu dh habis main, apps nie automatic move to next song..Ape y menarik, aku dh siapkan skali features shuffle, so boleh turn on or off shuffle bile nk play lagu..Cara die snang je, generate random number based on system datetime as a pre-seed value, then modulus dgn total song dlm playlist utk maksure numbere generated is within acceptable range..Slain tue, aku dh siapkan gak mute function..cara die, control mediaelement.volume value..tp awas, value die between 0.0 - 1.0, not 1 to 100..so, kalu nk mute, set volume = 0.0 je la..kalu unmute, get current volume slider value then multiply dgn percentage mediaelement.volume..senang kn..em kat bwah nie aku tnjuk kn screen shot media controller y aku ckp kn td
Seperti y korang tgk kat atas nih, start from left ade function utk shuffle, mute/unmute, stop, previous song, seek rewind, play/pause, seek forward, next song and finally volume controller. Kat blah atas sikit tue ade song progress bar in real time..Nk cite sal programming kat sini agak pyah la, tp cukup la kalu aku ckp, sume tue dh siap berfungsi, ready utk dijual je lagi..ekekeke.
Spnjag wat apps nie, aku gune sumer teknik C# for OO programming extensively..Variable pn aku keep less, usercontrol usage n object declaration pn gune exposable initialization..Hope xbyk memory leak..sume nie amat berguna especially nk mksure Apps kite run dgn sgt laju, tanpa lack..n one thing for sure,hasilnya ialah MediaTomyam nie sgt ringan..
"CONSLUSION"
So, for those y nk try bnde nie, sila pastikan laptop dilengkapi dgn atleas windows Vista with .Net Framework 3.5 installed..n ofkos, sila pastikan jugak request dri aku, sbb installer die xkn ade dkt filehippo, download.com or even softpedia.com yerk..Akhir kate, inilah die hasilnya bile aku dh boring tahap gaban selama 3 hari dok kat USM nie xtaw nk wat mende..project seterusnye, aku nk further bnde nie utk play movie plak..xtaw nk integrate ngn codec cmana..xpk lagi..next time la..y pnting, holiday dulu..
Gud nite...
JAGA DIRI, JAGA IMAN
.
Labels:
C#,
design,
media player,
programming,
WPF
18 March 2010
FYP Progress
Assalamulaikum wbt..
Alhamdulillah, skg nie msih lgi da kekuatan utk berfikir, consume knowledge atas keizinan Allah swt..Dipendekkan cite, aku xsure projek aku nie nk ke mana..Wat ms nie, saat nie, pkataan y seswai utk projek nie adalah "impossible" to me..Still stp hri kne keep thinking nk figure out cmana nk "possible"kn bnde nie..Bese ar, bnde nie sgt bru bg aku..name pn bdak network terjun lam field AI n grid computing..
"INSPORA - IN DETAILS"

Click to enlarge
Alhamdulillah, skg nie msih lgi da kekuatan utk berfikir, consume knowledge atas keizinan Allah swt..Dipendekkan cite, aku xsure projek aku nie nk ke mana..Wat ms nie, saat nie, pkataan y seswai utk projek nie adalah "impossible" to me..Still stp hri kne keep thinking nk figure out cmana nk "possible"kn bnde nie..Bese ar, bnde nie sgt bru bg aku..name pn bdak network terjun lam field AI n grid computing..
"INSPORA - IN DETAILS"

Click to enlarge
Kat atas nie adalah main system framework utk projek aku..Main purpose bnde nie adalah utk membolehkan orag rmai dptkan info sal bunga dgn secepat y mungkin..igt tue, "secepat y mungkin"..Which means, this project should implement all necessary method to make it run faster and efficient, xksah ar processing algorithm ker, memory leak management ker..Aku explain ar sikit supaya korang senang nk phm k..
"1 - USER INPUT"
Utk system nie, ade dua main input iaitu mobile device or website. User bleh upload gambar bunga either melalui website (conventional way) or send directly from mobile thru MMS ke system..Utk website, team aku gune Silverlight 3 technology utk interface visualization (XAML), all animation n language C# utk sumer event handling..Silverlight nie slah satu component dlm .Net Framework (latest version 4.0) y specialize utk high user interface experience. Ape y best nye, Silverlight nie ade full integration with Asp.net..mksudnye, let say ar certain function xleh wat dlm Silverlight, kite bleh invoke Asp.net punyer function as a delegate function..
Next, utk integration between Silverlight page ngn Web Server, aku gune WCF utk manage data connection..WCF nie integated web service y operate based on SOA (service oriented architecture)..snang gune nie sbb programmer cm kite xperlu nk pk kn sal WSDL, UDDI, Object Serialization n etc since everything WCF dh handle..data serialization done by enumerable data collection.Tue part web, utk receive MMS, kne ader GSM Modem spya bleh receive image file from network provider..GSM modem nie lebih kurang cm broadband y kite bese gune, cume beza nye die ade antena kecik cam access point..Once user send MMS ker system, akan ade "daemon" apps y akn retrive image from GSM modem nie and transfer tue web server..So, for now web server dh ade flower image y die dpt either dri GSM Modem (MMS) or Silverlight (manual upload)..
"2 - WEB SERVER + GRID MANAGER"
Next, web server n grid manager actualy reside on two separate machines..One on windows n linux on the other..Utk communication n data transmission between 2 machine nie aku gune socket programming dgn UDP protocol, since aku assume both are on dedicated line n no service lookup is needed..just one-to-one mapping..Those y interested nk tw pe die socket programmng nie leh rujuk kat entry y lepas2 yer..Once web server dh dpt image tue, cam bese, path file akn di store lam MySql database, n image file dlm file server..Bleh je nk stor image dlm database gune format BLOB, tp nti nk load image akn jd lmbat..Then path file tue akn di pass as a forward request to Grid Manager..Kat sini, ngn bantuan Globus middleware and main language Java, any available image processing engine bleh di pick on round robin basis..Grid computing mmg pnting kat sini..Xleh nk citer byk sbb aku pn still ngah develop part nie..Examiner aku suggest gune ping method, kire machine y reply plig cepat, machine tu y akn di pick..
"3 - IMAGE PROCESSING"
Dlm projek Inspora nie, ade 2 part y plig pnting iaitu cross platform communication n image processing..After receive path file image td, ngn bantuan Matlab, system akn retrive blik image from file server, and go thru 1st phase which is image enhancement. Reason being is image from user bleh dtg ngn mcm2 format, ade 2, 3 or 8 megapixel, ade y jpeg, bitmap or png, ade y blur n low contrast..mcm2 lagi..After that, 2nd phase which is image recognition will take over..Bermula ngn binarization, elimination, then edge detection utk define degree of circularity or shape, n dominant color determination..process nie melibatkan bbrapa feature extraction algorithm y agk pnjag lebar kalu nk explain kt sini..so, xyah la explain erk..Data2 y dh di extract tu akn dicompare ngn system punye neural network based on back propagation algorithm..berkenaan ngn bnde nie, aku srahkan kat acad ar (team mate) sbb die majoring in AI..hehe..
"4 - FORWARD RESULT"
After dh dpt result n dh tw bunga tue bunga ape, retrieve reference id from database, pass back to web server. Based on id tue, web server akn retrieve necessary info n display result kat user (in case of Silverlight) or send to user using SMS via SMS gateway (in case of MMS)..SMS gateway nie plak actually 1 "daemon" apps y connect ngn external dummy gateway
"CURRENT PROGRESS"
Progress skg ? leh rujuk pic kat atas tu..mmg byk lagi y aku xwat..xtaw bile nk siap nie..bnde nie ssh nk wat sbb name pn projek bdak master, level cm kite nie ssh gak ar nk prah otak fikirkan kn bnde y kite xpnah blaja..Dlm project ni, aku responsible utk interprocess and cross platform communication on mobile n distributed grid computing, and team mate aku, Acad plak responsible utk image processing n neural network algorithm..exploration takes time kn..sabar je laa.
"SOME SCREENSHOT"
Kalu korang prasan ar, projek aku nie bleh kate 87% main programming kat background system..xder ar interface sgt pun..Projek Inspora nie da 1 interface jer iaitu from Silverlight website..So, aku tnjuk ar sikit2 shot ya ader..hak cipta terpelihara ok..watch out..
Main front page..Konsep die kt sini, besenye org taip keyword kat google utk cri image, but skg ktorang reverse, upload image utk cri keyword n explaination.
Sign up page..Main theme web site nie kaler kuning + grey..logo kaler hjau tu aku pick je mane2..
Front page after sign in..data xder lagi, sbb mlas nk goreng info..nk display jer pun.
Page utk display all image uploaded by user..sumer gmbar same sbb gune sample pic y sme.
Flower description..Once again, data kosong sbb mlas nk goreng info..
Page utk list all or favorite article..kosong gak sbb info n karangan len mlas nk isi..y ptg programming sumer siap..
.
"1 - USER INPUT"
Utk system nie, ade dua main input iaitu mobile device or website. User bleh upload gambar bunga either melalui website (conventional way) or send directly from mobile thru MMS ke system..Utk website, team aku gune Silverlight 3 technology utk interface visualization (XAML), all animation n language C# utk sumer event handling..Silverlight nie slah satu component dlm .Net Framework (latest version 4.0) y specialize utk high user interface experience. Ape y best nye, Silverlight nie ade full integration with Asp.net..mksudnye, let say ar certain function xleh wat dlm Silverlight, kite bleh invoke Asp.net punyer function as a delegate function..
Next, utk integration between Silverlight page ngn Web Server, aku gune WCF utk manage data connection..WCF nie integated web service y operate based on SOA (service oriented architecture)..snang gune nie sbb programmer cm kite xperlu nk pk kn sal WSDL, UDDI, Object Serialization n etc since everything WCF dh handle..data serialization done by enumerable data collection.Tue part web, utk receive MMS, kne ader GSM Modem spya bleh receive image file from network provider..GSM modem nie lebih kurang cm broadband y kite bese gune, cume beza nye die ade antena kecik cam access point..Once user send MMS ker system, akan ade "daemon" apps y akn retrive image from GSM modem nie and transfer tue web server..So, for now web server dh ade flower image y die dpt either dri GSM Modem (MMS) or Silverlight (manual upload)..
"2 - WEB SERVER + GRID MANAGER"
Next, web server n grid manager actualy reside on two separate machines..One on windows n linux on the other..Utk communication n data transmission between 2 machine nie aku gune socket programming dgn UDP protocol, since aku assume both are on dedicated line n no service lookup is needed..just one-to-one mapping..Those y interested nk tw pe die socket programmng nie leh rujuk kat entry y lepas2 yer..Once web server dh dpt image tue, cam bese, path file akn di store lam MySql database, n image file dlm file server..Bleh je nk stor image dlm database gune format BLOB, tp nti nk load image akn jd lmbat..Then path file tue akn di pass as a forward request to Grid Manager..Kat sini, ngn bantuan Globus middleware and main language Java, any available image processing engine bleh di pick on round robin basis..Grid computing mmg pnting kat sini..Xleh nk citer byk sbb aku pn still ngah develop part nie..Examiner aku suggest gune ping method, kire machine y reply plig cepat, machine tu y akn di pick..
"3 - IMAGE PROCESSING"
Dlm projek Inspora nie, ade 2 part y plig pnting iaitu cross platform communication n image processing..After receive path file image td, ngn bantuan Matlab, system akn retrive blik image from file server, and go thru 1st phase which is image enhancement. Reason being is image from user bleh dtg ngn mcm2 format, ade 2, 3 or 8 megapixel, ade y jpeg, bitmap or png, ade y blur n low contrast..mcm2 lagi..After that, 2nd phase which is image recognition will take over..Bermula ngn binarization, elimination, then edge detection utk define degree of circularity or shape, n dominant color determination..process nie melibatkan bbrapa feature extraction algorithm y agk pnjag lebar kalu nk explain kt sini..so, xyah la explain erk..Data2 y dh di extract tu akn dicompare ngn system punye neural network based on back propagation algorithm..berkenaan ngn bnde nie, aku srahkan kat acad ar (team mate) sbb die majoring in AI..hehe..
"4 - FORWARD RESULT"
After dh dpt result n dh tw bunga tue bunga ape, retrieve reference id from database, pass back to web server. Based on id tue, web server akn retrieve necessary info n display result kat user (in case of Silverlight) or send to user using SMS via SMS gateway (in case of MMS)..SMS gateway nie plak actually 1 "daemon" apps y connect ngn external dummy gateway
"CURRENT PROGRESS"
Progress skg ? leh rujuk pic kat atas tu..mmg byk lagi y aku xwat..xtaw bile nk siap nie..bnde nie ssh nk wat sbb name pn projek bdak master, level cm kite nie ssh gak ar nk prah otak fikirkan kn bnde y kite xpnah blaja..Dlm project ni, aku responsible utk interprocess and cross platform communication on mobile n distributed grid computing, and team mate aku, Acad plak responsible utk image processing n neural network algorithm..exploration takes time kn..sabar je laa.
"SOME SCREENSHOT"
Kalu korang prasan ar, projek aku nie bleh kate 87% main programming kat background system..xder ar interface sgt pun..Projek Inspora nie da 1 interface jer iaitu from Silverlight website..So, aku tnjuk ar sikit2 shot ya ader..hak cipta terpelihara ok..watch out..






Labels:
C#,
fyp,
grid computing,
programming,
Socket,
study,
technology
27 February 2010
Socket Programming Part II
Assalamulaikum wbt..
Alhamdulillah, first syukur kpd Allah S.W.T krn kite msih lgi dianugerahi nikmat Iman dan Islam wlaupun hkikatnye kite selalu asyik dan lalai dlm menjalankan tggjwab as a khalifah-Nya.
"INTRODUCTION"
Entry y lepas aku da explain sikit sal ape die socket programming..Kalu korang xbace lgi, sila la bace since aku tkut da y termuntah lak nnti..1st, keep in mind that socket is like a tunnel so that my next explaination would be easy for you guys..Kat bwh nie ade screenshot process flow on how socket programming really works. Oleh kerana buku Unix Network Programming API aku kat en. Azri, mka gambo kat bwh nie adalah gambo y aku google je.

"BRIEFLY"
Socket programming melibatkan communication between server n client. Who's gonna be server n client ?? Jwpan nye adlah terletak pd kite as a programmer. Pd aku, to make it simple, Server is the one who provide the service n client is the one who request/consume the service..For instance, Facebook y hri2 korang usya tue kn. Facebook mainframe wil be the server, n your machine will be the client n request sumer msg2 kat wall..
"1ST, SERVER INITIALIZATION"
Bende y plig penting adalah server perlu ade ip address n port..Bygkn korang da rumah with one address but more doors. Korang kne la decide which "door" y korang nk gune. Port 1-1024 is reserved by IANA as a default web service cam port 80 utk HTTP, port 22 utk FTP and so on..Suggestion aku gune port 2000 and above..1st, initialize Socket class or "tunnel" n call library2 y berkaitan..Next, bind kn dgn ip address machine korang n port y korang nk gune. Xksah IPv4 or IPv6, the step is still same but the address representation n network masking is little bit different. Once korang dh bind, korang sebenarnye dh advertise through out all computer in local network y korang ade "tunnel" ke laptop korang..Be carefull since this is the actuall way on how hackers gain access on victim's computer.So aku advise try dlu dlm mode local host n your ip address should be "127.0.0.1" or "::1" for IPv6..Lepas "tunnel" dh establish, server will be in "daemon state" - a program that always running in the background n listen for any incoming request.
"CONNECTION ESTABLISHMENT"
Next, prepare your client program. Client xperlu bind ip address n port ke socket. What he need to know is with who he want to connect. Atas sbb itu, korang kene supply kat die ip address n port server y korang dh wat td..Yela, kalu x, cmana lgi die nk connect ke server..Then bile connect ke server, 1 "path" akn di establish between your client n server. Utk permulaan, xpyahla pk soal connection secure or x secure, in fact, mmg xsecure pn..Kalu nk wat style "ssl" connection with further packet encryption, sila wat ms kat phase ni.
"DATA TRANSMISION"
Once dh connect, client n server should bleh communicate n pass some string msg as a sample data. Skg nie, data trasmision depend on what type of network protocol y korang nk gune, TCP or UDP. TCP is little bit complex compared with UDP but more reliable..Kenapa?? ok aku explain.
In TCP, stp data akn di convert from host byte to network byte, tmbah dgn other TCP header like source n destination info, TTL (time to live), checksum, padding, "window" size, packet sequence n etc. Maximum transmision unit (MTU) pn agak besar but fixed. Which means kalu buffer size = 1024 byte, but korang juz nk send hruf "A" je, TCP protocol akn automatik add some padding utk mksure die reach MTU size. One more, mose of the time kite akn download muvie y bersize besar >500 MB rite. Its imposible to transmit whole file with single data packet. In reality (like what all download manager do), this 500 MB file akn dipisah2kan kpd packet2 y lebih kecik mengikut size MTU td n also "window" size..Ape die "window" size nie?? Next post insyaAllah aku akn explain sikit since ia melibatkn 3-way handshake n bla bla bla..So, packet2 kecik nie td aku lbih suke pgil as a "chunk"..Each chunk akn di bg "no giliran" or sequence number. Then all chunk will be sent regardless which one is the first or last. Bile packet2 or chunk nie arrive kat laptop korang (client), download manager akn combine or rebuild blik to form the big file again.
In UDP is totally different, each file still need to be splitted into chunks but there is no 3-way handshake, cheksum, n byk lagi. In TCP kite pgil packet, but in UDP kite pgil datagram. Since there no overload network header information, UDP datagram mmg ringan n kcik. Ditambah plak dgn xder sistem "handshake" or acknowledgment, datagram besenye mmg cepat n lagi pantas drpd send gune TCP protocol. But once again, there is no guarantee y datagram nie td akn smpai kpd client. Aku bg contoh, let say la file y besar td split kpd >1000 chunk datagrams, blum tentu datagram ke-5 akan smpai dlu dripad datagram ke-10..Thats why UDP xseswai utk send file bersize bsar, tp advantage die amat berkesan bile nk wat application y byk gune message passing (instant messanger, distributed system).
"CLOSE CONNECTION"
After data transmision hbis, client akn close connection dlu, then bru server..After that, server akn return blik kpd "listen" mode coz cm aku ckp td, server ack like a "daemon" - always running. Bile connection dh close, next client bleh establish connection bru dgn server..
CONCLUSION
Kalu nk further lgi, korang bleh wat Socket connection either in asynchronous or syncronouse mode, non-blocking or blocking state n byk lgi. Aku tw rmai y xminat nk tw bnde2 complicated cmni, but the thing is, its good to expand your knowledge n make yourself "knowledgable" person instead of doing assignment n let that particular knowledge juz "pass by" your subconscious mind..Gain the concept, n apply it whenever needed..
Gudluck..
.
Alhamdulillah, first syukur kpd Allah S.W.T krn kite msih lgi dianugerahi nikmat Iman dan Islam wlaupun hkikatnye kite selalu asyik dan lalai dlm menjalankan tggjwab as a khalifah-Nya.
"INTRODUCTION"
Entry y lepas aku da explain sikit sal ape die socket programming..Kalu korang xbace lgi, sila la bace since aku tkut da y termuntah lak nnti..1st, keep in mind that socket is like a tunnel so that my next explaination would be easy for you guys..Kat bwh nie ade screenshot process flow on how socket programming really works. Oleh kerana buku Unix Network Programming API aku kat en. Azri, mka gambo kat bwh nie adalah gambo y aku google je.

"BRIEFLY"
Socket programming melibatkan communication between server n client. Who's gonna be server n client ?? Jwpan nye adlah terletak pd kite as a programmer. Pd aku, to make it simple, Server is the one who provide the service n client is the one who request/consume the service..For instance, Facebook y hri2 korang usya tue kn. Facebook mainframe wil be the server, n your machine will be the client n request sumer msg2 kat wall..
"1ST, SERVER INITIALIZATION"
Bende y plig penting adalah server perlu ade ip address n port..Bygkn korang da rumah with one address but more doors. Korang kne la decide which "door" y korang nk gune. Port 1-1024 is reserved by IANA as a default web service cam port 80 utk HTTP, port 22 utk FTP and so on..Suggestion aku gune port 2000 and above..1st, initialize Socket class or "tunnel" n call library2 y berkaitan..Next, bind kn dgn ip address machine korang n port y korang nk gune. Xksah IPv4 or IPv6, the step is still same but the address representation n network masking is little bit different. Once korang dh bind, korang sebenarnye dh advertise through out all computer in local network y korang ade "tunnel" ke laptop korang..Be carefull since this is the actuall way on how hackers gain access on victim's computer.So aku advise try dlu dlm mode local host n your ip address should be "127.0.0.1" or "::1" for IPv6..Lepas "tunnel" dh establish, server will be in "daemon state" - a program that always running in the background n listen for any incoming request.
"CONNECTION ESTABLISHMENT"
Next, prepare your client program. Client xperlu bind ip address n port ke socket. What he need to know is with who he want to connect. Atas sbb itu, korang kene supply kat die ip address n port server y korang dh wat td..Yela, kalu x, cmana lgi die nk connect ke server..Then bile connect ke server, 1 "path" akn di establish between your client n server. Utk permulaan, xpyahla pk soal connection secure or x secure, in fact, mmg xsecure pn..Kalu nk wat style "ssl" connection with further packet encryption, sila wat ms kat phase ni.
"DATA TRANSMISION"
Once dh connect, client n server should bleh communicate n pass some string msg as a sample data. Skg nie, data trasmision depend on what type of network protocol y korang nk gune, TCP or UDP. TCP is little bit complex compared with UDP but more reliable..Kenapa?? ok aku explain.
In TCP, stp data akn di convert from host byte to network byte, tmbah dgn other TCP header like source n destination info, TTL (time to live), checksum, padding, "window" size, packet sequence n etc. Maximum transmision unit (MTU) pn agak besar but fixed. Which means kalu buffer size = 1024 byte, but korang juz nk send hruf "A" je, TCP protocol akn automatik add some padding utk mksure die reach MTU size. One more, mose of the time kite akn download muvie y bersize besar >500 MB rite. Its imposible to transmit whole file with single data packet. In reality (like what all download manager do), this 500 MB file akn dipisah2kan kpd packet2 y lebih kecik mengikut size MTU td n also "window" size..Ape die "window" size nie?? Next post insyaAllah aku akn explain sikit since ia melibatkn 3-way handshake n bla bla bla..So, packet2 kecik nie td aku lbih suke pgil as a "chunk"..Each chunk akn di bg "no giliran" or sequence number. Then all chunk will be sent regardless which one is the first or last. Bile packet2 or chunk nie arrive kat laptop korang (client), download manager akn combine or rebuild blik to form the big file again.
In UDP is totally different, each file still need to be splitted into chunks but there is no 3-way handshake, cheksum, n byk lagi. In TCP kite pgil packet, but in UDP kite pgil datagram. Since there no overload network header information, UDP datagram mmg ringan n kcik. Ditambah plak dgn xder sistem "handshake" or acknowledgment, datagram besenye mmg cepat n lagi pantas drpd send gune TCP protocol. But once again, there is no guarantee y datagram nie td akn smpai kpd client. Aku bg contoh, let say la file y besar td split kpd >1000 chunk datagrams, blum tentu datagram ke-5 akan smpai dlu dripad datagram ke-10..Thats why UDP xseswai utk send file bersize bsar, tp advantage die amat berkesan bile nk wat application y byk gune message passing (instant messanger, distributed system).
"CLOSE CONNECTION"
After data transmision hbis, client akn close connection dlu, then bru server..After that, server akn return blik kpd "listen" mode coz cm aku ckp td, server ack like a "daemon" - always running. Bile connection dh close, next client bleh establish connection bru dgn server..
CONCLUSION
Kalu nk further lgi, korang bleh wat Socket connection either in asynchronous or syncronouse mode, non-blocking or blocking state n byk lgi. Aku tw rmai y xminat nk tw bnde2 complicated cmni, but the thing is, its good to expand your knowledge n make yourself "knowledgable" person instead of doing assignment n let that particular knowledge juz "pass by" your subconscious mind..Gain the concept, n apply it whenever needed..
Gudluck..
.
Labels:
C#,
Java,
programming,
Socket
26 February 2010
Socket Programming
Assalamulaikum wbt..
Firstly, syukur alhamdulillah krn ngn rahmat dri-Nya aku still lgi mmpu menulis kat blog nie..Sedikit petikan kate2 Dr. Danial ms khutbah jumaat td - "Udhulu fi silmi kaaffah" - y mane mksudnye "msuklah kamu kpd Islam scra menyeluruh / total..Oleh krna minggu nie aku struggle wat socket programming, so nk share sikit ar sal bnde nie. Mudah-mudahan korang y bace bnde nie leh expand n get the new knowledge.
"INTRODUCTION"
Let say korang nk wat 1 application cam Yahoo Messanger or Windows Live or Empathy (Ubuntu) y memerlukan extensive message passing between peers. Cara plig kacang n cepat adalah dgn manipulate database n timer sperti mana my teammate Acad wat ms die 2nd year for Widget Community beliau..Ali taip msg, insert kat shared database. Then Babun ade timer, every 3 seconds check database for new incoming msg. If ade y bru, fetch and display it. Same thing when Babun taip msg kpd Ali. Cara nie mmg sng and less complicated since everyone know how to use database (MsSql, MySql, Oracle etc)..But the thing is, frequent database access amat tidak efficient n high possibility for slow data retrieval time when 100 (let say) people access the database at the same time..Contoh laen, KFC ade byk branch kat 1 Malaysia nie. Director nk latest sales data for every branches. Cara plig senang, once again, every branches update shared central database about their latest sales data. Bnde y sama jgak akn berlaku when lot of people access the same shared database at the same time - slow data retrieval or even insertion..
"SOCKET PROGRAMMING"
So, the answer is - Socket Programming. Ape die Socket?? To make simple, aku bg analogi mudah. Socket nie snang nk fhm kalu kite anggap die mcm 1 tunnel y connect between 2 machine..The main thing is mesti kene 1 side jd Server n other side jd Client.
Server should be in "daemon" state - always running or be in infinite loops sbb Server akn wait for any incoming request..For that reason, Server kene ade ip address and port number that it will listen on to. Bind ip address dgn port number, listen then accept incoming connection, thats all..Kire kite create 1 public tunnel la..Simple kn..Client plak xperlu establish port number. Just create socket class, connect with Server's ip address n port number, setel..port number nie penting sbb server ade byk port number. Kite ade reserved port from 1 - 1024, so available port 1025 till 6000++..byk kn..Just imagine kite ade rumah y byk pintu but 1 je alamat rumah, so skg korang nk suh client tue masuk ikut pintu mana.
"NETWORK PROTOCOL - TCP OR UDP ??"
Next major things are type of data packet n internet protocol. Dlm Socket Programming, ade 2 protocol y kite bleh gune, TCP or UDP..Deep explaination bleh tanye Uncle Googlerudin. Briefly, TCP nie connection oriented n UDP conectionless. Analogy mudah (cam bese), TCP nie cam korang call mak kat kmpung. Once korang dail no. tepon, korang kene tgu mak korang agkat tepon dlu bru bleh ckap rite. Thats means in TCP, connection must establish first before data transmision can be done. However in UDP, analogi nye cam korang send SMS kat pakwe. Juz taip then send kat no tepon y berkaitan. Korang xtaw pn SMS tue dh dibaca ker blum, ape y korang tw ialah SMS tue dh delivered (lum tentu pakwe korang bace lg)..In other words, UDP doesn't need established or reliable connection..
So, bile ms nk gune TCP or UDP?? My opinion, use TCP if packets sequence is important or packet size is big (more than 1024 byte), otherwise use UDP instead..Aku bg contoh, application cam Yahoo Messanger gune UDP, since ape je y nk di send, juz string perkataan or file2 kecik. But Internet Download Manager (IDM) kene gune TCP protocol, kalu x, cmana die nk tlog donloadkn muvie korang kat Syok.org y 700 MB tue ye x..
"CODE EXAMPLE"
Finnish theory class, now practical part. Kat bwah nie aku bg sample code dalam Java utk Socket programming using UDP as network protocol
UDP Server:
UDP Client:
Ape y code nie buat adalah sgt simple, client connect with server, send perkataan dlm small letter, server receive n convert to Uppercase n then send blik kat client, thats all..Aku rse ckup kot code kat atas nie, juz nk show how client can communicate with server via Socket Programming..Mula2 mmg pening, tp try ar dlu..mesti best..Bleh gune ape2 java compiler, Netbeans or Eclipse (aku gune Eclipse)..No extra library, juz import java.io n java.net jer..hehe
.
Firstly, syukur alhamdulillah krn ngn rahmat dri-Nya aku still lgi mmpu menulis kat blog nie..Sedikit petikan kate2 Dr. Danial ms khutbah jumaat td - "Udhulu fi silmi kaaffah" - y mane mksudnye "msuklah kamu kpd Islam scra menyeluruh / total..Oleh krna minggu nie aku struggle wat socket programming, so nk share sikit ar sal bnde nie. Mudah-mudahan korang y bace bnde nie leh expand n get the new knowledge.
"INTRODUCTION"
Let say korang nk wat 1 application cam Yahoo Messanger or Windows Live or Empathy (Ubuntu) y memerlukan extensive message passing between peers. Cara plig kacang n cepat adalah dgn manipulate database n timer sperti mana my teammate Acad wat ms die 2nd year for Widget Community beliau..Ali taip msg, insert kat shared database. Then Babun ade timer, every 3 seconds check database for new incoming msg. If ade y bru, fetch and display it. Same thing when Babun taip msg kpd Ali. Cara nie mmg sng and less complicated since everyone know how to use database (MsSql, MySql, Oracle etc)..But the thing is, frequent database access amat tidak efficient n high possibility for slow data retrieval time when 100 (let say) people access the database at the same time..Contoh laen, KFC ade byk branch kat 1 Malaysia nie. Director nk latest sales data for every branches. Cara plig senang, once again, every branches update shared central database about their latest sales data. Bnde y sama jgak akn berlaku when lot of people access the same shared database at the same time - slow data retrieval or even insertion..
"SOCKET PROGRAMMING"
So, the answer is - Socket Programming. Ape die Socket?? To make simple, aku bg analogi mudah. Socket nie snang nk fhm kalu kite anggap die mcm 1 tunnel y connect between 2 machine..The main thing is mesti kene 1 side jd Server n other side jd Client.
Server should be in "daemon" state - always running or be in infinite loops sbb Server akn wait for any incoming request..For that reason, Server kene ade ip address and port number that it will listen on to. Bind ip address dgn port number, listen then accept incoming connection, thats all..Kire kite create 1 public tunnel la..Simple kn..Client plak xperlu establish port number. Just create socket class, connect with Server's ip address n port number, setel..port number nie penting sbb server ade byk port number. Kite ade reserved port from 1 - 1024, so available port 1025 till 6000++..byk kn..Just imagine kite ade rumah y byk pintu but 1 je alamat rumah, so skg korang nk suh client tue masuk ikut pintu mana.
"NETWORK PROTOCOL - TCP OR UDP ??"
Next major things are type of data packet n internet protocol. Dlm Socket Programming, ade 2 protocol y kite bleh gune, TCP or UDP..Deep explaination bleh tanye Uncle Googlerudin. Briefly, TCP nie connection oriented n UDP conectionless. Analogy mudah (cam bese), TCP nie cam korang call mak kat kmpung. Once korang dail no. tepon, korang kene tgu mak korang agkat tepon dlu bru bleh ckap rite. Thats means in TCP, connection must establish first before data transmision can be done. However in UDP, analogi nye cam korang send SMS kat pakwe. Juz taip then send kat no tepon y berkaitan. Korang xtaw pn SMS tue dh dibaca ker blum, ape y korang tw ialah SMS tue dh delivered (lum tentu pakwe korang bace lg)..In other words, UDP doesn't need established or reliable connection..
So, bile ms nk gune TCP or UDP?? My opinion, use TCP if packets sequence is important or packet size is big (more than 1024 byte), otherwise use UDP instead..Aku bg contoh, application cam Yahoo Messanger gune UDP, since ape je y nk di send, juz string perkataan or file2 kecik. But Internet Download Manager (IDM) kene gune TCP protocol, kalu x, cmana die nk tlog donloadkn muvie korang kat Syok.org y 700 MB tue ye x..
"CODE EXAMPLE"
Finnish theory class, now practical part. Kat bwah nie aku bg sample code dalam Java utk Socket programming using UDP as network protocol
UDP Server:
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
try
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
receiveData = new byte[1024];
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
System.out.println ("Waiting for datagram packet");
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
System.out.println ("From: " + IPAddress + ":" + port);
System.out.println ("Message: " + sentence);
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
serverSocket.send(sendPacket);
}
}
catch (SocketException ex) {
System.out.println("UDP Port is occupied.");
System.exit(1);
}
}
}
UDP Client:
import java.io.*;"CONCLUSION"
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
try {
String serverHostname = new String ("127.0.0.1");
if (args.length > 0)
serverHostname = args[0];
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName(serverHostname);
System.out.println ("Attemping to connect to " + IPAddress +
") via UDP port");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
System.out.print("Enter Message: ");
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
System.out.println ("Sending data to " + sendData.length +
" bytes to server.");
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
System.out.println ("Waiting for return packet");
clientSocket.setSoTimeout(10000);
try {
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
InetAddress returnIPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
System.out.println ("From server at: " + returnIPAddress +
":" + port);
System.out.println("Message: " + modifiedSentence);
}
catch (SocketTimeoutException ste)
{
System.out.println ("Timeout Occurred: Packet assumed lost");
}
clientSocket.close();
}
catch (UnknownHostException ex) {
System.err.println(ex);
}
catch (IOException ex) {
System.err.println(ex);
}
}
}
Ape y code nie buat adalah sgt simple, client connect with server, send perkataan dlm small letter, server receive n convert to Uppercase n then send blik kat client, thats all..Aku rse ckup kot code kat atas nie, juz nk show how client can communicate with server via Socket Programming..Mula2 mmg pening, tp try ar dlu..mesti best..Bleh gune ape2 java compiler, Netbeans or Eclipse (aku gune Eclipse)..No extra library, juz import java.io n java.net jer..hehe
.
Labels:
Java,
programming,
Socket,
study
21 February 2010
C# Art
Assalamulaikum wbt..
Alhamdulliah, syukur ke hadrat ilahi kerana dengan limpah kurnia nye aku bleh ar bernafas lgi atas muka bumi nie selaku insan bernama mohd yazid..
Ok, skg nie rmai .Net programmer y masih beginner mcm aku still wat programing dlm cara y konvensional or tipikal. Sometimes its good for readability (senag nk debug), tp prasan or x, ia bleh menyebabkan kurangnye reliability in term of efficiency, performance, memory and battery consumption. Bnde nih jarang org tgk, y penting projek siap dh la kn. Tp aku sgt interested kat bnde2 cmni..sbb nye..itulah the arts of programming..tul x?
"Get and Set functionality"
First, nk explain skit sal Get n Set nie. Mcm bese, Get adalah bile kite nk dptkan value from that particular object instance, n Set bile kite nk initialize or assign value. Nk lebih clear, aku bg contoh kat bwah nie:
Contoh 1:
private string myname;
public string GetMyName()
{
return myname;
}
public string SetMyName(string name)
{
myname = name;
}
Contoh 2:
public string myname {get; set; }
Nampak obvious kn.. 2 bnde y sama, tp 1 lagi pnjang, n 1 lagi pendek jaa code nye. 1 line je..Its up to us as a programmer which one to pick. Tp persoalannye, bile masa nk gune contoh 1, n bile plak nk gune contoh 2?? Simple, gune contoh 1 bile melibatkan variable y penting, protected, or shared with other crucial function, class or object. Sbbnye, most of the time, hackers bleh hack n manipulate ape2 value bile variable di declare as a public. Solutionnye, declaration variable adalah private or protected, but kite wat another public function untuk access variable tersebut (contoh 1). Semua bnde ada drawback rite. Drawback bnde nie adalah ia memerlukan another memory space utk pass by value dlm parameter function tersebut dan code die agak pnjag sikit.Kalu variable tue xbrape important (most of the time) cam perkataan dlm textbox, penggunaan Get n Set (contoh 2) amat disyorkan oleh aku.Sbb nye, ia simple, menjimatkan ruang (1 line je) n by default, bnde nie gune pass by referrence (not by value) which means its variable would share exactly the same memory space with function call. Dengan kata lain, korang akn jimat 1 memory space n lebih efficient.
"Quick User Control Initialization"
Ok bnde nie pening sikit.Sila baca dengan teliti. User Control aku dh explain kat post2 y lepas. Jd sila bace tu dlu k. First, let say aku wat 1 user control (MyUserControl) y ader textbox (txtName) n label (lblName)..Then cam bese, cm programmer .Net y laen buat bile nk initialize User Control adalah seperti berikut:
Declaration:
Public partial class MyUserControl : usercontrol
{
Public MyUserControl()
{
InitializeComponent();
}
}
Initialization:
MyUserControl myUC = new MyUserControl();
myUC.lblName.text = "Nama: ";
myUC.txtName.text = "Mohd Yazid Mohd Jaafar";
myUC.Width = 100;
myUC.Height = 150;
This is tipical way y bese kite (n aku jgak) wat bile wat C# programming. Byk line diperlukan juz nk initialize 1 user control jer. Utk bg korang nmpak, aku bg contoh laen y lebih jimat n efficient:
Declaration:
Public partial class MyUserControl : usercontrol
{
Public MyUserControl()
{
InitializeComponent();
}
Public MyUserControl(string names, string labels, int height, int width) //Override Constructor
{
InitializeComponent();
this.txtName.text = names;
this.lblName = labels;
this.Height = height;
this.Width = width;
}
}
Initialization:
MyUserControl myUC = new MyUserControl("Mohd Yazid", "Nama: ", 100, 150);
Simple, 1 line jer utk initialization. nie la die ape y aku explain dlm post2 y lepas sal separation of class for efficiency and reliability. Xperlu byk2 code dlm main class. Xelok tamak2 nie. Share sikit code y belambak tue kat class or object y lain. Nmpak kemas, n senang nk debug. Kadang aku pelik gak. Sometimes org bangga bile kate code die dh smpai 1000 lines. Tp pd aku, lagi bagus kalu kite bleh wat bende y sama tp hanya menggunakan xsampai 500 lines pun. Tu mknanye die xreti nk utilize Object-Oriented Programming..
"Conclusion"
Orang kdang2 kate, "Buat cmni pn same gak aper..". Mmg la same bro..Its ok if korang wat hanya utk siapkan assignment or project y duedate tinggal esok ja. Tp cube byagkan kalu korang dh keje as a programmer, wat 1 apps but in the end, customer complain y apps korang nie pesal slow sgt, hang laa..itu laa..ini laaa..Kat situ la dtg nye code efficiency, memory consumption n bla bla bla..Prasan or x, Microsoft Office Word Beta 2010 tue bru jer mkan 70 - 80 KB dlm task manager korang. Software punye la besar, ader mcm2 tp ringan jer..Agak2 cmana programmer Microsoft wat mende nih..
Ape pun, utk capai 1 mission, ader byk cara. Bile ader bug, ader 1001 solution utk nye. For me, I dont care if I got A, B, C or even D for my project. But the thing is, I want the KNOWLEDGE on top of it..
Gudluck guys..
p/s: Sumer code ditulis on the spot kat blog.Kalu ader silap, hrp dimaafi
.
Labels:
C#,
programming
02 February 2010
Optimization VS Accuracy
Assalamulaikum wbt..
Ok come back to my world - programming. Seperti tajuk kat atas tu, hri nie aku nk cite sikit sal pendapat aku, ape y aku rase bagus n ape y aku rase xbgus utk kite selaku programmer buat especially those who are C# beginner like me.
"OPTIMIZATION & EFFICIENCY"
Sedar atau x, setiap line of programming of code y kite buat sebenarnye mempengaruhi kadar efficiency program kite as a whole. Aku bagi contoh utk buat 1 application, programmer A memerlukan 1000 line utk siapkan bende tue tp pd ms y sama, programmer B hanya memerlukan 300 lines jer. Jadi y mana y lebih efficient?? Pada aku, efficiency sesuatu programming code tue sebenanye terletak pd faktor turn around time dan memory consumption. Memang jelas kalu compare based on number of lines, programmer B mmg power, tp kalu application die buat laptop aku jd slow nk mati, xguna jugak kan. Kesimpulannya, sbb tue la kite semua selaku pelajar CS wajib amik CPT212 - Algorithm n Data Structure. Memang aku akui, aku mmg kagum gile dgn org y bleh develop sesuatu algorithm nie. Xtaw la baper byk sel2 neuron y berhubung dlm kepala die. So kenapa turn around time n memory consumption??
"TURN AROUND TIME"
Apekah die turn around time?? Aku bg 1 contoh y plig simple. Bile kite bukak page Yahoo n register akaun emel baru, brapa second y die amik utk mksure registeration kite succesful?? Kalu kite wat Transact-SQL n select some table from MS Sql, brape lama ms y diamik utk load all data kat interface?? Sumer nye berkaitan dengan masa kan..Pd pendapat aku, one thing y every programmer should think about is how long it should take to do the specified task. Aku penah baca buku Human & Computer Interaction (HCI) oleh Stalling kepunyaan Umi Mahmudah Mohd Jaafar (kakak aku) y kini sorang network traffic consultant for streamyx asia pacific. Dalam buku tue ade sebut sal 1 prinsip paling utama dlm design GUI - Respond must be given within 5-7 seconds. Dgn kata laen, lebih dri tue, user akan rase bengang sama mcm korang cbe connect USMHotspot xdpt2.
Aku bg 1 contoh implementation y mungkin akan bg serba sikit idea pasal reducing turn around time nih. Usually, ms pling byk dibazirkan dlm sesuatu application adalah utk load data or set data dlm database..Kene plak network slow, mmg cm taik ar. Setiap programmer ader cra msing2.. Tp kat sini nk bg contoh cra aku utk memudahkan pemahaman.. Besenye aku akn wat system aku xkire la web or desktop based utk pre-loading dlu sumer data2 y diperlukan n fill in dlm 1 container cam linklist, dataset or data table. Contohnye kalu application tue sal hotel management, aku akn load awal2 sumer info sal customer,registration and soon dlm 1 dataset or text file so that next time aku dh xperlu lgi access database. Hanya bile berlaku update or delete je bru aku access database n fetch blik new data. So, xderla user tue tekan 1 button, then system access database, tekan button lagi, access lagi, tekan then access lgi.Brapa byk nk access daa. Load jer sumer data awal2, store lam temporary container cm dataset, then bile nk access, access jer dri dataset tuh. Advantages cara nie ade 2 iaitu reduce number of connection y perlu kite wat (user toksah tunggu lama2) n application still works even internet connection gone.Best kan..How to do it? byk cra die, depends on what your task needs..
"MEMORY CONSUMPTION"
Haa part nie y aku plig suke nie.Penah x kalu korang wat website or desktop application then bukak task manager tgk braper byk memory consumption application korang?? Mesti xpenah kan, sbb y kite taw ialah janji siap n dpt submit on time. Actually bnde nie penting gak sebenarnye sbb not every user or customer y akn gune application kite nanti ade 2 or 3 gig RAM n Dual Core. Kite selaku programmer, kite kene la consider dorang jgak kan. Dorang pn manusia jgak mcm kite..Sbg contoh, software iNetmon utk dak2 network CS bleh capai 250++ KB total memory consumption n membuatkan laptop aku kdag2 jd slow especially bile turn on sumer module2 die. As a comparison, Office 2010 sometimes hanye dalam 70 - 100 KB jaa n kalu korang tgk, application dorang smooth jer. Senang hati nk menaip wat assignment kan..Dengan kate laen, kalu la korang bleh reduce memory consumption nie ke tahap membanggakan, insyaAllah application korang mesti super duper laju.
Aku bgi contoh la supaya korang mudah paham. Besenye kite declare variable kan. Ntah mane2 kite declare. Asal nk gune jer declare baru. Sedar or x, setiap declaration y kite wat akan menambahkan penggunaan memory. Camni, bile kite declare, system akn sediakan 1 memory address space utk variable tuh n lock utk kegunaan application kite shj. Once kite dh hbis gune, memory address tue still there n lock kecuali kalu kite dispose or null kan variable tue. Cemana aku nk explain erk. Let say la korang ade 1000 lines of programming code. Declare ar 1 global variable type string n gune jer variable tue as a temporary to store anything through out whole programm whenever needed. Jimat memory space sikit. 1 lagi adalah penggunaan List dan String. Cube compare declaration kat bwh nie:
string[] TempString = new string[100];
list TempList = new list();
Bile declare string, kite kene specify size die tul x? Belum tentu kite akn gune sumernye sampai habis. Bile declare jer string array, system dh sediakan n lock 100 memory space utk kite. membazir namanye tu..Xelok membazir ni, kwn syaitan..hehe.Solution nye, gune la List sbb list nie aku bleh kata cemana erk, ermm "memory on demand" kot.Sbb bile kite declare, xperlu specify size. Hanya bile add item dlm list tue je bru la system akn specifykan 1 memory address. Lagi efficient kan?
Contoh laen adalah penggunaan "using" statement dlm Object declaration.Aku bgi contoh code kat bwah nie:
Contoh 1:
void ReadFile()
{
StreamReader ObjReader = new StreamReader(@/"daunkelapasawit.txt");
String temp = ObjReader.Readline();
}
Contoh 2:
void ReadFile()
{
using ( StreamReader ObjReader = new StreamReader(@/"daunkelapasawit.txt"))
{
String temp = ObjReader.Readline();
}
}
Sori ar indentation xbtul, almaklum la write trus kat blog jer, mane ader intelliSense. So ape beza kedua2 contoh kat atas nie? Contoh 1 ada usual object declaration y bese kite buat. Bile kite exit function ReadFile, memory address utk Object tue actually still exist sebenanye. Makin byk bnde2 cmni, mkin berat la application kite. One of the solution kalu dlm C# adalah melalui penggunaan "using" statement. Maksudnye, systeam (or .Net Framework) akn detect bile Object tue dh x digunakan lgi (or out of the function scope), die akn automatically dispose Object tersebut.Dgn kate laen, bile dh xgune, buang jer la..Wat beratkan beg jer nk angkut ke sana ke mari.
Byk lagi cra2 utk makesure program kite running dengan smooth n steady. Nie antara cara2 y bleh kite guna selaku programmer. Ape pun, explore, try n gain knowledge by yourself is better than relying on someone..Gud luck!
.
Ok come back to my world - programming. Seperti tajuk kat atas tu, hri nie aku nk cite sikit sal pendapat aku, ape y aku rase bagus n ape y aku rase xbgus utk kite selaku programmer buat especially those who are C# beginner like me.
"OPTIMIZATION & EFFICIENCY"
Sedar atau x, setiap line of programming of code y kite buat sebenarnye mempengaruhi kadar efficiency program kite as a whole. Aku bagi contoh utk buat 1 application, programmer A memerlukan 1000 line utk siapkan bende tue tp pd ms y sama, programmer B hanya memerlukan 300 lines jer. Jadi y mana y lebih efficient?? Pada aku, efficiency sesuatu programming code tue sebenanye terletak pd faktor turn around time dan memory consumption. Memang jelas kalu compare based on number of lines, programmer B mmg power, tp kalu application die buat laptop aku jd slow nk mati, xguna jugak kan. Kesimpulannya, sbb tue la kite semua selaku pelajar CS wajib amik CPT212 - Algorithm n Data Structure. Memang aku akui, aku mmg kagum gile dgn org y bleh develop sesuatu algorithm nie. Xtaw la baper byk sel2 neuron y berhubung dlm kepala die. So kenapa turn around time n memory consumption??
"TURN AROUND TIME"
Apekah die turn around time?? Aku bg 1 contoh y plig simple. Bile kite bukak page Yahoo n register akaun emel baru, brapa second y die amik utk mksure registeration kite succesful?? Kalu kite wat Transact-SQL n select some table from MS Sql, brape lama ms y diamik utk load all data kat interface?? Sumer nye berkaitan dengan masa kan..Pd pendapat aku, one thing y every programmer should think about is how long it should take to do the specified task. Aku penah baca buku Human & Computer Interaction (HCI) oleh Stalling kepunyaan Umi Mahmudah Mohd Jaafar (kakak aku) y kini sorang network traffic consultant for streamyx asia pacific. Dalam buku tue ade sebut sal 1 prinsip paling utama dlm design GUI - Respond must be given within 5-7 seconds. Dgn kata laen, lebih dri tue, user akan rase bengang sama mcm korang cbe connect USMHotspot xdpt2.
Aku bg 1 contoh implementation y mungkin akan bg serba sikit idea pasal reducing turn around time nih. Usually, ms pling byk dibazirkan dlm sesuatu application adalah utk load data or set data dlm database..Kene plak network slow, mmg cm taik ar. Setiap programmer ader cra msing2.. Tp kat sini nk bg contoh cra aku utk memudahkan pemahaman.. Besenye aku akn wat system aku xkire la web or desktop based utk pre-loading dlu sumer data2 y diperlukan n fill in dlm 1 container cam linklist, dataset or data table. Contohnye kalu application tue sal hotel management, aku akn load awal2 sumer info sal customer,registration and soon dlm 1 dataset or text file so that next time aku dh xperlu lgi access database. Hanya bile berlaku update or delete je bru aku access database n fetch blik new data. So, xderla user tue tekan 1 button, then system access database, tekan button lagi, access lagi, tekan then access lgi.Brapa byk nk access daa. Load jer sumer data awal2, store lam temporary container cm dataset, then bile nk access, access jer dri dataset tuh. Advantages cara nie ade 2 iaitu reduce number of connection y perlu kite wat (user toksah tunggu lama2) n application still works even internet connection gone.Best kan..How to do it? byk cra die, depends on what your task needs..
"MEMORY CONSUMPTION"
Haa part nie y aku plig suke nie.Penah x kalu korang wat website or desktop application then bukak task manager tgk braper byk memory consumption application korang?? Mesti xpenah kan, sbb y kite taw ialah janji siap n dpt submit on time. Actually bnde nie penting gak sebenarnye sbb not every user or customer y akn gune application kite nanti ade 2 or 3 gig RAM n Dual Core. Kite selaku programmer, kite kene la consider dorang jgak kan. Dorang pn manusia jgak mcm kite..Sbg contoh, software iNetmon utk dak2 network CS bleh capai 250++ KB total memory consumption n membuatkan laptop aku kdag2 jd slow especially bile turn on sumer module2 die. As a comparison, Office 2010 sometimes hanye dalam 70 - 100 KB jaa n kalu korang tgk, application dorang smooth jer. Senang hati nk menaip wat assignment kan..Dengan kate laen, kalu la korang bleh reduce memory consumption nie ke tahap membanggakan, insyaAllah application korang mesti super duper laju.
Aku bgi contoh la supaya korang mudah paham. Besenye kite declare variable kan. Ntah mane2 kite declare. Asal nk gune jer declare baru. Sedar or x, setiap declaration y kite wat akan menambahkan penggunaan memory. Camni, bile kite declare, system akn sediakan 1 memory address space utk variable tuh n lock utk kegunaan application kite shj. Once kite dh hbis gune, memory address tue still there n lock kecuali kalu kite dispose or null kan variable tue. Cemana aku nk explain erk. Let say la korang ade 1000 lines of programming code. Declare ar 1 global variable type string n gune jer variable tue as a temporary to store anything through out whole programm whenever needed. Jimat memory space sikit. 1 lagi adalah penggunaan List dan String. Cube compare declaration kat bwh nie:
string[] TempString = new string[100];
list
Bile declare string, kite kene specify size die tul x? Belum tentu kite akn gune sumernye sampai habis. Bile declare jer string array, system dh sediakan n lock 100 memory space utk kite. membazir namanye tu..Xelok membazir ni, kwn syaitan..hehe.Solution nye, gune la List sbb list nie aku bleh kata cemana erk, ermm "memory on demand" kot.Sbb bile kite declare, xperlu specify size. Hanya bile add item dlm list tue je bru la system akn specifykan 1 memory address. Lagi efficient kan?
Contoh laen adalah penggunaan "using" statement dlm Object declaration.Aku bgi contoh code kat bwah nie:
Contoh 1:
void ReadFile()
{
StreamReader ObjReader = new StreamReader(@/"daunkelapasawit.txt");
String temp = ObjReader.Readline();
}
Contoh 2:
void ReadFile()
{
using ( StreamReader ObjReader = new StreamReader(@/"daunkelapasawit.txt"))
{
String temp = ObjReader.Readline();
}
}
Sori ar indentation xbtul, almaklum la write trus kat blog jer, mane ader intelliSense. So ape beza kedua2 contoh kat atas nie? Contoh 1 ada usual object declaration y bese kite buat. Bile kite exit function ReadFile, memory address utk Object tue actually still exist sebenanye. Makin byk bnde2 cmni, mkin berat la application kite. One of the solution kalu dlm C# adalah melalui penggunaan "using" statement. Maksudnye, systeam (or .Net Framework) akn detect bile Object tue dh x digunakan lgi (or out of the function scope), die akn automatically dispose Object tersebut.Dgn kate laen, bile dh xgune, buang jer la..Wat beratkan beg jer nk angkut ke sana ke mari.
Byk lagi cra2 utk makesure program kite running dengan smooth n steady. Nie antara cara2 y bleh kite guna selaku programmer. Ape pun, explore, try n gain knowledge by yourself is better than relying on someone..Gud luck!
.
Labels:
C#,
connection,
database,
programming
05 January 2010
WinMo - Make Button
Assalamulaikum wbt..
Alhamdulliah masih lagi kite dpt bersua dlm tahun baru nie..Ok, xnak ckap byk sal greeting tahun baru org kapir nie, stret to the point. Seperti y dah dijanjikan ms post aku yg lepas, kali nie aku nk tnjuk how to make our very own control. One thing y mesti diingat adalah build control sndri y aku mksudkan adalah buat "component" dan bukannye User Control k. Kalu da sesape y agak x jelas ngn perbezaan dua bnde nie, leh tanya direct. Kalu nk bincang sal difference dua bnde nie, pnjag la plak, so out of the scope. Post lepas aku da terangkan kenapa perlunye wat control sendiri nie. Sebab utamanya adalah untuk dapatkan nice and good appealing UI dlm WinMo disebabkan default control y disediakan dlm .Net CF amat susah nk customize (nearly impossible la bro)..
Alhamdulliah masih lagi kite dpt bersua dlm tahun baru nie..Ok, xnak ckap byk sal greeting tahun baru org kapir nie, stret to the point. Seperti y dah dijanjikan ms post aku yg lepas, kali nie aku nk tnjuk how to make our very own control. One thing y mesti diingat adalah build control sndri y aku mksudkan adalah buat "component" dan bukannye User Control k. Kalu da sesape y agak x jelas ngn perbezaan dua bnde nie, leh tanya direct. Kalu nk bincang sal difference dua bnde nie, pnjag la plak, so out of the scope. Post lepas aku da terangkan kenapa perlunye wat control sendiri nie. Sebab utamanya adalah untuk dapatkan nice and good appealing UI dlm WinMo disebabkan default control y disediakan dlm .Net CF amat susah nk customize (nearly impossible la bro)..
Labels:
C#,
programming,
windows mobile
26 December 2009
WinMo - make own control
Assalamulaikum wbt..
Alhamdulillah, aku masih dikurniakan peluang dan nafas utk menghirup kemanisan Iman dan Islam. Tanpa melenguhkan lutut, aku nk share some important and interesting part dlm Windows Mobile platform development. Wat sesape y xtaw pe die external harddisk, Windows Mobile aka WinMo ini adalah OS bagi PDA. Latest version adalah Windows Mobile 6.5. Masa tahun 2003 dlu, OS nie terbahagi 2 iaitu WinMo for PocketPC and Smartphone. Dalam PDA market segment, selain WinMo adalah Android from Uncle Googlerudin, dan iPhone OS X from Uncle Epaladin.
"DESIGN UI ELEMENT IN WINMO"

Currently, aku tengah develop 1 apps dlm WinMo for Mobile Content Challenge by Maxis and gambarajah y kat atas ni adalah aku punye interface (atleast wat ms nie). 1 thing y sgt2 important y aku nk ckap kn td adalah control dlm WinMo xsame cm dlm desktop development gune WPF or web gune Silverlight. Aku bagi contoh mudah:

Ok, kat atas nie ade 3 button. Dari kiri, button default dlm WPF or Silverlight, button custom dan button default dlm WinMo. WPF dan Silverlight combine with powerfull Expression Blend mmg aku akui, amat menjimat masa programmer dan mengurangkan tahap nk ke tandas mereka. Button default mmg senang nk dibuat secara custom, alasan nye mudah iaitu - senang nk design, XAML kan ader, Blend kan ader. Maka terhasil la button y kat tengah2 tue (button signup utk web aku beb)..Tapi WinMo??? Button y kat belah kanan sekali adalah bukti nye. Korang bleh dpt default saja, nk customize bagi lawa mmg "in your dream" jer la. So, in the end apps akan jd dull, x attractive.
"HOW TO DESIGN WITHOUT INTEGRATED DESIGN TOOL"
Most Windows developer dah bese ngn Expression Blend, tp sayangnye tiada tools sebegitu rupa bagi WinMo developer.So, cmane nk wat custom button y nice to look?? Erm..susah nk kate..bkn nk kate mustahil. Mmg ader cranye, most programmer (stakat y aku search) gune cara manual utk create what ever control y dorang nk gune cam button, combobox, listview and so on. Ape y dimaksudkan ngn cara MANUAL?? haa nie part y paling interesting nih..
Post akn dtg aku akn share secara detail plus with sample code skali cmane nk wat control secara full manual. Skg aku bg overview jer dlu, takut da y pening2 lembu tenusu Dutch Lady plak nanti sbb die memerlukan kefahaman y outstanding dlm "C# Extreme Programming". Dengan kate laen, sape y bleh fham post aku y seterusnye mmg superb (welcome to my club).
Briefly - Kite xkan gune 1 item pun dri toolbox dlm visual studio, so jgn hrap nk jadi drag-drop guy kat cini ok. 1st, draw control y kite nk wat contohnye button gune GDI+ classes. 2nd, bagi property sikit kat die cm Height, Width, Top, Left etc. 3rd, bagi public function untuk assign property y kite bagi td supaya bile press Ctrl+Spacebar intellisense dlm visual studio bleh detect. 4th, bagi event handler y sesuai kat die supaye bleh di klik or mouse over etc. Thats all, sound simple kan?? Ok tue jer dlu kot, nantikan post y seterusnye utk aku perkenalkan ape bes nye Windows Mobile programming kat korang.
P/S: Aku xheran kalu korang xpham ape y aku tulih..post y seterusnye korag akn lagi xphm, dun wory okeh..
Alhamdulillah, aku masih dikurniakan peluang dan nafas utk menghirup kemanisan Iman dan Islam. Tanpa melenguhkan lutut, aku nk share some important and interesting part dlm Windows Mobile platform development. Wat sesape y xtaw pe die external harddisk, Windows Mobile aka WinMo ini adalah OS bagi PDA. Latest version adalah Windows Mobile 6.5. Masa tahun 2003 dlu, OS nie terbahagi 2 iaitu WinMo for PocketPC and Smartphone. Dalam PDA market segment, selain WinMo adalah Android from Uncle Googlerudin, dan iPhone OS X from Uncle Epaladin.
"DESIGN UI ELEMENT IN WINMO"
Currently, aku tengah develop 1 apps dlm WinMo for Mobile Content Challenge by Maxis and gambarajah y kat atas ni adalah aku punye interface (atleast wat ms nie). 1 thing y sgt2 important y aku nk ckap kn td adalah control dlm WinMo xsame cm dlm desktop development gune WPF or web gune Silverlight. Aku bagi contoh mudah:
Ok, kat atas nie ade 3 button. Dari kiri, button default dlm WPF or Silverlight, button custom dan button default dlm WinMo. WPF dan Silverlight combine with powerfull Expression Blend mmg aku akui, amat menjimat masa programmer dan mengurangkan tahap nk ke tandas mereka. Button default mmg senang nk dibuat secara custom, alasan nye mudah iaitu - senang nk design, XAML kan ader, Blend kan ader. Maka terhasil la button y kat tengah2 tue (button signup utk web aku beb)..Tapi WinMo??? Button y kat belah kanan sekali adalah bukti nye. Korang bleh dpt default saja, nk customize bagi lawa mmg "in your dream" jer la. So, in the end apps akan jd dull, x attractive.
"HOW TO DESIGN WITHOUT INTEGRATED DESIGN TOOL"
Most Windows developer dah bese ngn Expression Blend, tp sayangnye tiada tools sebegitu rupa bagi WinMo developer.So, cmane nk wat custom button y nice to look?? Erm..susah nk kate..bkn nk kate mustahil. Mmg ader cranye, most programmer (stakat y aku search) gune cara manual utk create what ever control y dorang nk gune cam button, combobox, listview and so on. Ape y dimaksudkan ngn cara MANUAL?? haa nie part y paling interesting nih..
Post akn dtg aku akn share secara detail plus with sample code skali cmane nk wat control secara full manual. Skg aku bg overview jer dlu, takut da y pening2 lembu tenusu Dutch Lady plak nanti sbb die memerlukan kefahaman y outstanding dlm "C# Extreme Programming". Dengan kate laen, sape y bleh fham post aku y seterusnye mmg superb (welcome to my club).
Briefly - Kite xkan gune 1 item pun dri toolbox dlm visual studio, so jgn hrap nk jadi drag-drop guy kat cini ok. 1st, draw control y kite nk wat contohnye button gune GDI+ classes. 2nd, bagi property sikit kat die cm Height, Width, Top, Left etc. 3rd, bagi public function untuk assign property y kite bagi td supaya bile press Ctrl+Spacebar intellisense dlm visual studio bleh detect. 4th, bagi event handler y sesuai kat die supaye bleh di klik or mouse over etc. Thats all, sound simple kan?? Ok tue jer dlu kot, nantikan post y seterusnye utk aku perkenalkan ape bes nye Windows Mobile programming kat korang.
P/S: Aku xheran kalu korang xpham ape y aku tulih..post y seterusnye korag akn lagi xphm, dun wory okeh..
Labels:
C#,
mobile,
programming,
windows mobile
24 December 2009
My world..anak FELDA
Assalamulaikum wbt..
Sori pada signbod "STOP" pd post before nie.
So..sempena ngan maal hijrah nie..aku pn nk azam baru jgak..simple jer azam bru aku:
"BE A SOFTWARE ENGINEER"
Dlu ms zaman nk pilih major, naper xplih je major Software Engineer?? Betul gak soklan tue..Jawapan nyer mudah je..sbb MINAT..sbb minat la aku amik network computing as a major..kenape? ha nnti aku gtaw..pd kwn2 n dak2 junior2 y bace post nie, aku nk tanye korag 1 perkara:
"APE DIE BNDE Y KALU KORAG DH START , KORAG XLEH NK STOP??"
Tepuk dada, tanye selera..ape pun jwpannya, tu la die minat and implicit expression bout where and who r you 10 tahun pasni. Pada aku, ade 2 bnde je..BOLA, PROGRAMMING..Bola xyah cite la..die hard fan Barcelona n Chelsea beb..n programing..
"KENAPA PILIH MAJOR NETWORK SEDANGKAN MINAT PROGRAMING??"
Btul jgak soklan tue..aku pn xpnah terpikir sblom nie. Jawapannye :- Sebab dulu aku mmg xsuke+xminat+benci ngn programming..haha..sbb tu jgak la aku amik major network computing..Pd individu2 y ngah bace blog nie, korag jgn igt plak aku mmg dlahirkn dgn buku C++ kat tgn..nk ikut kn, mmg 1st year as a computer science student kat sini, aku kalu bleh nk elak programming n aku pcaya, antara korag pn rmai gak y rse cmtu kn.
"CEMANA BLEH MINAT PROGRAMMING??"
Segalanye bermula bile aku join dlm networking field subjek CST 234 under dr. rahmat n dr. wan tat chee. Pd azri, ko msti tw kn btapa azab nye subjek tue. Masa tu, aku igtkn bleh la hndle hrdware2, satelit broadcast ker. Tp upenye kene wat socket programming..native C plak tue..perghh..sakit jntung ngn ibu jari kaki..waktu tue nk x nk kene la wat jgak kn. So, aku n hadri (thanks to him as my great teammate ever) berkampung kat Lab 1 sejak dri 1st month lagi, di kala budak2 laen tgh bersenang2, g tgk wayang n bla bla bla..bleh kate tu adalah waktu transition plig bsar dlm hidup aku sebagai orag jawa. Nk di pndekkan cite, aku peruntukkan ms 1 week purposely (sbb aku jmpe web site "learn C in 24 hours") utk blaja language C from the very beginning, how to declare int, string, array, struct n what so ever..sbb prinsip aku, kalu aku nk pegi lagi jauh, beyond from other people, aku nk kne ader very strong foundation dlu..Pas lelama run, debug, run, debug, run, debug, aku mula nmpak ape y best n seni dlm progrmming nie. Start dri tue bru aku tw, nape dr. azman minat gile ngn cryptography, nape dr. wan tat chee expert dlm wireless+sensor+robotic..And since then, both of them become my personal idol..hehe.
"BEST KER WAT PRGRAMMING?? WAT SAKIT KEPALA JER"
One thing ble wat programming nie, stiap hari aku akn jmpe bnde baru, cube bnde baru, wn wat bnde baru..mula2 mantapkan language C..pastu aku grak ker Java n SQL (sbb grup dak cine aku sume hampeh)..cukup 1 semester, aku gerak ker C# language and database SQL server+MySql..agak2 cukup 1 week C#, gerak plak ker Windows Presentation Foundation aka WPF (formerly known as Avalon)..n sempat publish 1 project y team aku namakan "BluAds" - an automated bluetooth advertising system. Briefly, bile korang masuk je 1 area cth shoping cmplex, nset korag akn dpt iklan promotion berupa image y mana bleh di redeem utk dpt boucher and etc. Pastu, aku pun industrial training kat 1 company y kecik gile. 1 thing y aku dpt dri company nie ialah aku blaja byk bnde2 bru dlm C#..cmane nk wat user control, cmane nk integrate ngn printer, nk print ape y user taip cm Office Word, nk bg user bleh draw diagram cm Visio n byk lagi..Sumer tue aku dh pnah wat n aku explore sndiri bersifukan Uncle Googlerudin.
"WHAT'S NEXT??"
Rite now, aku dh 3rd year and final year. Berbekalkan experiance dlm C++,Java,C#+Socket programming dan databse SQl server+MySql, aku nk fokus n bagi kaw2 punye dlm FYP aku, bg beyond dri org laen..Skang nie, aku dh embark plak dlm Silverlight technology and Windows Mobile platform, n insyaAllah sikit ms lagi aku nk jengah plak Grid Computing n apply middleware cm Gridspfere or Globus dlm FYP aku..
"WINDOWS MOBILE PLATFORM - ADER BERANI??"
Wat programming dlm Windows Mobile mmg sgt2 mencabar beb..Wat software utk hanset mmeg xsame ngn desktop..byk bnder kene consider cm battery level, signal strength, device orientation potrait ker landscape and ofkos, byak technology bleh explore. Tu y wat aku mkin jatuh cinta..ade 3G, Gprs, Wifi, SMS, MMS, Bluetooth..Perghh..Nak wat UI bkn senang.. Nak ikutkan bleh jer gune default control y ader, tp design mmg hampeh..So aku wat sume control sendri, insyaAllah next post aku akn cite cmana nk wat control sendri..Kalu sblom2 nie kite cumer taw drag drop button jer dlm IDE n tekan Ctrl+spacebar trus kuar sumer property..tp kali nie, aku wat sumer from scratch, draw kat screen, letak property supaya bile tkan ctrl+spacebar leh kuar, n letak event handler sndiri..
Programming dlm Windows Mobile byk mengajar aku ape die seni dlm C# programming. Sgt mengujakan..Sbb tu aku berazam nk jadi software engineer n expert dlm programming language, bkn hanya pada title shj..So, pd korag y bace post nie, programming is wonderful, sbb everyday byk bnde baru akn kite jumpe, n bile da bug, da 1001 cara utk settle kn die..
"BE THE BEST TO BEAT THE BEST"

Pic kakak aku - sorang Electro Engineer kat Petronas Kerteh..sj nk acknowledge coz die byk sponsor aku kat sini..haha
Sori pada signbod "STOP" pd post before nie.
So..sempena ngan maal hijrah nie..aku pn nk azam baru jgak..simple jer azam bru aku:
"BE A SOFTWARE ENGINEER"
Dlu ms zaman nk pilih major, naper xplih je major Software Engineer?? Betul gak soklan tue..Jawapan nyer mudah je..sbb MINAT..sbb minat la aku amik network computing as a major..kenape? ha nnti aku gtaw..pd kwn2 n dak2 junior2 y bace post nie, aku nk tanye korag 1 perkara:
"APE DIE BNDE Y KALU KORAG DH START , KORAG XLEH NK STOP??"
Tepuk dada, tanye selera..ape pun jwpannya, tu la die minat and implicit expression bout where and who r you 10 tahun pasni. Pada aku, ade 2 bnde je..BOLA, PROGRAMMING..Bola xyah cite la..die hard fan Barcelona n Chelsea beb..n programing..
"KENAPA PILIH MAJOR NETWORK SEDANGKAN MINAT PROGRAMING??"
Btul jgak soklan tue..aku pn xpnah terpikir sblom nie. Jawapannye :- Sebab dulu aku mmg xsuke+xminat+benci ngn programming..haha..sbb tu jgak la aku amik major network computing..Pd individu2 y ngah bace blog nie, korag jgn igt plak aku mmg dlahirkn dgn buku C++ kat tgn..nk ikut kn, mmg 1st year as a computer science student kat sini, aku kalu bleh nk elak programming n aku pcaya, antara korag pn rmai gak y rse cmtu kn.
"CEMANA BLEH MINAT PROGRAMMING??"
Segalanye bermula bile aku join dlm networking field subjek CST 234 under dr. rahmat n dr. wan tat chee. Pd azri, ko msti tw kn btapa azab nye subjek tue. Masa tu, aku igtkn bleh la hndle hrdware2, satelit broadcast ker. Tp upenye kene wat socket programming..native C plak tue..perghh..sakit jntung ngn ibu jari kaki..waktu tue nk x nk kene la wat jgak kn. So, aku n hadri (thanks to him as my great teammate ever) berkampung kat Lab 1 sejak dri 1st month lagi, di kala budak2 laen tgh bersenang2, g tgk wayang n bla bla bla..bleh kate tu adalah waktu transition plig bsar dlm hidup aku sebagai orag jawa. Nk di pndekkan cite, aku peruntukkan ms 1 week purposely (sbb aku jmpe web site "learn C in 24 hours") utk blaja language C from the very beginning, how to declare int, string, array, struct n what so ever..sbb prinsip aku, kalu aku nk pegi lagi jauh, beyond from other people, aku nk kne ader very strong foundation dlu..Pas lelama run, debug, run, debug, run, debug, aku mula nmpak ape y best n seni dlm progrmming nie. Start dri tue bru aku tw, nape dr. azman minat gile ngn cryptography, nape dr. wan tat chee expert dlm wireless+sensor+robotic..And since then, both of them become my personal idol..hehe.
"BEST KER WAT PRGRAMMING?? WAT SAKIT KEPALA JER"
One thing ble wat programming nie, stiap hari aku akn jmpe bnde baru, cube bnde baru, wn wat bnde baru..mula2 mantapkan language C..pastu aku grak ker Java n SQL (sbb grup dak cine aku sume hampeh)..cukup 1 semester, aku gerak ker C# language and database SQL server+MySql..agak2 cukup 1 week C#, gerak plak ker Windows Presentation Foundation aka WPF (formerly known as Avalon)..n sempat publish 1 project y team aku namakan "BluAds" - an automated bluetooth advertising system. Briefly, bile korang masuk je 1 area cth shoping cmplex, nset korag akn dpt iklan promotion berupa image y mana bleh di redeem utk dpt boucher and etc. Pastu, aku pun industrial training kat 1 company y kecik gile. 1 thing y aku dpt dri company nie ialah aku blaja byk bnde2 bru dlm C#..cmane nk wat user control, cmane nk integrate ngn printer, nk print ape y user taip cm Office Word, nk bg user bleh draw diagram cm Visio n byk lagi..Sumer tue aku dh pnah wat n aku explore sndiri bersifukan Uncle Googlerudin.
"WHAT'S NEXT??"
Rite now, aku dh 3rd year and final year. Berbekalkan experiance dlm C++,Java,C#+Socket programming dan databse SQl server+MySql, aku nk fokus n bagi kaw2 punye dlm FYP aku, bg beyond dri org laen..Skang nie, aku dh embark plak dlm Silverlight technology and Windows Mobile platform, n insyaAllah sikit ms lagi aku nk jengah plak Grid Computing n apply middleware cm Gridspfere or Globus dlm FYP aku..
"WINDOWS MOBILE PLATFORM - ADER BERANI??"
Wat programming dlm Windows Mobile mmg sgt2 mencabar beb..Wat software utk hanset mmeg xsame ngn desktop..byk bnder kene consider cm battery level, signal strength, device orientation potrait ker landscape and ofkos, byak technology bleh explore. Tu y wat aku mkin jatuh cinta..ade 3G, Gprs, Wifi, SMS, MMS, Bluetooth..Perghh..Nak wat UI bkn senang.. Nak ikutkan bleh jer gune default control y ader, tp design mmg hampeh..So aku wat sume control sendri, insyaAllah next post aku akn cite cmana nk wat control sendri..Kalu sblom2 nie kite cumer taw drag drop button jer dlm IDE n tekan Ctrl+spacebar trus kuar sumer property..tp kali nie, aku wat sumer from scratch, draw kat screen, letak property supaya bile tkan ctrl+spacebar leh kuar, n letak event handler sndiri..
Programming dlm Windows Mobile byk mengajar aku ape die seni dlm C# programming. Sgt mengujakan..Sbb tu aku berazam nk jadi software engineer n expert dlm programming language, bkn hanya pada title shj..So, pd korag y bace post nie, programming is wonderful, sbb everyday byk bnde baru akn kite jumpe, n bile da bug, da 1001 cara utk settle kn die..
"BE THE BEST TO BEAT THE BEST"
Pic kakak aku - sorang Electro Engineer kat Petronas Kerteh..sj nk acknowledge coz die byk sponsor aku kat sini..haha
Labels:
myself,
programming,
study
26 August 2009
C# and database part 3
Assalamulaikum wbt..

entry y lepas aku dh explain line by line cmane bentuk C# bile wat database connection..itu hanya sedikit shj dri keseluruhan tutorial nie..kalu korang perasan, code y aku tnjukkan hanya utk RETRIEVE dri database sahaja..ofkos menggunakan "Select" statement..xda perubahan kat database..so..skang, aku nk tunjuk cmana nk execute command y melibatkan sebarang perubahan kepada database..
ok..before aku go any further..ade 3 jenis execute command y kite bleh gune bile deal ngn database iaitu ExecuteNonQuery,ExecuteScalar and ExecuteReader..ape beze antara ketiga2 execute command ni? untuk lebih memudahkan fahaman ajaran ni, aku explain dri y plig kecik ke plig besar
ExecuteReader digunakan utk read or retrieve dri databse..nama pun reader kn..kite xleh wat insert, update or delete statement gune command nie..hanya utk select statement sahaja..ape y istimewanya command nie adalah ia nya less burden pd databse kite utk handle query..juz read byte of stream and pass it back..
Next, ExecuteScalar..command nie hanya akan return 1 value shj..igt!..1 value sahaja..aku jarang gune ExecuteReader actually, most of the time aku akn gune ExecuteScalar nie..kenapa nk return 1 value? best gak soklan tue..ok..situasi nye cmni..letsay korang ader byk record dlm database ( beratus kot)..n then korang nk retrieve braper total record y dh ade dlm database..haa kat sini la kite bleh gune ExecuteScalar..gune select count statement, then pass kat ExecuteScalar..die akn return balik 1 value..iaitu total record y kite ader..cmtu la kegunaan nya..ia bkn hanya utk kire total record..tp apa2 SQL statement y hanya akn return 1 value jer..menjimatkan ms+stamina databse kite utk handle..
Next please...k now ExecuteNonQuery..nie option y plig las y kite ade bile nk execute command to databse..command nie khas utk SQL statement y melibatkan perubahan kepada database cm INSERT,UPDATE,DELETE and soon la..ape y kite wat ialah pass SQL statement kite kepada ExecuteNonQuery n bia die setelkan..then korang tgk databse, mesti dh insert..
Next entry akn aku tnjukkan how to write the code n hopefully korang leh follow lah yerk..Stakat nie.korang faham y nie jer dlu k..jgn dok pening2..haha

entry y lepas aku dh explain line by line cmane bentuk C# bile wat database connection..itu hanya sedikit shj dri keseluruhan tutorial nie..kalu korang perasan, code y aku tnjukkan hanya utk RETRIEVE dri database sahaja..ofkos menggunakan "Select" statement..xda perubahan kat database..so..skang, aku nk tunjuk cmana nk execute command y melibatkan sebarang perubahan kepada database..
ok..before aku go any further..ade 3 jenis execute command y kite bleh gune bile deal ngn database iaitu ExecuteNonQuery,ExecuteScalar and ExecuteReader..ape beze antara ketiga2 execute command ni? untuk lebih memudahkan fahaman ajaran ni, aku explain dri y plig kecik ke plig besar
ExecuteReader digunakan utk read or retrieve dri databse..nama pun reader kn..kite xleh wat insert, update or delete statement gune command nie..hanya utk select statement sahaja..ape y istimewanya command nie adalah ia nya less burden pd databse kite utk handle query..juz read byte of stream and pass it back..
Next, ExecuteScalar..command nie hanya akan return 1 value shj..igt!..1 value sahaja..aku jarang gune ExecuteReader actually, most of the time aku akn gune ExecuteScalar nie..kenapa nk return 1 value? best gak soklan tue..ok..situasi nye cmni..letsay korang ader byk record dlm database ( beratus kot)..n then korang nk retrieve braper total record y dh ade dlm database..haa kat sini la kite bleh gune ExecuteScalar..gune select count statement, then pass kat ExecuteScalar..die akn return balik 1 value..iaitu total record y kite ader..cmtu la kegunaan nya..ia bkn hanya utk kire total record..tp apa2 SQL statement y hanya akn return 1 value jer..menjimatkan ms+stamina databse kite utk handle..
Next please...k now ExecuteNonQuery..nie option y plig las y kite ade bile nk execute command to databse..command nie khas utk SQL statement y melibatkan perubahan kepada database cm INSERT,UPDATE,DELETE and soon la..ape y kite wat ialah pass SQL statement kite kepada ExecuteNonQuery n bia die setelkan..then korang tgk databse, mesti dh insert..
Next entry akn aku tnjukkan how to write the code n hopefully korang leh follow lah yerk..Stakat nie.korang faham y nie jer dlu k..jgn dok pening2..haha
Labels:
C#,
connection,
database,
programming
24 August 2009
C# and database part 2
Assalamulaikum wbt..
entry lepas aku da post sal cmane nk gne C# utk connect to any database..entry kali nie utk aku terangan line by line programming code y crucial pd sesape y nk follow..mksure korang dh bace entry sebelom nie utk prevent otak kite dri terlalu sasau..
before aku pg lebih jauh..nk terang ckit sal database connection. Da 2 mode utk connect to database (xkire apa language pn y korang gune)..Pertama, always connect n y kedua, temporary connect..Option nie depend on what software architecture y kite impliment. "Always connect" memerlukan apps kte utk open connection to database (n hold dat particular connection) from start up till user tekan exit button..keep in mind, one enterprise database server can only hold up to 24 simultaneous connection (kalu personal lgi la kurang)..suggestion aku, gune option kedua iaitu "temporary connect"..means apps xperlukan databse connection utk run from startup till da end, tp hanya open connection bile perlukan access ke databse shj, then close blik connection..itu shj..cara ni lagi menjimatkn dn mengelakkan server dri overload utk handle sumer databse request..cube bayangkan kalu server syok.org gune option y pertama, maka xdpt la kite nk download citer District 9 mlm nie..ekekeke..so, explaination y seterusnya hanya fokus kepada option y kedua td ok..(leh follow x ni?)
MS SQL Server version:
using System.Data.SqlClient //line 1
.
......(smthing constructor kat sini)........
.
.
private void retrieveData()
{
string connectionString = "Server=myServerAddress; Database=myDataBase; UserID=myUsername; Password=myPassword;"; //line 2
SqlConnection conn = new SqlConnection(connectionString); //line 3
Conn.Open(); //line 4
string selectStatement = "select something from someTable where someID = 1": //line 5
SqlCommand command = new SqlCommand(selectStatement, conn); //line 6
SqlDataAdapter da = new SqlDataAdapter(selectStatement,conn); //line 7
DataSet ds = new DataSet; //line 8
da.Fill(ds); //line 9
conn.Close(); //line 10
}
line 1 -- letak referrence kpd database client y kite nk gne. depend what type of databse ykite gune.
line 2 -- initialize 1 connection string, letak la username n password sumer tue..string nie mmg da semicolon y byk, coz string nie akn kite pass kat databse client td utk die split2 kn blik n casting them to respective variables.
line 3 -- initialize 1 database connection handler (in my case, conn)..mksure letak connction string dlm parameter connection handler nie td..kalu x, die xtaw nk gne connection ape..
line 4 -- gne connection handler td, open connection to database.
line 5 -- cm bese, letak la query ape y korag nk wat dlm bntuk 1 string..xksah la pnjag mane, tp mksure sql query tue btul syntax nye.
line 6 -- initialize 1 comand handler. Fungsi die adalah sebagai tukang "execute"kan query kite td. Tanpa die, sapa la query kite.Dlm parameter die, mksure letak skali string query y kite nk gune, n connection handler y die nk pakai..then die akn execute query tue thru connection y kiter dh open td (conn.Open())
line 7 -- Pe fungsi data adapter nie? fungsi die adalah sebagai orag tengah utk simpan data y kite execute td secara temporary..mksure parameter y digunakan exactly same as command handler td..
line 8 -- initialize 1 data structure or container utk receive data tue td..data structure may be vary, korag leh gune string, array, variable, data table, dataset and soon..in my case, data set..
line 9 -- pgil org tengah y hold data temporary td ( data adapter )...suh die "fill" data y die receive dri database tue ke dlm data structure kite td iaitu data set..
line 10 -- lastly, don poget to close da connection..
itu la sahaja penerangan die..pening? itulah die the best part about programming..hahaha
da soklan? bek tanye..rugi x tanye
entry lepas aku da post sal cmane nk gne C# utk connect to any database..entry kali nie utk aku terangan line by line programming code y crucial pd sesape y nk follow..mksure korang dh bace entry sebelom nie utk prevent otak kite dri terlalu sasau..
before aku pg lebih jauh..nk terang ckit sal database connection. Da 2 mode utk connect to database (xkire apa language pn y korang gune)..Pertama, always connect n y kedua, temporary connect..Option nie depend on what software architecture y kite impliment. "Always connect" memerlukan apps kte utk open connection to database (n hold dat particular connection) from start up till user tekan exit button..keep in mind, one enterprise database server can only hold up to 24 simultaneous connection (kalu personal lgi la kurang)..suggestion aku, gune option kedua iaitu "temporary connect"..means apps xperlukan databse connection utk run from startup till da end, tp hanya open connection bile perlukan access ke databse shj, then close blik connection..itu shj..cara ni lagi menjimatkn dn mengelakkan server dri overload utk handle sumer databse request..cube bayangkan kalu server syok.org gune option y pertama, maka xdpt la kite nk download citer District 9 mlm nie..ekekeke..so, explaination y seterusnya hanya fokus kepada option y kedua td ok..(leh follow x ni?)
MS SQL Server version:
using System.Data.SqlClient //line 1
.
......(smthing constructor kat sini)........
.
.
private void retrieveData()
{
string connectionString = "Server=myServerAddress; Database=myDataBase; UserID=myUsername; Password=myPassword;"; //line 2
SqlConnection conn = new SqlConnection(connectionString); //line 3
Conn.Open(); //line 4
string selectStatement = "select something from someTable where someID = 1": //line 5
SqlCommand command = new SqlCommand(selectStatement, conn); //line 6
SqlDataAdapter da = new SqlDataAdapter(selectStatement,conn); //line 7
DataSet ds = new DataSet; //line 8
da.Fill(ds); //line 9
conn.Close(); //line 10
}
line 1 -- letak referrence kpd database client y kite nk gne. depend what type of databse ykite gune.
line 2 -- initialize 1 connection string, letak la username n password sumer tue..string nie mmg da semicolon y byk, coz string nie akn kite pass kat databse client td utk die split2 kn blik n casting them to respective variables.
line 3 -- initialize 1 database connection handler (in my case, conn)..mksure letak connction string dlm parameter connection handler nie td..kalu x, die xtaw nk gne connection ape..
line 4 -- gne connection handler td, open connection to database.
line 5 -- cm bese, letak la query ape y korag nk wat dlm bntuk 1 string..xksah la pnjag mane, tp mksure sql query tue btul syntax nye.
line 6 -- initialize 1 comand handler. Fungsi die adalah sebagai tukang "execute"kan query kite td. Tanpa die, sapa la query kite.Dlm parameter die, mksure letak skali string query y kite nk gune, n connection handler y die nk pakai..then die akn execute query tue thru connection y kiter dh open td (conn.Open())
line 7 -- Pe fungsi data adapter nie? fungsi die adalah sebagai orag tengah utk simpan data y kite execute td secara temporary..mksure parameter y digunakan exactly same as command handler td..
line 8 -- initialize 1 data structure or container utk receive data tue td..data structure may be vary, korag leh gune string, array, variable, data table, dataset and soon..in my case, data set..
line 9 -- pgil org tengah y hold data temporary td ( data adapter )...suh die "fill" data y die receive dri database tue ke dlm data structure kite td iaitu data set..
line 10 -- lastly, don poget to close da connection..
itu la sahaja penerangan die..pening? itulah die the best part about programming..hahaha
da soklan? bek tanye..rugi x tanye
Labels:
C#,
connection,
database,
programming
23 June 2009
Mobile Content Competition 2009!!
Assalamulaikum wbt..
kaifa haluk? hope korang sume chat walafiat lah yerk. post kali nie bkn tahtal mauduk Windows Blind, tp sal MCC.. Mobile Content Challenge nie adalah slah 1 dri event2+challenge utama utk student IT yang dok kat Malaysia. Dengan kata lain, MCC nie peringkat kebangsaan laa. Competition nie actually baru jaa masuk ke 3rd consicutive years, stat from 2007. Co-sponsor+organizer MCC nie plak ialah Maxis Sdn. Bhd., Suruhanjaya Komunikasi dan Multimedia Malaysia (MCMC) dan Kementerian Tenaga Air dan Komunikasi.
kaifa haluk? hope korang sume chat walafiat lah yerk. post kali nie bkn tahtal mauduk Windows Blind, tp sal MCC.. Mobile Content Challenge nie adalah slah 1 dri event2+challenge utama utk student IT yang dok kat Malaysia. Dengan kata lain, MCC nie peringkat kebangsaan laa. Competition nie actually baru jaa masuk ke 3rd consicutive years, stat from 2007. Co-sponsor+organizer MCC nie plak ialah Maxis Sdn. Bhd., Suruhanjaya Komunikasi dan Multimedia Malaysia (MCMC) dan Kementerian Tenaga Air dan Komunikasi.
Labels:
mobile,
programming,
windows mobile
12 June 2009
Glossy Effect dan Media Player Style
Assalamulaikum wbt..
em last week aku dh tnjuk bberape step y korag sume perlu wat utk dptkn glossy effect ala2 Windows Vista style. Pada sapo2 yang terlepas tutorial tue leh refer blik kat cini k..Erm kali nie aku nk tnjukkn apa dan cmane cara nye kite nk wat media player style button cam y selalu korang sumer tgk kat Windows Media Player versi Vista punya. Hrap2 pade sesape y nk tw tips+tricks cmane Microsoft programmer design software dorag, meh fol
low+komen tutorial aku..hehe.

Labels:
Expression Studio,
programming,
WPF
06 June 2009
Blend Tutorial - Vista Glossy Effect
Assalamulaikum wbt..
em k, lame dh nk wat tutorial nie..tp bru skag dpt idea cmane nk stat..hehe..so, pd member aku y dh berjinak2 (xksah laa liar mane pun) ngn programming, aku perkenalkan :
utk tutorial 1, aku akan dedahkan (correct word i think) cmane nk wat glossy effect utk any application (apps) y akn kite wat. Aper itu glossy effect? FYI, byk tmpat korag leh jmpe effect nie, especially kat OS pling sopan kat dnia, Vista by Microsoft. kat task bar, start menu, sumer button2 die, sumer nyer dorag design ngn glossy effect. n somehow "musangBerapi" pun dh ikut jejak lgkah y same (most of sftware nowadays actualy)..therefore, aku assume design style cmnie sgt popular kat abad 21..
em k, lame dh nk wat tutorial nie..tp bru skag dpt idea cmane nk stat..hehe..so, pd member aku y dh berjinak2 (xksah laa liar mane pun) ngn programming, aku perkenalkan :
the power of Expression Blend
utk tutorial 1, aku akan dedahkan (correct word i think) cmane nk wat glossy effect utk any application (apps) y akn kite wat. Aper itu glossy effect? FYI, byk tmpat korag leh jmpe effect nie, especially kat OS pling sopan kat dnia, Vista by Microsoft. kat task bar, start menu, sumer button2 die, sumer nyer dorag design ngn glossy effect. n somehow "musangBerapi" pun dh ikut jejak lgkah y same (most of sftware nowadays actualy)..therefore, aku assume design style cmnie sgt popular kat abad 21..
Labels:
Expression Studio,
programming
18 May 2009
3D carousel effect
Assalamulaikum wbt..
beberape minggu lepas, waktu boring2 time exam. aku cube cbar diri aku untuk wat 3D WPF (windows presentation foundation). tapi personally, mmg pyah laa.sakit aku nk wat.y aku fhm juz konsep je, last2,aku usya programmer2 international len kat internet.tgk cmane dorag wat.
kat cni boleh la aku katekan yang 3D WPF adalah revolusi baru dalam dunia HCI (human computer interface).stakat nie aku fokus ngn dua 3D implementation yang sangat popular dalam dunia programmer, Carousel dan CoverFlow. kebanyakan code yang aku jumpe memerlukan referrence kat outside library, either identityMind,Telerik, or Exceed Datagrid.
beberape minggu lepas, waktu boring2 time exam. aku cube cbar diri aku untuk wat 3D WPF (windows presentation foundation). tapi personally, mmg pyah laa.sakit aku nk wat.y aku fhm juz konsep je, last2,aku usya programmer2 international len kat internet.tgk cmane dorag wat.
kat cni boleh la aku katekan yang 3D WPF adalah revolusi baru dalam dunia HCI (human computer interface).stakat nie aku fokus ngn dua 3D implementation yang sangat popular dalam dunia programmer, Carousel dan CoverFlow. kebanyakan code yang aku jumpe memerlukan referrence kat outside library, either identityMind,Telerik, or Exceed Datagrid.
Labels:
Expression Studio,
programming
Subscribe to:
Posts (Atom)