<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-25865790</id><updated>2012-01-15T23:15:31.105-08:00</updated><category term='linux'/><category term='apache'/><category term='proxy'/><category term='macintosh'/><category term='mysql'/><category term='git'/><category term='php'/><category term='slims'/><category term='apple'/><category term='yaz'/><category term='programming'/><category term='family'/><category term='search engine'/><category term='web development'/><category term='senayan'/><category term='tunneling'/><category term='indexing'/><category term='sourcecodemanagement'/><category term='full-text indexing'/><category term='library'/><category term='database'/><category term='operating system'/><title type='text'>dicarve</title><subtitle type='html'>Blogspot Arie Nugraha. Librarian sekaligus programmer yang suka programming, database, desain dan berharap bisa memberikan manfaat pada banyak orang. Amin. Menurut Arie Nugraha, Open Source bukan soal gratis, tapi soal menghormati hasil karya orang lain dan belajar ga make aplikasi bajakan.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-25865790.post-6947912752222459083</id><published>2011-08-24T02:52:00.000-07:00</published><updated>2011-08-24T06:13:56.634-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macintosh'/><category scheme='http://www.blogger.com/atom/ns#' term='slims'/><category scheme='http://www.blogger.com/atom/ns#' term='senayan'/><category scheme='http://www.blogger.com/atom/ns#' term='yaz'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Instalasi Senayan Library Management System (SLiMS) di Mac OSX berikut dengan dukungan Z39.50 (Bagian 1)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-4P0hpqry-Fg/TlTwD3yrtrI/AAAAAAAAAEw/XWZVljXQVLE/s1600/slims-mac.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-4P0hpqry-Fg/TlTwD3yrtrI/AAAAAAAAAEw/XWZVljXQVLE/s400/slims-mac.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Sebenernya udah lama mau nulis tutorial ini, tapi karena "kesibukan" (#eaaa) yang mendera, baru kali ini kesampean, sekalian menyambut bulan Ramadhan yang penuh barokah dan kehadiran versi SLiMS terbaru Stable15 Matoa. Berhubung saya ini juga orang sangat pelupa, maka ada baiknya sekalian saya dokumentasikan cara instalasi SLiMS di Mac OSX, kali-kali aja di kemudian hari saya lupa :D. Untuk instalasi di Mac OSX sebenernya relatif mudah, beberapa prasyarat yang harus anda penuhi adalah:
&lt;ol&gt;
&lt;li&gt;Desktop &lt;b&gt;MacPro, Imac, Macbook, MacbookPro atau Macbook Air&lt;/b&gt;! (YA IYAAALLLAH!!!).&lt;/li&gt;
&lt;li&gt;Terinstall sistem operasi &lt;b&gt;OSX minimal versi 10.4&lt;/b&gt; (boleh Intel atau PPC) dan ke atasnya&lt;/li&gt;
&lt;li&gt;Paket &lt;a href="http://www.apachefriends.org/en/xampp-macosx.html"&gt;XAMPP for Mac terbaru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paket &lt;b&gt;Xcode&lt;/b&gt;. Xcode merupakan paket development Mac OSX yang didalamnya terdapat compiler gcc, g++, make, dll. yang kita butuhkan untuk meng-compile YAZ dan PHP-YAZ. Xcode biasanya disertakan pada setiap DVD instalasi Mac OSX, atau kalo DVD instalasinya udah raib alias hilang, download aja di website resmi Apple, gratis kok.&lt;/li&gt;
&lt;li&gt;Paket &lt;b&gt;SLiMS versi source&lt;/b&gt; (bukan psenayan/portable senayan) terbaru, misalnya pada saat tulisan ini dibuat SLiMS Stable15 (Matoa)&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
Untuk tutorial ini, saya menggunakan MacbookPro dengan &lt;b&gt;Mac OSX versi 10.6.8 dan paket XAMPP for Mac yang saya gunakan adalah versi 1.7.3&lt;/b&gt;, berikut dengan paket XAMPP Dev (xampp-macosx-1.7.3-dev) dengan versi yang sama. XAMPP Dev merupakan paket tambahan opsional yang berisi file-file development header dari aplikasi-aplikasi yang terdapat di dalam XAMPP seperti PHP, MySQL, library-library, dsb.
&lt;/p&gt;

&lt;p&gt;
Oke mari kita mulai proses instalasinya!
&lt;ol&gt;

&lt;li&gt;
&lt;strong&gt;Unduh (download) paket XAMPP untuk Mac di laman (website) &lt;a href="http://www.apachefriends.org/en/xampp-macosx.html"&gt;Apachefriends&lt;/a&gt;&lt;/strong&gt;. Inget ya, yang versi Mac, jangan yang versi Linux, Solaris, apalagi Winslow ehhh, Windows. &lt;i&gt;Silly maybe, but guess what?&lt;/i&gt; ada aja orang yang salah download!

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9lR-g1IfT9g/TlTFYchGLQI/AAAAAAAAAEQ/tFbqVriC1ZY/s1600/www.apachefriends.org%2Bscreen%2Bcapture%2B2011-8-24-15-46-16.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="228" width="320" src="http://2.bp.blogspot.com/-9lR-g1IfT9g/TlTFYchGLQI/AAAAAAAAAEQ/tFbqVriC1ZY/s320/www.apachefriends.org%2Bscreen%2Bcapture%2B2011-8-24-15-46-16.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/li&gt;

&lt;li&gt;
Download file Universal binary dalam format .dmg yang disediakan. Jangan lupa download juga paket development-nya agar kita bisa meng-compile library YAZ dan PHP-YAZ nanti.

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-IrcCQEkREIQ/TlTHPotEu0I/AAAAAAAAAEY/nc6Yzv11PtM/s1600/www.apachefriends.org%2Bscreen%2Bcapture%2B2011-8-24-15-46-41.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="249" width="320" src="http://1.bp.blogspot.com/-IrcCQEkREIQ/TlTHPotEu0I/AAAAAAAAAEY/nc6Yzv11PtM/s320/www.apachefriends.org%2Bscreen%2Bcapture%2B2011-8-24-15-46-41.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/li&gt;

&lt;li&gt;
Setelah selesai di-download, klik dua kali pada file image .dmg XAMPP untuk membuka installer-nya. Drag folder XAMPP ke folder Applications untuk menginstall.

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-OxoEuZVmGyU/TlTIADs40II/AAAAAAAAAEg/xQNefF_Et4o/s1600/xampp-mac-install.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="216" width="320" src="http://3.bp.blogspot.com/-OxoEuZVmGyU/TlTIADs40II/AAAAAAAAAEg/xQNefF_Et4o/s320/xampp-mac-install.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/li&gt;

&lt;li&gt;
Selesai proses instalasi, sekarang giliran install paket .dmg XAMPP Dev-nya. Caranya hampir sama dengan instalasi XAMPP, buka paket .dmg-nya dan jalankan installer yang terdapat di dalamnya. Ikuti proses wizard instalasinya.
&lt;/li&gt;

&lt;li&gt;
Masuk ke folder Applications dan cari folder XAMPP disitu. Jalankan program "XAMPP Control". Nanti akan ada jendela aplikasi kecil yang berisi tombol untuk menjalan Apache, MySQL dan FTP. Cukup jalankan Apache dan MySQL saja, FTP server-nya engga perlu.

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-oZ-plxLvJ9U/TlTLuzuXFoI/AAAAAAAAAEo/LDILdE78SU4/s1600/xampp-control.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="200" width="320" src="http://1.bp.blogspot.com/-oZ-plxLvJ9U/TlTLuzuXFoI/AAAAAAAAAEo/LDILdE78SU4/s320/xampp-control.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/li&gt;

&lt;li&gt;
&lt;strong&gt;Sekarang giliran instalasi SLiMS&lt;/strong&gt;. Ekstrak paket SLiMS versi source yang sudah anda download dari situs resmi &lt;a href="http://slims.web.id"&gt;SLiMS&lt;/a&gt;, dan kemudian kopikan folder hasil ekstraksinya (misal nama foldernya &lt;b&gt;s3st15_matoa&lt;/b&gt;) ke folder &lt;b&gt;/Applications/XAMPP/htdocs/&lt;/b&gt;.
&lt;/li&gt;

&lt;li&gt;
Buka browser web favorit anda, misalnya Safari, Firefox, Chrome atau Camino dan arahkan ke URL phpMyAdmin di http://127.0.0.1/phpMyAdmin untuk membuka program manajemen database MySQL berbasis web, phpMyAdmin yang kesohor itu. By default instalasi XAMPP, phpMyAdmin bisa diakses bebas tanpa harus memasukkan username dan password.
&lt;/li&gt;

&lt;li&gt;
Buatlah sebuah database baru dengan nama "&lt;b&gt;senayandb&lt;/b&gt;". Setelah database berhasil dibuat masuk ke menu tab "&lt;b&gt;Import&lt;/b&gt;" dan pilih file "&lt;b&gt;senayan.sql&lt;/b&gt;" yang terdapat di dalam folder "install" di source SLiMS hasil ekstraksi kita tadi. Setelah proses import berhasil maka kemudian pilih menu tab "SQL" dan jalankan perintah berikut:
&lt;code&gt;
&lt;pre&gt;

GRANT ALL ON senayandb.* TO 'senayanuser'@'localhost'
IDENTIFIED BY 'password_senayanuser';
FLUSH PRIVILEGES;

&lt;/pre&gt;
&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;
Buka Tab baru pada browser web anda dan masukkan alamat: &lt;b&gt;http://127.0.0.1/s3st15_matoa&lt;/b&gt; . VOILLAA SLiMS sudah terinstall di Mac OSX ente gan!
&lt;/li&gt;

&lt;/ol&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-0v9xs-TKA_k/TlT0xFaFnDI/AAAAAAAAAE4/pg2hasUqgp0/s1600/slims-on-mac.tiff" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="400" src="http://4.bp.blogspot.com/-0v9xs-TKA_k/TlT0xFaFnDI/AAAAAAAAAE4/pg2hasUqgp0/s400/slims-on-mac.tiff" /&gt;&lt;/a&gt;&lt;/div&gt;

Okeh. Bagian 1 sampai disini dulu, besok bagian 2 dimana kita akan meng-compile YAZ dan PHP-YAZ agar fitur Z39.50 yang dahsyat itu bisa berjalan di Mac OSX, akan saya lanjutkan, selamat menggunakan SLiMS di Mac OSX anda! (Ane tunggu cendol-nya ya gan xixixiiiii)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-6947912752222459083?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/6947912752222459083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=6947912752222459083' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6947912752222459083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6947912752222459083'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2011/08/instalasi-senayan-library-management.html' title='Instalasi Senayan Library Management System (SLiMS) di Mac OSX berikut dengan dukungan Z39.50 (Bagian 1)'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4P0hpqry-Fg/TlTwD3yrtrI/AAAAAAAAAEw/XWZVljXQVLE/s72-c/slims-mac.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-365274788203372594</id><published>2011-08-05T16:00:00.000-07:00</published><updated>2011-08-05T16:49:24.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slims'/><category scheme='http://www.blogger.com/atom/ns#' term='senayan'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Tips dan Trik Pemeliharaan a.k.a Maintenance Senayan Library Management System (SLiMS)</title><content type='html'>&lt;p&gt;Beberapa teman pengguna SLiMS sering bertanya kepada saya, apa saja tips dan trik dalam pemeliharaan SLiMS, terutama bagi yang menggunakan versi Portable Senayan (psenayan). OK, kalau begitu sekalian aja biar ga lupa kita dokumentasikan di posting blog saya yang jarang sekali dimutakhirkan/&lt;i&gt;update&lt;/i&gt; ini (heheheeee):
&lt;/p&gt;

&lt;p&gt;
&lt;div class="tips-count"&gt;Tips 1:&lt;/div&gt;
&lt;div class="tips-title"&gt;Hapus semua file image barcode secara rutin&lt;/div&gt;
&lt;blockquote&gt;
Setelah sekian lama menggunakan SLiMS kemudian sering membuat barcode untuk data Item/Copies koleksi, maka file-file image barcode hasil generate cetak barcode akan menumpuk di folder &lt;strong&gt;"lokasi_source_slims/images/barcodes"&lt;/strong&gt;. Walaupun besar file-nya kecil-kecil tetapi cukup mengganggu juga kalau jumlah sudah ribuan, terutama bagi mereka yang pakai &lt;i&gt;webhosting&lt;/i&gt; dengan &lt;i&gt;space&lt;/i&gt; harddisk pas-pasan. &lt;strong class="tips-important"&gt;Oleh karena itu bagi mereka yang sering mencetak barcode koleksi atau kartu anggota dengan SLiMS paling tidak sebulan sekali silahkan itu semua file image .png barcode di folder &lt;strong&gt;"lokasi_source_slims/images/barcodes"&lt;/strong&gt; dibabat abissss!&lt;/strong&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;div class="tips-count"&gt;Tips 2:&lt;/div&gt;
&lt;div class="tips-title"&gt;Cek file access.log dan error.log web server Apache di psenayan&lt;/div&gt;
&lt;blockquote&gt;
Ada kaskus, ehhh... :p kasus dimana pengguna psenayan bingung &lt;i&gt;setengah hidup&lt;/i&gt; ketika melihat ukuran folder psenayan mereka menggelembung atau bahasa kerennya, &lt;i&gt;BLOATED&lt;/i&gt;, menjadi 3-5 Gigabyte padahal mereka tidak mengupload file-file digital ke SLiMS. Penyebab hal ini ternyata adalah file log milik web server Apache, yaitu &lt;b&gt;error.log&lt;/b&gt; dan &lt;b&gt;access.log&lt;/b&gt; yang menjadi semakin besar seiring pemakaian psenayan. Bagi anda yang belum tahu fungsinya, file access.log menyimpan semua informasi &lt;i&gt;request&lt;/i&gt; HTTP yang dilakukan ke web server Apache, sedangkan error.log menyimpan semua error/galat yang terjadi pada &lt;i&gt;request&lt;/i&gt; HTTP, error yang terjadi pada program Apache itu sendiri, error pada SSL, dan error-error lainnya. Letaknya ada di direktori &lt;b&gt;"/psenayan/apache/logs"&lt;/b&gt;. Nah solusi masalah ini ada 3 alternatifnya:
&lt;ol&gt;
&lt;li&gt;Solusi 1: Kosongkan kedua file tersebut, atau hapus apabila terlalu besar untuk dibuka dengan Notepad dan kemudian buat kembali file teks kosong dengan nama yang sama. Solusi ini berlaku bagi mereka yang mengganggap tidak perlu mengetahui apa isi dari log web server Apache&lt;/li&gt;
&lt;li&gt;Solusi 2: Compress dalam format zip atau rar kedua file tersebut dan backup ke tempat lain kemudian buat kembali file teks kosong dengan nama yang sama. Solusi ini berlaku bagi mereka yang mengganggap penting untuk mengetahui apa isi dari log web server Apache, biasanya admin jaringan perlu menganalisa isi dari log ini, terutama apabila terjadi &lt;i&gt;hacking, cracking, deface&lt;/i&gt;, dll pada website&lt;/li&gt;
&lt;li&gt;Solusi 3: Gunakan fasilitas Log Rotation yang disediakan oleh Apache untuk merotasi isi log secara otomatis dan periodik. Untuk lebih lengkapnya silahkan ikuti petunjuknya disini &lt;a href="http://httpd.apache.org/docs/2.2/logs.html#rotation"&gt;Log Rotation&lt;/a&gt;. Atau bisa juga gunakan fitur &lt;a href="http://httpd.apache.org/docs/2.2/logs.html#piped"&gt;Piped Logs&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;div class="tips-count"&gt;Tips 3:&lt;/div&gt;
&lt;div class="tips-title"&gt;Backup psenayan dan database secara rutin&lt;/div&gt;
&lt;blockquote&gt;
Bagi pengguna psenayan lakukan backup satu folder psenayan secara rutin dengan melakukan dua tips sebelumnya terlebih dahulu agar ukuran backup tidak terlalu besar dan kemudian kompresi folder psenayan dalam format zip atau rar (mau lebih kecil lagi? pake format 7z atau lzma sekalian :D). Beri nama file kompresi tersebut misalnya &lt;b&gt;psenayan-20110817.zip&lt;/b&gt; biar kita lebih mudah mengidentifikasi kapan tanggal pembuatan backup tersebut.
&lt;br&gt;
Untuk membackup database, gunakan fasilitas &lt;i&gt;"Database Backup"&lt;/i&gt; yang terdapat pada modul &lt;b&gt;"System"&lt;/b&gt; di SLiMS. &lt;strong class="tips-important"&gt;Sebelumnya pastikan bahwa sudah tidak ada warning mysqldump di halaman awal admin SLiMS. Jangan lupa juga untuk memindahkan semua file hasil backup SLiMS (.sql atau .sql.gz) yang terletak di direktori &lt;b&gt;"lokasi_source_slims/files/backup"&lt;/b&gt; ke tempat lain&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;div class="tips-count"&gt;Tips 4:&lt;/div&gt;
&lt;div class="tips-title"&gt;Optimasikan database SLiMS&lt;/div&gt;
&lt;blockquote&gt;
Bagi anda pengguna SLiMS yang sering kali melakukan proses update data dan penghapusan data, ada baiknya lakukan proses optimisasi database SLiMS. Untuk optimasi database SLiMS gunakan saja phpMyAdmin atau kalo mau lebih hardcore login ke database server MySQL pake terminal/commandline. Dengan phpMyAdmin masuk ke database yang digunakan SLiMS (biasanya di psenayan namanya "senayandb"), dan kemudian masuk ke tab menu SQL dan masukkan perintah berikut:

&lt;p&gt;
&lt;code&gt;
OPTIMIZE TABLE `biblio` ,
`biblio_attachment` ,
`biblio_author` ,
`biblio_topic` ,
`files` ,
`item` ,
`member` ,
`mst_author` ,
`mst_label` ,
`mst_topic`;
&lt;/code&gt;
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2fb5DDx0Lj0/TjyAAVlyOlI/AAAAAAAAAD4/5blqVgbE8dM/s1600/optimize-slims.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="218" width="320" src="http://2.bp.blogspot.com/-2fb5DDx0Lj0/TjyAAVlyOlI/AAAAAAAAAD4/5blqVgbE8dM/s320/optimize-slims.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;div class="tips-count"&gt;Tips 5:&lt;/div&gt;
&lt;div class="tips-title"&gt;Backup dan kosongkan System Logs SLiMS secara rutin&lt;/div&gt;
&lt;blockquote&gt;
Lakukan proses backup dengan mendownload log System SLiMS dengan menggunakan fasilitas yang sudah disediakan dan kemudian kosongkan System Log SLiMS. Lakukan ini secara berkala setiap bulan.
&lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;
Kira-kira begitulah tips dan trik dalam proses maintenance SLiMS yang bisa saya share kepada rekan-rekan pengguna SLiMS, ditunggu masukkan tips dan trik yang lainnya dari rekan-rekan semua. Semoga bermanfaat :)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-365274788203372594?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/365274788203372594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=365274788203372594' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/365274788203372594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/365274788203372594'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2011/08/tips-dan-trik-pemeliharaan-aka.html' title='Tips dan Trik Pemeliharaan a.k.a Maintenance Senayan Library Management System (SLiMS)'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-2fb5DDx0Lj0/TjyAAVlyOlI/AAAAAAAAAD4/5blqVgbE8dM/s72-c/optimize-slims.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-8731334993307253649</id><published>2010-08-22T23:13:00.000-07:00</published><updated>2011-08-24T06:15:04.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Kompilasi HandBrake di Ubuntu 10.04 Lucid Lynx</title><content type='html'>Mungkin sebagian dari Anda pengguna Ubuntu, sudah tahu bahwa HandBrake tidak keluar versi binary untuk distro Ubuntu dan Fedora. Padahal HandBrake menurut saya adalah salah satu aplikasi terbaik buat nge-rip DVD/encode video ke format &lt;a href="http://en.wikipedia.org/wiki/Matroska"&gt;MKV&lt;/a&gt; atau &lt;a href="http://en.wikipedia.org/wiki/MPEG-4_Part_14"&gt;MP4&lt;/a&gt;. Alasan resmi dari developernya adalah:&lt;br /&gt;
&lt;blockquote&gt;
"0.9.4 is no longer available due to compatibility issues with the newer version of gnome. "&lt;/blockquote&gt;
Ada juga cara dengan mendownload &lt;i&gt;Nightly build&lt;/i&gt;-nya di &lt;a href="https://edge.launchpad.net/%7Estebbins/+archive/handbrake-snapshots"&gt;Launchpad-nya John Stebbins&lt;/a&gt;.
Buat yang demen cara susah, biar keliatan lebih geek, bisa juga install dengan kompilasi dari &lt;i&gt;Source Code&lt;/i&gt;. Sebelumnya coba cara susah ini, pastiin komputer anda terkoneksi ke Internet dan pastikan paket-paket development berikut ini sudah terinstall:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;yasm&lt;/li&gt;
&lt;li&gt;build-essential&lt;/li&gt;
&lt;li&gt;autoconf&lt;/li&gt;
&lt;li&gt;libtool&lt;/li&gt;
&lt;li&gt;zlib1g-dev&lt;/li&gt;
&lt;li&gt;libbz2-dev&lt;/li&gt;
&lt;li&gt;intltool&lt;/li&gt;
&lt;li&gt;libglib2.0-dev&lt;/li&gt;
&lt;li&gt;libdbus-glib-1-dev&lt;/li&gt;
&lt;li&gt;libgtk2.0-dev&lt;/li&gt;
&lt;li&gt;libgudev-1.0-dev&lt;/li&gt;
&lt;li&gt;libwebkit-dev&lt;/li&gt;
&lt;li&gt;libnotify-dev&lt;/li&gt;
&lt;li&gt;libgstreamer0.10-dev&lt;/li&gt;
&lt;li&gt;libgstreamer-plugins-base0.10-dev&lt;/li&gt;
&lt;/ul&gt;
Bagaimana cara installnya? buka console, lalu seperti biasa ketikkan perintah:
&lt;code&gt;
sudo apt-get install yasm build-essential
autoconf libtool zlib1g-dev libbz2-dev intltool libglib2.0-dev
libdbus-glib-1-dev libgtk2.0-dev libgudev-1.0-dev
libwebkit-dev libnotify-dev libgstreamer0.10-dev
libgstreamer-plugins-base0.10-dev
&lt;/code&gt;

