<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sembang Programming &#187; programming</title>
	<atom:link href="http://sembangprogramming.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://sembangprogramming.com</link>
	<description>Sembangan mengenai pengaturcaraan</description>
	<lastBuildDate>Mon, 22 Aug 2011 06:49:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Form Validation: jQuery + CodeIgniter (validation engine codeigniter)</title>
		<link>http://sembangprogramming.com/2011/02/form-validation-jquery-codeigniter-validation-engine-codeigniter/</link>
		<comments>http://sembangprogramming.com/2011/02/form-validation-jquery-codeigniter-validation-engine-codeigniter/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:52:58 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Umum]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[validation engine]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=522</guid>
		<description><![CDATA[Post kali ni nak kasi demo sikit, form validation guna jQuery dan juga CodeIgniter. Komponen untuk server side, jQuery jQuery Form jQuery Validation Engine Kali ni, kod overload. Kalau ada rasa loya-loya sikit bila tengok kod banyak sangat, sila undur ke belakang perlahan-lahan dan cari beg plastik sebagai persiapan untuk muntah, pastu teruskan membaca. Untuk [...]]]></description>
			<content:encoded><![CDATA[<p>Post kali ni nak kasi demo sikit, form validation guna jQuery dan juga CodeIgniter. Komponen untuk server side,</p>
<ul>
<li>jQuery</li>
<li><a href="http://jquery.malsup.com/form/">jQuery Form</a></li>
<li><a href="https://github.com/posabsolute/jQuery-Validation-Engine">jQuery Validation Engine</a></li>
</ul>
<p>Kali ni, kod overload. Kalau ada rasa loya-loya sikit bila tengok kod banyak sangat, sila undur ke belakang perlahan-lahan dan cari beg plastik sebagai persiapan untuk muntah, pastu teruskan membaca.</p>
<p>Untuk makluman semua, kod dibawah digunakan bersama dengan <a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">Validation Engine 1.6.3</a>. Untuk <a href="https://github.com/posabsolute/jQuery-Validation-Engine">version 2.0</a> ni, tak berapa pasti, tapi mengikut firasat aku, takde beza kot (nanti la aku test).</p>
<p>So kalau nak tengok demo untuk validation engine tu, gi la ke <a href="http://www.position-relative.net/creation/formValidator/">demo page dia</a>.</p>
<p><strong>Validation Engine</strong><br />
Plugin ni ada client-side validation, tapi aku ni, malas sikit nak buat client side validation ni kerana server-side validation kena buat jugak. Oleh kerana aku lebih suka meluangkan masa di reddit daripada buat client-side validation, aku buat server-side je lah.</p>
<p>Kalau nak buat client-side validation, kat site dia ada cerita, dalam docs tu dan bila invalid data, dia keluar pop-up macam ni,</p>
<p><a href="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-2.32.14.jpg"><img src="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-2.32.14-288x300.jpg" alt="" title="Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-2.32.14" width="288" height="300" class="aligncenter size-medium wp-image-523" /></a></p>
<p>Amacam? Menarik? Hehehe.</p>
<p>Oh, benda ni bukan limit pada codeigniter je, kalau php biasa pun leh guna. Sebab aku guna codeigniter, aku kasi spotlight la kat CodeIgniter. Hehehe.</p>
<p>Ok, first sekali kena set jquery form plugin.</p>
<pre class="brush: jscript; title: ;">
var options = {
  beforeSubmit:  loading,  // pre-submit callback
  dataType: 'json',
  success: cleanup  // post-submit callback
};
$('#nama_form').ajaxForm(options);
</pre>
<p>Form dia, aku kasi contoh, gini la rupa dia</p>
<pre class="brush: php; title: ;">
&lt;?php echo form_open('register/create', array('id' =&gt; 'registration_form')); ?&gt;
	&lt;h3&gt;Account Info&lt;/h3&gt;
	&lt;div&gt;
		&lt;label&gt;Email Address&lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;&lt;/label&gt;
		&lt;input type=&quot;text&quot; class=&quot;email-address text&quot; id=&quot;username&quot; name=&quot;username&quot; value=&quot;&quot; /&gt;
		&lt;span class=&quot;field_info&quot;&gt;Type in your email address, an email will be sent afterwards&lt;/span&gt;
	&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>Ha, simple je. Pastukan, kita taruk ni pulak<br />
<span id="more-522"></span></p>
<pre class="brush: jscript; title: ;">
function cleanup(data)
{
	$('#submitbtn').removeAttr('disabled');
	if(data.status == 'success')
	{
		window.location = data.url
	}
	if(data.status == 'error')
	{
		$('#submitbtn').removeAttr('disabled');
		$('#submitbtn').val('Submit');
		$('#submitbtn').parent().prepend('&lt;span id=&quot;status_msg&quot;&gt;There was a slight problem with your submission (see above).&lt;/span&gt;')

		$('#status_msg').fadeOut(3000, function(){
			$(this).remove();
		});

		$.each(data.error, function(index, value){
			$.validationEngine.buildPrompt(value[0],value[1],value[2])
			$('.'+value[0].substr(1)+'formError').click(function(){
				$.validationEngine.closePrompt(value[0])
			})
		})
	}
}
</pre>
<p>Ape fungsi function diatas? Untuk paparkan popup yang memaparkan error pada validation. Haa.. function cleanup ni dipanggil bila form tu dah disubmit secara ajax pada nilai &#8220;action&#8221; form tersebut. Action ni url dimana form tu hantar data tu le.</p>
<p>Garu kepala sikit, apa benda kandungan fungsi function cleanup ni!? Argh! Kalo nak paham, kena pi tengok kod server-side. Jom&#8230;</p>
<pre class="brush: jscript; title: ;">
function create()
{
	$this-&gt;load-&gt;library('form_validation');
	$this-&gt;form_validation-&gt;set_rules('tnc', 'Terms and Conditions', 'trim|required|xss_clean');
	$this-&gt;form_validation-&gt;set_rules('username', 'username', 'trim|required|xss_clean|valid_email|callback__check_username');
	$this-&gt;form_validation-&gt;set_rules('fullname', 'fullname', 'trim|required|xss_clean');
	$this-&gt;form_validation-&gt;set_rules('password', 'Password', 'trim|required|xss_clean|min_length['.$this-&gt;config-&gt;item('password_min_length').']|max_length['.$this-&gt;config-&gt;item('password_max_length').']|alpha_dash');
	$this-&gt;form_validation-&gt;set_rules('verify_password', 'Confirm Password', 'trim|required|xss_clean|matches[password]');
	$this-&gt;form_validation-&gt;set_rules('captcha', 'Confirmation Code', 'trim|xss_clean|required|callback__check_captcha');

	if($this-&gt;form_validation-&gt;run() === FALSE)
	{
		$response['status'] = 'error';

		$errors = $this-&gt;form_validation-&gt;_error_array;
		$field_errors = array();
		$error_details = array();
		foreach($errors as $key =&gt; $data)
		{
			$error_details[] = &quot;#$key&quot;;
			$error_details[] = $data;
			$error_details[] = &quot;error&quot;;

			$field_errors[] = $error_details;
			$error_details = array();
		}
		$response['error'] = $field_errors;
		echo json_encode($response);
	}
	else
	{

		$response['status'] = 'success';
		$response['url'] = site_url('something/completed');
		echo json_encode($response);
	}
}
</pre>
<p>Ha.. yang lain tu kosmetik je. Yang penting bila form tu tak dapat validate, dia masuk dalam line 13. Apa dia buat kat sini, dia bagi create key dan value je. Key nya ialah id html element, value nya.. error tu la. Tak dapat bayangkan, jom kita tengok apa kata si serangga api (firebug).</p>
<p><a href="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.18.57.jpg"><img src="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.18.57-300x57.jpg" alt="" title="Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.18.57" width="300" height="57" class="aligncenter size-medium wp-image-530" /></a></p>
<p>Image tu kecik sikit, kena klik untuk tengok saiz penuh. Nampak? Dia iterate semua element dalam key &#8220;error&#8221;. Total ada 5 element. Setiap satu mewakili input field pada form. Click pada tab JSON kat firebug tu dia papar gini,</p>
<p><a href="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.25.43.jpg"><img src="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.25.43-300x95.jpg" alt="" title="Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.25.43" width="300" height="95" class="aligncenter size-medium wp-image-533" /></a></p>
<p>Bila nilai-nilai JSON ni dihantar kembali, jquery form tu dia laksanakan function cleanup. Cleanup to melalui semua element error dan generate popup untuk setiap satu element. Ha.. tapi aku lupa nak bagitau sesuatu, sebelum submit dia ada panggil function &#8220;loading&#8221;. Takde ape sangat pun, cuma nak reset submit button dan buang semua error popup.</p>
<pre class="brush: jscript; title: ;">
function loading()
{
	$('#status_msg').remove();
	$('#submitbtn').attr('disabled', 'true');
	$('#submitbtn').val('Processing..')
	$.validationEngine.closePrompt('.formError');
}
</pre>
<p>Ok settle. Setakat ni, kalau dah reti pakai jquery validation engine, pastu nak implement benda ni, takde masalah (bagi aku takde masalah, kalau ada mai la habaq sini). Nak tunjuk step-by-step sampai jadi, payah sikit la. So godek-godek la kod diatas bagi jadi.</p>
<p>Sebelum aku terlupa, kod-kod ni untuk tutup error popup tu kalau dia menganggu. Ye la, dah banyak sangat popup, mesti la dia lindung benda lain satgi.</p>
<pre class="brush: jscript; title: ;">
$('input').click(function(){
	$.validationEngine.closePrompt($(this))
})
$('input').focus(function(){
	$.validationEngine.closePrompt($(this))
})
</pre>
<p>Jadi, hasilnya lebih kurang macam ni,</p>
<p><a href="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.40.35.jpg"><img src="http://sembangprogramming.com/wp-content/uploads/2011/02/Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.40.35-300x212.jpg" alt="" title="Capture12-02-2011-23.38.3513-02-2011-1.14.2922-02-2011-3.40.35" width="300" height="212" class="aligncenter size-medium wp-image-538" /></a></p>
<p>Moga diberi masa untuk post lagi pada masa akan datang. Setakat tu je sembang untuk kali ni, masa untuk programming pulak!</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2011/02/form-validation-jquery-codeigniter-validation-engine-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CamelCase</title>
		<link>http://sembangprogramming.com/2010/07/camelcase/</link>
		<comments>http://sembangprogramming.com/2010/07/camelcase/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 03:58:04 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[pengalaman]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=371</guid>
		<description><![CDATA[Apa itu CamelCase? Di wikipedia dia tulis, gabungan perkataan dimana setiap element (perkataan) dicantum tanpa menggunakan ruang kosong (space) dan setiap huruf di permulaan perkataan adalah besar (capital letter). Contohnya jika anda mempunyai fungsi yang dipanggil.. get_items_in_list Dalam CamelCase, ia ditulis sebegini, GetItemsInList Saya lebih menggemari pemisahan perkataan dengan menggunakan underscore ( _ ), dalam [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Apa itu CamelCase?</strong><br />
Di wikipedia dia tulis, gabungan perkataan dimana setiap element (perkataan) dicantum tanpa menggunakan ruang kosong (space) dan setiap huruf di permulaan perkataan adalah besar (capital letter).</p>
<p>Contohnya jika anda mempunyai fungsi yang dipanggil..</p>
<blockquote><p>get_items_in_list</p></blockquote>
<p>Dalam CamelCase, ia ditulis sebegini,</p>
<blockquote><p>GetItemsInList</p></blockquote>
<p>Saya lebih menggemari pemisahan perkataan dengan menggunakan underscore ( _ ), dalam penamaan fungsi (function). Senang nak baca, walaupun agak panjang, tapi senang nak baca tu yang penting.</p>
<p>Tapi yang penting, kena konsisten. Jangan sekejap CamelCase sekejap , sekejap benda lain. Kena ada <a href="http://code.google.com/p/soc/wiki/PythonStyleGuide#Naming">guideline</a> untuk cara penulisan. Kalau setiap programmer ada style masing-masing (ada yang takdak style, ikut sedap hati dan mood.  Sekejap camelcase, sekejap hungarian notation, etc) haru-biru la gamaknya.  Dan kalau kena maintain sistem, programmer sebelum ni dah pakai CamelCase secara konsisten terpaksa la ikut.</p>
<p>Oleh kerana saya telah menulis pelbagai kod sebagai projek sampingan (pet project) yang tidak dapat disiapkan (tiba-tiba banyak pulak kerja) dan dibiarkan terbengkalai selama 3-6 bulan (ada yang sampai bertahun) dan kemudiannya saya sambung balik, ianya secara tidak langsung melatih saya untuk menulis kod dengan lebih teliti supaya  pada masa akan datang saya dapat memahami kod yang ditulis dan sambung menulis kod tersebut.</p>
<p>Ok, setakat tu sahaja untuk hari ni. Nak kena sambung baca kod orang (dan baiki indentation, *sigh*, masih ramai tak reti guna IDE dengan betul).</p>
<p>Selamat Programming!</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2010/07/camelcase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asas dan Pengenalan C++</title>
		<link>http://sembangprogramming.com/2009/11/asas-dan-pengenalan-c/</link>
		<comments>http://sembangprogramming.com/2009/11/asas-dan-pengenalan-c/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 15:55:15 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=213</guid>
		<description><![CDATA[E-buku yang disediakan oleh En. Najmi (teruskan usaha!) dan diuploadkan oleh beliau ke Scribd. Asas dan Pengenalan C++ dalam Bahasa Melayu Saya pun tak berapa reti C++, maklumlah selama bekerja ni tak berpeluang nak guna.]]></description>
			<content:encoded><![CDATA[<p>E-buku yang disediakan oleh En. Najmi (teruskan usaha!) dan diuploadkan oleh beliau ke Scribd.<br />
<strong><a href="http://www.scribd.com/doc/22408591/Asas-dan-Pengenalan-C-dalam-Bahasa-Melayu">Asas dan Pengenalan C++ dalam Bahasa Melayu</a></strong></p>
<p><a href="http://www.flickr.com/photos/25768438@N07/4127659215/" title="Asas dan Pengenalan C++ dalam Bahasa Melayu_1258991179845 by necropsy_md5, on Flickr"><img src="http://farm3.static.flickr.com/2777/4127659215_b594ef7c7d.jpg" width="375" height="500" alt="Asas dan Pengenalan C++ dalam Bahasa Melayu_1258991179845" /></a></p>
<p>Saya pun tak berapa reti C++, maklumlah selama bekerja ni tak berpeluang nak guna.</p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/11/asas-dan-pengenalan-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrated Development Environment (IDE)</title>
		<link>http://sembangprogramming.com/2009/08/integrated-development-environment-ide/</link>
		<comments>http://sembangprogramming.com/2009/08/integrated-development-environment-ide/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 14:45:55 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=76</guid>
		<description><![CDATA[Salah satu peralatan yang penting dalam perjuangan seseorang pengaturcara adalah IDE. Jika anda menggunakan Notepad++ ataupun Textpad, perisian tersebut bukanlah IDE, ianya adalah text editor. Sesuai untuk menyunting (edit) kod tetapi tidak sesuai untuk membangunkan perisian. Saya tidak menterjemah IDE kerana saya takut akan hasil daripada terjemahan saya , dan jika ianya diterjemahkan pun anda [...]]]></description>
			<content:encoded><![CDATA[<p>Salah satu peralatan yang penting dalam perjuangan seseorang pengaturcara adalah IDE. Jika anda menggunakan <a href="notepad-plus.sourceforge.net">Notepad++</a> ataupun <a href="http://www.textpad.com">Textpad</a>, perisian tersebut bukanlah IDE, ianya adalah text editor. Sesuai untuk menyunting (edit) kod tetapi tidak sesuai untuk membangunkan perisian.</p>
<p><img class="alignright size-thumbnail wp-image-80" title="screencap_24-08-2009-22.32.04" src="http://sembangprogramming.com/wp-content/uploads/2009/08/screencap_24-08-2009-22.32.04-150x150.jpg" alt="screencap_24-08-2009-22.32.04" width="150" height="150" />Saya tidak menterjemah IDE kerana saya takut akan hasil daripada terjemahan saya <img src='http://sembangprogramming.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , dan jika ianya diterjemahkan pun anda tidak mungkin akan digunakan kebanyakan masa (99% daripada masa anda membangunkan perisian/bekerja), melainkan anda vendor kerajaan ataupun kakitangan kerajaan, itupun didalam kertas kerja. Kalau anda tahu, dialu-alukan memberitahu saya didalam ruangan komen. <img src='http://sembangprogramming.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Jadi, apa yang anda cari didalam IDE? Sudah tentulah fungsi untuk memudahkan aktiviti pengaturcaraan, tetapi apakah itu? Jikalau anda mempunyai &#8216;swiss army knife&#8217; tetapi tidak tahu apa yang boleh dilakukannya selain memotong, anda berada dalam keadaan yang rugi. Rugi kerana tidak menggunakan IDE anda dengan sepenuhnya (50% pun oklah). Anda tidak perlu mengenali kesemua fungsi didalam IDE anda, setakat tahu apa yang anda mahu, itu pun memadai.</p>
<p>Sebuah IDE terdiri daripada:</p>
<ul>
<li>source code editor</li>
<li>a compiler and/or an interpreter</li>
<li>build automation tools</li>
<li>a debugger (ataupun dalam BM, pengayahpijat)</li>
</ul>
<p><span id="more-76"></span></p>
<p>Tertera diatas adalah kebolehan asas didalam sesebuah IDE. Terdapat banyak lagi <a href="http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments">kriteria</a> yang digunakan untuk membandingkan sesuatu IDE, seperti berikut:</p>
<ul>
<li>profiler</li>
<li>code coverage</li>
<li>static code analysis</li>
<li>autocomplete</li>
<li>class browser</li>
<li>dan pelbagai lagi..</li>
</ul>
<p>Ciri-ciri yang dipilih oleh seseorang pengaturcara selalunya bergantung pada diri masing masing. Setiap pengaturacara adalah unik dan bukan semua pengaturcara dapat menyesuaikan diri pada IDE, melainkan terdapat sesuatu pada IDE tersebut yang harus digunakan untuk membangunkan jenis perisian tersebut, contohnya pembangunan perisian .NET pada Windows memerlukan Microsoft Visual Studio (walaupun terdapat alternatif seperti <a href="http://www.icsharpcode.net/OpenSource/SD/">SharpDevelop</a> &#8211; kebanyakan member yang test tak suka). Jika seluruh pasukan anda (5-10 orang) menggunakan Eclipse, kemungkinan besar anda terpaksa menggunakan Eclipse, kerana apabila pasukan anda membincangkan sesuatu dan menggunakan istilah yang hanya terdapat pada IDE tersebut, anda akan tersisih dan kekeliruan (ape bende derang cakap nih?)</p>
<p>IDE yang banyak digunakan oleh orang (yang selalu didengar oleh saya) adalah seperti berikut:</p>
<ul>
<li><a href="http://www.eclipse.org/">Eclipse</a> (juga terdapat <a href="http://www.phpeclipse.com/">PHPEclipse</a>)</li>
<li><a href="www.adobe.com/products/dreamweaver/">Adobe Dreamweaver</a></li>
<li><a href="http://www.netbeans.org/">Netbeans</a></li>
<li>beberapa lagi yang tak dapat saya ingati pada masa kini.</li>
</ul>
<p><img class="alignright size-full wp-image-79" title="screencap_24-08-2009-22.28.07" src="http://sembangprogramming.com/wp-content/uploads/2009/08/screencap_24-08-2009-22.28.07.jpg" alt="screencap_24-08-2009-22.28.07" width="263" height="71" />IDE yang saya gunakan adalah <a href="http://www.openkomodo.com/"><strong>Komodo Edit</strong></a>. Dan saya mungkin akan beralih ke IDE lain jika ianya memenuhi kehendak saya didalam persekitaran pembangunan perisian saya (kadang-kadang setiap 6 bulan saya akan uji IDE baru).</p>
<p>Apa yang saya perlukan:</p>
<ul>
<li>Project View</li>
<li>Multiple Tabs</li>
<li>Code snippet, macro, etc</li>
<li>Autocomplete (Code Intelligence)</li>
<li>Class Browser</li>
<li>Todo</li>
<li>Code Folding</li>
<li>Bookmark</li>
<li>Brace matching</li>
<li>Auto indentation</li>
<li>Function list</li>
<li>Regex-based find &amp; replace (regular expression)</li>
</ul>
<p><img class="alignright size-thumbnail wp-image-78" title="komodo-start" src="http://sembangprogramming.com/wp-content/uploads/2009/08/komodo-start-150x150.png" alt="komodo-start" width="150" height="150" />Tiada plugin untuk SVN, tiada option untuk terus muat naik (upload) ke server. Mengapa? Kenapa? Saya sudah mempunyai perisian untuk melakukan tugasan-tugasan berikut, <strong>TortoiseSVN</strong> dan <strong>Filezilla</strong>. &#8220;<em>Tapi, kalau dalam IDE tak payah nak pegi tempat lain</em>&#8220;, ya, mungkin benar tetapi saya cuba meminimakan apa yang sedang berjalan (running) dalam PC saya dan apabila perisian itu adalah &#8216;standalone&#8217;, ia dapat melakukan tugasnya dengan lebih baik daripada &#8216;<strong>plugin</strong>&#8216;. Kerana ia adalah &#8216;<strong>specialist</strong>&#8216; (atau pakar &#8211; hehe). Itu hanyalah saya, saya mempunyai sesuatu yang lebih saya suka daripada yang lain (preference).</p>
<p>Cuba dan eksperimen dengan persekitaran pembangunan perisian yang sesuai dengan jiwa dan keadaan anda. <strong>Jangan lupa untuk berkongsi dengan saya.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/08/integrated-development-environment-ide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Persiapan dalam Pembangunan Perisian</title>
		<link>http://sembangprogramming.com/2009/08/persiapan-dalam-pembangunan-perisian/</link>
		<comments>http://sembangprogramming.com/2009/08/persiapan-dalam-pembangunan-perisian/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 05:23:45 +0000</pubDate>
		<dc:creator>mkhairul</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://sembangprogramming.com/?p=58</guid>
		<description><![CDATA[Bagaimana anda bersiap sedia untuk pergi ke shopping complex dengan awek? Gel letak banyak-banyak (kasi bersinar sikit), minyak wangi satu botol (dari jauh orang dah boleh tau), kasut branded, tali pinggang, check kat cermin supaya kemas, baca bismillah dan kemudian bertolak. Begitu juga dalam programming, terdapat beberapa langkah persediaan yang perlu dilaksanakan sebelum memulakan aktiviti [...]]]></description>
			<content:encoded><![CDATA[<p>Bagaimana anda bersiap sedia untuk pergi ke shopping complex dengan awek? Gel letak banyak-banyak (kasi bersinar sikit), minyak wangi satu botol (dari jauh orang dah boleh tau), kasut branded, tali pinggang, check kat cermin supaya kemas, baca bismillah dan kemudian bertolak.</p>
<p>Begitu juga dalam programming, terdapat beberapa langkah persediaan yang perlu dilaksanakan sebelum memulakan aktiviti ini.</p>
<p>Jika hanya anda seorang:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Revision_control">version control</a></li>
</ul>
<p>Jika lebih dari seorang:</p>
<ul>
<li>version control</li>
<li><a href="http://en.wikipedia.org/wiki/Issue_tracking_system">issue tracking</a> (jika lebih dari seorang) ataupun mana mana perisian yang dapat senaraikan tugas / isu.</li>
<li><a href="http://en.wikipedia.org/wiki/Wiki">wiki</a></li>
<li><a href="http://en.wikipedia.org/wiki/Coding_conventions">coding guideline</a></li>
<li>terdapat beberapa lagi yang tidak akan disentuh disini seperti automated testing, automated build/deployment</li>
</ul>
<p><span id="more-58"></span></p>
<p><strong>Version Control</strong></p>
<p><img class="alignright size-thumbnail wp-image-66" title="checkout_edit" src="http://sembangprogramming.com/wp-content/uploads/2009/08/checkout_edit-150x150.png" alt="checkout_edit" width="150" height="150" />Walaupun anda seorang, version control dapat menyelamatkan anda (dan tentunya disaat yang genting) apabila anda membuat pengubahsuaian pada kod. Contohnya, anda implement suatu feature pada perisian anda yang diminta oleh pelanggan. Kemudiannya mereka tidak mahu pula feature tersebut, adakah anda akan komen kod tu  (risau mereka mahu pula kemudiannya) ? ataupun anda akan hasilkan fail baru dan namakan fail lama sebagai filename.php.old ?</p>
<p>Cara-cara begini telah banyak saya saksikan, selain daripada menyerabutkan mata dan kepala ia juga menganggu keyakinan diri (mungkin), kerana anda takut replace fail yang penting. Dengan menggunakan &#8216;version control&#8217;, anda hanya perlu &#8216;commit&#8217; (lebih kurang macam save) perubahan yang anda lakukan akan direkod sebagai, contohnya, revision 2. Dan jika user tidak mahu feature tersebut, anda hanya perlu ambil fail pada revision 1 untuk kembalikannya pada yang asal sebelum anda melakukan perubahan. DAN JIKA user nak tambah balik, retrieve aje lah revision 2. Tak perlu pening pening kepala, tapi jangan cakap kat user senang untuk membuat perubahan (supaya boleh caj tinggi sikit &#8211; jahatnya, hehe).</p>
<p>Paling penting sekali penggunaan VCS (version control system) ni apabila ramai pengaturcara, sekejap si Ahmad nak edit fileX, dalam masa yang sama si Abu pun nak edit. Haaa, macam mana? Sila rujuk topik &#8216;<a href="http://en.wikipedia.org/wiki/Merge_%28revision_control%29"><strong>merging</strong></a>&#8216; dalam perisian VCS anda.</p>
<p>Perisian yang saya gunakan untuk version control adalah <a href="http://subversion.tigris.org/">Subversion</a> (SVN) dan pada bahagian client adalah <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>. Jika anda menggunakan windows dan ingin memudahkan proses install dan konfigurasi, gunakan <a href="http://www.visualsvn.com/">VisualSVN</a>. Saya menggunakan Subversion biasa dan apache untuk mengakses <strong>repository</strong>.</p>
<p>Terdapat beberapa juga jenis VCS yang berpusat (centralized) dan teragih (distributed). SVN adalah centralized. <a href="http://en.wikipedia.org/wiki/Git_%28software%29">Git</a> adalah <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">distributed</a>. Maklumat lanjut akan dihuraikan dalam post yang akan datang.</p>
<p><strong>Issue Tracking</strong></p>
<p>Dalam pembangunan perisian, gerenti banyak isu atau tugasan (jangan letak dalam kepala, kepala kita ni bukan harddisk sekejap je boleh lupa), anda perlulah menulisnya samada dalam buku nota, Google Notebook, ataupun pada perisian issue tracking.</p>
<p>Perisian yang saya selalu gunakan adalah <a href="http://www.google.ca/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwww.mantisbt.org%2F&amp;ei=YQiSSqTtHpLONd2ipJIK&amp;usg=AFQjCNEoDFzAtoxyR2pWSXnI5aAosHLQMg&amp;sig2=Gsd1JA52WWq2NQ_MyBOhLA">Mantis BugTracker</a>, walaupun dia tulis situ &#8216;BugTracker&#8217;, ia boleh digunakan untuk kegunaan umum bukan hanya pada &#8216;bug&#8217;. Tak percaya? Hubungilah saya, saya kan menerangkan dengan lebih lanjut. Aplikasi web ini agak rumit untuk difahami secara menyeluruh, anda perlu menggunakannya untuk mengenalinya dengan lebih cepat.</p>
<p>Dengan menggunakan issue tracking ini juga, anda dapat menjejak isu isu agar ianya tidak hilang ditelan zaman (selalu berlaku pada email), ataupun masuk telinga kanan keluar telinga kiri.</p>
<p><strong>Wiki</strong></p>
<p><img class="alignright size-thumbnail wp-image-67" title="600px-Wikipedia-logo.svg" src="http://sembangprogramming.com/wp-content/uploads/2009/08/600px-Wikipedia-logo.svg-150x150.png" alt="600px-Wikipedia-logo.svg" width="150" height="150" />Anda tahu apa itu wiki? Tak tahu? Jika anda pernah menggunakan wikipedia, maka anda menggunakan wiki tanpa menyedarinya. Saya menggunakan wikipedia pada awal tahun 2004 (atau mungkinkah lebih awal? saya tak berapa ingat). Pada ketika itu, tidak banyak maklumat didalamnya. Setelah beberapa tahun berlalu, ramai orang mencurahkan maklumat kedalamnya dan sedikit demi sedikit ianya disunting untuk memperbaiki kualitinya. Sehinggalah sekarang, ia menjadi rujukan utama apabila seseorang itu berada didepan komputer yang mempunyai internet.</p>
<p>Saya pernah menceritakan kepentingan wiki didalam blog saya bertajuk, <a href="http://mkhairul.com/2008/05/22/why-an-internal-wiki-is-important-for-a-growing-development-team-or-an-entire-company/">Why an internal wiki is important for a growing development team (or an entire company)</a>, (fuh, panjang betul tajuk tu) dimana didalam konteks pembangunan perisian, ia dapat digunakan sebagai <strong>developer-level documentation</strong>. Kebanyakan tempat tidak mempunyai developer-level documentation, dimana ia selalu disanggah seperti &#8220;<em>Ah, tak payah la tu, ko baca je komen dalam kod</em>&#8220;, &#8220;<em>Kod aku tu jelas, terang dan simple, ko tengok je mesti ko paham&#8221;</em>, dan pelbagai lagi.</p>
<p>Antara kepentingan wiki (saya terjemah dari blog saya):</p>
<ul>
<li>Mempermudahkan ahli baru pasukan merujuk maklumat mengenai projek</li>
<li>Mengajar bagaimana untuk menyusun maklumat anda dan rakan anda supaya senang difahami (dapat membantu dalam menulis kod yang lebih baik).</li>
<li>Menggalakkan dokumentasi, dan juga cara berkomunikasi dalam bentuk bertulis.</li>
</ul>
<p>Jika persekitaran anda masih tidak mempunyai wiki, disarankan untuk mewujudkannya. Selalunya  jika anda memperkenalkan sesuatu yang baru, tentangan (&#8220;resisting change&#8221;) pasti akan berlaku, dalam keadaan sebegini, cuba menerangkan lagi kebaikan wiki untuk memupuk semangat (ataupun keinginan) untuk memperbaiki cara kerja kearah yang lebih baik. Jika semua gagal, cuba raih sokongan bos ataupun pihak pengurusan supaya menurunkan arahan supaya pengaturcara digalakkan (ataupun diharuskan) sumbang pada wiki (KUKU BESI! WAAARGGH!).</p>
<p>Saya menggunakan <a href="http://www.mediawiki.org/wiki/MediaWiki">mediawiki</a> untuk perisian wiki.</p>
<p><strong>Coding Guideline</strong></p>
<p>Coding guideline selalunya termasuk didalam wiki. Ianya penting dan tak banyak syarikat yang ada. &#8220;Coding ni proses kreatif, mana boleh semua kena ikut macam ni&#8221;, taik unta, mahu tak mahu satu pasukan kena setuju dengan suatu garis panduan yang dibincangkan terlebih dahulu. Lepas tu semua kena ikut. Dalam IDE, automatically convert tabs to space, satu tab sama dengan 4 space. Gaya curly brace ( { ), samada 1TBS (One True Bracing Style), Allman(BSD style), Whitesmith ataupun GNU.</p>
<p>Saya lebih menggemari gaya BSD<br />
<code>foreach($somearray as $key =&gt; $value)<br />
{</code></p>
<p>}<br />
Berbincang dan bersetuju dengan satu garis panduan, atau paling malas pun ambil mana mana coding guideline dari <a href="http://framework.zend.com/manual/en/coding-standard.html">Zend</a> ke, <a href="http://drupal.org/node/318">Drupal</a> ke, ataupun <a href="http://www.mozilla.org/hacking/mozilla-style-guide.html">Mozilla</a>.</p>
<p>Harap tips dan huraian ini dapat membantu anda samada didalam kerjaya ataupun hobi.</p>
<p><strong>Selamat programming!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://sembangprogramming.com/2009/08/persiapan-dalam-pembangunan-perisian/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

