<?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>GAIBlog</title>
	<atom:link href="http://pebbie.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pebbie.wordpress.com</link>
	<description>weblog Grafika dan Intelejensia Buatan (GAIB)</description>
	<lastBuildDate>Sun, 01 Nov 2009 16:15:48 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>id</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='pebbie.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5b4a1b01c2abacd36afb4a5c6575a479?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>GAIBlog</title>
		<link>http://pebbie.wordpress.com</link>
	</image>
			<item>
		<title>Ant Colony Optimization for Capacitated Minimum Spanning Tree Problem</title>
		<link>http://pebbie.wordpress.com/2009/11/01/ant-colony-optimization-for-capacitated-minimum-spanning-tree-problem/</link>
		<comments>http://pebbie.wordpress.com/2009/11/01/ant-colony-optimization-for-capacitated-minimum-spanning-tree-problem/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 16:15:48 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[academic]]></category>
		<category><![CDATA[soft computing]]></category>
		<category><![CDATA[aco]]></category>
		<category><![CDATA[ant colony optimization]]></category>
		<category><![CDATA[cmst]]></category>
		<category><![CDATA[minimum spanning tree]]></category>
		<category><![CDATA[mst]]></category>
		<category><![CDATA[or library]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=371</guid>
		<description><![CDATA[Minggu uts baru saja lewat. Salah satu yang berkesan selama ujian kemarin adalah mata kuliah intelejensia kolektif. Ujiannya sebetulnya sederhana, hanya me-review sebuah paper, dengan catatan mencoba mengimplementasikan apa yang disampaikan paper tersebut dalam waktu satu minggu (sambil ada uts yang lain juga, hehe). Kebetulan saya mendapat paper yang isinya tidak terlalu sulit untuk diimplementasikan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=371&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify">Minggu uts baru saja lewat. Salah satu yang berkesan selama ujian kemarin adalah mata kuliah intelejensia kolektif. Ujiannya sebetulnya sederhana, hanya me-review sebuah paper, dengan catatan mencoba mengimplementasikan apa yang disampaikan paper tersebut dalam waktu satu minggu (sambil ada uts yang lain juga, hehe). Kebetulan saya mendapat paper yang isinya tidak terlalu sulit untuk diimplementasikan dalam artian tidak membutuhkan spesifikasi konfigurasi tertentu (mis. simulasi, jaringan komputer, atau framework parallel programming). Paper yang saya review adalah &#8220;<a href="http://iridia.ulb.ac.be/~msampels/hm2004/proceedings/p01.pdf">A Hybrid ACO algorithm for the capacitated Minimum Spanning Tree Problem</a>&#8220;, oleh Marc Reimann dari ETHZ.</p>
<p><span id="more-371"></span></p>
<p align="justify">Singkat kata, ada dua buah topik yang terlibat di sini. Pertama adalah algoritma ACO (<a href="http://en.wikipedia.org/wiki/Ant_colony_optimization">Ant Colony Optmization</a>) yaitu algoritma optimasi yang terinspirasi dari perilaku semut dalam mencari makanan. Berdasarkan hasil pengamatan, jalur yang dilalui oleh semut (dari sarang ke lokasi makanan) jika makanan ditemukan merupakan jalur yang terpendek (<em>shortest path</em>). Semut itu sendiri bergerak secara acak namun saling berkomunikasi a la pramuka dengan memanfaatkan jejak zat kimia bernama feromon. Jika makanan ditemukan maka semut tersebut akan meninggalkan feromon dalam perjalanan pulang ke sarang. feromon ini akan menguap seiring dengan waktu namun akan diperkuat jika ditambahkan oleh semut lainnya. Walaupun di awal dinyatakan bahwa semut bergerak secara acak namun dengan adanya media komunikasi berupa feromon, semut tersebut memiliki kecenderungan lebih tinggi untuk memilih jalan yang aroma feromonnya lebih kuat.</p>
<p align="justify">Topik kedua yaitu persoalan <a href="http://en.wikipedia.org/wiki/Capacitated_minimum_spanning_tree">capacitated minimum spanning tree</a>. Sejujurnya, baru kali itu saya mengetahui tentang persoalan tsb. Kalau persoalan <a href="http://en.wikipedia.org/wiki/Minimum_spanning_tree">minimum spanning tree</a> tentu sudah pernah dengar dari kuliah matematika diskret di awal S1. Nah, kalau ditambah batasan tambahan? Ternyata setelah browsing sana-sini dan <em>melototin</em> papernya sambil begadang, lama kelamaan ngerti juga. Ternyata adanya batasan &#8216;<em>capacitated</em>&#8216; itu maksudnya adalah jika ada satu <em>node</em> yang dipastikan akan menjadi akar pohon dan tiap <em>node</em> lainnya punya nilai <em>demand</em> maka untuk tiap sub-pohon yang terhubung ke node akar tidak boleh melebihi nilai konstanta kapasitas untuk persoalan tersebut. ketika nilai demand dari tiap node merupakan nilai satuan, maka kapasitasnya secara sederhana berarti tiap sub-pohon hanya boleh mengandung node paling banyak senilai konstanta kapasitas.</p>
<p align="justify">Di paper tersebut, persoalan CMST diceritakan sebagai relaksasi dari persoalan Capacitated Vehicle Routing Problem. Untuk menyelesaikan persoalan ini langkah yang dilakukan antara lain pengelompokan node (<em>node clustering</em>), pertukaran node antar kelompok (<em>local search</em>), dan terakhir mencari MST untuk tiap kelompok menggunakan algoritma Prim. Adapun letak penggunaan algoritma ACO adalah pada pengelompokan node. Pembentukan kelompok node dilakukan sedemikian rupa sehingga ketika menggabungkan dua buah kelompok menjadi kelompok baru batasan kapasitasnya tetap terpenuhi. Pemodelan jalur semut atau pengambilan keputusan terletak pada menentukan kelompok mana yang akan digabung menjadi kelompok baru. Salah satu kriterianya adalah nilai saving yang dinyatakan sebagai nilai penghematan jika dua buah cluster digabung menjadi satu. kriteria ini digabung dengan distribusi feromon dalam ruang keputusan yang jumlah pilihannya dibatasi membentuk distribusi peluang (<em>probability density function</em>) yang dimanfaatkan untuk mengambil keputusan secara acak.</p>
<p align="justify">Langkah berikutnya adalah pertukaran antar node di satu kelompok dengan node di kelompok lain. Karena tidak dijelaskan lebih lanjut mengenai kriteria dampak penukaran dua buah node dan kalaupun menggunakan nilai saving saya hampir tidak menemukan perbedaan dengan langkah sebelumnya, saya tidak mengimplementasi langkah ini dan lanjut ke algoritma prim. Sebagai percobaan, sampel data kasus diambil dari <a href="http://people.brunel.ac.uk/~mastjjb/jeb/orlib/capmstinfo.html">OR Library</a>. Berbeda dari paper tersebut yang membandingkan algoritma versi ACO dengan algoritma metaheuristik lain (Tabu Search dan Evolutionary), dalam percobaan yang saya lakukan solusi dibandingkan dengan solusi upper bound (karena persoalannya minimasi) yaitu tiap node terhubung ke node akar. Berdasarkan hasil percobaan menggunakan kasus tc80 solusi yang dihasilkan algoritma ACO yang saya implementasi berhasil mengurangi total cost sebesar 80% (biaya solusi &lt; 20% biaya asal) dari nilai upper bound tersebut.</p>
<p align="justify">Program tsb saya implementasikan menggunakan delphi. Namun, sepertinya implementasi versi saya masih termasuk lambat (mungkin karena ada banyak operasi set, konversi string, dan array dinamik). Jadinya ketika mengikuti parameter di paper tersebut, untuk kasus di atas (80 node+1 node akar) perlu waktu rata-rata 20 menit (80 semut, 800 iterasi yang ditotal jadi 16000 percobaan) padahal setelah 200an iterasi hampir tidak lagi ditemukan solusi yang lebih baik dan sepertinya tidak perlu semut sebanyak itu untuk simulasi (10 semut sepertinya cukup walau untuk konvergen ke solusi terbaik ada di iterasi 250an). </p>
<p align="justify">Sebetulnya sebelum uts ini hal serupa (mengimplementasi dan mereview paper) juga dilakukan dan topik yang saya pilih mengenai <em>contour correspondence</em> yang dimodelkan menjadi persoalan <em>Quadratic Assignment Problem</em>. Tapi sepertinya lebih enak membahas yang ini dulu, hehehe</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=371&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/11/01/ant-colony-optimization-for-capacitated-minimum-spanning-tree-problem/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Flood Fill on 3D Image</title>
		<link>http://pebbie.wordpress.com/2009/10/24/flood-fill-on-3d-image/</link>
		<comments>http://pebbie.wordpress.com/2009/10/24/flood-fill-on-3d-image/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 07:19:51 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[academic]]></category>
		<category><![CDATA[computer graphics]]></category>
		<category><![CDATA[image processing]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=368</guid>
		<description><![CDATA[Flood Fill merupakan teknik mengarsir yang menggunakan analogi menuangkan cat warna di satu titik yang kemudian cat tersebut akan bergerak meluas hingga merata (menutupi seluruh area yang dibatasi). cat akan meluberi daerah yang memiliki predikat sama (warna yang sama, atau bukan warna tertentu). Adapun jika digunakan predikat bukan warna tertentu maka dikenal sebagai variannya yaitu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=368&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>Flood Fill</em> merupakan teknik mengarsir yang menggunakan analogi menuangkan cat warna di satu titik yang kemudian cat tersebut akan bergerak meluas hingga merata (menutupi seluruh area yang dibatasi). cat akan meluberi daerah yang memiliki predikat sama (warna yang sama, atau bukan warna tertentu). Adapun jika digunakan predikat bukan warna tertentu maka dikenal sebagai variannya yaitu <em>boundary fill</em>. titik awal warna dituang dinamakan dengan titik bakar. </p>
<p>Pada kuliah grafika komputer, dan buku teksnya. Algoritma Floodfill dideskripsikan secara rekursif sbb</p>
<pre class="brush: delphi;">
{menggunakan predikat warna sama dengan warna titik bakar}
procedure floodfill(p:point, i:image; newcolor:color);
var
   oldcolor : color;
begin
   oldcolor := i.pixel[p.x][p.y];
   i.pixel[p.x][p.y] := newcolor;
   {i.pixel[neighbor.x][neighbor.y]=oldcolor merupakan predikat sebagai syarat rekurens}
   {tetangga kiri}
   if (p.x &gt; i.left_bound) and (i.pixel[p.x-1][p.y]=oldcolor) then floodfill(point(p.x-1, p.y), i, newcolor);
  {tetangga kanan}
  if (p.x &lt; i.right_bound) and (i.pixel[p.x+1][p.y]=oldcolor) then floodfill(point(p.x+1, p.y), i, newcolor);
  {tetangga atas}
  if (p.y &gt; i.top_bound) and (i.pixel[p.x][p.y-1]=oldcolor) then floodfill(point(p.x, p.y-1), i, newcolor);
  {tetangga bawah}
  if (p.y &lt; i.bottom_bound) and (i.pixel[p.x][p.y+1]=oldcolor) then floodfill(point(p.x, p.y+1), i, newcolor);
end;
</pre>
<p>Algoritma di atas merupakan contoh generik untuk citra 2D. Untuk citra 3D algoritma di atas dapat diperluas dengan ekspresi yang sama, yang berbeda hanyalah rekursif tetangganya yang bertambah yaitu tetangga depan dan tetangga belakang.  </p>
<pre class="brush: delphi;">
{menggunakan predikat warna sama dengan warna titik bakar}
procedure floodfill(p:point3d, i:image; newcolor:color);
var
   oldcolor : color;
begin
   oldcolor := i.pixel[p.x][p.y][p.z];
   i.pixel[p.x][p.y][p.z] := newcolor;
   {i.pixel[neighbor.x][neighbor.y][neighbor.z]=oldcolor merupakan predikat sebagai syarat rekurens}
   {tetangga kiri}
   if (p.x &gt; i.left_bound) and (i.pixel[p.x-1][p.y][p.z]=oldcolor) then floodfill(point(p.x-1, p.y,p.z), i, newcolor);
  {tetangga kanan}
  if (p.x &lt; i.right_bound) and (i.pixel[p.x+1][p.y][p.z]=oldcolor) then floodfill(point(p.x+1, p.y,p.z), i, newcolor);
  {tetangga atas}
  if (p.y &gt; i.top_bound) and (i.pixel[p.x][p.y-1][p.z]=oldcolor) then floodfill(point(p.x, p.y-1,p.z), i, newcolor);
  {tetangga bawah}
  if (p.y &lt; i.bottom_bound) and (i.pixel[p.x][p.y+1][p.z]=oldcolor) then floodfill(point(p.x, p.y+1,p.z), i, newcolor);
  {tetangga depan}
  if (p.z &gt; i.front_bound) and (i.pixel[p.x][p.y][p.z-1]=oldcolor) then floodfill(point(p.x, p.y,p.z-1), i, newcolor);
  {tetangga belakang}
  if (p.z &lt; i.rear_bound) and (i.pixel[p.x][p.y][p.z+1]=oldcolor) then floodfill(point(p.x, p.y,p.z+1), i, newcolor);
end;
</pre>
<p>algoritma rekursif memang memiliki ekspresi yang sederhana namun seringkali implementasinya terganggu dengan pesan <em>stack overflow</em> yang diakibatkan ukuran stack di <em>heap</em> untuk <em>procedure call</em> yang terbatas. Hal ini dapat diatasi dengan mengubah algoritma di atas menjadi iteratif dan mensimulasikan stack sebagai struktur data eksternal. Apakah kedua hal tersebut sudah cukup? tentu belum, jika mekanisme mencari tetangganya sama persis dengan algoritma rekursif di atas maka justru algoritma versi iteratif lebih buruk performanya. Kita perlu mengoptimasi pencarian tetangga sehingga ukuran untuk stack dapat dikurangi.<br />
<span id="more-368"></span><br />
Untuk mengurangi pengisian stack tersebut kita dapat mengubah ide dari algoritma di atas dengan cara memusatkan perhatian pada tetangga yang berada di satu sumbu. Misalkan kita perhatikan di sumbu vertikal (sumbu Y), maka kita akan mendapatkan sebuah rentang minimum-maksimum yang memiliki predikat sama. Rentang ini kemudian ditelusuri. Selama menelusuri rentang tersebut, barulah kita memperhatikan tetangga di sumbu lainnya (sumbu X). Karena kita secara konstan menelusuri rentang vertikal maka kita cukup memperhatikan perubahan di tetangga. Kita hanya perlu menyimpan ke stack, tetangga yang baru kita temukan pertama. Tetangga yang letaknya di bawah tetangga tersebut jika memiliki predikat yang sama tidak perlu disimpan karena pasti dikunjungi ketika titik tersebut diproses pertama kali secara vertikal.</p>
<p>Algoritma tersebut diekspresikan dalam kode berikut:</p>
<pre class="brush: delphi;">
{menggunakan predikat warna sama dengan warna titik bakar}
procedure floodfill(p:point3d, i:image; newcolor:color);
var
   oldcolor : color;
   stpt : stack;// stack of point3d;
   pt : point3d;
   y1, y2, yy : integer;
   span_left, span_right, span_front, span_rear: boolean;
begin
   oldcolor := i.pixel[p.x][p.y];
   stpt.push(p.x,p.y,p.z);
   while not stpt.is_empty() do begin
      pt := stpt.pop();
      y1 := pt.y;
      while (y1 &gt; i.top_bound) and (i.pixel[pt.x][y1-1][pt.z]=oldcolor) do dec(y1);
      y2 := pt.y;
      while (y2 &lt; i.bottom_bound) and (i.pixel[pt.x][y1+1][pt.z]=oldcolor) do inc(y2);
      span_left := false;
      span_right := false;
      span_front := false;
      span_rear := false;
      for yy := y1 to y2 do begin
         if (pt.x &gt; i.left_bound) then begin
            if not span_left and (i.pixel[pt.x-1][yy][pt.z]=oldcolor) then begin
               span_left := true;
               stpt.push(pt.x-1, yy, pt.z);
            end else if span_left and not (i.pixel[pt.x-1][yy][pt.z]=oldcolor) then span_left := false;
         end;
         if (pt.x &lt; i.right_bound) then begin
            if not span_right and (i.pixel[pt.x+1][yy][pt.z]=oldcolor) then begin
               span_right := true;
               stpt.push(pt.x+1, yy, pt.z);
            end else if span_right and not (i.pixel[pt.x+1][yy][pt.z]=oldcolor) then span_right := false;
         end;
         if (pt.z &gt; i.front_bound) then begin
            if not span_front and (i.pixel[pt.x][yy][pt.z-1]=oldcolor) then begin
               span_front := true;
               stpt.push(pt.x, yy, pt.z-1);
            end else if span_front and not (i.pixel[pt.x][yy][pt.z-1]=oldcolor) then span_front := false;
         end;
         if (pt.z &lt; i.rear_bound) then begin
            if not span_rear and (i.pixel[pt.x][yy][pt.z+1]=oldcolor) then begin
               span_rear := true;
               stpt.push(pt.x, yy, pt.z+1);
            end else if span_rear and not (i.pixel[pt.x][yy][pt.z+1]=oldcolor) then span_rear := false;
         end;
         i.pixel[pt.x][yy][pt.z] := newcolor;
      end;
   end;
end;
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/368/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=368&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/10/24/flood-fill-on-3d-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Generation for Software Maintenance</title>
		<link>http://pebbie.wordpress.com/2009/10/20/code-generation-for-software-maintenance/</link>
		<comments>http://pebbie.wordpress.com/2009/10/20/code-generation-for-software-maintenance/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 21:23:53 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[academic]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[combinatorial optimization]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[domain spesific language]]></category>
		<category><![CDATA[human computer interaction]]></category>
		<category><![CDATA[model driven architecture]]></category>
		<category><![CDATA[natural language processing]]></category>
		<category><![CDATA[software maintenance]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=364</guid>
		<description><![CDATA[Sebetulnya UTS hari ini (jam 9 nanti) tentang intelejensia kolektif yang bahannya tentang EA (evolutionary algorithm) dan ACO (ant colony optimization), tapi yang dibaca sebelum tidur malah buku Practical Software Maintenance-nya Tom Pigoski. Kebetulan memang untuk kuliah pengujian perangkat lunak kebagian bab tentang testing pada saat maintenance. Baru baca bab-bab awal. Persepsi awal tentang isinya [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=364&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sebetulnya UTS hari ini (jam 9 nanti) tentang intelejensia kolektif yang bahannya tentang EA (<em>evolutionary algorithm</em>) dan ACO (<em>ant colony optimization</em>), tapi yang dibaca sebelum tidur malah buku Practical Software Maintenance-nya Tom Pigoski. Kebetulan memang untuk kuliah pengujian perangkat lunak kebagian bab tentang testing pada saat maintenance. Baru baca bab-bab awal. Persepsi awal tentang isinya lumayan menarik sambil merefleksikan masa-masa yang pernah dialami (sebetulnya istilah pengalaman lebih singkat tapi punya makna konotasi yang bisa baik bisa juga jelek <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ).  </p>
<p>Singkat kata, dari bacaan awal bisa diceritakan bahwa perawatan (padanan untuk <em>maintenance</em>) seringkali memiliki banyak interpretasi. Perawatan bisa jadi merupakan pengeluaran yang kecil dibanding biaya pengembangan atau justru menjadi pengeluaran utama dibanding biaya pengembangan. Interpretasi pertama dicirikan dengan adanya alokasi sekitar 10% untuk &#8216;<em>support &amp; maintenance</em>&#8216;, sedangkan interpretasi kedua mengalokasikan 80% untuk hal tersebut. Pertanyaan pertama yang muncul adalah &#8220;Yang mana yang lebih baik? untuk <em>developer, maintaine</em>r, dan <em>customer</em>&#8221; (pengguna dibedakan dengan <em>customer</em> dan dikesampingkan dulu karena berdasarkan buku tsb, tersangka utama penyedot biaya perawatan adalah pengguna). </p>
<p>Pihak yang melakukan perawatan pun bisa jadi bukan pengembang perangkat lunak awal melainkan pihak lain yang mengkhususkan diri di bidang perawatan perangkat lunak (itu cerita di bukunya dengan situasi di US, kalau di Indonesia ada tidak <em>yah</em> (organisasi spesialis perawatan)?).</p>
<p>Sebelum mencoba menjawab pertanyaan di atas, cerita lain tentang isi buku tsb adalah bahwa aktivitas yang dilakukan dalam proses perawatan bisa digolongkan menjadi 3 kelompok, yaitu:</p>
<ul>
<li><em>corrective</em></li>
<li><em>adaptive</em></li>
<li><em>perfective/improvement</em></li>
</ul>
<p><span id="more-364"></span></p>
<p>Kunci dari keberhasilan proses perawatan (lagi-lagi berdasarkan buku tsb.) adalah mengklasifikasikan hal-hal yang perlu berubah ke dalam kelompok tersebut. Pengklasifikasian di atas disusun berdasarkan prioritas dan resikonya. Kisaran proporsi ketiga kelompok tersebut berturut-turut 20%, 25%, dan 55%. intinya, kebanyakan dari perawatan adalah improvement. Celakanya permintaan atas improvement ini nggak melihat struktur perangkat lunak ada. Jadi ingat pernah ada yang minta ganti grid (standar VCL Delphi) biar tampak lebih menarik (Dibandinginnya dengan DataGrid defaultnya Flex). Ibaratnya, lagi nyetir mobil kecepatan tinggi tiba-tiba punggung itu gatal!. </p>
<p>IMHO, situasinya akan lebih enak kalau deskripsi sistem yang mau dibikin itu bisa selesai di 10% (lebih enak lagi kalau verifikasi kesesuaian dengan spesifikasinya bisa dilakukan otomatis menggunakan metode formal) waktu total pengembangan sistem sehingga 90 persen sisanya adalah proses maintenance &amp; testing untuk menyesuaikan dengan kebutuhan yang diyakini selalu berubah. Aspek adaptif dan perfektif berhubungan dengan antarmuka dengan sistem lain (infrastruktur perangkat keras, <em>API</em>, sistem operasi, target deployment platform), dan manusia (<em>user interaction</em>). </p>
<p>Saya sendiri sebetulnya lebih tertarik ke interaksi. Bayangan saya adalah <em>user interface</em> yang dinamis (bukan sekedar <em>style/theme</em> yang hanya mencakup aspek estetis, tetapi juga struktur hierarki, tata letak, dan pemilihan komponen interaksi) yang menyesuaikan dengan target deployment platform (desktop, web, mobile) dan selera pengguna. Untuk itu diperlukan tool untuk membantu perancang interaksi (paradigma Microsoft) atau menjadi fasilitas yang terintegrasi dengan sistem yang digunakan oleh pengguna (<em>end-user development</em>). Satu hal yang pasti dengan adanya sistem antarmuka yang dinamis dan universal ini lahir kebutuhan baru yaitu pembuatan manual penggunaan yang otomatis juga. </p>
<p>Kalau diinventarisasi, untuk menyelesaikan persoalan di atas (pembangkitan antarmuka dan manual ~ user interface and instruction manual generation) perlu beberapa hal berikut:</p>
<ul>
<li>pemodelan domain arsitektur informasi, interaksi, dan kapabilitas platform (<em>domain spesific modeling</em>, MDA) termasuk model pembangkitan teks narasi untuk menceritakan skenario interaksi(<em>natural language processing</em>) menjadi bahasa spesifik (<em>domain spesific language</em>).</li>
<li>teknik kompilasi, khususnya untuk proses generation dari domain spesific language ke kode target platform</li>
<li>pengetahuan tentang interaksi (teori aktivitas dan teori kognitif) yang menjadi batasan pada proses pencarian solusi</li>
<li>Teknik optimasi kombinatorial untuk menghasilkan solusi berupa konfigurasi yang diharapkan</li>
</ul>
<p>Tampak terlalu besar cakupannya untuk dijadikan tesis (mungkin harusnya jadi program riset kk/unggulan?) dengan sisa waktu kurang dari satu semester. Mungkin bisa dibatasi lagi supaya lebih layak mengingat masih ada konsep-konsep yang sifatnya <em>vague</em>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/364/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=364&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/10/20/code-generation-for-software-maintenance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Knowledge Vampire</title>
		<link>http://pebbie.wordpress.com/2009/10/05/knowledge-vampire/</link>
		<comments>http://pebbie.wordpress.com/2009/10/05/knowledge-vampire/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 14:56:44 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=361</guid>
		<description><![CDATA[Fenomena ini terjadi di forum diskusi/mailing list di Indonesia. 
A: Mas, nanya kalo X gimana caranya? (X = persoalan)
A: kok nggak ada yang jawab yah? (merasa penting sehingga harus dijawab)
A: Oh, sudah terjawab. (sudah mendapat jawaban, mungkin dengan meneror anggota lain atau dari forum tetangga)

suatu ketika ada anggota baru yang kebetulan menghadapi persoalan yang sama [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=361&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Fenomena ini terjadi di forum diskusi/mailing list di Indonesia. </p>
<blockquote><p>A: Mas, nanya kalo X gimana caranya? (X = persoalan)<br />
A: kok nggak ada yang jawab yah? (merasa penting sehingga harus dijawab)<br />
A: Oh, sudah terjawab. (sudah mendapat jawaban, mungkin dengan meneror anggota lain atau dari forum tetangga)
</p></blockquote>
<p>suatu ketika ada anggota baru yang kebetulan menghadapi persoalan yang sama (X), Menggunakan fitur pencarian dan menemukan thread tersebut. Merasa tidak mendapatkan jawaban kemudian membuat thread baru. celakanya dengan perilaku yang sama (thread berakhir hanya berisi pertanyaan tanpa jawaban). </p>
<p>Pada akhirnya tidak ada pertambahan pengetahuan melainkan sampah. Situs forum diskusi/mailing list hanya digunakan untuk memenuhi kebutuhan pribadi sebagai tempat konsultasi gratis tanpa terbesit keinginan untuk membentuk pengetahuan bersama. </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/361/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/361/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/361/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=361&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/10/05/knowledge-vampire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Convex Hull 2D</title>
		<link>http://pebbie.wordpress.com/2009/09/29/convex-hull-2d/</link>
		<comments>http://pebbie.wordpress.com/2009/09/29/convex-hull-2d/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 16:02:29 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[computational geometry]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=352</guid>
		<description><![CDATA[Convex Hull merupakan persoalan klasik dalam geometri komputasional. Persoalan ini saya ketahui pertama kali ketika lomba pemrograman waktu SMA. Persoalannya digambarkan secara sederhana dalam ruang dimensi dua (bidang) sebagai mencari subset dari himpunan titik pada bidang tersebut sedemikian rupa sehingga jika titik-titik tersebut dijadikan poligon maka akan membentuk poligon yang konveks. Suatu poligon dikatakan konveks [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=352&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="justify"><em>Convex Hull</em> merupakan persoalan klasik dalam geometri komputasional. Persoalan ini saya ketahui pertama kali ketika lomba pemrograman waktu SMA. Persoalannya digambarkan secara sederhana dalam ruang dimensi dua (bidang) sebagai mencari subset dari himpunan titik pada bidang tersebut sedemikian rupa sehingga jika titik-titik tersebut dijadikan poligon maka akan membentuk poligon yang konveks. Suatu poligon dikatakan konveks jika digambarkan garis yang menghubungkan antar titik maka tidak ada garis yang memotong garis yang menjadi batas luar poligon. Definisi lain dari convex hull adalah poligon yang disusun dari subset titik sedemikian sehingga tidak ada titik dari himpunan awal yang berada di luar poligon tersebut (semua titik berada di batas luar atau di dalam area yang dilingkupi oleh poligon tersebut).</p>
<div id="attachment_353" class="wp-caption alignnone" style="width: 386px"><img src="http://pebbie.files.wordpress.com/2009/09/chull.png?w=376&#038;h=310" alt="convex hull" title="convex hull" width="376" height="310" class="size-full wp-image-353" /><p class="wp-caption-text">convex hull</p></div>
<p><span id="more-352"></span></p>
<p align="justify">Petunjuk untuk menyelesaikan persoalan ini adalah persamaan garis pada bidang. Persamaan garis pada bidang memisahkan bidang menjadi dua bagian yaitu area di sebelah kanan bidang (relatif terhadap orientasi garis). Sebagai contoh garis berorientasi adalah sumbu koordinat. Misalkan saja sumbu vertikal (ordinat, arah orientasi ke atas), seluruh titik di sebelah kanan garis ini memiliki nilai komponen koordinat horizontal (X) yang positif sedangkan seluruh titik di sebelah kiri garis memiliki nilai komponen koordinat horizontal negatif.</p>
<p align="justify">Petunjuk di atas dimanfaatkan dengan membuat definisi bahwa garis yang dibentuk oleh titik-titik poligon jika diasumsikan memiliki orientasi yang sama, maka setiap titik berada di sebelah kanan seluruh garis batas tersebut. Definisi ini kemudian dimanfaatkan untuk menentukan aksi awal yaitu memilih titik yang berada paling luar pertama. Mencari titik pertama cukup mudah yaitu cukup memilih titik yang memiliki nilai komponen koordinat (horizontal atau vertikal) yang ekstrim (minimum atau maksimum). Titik-titik convex hull lainnya ditentukan berdasarkan titik pertama tadi.</p>
<p>Algoritma awal yang intuitif dari deskripsi paragraf sebelumnya adalah.<br />
<code></p>
<ol>
<li>memilih titik pertama</li>
<li>memilih titik berikutnya, berdasarkan definisi:
<ul>
<li>jika dibuat garis dengan titik sebelumnya maka seluruh titik lainnya tidak ada yang berada di sebelah kiri.</li>
<li>jika titik tersebut sesuai maka dimasukkan dalam daftar titik luar.</li>
</ul>
</li>
</ol>
<p></code></p>
<p align="justify">Algoritma tersebut menggunakan pendekatan exhaustive (brute-force). kompleksitas algoritma tersebut mendekati <strong>O</strong>(n<sup>2</sup>). Algoritma tersebut dapat dioptimasi dengan membuat agar kumpulan titik-titik tersebut terurut secara lexicografis (urutkan dulu berdasarkan koordinat sumbu-X lalu untuk koordinat pada sumbu-X yang sama urutkan berdasarkan koordinat pada sumbu-Y). Sifat keterurutan ini kemudian dimanfaatkan sehingga pada setiap fase tiap titik hanya dikunjungi satu kali (kompleksitas linier). Adapun fase-fase yang perlu dilalui terdiri dari dua fase yaitu batas bagian atas (<em>upper boundary</em>) dan batas bagian bawah (<em>lower boundary</em>). Misal pada contoh algoritma berikut :</p>
<pre class="brush: delphi;">
procedure TForm1.ConvexHull( ap: array of TPoint );
var

  pi                : array of integer;
  hull              : array of integer;
  h, i, j, k, l     : integer;
  dx, dy, dx2, dy2  : integer;
  found             : boolean;
begin
  { initialize index }
  setlength( pi, length( ap ) );
  for i := 0 to high( pi ) do
    pi[i] := i;

  { sort the index lexicographically, shown here using simple quadratic complexity sort algorithm }
  for i := 0 to high( pi ) - 1 do begin
    for j := i + 1 to high( pi ) do begin
      if ( ap[pi[j]].X &lt; ap[pi[i]].X ) or ( ( ap[pi[j]].X &lt; ap[pi[i]].X ) and ( ap[pi[j]].Y &gt; ap[pi[i]].Y ) ) then begin
        k := pi[j];
        pi[j] := pi[i];
        pi[i] := k;
      end;
    end;
  end;

  { build upper boundary }
  setlength( hull, 2 );
  hull[0] := pi[0];
  hull[1] := pi[1];
  h := 1;

  for i := 2 to high( pi ) do begin
    found := false;
    for k := 1 to high( hull ) do begin
      dx := ap[hull[k]].X - ap[hull[k - 1]].X;
      dy := ap[hull[k]].Y - ap[hull[k - 1]].Y;

      dx2 := ap[pi[i]].X - ap[hull[k]].X;
      dy2 := ap[pi[i]].Y - ap[hull[k]].Y;

      j := dy * dx2 - dx * dy2;
      { delete previous non-convex edge w.r.t current point }
      if j &gt; 0 then begin
        hull[k] := pi[i];
        setlength( hull, k + 1 );
        found := true;
        break;
      end;
    end;

    { add if current point lies on the right side of previous upper edges }
    if not found then begin
      setlength( hull, length( hull ) + 1 );
      hull[high( hull )] := pi[i];
    end;
  end; 

  { build lower boundary }
  h := high( hull ) - 1;
  for i := high( pi ) downto 0 do begin
    found := false;
    for k := h to high( hull ) do begin
      dx := ap[hull[k]].X - ap[hull[k - 1]].X;
      dy := ap[hull[k]].Y - ap[hull[k - 1]].Y;

      dx2 := ap[pi[i]].X - ap[hull[k]].X;
      dy2 := ap[pi[i]].Y - ap[hull[k]].Y;

      j := dy * dx2 - dx * dy2;
      if j &gt; 0 then begin
        hull[k] := pi[i];
        setlength( hull, k + 1 );
        found := true;
        break;
      end;
    end;

    if not found then begin
      setlength( hull, length( hull ) + 1 );
      hull[high( hull )] := pi[i];
    end;
  end;

  { display result }
  Image1.Canvas.Pen.Color := clLime;
  Image1.Canvas.MoveTo( ap[hull[0]].X, ap[hull[0]].Y );
  for i := 1 to high( hull ) do
    Image1.Canvas.LineTo( ap[hull[i]].X, ap[hull[i]].Y );
  for i := 0 to high( hull ) do
    drawpt( ap[hull[i]].X, ap[hull[i]].Y, clRed );

end;
</pre>
<p align="justify">Algoritma di atas terdiri dari tiga bagian yaitu pengurutan titik, penyusunan batas bagian atas, dan penyusunan batas bagian bawah. Pada contoh di atas kompleksitas ditentukan oleh algoritma pengurutan titik yang cenderung kuadratik (<strong>O</strong>(n<sup>2</sup>)) untuk mempermudah pemahaman, jika dibutuhkan algoritma pengurutan dapat menggunakan algoritma yang memiliki kompleksitas lebih rendah/linearitmik (<strong>O</strong>(n.<strong>log</strong> n)).</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/352/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=352&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/09/29/convex-hull-2d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>

		<media:content url="http://pebbie.files.wordpress.com/2009/09/chull.png" medium="image">
			<media:title type="html">convex hull</media:title>
		</media:content>
	</item>
		<item>
		<title>sleep++ : an old-school sci-fi</title>
		<link>http://pebbie.wordpress.com/2009/09/06/sleep-an-old-school-sci-fi/</link>
		<comments>http://pebbie.wordpress.com/2009/09/06/sleep-an-old-school-sci-fi/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 14:29:59 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[riset]]></category>
		<category><![CDATA[soft computing]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=346</guid>
		<description><![CDATA[Semasa SMA dulu saya sangat tertarik dengan euphoria dunia sains dan teknologi. Masa-masa yang sangat indah ketika bisa bebas bermimpi tentang teknologi tanpa terbebani dengan bagaimana mewujudkannya menjadi sebuah benda nyata yang fungsional. Pada suatu ketika saya ditugaskan untuk membuat sebuah brosur produk. Waktu itu saya terpikir untuk sebuah produk khayalan yang bisa membantu menyerap [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=346&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Semasa SMA dulu saya sangat tertarik dengan euphoria dunia sains dan teknologi. Masa-masa yang sangat indah ketika bisa bebas bermimpi tentang teknologi tanpa terbebani dengan bagaimana mewujudkannya menjadi sebuah benda nyata yang fungsional. Pada suatu ketika saya ditugaskan untuk membuat sebuah brosur produk. Waktu itu saya terpikir untuk sebuah produk khayalan yang bisa membantu menyerap informasi dari buku tanpa perlu menghabiskan waktu untuk membaca melainkan bisa dilakukan sambil tidur. Ide ini didasari dari kebiasaan saya menghabiskan waktu istirahat untuk membaca buku-buku di perpustakaan sekolah dan kebiasaan tidur di kelas (biarpun duduk paling depan) pada saat jam pelajaran. </p>
<p>Beberapa waktu terakhir tampaknya mimpi waktu itu datang kembali, hanya saja kali ini sepertinya ada kesempatan untuk menyelidiki lebih lanjut apakah ide tersebut bisa diwujudkan atau tidak. Saya sendiri menganggap ide saya waktu sma tersebut masih mungkin diwujudkan setelah mempelajari beberapa informasi mulai dari model-model kemampuan berpikir dari bidang <em>artificial intelligence</em>, fisiologi otak dari perkembangan ilmu biomedik dan <em>neuroscience</em>, serta sedikit pengetahuan mengenai fisika (elektromagnetik) -kimia (organik dan molekuler). </p>
<p>Pada dasarnya untuk mewujudkan ide di atas adalah dengan membuat model kognitif manusia sebagai mesin komputasi atau dengan kata lain mensimplifikasi otak manusia sebagai komputer konvensional (von neumann). Alur proses yang terjadi antara lain :<br />
- akuisisi informasi dari sumber fisik (buku)<br />
- transfer informasi tersebut menjadi informasi yang disimpan dalam <em>filesystem</em> otak pada lokasi yang sesuai.<br />
proses di atas diasumsikan representasi informasi yang digunakan di otak, fungsi untuk mentransformasi representasi informasi dan mentransfer informasi ke dalam otak, dan pemetaan organisasi informasi di otak sudah diketahui. Ketiga asumsi tersebut sudah ada beberapa teori serta studi yang dilakukan tetapi mungkin masih jauh dari cukup. </p>
<p>Otak manusia bisa didekomposisi berdasarkan fungsi dan anatominya. Sesuai dengan konteks di atas, Fungsi untuk pembelajaran dan memori dipercaya berada pada bagian <a href="http://en.wikipedia.org/wiki/Hippocampus">hippocampus</a>, <a href="http://en.wikipedia.org/wiki/Cerebral_cortex">cerebral cortex</a>, <a href="http://en.wikipedia.org/wiki/Cerebellum">cerebellum</a>, dan <a href="http://en.wikipedia.org/wiki/Amygdala">amygdala</a>. <em>hippocampus</em> merupakan bagian yang banyak dipelajari terkait dengan fungsi ingatan. <em>cerebellum</em> atau otak kecil dipercaya berfungsi mengendalikan sistem motorik. <em>amygdala</em> dipercaya mengendalikan informasi yang terkait ingatan respon emosional. <em>cerebral cortex</em>, di lain pihak mengendalikan ingatan-ingatan yang terkait dengan informasi sensorik, dan ingatan lainnya. <em>cortex</em>, kalau tidak salah ingat juga banyak menginspirasi teknik-teknik dalam <em>computer vision</em>. </p>
<p>Dari keempat bagian dari otak tersebut, yang banyak dipelajari khususnya mengenai ingatan adalah <em>hippocampus</em> dan <em>neocortex</em>. Hebb menganjurkan sebuah teori mengenai pembentukan ingatan sebagai hubungan antara dua buah sel syaraf (sinapsis) yang diberi rangsangan secara simultan yang menjadi pedoman dalam perkembangan teknik <em>artificial neural network</em> (<em>Hebbian learning</em>). Berdasarkan teori ini, ingatan (baik jangka pendek maupun jangka panjang) dianggap sebagai struktur keterhubungan antar sel. Ternyata, ada mekanisme lain yang juga berperan dalam ingatan khususnya ingatan jangka panjang. Todd Sacktor &#8211; Profesor neurologi dari amerika &#8211; mengungkap mekanisme molekuler yang mengelola &#8220;data center&#8221; tersebut yaitu enzim isoform protein kinase C bernama protein kinase MZeta (PKMZeta). Studi lebih lanjut menunjukkan dengan menggunakan obat untuk menghambat kerja protein tersebut berdampak pada kehilangan ingatan terhadap hal yang telah dipelajari selama satu hari, dan bahkan sebulan sebelumnya. obat penghambat tersebut tidak berdampak permanen atau menimbulkan kerusakan pada otak. Beberapa publikasi lanjutan dari Dr. Sacktor menjabarkan tentang jaringan regulatori enzim tersebut yang diharapkan dapat membantu usaha pengobatan penyakit seperti alzheimer.<a href="http://www.downstate.edu/pharmacology/faculty/sacktor.html">[1]</a></p>
<p>Untuk mewujudkan rekayasa otak diperlukan hal-hal seperti : pemahaman mengenai mekanisme kerja otak dari tataran molekuler hingga fenomena abstrak seperti ingatan dan perilaku, instrumentasi untuk pengukuran aktivitas yang terjadi di otak, dan instrumen untuk memanipulasi aktivitas otak. Ada berbagai macam teknik yang saat ini diketahui untuk melakukan stimulasi aktivitas di otak baik berupa implantasi perangkat yang berfungsi sebagai &#8220;pacu otak&#8221; (<em>deep brain stimulation</em>) maupun perangkat yang hanya perlu dikenakan (wearable) yang berbasis pada gelombang elektromagnetik (<em>transcranial magnetic stimulation</em>). Ada juga gosip yang beredar tentang pengembangan alat untuk komunikasi telepati buatan untuk kepentingan militer<a href="http://www.wired.com/dangerroom/2008/08/army-funds-synt/">[2]</a>.  </p>
<p>Mudah-mudahan di masa depan kita sempat merasakan teknologi ini.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=346&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/09/06/sleep-an-old-school-sci-fi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Tesis &#8211; First Contact</title>
		<link>http://pebbie.wordpress.com/2009/08/24/tesis-first-contact/</link>
		<comments>http://pebbie.wordpress.com/2009/08/24/tesis-first-contact/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 20:24:23 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[academic]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=344</guid>
		<description><![CDATA[Hari pertama kuliah if 6099 (tesis), ada sedikit pencerahan dibanding kuliah metode penelitian semester lalu. Khususnya pada definisi mendasar &#8216;informatika&#8217; dan &#8216;algoritma&#8217; selain cakupan dan batasan dari tugas akhir sarjana dengan tesis magister.
Dari sepuluh orang yang hadir hari ini, ternyata ketika diminta menuliskan definisi &#8216;informatika&#8217; bisa didapat 10 definisi yang berbeda. Kalau cara anak sma [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=344&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hari pertama kuliah if 6099 (tesis), ada sedikit pencerahan dibanding kuliah metode penelitian semester lalu. Khususnya pada definisi mendasar &#8216;informatika&#8217; dan &#8216;algoritma&#8217; selain cakupan dan batasan dari tugas akhir sarjana dengan tesis magister.</p>
<p>Dari sepuluh orang yang hadir hari ini, ternyata ketika diminta menuliskan definisi &#8216;informatika&#8217; bisa didapat 10 definisi yang berbeda. Kalau cara anak sma atau mahasiswa sarjana mungkin mudah saja &#8216;mencontek&#8217; dari definisi yang sudah dipublikasi dan diduplikasi di ranah internet, tetapi bagi mahasiswa pasca sarjana pendefinisian informatika sebagai &#8216;lahan garapan&#8217; tentu mencerminkan visi dan akumulasi pengalaman historis. </p>
<p>Beberapa definisi yang sempat terbahas di kelas ternyata tidak lepas dari istilah &#8216;komputer&#8217;. Adapun komentar yang muncul adalah, kalau komputer itu merupakan bagian dari esensi mendasar informatika mengapa istilah &#8216;informatika&#8217; tidak mengandung suku kata dari &#8216;komputer&#8217;?</p>
<p>Kemudian dilontarkan lagi pertanyaan mengenai kata kunci atau akar kata dari istilah &#8216;informatika&#8217;. Kebanyakan jawaban adalah hanya satu kata yaitu &#8216;informasi&#8217; yang menyulut komentar berikutnya yaitu &#8220;jika memang hanya informasi, mengapa namanya tidak departemen informasi saja?&#8221;. Ada salah satu jawaban yang menyebut bahwa kata &#8216;informatika&#8217; bisa disusun dari dua kata yaitu &#8216;infor&#8217; yang berasal dari informasi dan &#8216;matika&#8217; yang berasal dari&#8230;<br />
&#8230;<br />
..<br />
<strong>otomatika</strong> (catatan: bukan matematika).</p>
<p>Definisi yang saya tulis sebagai jawaban pertanyaan waktu itu yang tersingkat dalam benak saya adalah &#8220;bidang ilmu yang mengkaji otomatisasi pengolahan informasi&#8221;. Jawaban terpendek yang sudah mencakup objek (informasi), predikat (pengolahan), dan kata sifat (otomatis). Walaupun masih meleset karena ternyata kerekayasaan juga masuk dalam kajian informatika. ha ha ha.</p>
<p>Jadi kata kunci hari itu adalah otomatis yang didefinisikan sebagai &#8220;perubahan keadaan tanpa campur tangan manusia (saat eksekusi/dijalankan)&#8221;. Kualitas &#8216;otomatisasi&#8217; dijadikan sebagai ukuran keberhasilan terhadap aktivitas yang diotomatiskan (yang secara mendasar di dalam informatika kita kenal sebagai algoritma).</p>
<p>Lalu mengenai perbedaan antara cakupan tugas akhir sarjana dengan tesis magister dideskripsikan sebagai sebuah analogi membuat jembatan untuk menyeberang. Suatu tugas akhir sarjana hanya mensyaratkan mahasiswa agar &#8216;berhasil menyeberang&#8217; atau &#8217;sampai di seberang&#8217;. Adapun pertanggung jawaban yang dibutuhkan adalah ceritera pengalaman ketika menyeberang serta keputusan-keputusan yang diambil selama perjalanan. Sedangkan pada tesis magister, ada tambahan pertanggung jawaban selain prasyarat bahwa harus sudah bisa menyeberang/sampai di seberang yaitu nilai tambah (atau nilai kompetitif) dari jembatan yang dibuat. Nilai kompetitif inilah yang perlu dicari/digali melalui proses yang bernama penelitian. Memang tidak jarang ada tugas akhir sarjana yang memiliki kualitas seperti tesis magister jika kondisinya mendukung, namun jika tesis magister hanya memiliki kualitas seperti tugas akhir sarjana tentu menjadi hal yang menyedihkan. </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=344&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/08/24/tesis-first-contact/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Berburu wanita : sebuah persoalan probabilitas</title>
		<link>http://pebbie.wordpress.com/2009/07/22/berburu-wanita-sebuah-persoalan-probabilitas/</link>
		<comments>http://pebbie.wordpress.com/2009/07/22/berburu-wanita-sebuah-persoalan-probabilitas/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 07:37:38 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[academic]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[image processing]]></category>
		<category><![CDATA[markov random field]]></category>
		<category><![CDATA[monte carlo]]></category>
		<category><![CDATA[quiz]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=333</guid>
		<description><![CDATA[disclaimer
cerita berikut adalah analogi terhadap persoalan matematis yang sedang saya hadapi, tidak ada hubungannya dengan perilaku manusia yang digambarkan.  
misalkan sedang ada acara konser musik di suatu aula besar sehingga penontonnya duduk secara teratur pada kursi yang telah disediakan. katakanlah penonton bisa dikelompokkan menjadi penonton pria dan wanita. masing-masing bisa diidentifikasi melalui pakaian yang [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=333&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>disclaimer</strong><br />
cerita berikut adalah analogi terhadap persoalan matematis yang sedang saya hadapi, tidak ada hubungannya dengan perilaku manusia yang digambarkan. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>misalkan sedang ada acara konser musik di suatu aula besar sehingga penontonnya duduk secara teratur pada kursi yang telah disediakan. katakanlah penonton bisa dikelompokkan menjadi penonton pria dan wanita. masing-masing bisa diidentifikasi melalui pakaian yang dikenakan. Umumnya para wanita mengenakan pakaian berwarna gelap sedangkan pria mengenakan pakaian yang bervariasi antara terang dengan gelap. walaupun demikian, karena pada umumnya wanita yang datang adalah socialista, kita bisa berasumsi bahwa para wanita akan duduk berdekatan satu sama lain.</p>
<p>sekarang seorang pengamat pria ( A ) duduk di balkon sehingga bisa melihat semua penonton di bawah namun tidak jelas. seorang teman ( B ) lalu menggambar peta yang berisi daerah mana yang kira-kira merupakan wanita (hanya berdasarkan pengamatan dari jauh juga). diasumsikan bahwa semua wanita yang hadir ditandai oleh B namun B tidak menjamin bahwa pria juga termasuk dalam tanda di peta yang digambar tersebut (dan memang ada pria yang ternyata &#8216;dicurigai&#8217; sebagai wanita).</p>
<p>yang menjadi persoalan adalah, bagaimana caranya menseleksi pada tiap tanda yang dibuat oleh <strong>B</strong> agar A dapat menghapus tanda yang sebetulnya berisi pria sehingga pada akhirnya tiap tanda betul-betul menunjukkan lokasi tempat duduk yang diisi oleh wanita?</p>
<p>persoalannya mungkin tampak sederhana, tapi bagi saya yang <em>nggak mudeng</em> dengan topik probabilitas dan statistik (akibat banyaknya istilah yang aneh-aneh di buku berbahasa Indonesia dengan bahasa Inggris). bingung juga memodelkan persoalannya dalam konteks probabilitas. </p>
<p>beberapa kata kunci petunjuk/asumsi yang mungkin bisa digunakan:<br />
- tempat duduk tersebar sebagai struktur grid regular<br />
- bayesian<br />
- <a href="http://en.wikipedia.org/wiki/Markov_random_field">markov random field</a></p>
<p>silakan isi jawaban berupa pemodelan persoalan dan algoritma penyelesaiannya pada komentar yang telah disediakan, hadiah <strong>$10</strong> (atau akun rapidshare premium untuk 1  bulan) menunggu bagi penjawab pertama yang memuaskan (jawaban akan diuji terlebih dahulu). <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (hadiah akan ditransfer melalui paypal atau dikirm via e-mail (untuk akun rapidshare premium))</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/333/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=333&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/07/22/berburu-wanita-sebuah-persoalan-probabilitas/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Mengintip Situs Kampanye Pemilihan Presiden NKRI 2009</title>
		<link>http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/</link>
		<comments>http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 12:44:55 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[opini]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[pilpres]]></category>
		<category><![CDATA[pilpres2009]]></category>
		<category><![CDATA[situs kampanye]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=325</guid>
		<description><![CDATA[Sebetulnya sedang asik mengembangkan framework Web yang terinspirasi dari berbagai CMS (Django, WordPress, dan Drupal) lalu membaca e-mail dari milis HMIF yang mencantumkan tautan ke situs kampanye pilpres 2009 yang akhirnya penasaran ingin tahu apa engine/web framework/cms yang digunakan. 
situs SBY-Boediono ternyata menggunakan drupal, Megawati-Prabowo menggunakan Joomla, dan JK-Wiranto menggunakan wordpress. tidak sulit sebetulnya untuk [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=325&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sebetulnya sedang asik mengembangkan framework Web yang terinspirasi dari berbagai CMS (Django, WordPress, dan Drupal) lalu membaca e-mail dari milis HMIF yang mencantumkan tautan ke situs kampanye pilpres 2009 yang akhirnya penasaran ingin tahu apa engine/web framework/cms yang digunakan. </p>
<p>situs <a href="http://sbypresidenku.com/">SBY-Boediono</a> ternyata menggunakan drupal, <a href="http://megaprabowo.com/">Megawati-Prabowo</a> menggunakan Joomla, dan <a href="http://jk-wiranto-2009.com/">JK-Wiranto</a> menggunakan wordpress. tidak sulit sebetulnya untuk mengetahui apa engine yang digunakan apalagi untuk engine yang bersifat kode terbuka (open-source). kesimpulannya, tidak ada yang menggunakan cms buatan sendiri. </p>
<blockquote><p>mengapa menyebut &#8216;tidak ada yang menggunakan cms buatan sendiri&#8217;?</p></blockquote>
<p>jawabannya sederhana saja, pada saat tulisan ini dibuat pada situs megawati prabowo dan SBY-Boediono tercantum penanda Hak Cipta, atau Copyright ( &copy; ) dan tentu saja pada situs yang mencantumkan tanda copyright tersebut jejak-jejak penanda bahwa situs tersebut dibuat menggunakan framework yang sudah ada tidak dimunculkan (coba saja cari kata &#8216;drupal&#8217; di halaman situs SBY-Boediono atau cari kemunculan kata &#8216;joomla&#8217; di situs Mega-Prabowo). </p>
<p>Memang ternyata walaupun hanya situs JK-Wiranto yang penampilannya kacau waktu dibuka, tetapi tidak menyatakan tanda copyright pengembang situs bahkan tetap mencantumkan atribut copyright milik wordpress serta tautan ke situs WordPress.</p>

<a href='http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/sby/' title='sby'><img width="150" height="29" src="http://pebbie.files.wordpress.com/2009/06/sby.png?w=150&#038;h=29" class="attachment-thumbnail" alt="" title="sby" /></a>
<a href='http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/jkwin/' title='jkwin'><img width="150" height="50" src="http://pebbie.files.wordpress.com/2009/06/jkwin.png?w=150&#038;h=50" class="attachment-thumbnail" alt="" title="jkwin" /></a>
<a href='http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/megapro/' title='megapro'><img width="150" height="110" src="http://pebbie.files.wordpress.com/2009/06/megapro.jpg?w=150&#038;h=110" class="attachment-thumbnail" alt="" title="megapro" /></a>

<p>Catatan:</p>
<blockquote><p><strong>1: What is the license for Drupal?</strong></p>
<p>Drupal and all contributed files hosted on Drupal.org are licensed under the <u>GNU General Public License, version 2 or later</u>. That means you are free to download, reuse, modify, and distribute any files hosted on Drupal.org&#8217;s CVS repository <u>under the terms of either the GPL version 2 or version 3, and to run Drupal in combination with any code with any license that is compatible with either versions 2 or 3</u>, such as the Affero General Public License (AGPL) version 3.</p></blockquote>
<blockquote><p>Joomla is free, open, and available to anyone <u>under the GPL license</u>.</p></blockquote>
<p><em>now who&#8217;s conform to these licenses?</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/325/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=325&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/06/08/mengintip-situs-kampanye-pemilihan-presiden-nkri-2009/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
		<item>
		<title>Programmatically set core affinity in multicore environment</title>
		<link>http://pebbie.wordpress.com/2009/06/02/programmatically-set-core-affinity-in-multicore-environment/</link>
		<comments>http://pebbie.wordpress.com/2009/06/02/programmatically-set-core-affinity-in-multicore-environment/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 07:48:36 +0000</pubDate>
		<dc:creator>pebbie</dc:creator>
				<category><![CDATA[delphi]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[core affinity]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://pebbie.wordpress.com/?p=320</guid>
		<description><![CDATA[Prosesor multicore sudah tidak asing tetapi aplikasi yang umumnya dikembangkan biasanya hanya terdiri dari satu thread. Sejak dahulu ternyata sudah ada Win32 API untuk menentukan afinitas proses/thread ke prosesor tertentu. Kode di bawah menggunakan delphi 7.
Mendapatkan Jumlah core/Prosesor
var
  sinfo : TSystemInfo;
begin
  GetSystemInfo(sinfo);
  { jumlah prosesor ada di field dwNumberOfProcessors }
  showmessage(inttostr(sinfo.dwNumberOfProcessors));

Menentukan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=320&subd=pebbie&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Prosesor multicore sudah tidak asing tetapi aplikasi yang umumnya dikembangkan biasanya hanya terdiri dari satu thread. Sejak dahulu ternyata sudah ada Win32 API untuk menentukan afinitas proses/thread ke prosesor tertentu. Kode di bawah menggunakan delphi 7.</p>
<p><strong>Mendapatkan Jumlah core/Prosesor</strong></p>
<pre class="brush: delphi;">var
  sinfo : TSystemInfo;
begin
  GetSystemInfo(sinfo);
  { jumlah prosesor ada di field dwNumberOfProcessors }
  showmessage(inttostr(sinfo.dwNumberOfProcessors));
</pre>
<p><strong>Menentukan Afinitas ke core tertentu</strong><br />
Afinitas ke core menggunakan bit vector. Tiap 1 bit diasosiasikan ke core tertentu mulai dari LSB. karena tipe data yang dilemparkan ke fungsi tsb adalah 32 bit unsigned integer maka mungkin maksimum prosesor yang bisa diakses sejumlah 32.</p>
<p>berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core pertama (cpu0) saja.</p>
<pre class="brush: delphi;">SetProcessAffinityMask(GetCurrentProcess, 1);</pre>
<p>berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core pertama (cpu0) dan kedua (cpu1).</p>
<pre class="brush: delphi;">SetProcessAffinityMask(GetCurrentProcess, 3);</pre>
<p>sedangkan berikut ini contoh kode agar aplikasi yang sedang berjalan hanya menggunakan core kedua (cpu0) saja.</p>
<pre class="brush: delphi;">SetProcessAffinityMask(GetCurrentProcess, 2);</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pebbie.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pebbie.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pebbie.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pebbie.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pebbie.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pebbie.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pebbie.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pebbie.wordpress.com/320/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pebbie.wordpress.com/320/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pebbie.wordpress.com/320/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pebbie.wordpress.com&blog=944265&post=320&subd=pebbie&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://pebbie.wordpress.com/2009/06/02/programmatically-set-core-affinity-in-multicore-environment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bf1c3f23d84daac10f463f6f0172802?s=96&#38;d=wavatar&#38;r=X" medium="image">
			<media:title type="html">pebbie</media:title>
		</media:content>
	</item>
	</channel>
</rss>