&lt;br /&gt;
Setelah paket-paket tersebut sudah terinstall dengan baik, maka lakukan langkah-langkah sebagai berikut:
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://handbrake.fr/downloads.php"&gt;Download source code HandBrake (Ya iya lahh!!!)&lt;/a&gt; (Pada saat tulisan ini dibuat HandBrake berada pada versi 0.9.4)&lt;/li&gt;
&lt;li&gt;Buka console kesayangan anda dan arahkan ke direktori tempat anda mendowload &lt;i&gt;source code&lt;/i&gt; HandBrake tadi.&lt;/li&gt;
&lt;li&gt;Extract file tarball source code HandBrake dengan perintah:
&lt;code&gt;tar xvf HandBrake-0.9.4.tar.bz2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;masuk ke direktori hasil ekstraksi tadi dengan perintah:
&lt;code&gt;cd HandBrake-0.9.4/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jalankan perintah: &lt;code&gt;./configure --prefix=/usr/local&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Setelah proses selesai, lalu masuk ke direktori &lt;b&gt;build&lt;/b&gt; dengan perintah:
&lt;code&gt;cd ./build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Jalankan make dengan perintah: &lt;code&gt;make&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tunggu proses-nya yang cukup lama selesai (tergantung spesifikasi komputer Anda), dan beberapa dependancies akan didownload otomatis ketika proses berjalan, seperti faac, faad, ffmpeg, dsb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_d8v4QG-m3zE/THIR6AwbDVI/AAAAAAAAACM/fW9-e6avD94/s1600/Screenshot-dicarve%40dicarve:+%7E-Downloads-HandBrake-0.9.4-build.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_d8v4QG-m3zE/THIR6AwbDVI/AAAAAAAAACM/fW9-e6avD94/s320/Screenshot-dicarve%40dicarve:+%7E-Downloads-HandBrake-0.9.4-build.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Setelah proses kompilasi selesai tanpa error, jalankan perintah install:
&lt;code&gt;sudo make install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Untuk mencoba apakah HandBrake sudah berjalan coba jalankan perintah: &lt;code&gt;HandBrakeCLI&lt;/code&gt; untuk versi &lt;em&gt;command line&lt;/em&gt;-nya dan juga &lt;code&gt;ghb&lt;/code&gt; untuk versi dengan GUI GTK2.0-nya&lt;/li&gt;
&lt;li&gt;Bagi yang masih penasaran mengenai cara kompilasinya, silahkan baca manual kompilasi aslinya di&lt;a href="https://trac.handbrake.fr/wiki/CompileOnLinux"&gt; Compiling HandBrake on GNU/Linux&lt;/a&gt;.
&lt;/ol&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_d8v4QG-m3zE/THISHdzM_6I/AAAAAAAAACU/3tNlDpAM_Yc/s1600/Screenshot-Handbrake.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_d8v4QG-m3zE/THISHdzM_6I/AAAAAAAAACU/3tNlDpAM_Yc/s320/Screenshot-Handbrake.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Selamat! sekarang HandBrake sudah bisa digunakan untuk me-rip DVD kesayangan anda dalam format MKV atau MP4, bisa lewat GUI ataupun kalo mau merasa lebih geeky lagi buang jauh-jauh GUI, pake versi &lt;em&gt;command line&lt;/em&gt;-nya :P :D!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-8731334993307253649?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/8731334993307253649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=8731334993307253649' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/8731334993307253649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/8731334993307253649'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2010/08/kompilasi-handbrake-di-ubuntu-1004.html' title='Kompilasi HandBrake di Ubuntu 10.04 Lucid Lynx'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_d8v4QG-m3zE/THIR6AwbDVI/AAAAAAAAACM/fW9-e6avD94/s72-c/Screenshot-dicarve%40dicarve:+%7E-Downloads-HandBrake-0.9.4-build.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-425380239358467735</id><published>2010-05-25T20:32:00.000-07:00</published><updated>2011-08-24T06:20:09.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>Mengatasi problem "wget" ketika mendownload di balik proxy (Ubuntu Lucid Lynx)</title><content type='html'>&lt;p&gt;
Beberapa waktu yang lalu saya meng-upgrade OS GNU/Linux &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Karmic Koala (9.10) di MacbookPro saya ke versi LTS terbaru, Lucid Lynx (10.04). Saya upgrade menggunakan versi alternate yang saya download dari &lt;a href="http://kambing.ui.ac.id/"&gt;Kambing&lt;/a&gt;. Semua proses berjalan lancar, Lucid terinstall dengan ciamik-nya di MacbookPro dan hampir semua tombol fungsi spesial di Mac berjalan dengan baik.
&lt;/p&gt;
&lt;p&gt;
Masalah muncul ketika saya akan mendownload website untuk mirroring dengan program command-line favorit saya, &lt;b&gt;wget&lt;/b&gt;. Kantor saya menggunakan proxy untuk koneksi Internet, sehingga untuk menjalankan perintah-perintah dari console yang menjalankan download seperti &lt;b&gt;apt-get install&lt;/b&gt; atau &lt;b&gt;apt-get update&lt;/b&gt; misalnya kita harus men-set environment variable http_proxy dan ftp_proxy terlebih dahulu. Pada desktop GNOME sudah disediakan aplikasi "&lt;b&gt;Network Proxy&lt;/b&gt;" yang terletak di &lt;b&gt;System-&amp;gt;Preferences&lt;/b&gt;, yang memudahkan kita mengubah setting proxy jaringan. Enaknya lagi program ini mendukung &lt;i&gt;multiple profile proxy&lt;/i&gt; yang memudahkan kita untuk menyimpan lebih dari satu setting proxy, kemudian tinggal mengubahnya sesuai dengan kebutuhan kita.
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_d8v4QG-m3zE/S_yb96x8Q3I/AAAAAAAAAB8/QklfQk8Mxj8/s1600/Gambar-Layar-Pengaturan+Proksi+Jaringan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_d8v4QG-m3zE/S_yb96x8Q3I/AAAAAAAAAB8/QklfQk8Mxj8/s320/Gambar-Layar-Pengaturan+Proksi+Jaringan.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Sayangnya, pada Ubuntu Lucid Lynx, entah kenapa wget tidak terpengaruh dengan setting proxy ini, tetapi tools apt dan yang lainnya terpengaruh.
Setelah berkeliling internet mencari-cari solusinya, dan akhirnya menemukan solusinya di &lt;a href="https://bugs.launchpad.net/ubuntu/+source/wget/+bug/232469"&gt;Lauchpad&lt;/a&gt;, ternyata masalahnya sangat simple!!! Ternyata masalahnya ada di environment variable &lt;strong&gt;no_proxy&lt;/strong&gt; yang secara "tidak sengaja" menaruh karakter "," (koma) di bagian akhir!!! PLLOOOKKKK!!! (tepok jidat)
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_d8v4QG-m3zE/S_ycsHraVEI/AAAAAAAAACE/Hv6rANWDsrU/s1600/Gambar-Layar-dicarve%40dicarve:+%7E-Pictures-Wallpapers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d8v4QG-m3zE/S_ycsHraVEI/AAAAAAAAACE/Hv6rANWDsrU/s320/Gambar-Layar-dicarve%40dicarve:+%7E-Pictures-Wallpapers.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Solusinya adalah dengan menghilangkan tanda koma di bagian akhir tersebut, dengan cara men-set ulang variable no_proxy di console:
&lt;code&gt;$export no_proxy=daftar-alamat-tidak-kena-proxy1,daftar-alamat-tidak-kena-proxy2,daftar-alamat-tidak-kena-proxy3&lt;/code&gt;
dan kemudian wget bisa berjalan dengan normal kembali seperti biasa walau ada proxy. Jangan lupa juga cek file konfigurasi wget yang terletak di "/etc/wgetrc" dan pastikan setting &lt;b&gt;use_proxy=on&lt;/b&gt; aktif dan setting &lt;b&gt;no_proxy&lt;/b&gt; ditulis dengan benar (bila ada).
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-425380239358467735?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/425380239358467735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=425380239358467735' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/425380239358467735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/425380239358467735'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2010/05/mengatasi-problem-wget-ketika.html' title='Mengatasi problem &quot;wget&quot; ketika mendownload di balik proxy (Ubuntu Lucid Lynx)'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d8v4QG-m3zE/S_yb96x8Q3I/AAAAAAAAAB8/QklfQk8Mxj8/s72-c/Gambar-Layar-Pengaturan+Proksi+Jaringan.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2781001275227970084</id><published>2010-04-29T03:16:00.000-07:00</published><updated>2010-04-29T04:07:37.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='macintosh'/><category scheme='http://www.blogger.com/atom/ns#' term='full-text indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>Compile Sphinx indexing engine di Mac OSX 10.6.3</title><content type='html'>Cari solusi &lt;i&gt;indexing database standalone&lt;/i&gt; yang handal? Salah satu solusinya adalah &lt;a href="http://www.sphinxsearch.com/about.html"&gt;Sphinx&lt;/a&gt;. Sphinx adalah engine pengindeksan full-text yang didesain untuk terintegrasi dengan baik ke RDBMS-RDBMS macem MySQL dan PostgreSQL, dan yang asiknya laginya Sphinx sudah menyediakan API ke bahasa-bahasa scripting populer macem PHP, Python, Perl dan Ruby.
&lt;br /&gt;
Karena saya develop aplikasi pake bahasa skripting PHP, maka Sphinx merupakan solusi yang pas untuk saya. Salah satu fitur yang bikin saya &lt;i&gt;ngiler&lt;/i&gt; adalah statement berikut ini:
&lt;br /&gt;
&lt;blockquote&gt;
"high search speed (avg query is under 0.1 sec on 2-4 GB text collections)"&lt;/blockquote&gt;
Wuiidddiihhh kalo dibandingin sama indexing native mysql, 100 ribu records yang besarnya sekitar 30MB aje ude empot-empotan!!! Statement berikutnya juga bikin &lt;i&gt;ileran&lt;/i&gt;
&lt;br /&gt;
&lt;blockquote&gt;
"high scalability (upto 100 GB of text, upto 100 M documents on a single CPU)"&lt;/blockquote&gt;
Saat tulisan ini dibuat, saya develop aplikasi web pake Macbook Pro, OS Snow Leopard 10.6.3, dan karena saya males compile-compile Apache, MySQL dan PHP (kecuali di OS GNU/Linux entah kenapa kurang apdol rasanya kalo ga di-compile sendiri heheheheee *kabboorr*), jadilah saya pake XAMPP for Mac OSX versi 1.7.2.
&lt;br /&gt;
Karena binary Sphinx kage ade buat Mac OSX, cuman ade buat &lt;i&gt;"Mikocok Winslow"&lt;/i&gt;, maka itu berarti kite harus compile sendiri Sphinx. ALHAMDULILLAH WA SYUKURILLAH! OSX udah nyedian Xcode yang didalemnya udah ada semua tool development UNIX macem gcc, g++, make, automake, autoconf, you name it lah! GRATIS lagi! *Getokin Apple kalo sampe paket XCode dibikin berbayar*. ALHAMDULILLAH lagi, karena Mac OSX basisnya UNIX juga (Darwin+FreeBSD), maka console dengan shell prompt Bash yang kesohor itupun ude ade by default di OSX *ffiuuuuhhhhh, can't live without those consoles*. ALHAMDULILLAH lagi! struktur direktori Mac OSX yang kaga jauh beda sama UNIX atau GNU/Linux!
&lt;br /&gt;
Jadilah saya &lt;i&gt;"iseng-iseng berhadiah"&lt;/i&gt; compile Sphinx di Macbook Pro saya. Yang pasti sebelum mulai compile Sphinx, download dan install dahulu library-library berikut ini (beserta dengan header-header developmentnya!! kudu, wajib!!):
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Source code terbaru &lt;a href="http://www.sphinxsearch.com/"&gt;Sphinx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Source code &lt;a href="http://snowball.tartarus.org/"&gt;libstemmer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Source code dan file-file header MySQL kalo kita mau integrasikan Sphinx dengan MySQL&lt;/li&gt;
&lt;li&gt;Source code dan file-file header PostgreSQL kalo kita mau integrasikan Sphinx dengan PostgreSQL&lt;/li&gt;
&lt;li&gt;Bagi yang menggunakan XAMPP bisa lebih mudah, download paket XAMPP-Dev yang sesuai dengan versi yang kita pake&lt;/li&gt;
&lt;/ol&gt;
Proses instalasinya kira-kira begini:
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Buka aplikasi "Terminal", kalo belom tau coba cari di /Applications/Utilities/&lt;/li&gt;
&lt;li&gt;Ekstrak file distribusi Sphinx pake perintah:
&lt;code&gt;tar xvf sphinx-0.9.9.tar.gz&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ekstrak file distribusi libstemmer dan kopikan folder ekstraksi libstemmer ke dalam folder source Sphinx yang baru saja kita ekstrak pake perintah:
&lt;code&gt;cp -r ./libstemmer_c sphinx-0.9.9&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Masuk ke direktori hasil ekstraksi pake perintah:
&lt;code&gt;cd sphinx-0.9.9&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
Karena saya pake XAMPP Mac OSX perintah configure saya seperti ini:
&lt;code&gt;
Dicarve@Macbook sphinx-0.9.9$ CFLAGS="-O -arch i386" CXXFLAGS="-O -arch i386 -I/Applications/XAMPP/xamppfiles/include/ -I/Applications/XAMPP/xamppfiles/include/mysql"  LDFLAGS="-arch i386 -L/Applications/XAMPP/xamppfiles/lib" ./configure --prefix=/usr/local/ --with-mysql -with-libstemmer --with-mysql-includes=/Applications/XAMPP/xamppfiles/include/mysql --with-mysql-libs=/Applications/XAMPP/xamppfiles/lib/mysql
&lt;/code&gt;
Saya sempet agak-agak stress karena diawal-awal proses kompilasi gagal melulu! setelah baca-baca keliling Internet dan baca &lt;a href="http://blog.d27n.com/2009/08/26/mac-os-x-snow-leopard-rails-mysql-and-sphinx/"&gt;disini&lt;/a&gt;, ternyata sphinx-nye harus di-compile di mode 32 bit! *karena by default gcc di Mac OSX compile di mode 64 bit*
&lt;/li&gt;
&lt;li&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_d8v4QG-m3zE/S9ll7Z8csnI/AAAAAAAAAB0/bozEq6LRIAk/s1600/Screen+shot+2010-04-29+at+5.56.14+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d8v4QG-m3zE/S9ll7Z8csnI/AAAAAAAAAB0/bozEq6LRIAk/s320/Screen+shot+2010-04-29+at+5.56.14+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Apabila proses konfigurasi berjalan lancar tanpa masalah, maka lanjutkan dengan perintah berikut secara berurutan:
&lt;code&gt;
$ make&lt;br /&gt;
$ sudo make install
&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
Horreee Sphinx berhasil diinstall!!!! Yiiihhuuu!!! Selanjutnya tinggal konfigurasi Sphinx biar bisa &lt;i&gt;"bicara"&lt;/i&gt; sama MySQL atau PostgreSQL, selamat mencoba, dan jangan lupa baca dokumentasi sphinx di website resminya, RTFM!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2781001275227970084?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2781001275227970084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2781001275227970084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2781001275227970084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2781001275227970084'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2010/04/compile-sphinx-indexing-engine-di-mac.html' title='Compile Sphinx indexing engine di Mac OSX 10.6.3'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_d8v4QG-m3zE/S9ll7Z8csnI/AAAAAAAAAB0/bozEq6LRIAk/s72-c/Screen+shot+2010-04-29+at+5.56.14+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2800305101908070628</id><published>2010-01-06T23:48:00.001-08:00</published><updated>2010-01-07T01:03:17.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tunneling'/><category scheme='http://www.blogger.com/atom/ns#' term='sourcecodemanagement'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Emang Enak Kepentok Proxy!!!</title><content type='html'>&lt;p&gt;
Mengembangkan software dengan menggunakan aplikasi source code management (SCM) emang enak. Kami, developer SENAYAN Library Management System (SLiMS) pake &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; buat source code versioningnya. Asiknya pake git dibandingkan dengan aplikasi SCM lain adalah git menerapkan model ter-distribusi, tidak &lt;span style="font-style: italic;"&gt;centralize&lt;/span&gt; seperti cvs. Asyiknya lagi pake git, kita ga harus terkoneksi ke server, kita bisa pake lingkungan hard disk lokal untuk buat branch-branch dari project kita.
&lt;p/&gt;

&lt;p&gt;
Saya ga akan ngebahas cara make git disini, tapi saya ngebahas bagaimana kalau kita mau push dan pull request dari server repository git di internet, tapi kepentok sama proxy jaringan dan firewall yang biasanya cuman ngebolehin port 80 atau 3182.
&lt;p/&gt;

&lt;p&gt;
Tapi itulah keindahan dunia open source, "That's The Beauty of Open Source", udah ada aplikasi yang bisa bantu kita tunneling data dari git, yang by default pake protokol SSL. aplikasi command line ini namanya &lt;a href="http://www.agroman.net/corkscrew/"&gt;Corkscrew&lt;/a&gt;, dan tersedia untuk semua varian GNU/Linux, UNIX, BSD, Mac OSX dan MS Windows (tapi mesti install Cygwin dulu, HAHAHHAHAHA!!! EMANG ENAKK!!!!). Apa pulak "Corkscrew" ini? ngutip langsung dari websitenya :

&lt;blockquote&gt;
"&lt;b&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Corkscrew is a tool for tunneling SSH through HTTP proxies&lt;/span&gt;&lt;/b&gt;."&lt;br /&gt;
&lt;/blockquote&gt;
Versi terakhir ketika tulisan ini diketik dan dipikirkan adalah versi 2.0.
&lt;p/&gt;

