<?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>Feelinc.Me &#187; tips &amp; trik</title>
	<atom:link href="http://www.feelinc.me/tag/tips-trik/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.feelinc.me</link>
	<description>It&#039;s All About Me</description>
	<lastBuildDate>Tue, 24 Aug 2010 21:46:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Membuat OOP di Javascript supaya terstruktur</title>
		<link>http://www.feelinc.me/experience/membuat-oop-di-javascript-supaya-terstruktur/</link>
		<comments>http://www.feelinc.me/experience/membuat-oop-di-javascript-supaya-terstruktur/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:39:28 +0000</pubDate>
		<dc:creator>Feelinc</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[tips & trik]]></category>

		<guid isPermaLink="false">http://1sn0where.wordpress.com/?p=51</guid>
		<description><![CDATA[Nah bagaimana supaya lebih enak kita pakai dan untuk future enhancement nya lebih mudah ??? Pertama kita buat file saya.js, isi file ini yang akan berfungsi seperti objek global bagi Anda dengan isi seperti berikut : (function(){ if (window.Saya) {var Saya = window.Saya;} var Saya = window.Saya = function() {return new Saya.init();}; Saya.apply = function(o, [...]]]></description>
			<content:encoded><![CDATA[<p>Nah bagaimana supaya lebih enak kita pakai dan untuk future enhancement nya lebih mudah ???</p>
<p>Pertama kita buat file <strong>saya.js</strong>, isi file ini yang akan berfungsi seperti objek global bagi Anda dengan isi seperti berikut :</p>
<pre class="brush: plain;">
(function(){
if (window.Saya) {var Saya = window.Saya;}

var Saya = window.Saya = function() {return new Saya.init();};

Saya.apply = function(o, c, defaults){
if(defaults){Saya.apply(o, defaults);}
if(o &amp;amp;&amp;amp; c &amp;amp;&amp;amp; typeof c == 'object'){for(var p in c){o[p] = c[p];}}
return o;
};

Saya.apply(Saya, {
version: '1.0.0',
init: function() {return this.version;}
});

Saya.ui = Saya.ui || {};
})();
</pre>
<p><span id="more-51"></span>Objek global ini akan memasang objet &#8220;Saya&#8221; pada objek window, sehingga kita tidak perlu melakukan inisialisasi lagi ketika akan menggunakan nya, contoh :</p>
<pre class="brush: plain;">
alert(Saya.init());
</pre>
<p>Akan memunculkan dialog alert dengan isi &#8220;1.0.0&#8243;.</p>
<p>Pada javascript diatas terdapat &#8220;Saya&#8221; bisa diganti sesuka Anda, mau jadi &#8220;Maneh&#8221; ato &#8220;Kehed&#8221; ato &#8220;Parah&#8221;, tapi nanti saja setelah Anda paham pemakaiannya. Juga terdapat Saya.ui = Saya.ui || {}; ini nanti kita bahas.</p>
<p>Kemudian buat file lagi dengan nama <strong>oop_saya.js</strong>, isi file ini akan berfungsi sebagai objek yang Anda pakai tergantung kebutuhan pada halaman dengan isi sebagai berikut :</p>
<pre class="brush: plain;">
Saya.ui.OOP_Saya = function() {
return {

method_saya: function() {
alert(&quot;Saya Tea !!!!&quot;);
},

method_anda: function() {
alert(&quot;Anda Saja !!!&quot;);
}

}
}();
</pre>
<p>Nah pada code diatas terdapat dua fungsi method_saya dan method_anda, maka ketika memakai tinggal melakukan include file javascript terlebih dahulu pada html :</p>
<pre class="brush: plain;">
&lt;script src=&quot;saya.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;oop_saya.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>Kemudian tinggal pada link diatas kita rubah jadi seperti ini :</p>
<pre class="brush: plain;">
&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:Saya.method_saya();&quot;&gt;Saya&lt;/a&gt;

&lt;a href=&quot;javascript:;&quot; onclick=&quot;javascript:Saya.method_anda();&quot;&gt;Anda&lt;/a&gt;
</pre>
<p>Nah kenapa harus ada Saya.ui. pada oop_saya.js, ini dimaksudkan bagi kita membedakan/mengelompokan mana javascript yang kita pakai untuk mengolah User Interface (UI) atau HTML, mana javascript yang akan kita pakai sebagai Utility atau fungsi &#8211; fungsi bantuan, karena mungkin jika kita membuat Utility akan dipakai di objek javascript untuk mengolah UI yang lainnya.</p>
<p>Bagaimana cara menambah supaya kita bisa membuat Saya.utility.</p>
<p>Pertama kita tambahkan :</p>
<pre class="brush: plain;">
Saya.utility = Saya.utility || {};
</pre>
<p>Setelah :</p>
<pre class="brush: plain;">
Saya.ui = Saya.ui || {};
</pre>
<p>Pada file <strong>saya.js</strong></p>
<p>Kemudian kita buat file <strong>utility.math.js</strong>, dengan isi sebagai berikut :</p>
<pre class="brush: plain;">
Saya.utility.Math = function() {
return {

roundNumber: function (num, dec) {
var snum=num.toString()+&quot;000000000000000001&quot;;
var sep=snum.indexOf(&quot;.&quot;);
var beg=snum.substring(0,snum.indexOf(&quot;.&quot;));
snum=snum.substring(eval(snum.indexOf(&quot;.&quot;)+1),snum.length);
var dig=snum.substring(0,eval(dec-1));
snum=snum.substring(eval(dec-1),dec);
snum=parseInt(snum);
gohigher=false;
if (snum&gt;4) {gohigher=true;}
if (gohigher) {snum=parseInt(snum);snum++;}
snum=snum.toString();
num=beg+&quot;.&quot;+dig+&quot;&quot;+snum;
return num;
},

rand32: function (){return Math.floor(Math.random()*4294967295);},

}
}();
</pre>
<p>Bagaimana kita menggunakan Utility ini pada <strong>object_saya.js</strong> :</p>
<pre class="brush: plain;">
method_saya: function() {
alert(Saya.utility.Math.rand32());
},
</pre>
<p>Kemudian kita bisa membuat, contoh :</p>
<p>- Saya.utility.Uri</p>
<p>- Saya.utility.Text</p>
<p><span style="color:#ff0000;">Tapi harus hati &#8211; hati ketika membuat fungsi pada objek ini, harus dispisahkan dengan tanda koma (,), kecuali fungsi yang paling terakhir jangan memakai tanda koma (,), karena akan menyebabkan error.</p>
<p>Tinggal dikembangkan lagi sesuai kebutuhan.</p>
<p style="text-align:justify;">Terima Kasih, semoga bermanfaat.</p>
<p style="text-align:justify;">“People Always Forget How Fast We Did A Job, But They Will Remember How well We Did It”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feelinc.me/experience/membuat-oop-di-javascript-supaya-terstruktur/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Trik mengolah HTML on-the-fly menggunakan jQuery + JSON</title>
		<link>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/</link>
		<comments>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 03:50:28 +0000</pubDate>
		<dc:creator>Feelinc</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[bekerja dengan html jquery]]></category>
		<category><![CDATA[dom manipulation]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[manipulasi html]]></category>
		<category><![CDATA[tips & trik]]></category>

		<guid isPermaLink="false">http://1sn0where.wordpress.com/?p=35</guid>
		<description><![CDATA[Terkadang kita bingung bagaimana cara terbaik atau yang relevan untuk membuat atau mengolah html dengan menggunakan javascript, terdapat beberapa cara : &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 1. Dengan membuat tag-tag html langsung $(document).ready(function(){ var list = ''; for (var i=0; i&#60;2; i++) { list += '&#60;li&#62;'+i+'&#60;/li&#62;'; } }); ('#list').html(list); maka akan menghasilkan : &#60;ul id=&#34;list&#34;&#62; &#60;li&#62;0&#60;/li&#62; &#60;li&#62;1&#60;/li&#62; &#60;/ul&#62; Tetapi [...]]]></description>
			<content:encoded><![CDATA[<p>Terkadang kita bingung bagaimana cara terbaik atau yang relevan untuk membuat atau mengolah html dengan menggunakan javascript, terdapat beberapa cara :</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>1. Dengan membuat tag-tag html langsung</strong></p>
<pre class="brush: plain;">
$(document).ready(function(){
var list = '';
for (var i=0; i&lt;2; i++) {
list += '&lt;li&gt;'+i+'&lt;/li&gt;';
}
});

('#list').html(list);
</pre>
<p>maka akan menghasilkan :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;list&quot;&gt;
&lt;li&gt;0&lt;/li&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Tetapi bagaimana jika kita bekerja dengan seorang web designer yang tugasnya membuat html + css dan web designer tersebut enggan menyentuh code javascript tersebut, misal code javascript nya sudah terlalu kompleks, juga terkadang kita takut jika ada yang menyentuh code javascript kita. Kemudian hal ini juga menyebabkan code javascript kita terlihat tidak bersih karena bercampur dengan tag-tag html dan bisa membingungkan.<span id="more-35"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>2. Dengan mengambil tag-tag html melalui AJAX</strong></p>
<pre class="brush: plain;">
$(document).ready(function(){
$(&quot;#links&quot;).load(&quot;http://www.test.com/load/links.html&quot;);
});
</pre>
<p>HTML respon yang dihasilkan dari links.php sebagai berikut :</p>
<pre class="brush: plain;">
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 1 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 3&lt;/a&gt;&lt;/li&gt;
</pre>
<p>Maka akan menghasilkan :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 1 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Main Page 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Hal ini memang terlihat lebih mudah, tetapi hal ini akan berdampak pada response time, karena tag-tag html yang kita load terlalu banyak karakternya padahal kita membutuhkan nama-nama link dan mungkin url nya, kemudian jika isi dari link-link tersebut tidak boleh kita hardcode, jadi harus berdasarkan referensi dari database / code php.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>3. Dengan menggunakan jQuery Template plugin</strong></p>
<p>Dengan menggunakan hal ini memang lebih bagus dari pilihan yang tadi. Kita bisa menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; sehingga nanti tinggal diolah oleh si jQuery Template plugin, tetapi jika kita seseorang yang juga bekerja dengan menggunakan Smarty maka ini akan menjadi masalah karena akan terjadi tabrakan.</p>
<p>Bagaimana dengan melakukan load html dari server seperti no.2 diatas, kemudian kita load juga daftar nama-nama link dan url nya dari server, kemudian tinggal kita parse menggunakan jQuery Template plugin. Ini mengakibatkan kita harus melakukan 2 kali request. Tetapi penggunaan jQuery Template plugin ini tidak mudah dan lumayan kompleks.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<h2><strong>Cara yang terbaik adalah !!!!</strong></h2>
<p><strong>1. Dengan mengolah html yang sudah siap pada </strong></p>
<p>Dengan menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li class=&quot;sys_example&quot; style=&quot;display:none;&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Kemudian kita olah :</p>
<pre class="brush: plain;">
$(document).ready(function(){
var container = $('#links');

/* kita cari tag &lt;li&gt; */
var obj = $('li.sys_example', container);
var item;

for (var i=0; i&lt;2; i++) {

/* kita clone tag &lt;li&gt; tersebut */
item = obj.clone();

/* kita isi nomor kedalam &lt;li&gt; tersebut */
item.html(i);

/* kita buang class sys_example supaya tidak ter-clone lagi dan buat menjadi display:block supaya tidak tersembunyi */
item.removeClass('sys_example').css('display', 'block');

/* kemudian kita masukan kedalam &lt;ul&gt; dengan id links yang sudah ada di html */

item.appendTo(container );
}

delete item;
delete obj;
delete container;

});
</pre>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>2. Dengan mengambil data dari server dan contoh html yang sudah siap pada<br />
</strong></p>
<p>Dengan menyimpan/membuat html yang akan dipakai didalam tag  dengan kita tambahkan style=&#8221;display:none;&#8221; :</p>
<pre class="brush: plain;">
&lt;ul id=&quot;links&quot;&gt;
&lt;li class=&quot;sys_example&quot; style=&quot;display:none;&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Kemudian kita load daftar nama-nama link dan urlnya dari server dan langsung diolah terhadap html yang sudah kita siapkan barusan :</p>
<p>format JSON yang akan kita terima dari server adalah sebagai berikut :</p>
<pre class="brush: plain;">
[
{&quot;url&quot;: &quot;http://www.test.com/home.php&quot;, &quot;nama&quot;: &quot;Home&quot;},
{&quot;url&quot;: &quot;http://www.test.com/about.php&quot;, &quot;nama&quot;: &quot;About&quot;},
{&quot;url&quot;: &quot;http://www.test.com/contact.php&quot;, &quot;nama&quot;: &quot;Contact&quot;}
]
</pre>
<p>Ingat ketika kita bangun format JSON tersebut di server jangan seperti diatas karena akan memperlambat response time, yaitu kita buang spasi atau enter dan buat menjadi 1 baris.</p>
<pre class="brush: plain;">
$(document).ready(function(){

/* disini kita melakukan request ke server untuk mengambil daftar link*/
$.getJSON(&quot;http://www.test.com/load/links.php&quot;,

function(json){

/* Cek apakah format json sudah benar, jika tidak masuk kedalam if, maka format masih salah */
if (json){
var item;
var obj;

/* kita ambil dulu si &lt;ul&gt; */
var container = $('#links');

for(item in json) {

/* kita cari tag &lt;li&gt; beserta isinya dan kita clone */
obj = $('li.sys_example', container).clone();

/* kita cari tag &lt;a&gt; dan isi atribut href dengan url, juga isi si &lt;a&gt; dengan nama link nya */
obj.find('a').attr('href', json[item].url).text(json[item].nama);

/* kita buang class sys_example supaya tidak ter-clone lagi dan buat menjadi display:block supaya tidak tersembunyi */
obj.removeClass('sys_example').css('display', 'block');

/* kemudian kita masukan kedalam &lt;ul&gt; dengan id links yang sudah ada di html */
obj.appendTo(container);
}

delete container;
delete obj;
delete item;
}

});
});
</pre>
<p>Pasti kita merasa &#8220;wah code javascript nya jadi tambah banyak dong !!!!&#8221;.</p>
<p>Tetapi dengan cara seperti diatas kita mempermudah pekerjaan designer. Designer dapat menambah atribut &#8211; atribut pada tag html nya dengan leluasa dan bisa melakukan test langsung terlebih dahulu terhadap tampilan dengan menghilangkan display:none, asal tidak menghilangkan nama class dan id yang sudah javascript pakai.</p>
<p>Hal ini hanya contoh kecil, mungkin terasa kurang maksimal penggunaanya, tetapi yang paling bermanfaat pada konsep ini adalah jika kita sedang membuat sesuatu yang lebih kompleks.</p>
<p style="text-align: justify;">Terima Kasih, semoga bermanfaat.</p>
<p style="text-align: justify;">“People Always Forget How Fast We Did A Job, But They Will Remember How well We Did It”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.feelinc.me/experience/trik-mengolah-html-on-the-fly-menggunakan-jquery-json/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
