<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>.::. Hendra Jaya .::.</title>
	<atom:link href="http://hjaya.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hjaya.wordpress.com</link>
	<description>~~ The more you see, the less you know. The more you know, the less you feel ~~</description>
	<lastBuildDate>Wed, 25 Nov 2009 02:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='hjaya.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/19b656f67308e6a38c353b545c504aa9?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>.::. Hendra Jaya .::.</title>
		<link>http://hjaya.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hjaya.wordpress.com/osd.xml" title=".::. Hendra Jaya .::." />
		<item>
		<title>1. Membuat Koneksi Database Pada JDeveloper</title>
		<link>http://hjaya.wordpress.com/2009/11/24/1-membuat-koneksi-database-pada-jdeveloper/</link>
		<comments>http://hjaya.wordpress.com/2009/11/24/1-membuat-koneksi-database-pada-jdeveloper/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 13:12:35 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Oracle JDeveloper]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=542</guid>
		<description><![CDATA[Dalam tutorial pertama ini. Saya mengasumsikan anda telah men-download Oracle JDeveloper.
Environment yang akan kita pakai pada tutorial ini dan pada tutorial Oracle JDeveloper selanjutnya adalah sebagai berikut :
1. OS :  Ubuntu 8.04 &#8211; the Hardy Heron
2. User : poipoi ($HOME = /home/poipoi)
3. Working directory : /home/poipoi/tutorial
4. Jdev location : /home/poipoi/tutorial/jdev
5. JDEV_USER_DIR : /home/poipoi/tutorial/jdevhome via [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=542&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dalam tutorial pertama ini. Saya mengasumsikan anda telah men-download Oracle JDeveloper.</p>
<p>Environment yang akan kita pakai pada tutorial ini dan pada tutorial Oracle JDeveloper selanjutnya adalah sebagai berikut :<br />
1. OS :  Ubuntu 8.04 &#8211; the Hardy Heron<br />
2. User : poipoi ($HOME = /home/poipoi)<br />
3. Working directory : /home/poipoi/tutorial<br />
4. Jdev location : /home/poipoi/tutorial/jdev<br />
5. JDEV_USER_DIR : /home/poipoi/tutorial/jdevhome via perintah &#8220;export JDEV_USER_DIR=/home/poipoi/tutorial/jdevhome&#8221;<br />
6. Database : Oracle 10gR2 Patch 3 (URL : 10.28.1.84:1521/BENOA, SID : ORABALI)</p>
<p>Jika semua proses setting environment berjalan dengan baik dan benar. Kita dapat langsung menjalankan JDeveloper dan akan melihat splash screen seperti ini <img src="http://hjaya.files.wordpress.com/2009/11/splash.gif" alt="Splash Screen JDeveloper" /></p>
<p>Setelah itu kita akan diminta untuk migrasi dari versi JDeveloper sebelumnya <img src="http://hjaya.files.wordpress.com/2009/11/migrate-user-settings.png" alt="Migrate user setting" /><br />
Karena kita belum pernah menggunakan JDeveloper sebelumnya, maka jawablah dengan &#8220;No&#8221;.</p>
<p>Secara default, Oracle JDeveloper akan mengeluarkan tips pada saat startup. Seperti pada gambar ini <img src="http://hjaya.files.wordpress.com/2009/11/tip-of-the-day.png" alt="Tip of The Day" /><br />
Jika kita menemukannya, kita dapat mengabaikannya. Kita dapat juga men-disable fitur ini dengan meng-uncheck checkbox &#8220;Show tips at startup&#8221;</p>
<p>Setelah itu, kita dapat untuk pertama kalinya melihat Oracle JDeveloper secara utuh. Tampilan yang akan kita lihat kira-kira seperti ini <img src="http://hjaya.files.wordpress.com/2009/11/screenshot-oracle-jdeveloper.png" alt="Oracle JDeveloper" /></p>
<p>Setelah kita melihat tampilan seperti itu. Kita dapat mulai untuk mendefinisikan &#8220;connection&#8221;.</p>
<p>Pada Oracle JDeveloper terdapat berbagai macam connection. Beberapa di antaranya adalah Database Connection yang akan kita lakukan pada tutorial ini dan Application Server Connection yang akan berguna pada saat kita men-deploy aplikasi enterprise kita.</p>
<p>Untuk saat ini, kita dapat membuka tab Connection Navigator yang letaknya tepat berada di sebelah kanan Application Navigator.  Setelah membuka tab Connection Navigator, kita akan melihat tampilan lebih kurang seperti ini <img src="http://hjaya.files.wordpress.com/2009/11/connections-navigator.png" alt="Connection Navigator" /></p>
<p>Untuk mendefinisikan sebuah Database Connection, kita dapat dengan mudah melakukan klik kanan pada folder &#8220;Database&#8221; dan memilih opsi &#8220;New Database Connection&#8230;&#8221;</p>
<p>Setelah itu, akan muncul sebuah Wizard yang akan memandu kita untuk membuat sebuah Database Connection.</p>
<p><strong>Step 0</strong> : Welcome Page (tekan tombol &#8220;Next&#8221;)<br />
<img src="http://hjaya.files.wordpress.com/2009/11/create-database-connection.png" alt="Welcome Page" /></p>
<p><strong>Step 1</strong> :  Pada step ini kita diminta untuk memberi nama koneksi database yang akan kita buat serta jenis database yang akan kita tuju. Untuk penamaan, kita dapat memberikan nama apa saja yang kita suka. Dalam tutorial ini, kita akan menggunakan nama &#8220;BENOA&#8221;. Untuk connection type, karena environment kita menggunakan database Oracle, maka &#8220;Connection Type&#8221; yang dipilih adalah Oracle(JDBC). Untuk database lain seperti MySQL, kita dapat memilih &#8220;Third Party JDBC Driver&#8221;.<br />
<img src="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-1-of-4-type.png" alt="Create Database Connection" /></p>
<p><strong>Step 2</strong> : Pada step kedua, kita diminta untuk memberikan user credential untuk Database Connection kita. Credential yang diminta adalah username, password dan role. Isikan dengan benar username dan password kita. Untuk role, jika user database kita adalah user biasa (bukan SYSDBA ataupun SYSOPER) maka kita dapat membiarkannya kosong. Sebagai tips, sebaiknya kita mencentang checkbox &#8220;Deploy Password&#8221; agar di kemudian hari kita tidak diminta ulang untuk mengetikkan password.<br />
<img src="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-2-of-4-authentication.png" alt="Database Authentication" /></p>
<p><strong>Step 3</strong> : Setelah mengisikan username, password, dan role. Kita sekarang diminta untuk memasukkan host/ip address dari server database kita. Untuk environment yang kita pakai pada tutorial kita, database terletak pada alamat 10.28.1.84, port 1521 dan SID-nya ORABALI.  Untuk pilihan Driver, sebaiknya pilih &#8220;thin&#8221; terlebih dahulu untuk menjaga portabilitas dari aplikasi yang nantinya akan kita buat. Bagi para pengguna yang lebih mahir dapat memilih Driver &#8220;oci&#8221;.<br />
<img src="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-3-of-4-connection.png" alt="Connection" /></p>
<p>Catatan bagi pengguna database Oracle XE. Secara default, Oracle XE terinstall di port 1521 dengan SID : XE. Selain itu, biasanya Oracle XE diinstall di localhost. Oleh karena itu, kita dapat memasukkan &#8220;localhost&#8221; atapun &#8220;127.0.0.1&#8243; ke dalam textbox &#8220;Host Name&#8221;. Tetapi jika kita menginstall Oracle XE di komputer lain (selain localhost), maka isikanlah Host Name-nya dengan HostName/IP Address yang bersesuaian.<br />
<img src="http://hjaya.files.wordpress.com/2009/11/xe.png" alt="XE" /></p>
<p><strong>Step 4</strong> : Setelah semua langkah-langkah sebelumnya dilalui, kita sekarang dapat mencoba Database Connection yang baru saja kita buat.<br />
<img src="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-4-of-4-test.png" alt="Test Connection" /></p>
<p>Tekanlah tombol &#8220;Test Connection&#8221;. Jika muncul tulisan &#8220;Success&#8221; berarti koneksi database telah didefinisikan dengan baik dan kita dapat menekan tombol &#8220;Next&#8221; dan wizard akan membawa kita ke halaman penghujung seperti ini<br />
<img src="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-finish.png" alt="Finish" /></p>
<p>Setelah koneksi berhasil didefinisikan dengan baik anda dapat melakukan browse sederhana pada koneksi tersebut seperti pada gambar di bawah ini<br />
<img src="http://hjaya.files.wordpress.com/2009/11/shop.png" alt="Shop" /></p>
<p>Demikian tutorial singkat membuat database connection pada Oracle JDeveloper. Semoga berguna. Jika ada kekurangan/ralat/tambahan/pertanyaan jangan segan-segan memberikan comment.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/542/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=542&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/11/24/1-membuat-koneksi-database-pada-jdeveloper/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/splash.gif" medium="image">
			<media:title type="html">Splash Screen JDeveloper</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/migrate-user-settings.png" medium="image">
			<media:title type="html">Migrate user setting</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/tip-of-the-day.png" medium="image">
			<media:title type="html">Tip of The Day</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-oracle-jdeveloper.png" medium="image">
			<media:title type="html">Oracle JDeveloper</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/connections-navigator.png" medium="image">
			<media:title type="html">Connection Navigator</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/create-database-connection.png" medium="image">
			<media:title type="html">Welcome Page</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-1-of-4-type.png" medium="image">
			<media:title type="html">Create Database Connection</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-2-of-4-authentication.png" medium="image">
			<media:title type="html">Database Authentication</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-3-of-4-connection.png" medium="image">
			<media:title type="html">Connection</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/xe.png" medium="image">
			<media:title type="html">XE</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-step-4-of-4-test.png" medium="image">
			<media:title type="html">Test Connection</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/screenshot-create-database-connection-finish.png" medium="image">
			<media:title type="html">Finish</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/11/shop.png" medium="image">
			<media:title type="html">Shop</media:title>
		</media:content>
	</item>
		<item>
		<title>Geometric Programming</title>
		<link>http://hjaya.wordpress.com/2009/07/02/geometric-programming/</link>
		<comments>http://hjaya.wordpress.com/2009/07/02/geometric-programming/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 08:10:05 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=530</guid>
		<description><![CDATA[Dalam post kali ini, kita akan membahas tentang Geometric Programming yang sederhana-sederhana aja.
  


Sebagai permulaan, kita akan (amat) sangat membutuhkan kelas Point2D (titik). Kelas Point2D kita rancang sebagai berikut:
  
 public final class Point2D implements Serializable, Comparable&#60;Point2D&#62;{
    &#160;&#160;&#160; private static final long serialVersionUID = -6165181156932437469L;
    &#160;&#160;&#160; final [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=530&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dalam post kali ini, kita akan membahas tentang Geometric Programming yang sederhana-sederhana aja.<br />
  
</p>
<ol>
<li>Sebagai permulaan, kita akan (amat) sangat membutuhkan kelas <em>Point2D</em> (titik). Kelas <em>Point2D</em> kita rancang sebagai berikut:<br />
  </p>
<p> <code><strong><span style="color:rgb(127,0,85);">public final class</span></strong> Point2D <strong><span style="color:rgb(127,0,85);">implements</span></strong> Serializable, Comparable&lt;Point2D&gt;{<br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">private static final long</span></strong> <em><span style="color:rgb(0,0,192);">serialVersionUID</span></em> = -6165181156932437469L;<br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">final</span></strong> Double <span style="color:rgb(0,0,192);">x</span>;<br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">final</span></strong> Double <span style="color:rgb(0,0,192);">y</span>;<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public</span></strong> Point2D(<strong><span style="color:rgb(127,0,85);">final double</span></strong> x, <strong><span style="color:rgb(127,0,85);">final double</span></strong> y){<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">this</span></strong>.<span style="color:rgb(0,0,192);">x</span> = x;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">this</span></strong>.<span style="color:rgb(0,0,192);">y</span> = y;<br />
    &nbsp;&nbsp;&nbsp; }<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public</span></strong> Double getX() {<strong><span style="color:rgb(127,0,85);">return</span></strong> <span style="color:rgb(0,0,192);">x</span>;}<br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public</span></strong> Double getY() {<strong><span style="color:rgb(127,0,85);">return</span></strong> <span style="color:rgb(0,0,192);">y</span>;}<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public int</span></strong> hashCode() {<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">final int</span></strong> prime = 31;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">int</span></strong> result = 1;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;result = prime * result + ((<span style="color:rgb(0,0,192);">x</span> == <strong><span style="color:rgb(127,0,85);">null</span></strong>) ? 0 : <span style="color:rgb(0,0,192);">x</span>.hashCode());<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;result = prime * result + ((<span style="color:rgb(0,0,192);">y</span> == <strong><span style="color:rgb(127,0,85);">null</span></strong>) ? 0 : <span style="color:rgb(0,0,192);">y</span>.hashCode());<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">return</span></strong> result;<br />
    &nbsp;&nbsp;&nbsp; }<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public boolean </span></strong>equals(Object obj) {<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (<strong><span style="color:rgb(127,0,85);">this</span></strong> == obj) <strong><span style="color:rgb(127,0,85);">return true</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (obj == <strong><span style="color:rgb(127,0,85);">null</span></strong>) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (getClass() != obj.getClass()) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">final</span></strong> Point2D other = (Point2D) obj;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (<span style="color:rgb(0,0,192);">x</span> == <strong><span style="color:rgb(127,0,85);">null</span></strong>) {<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (other.<span style="color:rgb(0,0,192);">x</span> != <strong><span style="color:rgb(127,0,85);">null</span></strong>) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">else if</span></strong> (!<span style="color:rgb(0,0,192);">x</span>.equals(other.<span style="color:rgb(0,0,192);">x</span>)) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (<span style="color:rgb(0,0,192);">y</span> == <strong><span style="color:rgb(127,0,85);">null</span></strong>) {<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">if</span></strong> (other.<span style="color:rgb(0,0,192);">y</span> != <strong><span style="color:rgb(127,0,85);">null</span></strong>) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">else if</span></strong> (!<span style="color:rgb(0,0,192);">y</span>.equals(other.<span style="color:rgb(0,0,192);">y</span>)) <strong><span style="color:rgb(127,0,85);">return false</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">return true</span></strong>;<br />
    &nbsp;&nbsp;&nbsp; }<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public int</span></strong> compareTo(Point2D p) {<strong><span style="color:rgb(127,0,85);">return</span></strong> <span style="color:rgb(0,0,192);">x</span>.compareTo(p.<span style="color:rgb(0,0,192);">x</span>) == 0 ? (<span style="color:rgb(0,0,192);">y</span>.compareTo(p.<span style="color:rgb(0,0,192);">y</span>)) : (<span style="color:rgb(0,0,192);">x</span>.compareTo(p.<span style="color:rgb(0,0,192);">x</span>));}<br />
    <br />
    &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public</span></strong> String toString(){<strong><span style="color:rgb(127,0,85);">return</span></strong> <span style="color:rgb(0,0,192);">x</span> + <span style="color:rgb(0,0,192);">","</span> + <span style="color:rgb(0,0,192);">y</span>;}<br />
    }&nbsp; </code>
  </p>
</li>
<li>Kemudian kita akan membutuhkan kelas <em>Points</em> yang akan melakukan operasi-operasi geometrik: Letakkan kelas <em>Points</em> pada package yang sama dengan kelas <em>Point2D</em> dan <em>Point3D</em>.<br />
  <br />
  <code><strong><span style="color:rgb(127,0,85);">public final class</span></strong> Points {<br />
  &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public static double</span></strong> calcPolygonArea(Point2D[] points){<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">assert</span></strong>(points.<span style="color:rgb(0,0,192);">length </span>&gt; 2);<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">double</span></strong> result = 0D;<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">for</span></strong> (<strong><span style="color:rgb(127,0,85);">int</span></strong> i = 1; i &lt;= points.<span style="color:rgb(0,0,192);">length</span>; i++)<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result += points[i % points.<span style="color:rgb(0,0,192);">length</span>].<span style="color:rgb(0,0,192);">x</span> * (points[(i+1) % points.<span style="color:rgb(0,0,192);">length</span>].<span style="color:rgb(0,0,192);">y</span> - points[i-1].<span style="color:rgb(0,0,192);">y</span>);<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">return</span></strong> Math.<em>abs</em>(result) / 2;<br />
  &nbsp;&nbsp;&nbsp; }<br />
  <br />
  &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">public static double</span></strong> calcDistanceBetweenTwoPoints(Point2D p1, Point2D p2){<br />
  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">return</span></strong> Math.<em>hypot</em>(p1.<span style="color:rgb(0,0,192);">x</span> - p2.<span style="color:rgb(0,0,192);">x</span>, p1.<span style="color:rgb(0,0,192);">y</span> - p2.<span style="color:rgb(0,0,192);">y</span>);<br />
  &nbsp;&nbsp;&nbsp; }<br />
  }&nbsp; </code><br />
  </li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/530/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=530&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/07/02/geometric-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>Quiz : Tampilkan Kata Demi Kata</title>
		<link>http://hjaya.wordpress.com/2009/06/23/quiz-tampilkan-kata-demi-kata/</link>
		<comments>http://hjaya.wordpress.com/2009/06/23/quiz-tampilkan-kata-demi-kata/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:48:10 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=517</guid>
		<description><![CDATA[Dengan hanya menggunakan


Method indexOf(int) pada String atau overload-nya
Method substring(int) pada String atau overload-nya&#8230;
Satu dan hanya satu kali iterasi, yaitu via while(boolean);

Tampilkan sebuah string kata per kata.
Contoh : 
  public class TampilPerKata {
  &#160; public static void main(String[] args) {
  &#160;&#160;&#160; String kalimat = "mari kita pergi berlibur";
  &#160;&#160;&#160; while (/*code*/) {
 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=517&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dengan hanya menggunakan
</p>
<ol>
<li>Method <code>indexOf(<strong><span style="color:rgb(127,0,85);">int</span></strong>)</code> pada String atau overload-nya</li>
<li>Method <code>substring(<strong><span style="color:rgb(127,0,85);">int</span></strong>)</code> pada String atau overload-nya&#8230;</li>
<li>Satu dan hanya satu kali iterasi, yaitu via <code>while(<strong><span style="color:rgb(127,0,85);">boolean</span></strong>);</code></li>
</ol>
<p>Tampilkan sebuah string kata per kata.</p>
<p>Contoh : <code><br />
  <br /><strong><span style="color:rgb(127,0,85);">public class</span></strong> TampilPerKata {<br />
  &nbsp; <strong><span style="color:rgb(127,0,85);">public static void</span></strong> main(String[] args) {<br />
  &nbsp;&nbsp;&nbsp; String kalimat = <span style="color:rgb(0,0,192);">"mari kita pergi berlibur"</span>;<br />
  &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">while</span></strong> (/*code*/) {<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*code*/<br />
  &nbsp;&nbsp;&nbsp; }<br />
  &nbsp; }<br />
  }</code><br />
  <br />Dan output yang dihasilkan adalah :<br />
  mari<br />
  kita<br />
  pergi<br />
  berlibur
</p>
<p>Catatan : String yang diberikan pasti dalam format yang benar, sehingga tidak perlu validasi lanjut.<br />
  
</p>
<p>Dan inilah jawaban terbaik yang bisa saya berikan :<br />
  <br /><code><strong><span style="color:rgb(127,0,85);">public class</span></strong> TampilPerKata {<br />
  &nbsp; <strong><span style="color:rgb(127,0,85);">public static void</span></strong> main(String... args){<br />
  &nbsp;&nbsp;&nbsp; String kalimat = <span style="color:rgb(0,0,192);">"mari kita pergi berlibur"</span>;<br />
  <br />
  &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">boolean</span></strong> lanjut = true;<br />
  &nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">while</span></strong> (lanjut){<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="color:rgb(127,0,85);">int</span></strong> i = kalimat.indexOf(<span style="color:rgb(0,0,192);">" "</span>);<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong></strong>lanjut = i != -1;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong></strong>System.<em><span style="color:rgb(0,0,192);">out</span></em>.println(lanjut ? kalimat.substring(0, i) : kalimat);<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kalimat = kalimat.substring(i + 1);<br />
  &nbsp;&nbsp;&nbsp; }<br />
  &nbsp; }<br />
  }</code></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/517/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/517/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/517/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=517&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/06/23/quiz-tampilkan-kata-demi-kata/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>BigDecimal, BigInteger dan BigMistake</title>
		<link>http://hjaya.wordpress.com/2009/06/20/bigdecimal-biginteger-dan-bigmistake/</link>
		<comments>http://hjaya.wordpress.com/2009/06/20/bigdecimal-biginteger-dan-bigmistake/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 23:41:52 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=503</guid>
		<description><![CDATA[Harus diakui, judul post kali ini tidak orisinil. Tetapi, judulnya tetap saja menarik dan mungkin post kali ini akan bisa menjelaskan tentang BigMistake ketika kita memakai BigDecimal.
1. BigMistake pertama dalam memakai BigDecimal dan BigInteger adalah : runtime!! No doubt about it. Salah satu pelajaran yang bisa dipetik dari BigMistake ini adalah : Gunakan BigDecimal dan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=503&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Harus diakui, judul post kali ini tidak orisinil. Tetapi, judulnya tetap saja menarik dan mungkin post kali ini akan bisa menjelaskan tentang BigMistake ketika kita memakai <code>BigDecimal</code>.</p>
<p>1. BigMistake pertama dalam memakai <code>BigDecimal</code> dan <code>BigInteger</code> adalah : <em>runtime</em>!! No doubt about it. Salah satu pelajaran yang bisa dipetik dari BigMistake ini adalah : Gunakan <code>BigDecimal</code> dan <code>BigInteger</code> hanya jika diperlukan, sebisa mungkin gunakan <strong><span style="color:#7f0055;">double</span></strong> atau <strong><span style="color:#7f0055;">float</span></strong>. Tetapi, satu yang pasti, untuk perkara duit gunakan <code>BigDecimal</code>.</p>
<p>2. <code>MathContext</code> adalah wajib<br />
Kode program berikut ini akan mengalikan 0.1 dengan 10. Hasil yang seharusnya keluar adalah 1. Tetapi, coba tebak output apa yang akan anda terima?</p>
<p><code><strong><span style="color:#7f0055;">public static void</span></strong> main(String[] args) {<br />
&nbsp;&nbsp;BigDecimal _ZeroPointOne = <strong><span style="color:#7f0055;">new</span></strong> BigDecimal(0.1);<br />
&nbsp;&nbsp;System.<em><span style="color:#0000C0;">out</span></em>.println(_ZeroPointOne.multiply(BigDecimal.<em><span style="color:#0000C0;">TEN</span></em>));<br />
}</code><br />
Alih-alih mendapatkan output 1 atau 1.000 atau yang sejenis, anda akan memperoleh output 1.0000000000000000555111512312578270211815834045410156250.. mengejutkan&#8230;tentu saja.</p>
<p>Untuk mengatasi hal ini, Java sebenarnya sudah menyiapkan solusi, yaitu <b>MathContext</b>. Secara sederhana, <code>MathContext</code> adalah sebuah object yang menentukan setting-setting yang akan dipakai dalam kalkulasi, seperti presisi dan mode pembulatan.</p>
<p>Mari kita lihat output apa yang akan diterima jika kita menggunakan <code>MathContext</code> :</p>
<p><code><strong><span style="color:#7f0055;">public static void</span></strong> main(String[] args) {<br />
&nbsp;&nbsp;MathContext ctx = <strong><span style="color:#7f0055;">new</span></strong> MathContext(10, RoundingMode.<em><span style="color:#0000C0;">HALF_UP</span></em>);<br />
&nbsp;&nbsp;BigDecimal _ZeroPointOne = <strong><span style="color:#7f0055;">new</span></strong> BigDecimal(0.1, ctx);<br />
&nbsp;&nbsp;System.<em><span style="color:#0000C0;">out</span></em>.println(_ZeroPointOne.multiply(BigDecimal.<em><span style="color:#0000C0;">TEN</span></em>, ctx));<br />
}</code><br />
Yap.. ternyata hasil yang diperoleh adalah 1.000000000 .. hasil yang diharapkan tentunya.</p>
<p>Sekarang, apakah kita harus menyediakan sebuah <code>MathContext</code> dalam setiap operasi di <code>BigDecimal</code>. Sebaiknya iya dan sebaiknya <code>MathContext</code> yang dipakai dari awal sampai akhir penggunaan <code>BigDecimal</code> menggunakan context yang sama.</p>
<p>Agar tidak terlalu bingung mempelajari <code>MathContext</code> mungkin ada baiknya kita menggunakan <code>MathContext</code> standard yang sudah disediakan oleh Java. Ada empat buah <code>MathContext</code> yang sudah disediakan, yaitu <b>UNLIMITED</b>, <b>DECIMAL32</b>, <b>DECIMAL64</b> dan <b>DECIMAL128</b>. Sebagai permulaan, gunakanlah <code>MathContext.<em><span style="color:#0000C0;">DECIMAL64</span></em></code></p>
<p>Lantas, bagaimana output yang akan kita peroleh dengan kode program di atas jika menggunakan <code>MathContext</code> DECIMAL64?</p>
<p><code><strong><span style="color:#7f0055;">public static void</span></strong> main(String[] args) {<br />
&nbsp;&nbsp;MathContext ctx = MathContext.<em><span style="color:#0000C0;">DECIMAL64</span></em>;<br />
&nbsp;&nbsp;BigDecimal _ZeroPointOne = <strong><span style="color:#7f0055;">new</span></strong> BigDecimal(0.1, ctx);<br />
&nbsp;&nbsp;System.<em><span style="color:#0000C0;">out</span></em>.println(_ZeroPointOne.multiply(BigDecimal.<em><span style="color:#0000C0;">TEN</span></em>, ctx));<br />
}</code><br />
Hore, kita mendapatkan output 1.000000000000000.. hasil yang diharapkan dengan jumlah angka di belakang koma yang cukup panjang.</p>
<p>Sebagai best practice, gunakan selalu <code>MathContext</code> dalam operasi-operasi perhitungan yang melibatkan <code>BigDecimal</code> dan untuk kebanyakan perhitungan, <code>MathContext.<em><span style="color:#0000C0;">DECIMAL64</span></em></code> sudah sangat mumpuni.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/503/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=503&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/06/20/bigdecimal-biginteger-dan-bigmistake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>Method isPowerOfTwo(long number)</title>
		<link>http://hjaya.wordpress.com/2009/06/20/method-ispoweroftwolong-number/</link>
		<comments>http://hjaya.wordpress.com/2009/06/20/method-ispoweroftwolong-number/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 09:16:02 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=494</guid>
		<description><![CDATA[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024&#8230;
Di atas itu adalah barisan bilangan yang berada dalam bentuk 2n, dimana n = 0, 1, 2, 3.. ; n ε bilangan cacah.
Dan dibawah ini adalah method static untuk memeriksa apakah sebuah bilangan (long) merupakan bilangan 2n :
public static boolean isPowerOfTwo(long number) throws ArithmeticException{
&#160;&#160;if (number [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=494&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024&#8230;</p>
<p>Di atas itu adalah barisan bilangan yang berada dalam bentuk 2<sup>n</sup>, dimana n = 0, 1, 2, 3.. ; n ε bilangan cacah.</p>
<p>Dan dibawah ini adalah method static untuk memeriksa apakah sebuah bilangan (<strong><span style="color:#7f0055;">long</span></strong>) merupakan bilangan 2<sup>n</sup> :</p>
<p><code><strong><span style="color:#7f0055;">public static boolean</span></strong> isPowerOfTwo(<strong><span style="color:#7f0055;">long</span></strong> number) <strong><span style="color:#7f0055;">throws</span></strong> ArithmeticException{<br />
&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (number &lt; 1) <strong><span style="color:#7f0055;">throw new</span></strong> ArithmeticException(<span style="color:#0000C0;">"number must be greater than 0"</span>);<br />
&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> (number &amp; (number - 1)) == 0;<br />
}</code></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/494/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=494&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/06/20/method-ispoweroftwolong-number/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>Toleransi Pattern Pada Kelas DateFormat..</title>
		<link>http://hjaya.wordpress.com/2009/06/19/toleransi-pattern-pada-kelas-simpledateformat/</link>
		<comments>http://hjaya.wordpress.com/2009/06/19/toleransi-pattern-pada-kelas-simpledateformat/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:06:16 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=485</guid>
		<description><![CDATA[Di Java, kita mengenal kelas DateFormat. Kelas ini berfungsi untuk mem-parsing String (dalam pattern tertentu) menjadi Date dan juga sebaliknya.

Secara singkat, kita biasa menggunakan kelas DateFormat seperti ini :
  &#160; public class Main {
  &#160;&#160;&#160; public static void main(String... args) {
  &#160;&#160;&#160;&#160;&#160; String pattern = "yyyyMMdd";
  &#160;&#160;&#160;&#160;&#160; DateFormat dateFormatter = new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=485&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Di Java, kita mengenal kelas <em>DateFormat</em>. Kelas ini berfungsi untuk mem-parsing <em>String</em> (dalam pattern tertentu) menjadi <em>Date</em> dan juga sebaliknya.
</p>
<p>Secara singkat, kita biasa menggunakan kelas <em>DateFormat</em> seperti ini :<br />
  <br /><code><strong><span style="color:rgb(127,0,85);">&nbsp; public class</span></strong> Main {<strong><span style="color:rgb(127,0,85);"><br />
  &nbsp;&nbsp;&nbsp; public static void</span></strong> main(String... args) {<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String pattern = <span style="color:rgb(0,0,192);">"yyyyMMdd"</span>;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateFormat dateFormatter = <strong><span style="color:rgb(127,0,85);">new</span></strong> SimpleDateFormat(pattern);<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String _17_Juni_09 = <span style="color:rgb(0,0,192);">"20090617"</span>;<strong><span style="color:rgb(127,0,85);"></p>
<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></code><code><strong><span style="color:rgb(127,0,85);">try </span></strong></code><code><strong><span style="color:rgb(127,0,85);"></span></strong>{<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<em><span style="color:rgb(0,0,192);">out</span></em>.println(dateFormatter.parse(_17_Juni_09));<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <strong><span style="color:rgb(127,0,85);">catch</span></strong> (ParseException e) {<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
  &nbsp;&nbsp;&nbsp; }<br />
  &nbsp; }</code>
</p>
<p>Ada satu hal menarik yang akan kita bahas dalam kode program di atas. Yaitu <em>ParseException</em>. Secara default, <em>DateFormat</em> akan berusaha sebaik-baiknya untuk mem-parsing parameter yang dikirimkan. Hal ini bisa berakibat baik dan bisa juga berakibat buruk. Sebagai best practice, sebaiknya kita mempelajari keburukan dari <em>toleransi</em> dari <em>DateFormat</em>.
</p>
<p>Contoh 1 : Sebuah <em>String</em> &#8220;20090617&#8243; akan diterjemahkan sebagai 17 Juni 2009 (benar)<br />
  <br />Parameter yang dikirim logically dan physically benar. Logically benar karena tanggal 17 Juni 2009 memang benar-benar &#8216;ada&#8217; dan physically benar karena mengikuti kaedah penulisan tanggal yang benar</p>
<p>Contoh 2 : Sebuah <em>String</em> &#8220;20090635&#8243; akan diterjemahkan sebagai 5 Juli 2009 (bisa benar, bisa salah)<br />
  <br />Parameter yang dikirim logically salah namun physically benar. Logically salah karena tanggal 35 Juni 2009 sebenarnya tidak &#8216;ada&#8217; tetapi physically benar karena mengikuti kaedah penulisan tanggal yang benar.</p>
<p>Contoh 3 : Sebuah <em>String</em> &#8220;200906a7&#8243; akan menghasilkan <em>ParseException</em> (benar)<br />
  <br />Parameter yang dikirim logically salah dan physically salah.
</p>
<p>Pada contoh ke-2, mengapa <em>DateFormat</em> tidak melempar exception?? Karena memang secara default, <em>DateFormat</em> akan mentolerir kesalahan logic dan akan tetap berusaha mem-parsing input yang diberikan.<br />
  <br />Pada contoh ke-3, mengapa <em>DateFormat</em> melempar exception?? Karena input yang dikirim memang tidak bisa diparsing.
</p>
<p>Kesimpulan yang bisa kita tarik sampai saat ini adalah <em>DateFormat</em> secara default hanya akan melempar exception jika data physically salah sehingga proses parsing pasti gagal. Tetapi, bagaimana dengan data yang logically salah?
</p>
<p>Secara default, <em>DateFormat</em> akan mentolerir hal ini dan dengan senang hati mencoba &#8216;membenarkan&#8217; input yang diterima. Pada contoh di atas, tanggal 35 Juni 2009 akan diterjemahkan menjadi 5 Juli 2009. Hal inilah yang bisa berakibat baik dan juga bisa berakibat buruk. Berakibat baik kalau programmer sudah mengerti akan perilaku ini dan memang sengaja membiarkan <em>DateFormat</em> melakukannya.<br />
  <br />Tetapi, kebanyakan coder (bukan programmer) akan terjebak dengan feature ini dan mengira bahwa input yang dikirim tidak bermasalah dan aplikasi berjalan baik-baik saja. Well, memang benar bahwa aplikasi berjalan baik-baik saja&#8230; tetapi ketidak-aware-an para coder akan berakibat fatal pada <em>Business Process</em>.<br />
  <br />Contoh mudah yang bisa kita karang : Misalkan sebuah aplikasi perbankan menjanjikan pembayaran bunga pada tanggal 25 setiap bulannya. Tetapi karena kesalahan ketik, user memasukkan tanggal 35. Karena aplikasi tidak mengeluarkan <em>Exception</em>, data tersebut tersimpan dengan mulus di database dan akibatnya pembayaran bunga molor 10 hari dari yang sudah dijanjikan. Satu atau dua nasabah dengan rekening yang kecil mungkin tidak terlalu ambil pusing. Tetapi bagaimana dengan nasabah dengan rekening yang besar yang memang setiap bulannya menanti-nanti tanggal 25??
</p>
<p>Untuk mengantisipasi hal ini, kita dapat &#8216;meminta&#8217; <em>DateFormat</em> untuk menghilangkan rasa toleransinya. Yaitu dengan menambahkan <code>setLenient(<strong><span style="color:rgb(127,0,85);">false</span></strong>)</code>. Dengan tidak adanya toleransi dari <em>DateFormat</em> maka input &#8220;20090635&#8243; akan ditolak dan aplikasi akan mengeluarkan <em>Exception</em> dan <em>Business Error</em> pun dapat dihindari. Di bawah ini adalah contoh kode program yang menghilangkan rasa toleransi dari <em>DateFormat</em> :<br />
  <br /><code><strong><span style="color:rgb(127,0,85);">&nbsp; public class</span></strong> Main {<strong><span style="color:rgb(127,0,85);"><br />
   &nbsp;&nbsp;&nbsp; public static void</span></strong> main(String... args) {<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String pattern = <span style="color:rgb(0,0,192);">"yyyyMMdd"</span>;<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateFormat dateFormatter = <strong><span style="color:rgb(127,0,85);">new</span></strong> SimpleDateFormat(pattern);<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dateFormatter.setLenient(</code><code><strong><span style="color:rgb(127,0,85);">false</span></strong></code><code>);<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String _35_Juni_09 = <span style="color:rgb(0,0,192);">"20090635"</span>;<strong><span style="color:rgb(127,0,85);"></p>
<p>   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></code><code><strong><span style="color:rgb(127,0,85);">try</span></strong> </code><code><strong><span style="color:rgb(127,0,85);"></span></strong>{<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<em><span style="color:rgb(0,0,192);">out</span></em>.println(dateFormatter.parse(_35_Juni_09));<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <strong><span style="color:rgb(127,0,85);">catch</span></strong> (ParseException e) {<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
   &nbsp;&nbsp;&nbsp; }<br />
   &nbsp; }</code><br />
  </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/485/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/485/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/485/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/485/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/485/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/485/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/485/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/485/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/485/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/485/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=485&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/06/19/toleransi-pattern-pada-kelas-simpledateformat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>ADF Facelet (Quickstart)</title>
		<link>http://hjaya.wordpress.com/2009/03/24/adf-facelet-quickstart/</link>
		<comments>http://hjaya.wordpress.com/2009/03/24/adf-facelet-quickstart/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 03:17:35 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=474</guid>
		<description><![CDATA[
Peroleh file-file berikut (dari http://facelets.dev.java.net):

adf-facelets.jar
jsf-facelets.jar
el-ri.jar
el-api.jar


Libatkan file-file tersebut dalam library JDeveloper, jangan lupa untuk melibatkan 3 (tiga) buah library dari JDeveloper sendiri, yaitu JSP Runtime dan ADF Faces Runtime. Seperti pada gambar di bawah ini :


Tambahkan kode berikut di dalam web.xml :
&#60;context-param&#62;
&#160;&#160;&#60;param-name&#62;oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER&#60;/param-name&#62;
&#160;&#160;&#60;param-value&#62;com.sun.facelets.FaceletViewHandler&#60;/param-value&#62;
&#60;/context-param&#62;


       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=474&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><ol>
<li>Peroleh file-file berikut (dari http://facelets.dev.java.net):
<ul>
<li>adf-facelets.jar</li>
<li>jsf-facelets.jar</li>
<li>el-ri.jar</li>
<li>el-api.jar</li>
</ul>
</li>
<li>Libatkan file-file tersebut dalam library JDeveloper, jangan lupa untuk melibatkan 3 (tiga) buah library dari JDeveloper sendiri, yaitu JSP Runtime dan ADF Faces Runtime. Seperti pada gambar di bawah ini :<br />
<img src="http://hjaya.files.wordpress.com/2009/03/libraries2.png" alt="Libraries" />
</li>
<li>Tambahkan kode berikut di dalam web.xml :<br />
<code><strong><span style="color:#7f0055;">&lt;context-param&gt;<br />
&nbsp;&nbsp;&lt;param-name&gt;</span></strong></code>oracle.adf.view.faces.ALTERNATE_VIEW_HANDLER<code><strong><span style="color:#7f0055;">&lt;/param-name&gt;<br />
&nbsp;&nbsp;&lt;param-value&gt;</span></strong></code>com.sun.facelets.FaceletViewHandler<code><strong><span style="color:#7f0055;">&lt;/param-value&gt;<br />
&lt;/context-param&gt;</span></strong></code>
</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/474/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=474&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2009/03/24/adf-facelet-quickstart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2009/03/libraries2.png" medium="image">
			<media:title type="html">Libraries</media:title>
		</media:content>
	</item>
		<item>
		<title>Konversi integer jadi string</title>
		<link>http://hjaya.wordpress.com/2008/12/18/konversi-integer-jadi-string/</link>
		<comments>http://hjaya.wordpress.com/2008/12/18/konversi-integer-jadi-string/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 09:33:10 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=465</guid>
		<description><![CDATA[Program berikut ini akan mengonversi int menjadi String.
Contohnya :

5 : lima
72 : tujuh puluh dua
341 : tiga ratus empat puluh satu
9999 : sembilan ribu sembilan ratus sembilan puluh sembilan
1000 : seribu
11 : sebelas
6523409 : enam juta lima ratus dua puluh tiga ribu empat ratus sembilan

Saya kira tidak perlu teori yang bermacam-macam, langsung saja kita lihat [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=465&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Program berikut ini akan mengonversi <em>int</em> menjadi <em>String</em>.</p>
<p>Contohnya :</p>
<ul>
<li>5 : lima</li>
<li>72 : tujuh puluh dua</li>
<li>341 : tiga ratus empat puluh satu</li>
<li>9999 : sembilan ribu sembilan ratus sembilan puluh sembilan</li>
<li>1000 : seribu</li>
<li>11 : sebelas</li>
<li>6523409 : enam juta lima ratus dua puluh tiga ribu empat ratus sembilan</li>
</ul>
<p>Saya kira tidak perlu teori yang bermacam-macam, langsung saja kita lihat contoh programnya :</p>
<p><code><strong><span style="color:#7f0055;">public class</span></strong> Say {<br />
&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static</span></strong> String convert(<strong><span style="color:#7f0055;">int</span></strong> angka) <strong><span style="color:#7f0055;">throws</span></strong> Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">assert</span></strong> angka &gt;= 0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 0) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"nol"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 1) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"satu"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 2) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"dua"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 3) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"tiga"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 4) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"empat"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 5) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"lima"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 6) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"enam"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 7) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"tujuh"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 8 ) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"delapan"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 9) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"sembilan"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 10) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"sepuluh"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 11) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"sebelas"</span>;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 20) <strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka - 10) + <span style="color:#0000C0;">" belas"</span>;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 100){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka % 10 &gt; 0) <strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka / 10) + <span style="color:#0000C0;">" puluh "</span> + <em>convert</em>(angka % 10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">else return</span></strong> <em>convert</em>(angka / 10) + <span style="color:#0000C0;">" puluh"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 100) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"seratus"</span>;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 200) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"seratus "</span> + <em>convert</em>(angka - 100);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 1000){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka % 100 &gt; 0) <strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka / 100) + <span style="color:#0000C0;">" ratus "</span> + <em>convert</em>(angka % 100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">else return</span></strong> <em>convert</em>(angka / 100) + <span style="color:#0000C0;">" ratus"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka == 1000) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"seribu"</span>;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 2000) <strong><span style="color:#7f0055;">return</span></strong> <span style="color:#0000C0;">"seribu "</span> + <em>convert</em>(angka - 1000);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 1000000){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka % 1000 &gt; 0) <strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka / 1000) + <span style="color:#0000C0;">" ribu "</span> + <em>convert</em>(angka % 1000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">else return</span></strong> <em>convert</em>(angka / 1000) + <span style="color:#0000C0;">" ribu"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt; 1000000000){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka % 1000000 &gt; 0) <strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka / 1000000) + <span style="color:#0000C0;">" juta "</span> + <em>convert</em>(angka % 1000000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">else return</span></strong> <em>convert</em>(angka / 1000000) + <span style="color:#0000C0;">" juta"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka &lt;= 2147483647){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> (angka % 1000000000 &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> <em>convert</em>(angka / 1000000000) + <span style="color:#0000C0;">" milyar "</span> + <em>convert</em>(angka % 1000000000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">else return</span></strong> <em>convert</em>(angka / 1000000000) + <span style="color:#0000C0;">" milyar"</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">throw new</span></strong> Exception(<span style="color:#0000C0;">"Not Supported Yet"</span>);<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static void</span></strong> main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">try</span></strong> {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<em><span style="color:#0000C0;">out</span></em>.println(Say.<em>convert</em>(2147483647));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">catch</span></strong> (Exception e) {System.<em><span style="color:#0000C0;">out</span></em>.println(e.getMessage());}<br />
&nbsp;&nbsp;}<br />
}</code></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/465/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=465&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2008/12/18/konversi-integer-jadi-string/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>Insertion Sort</title>
		<link>http://hjaya.wordpress.com/2008/12/15/insertion-sort/</link>
		<comments>http://hjaya.wordpress.com/2008/12/15/insertion-sort/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 09:32:45 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Sorting Algorithm]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=451</guid>
		<description><![CDATA[Pada prinsipnya, Insertion Sort mengambil suatu elemen dari array lalu &#8220;menyisipkannya&#8221; di tempat yang benar. Proses dilakukan terus menerus sampai seluruh elemen telah berada di tempat yang benar.
Coba perhatikan ilustrasi di bawah ini..
( 5 1 4 2 8 ) -&#62; ( 1 5 4 2 8 ) karena 5 &#62; 1
( 1 5 4 2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=451&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Pada prinsipnya, Insertion Sort mengambil suatu elemen dari array lalu &#8220;menyisipkannya&#8221; di tempat yang benar. Proses dilakukan terus menerus sampai seluruh elemen telah berada di tempat yang benar.</p>
<p>Coba perhatikan ilustrasi di bawah ini..</p>
<p>( 5 <strong>1</strong> 4 2 8 ) -&gt; ( 1 5 4 2 8 ) karena 5 &gt; 1<br />
( 1 5 <strong>4</strong> 2 8 ) -&gt; ( 1 4 5 2 8 ) karena 5 &gt; 4<br />
( 1 4 5 <strong>2</strong> 8 ) -&gt; ( 1 4 2 5 8 ) karena 5 &gt; 2, -&gt; ( 1 2 4 5 8 ) karena 4 &gt; 2<br />
( 1 2 4 5 <strong>8</strong> ) -&gt; ( 1 2 4 5 8 ) </p>
<p>Berikut ini saya sediakan implementasi dari Insertion Sort dalam java :</p>
<p><code><strong><span style="color:#7f0055;">public class</span></strong> Sort {<br />
&nbsp;&nbsp;<strong><span style="color:#7f0055;">private</span></strong> Sort(){}</p>
<p>&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static</span></strong> &lt;T <strong><span style="color:#7f0055;">extends</span></strong> Comparable&gt; T[] insertion(T[] arr, <strong><span style="color:#7f0055;">boolean</span></strong> isAscending){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> i = 1; i &lt; arr.<span style="color:#0000C0;">length</span>; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">int</span></strong> j = i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T t = arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">while</span></strong> ((j &gt; 0) &amp;&amp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isAscending &amp;&amp; (arr[j - 1].compareTo(t) &gt; 0)  ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!isAscending &amp;&amp; (arr[j - 1].compareTo(t) &lt; 0))) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j] = arr[j - 1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j] = t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> arr;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static</span></strong>  T[] insertion(T[] arr, Comparator comparator, <strong><span style="color:#7f0055;">boolean</span></strong> isAscending){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> i = 1; i &lt; arr.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">int</span></strong> j = i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T t = arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">while</span></strong> ((j &gt; 0) &amp;&amp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isAscending &amp;&amp; (comparator.compare(arr[j - 1], t) &gt; 0)  ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!isAscending &amp;&amp; (comparator.compare(arr[j - 1], t) &lt; 0))) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j] = arr[j - 1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j] = t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> arr;<br />
&nbsp;&nbsp;}<br />
}</code></p>
<p>Untuk eksekusi kode di atas, silahkan lihat post Bubble Sort.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/451/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/451/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/451/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=451&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2008/12/15/insertion-sort/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>
	</item>
		<item>
		<title>Selection Sort</title>
		<link>http://hjaya.wordpress.com/2008/12/14/selection-sort/</link>
		<comments>http://hjaya.wordpress.com/2008/12/14/selection-sort/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 13:49:16 +0000</pubDate>
		<dc:creator>hjaya</dc:creator>
				<category><![CDATA[Sorting Algorithm]]></category>

		<guid isPermaLink="false">http://hjaya.wordpress.com/?p=298</guid>
		<description><![CDATA[Prinsip utama dari Selection Sort adalah mencari nilai terkecil dari suatu array dan menempatkannya sebagai elemen yang paling depan dengan cara menukar elemen tersebut dengan elemen yang paling depan. Setelah ditempatkan di paling depan, algoritma kembali melakukan iterasi, tetapi kali elemen yang paling depan tidak diikutkan karena sudah &#8220;terurut&#8221; dengan baik. Begitu seterusnya..
Untuk mode descending, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=298&subd=hjaya&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Prinsip utama dari Selection Sort adalah mencari nilai terkecil dari suatu array dan menempatkannya sebagai elemen yang paling depan dengan cara menukar elemen tersebut dengan elemen yang paling depan. Setelah ditempatkan di paling depan, algoritma kembali melakukan iterasi, tetapi kali elemen yang paling depan tidak diikutkan karena sudah &#8220;terurut&#8221; dengan baik. Begitu seterusnya..</p>
<blockquote><p>Untuk mode <em>descending</em>, nilai yang dicari adalah nilai terbesar.</p></blockquote>
<p>Untuk lebih jelasnya silahkan perhatikan dua buah ilustrasi di bawah ini (ascending)</p>
<ol>
<li>Ilustrasi dengan angka (dari Wikipedia)
<p>( <em>5</em> <strong>1</strong> 4 2 8 ) -&gt; ( <strong>1</strong> <em>5</em> 4 2 8 ) Nilai min : 1, Target pertukaran : 5<br />
( 1 <em>5</em> 4 <strong>2</strong> 8 ) -&gt; ( 1 <strong>2</strong> 4 <em>5</em> 8 ) Nilai min : 2, Target pertukaran : 5<br />
( 1 2 <strong><em>4</em></strong> 5 8 ) -&gt; ( 1 2 <strong><em>4</em></strong> 5 8 ) Nilai min : 4, Target pertukaran : 4<br />
( 1 2 4 <strong><em>5</em></strong> 8 ) -&gt; ( 1 2 4 <strong><em>5</em></strong> 8 ) Nilai min : 5, Target pertukaran : 5</p>
</li>
<li>Ilustrasi dengan gambar (refresh browser anda jika gambar tidak bergerak)
<p><img src="http://hjaya.files.wordpress.com/2008/12/selection-sort-animation.gif" />
</li>
</ol>
<p>Berikut ini saya sediakan implementasi Selection Sort dalam Java..</p>
<p><code><strong><span style="color:#7f0055;">public class</span></strong> Sort {<br />
&nbsp;&nbsp;<strong><span style="color:#7f0055;">private</span></strong> Sort(){}</p>
<p>&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static</span></strong> &lt;T <strong><span style="color:#7f0055;">extends</span></strong> Comparable&gt; T[] selection(T[] arr, <strong><span style="color:#7f0055;">boolean</span></strong> isAscending){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> i = 0; i &lt; arr.<span style="color:#0000C0;">length</span> - 1; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">int</span></strong> min = i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> j = i + 1; j &lt; arr.<span style="color:#0000C0;">length</span>; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> ((isAscending &amp;&amp; (arr[min].compareTo(arr[j]) &gt; 0)) ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(!isAscending &amp;&amp; (arr[min].compareTo(arr[j]) &lt; 0)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min = j;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T t = arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i] = arr[min];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[min] = t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> arr;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;<strong><span style="color:#7f0055;">public static</span></strong>  T[] selection(T[] arr, Comparator comparator, <strong><span style="color:#7f0055;">boolean</span></strong> isAscending){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> i = 0; i &lt; arr.<span style="color:#0000C0;">length</span> - 1; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">int</span></strong> min = i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">for</span></strong> (<strong><span style="color:#7f0055;">int</span></strong> j = i + 1; j &lt; arr.<span style="color:#0000C0;">length</span>; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">if</span></strong> ((isAscending &amp;&amp; (comparator.compare(arr[min], arr[j]) &gt; 0)) ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(!isAscending &amp;&amp; (comparator.compare(arr[min], arr[j]) &lt; 0)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min = j;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T t = arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i] = arr[min];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[min] = t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color:#7f0055;">return</span></strong> arr;<br />
&nbsp;&nbsp;}<br />
}</code></p>
<p>Untuk eksekusi kode di atas, silahkan lihat post Bubble Sort.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hjaya.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hjaya.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hjaya.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hjaya.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hjaya.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hjaya.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hjaya.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hjaya.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hjaya.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hjaya.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hjaya.wordpress.com&blog=5640339&post=298&subd=hjaya&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hjaya.wordpress.com/2008/12/14/selection-sort/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/54705fdb2818e4075593dc29ee9f905f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hjaya</media:title>
		</media:content>

		<media:content url="http://hjaya.files.wordpress.com/2008/12/selection-sort-animation.gif" medium="image" />
	</item>
	</channel>
</rss>