&lt;p&gt;
Buat make Corkscrew, caranya gampang banget, kalo ga bisa dibilang susah :D, cukup download source code-nya dan kemudian compile deh pake compiler C favorit anda hehehheeheee..... Kalau anda pake GNU/Linux, biasanya gcc by default ude keinstall, kalo enggak yang nasib, hehheheee.... becanda! kalo ga ada gcc ya install lah dari repo distro anda :)). Step instalasinya setelah download kira-kira seperti ini :
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Buka console/terminal kesayangan anda (pliss, jangan buka DOS atau Command Prompt!!)&lt;/li&gt;
&lt;li&gt;Extract file hasil download Corkscrew pake perintah: tar xvzf corkscrew-2.0.tar.gz&lt;/li&gt;
&lt;li&gt;Masuk ke dalam direktori hasil ekstract: cd corkscrew-2.0&lt;/li&gt;
&lt;li&gt;Jalankan perintah berikut secara berurutan: 
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
./configure --prefix=/usr/local&lt;br /&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
make&lt;br /&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
sudo make install&lt;br /&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
Setelah instalasi Corkscrew berhasil, maka langkah selanjutnya adalah mengkonfigurasi ssh agar bisa tunneling SSL lewat proxy. Buka file yang namanya "config", yang ada di folder ".ssh" di home directory user. Misalnya home directory saya di "/home/dicarve" maka berarti letaknya ada di "/home/dicarve/.ssh/". Kalo file "config" belom ada.......... ya dibuatlah pake text editor, pake vi, pake vim, pake emacs, pake nano (halahhhh). Edit file config tersebut dan isikan kira-kira seperti ini :
&lt;pre&gt;
Host &lt;b&gt;gitproxy&lt;/b&gt; 
    User git
    HostName ssh.github.com
    Port 443
    ProxyCommand /usr/local/bin/corkscrew &lt;b&gt;alamat-atau-no-IP-proxy&lt;/b&gt; &lt;b&gt;port-proxy&lt;/b&gt; %h %p
    IdentityFile /home/dicarve/.ssh/id_dsa
&lt;/pre&gt;
Jangan lupa di-save!! :D
&lt;/p&gt;

&lt;p&gt;
Setelah semua itu selesai, maka nanti ketika kita mau pull atau push data ke repository server git, misalnya SLiMS di repo-kan di &lt;a href="http://github.com/slims"&gt;github/slims&lt;/a&gt;, perintah git yang kita lakukan bukannya begini:
&lt;pre&gt;
git pull git@github.com:slims/s3st13.git master
&lt;/pre&gt;
Tapi jadi begini:
&lt;pre&gt;
git pull git@&lt;b&gt;gitproxy&lt;/b&gt;:slims/s3st13.git master
&lt;/pre&gt;
atau kalo mau push
&lt;pre&gt;
git push git@&lt;b&gt;gitproxy&lt;/b&gt;:slims/s3st13.git master
&lt;/pre&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2800305101908070628?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2800305101908070628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2800305101908070628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2800305101908070628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2800305101908070628'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2010/01/emang-enak-kepentok-proxy.html' title='Emang Enak Kepentok Proxy!!!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-4796286026605834155</id><published>2009-12-03T17:23:00.000-08:00</published><updated>2011-08-24T06:19:11.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slims'/><category scheme='http://www.blogger.com/atom/ns#' term='senayan'/><title type='text'>Workshop Nasional SENAYAN Library Management System!!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_d8v4QG-m3zE/SxhkY6pgF8I/AAAAAAAAABo/WIn-NWeOGp0/s1600-h/senayan-wp-big-preview.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_d8v4QG-m3zE/SxhkY6pgF8I/AAAAAAAAABo/WIn-NWeOGp0/s400/senayan-wp-big-preview.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p&gt;
SENAYAN DEVELOPER COMMUNITY (SDC) kembali akan ngadain Workshop Nasional SENAYAN Library Management System (SLiMS), yang tepatnya akan dilaksanakan di Hotel Paragon Jakarta (daerah Menteng, Jakarta Pusat), pada tanggal 14 – 17 Desember 2009. Pastinya karena Workshop ini diadakan selama 4 hari 3 malam full, jadi materi yang diberikan juga akan sangat banyak dan men-detail.
&lt;/p&gt;

&lt;p&gt;
Workshop ini ditujukan kepada para pustakawan atau perorangan yang ingin memanfaatkan SLiMS untuk mengelola koleksi ditempat kerja. Materi workshop dirancang untuk membantu para peserta agar dapat segera mengaplikasikan SLiMS di tempat masing-masing. Dibagi dalam 10 (Sepuluh) modul dasar ditambah materi kustomisasi dan konversi data, pengetahuan dasar perpustakaan akan sangat membantu peserta memahami materi dan panduan yang di sampaikan. Dalam pelatihan, peserta akan menggunakan versi terbaru SLiMS – atau juga dikenal dengan SENAYAN 3 stable 12.
&lt;/p&gt;

&lt;p&gt;
Untuk brosur pendaftaran serta surat undangan bisa di-unduh (download) di &lt;a href="http://www.gaia-db.com/workshop/"&gt;Workshop SLIMS&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Untuk anda yang ingin belajar menggunakan SENAYAN, ngoprek, nginstall SENAYAN di GNU/Linux macem Ubuntu, Fedora atau OpenSUSE, pengen belajar cara konversi data dari database ISIS, Athenaeum atau database lainnya, jangan lewatin Workshop SLiMS ini. Trainer-nya juga langsung para Developer ASELI SLiMS!!!.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-4796286026605834155?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/4796286026605834155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=4796286026605834155' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/4796286026605834155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/4796286026605834155'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2009/12/workshop-nasional-senayan-library.html' title='Workshop Nasional SENAYAN Library Management System!!!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d8v4QG-m3zE/SxhkY6pgF8I/AAAAAAAAABo/WIn-NWeOGp0/s72-c/senayan-wp-big-preview.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2172625305830737421</id><published>2009-08-26T21:28:00.000-07:00</published><updated>2011-08-24T06:17:32.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>jQuery, I Love You Full!</title><content type='html'>&lt;p&gt;
Di postingan sebelumnya saya membahas &lt;a href="http://www.prototypejs.org"&gt;Prototype&lt;/a&gt;, sebuah framework Javascript ciamik untuk manipulasi DOM dan AJAX. Kali ini saya iseng-iseng coba sebuah framework Javascript yang sudah kesohor juga yaitu &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt;. kalau menurut hemat saya, jQuery punya model syntax yang lebih elegan dibandingkan dengan Prototype, hal ini bisa kita lihat dalam model object jQuery yang lebih simple, terutama dalam penanganan event. Penanganan event di jQuery nemungkinkan kita benar-benar memisahkan antara layer tampilan dengan layer logic pemrograman javascript.
&lt;/p&gt;

&lt;p&gt;
Perbedaan mendasar antara jQuery dengan Prototype adalah, fungsi &lt;span style="font-weight:bold;"&gt;$&lt;/span&gt; pada jQuery menerima argumen string Selector CSS atau XPath dan selalu mengembalikan objek jQuery dalam bentuk Array atau List, sedang pada Prototype fungsi &lt;span style="font-weight:bold;"&gt;$&lt;/span&gt; hanya menerima string ID dari element yang akan kita manipulasi dan mengembalikan object DOM yang sudah di-extend oleh metode-metode Prototype (walaupun sebenarnya Prototype punya fungsi yang serupa dengan &lt;span style="font-weight:bold;"&gt;$&lt;/span&gt;-nya jQuery, yaitu fungsi &lt;span style="font-weight:bold;"&gt;$$&lt;/span&gt; dan juga metode class Element, &lt;span style="font-weight:bold;"&gt;select&lt;/span&gt;, yang juga menerima argument string Selector CSS atau XPath). IMHO hal ini membuat jQuery menjadi lebih efisien, karena semua metode jQuery (dan juga semua metode plugins-nya) sudah pasti mengolah Array atau List objek DOM jQuery.
&lt;/p&gt;

&lt;p&gt;
Contohnya, untuk me-&lt;span style="font-style:italic;"&gt;register&lt;/span&gt; event memunculkan box alert apabila ada link dengan id 'klikSaya' di-klik, kita cukup menulis kode seperti ini pada bagian HEAD dokumen HTML kita atau bisa juga pada bagian awal BODY dokumen HTML  :

&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="javascript"&gt;
&lt;span style="color: #00bbdd;"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/html.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;html&lt;/span&gt;&lt;/a&gt; xmlns=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; xml:&lt;span style="color: #000066;"&gt;lang&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;en&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;lang&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/head.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/meta.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;meta&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #000066;"&gt;http-equiv&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;content-type&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;content&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/html; charset=utf-8&amp;quot;&lt;/span&gt; /&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;script&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #000066;"&gt;type&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;document&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;ready&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'#klikSaya'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;click&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #000066;"&gt;alert&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'Hallooowww anda telah meng-klik saya!'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
Dan pada BODY dokumen HTML, kita cukup menuliskan kode seperti ini :
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="html4strict"&gt;&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/body.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/a.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;klikSaya&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;href&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Klik Saya Donk Ahhh!&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
Apalah artinya aplikasi Web 2.0 tanpa AJAX, rasanya kurang lengkap tanpa metode nyang satu ini. jQuery menyediakan API AJAX yang cukup lengkap untuk AJAX. Contoh di BODY dokumen HTML kita punya seperti ini:
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="html4strict"&gt;&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/body.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/a.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;klikAJAX&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;href&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Klik Saya Buat Munculin Konten dari AJAX di bawah ini :&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;a href="http://december.com/html/4/element/div.html"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #000066;"&gt;id&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;ajaxContainer&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #ddbb00;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
Maka di bagian HEAD kita bisa menuliskan kode Javascript seperti ini :
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="javascript"&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;document&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;ready&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'#klikAJAX'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;click&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; content = $.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; url: &lt;span style="color: #3366CC;"&gt;&amp;quot;kontenAJAX.php&amp;quot;&lt;/span&gt;, async: &lt;span style="color: #003366; font-weight: bold;"&gt;false&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;responseText&lt;/span&gt;;
        &lt;span style="color: #009900; font-style: italic;"&gt;// perhatikan opsi 'async', apabila diset false, maka semua event lain di browser di-block&lt;/span&gt;
        &lt;span style="color: #009900; font-style: italic;"&gt;// sehingga tidak ada proses AJAX dilakukan bersamaan&lt;/span&gt;
        $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'#ajaxContainer'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;html&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;content&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;
Sangat mudah bukan?
&lt;/p&gt;

&lt;p&gt;
jQuery juga sudah menyediakan metode-metode untuk animasi dasar, seperti fadeIn, FadeOut, pullDown, pullUp, hide, show dan animate. Contohnya bisa dilihat sebagai berikut :
&lt;div&gt;&lt;a class="show-hidden" href="#"&gt;Klik Saya Donk!&lt;/a&gt;&lt;/div&gt;
&lt;div class="hidden-object" style="display: none; padding: 5px; border: 1px solid #CCC; background: #ccffe5; font-style: italic"&gt;
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things...
&lt;a class="hide-hidden" href="#"&gt;Sembunyiin Lagi Ahh!&lt;/a&gt;
&lt;/div&gt;
Makkkk!!! gampang kali!! kode untuk efek animasi di atas hanya begini saja :

&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="javascript"&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;document&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;ready&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'a.show-hidden'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;click&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        evt.&lt;span style="color: #006600;"&gt;preventDefault&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.hidden-object'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;slideDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;normal&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
    $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'a.hide-hidden'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;click&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        evt.&lt;span style="color: #006600;"&gt;preventDefault&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'.hidden-object'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;slideUp&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;normal&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
Seperti halnya Prototype, jQuery didesain agar penulisan kode semakin ringkas dan elegan, yang pada akhirnya bisa memperkecil ukuran file kode Javascript kita. Hal ini didapat dengan penerapan &lt;em&gt;Command Chaining&lt;/em&gt;. Setiap hasil fungsi &lt;span style="font-weight:bold;"&gt;$&lt;/span&gt; bisa di-chaing atau digabung dengan fungsi-fungsi jQuery lain. Misalnya bisa kita lihat pada contoh kode berikut :
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="javascript"&gt;&lt;span style="color: #009900; font-style: italic;"&gt;// temukan semua tag 'A' dibawah element DOM dengan ID 'menu'&lt;/span&gt;
&lt;span style="color: #009900; font-style: italic;"&gt;// dan daftarkan event 'click' sekaligus event 'mouseover'&lt;/span&gt;
&lt;span style="color: #009900; font-style: italic;"&gt;// dan juga sekaligus set style CSS dari setiap tag 'A' yang ditemukan&lt;/span&gt;
&lt;span style="color: #009900; font-style: italic;"&gt;// dengan display = block&lt;/span&gt;
$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'#menu'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;find&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'a'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;click&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #009900; font-style: italic;"&gt;// lakukan sesuatu untuk setiap tag 'A' disini&lt;/span&gt;
    &lt;span style="color: #009900; font-style: italic;"&gt;// ketika di-klik&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;mouseover&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;evt&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #009900; font-style: italic;"&gt;// lakukan sesuatu untuk setiap tag 'A' disini&lt;/span&gt;
    &lt;span style="color: #009900; font-style: italic;"&gt;// ketika cursor melewati tag 'A'&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;css&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'display'&lt;/span&gt;, &lt;span style="color: #3366CC;"&gt;'block'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
Gampang yak? :D
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2172625305830737421?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2172625305830737421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2172625305830737421' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2172625305830737421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2172625305830737421'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2009/08/jquery-i-love-you-full.html' title='jQuery, I Love You Full!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-6153251996034946708</id><published>2009-07-15T22:23:00.000-07:00</published><updated>2011-08-24T06:21:11.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='library'/><category scheme='http://www.blogger.com/atom/ns#' term='slims'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='senayan'/><title type='text'>Instalasi library YAZ di PHP</title><content type='html'>&lt;p&gt;
Pada &lt;a href="http://senayan.diknas.go.id" target="_blank"&gt;SENAYAN 3 Stable 10&lt;/a&gt;, saya menambahkan kemampuan untuk mengambil data melalui protokol Z39.50 pada modul &lt;span style="font-weight:bold;"&gt;Bibliography&lt;/span&gt; (Pengatalogan).  Fitur ini memanfaatkan library &lt;a href="http://www.indexdata.com/phpyaz" target="_blank"&gt;PHP YAZ&lt;/a&gt;. YAZ sendiri adalah sebuah library untuk bahasa C yang dapat digunakan untuk membangun aplikasi server dan klien protokol Z39.50/SRW/SRU. Untuk lebih lengkapnya silahkan anda arahkan browser kesayangan anda ke laman resmi &lt;a href="http://www.indexdata.com/phpyaz" target="_blank"&gt;YAZ&lt;/a&gt;.
Fitur Z39.50 di SENAYAN 3 Stable 10 diharapkan akan semakin memudahkan pustakawan untuk mengambil data langsung ke database online Library of Congress yang kesohor itu. Cukup masukan nomor ISBN, tunggu proses pengambilan data selesai, apabila berhasil anda tinggal memilih data mana yang akan dimasukkan ke dalam database SENAYAN anda. Hidup pustakawan semakin mudah kalau pakai SENAYAN hehheeheee :).
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_d8v4QG-m3zE/Sl7_CyVGBPI/AAAAAAAAAAg/Eo9AyBZRYMU/s1600-h/SENAYAN-z3950-service.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 217px;" src="http://2.bp.blogspot.com/_d8v4QG-m3zE/Sl7_CyVGBPI/AAAAAAAAAAg/Eo9AyBZRYMU/s320/SENAYAN-z3950-service.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5359001029952537842" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
Untuk yang belum mengetahui apa itu protokol Z39.50, Z39.50 adalah protokol klien server berstandar internasional (ISO 23950) untuk penelusuran dan temu kembali informasi antar komputer. Penerapan protokol ini memungkinkan beberapa institusi untuk saling bertukar data, menelusur dan menemukan kembali data (biasanya rekod bibliografis/katalog koleksi perpustakaan) dengan antar muka yang sama dan teknik penelusuran yang sama.
&lt;/p&gt;

&lt;p&gt;
Untungnya pengembang YAZ juga mengembangkan extension library YAZ untuk PHP. Untuk menginstall dan mengaktifkan library YAZ di PHP caranya cukup mudah :
&lt;h3&gt;Windows&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
Unduh/download versi terakhir &lt;strong&gt;php_yaz.dll&lt;/strong&gt; di repositori &lt;a href="http://ftp.indexdata.dk/pub/phpyaz/win32/"&gt;PHP YAZ&lt;/a&gt; dan kopi ke folder/direktori extension PHP anda. Misal anda menginstall PHP di &lt;i&gt;C:\php&lt;/i&gt;, maka kopi file php_yaz.dll ke direktori &lt;i&gt;C:\php\ext&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;
Unduh/download versi terakhir &lt;a href="http://www.indexdata.dk/yaz/" target="_blank"&gt;YAZ toolkit&lt;/a&gt; dan lakukan instalasi.
&lt;/li&gt;
&lt;li&gt;
Masuk ke direktori instalasi YAZ anda (biasanya terletak di C:\Program Files\YAZ\bin) dan kopi 4 file DLL (atau biar gampang semua file DLL juga boleh :D) yang ada di dalamnya ke direktori C:\WINDOWS\system32 dan C:\WINDOWS\system. Bisa juga apabila anda menggunakan web server Apache, kopikan semua DLL-nya YAZ ke folder bin-nya instalasi Apache.
&lt;/li&gt;
&lt;li&gt;
Buka file konfigurasi PHP anda (php.ini) dan tambahkan atau hilangkan tanda ;(titik koma) baris yang bertuliskan seperti ini :&lt;br /&gt;
&lt;code&gt;
extension=php_yaz.dll
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
Restart web server anda untuk menyelesaikan proses instalasi dan setup dan kemudian cek dengan script &lt;code&gt;&lt;?php phpinfo(); ?&gt;&lt;/code&gt; apakah library YAZ sudah terinstall dengan baik.
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_d8v4QG-m3zE/Sl79-akSNrI/AAAAAAAAAAY/k847QSIyYkE/s1600-h/php-yaz-installed.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 74px;" src="http://4.bp.blogspot.com/_d8v4QG-m3zE/Sl79-akSNrI/AAAAAAAAAAY/k847QSIyYkE/s320/php-yaz-installed.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5358999855342696114" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;GNU/Linux atau varian UNIX&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
Download source code rilis stable &lt;a href="http://ftp.indexdata.dk/pub/yaz/"&gt;YAZ terbaru&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
Download source code rilis &lt;a href="http://ftp.indexdata.dk/pub/phpyaz/"&gt;PHP YAZ terbaru&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Pastikan compiler GCC, make, libtool dan tools development lainnya sudah terinstall di sistem anda.&lt;/li&gt;
&lt;li&gt;
Buka console/terminal, ekstrak file tarball YAZ dengan menggunakan perintah &lt;code&gt;tar xvzf yaz-3.0.47.tar.gz&lt;/code&gt; dan kemudian masuk dalam direktori hasil ekstraksi YAZ dengan perintah &lt;code&gt;cd yaz-3.0.47&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
Jalankan perintah-perintah berikut secara berurutan :
&lt;pre&gt;
&lt;code&gt;
./configure --prefix=/usr
make
sudo make install
&lt;/code&gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
Ekstrak tarball PHP YAZ dengan perintah &lt;code&gt;tar xvzf php-yaz-1.0.14.tar.gz&lt;/code&gt; dan kemudian masuk ke direktori hasil ekstraksi dengan perintah &lt;code&gt;cd php-yaz-1.0.14&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
Pastikan anda memiliki program &lt;strong&gt;phpize&lt;/strong&gt;, bila tidak silahkan lakukan instalasi melalui perintah &lt;code&gt;sudo apt-get install php-dev&lt;/code&gt; untuk distro Debian dan turunannya atau &lt;code&gt;yum install php-dev&lt;/code&gt; untuk distro distro turunan Red Hat. Jalankan perintah-perintah berikut secara berurutan :
&lt;pre&gt;
&lt;code&gt;
phpize
./configure --with-php-config=/usr/bin/php-config
make
sudo make install
&lt;/code&gt;
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
Buka file konfigurasi PHP anda (php.ini) dengan editor teks favorit anda dan tambahkan atau hilangkan tanda ;(titik koma) pada baris yang bertuliskan seperti ini :&lt;br /&gt;
&lt;code&gt;
extension=yaz.so
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
Restart service web server anda dengan menjalankan perintah &lt;code&gt;service apache restart&lt;/code&gt; sebagai user ROOT atau kalau tidak bisa coba jalankan perintah &lt;code&gt;/etc/init.d/httpd restart&lt;/code&gt;. 
&lt;/li&gt;
&lt;li&gt;
Cek dengan script &lt;code&gt;&lt;?php phpinfo(); ?&gt;&lt;/code&gt; apakah library YAZ sudah terinstall dengan baik.
&lt;p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_d8v4QG-m3zE/Sl79-akSNrI/AAAAAAAAAAY/k847QSIyYkE/s1600-h/php-yaz-installed.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 74px;" src="http://4.bp.blogspot.com/_d8v4QG-m3zE/Sl79-akSNrI/AAAAAAAAAAY/k847QSIyYkE/s320/php-yaz-installed.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5358999855342696114" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-6153251996034946708?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/6153251996034946708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=6153251996034946708' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6153251996034946708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6153251996034946708'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2009/07/instalasi-library-yaz-di-php.html' title='Instalasi library YAZ di PHP'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d8v4QG-m3zE/Sl7_CyVGBPI/AAAAAAAAAAg/Eo9AyBZRYMU/s72-c/SENAYAN-z3950-service.png' height='72' width='72'/><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-4952504852163752654</id><published>2008-11-18T05:52:00.000-08:00</published><updated>2011-08-24T06:18:55.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Alya Bakhita</title><content type='html'>&lt;p&gt;
Alya Bakhita. Yang Tinggi dan Beruntung. Anak dan putri pertama-ku dengan istri tercinta, Lia.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;div style="clear: both; margin: 0 auto;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3041128602/" title="Alya si Lucu by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3165/3041128602_bdd65efd96.jpg" width="340" height="500" alt="Alya si Lucu" style="border: 1px solid #999999" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; text-align: center"&gt;
Alya Bakhita
&lt;/div&gt;
&lt;/p&gt;

