Selasa, Oktober 30, 2007

Kembali Ke Linux!!

Kalo kata Tukul :
"Kembali Ke Laptop!!"
Kalo kata gw :
"Kembali Ke Linux!!"

Yahh betul, memang agak cukup memalukan, setelah sebelumnya gw "mendeklarasikan" diri sebagai pengguna si "setan merah" (baca: FreeBSD), akhirnya gw kembali switch ke Linux. Pilihan jatuh kepada distro turunan "slackware", Zenwalk Linux. 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 .

Desktop Zenwalk Linux baru gw

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 :

  • Instalasinya menantang!! (ga penting), partisi hard disknya berbasis teks pake cfdisk!!, tapi cepet bro proses instalasinya, ga nyampe setengah jam Zenwalk is ready to rocks!!
  • Slackware itu agak-agak mirip FreeBSD desainnya, simple, fast dan secure
  • 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)
  • 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
  • Init scriptnya gampang dimodifikasi, tinggal cemplungin aje script kita ke dir /etc/rc.d/, trus buat filenya executable, langsung dah script kita jalan pas booting
  • Udah pake Kernel 2.6.22, udah ada wireless stacknya dan wireless card udah langsung ke-detect, tinggal install driver-nya atawa pake "ndiswrapper"
  • Untuk update package/software udah ada software xnetpkg, mirip2 sama synaptic gicuu dech
  • Desktop defaultnya XFCE 4, which is very light, fast, simple and easy. I Loveee the XFCE file manager, Thunar, very fastttttttt......
  • Untuk urusan "desktop eye candy", semua icons dan themes punya GNOME bisa kita pake di XFCE (secara mereka punya fondasi yang sama)

Selasa, April 03, 2007

MySQL Improved alias MySQLI!

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).

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.

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 :

--with-mysqli=shared,/usr/local/mysql/bin/mysql-config

pada command configure kita
Kalo di Windows lebih gampang lagi, cukup tambahin baris :

extension=php_mysqli.dll

pada deretan module-module extension yang laennya di file php.ini. Trus restart deh Web Server-nya.

Langsung aja kita liat contoh implementasi extension MySQLI di source code PHP kita, begini nih caranye :

<?php
 
// buat constant 
define('DB_HOST', 'localhost');
define('DB_USER', 'dicarve');
define('DB_PASS', 'dicarvepass');
define('DB_NAME', 'dicarvedb');
define('DB_PORT', '3306');
 
// cek dulu apa extensionnya dah aktif pa belom?
if (!extension_loaded('mysqli')) {

    echo 'Extension MySQLI belum terinstall dengan benar. check php.ini';
    exit();
}
 
// buat objek mysqli
$mysqli_obj = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT);

 
/* cek apakah koneksi berhasil dilakukan */
if (mysqli_connect_errno()) {
    echo 'Koneksi gagal dilakukan dengan alasan : '.mysqli_connect_error();
    exit();
} else {

    echo 'Koneksi berhasil dilakukan<br />'."\n";
    echo 'Versi Server MySQL : '.$mysqli_obj->server_info."<br />\n";

}
 
 
/* tutup koneksi ke db server */
$mysqli_obj->close();
?>


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) :

<?php
 
// include file source code koneksi database sebelumnya
// yang misalnya udah kita kasih nama 'mysqli.inc.php';
require 'mysqli.inc.php';
 
// untuk melakukan query kita menggunakan 
// metode 'query' milik kelas mysqli

// hasil dari pemanggilan metode ini nantinya akan
// menghasilkan sebuah objek baru milik kelas mysqli_result
$result_obj = $mysqli->query("SELECT nama FROM tabel_dicarve");
 
// cek apakah query berhasil dilakukan
if ($result_obj) {

    // gunakan properti publik 'num_rows' milik kelas mysqli_result
    // untuk mengetahui jumlah baris hasil query
    echo 'Ditemukan '.$result_obj->num_rows.' baris data<br /><br />';

 
    echo 'Data-data yang ditemukan adalah sbb : <br />';
 
    // gunakan metode 'fetch_row' untuk mengambil data baris demi baris dari resultset
    while ($data = $result_obj->fetch_row()) {

        echo $data[0].'<br />'."\n";
    }
 
    // bebaskan memory resultset

    $result_obj->close();
}
 
$mysqli_obj->close();
?>


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 :

<?php
 
// include file source code koneksi database sebelumnya
// yang misalnya udah kita kasih nama 'mysqli.inc.php';
require 'mysqli.inc.php';
 
// setiap query SQL kita pisahkan dengan semi-colon atawa titik koma
$queries  = "SELECT gmd FROM tabel_gmd;";

$queries .= "SELECT nama FROM tabel_dicarve;";
$queries .= "SELECT judul FROM tabel_biblio";
 
// gunakan metode 'multi_query'
// untuk meng-execute string query SQL multiple secara simultan
$multi_query_obj = $mysqli_obj->multi_query($queries);

 
/* execute multi query */
if ($multi_query_obj) {
    // loop masing-masing result-nya
    while (true) {

        // ambil result set multiple query dengan metode 'store_result'
        if ($result = $mysqli_obj->store_result()) {
            while ($row = $result->fetch_row()) {

                echo $row[0]."<br />\n";
            }
 
            // bebasin memory resultset
            $result->close();
        }        

 
        // apakah masih ada resultset lagi?
        // kalau udah abis kita stop loop-nya
        if (!$mysqli_obj->more_results()) {
            break;
        } else {

            // kita buat pemisah antar resultset dengan garis horizontal HTML <hr>
            echo "<hr>\n";
        }
    }
}
 
/* tutup koneksi ke server */

$mysqli_obj->close();
?>


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!!