&lt;p align="center"&gt;
&lt;div style="clear: both; margin: 0 auto;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3041222310/" title="Alya Bakhita pake baju kodok by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3216/3041222310_8a1eb1ed6d.jpg" width="344" height="500" alt="Alya Bakhita pake baju kodok" style="border: 1px solid #999999" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; text-align: center"&gt;
Alya Pake Baju Kodok
&lt;/div&gt;
&lt;/p&gt;

&lt;p align="center"&gt;
&lt;div style="clear: both; margin: 0 auto;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3041128604/" title="Ayah Bakhita Bunda by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3156/3041128604_15b199e901_m.jpg" width="240" height="163" alt="Ayah Bakhita Bunda" style="border: 1px solid #999999" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold"&gt;
Alya Bakhita, Bunda dan Ayah
&lt;/div&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-4952504852163752654?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/4952504852163752654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=4952504852163752654' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/4952504852163752654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/4952504852163752654'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2008/11/alya-bakhita.html' title='Alya Bakhita'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3165/3041128602_bdd65efd96_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-1468777229895101165</id><published>2008-11-06T16:25:00.000-08:00</published><updated>2011-08-24T06:18:55.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Anak Pertama-ku Telah Lahir!</title><content type='html'>&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Alhamdulillah Wa Syukurillah&lt;/span&gt;, ALLAH SWT telah melengkapi kehidupan keluarga saya dan istri, dengan memberikan amanah-nya yang paling menakjubkan di alam semesta, seorang &lt;span style="font-weight:bold;"&gt;anak&lt;/span&gt;. ALLAH SWT telah meng-karuniai kami seorang putri yang cantik pada tanggal 5 november 2008, pukul 8.30 WIB, dengan berat 3,37 kg dan panjang 50 cm. Hingga tulisan ini dibuat belum diputuskan namanya (hehheeehee... kandidat si udah ada tapi belum diputuskan).&lt;/p&gt;

&lt;p&gt;
Sedikit berbagi kebahagian berikut adalah foto-foto yang saya ambil beberapa jam setelah "ade" dilahirkan ke dunia :

&lt;div style="margin: 5px; border: 1px solid #666666; float: left; width: 240px;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3008284036/" title="Si Kecil Bobo by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3025/3008284036_9b2816c4fc_m.jpg" width="240" height="231" alt="Si Kecil Bobo" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;div style="margin: 5px; border: 1px solid #666666; float: left; width: 149px;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3008284024/" title="Anak Pertama-ku by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3012/3008284024_e07eeea7e1_m.jpg" width="149" height="240" alt="Anak Pertama-ku" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;div style="margin: 5px;border: 1px solid #666666; float: left; width: 180px;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3008284032/" title="Gendong by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3287/3008284032_79483e5ed1_m.jpg" width="180" height="240" alt="Gendong" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;div style="margin: 5px;border: 1px solid #666666; float: left; width: 240px;"&gt;
&lt;a href="http://www.flickr.com/photos/29959936@N02/3008606491/" title="Di dalam box bayi by dicarve, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3073/3008606491_d4f0e04e5d_m.jpg" width="240" height="212" alt="Di dalam box bayi" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-1468777229895101165?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/1468777229895101165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=1468777229895101165' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/1468777229895101165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/1468777229895101165'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2008/11/anak-pertama-ku-telah-lahir.html' title='Anak Pertama-ku Telah Lahir!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3025/3008284036_9b2816c4fc_t.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2077570599351375129</id><published>2008-08-31T19:50:00.000-07:00</published><updated>2011-08-24T06:20:50.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>Bikin Search Engine FullText dengan Zend Search Lucene - Searching/Pencarian</title><content type='html'>&lt;p&gt;
Pada &lt;a href="http://dicarve.blogspot.com/2008/08/bikin-search-engine-fulltext-dengan.html"&gt;posting sebelumnya&lt;/a&gt; saya sudah sedikit memaparkan bagaimana cara membuat dan menambahkan indeks database dokumen fulltext dengan menggunakan Zend Search Lucene. Sekarang saya akan sedikit memaparkan bagaimana cara untuk melakukan pencarian ke dalam indeks yang telah dibuat dengan menggunakan Zend Search Lucene.
&lt;/p&gt;

&lt;p&gt;
Untuk melakukan pencarian, Zend Search Lucene menyediakan beberapa metode, tetapi yang paling simpel adalah menggunakan metode &lt;b&gt;find()&lt;/b&gt;, dari objek INDEX (instance fungsi factory Zend_Search_Lucene::open). Metode &lt;b&gt;find()&lt;/b&gt; mempunyai 2 argumen, argumen pertama adalah kata kunci/keyword yang ingin kita &lt;i&gt;query&lt;/i&gt;, dan argumen kedua adalah default field metadata yang akan di-coba temukan oleh indexer. HATI-HATI DENGAN QUERY WILDCARD (*)! Listing programnya kira-kira seperti ini :

&lt;!--SOURCE CODE--&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; height: 500px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// include paging class&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'lib/simbio_paging.inc.php'&lt;/span&gt;;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'lib/utils.inc.php'&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// get keywords&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$keywords&lt;/span&gt; = &lt;a href="http://www.php.net/trim"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'keywords'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$keywords&lt;/span&gt; AND &lt;span style="color: #0000ff;"&gt;$keywords&lt;/span&gt; != &lt;span style="color: #ff0000;"&gt;'*'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// search the index&lt;/span&gt;
    &lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$index&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;find&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$keywords&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$num_matches&lt;/span&gt; = &lt;a href="http://www.php.net/count"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// slice the array&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$num_matches&lt;/span&gt; &amp;gt; &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// get page number from http get var&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$page&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$page&lt;/span&gt; = &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #292b74; font-weight: bold;"&gt;integer&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// count the row offset&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$remove_offset&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$page&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$remove_offset&lt;/span&gt; = &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$page&lt;/span&gt;*&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #808080; font-style: italic;"&gt;// slice from first element of array&lt;/span&gt;
                &lt;a href="http://www.php.net/array_splice"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array_splice&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;, &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$remove_offset&lt;/span&gt;-&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// slice the rest elements of array&lt;/span&gt;
            &lt;a href="http://www.php.net/array_splice"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array_splice&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Found &amp;lt;b&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$num_matches&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/b&amp;gt; document matches your keyword : &amp;lt;hr size=&amp;quot;1&amp;quot; /&amp;gt;'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'&amp;lt;div style=&amp;quot;clear: both: margin: 5px; margin-bottom: 20px;&amp;quot;&amp;gt;'&lt;/span&gt;
                .&lt;span style="color: #ff0000;"&gt;'&amp;lt;div style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;title&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;
                .&lt;span style="color: #ff0000;"&gt;'&amp;lt;div style=&amp;quot;margin-left: 10px;&amp;quot;&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;author&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;
                .&lt;span style="color: #ff0000;"&gt;'&amp;lt;div style=&amp;quot;margin-left: 10px;&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;?mod=search&amp;amp;action=action&amp;amp;docID='&lt;/span&gt;.&lt;a href="http://www.php.net/urlencode"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;urlencode&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;checksum&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;'&lt;/span&gt;.&lt;a href="http://www.php.net/basename"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;basename&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;file_name&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;'&lt;/span&gt;
                .&lt;span style="color: #ff0000;"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// paging&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$num_matches&lt;/span&gt; &amp;gt; &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; simbio_paging::&lt;span style="color: #006600;"&gt;paging&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$num_matches&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'recs_each_page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;10&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; utils::&lt;span style="color: #006600;"&gt;showError&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'No Keywords Entered!'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Yang agak rumit mungkin adalah paging search resultnya. Zend Search Lucene kaga nyediain tuh yang namanya klausa "LIMIT", "OFFSET", "TOP" kaya di RDBMS-RDBMS populer, agak-agak tricky si caranya, tapi "it works". Ini saya langsung kasih juga script pagingnya yang saya ambil dari library development PHP, SIMBIO 2 yang selalu saya gunakan dalam mengembangkan aplikasi.

&lt;!--SOURCE CODE--&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; height: 500px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;/**
 * simbio_paging
 * Paging Generator class
 *
 * Copyright (C) 2007,2008  Arie Nugraha (dicarve@yahoo.com)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #292b74; font-weight: bold;"&gt;class&lt;/span&gt; simbio_paging
&lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Static Method to print out the paging list
     *
     * @param   integer $int_all_recs_num
     * @param   integer $int_recs_each_page
     * @param   integer $int_pages_each_set
     * @param   string  $str_fragment
     * @param   string  $str_target_frame
     * @return  string
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;a href="http://www.php.net/static"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;static&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; paging&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$int_all_recs_num&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$int_recs_each_page&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$int_pages_each_set&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;10&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'_self'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// check for wrong arguments&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$int_recs_each_page&lt;/span&gt; &amp;gt; &lt;span style="color: #0000ff;"&gt;$int_all_recs_num&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// total number of pages&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt; = &lt;a href="http://www.php.net/ceil"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;ceil&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$int_all_recs_num&lt;/span&gt;/&lt;span style="color: #0000ff;"&gt;$int_recs_each_page&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt; &amp;lt; &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// total number of pager set&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$_pager_set_num&lt;/span&gt; = &lt;a href="http://www.php.net/ceil"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;ceil&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;/&lt;span style="color: #0000ff;"&gt;$int_pages_each_set&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// check the current page number&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; = &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #292b74; font-weight: bold;"&gt;integer&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// check the query string&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'QUERY_STRING'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND !&lt;a href="http://www.php.net/empty"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'QUERY_STRING'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/parse_str"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;parse_str&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'QUERY_STRING'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$arr_query_var&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #808080; font-style: italic;"&gt;// rebuild query str without &amp;quot;page&amp;quot; var&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_query_str_page&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$arr_query_var&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$varname&lt;/span&gt; =&amp;gt; &lt;span style="color: #0000ff;"&gt;$varvalue&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$varvalue&lt;/span&gt; = &lt;a href="http://www.php.net/urlencode"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;urlencode&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$varvalue&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$varname&lt;/span&gt; != &lt;span style="color: #ff0000;"&gt;'page'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #0000ff;"&gt;$_query_str_page&lt;/span&gt; .= &lt;span style="color: #0000ff;"&gt;$varname&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'='&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$varvalue&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;amp;'&lt;/span&gt;;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// append &amp;quot;page&amp;quot; var at the end&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_query_str_page&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'page='&lt;/span&gt;;
            &lt;span style="color: #808080; font-style: italic;"&gt;// create full URL&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'PHP_SELF'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'?'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_query_str_page&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_SERVER&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'PHP_SELF'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'?page='&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// target frame&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'target=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot;'&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// init the return string&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'&amp;lt;span class=&amp;quot;pagingList&amp;quot;&amp;gt;'&lt;/span&gt;;
        &lt;span style="color: #0000ff;"&gt;$_stopper&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// count the offset of paging&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;%&lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt; == &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_lowest&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;-5&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; == &lt;span style="color: #0000ff;"&gt;$_lowest&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_lowest&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;*&lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;%&lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt; == &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_lowest&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;-5&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_lowest&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;+1&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;%&lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_rest&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;%&lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;-&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_rest&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;-1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Previous page link&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/defined"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'lang_sys_common_paging_first'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_first&lt;/span&gt; = lang_sys_common_paging_first;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_first&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'First Page'&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/defined"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'lang_sys_common_paging_prev'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_prev&lt;/span&gt; = lang_sys_common_paging_prev;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_prev&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'Previous Page'&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; &amp;gt; &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;'&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt;.&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_first&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;'&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt;.&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;-1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_prev&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt;; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt; &amp;lt;= &lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_stopper&lt;/span&gt; &amp;lt; &lt;span style="color: #0000ff;"&gt;$int_pages_each_set&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;+1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt;++&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt; == &lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;&amp;lt;b&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/b&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;'&lt;/span&gt;;
                &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$p&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span style="color: #0000ff;"&gt;$_stopper&lt;/span&gt;++;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Next page link&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/defined"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'lang_sys_common_paging_next'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_next&lt;/span&gt; = lang_sys_common_paging_next;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_next&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'Next'&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_pager_offset&lt;/span&gt; != &lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;-4&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; != &lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;'&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt;.&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;+1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_next&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Last page link&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/defined"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'lang_sys_common_paging_last'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_last&lt;/span&gt; = lang_sys_common_paging_last;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_last&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'Last Page'&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_page&lt;/span&gt; &amp;lt; &lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;' &amp;amp;nbsp;'&lt;/span&gt;;
            &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_current_page&lt;/span&gt;.&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$_num_page_total&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_fragment&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;quot; '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_target_frame&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$_last&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/a&amp;gt;&amp;amp;nbsp; '&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;'&amp;lt;/span&amp;gt;'&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$_buffer&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;
&lt;/p&gt;

&lt;p&gt;
Nah begitulah kira-kira sedikit mengenai penggunaan Zend Search Lucene untuk membuat indeks dokumen fulltext. Dari sini kita bisa saja kembangkan untuk membuat search engine kecil-kecilan yang bermanfaat buat kita, contohnya saya meng-indeks manual PHP offline HTML agar saya bisa dengan cepat menemukan topik yang saya ingin baca. 
&lt;/p&gt;

&lt;p&gt;
Untuk peng-indeksan skala besar (jumlah dokumen dalam ukuran giga atau tera), saya menyarankan untuk menggunakan engine-engine indexing yang sudah mumpuni seperti Lucene (java), Clucene (C++), Swish-e, Lemur, Terrier, Xapian dll. Semoga artikel ini bermanfaat untuk anda yang membacanya.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2077570599351375129?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2077570599351375129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2077570599351375129' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2077570599351375129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2077570599351375129'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2008/08/bikin-search-engine-fulltext-dengan_31.html' title='Bikin Search Engine FullText dengan Zend Search Lucene - Searching/Pencarian'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2731481482885076375</id><published>2008-08-29T00:26:00.000-07:00</published><updated>2011-08-24T06:20:50.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>Bikin Search Engine FullText dengan Zend Search Lucene</title><content type='html'>&lt;p&gt;
&lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt; merupakan salah satu framework pengembangan aplikasi PHP yang canggih dan populer (ya iyaaalah yang buat developer di Zend, secara Zend yang buat engine pre-prosesor PHP). Framework ini tidak hanya menyediakan library-library yang memudahkan dalam pengembangan aplikasi yang modular dan kompleks, tetapi juga menyediakan fondasi pengembangan aplikasi model &lt;a href="http://en.wikipedia.org/wiki/Model_View_Controller"&gt;MVC (Model View Controller)&lt;/a&gt; yang sangat "sophisticated".
&lt;/p&gt;

&lt;p&gt;
Salah satu library dari Zend Framework yang sangat bermanfaat untuk pengembangan mesin pencari/search engine adalah library &lt;a href="http://framework.zend.com/manual/en/zend.search.lucene.html"&gt;Zend Search Lucene&lt;/a&gt;. Zend Search Lucene adalah porting dari &lt;a href="http://lucene.apache.org/"&gt;Apache Lucene&lt;/a&gt;, engine Java untuk peng-indeksan dokumen full-text yang sangat canggih saat ini dan masih terus dikembangkan. Hebatnya, hasil index dari Zend Search Lucene bisa dipake juga oleh Lucene dan juga sebaliknya! Perlu diingat secara default Lucene dan turunannya hanya meng-indeks file-file teks biasa seperti HTML, XML, TXT dll. Untuk mengindeks file-file PDF, WORD, Excel, Powerpoint diperlukan &lt;i&gt;eksternal parser&lt;/i&gt; yang berfungsi mengubah file-file dalam format tersebut ke dalam bentuk teks biasa. Kalo di platform Linux/UNIX untuk meng-indeks file WORD, Powerpoint dan Excel saya pake program command-line &lt;a href="http://ftp.wagner.pp.ru/~vitus/software/catdoc/"&gt;catdoc&lt;/a&gt;. Sedangkan untuk file-file PDF kita bisa menggunakan program &lt;a href="http://www.foolabs.com/xpdf/"&gt;xpdf&lt;/a&gt; untuk mem-parsing menjadi teks.
&lt;/p&gt;

&lt;p&gt;
Sekarang kita langsung aja ke pratik-nya, bagaimana gunain Zend Search Lucene di program kita.
Langkah pertama pastinya ada menginstall terlebih dahulu Zend Framework. Download versi terbaru dari Zend Framework di &lt;a href="http://framework.zend.com/download"&gt;website resmi-nya&lt;/a&gt; lalu ikuti instruksi install-nya yang bisa dilihat pada &lt;a href="http://framework.zend.com/download/documentation"&gt;dokumentasi resmi-nya&lt;/a&gt;. Setelah kita ter-install dengan baik, maka kita sudah bisa menggunakan library Zend Search Lucene dengan menambahkan baris :

&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'Zend/Search/Lucene.php'&lt;/span&gt;; &lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;!-- SOURCE CODE END HERE --&gt;

pada skrip PHP kita. Kalau saya menempatkan file tersebut pada file konfigurasi global aplikasi yang pasti selalu ter-include di hampir semua skrip aplikasi. Contohnya seperti ini :

&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;/**
 * Arie Nugraha 2008
 * ZLucene config file
 *
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// Required Library&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'Zend/Search/Lucene.php'&lt;/span&gt;;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'lib/utils.inc.php'&lt;/span&gt;;
&amp;nbsp;
&lt;a href="http://www.php.net/ini_set"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;ini_set&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'display_errors'&lt;/span&gt;, &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// Constant&lt;/span&gt;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'INDEXES_DIR'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'indexes'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'INDEXES_BASE_DIR'&lt;/span&gt;, INDEXES_DIR.DIRECTORY_SEPARATOR.&lt;span style="color: #ff0000;"&gt;'index'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DOCS_DIR'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'docs'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DOCS_BASE_DIR'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'.'&lt;/span&gt;.DIRECTORY_SEPARATOR.DOCS_DIR&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- SOURCE CODE END HERE --&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Langkah selanjutnya adalah membuat yang namanya &lt;b&gt;INDEX&lt;/b&gt;. &lt;b&gt;INDEX&lt;/b&gt; mudahnya adalah database metadata dari semua keyword yang berada pada &lt;i&gt;repository&lt;/i&gt; dokumen kita. Untuk membuat INDEX caranya seperti ini :
&lt;br /&gt;

&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// check if the index is already available&lt;/span&gt;
try &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/file_exists"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;INDEXES_BASE_DIR&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// open the index&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$index&lt;/span&gt; = Zend_Search_Lucene::&lt;span style="color: #006600;"&gt;open&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;INDEXES_BASE_DIR&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// create the index&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$index&lt;/span&gt; = Zend_Search_Lucene::&lt;span style="color: #006600;"&gt;create&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;INDEXES_BASE_DIR&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'NEW_INDEX_CREATED'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'New Indexes Created at '&lt;/span&gt;.INDEXES_BASE_DIR&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// set search result limit&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// Zend_Search_Lucene::setResultSetLimit(30);&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// set default search field&lt;/span&gt;
    Zend_Search_Lucene::&lt;span style="color: #006600;"&gt;setDefaultSearchField&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'content'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; catch &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;Zend_Search_Lucene_Exception &lt;span style="color: #0000ff;"&gt;$exc&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'ERROR_OPEN_CREATE_INDEXES'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'Failed to open or create indexes file with error : '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$exc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;getMessage&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- SOURCE CODE END HERE --&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Setelah berhasil membuat INDEX, maka instance/objek hasil dari fungsi &lt;i&gt;factory&lt;/i&gt; &lt;b&gt;Zend_Search_Lucene::open&lt;/b&gt; (variable &lt;b&gt;$index&lt;/b&gt;), bisa kita lakukan untuk melakukan berbagai macam manipulasi INDEX, seperti pencarian, manipulasi field metadata INDEX, dsb. Sebagai mana halnya kita membuat database biasa, metadata dari INDEX harus kita tentukan field-fieldnya. Untuk memudah manipulasi field metadata di kemudian waktu, maka saya membuat definisi field dalam bentuk array yang fleksibel :

&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// metadata field definition&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'indexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'indexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'author'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'file_name'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'file_mime_type'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'file_size'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'input_date'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'last_update'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'checksum'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'unstored'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'content'&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// metadata ID for document delete/update purpose&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_id_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'checksum'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_id_checksumed_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'file_name'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'keyword'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_id_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- SOURCE CODE END HERE --&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Ada beberapa tipe field metadata yang harus kita kenal di Zend Search Lucene :
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Text&lt;/b&gt;&lt;br /&gt;
Tipe field yang di-indeks, disimpan pada INDEX dan di-&lt;i&gt;tokenize&lt;/i&gt; (dipecah-pecah per-kata). Sangat berguna untuk menyimpan data-data seperti Subjek/Topik dokumen, Pengarang dan Judul dokumen.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Keyword&lt;/b&gt;&lt;br /&gt;
Tipe field yang di-indeks, disimpan pada INDEX tetapi tidak di-tokenize. Berguna untuk menyimpan istilah yang mengandung lebih dari satu kata dan tidak terpisahkan.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unindexed&lt;/b&gt;&lt;br /&gt;
Tipe field yang tidak di-indeks, tetapi tersimpan dalam INDEX dan bisa dimunculkan pada hasil pencarian.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UnStored&lt;/b&gt;&lt;br /&gt;
Tipe field yang di-indeks dan di-tokenize, tetapi  tidak tersimpan dalam INDEX. Tipe field ini bisa digunakan untuk menyimpan indeks konten/isi dokumen yang besar.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
Untuk memudahkan dalam melakukan proses peng-indeksan saya membuat sebuah kelas yang berfungsi sebagai &lt;i&gt;wrapper&lt;/i&gt; proses peng-indeksan. Kelas ini dilengkapi metode-metode tambahan untuk melakukan peng-indeksan isi directory secara recursif. Untuk saat ini, kelas ini hanya bisa melakukan peng-indeksan pada dokumen-dokumen text biasa seperti HTML, XML dan TXT. Definisi kelasnya sebagai berikut :

&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid; height: 500px;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;/**
 * Arie Nugraha 2008
 * A Zend Search Lucene Indexer Wrapper
 *
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #292b74; font-weight: bold;"&gt;class&lt;/span&gt; ZLucene_Indexer
&lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    const AUTO_COMMIT_AFTER_INDEX = &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$zend_search_lucene&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$indexed_file_type&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'html'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'htm'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'xml'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'txt'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$recursive_index&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$doc_id_field&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'checksum'&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$doc_id_checksumed_field&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'checksum'&lt;/span&gt;;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$md_fields&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Class Constructor
     *
     * @param   object  $obj_zend_search_lucene
     * @param   array   $array_md_fields
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; __construct&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$obj_zend_search_lucene&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_md_fields&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;span style="color: #0000ff;"&gt;$obj_zend_search_lucene&lt;/span&gt; instanceof Zend_Search_Lucene_Proxy&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/die"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'Please supply ZLucene_Indexer with valid Zend_Search_Lucene index instance'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$obj_zend_search_lucene&lt;/span&gt;;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;md_fields&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$array_md_fields&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Method to set document ID field
     *
     * @param   string  $str_doc_id_field
     * @param   string  $str_doc_id_checksumed_field
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; setDocID&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_doc_id_field&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$str_doc_id_checksumed_field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;doc_id_field&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$str_doc_id_field&lt;/span&gt;;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;doc_id_checksumed_field&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$str_doc_id_checksumed_field&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Method to set recursive directory indexing for indexDirectory method
     *
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; setRecursiveIndex&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;recursive_index&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Method to add one document to index
     *
     * @param   object  $obj_zend_search_document
     * @param   array   $array_field_data
     * @param   integer $int_zlucene_const
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; indexDoc&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$int_zlucene_const&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// delete document from indexes first&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$deleted_term&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; Zend_Search_Lucene_Index_Term&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;doc_id_field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;doc_id_field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #0000ff;"&gt;$deleted&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; Zend_Search_Lucene_Search_Query_Term&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$deleted_term&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;find&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$deleted&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$matches&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;delete&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$doc&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;id&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #808080; font-style: italic;"&gt;// echo $doc-&amp;gt;id.' deleted!&amp;lt;br /&amp;gt;';&lt;/span&gt;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// iterate trough metadata fields&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;md_fields&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$field_type&lt;/span&gt; =&amp;gt; &lt;span style="color: #0000ff;"&gt;$fields&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;foreach&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$fields&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field_type&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'indexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;addField&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;Zend_Search_Lucene_Field::&lt;span style="color: #006600;"&gt;Text&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span style="color: #808080; font-style: italic;"&gt;// echo $array_field_data[$field].' indexed!&amp;lt;br /&amp;gt;';&lt;/span&gt;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field_type&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'unindexed'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;addField&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;Zend_Search_Lucene_Field::&lt;span style="color: #006600;"&gt;UnIndexed&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span style="color: #808080; font-style: italic;"&gt;// echo $array_field_data[$field].' unindexed!&amp;lt;br /&amp;gt;';&lt;/span&gt;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field_type&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'unstored'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;addField&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;Zend_Search_Lucene_Field::&lt;span style="color: #006600;"&gt;UnStored&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span style="color: #808080; font-style: italic;"&gt;// echo $array_field_data[$field].' unstored!&amp;lt;br /&amp;gt;';&lt;/span&gt;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;addField&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;Zend_Search_Lucene_Field::&lt;span style="color: #006600;"&gt;Keyword&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span style="color: #808080; font-style: italic;"&gt;// echo $array_field_data[$field].' keyword stored!&amp;lt;br /&amp;gt;';&lt;/span&gt;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// add to index&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;addDocument&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$obj_zend_search_document&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #808080; font-style: italic;"&gt;// commit index change&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$int_zlucene_const&lt;/span&gt; === self::&lt;span style="color: #006600;"&gt;AUTO_COMMIT_AFTER_INDEX&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
             &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;commit&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Method to index directory content
     *
     * @param   string  $str_dir_path
     * @param   array   $array_default_field_data
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; indexDirectory&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_default_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// check if directory exists&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;a href="http://www.php.net/file_exists"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Directory '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' not exists!'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// open directory&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$directory&lt;/span&gt; = &lt;a href="http://www.php.net/opendir"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;opendir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// number of document indexed&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$doc_count&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;
            &lt;span style="color: #808080; font-style: italic;"&gt;// read directory content&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt; !== &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt; = &lt;a href="http://www.php.net/readdir"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;readdir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$directory&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #808080; font-style: italic;"&gt;// ignore dots&lt;/span&gt;
                &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt; != &lt;span style="color: #ff0000;"&gt;'.'&lt;/span&gt; AND &lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt; != &lt;span style="color: #ff0000;"&gt;'..'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #808080; font-style: italic;"&gt;// current file&lt;/span&gt;
                    &lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;.DIRECTORY_SEPARATOR.&lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt;;
                    &lt;span style="color: #808080; font-style: italic;"&gt;// check if the $file is file or directory&lt;/span&gt;
                    &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/is_dir"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;is_dir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;recursive_index&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span style="color: #0000ff;"&gt;$doc_count&lt;/span&gt; += self::&lt;span style="color: #006600;"&gt;indexDirectory&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$array_default_field_data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                        &lt;a href="http://www.php.net/preg_match"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'@&lt;span style="color: #000099; font-weight: bold;"&gt;\.&lt;/span&gt;(html|htm|txt|xml)$@i'&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;a href="http://www.php.net/empty"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; AND &lt;a href="http://www.php.net/in_array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;in_array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;indexed_file_type&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// reset title field value&lt;/span&gt;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// set default mimetype&lt;/span&gt;
                            &lt;span style="color: #0000ff;"&gt;$file_mime_type&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'text/plain'&lt;/span&gt;;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// get file content&lt;/span&gt;
                            &lt;span style="color: #0000ff;"&gt;$content&lt;/span&gt; = &lt;a href="http://www.php.net/file_get_contents"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// get value of HTML title tags&lt;/span&gt;
                            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'html'&lt;/span&gt; OR &lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'htm'&lt;/span&gt; OR &lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'xml'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                                &lt;a href="http://www.php.net/preg_match"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'@&amp;lt;title&amp;gt;(.+)&amp;lt;&lt;span style="color: #000099; font-weight: bold;"&gt;\/&lt;/span&gt;title&amp;gt;@i'&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$content&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$title&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                                &lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'htm'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;?&lt;span style="color: #ff0000;"&gt;'html'&lt;/span&gt;:&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
                                &lt;span style="color: #0000ff;"&gt;$file_mime_type&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'text/'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;;
                                &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = !&lt;a href="http://www.php.net/empty"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$title&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;?&lt;a href="http://www.php.net/trim"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$title&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;:&lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;
                                &lt;span style="color: #808080; font-style: italic;"&gt;// echo $title[1].'&amp;lt;br /&amp;gt;';&lt;/span&gt;
                            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'doc'&lt;/span&gt; OR &lt;span style="color: #0000ff;"&gt;$file_ext&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; == &lt;span style="color: #ff0000;"&gt;'rtf'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// set filename as a title field value&lt;/span&gt;
                            &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
                                &lt;span style="color: #0000ff;"&gt;$uc_file_name&lt;/span&gt; = &lt;a href="http://www.php.net/ucwords"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;ucwords&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/str_replace"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'-'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'_'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;' '&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$file&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                                &lt;span style="color: #808080; font-style: italic;"&gt;// replace last file name extension&lt;/span&gt;
                                &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'title'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;a href="http://www.php.net/preg_replace"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;preg_replace&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'@&lt;span style="color: #000099; font-weight: bold;"&gt;\.&lt;/span&gt;[^&lt;span style="color: #000099; font-weight: bold;"&gt;\.&lt;/span&gt;]+$@i'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$uc_file_name&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'content'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;a href="http://www.php.net/strip_tags"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;strip_tags&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$content&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'author'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'dicarve@yahoo.com'&lt;/span&gt;;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'file_name'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt;;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'file_size'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;a href="http://www.php.net/filesize"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;filesize&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$file_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'file_mime_type'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$file_mime_type&lt;/span&gt;;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// create checksum as an ID&lt;/span&gt;
                            &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'checksum'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt; = &lt;a href="http://www.php.net/md5"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;md5&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;doc_id_checksumed_field&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            self::&lt;span style="color: #006600;"&gt;indexDoc&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; Zend_Search_Lucene_Document&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
                            &lt;span style="color: #0000ff;"&gt;$doc_count&lt;/span&gt;++;
                            &lt;span style="color: #808080; font-style: italic;"&gt;// echo $metadata['title'].' succesfully indexed!&amp;lt;br /&amp;gt;';&lt;/span&gt;
                        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
            &lt;span style="color: #808080; font-style: italic;"&gt;// close directory handle&lt;/span&gt;
            &lt;a href="http://www.php.net/closedir"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;closedir&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$directory&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #808080; font-style: italic;"&gt;// commit index changes&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;commit&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #808080; font-style: italic;"&gt;// optimize the index&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;zend_search_lucene&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;optimize&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$doc_count&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/die"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'Directory '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$str_dir_path&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' is not readable. Please check directory permission!'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Method to parse Microsoft Word *.doc file with catdoc
     *
     * @param   string  $str_docfile_path
     * @return  string
     */&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; parseMSWord&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_docfile_path&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$str_catdoc_path&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'/usr/bin/catdoc'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;a href="http://www.php.net/file_exists"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_docfile_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #0000ff;"&gt;$str_docfile_path&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' not found!'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;a href="http://www.php.net/file_exists"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_catdoc_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; OR !&lt;a href="http://www.php.net/is_executable"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;is_executable&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_catdoc_path&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #0000ff;"&gt;$str_catdoc_path&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' not found or not executable!'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #0000ff;"&gt;$outputs&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #808080; font-style: italic;"&gt;// execute catdoc&lt;/span&gt;
        @&lt;a href="http://www.php.net/exec"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;exec&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$str_catdoc_path&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$outputs&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$status&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- SOURCE CODE END HERE --&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Penggunaan kelas Zlucene_Indexer ini cukup mudah. Skrip untuk meng-indeks konten direktori /var/www/html/docs kira-kira seperti ini :
&lt;br /&gt;
&lt;!-- SOURCE CODE --&gt;
&lt;div style="padding: 3px; font-family: Courier; border-color: #999999;
        border-width: 1px; overflow: scroll;
        border-style: solid;
        background-color: white;"&gt;&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;/**
 * Arie Nugraha 2008
 *
 */&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// index directory content recursively&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// set PHP script time limit&lt;/span&gt;
&lt;a href="http://www.php.net/set_time_limit"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;set_time_limit&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$start&lt;/span&gt; = &lt;a href="http://www.php.net/microtime"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;microtime&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$dir_to_index&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;'/var/www/html/docs'&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$ZLucene_Indexer&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ZLucene_Indexer&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$index&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// recursively index directory contents&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$ZLucene_Indexer&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setRecursiveIndex&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// set ID field&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$ZLucene_Indexer&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setDocID&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_id_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$config&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'md_id_checksumed_field'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// array containing default metadata content&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$doc_default_metadata&lt;/span&gt;= &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// index directory contents&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$num_indexed&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$ZLucene_Indexer&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;indexDirectory&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$dir_to_index&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$doc_default_metadata&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$end&lt;/span&gt; = &lt;a href="http://www.php.net/microtime"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;microtime&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$index_time&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$end&lt;/span&gt;-&lt;span style="color: #0000ff;"&gt;$start&lt;/span&gt;;
&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'&amp;lt;strong&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$num_indexed&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/strong&amp;gt; documents indexed on &amp;lt;strong&amp;gt;'&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$dir_to_index&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;/strong&amp;gt; directory in '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$index_time&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' seconds!'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- SOURCE CODE END HERE --&gt;
&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;
Sebagai catatan tambahan, Zend Search Lucene punya beberapa keterbatasan yaitu besar file INDEX maksimal hanya 2GB pada sistem operasi 32 Bit, proses peng-indeksan cenderung lambat terlebih apabila ukuran dan jumlah file besar (saya pernah mencoba mengindeks kurang lebih 11.000 dokumen HTML dan baru selesai dalam waktu setengah jam!).  
&lt;/p&gt;

&lt;p&gt;
Nah sekian dulu sampe disini pembahasan mengenai peng-indeksan dokumen full-text dengan menggunakan Zend Search Lucene. Pada posting blog yang akan datang saya akan membahas juga mengenai cara pencarian dokumen pada Zend Search Lucene.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2731481482885076375?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2731481482885076375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2731481482885076375' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2731481482885076375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2731481482885076375'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2008/08/bikin-search-engine-fulltext-dengan.html' title='Bikin Search Engine FullText dengan Zend Search Lucene'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-6342027568596870094</id><published>2008-07-24T19:26:00.000-07:00</published><updated>2011-08-24T06:17:32.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>var Prototype.js ={efek : 'Javascript Semakin Mudah!'}</title><content type='html'>&lt;p&gt;
Dengan semakin booming-nya (baca: Meledak) Web 2.0, saat ini banyak sekali bermunculan library-library Javascript yang menawarkan kemudahan untuk DHTML dan AJAX seperti &lt;strong&gt;JQuery, Prototype, Script.acu.lo.us, openRico, Dojo&lt;/strong&gt; dan masih banyak lagi yang lainnya. Ketika saya mulai mengembangkan &lt;a href="http://senayan.diknas.go.id" target="_blank"&gt;Senayan&lt;/a&gt;, aplikasi berbasis web untuk automasi perpustakaan, saya mulai mendalami lagi Javascript dan salah satu library Javascript yang bikin saya "kepincut" dan saya gunakan pada Senayan adalah &lt;a href="http://www.prototypejs.org" target="_blank"&gt;Prototype&lt;/a&gt; yang dikembangkan pertama kali oleh Sam Stephenson.
&lt;/p&gt;
&lt;p&gt;
Jujur saya tertarik pertama kali dengan Prototype karena kemudahan dalam pemrosesan request AJAX-nya. Yang kedua dan tidak kalah pentingnya adalah kemampuannya yang &lt;i&gt;Cross-Browser&lt;/i&gt;, ga perlu repot-repot lagi kita nambahin logic untuk nge-cek browser yang ribet. Prototype &lt;i&gt;compatible&lt;/i&gt; dengan hampir semua browser populer yang ada di muka bumi ini macam &lt;strong&gt;Mozilla Firefox, Opera, Konqueror, Safari,&lt;/strong&gt; dan juga browser paling "menakjubkan" (baca: Suckss!) di muka bumi ini, &lt;strong style="color: red;"&gt;Internet Explorer&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Dulu saya berpikir Javascript tu bahasa pemrograman paling "dodol" a.k.a "nyebelin" a.k.a "brengsek". Tetapi sejak munculnya library Prototype dan dukungan DOM serta AJAX pada semua browser sudah menjadi standar perlahan-lahan saya berubah pikiran, "Javascript Semakin Cakep dan Sangat Diperlukan untuk semakin membuat aplikasi web setara dengan aplikasi Desktop". Dengan adanyan Prototype hidup semakin mudah, pemrosesan DHTML yang &lt;i&gt;Cross-Browser&lt;/i&gt; juga menjadi sangat mudah dilakukan. Kita bisa dengan mudah me-modifikasi style CSS pada suatu element secara interaktif lalu mengubah konten element tersebut secara interaktif dengan mudah hanya dengan menggunakan 1 baris kode!
&lt;/p&gt;
&lt;p&gt;
Tentunya ga enak kalo saya sesumbar disini tapi ga ngasih contoh. Aturan utama untuk menggunakan Prototype adalah meng-include file library Prototype terlebih dahulu di halaman HTML kita (sangat disarankan di dalam tag HEAD).
&lt;/p&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="html4strict"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/html.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/head.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;script&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"text/javascript"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"libjs/prototype.js"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Sekarang kita coba melakukan Request AJAX dengan menggunakan Prototype:
&lt;/p&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/div.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ajaxContainer"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(221, 187, 0);"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;lt;script &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(51, 102, 204);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// URL request AJAX yang kita ingin ambil datanya&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxURL = &lt;span style="color: rgb(51, 102, 204);"&gt;'ajax_response.php'&lt;/span&gt;;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// lakukan request AJAX dengan membuat instance Ajax.Request&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Ajax.&lt;span style="color: rgb(0, 102, 0);"&gt;Request&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;url, &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt; method: &lt;span style="color: rgb(51, 102, 204);"&gt;'get'&lt;/span&gt;,
  onSuccess: &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ajaxObject&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// ambil text hasil response AJAX&lt;/span&gt;
    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxResponseText = ajaxObject.&lt;span style="color: rgb(0, 102, 0);"&gt;responseText&lt;/span&gt;;
    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Prototype memudahkan kita dalam mengupdate konten suatu element dengan method "update". Dibawah ini element &amp;lt;div&amp;gt; dengan id "ajaxContainer" akan diupdate konten-nya dengan hasil response AJAX&lt;/span&gt;
    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxContainer = $(&lt;span style="color: rgb(51, 102, 204);"&gt;'ajaxContainer'&lt;/span&gt;).&lt;span style="color: rgb(0, 102, 0);"&gt;update&lt;/span&gt;(ajaxResponseText);
  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;,
  onFailure: &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ajaxObject&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 102);"&gt;alert&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'Terjadi Error pada Request AJAX ke URL : '&lt;/span&gt; + ajaxURL&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; 
&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Pada kode di atas apabila request AJAX berhasil dilakukan maka element &amp;lt;div&amp;gt; akan diisikan dengan text response AJAX, tetapi apabila request AJAX gagal dilakukan (onFailure), maka akan muncul alert yang memberitahu bahwa request AJAX gagal dilakukan. Sangat mudah bukan? Wow tapi nanti dulu!! masih ada yang lebih keren! bagaimana kalau kita mau hasil dari AJAX-nya bukan teks biasa tetapi hasilnya berupa HTML yang akan langsung kita &lt;i&gt;include&lt;/i&gt;-kan di halaman web kita? Disinilah fungsi kelas &lt;strong&gt;Ajax.Updater&lt;/strong&gt; akan sangat menolong hidup kita (ciaaa.. illaahh) :
&lt;/p&gt;


&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/div.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ajaxContainer"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(221, 187, 0);"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;script&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"text/javascript"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;&lt;a name="result"&gt;// URL untuk request AJAX&lt;/a&gt;&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;&lt;a name="result"&gt;var&lt;/a&gt;&lt;/span&gt;ajaxURL = &lt;span style="color: rgb(51, 102, 204);"&gt;"ajax_updater_response.php"&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// parameter GET atau POST yang ingin kita sertakan pada request&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; reqParams = &lt;span style="color: rgb(51, 102, 204);"&gt;"param1=Nilai+Param+1&amp;amp;param2=Nilai+Param+2"&lt;/span&gt;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// method pengiriman request, bisa GET, POST atau bahkan PUT&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; reqMethod = &lt;span style="color: rgb(51, 102, 204);"&gt;'post'&lt;/span&gt;;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// ID element yang akan menampung HTML hasil response Ajax.Updater&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxContainer = &lt;span style="color: rgb(51, 102, 204);"&gt;'ajaxContainer'&lt;/span&gt;;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Buat instance Ajax.Updater&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Ajax.&lt;span style="color: rgb(0, 102, 0);"&gt;Updater&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ajaxContainer, ajaxURL, &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
  method: reqMethod, parameters: reqParams
&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Misalkan pada file "ajax_updater_response.php" mengandung kode PHP yang menghasilkan HTML seperti ini :
&lt;/p&gt;


&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&lt;a name="result"&gt;// pastikan bener-bener hasilnya HTML&lt;/a&gt;&lt;/span&gt;
&lt;a href="http://www.php.net/header"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Content-type: text/html"&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_q&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$mysql&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;query&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"SELECT * FROM someSQLtable WHERE name LIKE '%"&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$mysql&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;escape_string&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'param1'&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"%'
   LIMIT 100"&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// loop data dan tampilkan dalam tabel HTML&lt;/span&gt;
&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;table class="datalist"&amp;gt;'&lt;/span&gt;;
&lt;span style="color: rgb(41, 43, 116); font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$sql_q&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;fetch_row&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(143, 19, 19);"&gt;{&lt;/span&gt;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;tr&amp;gt;'&lt;/span&gt;;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;td&amp;gt;'&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;/td&amp;gt;'&lt;/span&gt;;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;td&amp;gt;'&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;/td&amp;gt;'&lt;/span&gt;;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;td&amp;gt;'&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;/td&amp;gt;'&lt;/span&gt;;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;/tr&amp;gt;'&lt;/span&gt;;

&lt;span style="color: rgb(143, 19, 19);"&gt;}&lt;/span&gt;
&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&amp;lt;/table&amp;gt;'&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Mantapp! Gampang bener yak!! Trus, trus bagaimana kalo gw mau hasil respons AJAX-nya berupa JSON biar gw bisa proses lagi rie? Yahhhhh itu mah gampang!! begini caranyan :
&lt;/p&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre&gt;
&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/div.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;div&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ajaxContainer"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(221, 187, 0);"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;lt;script &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(51, 102, 204);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// URL request AJAX yang kita ingin ambil datanya&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxURL = &lt;span style="color: rgb(51, 102, 204);"&gt;'ajax_response.php'&lt;/span&gt;;
&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// lakukan request AJAX dengan membuat instance Ajax.Request&lt;/span&gt;
&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Ajax.&lt;span style="color: rgb(0, 102, 0);"&gt;Request&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;url, &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt; method: &lt;span style="color: rgb(51, 102, 204);"&gt;'get'&lt;/span&gt;,
  onSuccess: &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ajaxObject&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// ambil text hasil response AJAX dan strip space di kiri dan kanan string biar ga ganggu&lt;/span&gt;
    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxResponseText = ajaxObject.&lt;span style="color: rgb(0, 102, 0);"&gt;responseText&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;strip&lt;/span&gt;();
    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Convert hasil response AJAX ke objek JSON dengan menggunakan method evalJSON() milik Prototype!&lt;/span&gt;
    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ajaxJSON = ajaxResponseText.&lt;span style="color: rgb(0, 102, 0);"&gt;evalJSON&lt;/span&gt;();
    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Proses object JSON anda di bawah ini&lt;/span&gt;
    ...
  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;,
  onFailure: &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ajaxObject&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 102);"&gt;alert&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'Terjadi Error pada Request AJAX ke URL : '&lt;/span&gt; + ajaxURL&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt; 
&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Pada halaman response AJAX "ajax_response.php" mengandung kode seperti ini :
&lt;/p&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;a name="result"&gt;&amp;lt;?php&lt;/a&gt;&lt;/span&gt;
&lt;a href="http://www.php.net/header"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Content-type: text/javascript"&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_q&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$mysql&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;query&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"SELECT * FROM someSQLtable WHERE name LIKE '%"&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$mysql&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;escape_string&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'param1'&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"%'
   LIMIT 100"&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// loop data dan simpan dalam Array&lt;/span&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;$array_rows&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(41, 43, 116); font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$sql_q&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;fetch_row&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(143, 19, 19);"&gt;{&lt;/span&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;$array_rows&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$sql_d&lt;/span&gt;;
&lt;span style="color: rgb(143, 19, 19);"&gt;}&lt;/span&gt;
&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// encode ke dalam bentuk JSON&lt;/span&gt;
&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; json_encode&lt;span style="color: rgb(143, 19, 19);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$array_rows&lt;/span&gt;&lt;span style="color: rgb(143, 19, 19);"&gt;)&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Oke segitu dulu deh posting saya mengenai AJAX di Prototype, insya ALLAH nanti akan saya bahas lebih lanjut lagi penggunaan Prototype untuk membuat &lt;i&gt;dynamic AJAX drop-down&lt;/i&gt; yang populer itu. Silahkan anda mendownload dan coba menggunakan Prototype sekarang juga, "&lt;i&gt;Javascript never been these easy!!&lt;/i&gt;".
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-6342027568596870094?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/6342027568596870094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=6342027568596870094' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6342027568596870094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/6342027568596870094'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2008/07/var-prototypejs-efek-javascript-semakin.html' title='var Prototype.js ={efek : &apos;Javascript Semakin Mudah!&apos;}'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-2174076623187330052</id><published>2007-10-30T08:06:00.000-07:00</published><updated>2007-11-01T04:01:00.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Kembali Ke Linux!!</title><content type='html'>&lt;div style="background: #CCCCCC; border: 1px solid #000000; padding: 3px;"&gt;
Kalo kata Tukul :
&lt;br /&gt;
&lt;span style="font-style:italic;"&gt;"Kembali Ke Laptop!!"&lt;/span&gt;
&lt;br /&gt;
Kalo kata gw :
&lt;br /&gt;
&lt;span style="font-style:italic;"&gt;"Kembali Ke Linux!!"&lt;/span&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;
Yahh betul, memang agak cukup memalukan, setelah sebelumnya gw "mendeklarasikan" diri sebagai pengguna si &lt;strong&gt;"setan merah"&lt;/strong&gt; (baca: FreeBSD), akhirnya gw kembali switch ke Linux. Pilihan jatuh kepada distro turunan &lt;strong&gt;"slackware"&lt;/strong&gt;, &lt;strong&gt;Zenwalk Linux&lt;/strong&gt;. Udah hampir setaon gw nginstall Zenwalk di laptop gw, sejak versi 4.4, dan baru-baru ini gw upgrade ke rilis stable terbaru, versi 4.8 .
&lt;/p&gt;

&lt;table cellpadding="3" style="width: 100%; border: 1px dotted #000000;"&gt;
&lt;tr&gt;
&lt;td align="center"&gt;
&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/dicarve_zenwalk_scr2.png" /&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/dicarve_zenwalk_scr1.png" /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="2" align="center"&gt;Desktop Zenwalk Linux baru gw&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;

&lt;p&gt;
Kenapa gw akhirnya milih Zenwalk, yang notabene turunan Slackware (yang konon katanya instalasinya susah, karena masih pake "curses" alias berbasis teks biasa)? Ada beberapa alasan :
&lt;ul&gt;
&lt;li&gt;Instalasinya menantang!! (ga penting), partisi hard disknya berbasis teks pake &lt;strong&gt;cfdisk&lt;/strong&gt;!!, tapi cepet bro proses instalasinya, ga nyampe setengah jam Zenwalk is ready to rocks!!&lt;/li&gt;

&lt;li&gt;Slackware itu agak-agak mirip FreeBSD desainnya, simple, fast dan secure&lt;/li&gt;

&lt;li&gt;Performance, gw butuh performance yang kenceng dari sebuah Linux di laptop gw dan Zenwalk yang di-desain untuk kelas Pentium III adalah pilihan pas (laptop gw pake Intel Centrino, RAM 768, VGA Intel 915 Onboard)&lt;/li&gt;

&lt;li&gt;Software bawaan default Zenwalk udah asoy banget dan cukup lengkap, tools development kaya GCC, glibc, make dll udah ada, untuk multimedia hampir semua codec video dan format file musik bisa "langsung" dimaenin&lt;/li&gt;

&lt;li&gt;Init scriptnya gampang dimodifikasi, tinggal cemplungin aje script kita ke dir &lt;strong&gt;/etc/rc.d/&lt;/strong&gt;, trus buat filenya executable, langsung dah script kita jalan pas booting&lt;/li&gt;

&lt;li&gt;Udah pake Kernel 2.6.22, udah ada wireless stacknya dan wireless card udah langsung ke-detect, tinggal install driver-nya atawa pake &lt;strong&gt;"ndiswrapper"&lt;/strong&gt;
&lt;/li&gt;

&lt;li&gt;
Untuk update package/software udah ada software &lt;strong&gt;xnetpkg&lt;/strong&gt;, mirip2 sama synaptic gicuu dech
&lt;/li&gt;

&lt;li&gt;
Desktop defaultnya XFCE 4, which is very light, fast, simple and easy. I Loveee the XFCE file manager, &lt;strong&gt;Thunar&lt;/strong&gt;, very fastttttttt......
&lt;/li&gt;

&lt;li&gt;
Untuk urusan "desktop eye candy", semua icons dan themes punya GNOME bisa kita pake di XFCE (secara mereka punya fondasi yang sama)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-2174076623187330052?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/2174076623187330052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=2174076623187330052' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2174076623187330052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/2174076623187330052'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2007/10/kembaliiii-keee-linux.html' title='Kembali Ke Linux!!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-117565749494365576</id><published>2007-04-03T20:27:00.000-07:00</published><updated>2007-05-02T02:35:56.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>MySQL Improved alias MySQLI!</title><content type='html'>&lt;p&gt;Sejak PHP 5 dirilis, muncul extension baru sebagai API ke RDBMS MySQL. Extension baru ini dinamakan MySQLI atau  MySQL Improved. MySQLI memperkenalkan cara baru dalam berinteraksi dengan database server MySQL melalui PHP (dan konon lebih cepat dan lebih secure, walaupun gw sendiri belum pernah melakukan benchmark).&lt;/p&gt;

&lt;p&gt;Yang paling keren menurut gw adalah model OOP baru dari MySQLI ini. Jadi di MySQLI kita bisa menggunakan 2 style coding, OOP ataupun prosedural. Model OOP-nya asyyiik banget dan lengkap.&lt;/p&gt;

&lt;p&gt;Untuk nginstall extension MySQLI di Linux cukup gampang, cari aja paket-paket binary yang udah disediain ma distro masing-masing atau kalo kita biasa compile sendiri maka kita harus nambahin flag :
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;--with-mysqli=shared,/usr/local/mysql/bin/mysql-config&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
pada command configure kita
&lt;br /&gt;
Kalo di Windows lebih gampang lagi, cukup tambahin baris : 
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;extension=php_mysqli.dll&lt;/b&gt;
&lt;br /&gt;&lt;br /&gt;
pada deretan module-module extension yang laennya di file &lt;b&gt;php.ini&lt;/b&gt;. Trus restart deh Web Server-nya.
&lt;/p&gt;

&lt;p&gt;Langsung aja kita liat contoh implementasi extension MySQLI di source code PHP kita, begini nih caranye :
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// buat constant &lt;/span&gt;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DB_HOST'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'localhost'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DB_USER'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'dicarve'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DB_PASS'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'dicarvepass'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DB_NAME'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'dicarvedb'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'DB_PORT'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'3306'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// cek dulu apa extensionnya dah aktif pa belom?&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;a href="http://www.php.net/extension_loaded"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;extension_loaded&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'mysqli'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Extension MySQLI belum terinstall dengan benar. check php.ini'&lt;/span&gt;;
    &lt;a href="http://www.php.net/exit"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;exit&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// buat objek mysqli&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; mysqli&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;

&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;/* cek apakah koneksi berhasil dilakukan */&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;mysqli_connect_errno&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Koneksi gagal dilakukan dengan alasan : '&lt;/span&gt;.mysqli_connect_error&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;a href="http://www.php.net/exit"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;exit&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Koneksi berhasil dilakukan&amp;lt;br /&amp;gt;'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Versi Server MySQL : '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;server_info&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;

&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;/* tutup koneksi ke db server */&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;

&lt;br /&gt;&lt;br /&gt;
Ya ampuunn, ternyata gampang bener yah!! Weiittsss nanti dulu, itu baru koneksi-nya aja gimana untuk ngirim query ke database server-nya? ini sedikit contoh query SELECT yang menghasilkan resultset (atau recordset, whatever lahh) :
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// include file source code koneksi database sebelumnya&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// yang misalnya udah kita kasih nama 'mysqli.inc.php';&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'mysqli.inc.php'&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// untuk melakukan query kita menggunakan &lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// metode 'query' milik kelas mysqli&lt;/span&gt;

&lt;span style="color: #808080; font-style: italic;"&gt;// hasil dari pemanggilan metode ini nantinya akan&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// menghasilkan sebuah objek baru milik kelas mysqli_result&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$result_obj&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$mysqli&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;query&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT nama FROM tabel_dicarve&amp;quot;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// cek apakah query berhasil dilakukan&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$result_obj&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

    &lt;span style="color: #808080; font-style: italic;"&gt;// gunakan properti publik 'num_rows' milik kelas mysqli_result&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// untuk mengetahui jumlah baris hasil query&lt;/span&gt;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Ditemukan '&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$result_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;num_rows&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;' baris data&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;'&lt;/span&gt;;

&amp;nbsp;
    &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;'Data-data yang ditemukan adalah sbb : &amp;lt;br /&amp;gt;'&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;// gunakan metode 'fetch_row' untuk mengambil data baris demi baris dari resultset&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$data&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$result_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;fetch_row&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

        &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #0000ff;"&gt;$data&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;'&amp;lt;br /&amp;gt;'&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;// bebaskan memory resultset&lt;/span&gt;

    &lt;span style="color: #0000ff;"&gt;$result_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;

&lt;br /&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;Lohh?? Cuman segitu doank toh MySQLI? Tau gitu mah gw mendingan pake extension MySQL biasa aja dechh (cappeee dehh!!). Ya Enggak Lah!!! ada beberapa fitur baru yang menarik di MySQLI selaen koneksi dan query sederhana, misalnya meng-execute query SQL secara multiple dengan langsung dalam satu statement (bukan dengan pemanggilan metode 'query' berulang-ulang). Coba liat contoh berikut ini deh :
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 overflow: scroll;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// include file source code koneksi database sebelumnya&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// yang misalnya udah kita kasih nama 'mysqli.inc.php';&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'mysqli.inc.php'&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// setiap query SQL kita pisahkan dengan semi-colon atawa titik koma&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$queries&lt;/span&gt;  = &lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT gmd FROM tabel_gmd;&amp;quot;&lt;/span&gt;;

&lt;span style="color: #0000ff;"&gt;$queries&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT nama FROM tabel_dicarve;&amp;quot;&lt;/span&gt;;
&lt;span style="color: #0000ff;"&gt;$queries&lt;/span&gt; .= &lt;span style="color: #ff0000;"&gt;&amp;quot;SELECT judul FROM tabel_biblio&amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// gunakan metode 'multi_query'&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// untuk meng-execute string query SQL multiple secara simultan&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$multi_query_obj&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;multi_query&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$queries&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;

&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;/* execute multi query */&lt;/span&gt;
&lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$multi_query_obj&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;// loop masing-masing result-nya&lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

        &lt;span style="color: #808080; font-style: italic;"&gt;// ambil result set multiple query dengan metode 'store_result'&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$result&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;store_result&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$row&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$result&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;fetch_row&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

                &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #0000ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#93;&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
            &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span style="color: #808080; font-style: italic;"&gt;// bebasin memory resultset&lt;/span&gt;
            &lt;span style="color: #0000ff;"&gt;$result&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;        

&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// apakah masih ada resultset lagi?&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// kalau udah abis kita stop loop-nya&lt;/span&gt;
        &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;!&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;more_results&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #292b74; font-weight: bold;"&gt;break&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

            &lt;span style="color: #808080; font-style: italic;"&gt;// kita buat pemisah antar resultset dengan garis horizontal HTML &amp;lt;hr&amp;gt;&lt;/span&gt;
            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;lt;hr&amp;gt;&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;;
        &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;/* tutup koneksi ke server */&lt;/span&gt;

&lt;span style="color: #0000ff;"&gt;$mysqli_obj&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;

&lt;br /&gt;&lt;br /&gt;
Nah itu dia sekilas penggunaan extension MySQLI di PHP, masih banyak fitur lain yang saya ga bisa jelasin satu persatu di sini (takutnya blog ini malah isinya MySQLI melulu). Buat programmer PHP yang demen pake model OOP, MySQLI cocok banget untuk digunain sebagai bagian dari kode-kode mereka. SELAMAT MENCOBA!! 
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-117565749494365576?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/117565749494365576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=117565749494365576' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/117565749494365576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/117565749494365576'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2007/04/mysql-improved-alias-mysqli.html' title='MySQL Improved alias MySQLI!'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-114701589417158517</id><published>2006-05-07T07:48:00.000-07:00</published><updated>2011-08-24T06:20:00.454-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>Virtual Machine, OS di dalem OS?? Lohh!!??</title><content type='html'>Perkembangan &lt;b&gt;Open Source Software&lt;/b&gt; (OSS) kayanya makin gila dan asik aja belakangan ini, walaupun saya rada sebel ngeliat distro-distro Penguin (baca: LINUX) yang semakin bervariasi dan makin banyak jenisnya itu. Akhirnya sekarang saya ngekor Hendro Wicaksono, ikut-ikutan pake &lt;b&gt;FreeBSD&lt;/b&gt;. Ternyata asiikk juga pake &lt;b&gt;Operating System&lt;/b&gt; (OS) yang satu ini, BELOM terlalu banyak variannya trus nawarin konsep &lt;b&gt;port&lt;/b&gt;, instalasi aplikasi 3rd party lansung dari source code tapi udah di-patch sama orang-orang di &lt;a href="http://www.freebsd.org/" org=""&gt;freebsd.org&lt;/a&gt; biar kompilasinya bisa sesuai sama FreeBSD. Udah gitu banyak belajar konsep network security juga dari FreeBSD, karna OS yang satu ini menurut developer-nya udah "secure by default". At least setelah melalui journey mencari OS berbasis *NIX yang ingin saya dalami, saya menjatuhkan pilihan pada FreeBSD dengan logonya si Daemon yang imut itu (goodbye Ubuntu, that doesn't mean i hate you).
&lt;br&gt;&lt;br&gt;
Lohh kok jadi curhat masalah OS, bukan masalah ini yang saya pengen omongin tapi saya mau ngomongin mengenai teknologi software yang lagi anget-angetnya saat ini yaitu &lt;b&gt;Virtual Machine&lt;/b&gt;. Apaan lagi tuh Virtual Machine (kita singkat aja dia VM)? Gampangnya VM adalah sebuah aplikasi yang memungkinkan kita menjalankan sebuah atau beberapa OS lainnya di dalam sebuah OS. Gila yah? iya emang gila saya juga bingung kok bisa-bisanya (lagi-lagi saya senyum sendiri dan geleng-geleng kepala ngeliat programmer Open Source). Dengan VM kita bisa menjalankan 2, 3, 4, 5 atau 6 OS sekaligus dalam SATU komputer yang berperan sebagai &lt;b&gt;Host OS&lt;/b&gt;. Dalam domain VM ada dua istilah penting, &lt;b&gt;Host OS&lt;/b&gt; dan &lt;b&gt;Guest OS&lt;/b&gt;. Host OS adalah OS yang yang menjadi induk utama bagi OS-OS virtual lainnya. OS-OS virtual ini disebut juga Guest OS atau OS tamu (bisa yah OS namu, silaturahmi ke OS lainnya). Saya dah mencoba salah satu VM yang sekarang cukup populer di dunia OSS saat ini yaitu &lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt; (baca: kiemu). QEMU berlisensi GPL kecuali untuk modul akselerasi kernel-nya yang free tapi Closed Source namanya KQEMU. Saya install QEMU di FreeBSD saya, awalnya saya coba compile sendiri (saya coba apply patch FreeBSD ke source code asli-nye) tapi pada akhirnya karna gagal trus pas proses kompilasi sampe saya gedegg banget. Akhirnya saya install ajah yang binary-nye yang udah mateng tinggal dilahap. Trus saya install module kernel-nya pake ports FreeBSD (alhamdulillah lancar) dan VOIILLAA!!! saya nginstall FreeBSD 5.4, 6.0 sama Ubuntu di dalem OS FreeBSD 5.4 saya.
&lt;br&gt;&lt;br&gt;
Klik pada screenshot buat memperbesar :
&lt;br&gt;&lt;br&gt;

&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd_kde.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd_kde_sm.png" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;FreeBSD 6.0 dengan desktop KDE di atas FreeBSD 5.4&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu_ubuntu.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu_ubuntu_sm.png" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;Ubuntu 5.10 di atas FreeBSD 5.4 (sambil dengerin MP3)&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd_kde2.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd_kde2_sm.png" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;Lagi-lagi FreeBSD 6.0 dengan desktop KDE di atas FreeBSD 5.4 (ngetik di Koffice)&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd1.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd1_sm.png" style="width: 300px; height: 250px;" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;QEMU sedang mem-boot FreeBSD 5.4&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd2.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu_freebsd2_sm.png" style="width: 300px; height: 250px;" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;QEMU sedang menjalankan FreeBSD 5.4 dan 6.0 dalam mode teks&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
Saya tertarik sama QEMU karena VM ini memungkinkan kita membangun virtual network, jadi saya yang masih awam network ini bisa belajar networking tanpa harus punya banyak PC! Gila! si QEMU ini ternyata bisa juga mem-virtualkan network, bahkan antar sesama Guest OS-pun bisa saling dihubungkan dalam sebuah virtual network. QEMU ternyata mensimulasikan kartu network virtual untuk setiap Guest OS (saya lupa tipe-nya apa kalo ga salah Novell deh). Kebetulan komputer di rumah RAM-nya agak gede 768 MB, jadi saya agak bebas eksperimen nginstall 2 sampe 3 Guest OS.
&lt;br&gt;&lt;br&gt;
QEMU bisa mem-virtualisasikan hampir semua OS yang ada di muka bumi saat ini
tidak terbatas pada OS-OS berarsitektur X86 saja, tapi Mac, OS X yang berbasis PowerPC pun bisa divirtualkan.  menurut Fabrice Bellard, sang pembuat QEMU, Modul  kernel KQEMU dikatakan bisa mempercepat proses virtualisasi Guest OS hingga mendekati kecepatan native (seperti menjalankan OS langsung). Hal ini bisa terjadi karena KQEMU memungkinkan kode-kode Guest OS dijalankan langsung ke prosesor.
&lt;br&gt;&lt;br&gt;
Untuk menjalankan Guest OS dibutuhkan &lt;b&gt;image&lt;/b&gt; dari Guest OS atau kita bisa membuat sebuah image kosong dengan menggunakan tool command-line &lt;b&gt;qemu-img&lt;/b&gt;. Image kosong ini nantinya kita akan isikan dengan Guest OS, misalnya Kubuntu, Fedora ataupun Windows XP. Cara membuatnya adalah dengan mengetikan perintah berikut ini pada console :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;qemu-img create kubuntu.img 2G&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
Perintah di atas akan membuat sebuah image kosong dengan nama kubuntu.img, berukuran 2 Giga. Sekarang bagaimana cara kita untuk mengisikan Guest OS Kubuntu linux kita ke dalam image kosong tadi? Caranya mudah, masukan CD instalasi Kubuntu ke dalam drive CD (ga perlu di mount CD-nya) dan periksa nama device CD-nya (biasanya /dev/acd0) dan kemudian jalankan perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;qemu -dummy-net -m 256 -boot d -cdrom /dev/acd0 -hda /home/dicarve/kubuntu.img&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
perintah di atas akan menjalankan QEMU untuk memboot CD dari /dev/acd0 dan kemudian memulai proses instalasi ke dalam image kubuntu.img. Ikutin aja proses instalasinya kaya kita lagi nginstall OS biasa sampe selesai.
&lt;br&gt;&lt;br&gt;
Apabila CD instalasi OS kita lebih dari satu maka untuk meng-eject CD dari CD Drive kita harus masuk ke dalam QEMU Monitor dengan menekan [Ctrl]+[Alt]+[2]. QEMU Monitor adalah shell khusus QEMU yang berguna untuk misalnya mem-pause proses emulasi, mengeluarkan CD dari CD Drive, me-reboot ulang Guest OS, mengganti drive CD dan lain-lain. Untuk mengganti CD pada Guest OS jalankan perintah berikut pada QEMU monitor :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;
qemu&gt; stop
&lt;br&gt;
qemu&gt; eject cdrom
&lt;/span&gt; 
&lt;br&gt;&lt;br&gt;
lalu keluarkan CD dari CD Drive dan masukan CD berikutnya&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;
qemu&gt; change cdrom /dev/acd0
&lt;/span&gt; (pada FreeBSD drive CD pertama berada pada /dev/acd0)&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;
qemu&gt; continue&lt;/span&gt; Kembali ke Guest OS dengan menekan [Ctrl]+[Alt]+[1]
&lt;br&gt;&lt;br&gt;
&lt;a href="http://kitty.in.th/index.php?room=lab&amp;id=303" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu-xp-setup_sm.png" border="0" /&gt;&lt;/a&gt;
&lt;b&gt;Proses instalasi windows XP dengan QEMU&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
&lt;a href="http://i81.photobucket.com/albums/j232/dicarve/qemu-w2k-firstlogin.png" target="_blank"&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/qemu-w2k-firstlogin_sm.png" border="0" /&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;Windows 2000 dijalankan dengan QEMU pada Linux&lt;/b&gt;

&lt;br&gt;&lt;br&gt;
Di web juga banyak yang nyediain image-image OS yang tinggal di pake. Coba kunjungin &lt;a href="http://www.qemu.org"&gt;qemu.org&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
VM bisa menjadi solusi bagi server-server kecil yang ingin memisahkan fungsi-fungsi seperti Web Server, Mail Server, Firewall dsb. Masing-masing bisa diinstalasikan pada Guest OS yang berbeda dan dihubungkan dengan virtual LAN. Hal ini tentunya juga dimungkinkan apabila hardware server mendukung. Pertimbangan memakai QEMU utamanya adalah memaksimalkan penggunaan resource hardware yang ada. Untuk apa membeli server baru hanya untuk firewall apabila, server yang sudah ada hanya menggunakan 25% resource komputer. Selain QEMU saat ini juga ada beberapa VM lainnya seperti &lt;a href="http://www.xensources.com"&gt;Xen&lt;/a&gt; yang terkenal karena kehebatannya menjalankan Guest OS dengan kemampuan native. Xen bahkan sudah disertakan secara default pada distro-distro Linux besar seperti Suse dan Fedora. VMware adalah VM komersial yang terkenal karena kemudahan instalasi dan konfigurasinya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-114701589417158517?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/114701589417158517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=114701589417158517' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114701589417158517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114701589417158517'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2006/05/virtual-machine-os-di-dalem-os-lohh.html' title='Virtual Machine, OS di dalem OS?? Lohh!!??'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-114604851552816943</id><published>2006-04-26T01:18:00.000-07:00</published><updated>2011-08-24T06:18:08.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Nginstall Apache, MySQL dan PHP di Linux</title><content type='html'>Pernah coba install Apache, MySQL dan PHP di Linux (LAMP), 4 sekawan sakti yang paling banyak dipake di Internet saat ini? atau pengen coba tapi udah jiper duluan karena keliatannya susah? Semoga pengalaman saya nginstall di Ubuntu Linux bisa jadi batu loncatan buat belajar nginstall AMP di Linux. Sebenarnya install AMP di Linux itu kalo mau nyoba dan usaha ga susah (kalo belajar maunya gampang doank ga dapet ilmu apa-apaan donk!!), intinya "&lt;span style="font-weight: bold;"&gt;keep trying&lt;/span&gt;". Semua proses instalasi dilakukan dengan menggunakan source code &lt;span style="font-weight: bold;"&gt;Apache&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;MySQL&lt;/span&gt; dan &lt;span style="font-weight: bold;"&gt;PHP&lt;/span&gt;. 
&lt;br&gt;&lt;br&gt;
Source code ini bisa didownload di website resmi masing-masing :
&lt;ul&gt;&lt;li&gt;Apache --&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a href="http://httpd.apache.org"&gt;http://httpd.apache.org&lt;/a&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;MySQL --  &lt;a href="http://www.mysql.com"&gt;http://www.mysql.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;PHP -- &lt;a href="http://www.php.net"&gt;http://www.php.net&lt;/a&gt;
&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;

Biar lebih cepat proses download-nya, cari mirror-mirror download yang berada di Indonesia, atau kalau tidak ada cari mirror terdekat, seperti Singapura atau Australia (itung-itung menghemat bandwidth Internet ke luar negeri).
&lt;br&gt;&lt;br&gt;
Semua proses instalasi dan kompilasi dilakukan pada console atau terminal dan juga pastikan &lt;span style="font-weight: bold;"&gt;gcc&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;glibc&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;g++&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;sudah terinstall (kalo ga punya &lt;span style="font-weight: bold;"&gt;g++, gcc&lt;/span&gt; juga bisa dipake buat compile c++, tinggal tambahin : &lt;span style="font-weight: bold;"&gt;CXX=gcc&lt;/span&gt; sebelum perintah &lt;span style="font-weight: bold;"&gt;./configure&lt;/span&gt;), karena tanpa ketiga aplikasi ini kita tidak bisa melakukan kompilasi source code. Untuk melakukan proses instalasi hingga tuntas maka kita menggunakan user tertinggi di Linux yaitu &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;. Untuk meng-kompilasi PHP pastikan bahwa parser &lt;span style="font-weight: bold;"&gt;Bison&lt;/span&gt; GNU (versi-versi terbaru kalo bisa -- kalo engga ada Bison parser &lt;span style="font-weight: bold;"&gt;Yacc&lt;/span&gt; juga bisa diterima) dan juga &lt;span style="font-weight: bold;"&gt;Flex&lt;/span&gt;. 
&lt;br&gt;&lt;br&gt;
Untuk ngecheck-nya apakah Bison dan Flex udah ke-install apa belum lakuin perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;
&lt;span style="color: rgb(204, 0, 0);"&gt;which bison&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;which flex&lt;/span&gt;
&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
kalo engga ada juga gimana? jangan menyerah, download aja versi pre-compiled (tergantung distribusi Linux apa yang diinstall), di Ubuntu saya cari pre-compiled binary Bison yang khusus Debian Ubuntu.
&lt;br&gt;&lt;br&gt;
Yang pertama saya install biasanya adalah Apache, kedua MySQL dan terakhir baru PHP. Kenapa saya pake urutan begini? karena untuk install PHP sebagai module apache dan gunain client library MySQL di PHP kita butuh Apache dan MySQL yang sudah terinstall sebelumnya.
&lt;br&gt;&lt;br&gt;
Extract source Apache dengan melakukan perintah sebagai berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;tar -xvzf httpd-2.2.x.tar.gz  &lt;/span&gt;
&lt;br&gt;&lt;br&gt;
masuk ke dalam direktori httpd-2.2.x dengan menjalankan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;cd httpd-2.2.x&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;di dalam direktori ini lakukan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;./configure --prefix=/opt/apache2/ --enable-so&lt;/span&gt;
&lt;/span&gt;-- tunggu sampai proses konfigurasi selesai --
&lt;br&gt;&lt;br&gt;
setelah proses konfigurasi instalasi selesai tanpa masalah (biasanya kalau ada masalah proses akan berhenti di tengah jalan dan akan mengeluarkan &lt;span style="font-weight: bold;"&gt;error&lt;/span&gt;) maka jalankan  perintah berikut untuk memulai proses kompilasi apache :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- tunggu sampai proses kompilasi selesai --
&lt;br&gt;&lt;br&gt;
apabila proses kompilasi berjalan lancar tanpa error maka selanjutnya adalah melakukan perintah berikut untuk menginstall apache ke tempat yang sudah kita tentukan (dalam hal ini adalah /opt/apache2/ ) :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make install&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
sekarang web server apache kita sudah terinstall di &lt;span style="font-weight: bold;"&gt;/opt/apache2/. &lt;/span&gt;Untuk mencoba menjalankan daemon apache maka lakukan perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;/opt/apache2/bin/apachectl start
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- untuk saat ini abaikan saja warning-warning yang keluar, kecuali ERROR --
cek apakah apache sudah benar-benar berjalan dengan melakukan perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;ps ax | grep httpd
&lt;/span&gt;-- apabila berjalan maka akan tampil daftar proses milik apache yaitu httpd --
&lt;br&gt;&lt;br&gt;
Agar lebih secure, buat group dan user baru dengan nama sama yaitu apache. Bisa dilakukan dengan menjalankan perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;addgroup apache&lt;/span&gt;
&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;adduser -s --no-create-home -G apache apache&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
Sekarang langkah selanjutnya adalah melakukan kompilasi source code MySQL. Download saja MySQL versi &lt;span style="font-weight: bold;"&gt;4.1.x. &lt;/span&gt;&lt;/span&gt;Extract source MySQL dengan melakukan perintah sebagai berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;tar -xvzf mysql-4.1.x.tar.gz  &lt;/span&gt;
&lt;br&gt;&lt;br&gt;
masuk ke dalam direktori mysql-4.1.x dengan menjalankan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;cd mysql-4.1.x&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;di dalam direktori ini lakukan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;./configure --prefix=/opt/mysql4/&lt;/span&gt;
&lt;/span&gt;-- tunggu sampai proses konfigurasi selesai --
&lt;br&gt;&lt;br&gt;
setelah proses konfigurasi instalasi selesai tanpa masalah (biasanya kalau ada masalah proses akan berhenti di tengah jalan dan akan mengeluarkan &lt;span style="font-weight: bold;"&gt;error&lt;/span&gt;) maka jalankan  perintah berikut untuk memulai proses kompilasi mysql :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- tunggu sampai proses kompilasi selesai --
&lt;br&gt;&lt;br&gt;
apabila proses kompilasi berjalan lancar tanpa error maka selanjutnya adalah melakukan perintah berikut untuk menginstall mysql ke tempat yang sudah kita tentukan (dalam hal ini adalah /opt/mysql4/ ) :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make install&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;sekarang MySQL sudah terinstall di &lt;span style="font-weight: bold;"&gt;/opt/mysql4/. &lt;/span&gt;Untuk mulai menggunakan server MySQL kita harus melakukan inisialisasi GRANT TABLE milik MySQL. Inisialisasi GRANT TABLE bisa dilakukan dengan menggunakan perintah :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;/opt/mysql4/bin/mysql_install_db&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
selanjutnya adalah kopi file &lt;span style="font-weight: bold;"&gt;my-medium.cnf&lt;/span&gt; yang terletak pada direktori &lt;span style="font-weight: bold;"&gt;/opt/mysql4/share/mysql/&lt;/span&gt; ke direktori &lt;span style="font-weight: bold;"&gt;/etc/ &lt;/span&gt;dengan merubah namanya menjadi &lt;span style="font-weight: bold;"&gt;my.cnf&lt;/span&gt;. Perintahnya adalah seperti ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;cp /opt/mysql4/share/mysql/my-medium.cnf /etc/my.cnf&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;buat user baru khusus untuk MySQL dengan melakukan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;addgroup mysql&lt;/span&gt;
&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;adduser -s --no-create-home -G mysql mysql&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
setelah itu coba jalankan server MySQL dengan melakukan perintah berikut ini :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;/opt/mysql4/share/mysql/mysql.server start
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;apabila berhasil maka akan muncul status seperti ini "&lt;span style="font-weight: bold;"&gt;Starting MySQL.....                 [OK]&lt;/span&gt;"
dan selanjutnya sudah bisa melakukan query-query kepada server dengan masuk ke dalam program client command-line mysql :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;/opt/mysql4/bin/mysql
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- apabila berhasil maka akan dibawa masuk ke dalam program dan ada greetings "Welcome to MySQL ....." --
&lt;br&gt;&lt;br&gt;
Sekarang last but NOT LAST adalah meng-kompilasi bahasa pemrograman favorit saya, yaitu PHP. Extract source code PHP dengan melakukan :
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;
tar -xvzf php-4.4.x.tar.gz  &lt;/span&gt;
&lt;br&gt;&lt;br&gt;
masuk ke dalam direktori php-4.4.x dengan menjalankan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;cd mysql-4.4.x&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;di dalam direktori ini lakukan perintah berikut :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;./configure --prefix=/opt/php4/ --with-config-file-path=/etc/php/ --with-config-file-scan-dir=/etc/php/ --with-apxs2=/opt/apache2/bin/apxs --with-mysql=/opt/mysql4/ --enable-mbstring&lt;/span&gt;
&lt;/span&gt;-- tunggu sampai proses konfigurasi selesai --
&lt;br&gt;&lt;br&gt;
setelah proses konfigurasi instalasi selesai tanpa masalah (biasanya kalau ada masalah proses akan berhenti di tengah jalan dan akan mengeluarkan &lt;span style="font-weight: bold;"&gt;error&lt;/span&gt;) maka jalankan  perintah berikut untuk memulai proses kompilasi php :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- tunggu sampai proses kompilasi selesai --
&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;lalu jalankan :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;make install&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
sekarang lengkap sudah AMP kita di Linux. Tapi tunggu!!?? bagaimana caranya agar web server kita bisa ngerti PHP? apa otomatis gitu aja? engga juga. Sekarang kita harus buka file &lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;/opt/apache2/conf/httpd.conf &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dan memodifikasi-nya sedikit. Buka saja dengan &lt;span style="font-weight: bold;"&gt;vi&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;atau apabila sudah menggunakan desktop GNOME misalnya, buka saja dengan menggunakan &lt;span style="font-weight: bold;"&gt;gedit. &lt;/span&gt;Yang harus diubah adalah :
&lt;br&gt;&lt;br&gt;
User nobody
&lt;br&gt;
Group -1
&lt;br&gt;&lt;br&gt;
ganti dengan :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;User apache&lt;/span&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Group apache&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
lalu tambahkan pada baris terakhir :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;# PHP&lt;/span&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;AddType application/x-httpd-php .php&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
Untuk testing apakah sudah berjalan dengan baik, maka buat sebuah file php di dalam &lt;span style="font-weight: bold;"&gt;/opt/apache2/htdocs/ &lt;/span&gt;dengan nama test.php dan isikan dengan :
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&amp;lt;?php
phpinfo();
?&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;save file dan keluar. Restart web server apache agar apache membaca ulang file konfigurasi yang baru diubah dengan menjalankan perintah :&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;
&lt;br&gt;&lt;br&gt;
&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;/opt/apache2/bin/apachectl restart&lt;/span&gt;
&lt;br&gt;&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;buka browser dan ketikan http://localhost/test.php&lt;/span&gt;&lt;/span&gt; pada kotak URL, dan lihat apakah skrip PHP yang baru kita buat sudah terinstall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-114604851552816943?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/114604851552816943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=114604851552816943' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114604851552816943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114604851552816943'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2006/04/nginstall-apache-mysql-dan-php-di.html' title='Nginstall Apache, MySQL dan PHP di Linux'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-114483807857128446</id><published>2006-04-12T02:44:00.000-07:00</published><updated>2011-08-24T06:17:32.496-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><title type='text'>Full Open Source Web Design and Programming. Kata siapa ga mungkin?</title><content type='html'>Mayoritas web designer dan web programmer di Indonesia (koreksi apabila saya salah) masih sangat tergantung pada software-software proprietary/shareware dalam mendesain dan merancang web. Daya beli masyarakat kita yang rendah pada akhirnya mendorong penggunaan software-software bajakan seperti Macromedia Dreamweaver, Adobe Photoshop, Adobe Illustrator, Macromedia Flash dsb. 5 atau 4 tahun yang lalu mungkin akan sangat sulit untuk mencari aplikasi-aplikasi &lt;b&gt;Open Source&lt;/b&gt; untuk menandingi software-software proprietary tersebut, tetapi seiring perkembangan &lt;b&gt;OSS (Open Source Software)&lt;/b&gt; yang sangat pesat beberapa tahun belakangan seperti &lt;b&gt;Inkscape, GIMP, Sodipodi, Eclipse, Quanta Plus&lt;/b&gt; dan belakangan ini &lt;b&gt;Xara Xtreme&lt;/b&gt; merupakan isyarat bagi web designer dan web programmer untuk segera bermigrasi penuh ke OSS.
&lt;br&gt;&lt;br&gt;
Dari pengalaman saya sendiri dalam membangun beberapa aplikasi berbasis web (yang saya juga bertindak sebagai designer interface-nya), ternyata tidak memerlukan waktu yang lama untuk membiasakan diri menggunakan OSS secara penuh dalam men-develop sebuah aplikasi berbasis web. Ketika saya menggunakan desktop Ubuntu linux pertama kalinya saya juga sempat bingung mau memakai software apa untuk mendesain interface aplikasi nantinya. Terima kasih kepada komunitas Open Source yang tidak kenal lelah telah menghasilkan software-software pengolah vektor seperti Inkscape dan XaraXtreme, serta untuk image editing, GIMP yang telah matang di versi ke 2 ini.
&lt;br&gt;&lt;br&gt;

&lt;table style="width: 100%;" cellpadding="3" cellspacing="0"&gt;
&lt;tr&gt;
&lt;th colspan="2"&gt;2 Aplikasi web based yang saya bangun dengan Full OSS&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/thesaurus_scr1.png" /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/edocs_scr1.png" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th colspan="2"&gt;Inkscape on Action&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/thesaurus_icon_sm.png" /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="http://i81.photobucket.com/albums/j232/dicarve/igloo_logo_inkscape_sm.png" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;br&gt;&lt;br&gt;
Untuk ilustrasi saya sudah terlanjur jatuh cinta pada inkscape (alhamdulillah telah tersedia untuk versi windows-nya) dan untuk editing image saya menggunakan GIMP versi 2.2.10. Kedua software tersebut apabila digabungkan penggunaannya ternyata cukup dahsyat dalam menghasilkan design mock-up web. Apalagi bila kita sudah faseh terhadap semua tools yang ada pada Inkscape dan GIMP (yang saya yakin baru memaksimalkannya paling-paling 10%). Intinya dalam menguasai sebuah software grafis adalah explorasi dan maksimalisasi tools yang ada. Bagi mereka yang terbiasa menggunakan photoshop mungkin akan sedikit sulit saat menggunakan GIMP, karena windowing system-nya yang terbilang cukup merepotkan, tetapi semua itu hanya butuh adaptasi saja (&lt;i&gt;alah bisa karena biasa&lt;/i&gt;). Inkscape juga menawarkan perbedaan dibandingkan dengan aplikasi pengolah vektor lainnya, karena Inkscape menggunakan format &lt;b&gt;SVG (Scalable Vector Graphics)&lt;/b&gt; sebagai format native-nya. Hal ini tentunya merupakan sebuah inovasi yang brilian, karena dengan built-in XML editornya kita bisa saja "menggambar dengan tidak menggambar". Apa maksudnya?? apabila kita telah terbiasa dengan spesifikasi XML SVG, maka bisa saja kita menggambar dengan menuliskan kode XML SVG saja dan langsung melihat hasilnya di Inkscape. Kekurangan dari Inkscape adalah pada Eksport-nya yang masih terbatas pada PNG saja (tetapi tidak terlalu menjadi masalah, karena hasilnya eksport-nya bisa kita eksport kembali dalam bentuk lainnya dengan menggunakan GIMP).
&lt;br&gt;&lt;br&gt;
Untuk &lt;b&gt;IDE&lt;/b&gt; (coding PHP dan HTML) di Linux, saya menggunakan &lt;b&gt;Eclipse&lt;/b&gt; dengan ekstensi &lt;b&gt;PHP-Eclipse&lt;/b&gt;. Eclipse merupakan IDE berbasis Java yang sangat populer dan sudah sangat matang serta masih terus dikembangkan hingga saat ini. Yang paling saya suka adalah fitur auto-completion-nya yang cukup lengkap (terutama kalau lagi lupa fungsi-fungsi PHP). Sebelum Eclipse saya pernah menggunakan Quanta Plus, tetapi karena Quanta didisain spesifik untuk desktop KDE (dimana banyak sekali library dependancies yang bikin saya malas), akhirnya saya menjatuhkan pilihan ke Eclipse yang fasilitasnya sudah sangat lengkap.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Jadi, Web Designer dan web programmer? Uninstall semua program web authoring bajakan anda dan migrasi penuh ke OSS!! I bet we can do it.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-114483807857128446?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/114483807857128446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=114483807857128446' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114483807857128446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114483807857128446'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2006/04/full-open-source-web-design-and.html' title='Full Open Source Web Design and Programming. Kata siapa ga mungkin?'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-114482857571853859</id><published>2006-04-12T00:35:00.000-07:00</published><updated>2011-08-24T06:16:34.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Kenapa coding OOP ?</title><content type='html'>Saya mengenal Object Oriented Programming sekitar 1,5 tahun yang lalu, ketika saya mulai coba-coba coding OOP untuk salah satu project sistem informasi berbasis web di salah satu departemen pemerintahan (menggunakan PHP 4). Pada awalnya saya menggunakan OOP hanya untuk mencari cara bagaimana agar kode-kode yang saya buat bisa digunakan kembali dengan cepat tanpa harus cape-cape menulis prosedural yang rumit, ternyata semakin hari semakin terasa kenyamanan coding dengan style OOP.
&lt;br&gt;&lt;br&gt;
Menurut pengalaman saya, beberapa kenyamanan yang saya dapat melalui coding OOP ini adalah :
&lt;ol style="line-height: 90%;"&gt;
  &lt;li&gt;Kode menjadi lebih bersih&lt;/li&gt;
  &lt;li&gt;Alur pemrograman menjadi lebih terstruktur&lt;/li&gt;
  &lt;li&gt;Reusability (penggunaan ulang) yang tinggi&lt;/li&gt;
  &lt;li&gt;Berkurangnya ketergantungan antar program karena setiap objek bekerja
      sendiri-sendiri, tetapi saling bekerja sama satu sama lain&lt;/li&gt;
  &lt;li&gt;Adanya &lt;b&gt;inherintance&lt;/b&gt; antar kelas yang memungkinkan kita memperpanjang
      fungsi dan manfaat dari kelas yang sudah ada, tanpa harus menulis ulang kelas
      sebelumnya&lt;/li&gt;
  &lt;li&gt;Kelas memungkinkan kita mengelompokan/mengklasifikasikan properti dan
      metode-metode yang serupa fungsinya&lt;/li&gt;
  &lt;li&gt;Dalam lingkungan yang &lt;b&gt;Open Source&lt;/b&gt; diperlukan kode-kode pemrograman
      yang juga readable oleh pemrograman lainnya. OOP bisa menjadi solusi untuk
      hal ini&lt;/li&gt;
  &lt;li&gt;Mempelajari OOP di PHP 5, membuat saya lebih mudah untuk mencoba OOP di Java
      karena modelnya hampir serupa&lt;/li&gt;
&lt;/ol&gt;

Tetapi OOP juga mempunyai kekurangan yaitu dalam hal eksekusi skrip. OOP seperti saya pernah baca pada buku &lt;i&gt;Core PHP Programming&lt;/i&gt;, karangan &lt;b&gt;Leon Atkinson&lt;/b&gt;, eksekusi skrip yang menggunakan OOP bisa berkurang kecepatannya hingga 20%, dibandingkan dengan menggunakan style prosedural biasa.
&lt;br&gt;&lt;br&gt;
IHMO OOP merupakan sebuah pilihan bagi programmer. Mereka yang mementingkan kecepatan performa aplikasi akan cenderung memilih style prosedural, sedangkan mereka yang lebih mementingkan modularitas dan keterbacaan kode aplikasi akan cenderung memilih OOP. Saya sendiri tidak strict ke satu style, seperti yang pernah &lt;b&gt;Rasmus Lerdorf&lt;/b&gt; (PHP Founding Father) katakan, 
&lt;br&gt;&lt;br&gt;
&lt;b&gt;"Gunakan OOP di saat yang betul-betul diperlukan, dan gunakan prosedural di sisi yang lain"&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-114482857571853859?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/114482857571853859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=114482857571853859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114482857571853859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114482857571853859'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2006/04/kenapa-coding-oop.html' title='Kenapa coding OOP ?'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-25865790.post-114475460691307459</id><published>2006-04-11T04:01:00.000-07:00</published><updated>2011-08-24T06:16:34.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Object Oriented Programming PHP 5 - Bagian 1</title><content type='html'>PHP merupakan server-side scripting untuk membangun halaman web dinamis yang sangat populer saat ini dan powerful. Keunggulan PHP adalah pada kemudahan dalam penulisan program dan dukungan &lt;b&gt;extension library&lt;/b&gt; yang sangat banyak terutama dalam hal koneksi database. Salah satu keunggulan PHP yang lain adalah penulisan kode dalam style &lt;b&gt;Object Oriented Programming&lt;/b&gt; atau biasa juga disingkat OOP. Style OOP sudah didukung sejak PHP 3, tetapi mulai versi 5 style OOP PHP ditulis ulang kembali agar lebih mendekati kepada prinsip-prinsip OOP yang sebenarnya seperti munculnya modifier &lt;b&gt;public&lt;/b&gt;, &lt;b&gt;protected&lt;/b&gt;, &lt;b&gt;private&lt;/b&gt;, &lt;b&gt;abstract&lt;/b&gt; dsb. OOP pada PHP 5 mirip dengan OOP pada &lt;b&gt;Java&lt;/b&gt;.
&lt;br&gt;&lt;br&gt;
Apa sih Object Oriented Programming itu? OOP mudahnya adalah membangun sebuah aplikasi dengan menggunakan &lt;b&gt;object (objek)&lt;/b&gt;. Mari kita analogikan sebuah aplikasi sebagai sebuah &lt;b&gt;Mobil&lt;/b&gt;. Mobil dibangun oleh komponen-komponen pendukungnya (objek) seperti ban, mesin, rangka mobil, setir dan komponen-komponen lainnya. Setiap komponen mempunyai fungsinya masing-masing dan saling mendukung satu sama lain, agar sebuah mobil dapat berjalan dengan baik. Hal seperti ini kemudian kita implementasikan dalam pembangunan aplikasi dimana kita membangun aplikasi dengan menggunakan objek-objek yang telah kita buat sebelumnya. Pengenalan lebih lanjut mengenai konsep OOP dapat dilihat di &lt;a href="http://java.sun.com/docs/books/tutorial/java/concepts/index.html"&gt;sini&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
Untuk membuat sebuah objek maka kita harus mendeklarasikan terlebih dahulu &lt;b&gt;Blue-Print&lt;/b&gt; atau prototype dari object tersebut. Prototype dari sebuah objek dalam terminologi pemrograman disebut &lt;b&gt;class (kelas)&lt;/b&gt;. Di bawah ini adalah contoh sebuah deklarasi kelas dengan sebuah variabel dan sebuah metode.
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #292b74; font-weight: bold;"&gt;class&lt;/span&gt; kelasKucing
&lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;var&lt;/span&gt; nama_kucing = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;// metode untuk memberikan nama pada kucing&lt;/span&gt;

    &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; setNamaKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$isi_nama_kucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
         &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;nama_kucing&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$isi_nama_kucing&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;

&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;// metode untuk mengetahui nama kucing &lt;/span&gt;
    &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; getNamaKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
    &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
         &lt;span style="color: #292b74; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;nama_kucing&lt;/span&gt;;
    &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;

&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;

&lt;br /&gt;&lt;br /&gt;
Source code di atas mendeklarasikan sebuah kelas (Blue-Print) dengan nama &lt;b&gt;kelasKucing&lt;/b&gt;. Kelas ini nantinya akan menghasilkan sebuah objek "kucing". Salah satu metode kelas ini adalah &lt;b&gt;metodeSetNamaKucing&lt;/b&gt; yang fungsinya adalah memberikan nama untuk objek kucing nantinya. WARNING!! Jangan samakan kelas dengan objek, objek merupakan hasil cetakan dari sebuah kelas.
&lt;br&gt;&lt;br&gt;
Untuk membuat sebuah objek dari dari kelasKucing, maka kita harus meng-&lt;b&gt;instantiate&lt;/b&gt; kelasKucing atau mudahnya mencetak sebuah objek dari kelasKucing. Contohnya bisa dilihat pada contoh di bawah ini :
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE--&gt;
&lt;div style="width: 100%;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #292b74; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'kelasKucing.inc.php'&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// buat objek kucing pertama&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$blacky&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; kelasKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
 &lt;span style="color: #808080; font-style: italic;"&gt;// kasih nama buat kucing baru kita&lt;/span&gt;

 &lt;span style="color: #0000ff;"&gt;$blacky&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setNamaKucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'blacky'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
 &lt;span style="color: #808080; font-style: italic;"&gt;// siapakah nama kucing yang baru kita buat&lt;/span&gt;
 &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Nama kucing pertama kita adalah : &amp;quot;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$blacky&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;getNamaKucing&lt;/span&gt;;

&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// buat objek kucing kedua&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$kitty&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; kelasKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
 &lt;span style="color: #808080; font-style: italic;"&gt;// kasih nama buat kucing baru kedua kita&lt;/span&gt;
 &lt;span style="color: #0000ff;"&gt;$kitty&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setNamaKucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'kitty'&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
 &lt;span style="color: #808080; font-style: italic;"&gt;// siapakah nama kucing yang baru kita buat&lt;/span&gt;

&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Nama kucing kedua kita adalah : &amp;quot;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$kitty&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;getNamaKucing&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--SOURCE CODE END--&gt;

&lt;br /&gt;&lt;br /&gt;
Perbedaan paling mendasar pada OOP di PHP 5 dengan versi PHP sebelumnya adalah pada akses kepada properti dan metode dari kelas. Pada PHP 4, semua properti kelas bisa diakses secara public (dari manapun) dan semua metode kelas bisa diakses secara static tanpa harus membuat objek dari kelas terlebih dahulu. Pada PHP 5 sudah diperkenalkan modifier-modifier properti dan metode seperti halnya Java dan C++. Beberapa diantaranya yang penting adalah :

 &lt;ul&gt;&lt;li&gt;&lt;b&gt;PUBLIC&lt;/b&gt;

 Ini artinya setiap properti atau metode bisa diakses secara langsung oleh program
 lain diluar kelas.
 &lt;/li&gt;
 &lt;li&gt;&lt;b&gt;PROTECTED&lt;/b&gt;

 Ini artinya setiap properti atau metode hanya bisa diakses oleh kelas itu sendiri
 dan bisa diakses oleh kelas lain yang meng-&lt;b&gt;inherit&lt;/b&gt; kelas tersebut.
 &lt;/li&gt;
 &lt;li&gt;&lt;b&gt;PRIVATE&lt;/b&gt;

 Ini artinya setiap properti atau metode hanya bisa diakses oleh kelas itu
 sendiri.
 &lt;/li&gt;
&lt;/ul&gt;
Contoh implementasi modifier ini bisa dilihat pada source code di bawah ini :
&lt;br /&gt;&lt;br /&gt;

&lt;!--SOURCE CODE --&gt;
&lt;div style="width: 100%;
 padding: 3px;
 font-family: Courier;
 border-color: #999999;
 border-width: 1px;
 border-style: solid;
 background-color: white;"&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #292b74; font-weight: bold;"&gt;class&lt;/span&gt; kelasKucing
&lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; nama_kucing = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;private&lt;/span&gt; tahun_lahir_kucing;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;protected&lt;/span&gt; usia_kucing;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; gender_kucing = &lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;;

&amp;nbsp;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; setNamaKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$isi_nama_kucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
 &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
     &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;nama_kucing&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$isi_nama_kucing&lt;/span&gt;;
 &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;

&amp;nbsp;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; setTahunLahirKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$isi_tahun_lahir_kucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
 &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
     &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;tahun_lahir_kucing&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$isi_tahun_lahir_kucing&lt;/span&gt;;
 &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;

&amp;nbsp;
 &lt;span style="color: #292b74; font-weight: bold;"&gt;protected&lt;/span&gt; &lt;span style="color: #292b74; font-weight: bold;"&gt;function&lt;/span&gt; hitungUsiaKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;
 &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;
     &lt;span style="color: #292b74; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;tahun_lahir_kucing&lt;/span&gt; AND &lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #8f1313;"&gt;&amp;#123;&lt;/span&gt;

         &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;usia_kucing&lt;/span&gt; = &lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #292b74; font-weight: bold;"&gt;integer&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;&lt;a href="http://www.php.net/date"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;Y&amp;quot;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt; - &lt;span style="color: #0000ff;"&gt;$this&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;tahun_lahir_kucing&lt;/span&gt;
     &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;

 &lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span style="color: #8f1313;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// buat objek kucing&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; kelasKucing&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// metode setNamaKucing dan setTahunLahir bisa dipanggil&lt;/span&gt;

&lt;span style="color: #808080; font-style: italic;"&gt;// langsung oleh objek karena sifatnya public&lt;/span&gt;
 &lt;span style="color: #808080; font-style: italic;"&gt;// kasih nama untuk si kucing&lt;/span&gt;
 &lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setNamaKucing&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;arie&amp;quot;&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;
 &lt;span style="color: #808080; font-style: italic;"&gt;// tahun lahir si kucing&lt;/span&gt;
 &lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;setTahunLahir&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1982&lt;/span&gt;&lt;span style="color: #8f1313;"&gt;&amp;#41;&lt;/span&gt;;

&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// syntax di bawah ini benar&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// karena properti gender_kucing bersifat public&lt;/span&gt;
&lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;gender_kucing&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;&amp;quot;laki-laki&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;// syntax di bawah ini salah dan akan memunculkan error&lt;/span&gt;
&lt;span style="color: #808080; font-style: italic;"&gt;// properti usia_kucing bersifat private&lt;/span&gt;

&lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;usia_kucing&lt;/span&gt; = &lt;span style="color: #cc66cc;"&gt;20&lt;/span&gt;;
&lt;span style="color: #808080; font-style: italic;"&gt;// properti nama_kucing bersifat private&lt;/span&gt;
&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Nama kucing kita adalah : &amp;quot;&lt;/span&gt;.&lt;span style="color: #0000ff;"&gt;$arie&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;nama_kucing&lt;/span&gt;;

&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!--SOURCE CODE END --&gt;

&lt;br /&gt;&lt;br /&gt;
Bisa dilihat bahwa implementasi OOP pada PHP 5 sudah sangat advanced dan pada kenyataan sudah banyak extension library ataupun fungsi-fungsi di PHP 5 yang menggunakan model OOP untuk penggunaannya. Salah satunya adalah fungsi &lt;b&gt;mysql improved (mysqli)&lt;/b&gt; yang menyediakan style komunikasi database mysql dalam bentuk OOP. Sampai sini dulu pengenalan pada OOP PHP 5, see you on next articles with same topics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25865790-114475460691307459?l=dicarve.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dicarve.blogspot.com/feeds/114475460691307459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=25865790&amp;postID=114475460691307459' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114475460691307459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/25865790/posts/default/114475460691307459'/><link rel='alternate' type='text/html' href='http://dicarve.blogspot.com/2006/04/object-oriented-programming-php-5.html' title='Object Oriented Programming PHP 5 - Bagian 1'/><author><name>arienugraha</name><uri>http://www.blogger.com/profile/00094475941697093216</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_d8v4QG-m3zE/SmA0XThHGoI/AAAAAAAAAAo/DZaVxUuil_g/S220/dicarve.jpg'/></author><thr:total>3</thr:total></entry></feed>
