MySQL & FreePascal Pemrograman Database...

28

Click here to load reader

Transcript of MySQL & FreePascal Pemrograman Database...

Page 1: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200650

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Salah satu bahasa pemrograman yang

paling disukai penulis semasa ku liah

adalah Pascal. Selain terstruktur,

bahasa Pascal juga cukup mudah dipaha-

mi untuk pembuatan program. Jika Anda

ingin membuat program dalam bahasa

Pascal di Linux, gunakan saja FreePascal

sebagai compiler-nya. Syntax bahasa Pas-

cal yang digunakan di FreePascal sangat

mendekati dengan syntax bahasa yang di-

gunakan di Turbo Pascal 7.0. Paling tidak,

hal tersebut dapat sedikit mengurangi

waktu adaptasi sewaktu membuat prog-

ram di FreePascal.

Pada InfoLINUX edisi Maret 2004, su-

dah dibahas mengenai fi tur-fi tur yang ada

pada FreePascal. Dan pada artikel ini, penu-

lis akan menjelaskan tentang cara membuat

program dengan FreePascal yang akan kita

koneksikan dengan database yang ada di

MySQL.

Instalasi FreePascalSaat penulisan artikel ini, penulis menggu-

nakan distro Fedora Core 4 untuk uji co-

banya. Untuk menginstalasikan FreePascal

di Fedora Core, Anda cukup mengetikkan

perintah di bawah ini:

# rpm -ivh fpc-2.0.1-050923.i386.rpm

Setelah terinstalasi dengan baik, coba ke-

tikkan fpc dari konsole.

$ fpcFree Pascal Compiler version 2.0.1 [2005/09/23] for i386

Copyright (c) 1993-2005 by Florian Klaempfl/usr/lib/fpc/2.0.1/ppc386 [options] <inputfile> [options]................................................................

Maka akan terlihat versi FreePascal yang

terinstallasi di sistem Anda.

Coba tes membuat program sederhana

dengan menggunakan FreePascal. Ketikkan

baris program di bawah ini dengan meng-

gunakan editor kesukaan Anda.

Program Tes;Uses crt;Begin clrscr(); writeln (‘Hello, Tes Membuat Program Pascal’);End.

Simpan dengan nama hello.pas, lalu

compile dengan menggunakan perintah

berikut:

$ fpc hello.pas

Setelah berhasil, Anda akan melihat dua

buah fi le tambahan, yaitu hello.o dan hello.

File hello.o adalah fi le object yang dihasil-

kan, sedangkan fi le hello adalah fi le execut-

able yang dapat Anda jalankan. Untuk men-

jalankan fi le tersebut, Anda cukup mengetik-

kan perintah berikut:

$ ./helloHello, Tes Membuat Program Pascal

Persiapan awal Sebelum kita membuat program yang

mengkoneksikan FreePascal ke database

MySQL, pastikan Anda telah menginstalasi-

kan paket-paket di bawah ini:

� mysql-4.1.11-2

� mysql-server-4.1.11-2

� mysql-devel-4.1.11-2

Selanjutnya, set password untuk user

root yang ada di MySQL.

# service mysqld start# mysqladmin -u root password ‘passwordanda’

(Note: Ubah passwordanda dengan pass-

word pilihan Anda.)

Selanjutnya restart service MySQL untuk

menjalankan perubahan:

# service mysqld restart

Setelah memberikan password untuk

u ser root, langkah berikutnya adalah mem-

buat sebuah user di MySQL selain user root,

agar dapat mengakses database MySQL.

Sebagai contoh, penulis ingin membuat

sebuah user dengan nama supriyanto, dan

diberikan beberapa hak akses.

# mysql -u root -p

mysql> use mysql;mysql> insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_

Pemrograman Database Menggunakan MySQL dan FreePascalSebagai salah satu compiler Pascal terbaik yang ada di Linux, FreePascal dapat kita gu-nakan untuk men-develop program yang mengoneksikan ke database MySQL. Pada “Tuto-rial” ini, penulis akan menjelaskan cara koneksi FreePascal ke database MySQL.

MySQL & FreePascal

Page 2: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 51

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES (‘localhost’, ‘supriyanto’, password(‘sus4h4j4’), ‘Y’, ‘Y’,

‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’);mysql> FLUSH PRIVILEGES;mysql> quit# service mysqld restart

Berikutnya Anda sudah dapat login ke

MySQL dari user biasa.

$ mysql -u supriyanto -p

mysql>

Membuat database TestDBUntuk latihan menghubungkan FreePascal

dengan MySQL, kita akan membuat sebuah

database yang bernama TestDB sebagai uji-

cobanya. Untuk membuatnya ikuti langkah

di bawah ini:

� Buat database testdb.

$ mysqladmin -u supriyanto -p create testdb

� Ketikkan baris di bawah ini dengan edi-

tor kesukaan Anda, lalu save dengan na-

ma testdb.sql.

CREATE TABLE `FPdev` (`id` int(11) NOT NULL default ‘0’,`UserName` char(255) default NULL,`InstEmail` char(255) default

MySQL & FreePascal

Gbr 1. Tambahkan letak Library MySQL di File fpc.cfg.

Page 3: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200652

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

NULL,PRIMARY KEY (`id`),KEY `id` (`id`));

INSERT INTO `FPdev` VALUES (1,’Michael Van Canneyt’,’[email protected]’),(2,’Florian Klaempfl’,’[email protected]’),(3,’Carl-Eric Codere’,’[email protected]’),(4,’Daniel Mantione’,’[email protected]’),(5,’Pierre Muller’,’[email protected]’),(6,’Jonas Maebe’,’[email protected]’),(7,’PeterVreman’,’[email protected]’),(8,’Gerry Dubois’,’[email protected]’);

(Note: Semua baris perintah di atas, ketik-

kan dalam satu baris perintah).

� Import testdb.sql ke database testdb

$ mysql -u supriyanto -p testdb < testdb.sql

Untuk memastikan kalau fi le testdb.sql

sudah di-import ke database testdb, check

langsung ke dalam database testdb.

Test Koneksi FreePascal dengan MySQLSetelah membuat database testdb, lang-

kah berikutnya adalah mencoba koneksi

FreePascal dengan database MySQL. Sebe-

lum dapat menginstalasi program FreePas-

cal dengan MySQL, tambahkan di fi le

konfi gurasi FreePascal yaitu fpc.cfg, untuk

menunjuk ke library MySQL. Sebagai con-

toh di Fedora Core 4 library MySQL berada

di /usr/lib/mysql, maka tambahkan baris

berikut ini di fpc.cfg, dibagian #searchpath

for libraries.

# vi /etc/fpc.cfg.....................................................# searchpath for libraries# tambahkan baris berikut -Fl/usr/lib/mysql.....................................................

Selanjutnya, kita akan membuat prog-

ram untuk mengetes koneksi ke MySQL.

Ketikkan baris berikut dengan editor ke-

sukaan Anda, kemudian Save dengan nama

konekdanbaca.pas.

$ vi konekdanbaca.pasProgram KonekDanBaca;{header file untuk menghubungkan ke MySQL}uses mysql4;Var

{ variabel-variabel yang dibutuhkan untuk konek & menampung hasil query.} sock,inisial:PMySQL; qmysql:TMYSQL; recbuf:PMYSQL_RES; rowbuf:TMYSQL_ROW; state:integer;begin

{ inisialisasi menggunakanperintah mysql_init } inisial:=mysql_init(PMySQL(@qmysql));

{ koneksi menggunakan mysql_real_connect dgn formatmysql_real_connect(inisial, host, user, user_password, nama_database, port, unix_socket, clientflag): } sock:=mysql_real_connect(inisial,nil,’supriyanto’,’sus4h4j4’,’testdb’,0,nil,0);

{ jika koneksi tidak berhasil, variabel sock akan bernilai nil dan koneksi akan keluar. Jika berhasil, maka akan tercetak tulisan ‘koneksi berhasil’, dan akan menjalankan baris perintah berikutnya } if sock=nil then begin writeln(‘Koneksi Error !’); writeln(mysql_error(@qmysql)); end else writeln(‘Koneksi berhasil !’); writeln;

{Jika koneksi berhasil, jalankan query dengan menggunakan fungsi mysql_query. Format mysql_query(koneksi, perintah query) } state:=mysql_query(sock,’select * from FPdev’); if (state < 0) then begin writeln (‘Query Salah....!’); writeln (mysql_error(sock));

MySQL & FreePascal

Gbr 2. Proses Compile dan Running Program Konekdanbaca.pas.

Page 4: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 53

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

MySQL & FreePascal

end;{ tampung hasil query pada variabel recbuf. Setelah itu, hasil query yang dihasilkan dapat ditampung dan dibaca dengan menggunakan variabel rowbuf } recbuf := mysql_store_result(sock); rowbuf := mysql_fetch_row(recbuf); while (rowbuf <>nil) do begin write (‘- No ID: ‘, rowbuf[0]); write (‘, Username: ‘, rowbuf[1]); writeln (‘, Email: ‘, rowbuf[2]); rowbuf := mysql_fetch_row(recbuf); end; mysql_free_result (recbuf); mysql_close(sock);end.

Kompile dan jalankan program ini, ma-

ka Anda akan melihat daftar nama pembuat

FreePascal.

$ fpc konekdanbaca.pas$ ./konekdanbacaKoneksi berhasil !

- No ID: 1, Username: Michael Van Canneyt, Email: [email protected] No ID: 2, Username: Florian Klaempfl, Email: [email protected] No ID: 3, Username: Carl-Eric Codere, Email: [email protected] No ID: 4, Username: Daniel Mantione, Email: [email protected] No ID: 5, Username: Pierre Muller, Email: [email protected] No ID: 6, Username: Jonas Maebe, Email: [email protected]

- No ID: 7, Username: Peter Vreman, Email: [email protected] No ID: 8, Username: Gerry Dubois, Email: [email protected]

Jika tampilan hasil program di atas ber-

jalan dengan baik, berarti Anda telah ber-

hasil membuat program untuk mengoneksi

kan FreePascal ke database MySQL. Selain

koneksi ke database MySQL, FreePascal

juga dapat dikoneksikan ke PostgreSQL,

Sqlite, Interbase, dan sebagainya.

Agar lebih memudahkan pembelajaran,

penulis juga telah menyertakan program

untuk seperti tambah data, edit data, dan

hapus data dengan menggunakan FreePas-

cal dan MySQL, yang dapat Anda temukan

di CD InfoLINUX kali ini.

Semoga dari artikel yang singkat ini,

Anda dapat berkreasi lebih jauh lagi dalam

membuat program yang sesuai dengan ke-

butuhan kerja maupun pribadi.

Supriyanto ([email protected])

Page 5: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200654

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

SQLite3

SQlite merupakan database yang me-

narik. Cukup dengan sebuah fi le,

kita bisa menyimpan berbagai tabel

yang dibutuhkan. Aksesnya juga cepat dan

mendukung cukup lengkap standar SQL.

Instalasi pun dapat dengan mudah dilaku-

kan karena hanya ada beberapa fi le pustaka

dan satu binary yang perlu di-copy-kan.

Menariknya, cukup banyak bahasa pem-

rograman juga telah mendukung database

yang satu ini.

Dengan kesederhanaannya, terkadang

pengguna Sqlite cukup menggunakan prog-

ram sqlite (atau sqlite3 untuk Sqlite versi 3)

untuk bekerja (menggunakan sintaks SQL)

dengan database sqlite. Hanya, sayangnya,

tidak semua pengguna database mau atau

mampu bekerja dengan sintaks SQL.

Sebuah front end yang sederhana tentu-

nya diharapkan bisa membantu pengguna

database yang tidak bekerja dengan sintaks

SQL. Front end inilah yang ingin kita buat

dalam artikel kali ini. Sebut saja nama front

end-nya sebagai sqliteweb. Pada tulisan ini,

kita akan membuat sqliteweb 0.1, yang ha-

nya memiliki beberapa fi tur terbatas.

Program ini (dan versi terbarunya) bisa

didapatkan di http://www.noprianto.com/in-

dex.php?mod=modules/sqliteweb/index.php.

Program sqliteweb ini dilisensikan di bawah

lisensi BSD yang sangat fl eksibel sehingga

bisa dipergunakan oleh siapa saja, untuk

cakupan penggunaan yang sangat luas.

Sqliteweb merupakan web yang dijalan-

kan sebagai aplikasi CGI. Untuk membuat

aplikasi ini lebih sederhana tanpa ketergan-

tungan dengan bahasa pemrograman dan

pustaka-pustakanya (seperti halnya sqlite

itu sendiri), sqliteweb dibangun menggu-

nakan shell script (pengembangan meng-

gunakan shell bash) dan menggunakan

bantuan dari berbagai utiliti standar sistem

berikut ini:

� test (bagian cari coreutils)

� cd (bash builtins)

� pwd (bash builtins)

� ls (bagian dari coreutils)

� wc (bagian dari coreutils)

� cut (bagian dari coreutils)

� rm (bagian dari coreutils)

� mv (bagian dari coreutils)

� touch (bagian dari coreutils)

� seq (bagian dari coreutils)

Sementara, sqlite yang dipergunakan

adalah sqlite versi 3. Penulis tidak melaku-

kan pengujian dengan sqlite versi sebelum-

nya.

Fitur-fi tur yang datang bersama versi 0.1

aplikasi ini adalah:

� Bisa membuat database

� Bisa mem-browse database di direktori

tertentu (bisa diatur sesuai keinginan)

� Bisa menghapus database

� Bisa mengganti nama database

� Bisa melihat daftar tabel di dalam data-

base

� Bisa menghapus tabel tertentu di dalam

database

� Bisa melihat isi suatu tabel

� Bisa membuat tabel

Sayangnya, pada versi 0.1 ini, kita belum

bisa mengisi data ke dalam tabel, ataupun

memanipulasi data di dalam tabel seperti

menghapus data dan meng-update data. Fi-

tur ini akan dipertimbangkan untuk dima-

sukkan pada versi berikutnya.

Pada versi 0.1 ini juga, masalah keamanan

belum menjadi prioritas. Karena dijalankan

melewati web, maka direktori dan fi le-fi le

database di dalamnya harus bisa ditulisi

oleh user yang menjalankan web server agar

aplikasi dapat berfungsi sepenuhnya.

Untuk membuat sebuah direktori bisa di-

tulisi oleh user yang menjalankan web server,

beberapa cara berikut ini bisa dilakukan:

� Membuat hak akses menjadi 777 (cara

yang paling tidak dianjurkan). Dengan

demikian, direktori tersebut bisa diakses

baca tulis oleh siapa saja.

� Dengan membuat direktori tersebut

menjadi milik user yang menjalankan

web server.

� Dengan membuat group baru, dimana

direktori database tersebut menjadi mi-

lik group baru tersebut. User yang men-

jalankan database kemudian di-assign

menjadi anggota group tersebut.

Program sqliteweb versi 0.1 ini dibuat se-

sederhana mungkin sehingga hanya memer-

lukan satu script. Nama scriptnya adalah

sqliteweb.sh. Untuk menjalankan script ini,

pengguna cukup mengopikan fi le ini ke di-

rektori cgi-bin web server yang digunakan.

Setelah pengaturan yang dibahas berikut

ini, program bisa langsung diakses dari web

server.

Path default untuk direktori data-

base adalah /tmp. Untuk mengubah ke

path lain yang diinginkan, pengguna

perlu membuka file script tersebut dan

mengubah variabel DB_PATH di dalam

Membuat Web Front End untuk SQLite3PostgreSQL memiliki PHPPgAdmin. MySQL memiliki PHPMyAdmin. Bagaimana kalau kita buat sendiri web front end sederhana untuk SQLite3? Cukup gunakan shell script dan utiliti standar sistem.

Page 6: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 55

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

SQLite3

fungsi _config(). Pengaturan default juga

hanya akan mencari file dengan ekstensi

.db. Apabila Anda menggunakan ekstensi

yang berbeda, Anda bisa mengubah varia-

bel DB_EXT, juga di dalam fungsi _con-

fig. Pastikan juga path SQLITE_BINARY

telah sesuai dengan lokasi instalasi prog-

ram sqlite3 Anda.

Satu catatan: aplikasi ini merupakan free

software dan tidak ada garansi yang akan

diberikan dalam segala kondisi. Gunakan

dengan resiko sendiri. Beberapa kode be-

lum ditest dan mungkin mengakibatkan

kehilangan data.

Cara kerja aplikasiPertama-tama, ketika dijalankan, aplikasi

akan melakukan langkah-langkah berikut

ini:

� Mengirimkan header HTTP (dengan

content-type adalah text/html).

� Membaca informasi program.

� Mengirimkan header HTML.

� Memeriksa program-program yang

dibutuhkan, termasuk memeriksa apa-

kah binary sqlite3 dapat dijalankan dan

memeriksa apakah direktori database bi-

sa dibaca. Apabila pada tahap ini terjadi

kesalahan, maka program akan dihenti-

kan dengan menampilkan pesan kesalah-

an.

� Apabila pada pemeriksaan sebelumnya

tidak terjadi kesalahan, maka program

akan melakukan langkah-langkah beri-

kut ini:

� menampilkan menu utama.

� memeriksa tugas yang akan dilaku-

kan dan memanggil fungsi yang ber-

sesuaian.

� Menampilkan footer HTML.

Source code programBerikut ini adalah source code program.

(beberapa bagian yang tidak berpengaruh

pada logika program telah dipotong).

#!/bin/sh

#[...dipotong...]

# configurations####################################################################

#_config(){ SQLITE_BINARY=”/usr/bin/sqlite3”

DB_PATH=”/tmp” DB_EXT=”*.db”

}## internal functions##############################################################

[...dipotong...]

_check_prereq(){ _config ERRSTR=”” test ! -x $SQLITE_BINARY && ERRSTR=”$ERRSTR<BR>Cannot locate SQLITE binary” test ! -r $DB_PATH && ERRSTR=”$ERRSTR<BR>Database directory cannot be read” test -z $ERRSTR && return 0 || return 1 }

_cgi_header(){ echo Content-type: text/html echo echo }

[...dipotong...]## public functions####################################################################

[...dipotong...]

show_menu(){ TASK=”$PATH_INFO$QUERY_STRING” test -z $TASK && TASK=home

TASK_MAIN=`echo $TASK | cut -d/ -f2` TASK_DETAIL=`echo $TASK | cut -d/ -f3`

MENU=”home browse create” echo “ <TABLE class=’full’> <TR> “ for i in $MENU do bgcolor=”” if [ $TASK_MAIN == $i ] then bgcolor=”bgcolor=’lightgrey’” fi echo “<TD align=’center’ $bgcolor ><A href=’$SCRIPT_NAME/$i’>$i</A></TD>” done echo “ </TR> </TABLE> “}

go_home(){ print_doc}

go_browse(){ if [ -z “$1” ] then OLDPWD=`pwd`

DB_NUM=0 cd $DB_PATH ls $DB_EXT 1>/dev/null 2>&1

if [ $? -eq 0 ] then DB_NUM=`ls -l $DB_EXT | wc -l | tr -d [[:space:]]` fi

Page 7: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200656

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

SQLite3

echo “<BR>Found $DB_NUM database(s) in $DB_PATH”

echo “<TABLE class=’full’>” echo “<TH>database</TH><TH>browse</TH><TH>rename</TH><TH>delete</TH>” for i in `ls $DB_EXT` do echo “<TR>” echo “<TD>$i</TD>” echo “<TD><A href=’$SCRIPT_NAME/browse/$i’>browse</A></TD>” echo “<TD><A href=’$SCRIPT_NAME/rename/$i’>rename</a></TD>” echo “<TD><A href=’$SCRIPT_NAME/delete/$i’>delete</a></TD>” echo “</TR>” done echo “</TABLE>” cd $OLDPWD else echo “<BR>” echo Browse database “<B>$1</B><BR><BR>”

OLDPWD=`pwd` cd $DB_PATH TABLES=`$SQLITE_BINARY $1 .tables` echo “<A href=’$SCRIPT_NAME/add_table/$1’>Add table</A>” echo “<TABLE class=’full’>” echo “<TH>table</TH><TH>browse</TH><TH>drop</TH><TH>insert</TH>” for i in $TABLES do echo “<TR>” echo

“<TD>$i</TD>” echo “<TD><A href=’$SCRIPT_NAME/browse_table/$1/$i’>browse</A></TD>” echo “<TD><A href=’$SCRIPT_NAME/drop_table/$1/$i’>drop</a></TD>” echo “<TD><A href=’$SCRIPT_NAME/insert_table/$1/$i’>insert</a></TD>” echo “</TR>” done echo “</TABLE>”

cd $OLDPWD fi}

go_delete(){ if [ ! -z “$1” ] then echo “<BR>Delete database <B>$1</B><BR><BR>” OLDPWD=`pwd` cd $DB_PATH rm -f $1 if [ $? -eq 0 ] then echo “Status: Database deleted successfully” else echo “Status: Failed to delete database (error code: $?)” fi cd $OLDPWD fi }

go_rename(){ if [ ! -z “$1” ] then echo “<BR>Rename database <B>$1</B><BR><BR>” echo “ <FORM action=’$SCRIPT_NAME/rename_action/$1/’ method=’get’>

<TABLE class=’noborder’> <TR> <TD class=’noborder’>New database name</TD> <TD class=’noborder’><INPUT type=’text’ name=’new_name’></TD> <TD class=’noborder’><INPUT type=’submit’ value=’rename’></TD> </TR> </TABLE> </FORM> “ fi }

go_rename_action(){ if [ ! -z “$1” ] && [ ! -z “$2” ] then OLD_NAME=$1 NEW_NAME=`echo $2 | cut -d= -f2` echo “<BR>Rename database from <B>$OLD_NAME</B> to <B>$NEW_NAME</B><BR><BR>” OLDPWD=`pwd` cd $DB_PATH mv $OLD_NAME $NEW_NAME if [ $? -eq 0 ] then echo “Status: Database renamed successfully” else echo “Status: Failed to rename database (error code: $?)” fi cd $OLDPWD fi}go_create(){ if [ -z “$1” ] then

Page 8: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 57

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

SQLite3

echo “<BR>Create new database<BR><BR>” echo “ <FORM action=’$SCRIPT_NAME/create/’ method=’get’> <TABLE class=’noborder’> <TR> <TD class=’noborder’>Database name</TD> <TD class=’noborder’><INPUT type=’text’ name=’db’></TD> <TD class=’noborder’><INPUT type=’submit’ value=’create’></TD> </TR> </TABLE> </FORM> “ else DB_TO_CREATE=`echo $1 | cut -d= -f2` echo “<BR>Create new database <B>$DB_TO_CREATE</B><BR><BR>”

OLDPWD=`pwd` cd $DB_PATH touch $DB_TO_CREATE if [ $? -eq 0 ] then echo “Status: Database created successfully” else echo “Status: Failed to create database (error code: $?)” fi cd $OLDPWD fi}

go_browse_table(){ echo “<BR>Browse table <B>$2</B> of database <B>$1</B><BR><BR>”

OLDPWD=`pwd`

cd $DB_PATH echo “<TABLE class=’full’>” $SQLITE_BINARY -html -header $1 “select * from $2” echo $A echo “</TABLE>” echo “<BR><BR><A href=’$SCRIPT_NAME/browse/$1’>browse database $1</A>” cd $OLDPWD }

go_drop_table(){ echo “<BR>Drop table <B>$2</B> of database <B>$1</B><BR><BR>”

OLDPWD=`pwd` cd $DB_PATH $SQLITE_BINARY $1 “drop table $2” 1>/dev/null 2>&1 if [ $? -eq 0 ] then echo “Status: Table $2 deleted successfully” else echo “Status: Failed to delete table $2” fi

echo “<BR><BR><A href=’$SCRIPT_NAME/browse/$1’>browse database $1</A>” cd $OLDPWD}

go_insert_table(){ echo “<BR>Insert into table <B>$2</B> of database <B>$1</B><BR><BR>” echo “<I>Sorry, not implemented yet</I>” }

go_add_table(){ if [ -z “$2” ] then echo “<BR>Add table for database <B>$1</

B><BR><BR>” echo “ <FORM action=’$SCRIPT_NAME/add_table/$1/’ method=’get’> <INPUT type=’hidden’ name=’task’ value=’step1’> <TABLE class=’noborder’> <TR> <TD class=’noborder’>Table name</TD> <TD class=’noborder’><INPUT type=’text’ name=’table_name’></TD> </TR> <TR> <TD class=’noborder’>Field count</TD> <TD class=’noborder’><INPUT type=’text’ name=’field_count’></TD> </TR> <TR> <TD class=’noborder’ colspan=’2’><INPUT type=’submit’ value=’next’></TD> </TR> </TABLE> </FORM> “ else LOCAL_TASK_INFO=`echo $2 | cut -d\& -f1` LOCAL_TASK=`echo $LOCAL_TASK_INFO | cut -d= -f2`

TABLE_NAME_INFO=`echo $2 | cut -d\& -f2` TABLE_NAME=`echo $TABLE_NAME_INFO | cut -d= -f2` FIELD_COUNT_INFO=`echo $2 | cut -d\& -f3` FIELD_COUNT=`echo $FIELD_COUNT_INFO | cut -d= -f2` case $LOCAL_TASK in step1)

Page 9: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200658

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

SQLite3

echo “<BR>Please specify column name and type for table <B>$TABLE_NAME</B><BR><BR>”

echo “<FORM action=’$SCRIPT_NAME/add_table/$1/’ method=’get’>” echo “<INPUT type=’hidden’ name=’task’ value=’step2’>” echo “<INPUT type=’hidden’ name=’table_name’ value=’$TABLE_NAME’>” echo “<INPUT type=’hidden’ name=’field_count’ value=’$FIELD_COUNT’>” echo “<TABLE class=’noborder’>” for i in `seq 1 $FIELD_COUNT` do echo “<TR>” echo “<TD class=’noborder’>Field $i</TD>” echo “<TD class=’noborder’><INPUT type=’text’ name=’field_$i’></TD>” echo “<TD class=’noborder’>” echo “<SELECT name=’type_$i’>” echo “<OPTION value=’NULL’>NULL</OPTION>” echo “<OPTION value=’INTEGER’>INTEGER</OPTION>” echo “<OPTION value=’REAL’>REAL</OPTION>” echo “<OPTION value=’TEXT’>TEXT</OPTION>”

echo “<OPTION value=’BLOB’>BLOB</OPTION>” echo “</SELECT>” echo “</TD>” echo “<TD class=’noborder’><INPUT type=’checkbox’ name=’pk_$i’ value=’1’>is primary key</TD>” echo “</TR>” done echo “<TR>” echo “<TD class=’noborder’ colspan=’2’><INPUT type=’submit’ value=’finish’></TD>” echo “</TR>” echo “</TABLE>”

echo “</FORM>” ;; step2) echo “<BR>Create table <B>$TABLE_NAME ($FIELD_COUNT)</B><BR><BR>” CMD=”CREATE TABLE $TABLE_NAME (“

FIELDS=`echo $2 | cut -d\& -f4- | tr ‘\&’ ‘ ‘` POS=0 POS_PK=0 for i in $FIELDS do

KEY=`echo $i | cut -d= -f1 | cut -d_ -f1` VAL=`echo $i | cut -d= -f2` TEMP=”” if [ $KEY == “field” ]

then

[ $POS -eq 0 ] && TEMP=$VAL || TEMP=”,$VAL”

PREV_FIELD=$VAL elif [ $KEY == “type” ] then

TEMP=”$TEMP $VAL” elif [ $KEY == “pk” ] then

if [ $POS_PK -eq 0 ]

then

PK_TEMP=”$PK_TEMP $PREV_FIELD”

POS_PK=1

else

PK_TEMP=”$PK_TEMP, $PREV_FIELD”

fi fi CMD=”$CMD $TEMP” let POS=$POS+1 done PK_TEMP_TEST=`echo $PK_TEMP | tr -d [[:space:]]` test -z $PK_TEMP_TEST && CMD=”$CMD);” || CMD=”$CMD, primary key ($PK_TEMP));”

echo $CMD echo “<BR><BR>”

Page 10: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 59

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

OLDPWD=`pwd` cd $DB_PATH $SQLITE_BINARY $1 “$CMD” if [ $? -eq 0 ] then echo “Status: Table $TABLE_NAME created successfully” else echo “Status: Failed to create $TABLE_NAME” fi cd $OLDPWD echo “<BR><BR><A href=’$SCRIPT_NAME/browse/$1’>browse database $1</A>” esac fi}## main functions####################################################################main(){ _cgi_header _program_info _html_header _check_prereq if [ $? -ne 0 ] then print_errmsg “$ERRSTR” else show_menu TASK_MAIN=`echo $TASK | cut -d/ -f2` TASK_DETAIL=`echo $TASK | cut -d/ -f3` TASK_EXTRAINFO=`echo $TASK | cut -d/ -f4`

case $TASK_MAIN in home) go_home ;; browse) go_browse $TASK_DETAIL ;; create) go_create $TASK_DETAIL ;; delete) go_delete $TASK_DETAIL ;; rename) go_rename $TASK_DETAIL ;; rename_action) go_rename_action $TASK_DETAIL $TASK_EXTRAINFO ;; browse_table) go_browse_table $TASK_DETAIL $TASK_EXTRAINFO ;; drop_table) go_drop_table $TASK_DETAIL $TASK_EXTRAINFO ;; insert_table) go_insert_table $TASK_DETAIL $TASK_EXTRAINFO ;; add_table) go_add_table $TASK_DETAIL $TASK_EXTRAINFO ;; esac fi _html_footer}## main program###############################main

Source code selengkapnya juga dapat

dilihat online di website proyek ini.

Penjelasan program� Karena menggunakan utiliti standar

sistem dan penulis tidak mengetahui

fungsi internal bash yang dapat digu-

nakan, maka banyak operasi piping yang

digunakan.

� Untuk memisahkan a=10 misalnya,

penulis menggunakan cut dengan pe-

misah berupa = dan mengambil elemen

pertama sebagai variabel a dan elemen

pecahan kedua sebagai nilai 10.

� Program ini masih belum menggunakan

HTTP encoding.

� Untuk mempermudah parsing URL

yang dikirimkan, PATH_INFO dan

QUERY_STRING dipergunakan saling

bahu membahu untuk memastikan tu-

gas dilakukan dengan benar.

� Hampir semua fungsi menggunakan pa-

rameter, yang dapat diakses sebagai $1 un-

tuk parameter pertama, dan seterusnya.

� Bantuan ls sangat diperlukan, terutama

ketika harus melakukan browse dan

mengetahui jumlah fi le di dalam satu di-

rektori. Terkadang, ls -l digunakan, dan

dipipe ke program wc -l untuk mengeta-

hui jumlah baris. Tidak akurat dan akan

dipikirkan cara yang lebih baik di masa

depan, namun setidaknya cukup mem-

bantu untuk saat-saat ini.

� Pemeriksaan return value proses sebe-

lumnya (yang disimpan ke variabel $?)

sangat sering dilakukan untuk menge-

tahui apakah suatu perintah gagal atau

sukses dilakukan.

� HTTP form method yang dipergunakan

adalah get, dan pembuatan tabel yang

memiliki sangat banyak kolom dan me-

miliki nama kolom panjang bisa berma-

salah ketika panjang URL telah melewati

batas yang diizinkan.

� Terkadang, kita perlu masuk ke direktori

data dan keluar kembali. Oleh karena

itu, Anda mungkin akan menemukan ba-

nyak OLDPWD=`pwd`, cd $DB_PATH

dan cd $OLDPWD.

Program ini masih memiliki sangat ba-

nyak kekurangan. Dan, masih harus dikem-

bangkan lebih lanjut. Selamat mencoba!

Noprianto ([email protected])

SQLite3

Page 11: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200660

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Bahasa Pascal sebagai salah satu ba-

hasa pemrograman tingkat tinggi,

banyak digunakan oleh Perguruan

Tinggi di Indonesia untuk bahan praktikum

mata kuliah Algoritma dan Pemrograman.

Software Turbo Pascal 7.0 sebagai com piler

Pascal di lingkungan DOS, merupakan

kompiler Pascal yang paling banyak digu-

nakan di lingkungan akademik.

Sebenarnya software FreePascal (http://

www.freepascal.org) dapat digunakan se-

bagai alternatif pengganti dari Turbo Pas-

cal. Selain Open Source, FreePascal dapat

berjalan di 15 platform Sistem Operasi, se-

hingga memudahkan pendistribusian hasil

program di berbagai lingkungan OS yang

berbeda. Selain itu, syntax bahasa yang di-

gunakan di FreePascal juga sangat kompati-

bel dengan syntax bahasa yang digunakan di

Turbo Pascal 7.0.

Sebagai compiler Pascal yang open source,

tak heran jika banyak developer open source

yang mengembangkan FreePascal. Salah

satu hasilnya adalah RAD untuk FreePascal

yang bernama Lazarus (http://www.lazarus.

freepascal.org). Lazarus yang dibuat dengan

FreePascal ini, memiliki tampilan yang sa-

ngat mirip dengan aplikasi Borland Delphi.

Mulai dari adanya Form Designer, Properties,

Code Editor, Object Inspector, Component

Pallete, Free Component Library, Debugger,

dan sebagainya sudah terdapat di Lazarus.

Hal ini memang ditujukan agar para prog-

ramer yang terbiasa menggunakan Borland

Delphi, menjadi familiar pada saat menggu-

nakan Lazarus.

Pada artikel kali ini, penulis akan

menjelaskan tentang cara instalasi Lazarus,

perbedaan antara Lazarus dengan Delphi,

dan pembuatan program sederhana meng-

gunakan Lazarus.

Instalasi LazarusSebelum dapat menggunakan Lazarus, lang-

kah pertama yang harus Anda lakukan tentu

saja menginstalasikan Lazarus terlebih da-

hulu. Adapun aplikasi yang dibutuhkan un-

tuk instalasi Lazarus adalah sebagai berikut:

� FreePascal 2.0

� gdk-pixbuf

� gdk-pixbuf-devel

� gtk+ 2.x

� gdb

� gtk+ 2.x-devel

� glibc-devel

1. Instalasi FreePascal 2.0FreePascal 2.0 di Linux sudah tersedia dalam

beberapa paket:

� Paket tar.gz, atau yang dikenal dengan

paket Source Code.

� Paket .rpm (Red Hat Package Manager)

version.

� Paket .deb (Debian) version.

Untuk menginstalasikan paket FreePas-

cal dari paket rpm, gunakan perintah beri-

kut:

# rpm -Uvh fpc-2.0.1-050923.i386.rpm# rpm -Uvh fpcsrc-2.0.1-050923.i386.rpm# rpm -Uvh lazarus-0.9.10-0.i386.rpm

Pada saat penulisan, penulis menggu-

nakan FreePascal dalam paket RPM untuk

diinstalasikan ke system Debian. Tentu

saja, sebelumnya paket RPM ini penu-

lis convert dahulu dengan menggunakan

alien, sehingga menjadi paket deb. Untuk

meng-convert paket RPM fpc dan fpc-

src menjadi bentuk deb, ketikkan langkah

berikut:

# apt-get install alien # alien fp*

Setelah menjadi bentuk installer deb, An-

da dapat menginstallasikan paket FreePascal

tersebut dengan menggunakan perintah

berikut:

# dpkg -i fp*.deb

Sedangkan untuk menginstalasikan

dengan menggunakan paket Source, ex-

tract paket fpc-2.0.0.i386-linux.tar, ke

suatu folder yang ada di system Anda. Lalu

jalankan perintah make all, dan make in-

stall.

# tar -xzvf fpc-2.0.1-050923.source.tar.gz# make all# make install

2. Installasi LazarusPastikan paket-paket selain FreePascal 2.0,

telah terinstall lengkap di sistem Anda. Se-

lanjutnya untuk menginstalasikan Lazarus,

Anda cukup mengetikkan perintah sebagai

berikut:

Paket RPM:

# rpm -Uvh lazarus-0.9.10-0.i386.rpm

Karena paket Lazarus.deb belum terse-

dia, alternatifnya Anda dapat merubah pa-

ket rpm lazarus menjadi paket deb dengan

Lazarus, Rapid Application Development untuk FreePascal Borland Delphi sebagai Rapid Application Development (RAD) yang menggunakan bahasa Pascal, sangat banyak digunakan oleh para pengembang software di lingkungan Windows. Jika Anda merupakan pengembang Linux yang telah terbiasa menggunakan Delphi, gu-nakan saja Lazarus sebagai alternatifnya.

Lazarus

Page 12: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 61

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

menggunakan software alien.

# alien laz*

Setelah berhasil meng-convert menjadi

paket deb, berikutnya Anda tinggal meng-

instalasikan paket Lazarus tersebut dengan

menggunakan perintah dpkg. Sebelumnya,

installasikan terlebih dahulu paket libgtk2.0-

dev dan libgdk-pixbuf-dev di sistem Anda.

# apt-get install libgtk2.0-dev# apt-get install libgdk-pixbuf-dev# dpkg -i lazarus*

Jika tidak ada masalah, dan Lazarus su-

dah terinstalasi dengan baik, Anda dapat

memulai lazarus dengan mengetikkan pe-

rintah berikut dari terminal:

$ lazarus &

Atau jika dari Menu Gnome di Fedora

Core 4, Anda dapat menemukannya di

Menu Application => Programming =>

Lazarus.

Beberapa perbedaan antara Delphi dengan LazarusMeski Lazarus memiliki beberapa persamaan

dengan Delphi, seperti memiliki Object

Browser, IDE, editor, Code Templates, Code

Completion, menggunakan Pascal sebagai

bahasa syntaxnya, dan sebagainya, terdapat

juga beberapa perbedaan mendasar antara

Delphi dan Lazarus yang di antaranya:

1. Lazarus merupakan produk Open

Source, yang ditulis dengan menggu-

nakan FreePascal compiler (FPC). Selain

itu Lazarus juga dapat berjalan di banyak

platform (Linux, MacOS, Windows, dan

sebagainya). Hal ini tentu sangat berbeda

dengan Borland Delphi yang merupakan

produk proprietary dan hanya dapat ber-

jalan di platform Windows.

2. Lazarus merupakan RAD tool seperti

Delphi. Hal ini sama dengan Lazarus

dilengkapi dengan sebuah component

library dan sebuah IDE. Jika di Delphi,

Anda mengenal VCL (Visual Compo-

nent Library), maka di Lazarus Anda

akan mengenal LCL (Lazarus Compo-

nent Library). Meski banyak unit, classes

dan properties yang memiliki fungsi dan

nama yang sama antara Delphi dan Laza-

rus, tetapi Lazarus tidaklah 100% kom-

patibel dengan Delphi.

3. File utama aplikasi Delphi project adalah

.dpr fi le. File utama aplikasi Lazarus

project adalah .lpi fi le. Sebuah .dpr fi le

dari kode program utama dan IDE De-

phi menyimpan beberapa informasi

mengenai compiler switch dan units.

Aplikasi Lazarus juga memiliki sebuah

.lpr fi le, yang juga merupakan fi le kode

program utama. Tetapi, semua infor-

Gbr 1. Situs Lazarus Documentation.

Lazarus

Page 13: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200662

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

5. Ubah beberapa properties untuk kom-

ponen-komponen tersebut, yang ada di

Object Inspector window seperti tabel 1.

Hasil akhirnya seperti terlihat pada Gam-

bar 3.

6. Tahap berikutnya yang terpenting

adalah tahap pembuatan kode pro-

gram. Pilih Button1, lalu dari Object

Inspector, klik tab Events. Didalam box

tersebut, pilih OnClick, dan klik tanda

... yang tampil di samping kanan box

tersebut. Ketika mengklik tombol terse-

but, maka secara otomatis kita akan ma-

suk ke dalam Source Editor dan kursor

akan ditempatkan dalam potongan kode

berikut:

procedure TForm1.Button1Click(Sender: TObject);begin

end;

7. Tambahkan di dalam bagian tersebut,

se hing ga menjadi baris program sebagai

be rikut:

procedure TForm1.Button1Click(Sender: TObject);var banyak, harga, bayar : real;begin Banyak := StrToFloat(EBanyak.Text); if RadioButton1.Checked then Harga:= 1000; if RadioButton2.Checked then Harga:= 1500; if RadioButton3.Checked then Harga:= 2000; Bayar:= Banyak * Harga;

masi lain disimpan dalam .lpi fi le. Jadi di

Lazarus, fi le yang terpenting adalah .lpi

fi le.

4. Dan beberapa perbedaan lainnya, yang

dapat Anda lihat sendiri di http://wiki.

lazarus.freepascal.org/index.php/Laza-

rus_For_Delphi_Users.

Membuat program hitung seder-hana dengan LazarusSetelah menjelaskan sedikit mengenai Laza-

rus, sekarang kita akan mencoba membuat

program dengan menggunakan Lazarus.

Program ini merupakan program standar,

untuk menghitung jumlah harga dari suatu

barang. Beberapa informasi pembuatan

program sebagai berikut:

1. Ada tiga jenis barang di sini, yaitu pensil,

buku, dan map.

2. Harga satu unit pensil Rp1000, Buku

Rp1500, Map Rp 2000.

3. Total Harga = Banyak Barang X Harga

Barang

4. Hanya dapat menghitung total jumlah

dari satu jenis barang saja.

Untuk memulai pembuatan program,

jalankan program Lazarus dengan menge-

tikkan perintah dari konsole sebagai berikut:

$ lazarus &

Atau Anda dapat juga menjalankan pro-

gram Lazarus dengan mengklik icon Laza-

rus yang ada di Menu Applications => Pro-gramming => Lazarus, yang ada di Gnome.

desktop.

Setelah IDE Lazarus tampil, Anda yang

telah terbiasa menggunakan Delphi, pasti

akan merasa familiar saat melihat IDE Laza-

rus. Pada saat kali pertama dijalankan, layar

Lazarus akan menampilkan jendela Code

Editor, Form Editor, Object Inspector,

Menu Program, dan Lazarus Component

Library.

Untuk memulai pembuatan program,

ikuti langkah di bawah ini:

1. Agar lebih memperjelas cara pembuatan

aplikasi di Lazarus, close terlebih dahulu

semua editor windows yang sedang aktif.

Klik File => Close all editor fi les.

2. Buat sebuah project Lazarus baru. Klik

File => New. Pilih Application yang ada

dalam sub menu Project, lalu Klik OK.

(Note: Jika tampil jendela konfi rmasi

Project changed, jawab saja dengan No).

Maka di IDE Lazarus, Anda akan melihat

tampilan Form Editor dan Code Editor

sebagai bagian dari project yang akan

kita buat.

3. Di bawah Menu window, terdapat be-

berapa Tab yang berisi komponent LCL.

Klik ‘Standard’ Tab, lalu masukkan

TLabel yang ada disitu ke dalam Form1

window. Caranya, klik button TLabel,

arahkan di dalam bagian Form1, lalu klik

kiri sekali. Maka komponen TLabel akan

diletakkan di dalam Form1.

4. Masukkan lagi dua buah TLabel, tiga

buah TEdit, sebuah TGroupBox, tiga

buah TRadioButton, dan dua buah

TButton.

(Note: Lihat cara penyusunan kompo-

nen-komponen tersebut seperti terlihat

di Gambar 2).

Gbr 3. Hasil perancangan program Hitung Harga Barang.Gbr 2. Perancangan awal program Hitung Harga Barang.

Lazarus

Tabel 1.

Nama Komponen Properties yang DiubahForm1 Caption Hitung Harga Barang

Label1 Caption Nama Pembeli

Label2 Caption Banyak

Label3 Caption Bayar

Edit1 Text <Kosongkan>

Name ENama

Edit2 Text <Kosongkan>

Name EBanyak

Edit3 Text <Kosongkan>

Name EBayar

GroupBox1 Caption Jenis Barang

RadioButton1 Caption Pensil

RadioButton1 Caption Pensil

RadioButton1 Caption Pensil

Button1 Caption &Hitung

Button2 Caption &Exit

Page 14: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 63

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Karena Lazarus dibuat dengan meng-

gunakan FreePascal, maka hampir semua

syntax bahasa Pascal yang digunakan Laza-

rus sangat mirip dengan yang digunakan di

Delphi. Hal ini tentu memudahkan Anda

untuk mencoba proses porting program

Delphi yang telah Anda buat, dengan meng-

gunakan Lazarus.

Selain tersedia di Linux, Lazarus juga

tersedia untuk beberapa sistem operasi,

seperti Windows salah satunya. Hal ini

tentu memudahkan Anda untuk mendis-

tribusikan produk hasil program ke client

Anda yang kebanyakan masih menggu-

nakan Windows sebagai sistem operasi-

nya.

Walaupun sudah banyak fungsi yang bi-

sa dilakukan dengan Lazarus, perlu di ingat

kalau program ini masihlah versi Beta, se-

hingga masih banyak terdapat bugs di pro-

gram ini.

Sampai di sini dulu pembahasan kita

mengenai Lazarus. Masih banyak hal-

hal yang belum penulis jelaskan menge-

nai Lazarus, seperti cara menambahkan

LCL, mengaitkan Lazarus dengan database

(MySQL/SQLite/PostgreSQL), menggu-

nakan LazDoc, dan sebagainya. Mungkin

di lain edisi, penulis akan menjelaskan cara

koneksi Lazarus dengan aplikasi database

open source yang ada di Linux. Akhir kata,

Happy programming with Lazarus.

Supriyanto ([email protected])

EBayar.Text := FloatToStr(Bayar);end;

8. Kembali lagi ke Form Editor dengan

menekan tombol F12. Pilih Button2,

masuk ke Tab Events, pilih OnClick.

Setelah tampil Source Editor, tambahkan

baris program tersebut sehingga tampak

seperti di bawah ini:

procedure TForm1.Button2Click(Sender: TObject);begin Application.Terminate;end;

9. Langkah terakhir adalah kompilasi prog-

ram yang telah kita buat. Untuk meng-

kompilasi, Anda dapat menekan tombol

F9 atau dengan mengklik icon Run yang

ada dibawah Menu window. Jika tidak

ada kesalahan, maka program Anda akan

berjalan seperti pada Gambar 4.

10. Uji dengan memasukkan input data pada

kolom input Banyak, pilih jenis barang

yang ingin dihitung, kemudian tekan

tombol Hitung. Maka di kolom Bayar

akan didapatkan hasil Harga Barang X

Banyak Barang.

11. Jangan lupa untuk selalu menyimpan

hasil perubahan program, untuk meng-

hindari hilangnya data jika suatu saat

terjadi kesalahan.

Gbr 4. Hasil Running Program Hitung Barang.

Lazarus

Page 15: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200664

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

File merupakan hal yang umum dite-

mukan ketika bekerja dengan kom-

puter. Oleh pengguna dari segala

kalangan. Pengguna yang memanfaatkan

OpenOffi ce.org untuk bekerja sehari-hari

akan menemukan fi le sebagai dokumen teks,

spreadsheet ataupun presentasi. Pengguna

yang bekerja sebagai administrator sistem

akan menemukan fi le sebagai penyim panan

konfi gurasi aplikasi, shell script, dan lain se-

bagainya. Pengguna yang bekerja se bagai de-

veloper akan menemukan fi le sebagai source

code program, program itu sendiri, dan lain

sebagainya.

Khusus untuk Linux yang merepre-

sentasikan banyak komponen dari sistem

sebagai fi le, arti fi le di Linux menjadi lebih

spesial lagi. Transparan bagi user, secara

sederhana, harddisk, cdrom, mouse, dan

berbagai device adalah fi le. Linux bahkan

membagi tipe fi le dalam beberapa kategori

sebagai berikut:

� File biasa. Merupakan fi le yang umum

ditemukan pada sistem. Kernel, musik

MP3, fi le video, gambar, source code

program dan sebagian besar fi le adalah

fi le biasa.

� Direktori. Merupakan fi le yang tampak

bagi user sebagai fi le yang bisa mengan-

dung fi le-fi le lain.

� Block special fi le. Merupakan fi le spe-

sial dimana transfer data dilakukan per

blok (secara teknis, diperbolehkan un-

tuk transfer per byte, dan kernel yang

akan menangani segala kerumitan ini).

Contoh fi le ini adalah harddisk, cdrom,

fl oppy, dan lain-lain. Umumnya berupa

media penyimpanan.

� Character special fi le. Merupakan fi le spe-

cial dimana transfer data dilakukan per

karakter. Contoh fi le ini adalah mouse.

� Symbolic link. Merupakan fi le yang

mengacu kepada fi le lain. Sekilas mirip

Findutils, Sang Detektif FilesistemFilesistem bisa mengandung puluhan ribu file atau bahkan lebih. Ada kalanya, kita perlu mencari satu atau beberapa file dari sekian banyak file tersebut berdasarkan kriteria yang diinginkan. Di sinilah, GNU findutils dapat membantu kita.

dengan shortcut pada Windows, namun

memiliki cara kerja yang sungguh ber-

beda.

� Fifo (fi rst in fi rst out). Disebut juga named

pipe (pipa bernama). File yang dapat me-

nerima output dari suatu proses, kemu-

dian menyimpan sementara output-nya,

dan kemudian dapat dibuka oleh proses

lain sebagai input.

� Socket. Cara kerjanya mirip dengan fi fo,

namun socket dapat bekerja lintas kom-

puter.

Oleh karena itu, seperti telah disebutkan

pada awal tulisan, jumlah fi le di fi lesistem

Linux bisa mencapai angka puluhan ribu

atau bahkan lebih. Pada sistem yang terin-

stall sangat banyak aplikasi dan dokumen-

tasi, jumlah fi le bahkan bisa mencapai lebih

dari seratus ribu.

Di lain sisi, dari sekian banyak fi le yang

dimiliki oleh sistem, terkadang kita perlu

mencari fi le tertentu. Ini adalah hal yang

sangat wajar. Berikut ini adalah beberapa

alasannya:

� Kita mungkin ingin mencari dokumen

yang lokasi penyimpanan terakhirnya ki-

ta lupa. Ini sangatlah jamak. Terkadang,

karena memiliki banyak fi le, apalagi

dengan nama fi le yang mirip-mirip dan

lokasi penyimpanan yang tersebar, kita

bisa saja lalai menemukan kembali fi le

yang dibutuhkan.

� Kita ingin mencari fi le tipe tertentu.

Ini umumnya sangat berguna bagi ad-

ministrator sistem ataupun developer.

Sebagai contoh, administrator mung-

kin akan membersihkan sistem dengan

membuang semua fi le fi fo dan socket di

sistem. Atau, dalam bentuk yang lebih

sederhana, administrator sistem ingin

mencari fi le dengan ekstensi .conf yang

tersebar di sistem.

� Kita ingin mencari fi le yang baru saja

dimodifi kasi dalam dua hari terakhir.

Ini sangat berguna apabila kita ingin

melakukan audit sistem, ataupun men-

cari fi le yang tidak sengaja terubah.

� Kita mungkin ingin tahu berapa jumlah

fi le di fi lesistem dan bagaimana kom-

posisinya. Ini bukanlah tindakan yang

sangat penting dan selalu diperlukan,

namun terkadang cukup menarik untuk

melakukannya.

� Dan berbagai alasan lainnya.

Di Linux, karena fi le merupakan sesuatu

yang sangat spesial, sebuah paket pencari

pun dibangun oleh berbagai hacker. Sebagai

hasilnya adalah GNU fi ndutils, yang sudah

pasti terinstal di sistem Anda.

GNU findutilsGNU fi ndutils adalah paket software yang

dikembangkan hacker-hacker terkenal se-

perti David MacKenzie dan Jan Brittenson. Paket software ini berisikan program fi nd

dan xargs yang keduanya dapat digunakan

untuk melakukan pencarian fi le di fi le-

sistem, baik pencarian mendasar ataupun

pencarian advanced.

Paket software ini seharusnya sudah

terinstal pada distro yang Anda gunakan.

Hampir tidak ada distro Linux yang tidak

memaketkan software ini, kecuali untuk

distro dengan kebutuhan yang sangat spe-

sifi k. Untuk update dan hal-hal seputar fi nd-

utils, kunjungilah www.gnu.org/software/

fi ndutils/.

Boleh dikatakan, paket software ini sa-

ngatlah luar biasa. Kita akan melihat terlebih

dahulu program fi nd, sebagai program uta-

ma pencarian. Program ini dapat melaku-

kan berbagai tugas-tugas dasar seperti:

� Mencari fi le dengan nama tertentu.

� Mencari fi le dengan tipe tertentu.

Page 16: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 65

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

� Mencari fi le dengan ukuran tertentu.

� dan lain sebagainya.

Selain tugas-tugas sederhana tersebut,

fi nd juga dapat melakukan hal-hal advanced

berikut:

� Memformat keluaran dari pencarian.

� Mencari fi le yang dimiliki oleh user (atau

group) tertentu.

� Melakukan aksi untuk hasil pencarian.

� Memungkinkan penggunaan regular ex-

pression.

� Mencari berdasarkan struktur data inter-

nal fi le (seperti pencarian dengan inode

atau jumlah hardlink).

� Mencari fi le dengan hak akses tertentu.

� Mencari fi le dengan kriteria waktu ter-

tentu.

� dan lain sebagainya.

Semua fasilitas yang disediakan sangatlah

membantu untuk berbagai kebutuhan yang

kita hadapi sehari-hari. Apabila dikombina-

sikan dengan shell script dan berbagai tool

lain, kita bisa membangun solusi yang me-

narik.

Setelah fi nd, ada pula program xargs

yang penggunaan bersama program fi nd

akan sangat membantu seperti ketika kita

ingin menghapus semua fi le yang berhasil

ditemukan. Program xargs membaca dari

standard input, kemudian menjalankan

perintah untuk dikenakan pada data yang

berhasil dibaca dari standard input terse-

but. Perintah yang diberikan bisa berva-

riasi.

Dengan sekian banyak fi tur yang datang

bersama kedua aplikasi tersebut, kita masih

perlu memuji karena kebutuhan pustaka

kedua aplikasi tersebut sangatlah minim.

Hanya GNU libc! Tidak banyak yang per-

lu dilakukan untuk membuat fi nd dapat

bekerja.

Contoh-contoh penggunaan findDi bagian ini, kita akan melihat beberapa

contoh pengguna praktis dari fi nd. Na-

mun, sebelum kita memulai, perlu dibahas

pula bahwa program fi nd tidak akan me-

nyediakan tampil an yang menarik untuk

kita. Find bekerja sepenuhnya berdasarkan

argumen yang kita berikan. Dan, terkadang,

argumen yang kita berikan bisa menjadi

sangat panjang.

Mendaftar isi direktoriKita akan mulai dengan contoh dasar. Ke-

butuhan kita adalah mendaftar fi le dalam

suatu direktori. Anda mungkin akan ber-

tanya, kenapa tidak menggunakan program

ls saja? Ini merupakan pertanyaan yang

sangat bagus. Program ls memang dipergu-

nakan untuk mendaftar fi le-fi le yang berada

dalam suatu direktori. Namun, ls memiliki

tampilan tersendiri yang walaupun bisa

diformat, terkadang masih belum mencu-

kupi kebutuhan kita.

Apabila Anda ingin agar isi dari direk-

tori ditampilkan baris demi baris lengkap

dengan pathnya, maka fi nd adalah program

yang lebih cocok. Penggunaannya pun mu-

dah karena kita cukup masuk ke direktori

yang diinginkan dan menjalankan program

fi nd tanpa perlu memberikan argumen apa-

pun. Sebagai contoh:

$ find ../A./A/1./A/2./A/3./A/4./A/5./B./B/1./B/2./B/3./B/B1./B/B1/B11./C./C/1

Perintah di atas merupakan keluaran

program fi nd dari struktur direktori asal

seperti ini:

� dir A

� fi le 1

� fi le 2

� fi le 3

� fi le 4

� fi le 5

� dir B

� dir B1

� fi le B11

� fi le 1

� fi le 2

� fi le 3

� dir C

� fi le 1

Keluaran dari program fi nd yang baru

saja kita bahas tersebut dalam beberapa

kondisi sangatlah berguna. Sebagai contoh,

ketika kita ingin membuat arsip CPIO.

Untuk membuat arsip CPIO, kita

perlu memiliki sebuah daftar fi le. Untuk

mendapatkan daftar fi le, program fi nd

dapat kita pergunakan. Berikut ini, kita

akan membuat arsip CPIO untuk struktur

direktori yang dibahas sebelumnya:

$ find | cpio -o > /tmp/test.cpiocpio: .: truncating inode numbercpio: A: truncating inode numbercpio: B: truncating inode numbercpio: B/B1: truncating inode numbercpio: C: truncating inode number1 block

Selain penggunaan untuk CPIO, daftar

yang dihasilkan oleh program fi nd masih

bisa digunakan untuk keperluan lain, yang

contoh lebih lanjutnya akan dibahas pada

bagian lain di tulisan ini.

Mencari file berdasarkan namaAdalah kegiatan yang sangat umum untuk

mencari satu atau lebih fi le berdasarkan kri-

teria nama. Nama di sini bisa pula meman-

faatkan wildcard seperti *.

Kita masih akan mempergunakan struk-

tur direktori yang dipergunakan pada pem-

bahasan sebelumnya. Sebagai contoh, kita

akan mencari fi le yang mengandung angka

1 di dalam nama fi le-nya:

$ find -name “*1*” ./A/1./B/1./B/B1./B/B1/B11./C/1

Contoh berikut ini akan mencari nama

fi le yang terdiri dari dua karakter, di mana

karakter pertama bebas, namun karakter

terakhir haruslah angka 1:

$ find -name “?1”./B/B1

Sejujurnya, pencarian seperti inilah yang

sebagian besar akan kita lakukan apabila

kita bekerja dengan pencarian fi le. Namun,

untuk lebih realistis, terkadang kita ingin

Page 17: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200666

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

pula mencari di direktori tertentu. Sebagai

contoh, berikut ini, kita akan mencari di

/usr/bin, nama-nama fi le yang diawali de-

ngan vi:

$ find /usr/bin/ -name “vi*” /usr/bin/vi/usr/bin/vim/usr/bin/view/usr/bin/vimtutor/usr/bin/vimdiff

Sampai di sini, kita lihat bahwa apabila

fi nd diberikan argumen pertama berupa

direktori, maka pencarian akan dilakukan

pada direktori tersebut sampai sub direktori

di bawahnya, secara default.

Mencari berdasarkan tipe file tertentuIngin mengetahui jumlah direktori di sistem

Anda? Program fi nd dapat melakukannya

untuk Anda dengan sangat mudah. Berikut

ini adalah contoh penggunaan fi nd untuk

melihat direktori-direktori di bawah direk-

tori /usr/local:

$ find /usr/local/ -type d/usr/local//usr/local/bin/usr/local/lib/usr/local/man/usr/local/man/man1/usr/local/man/man2/usr/local/man/man3/usr/local/man/man4/usr/local/man/man5/usr/local/man/man6/usr/local/man/man7/usr/local/man/man8/usr/local/man/man9/usr/local/man/mann/usr/local/src/usr/local/sbin/usr/local/games/usr/local/share/usr/local/include

Dengan mudah, output dari perintah

tersebut bisa di-piping ke program wc un-

tuk melihat jumlah direktori yang terletak

di bawah /usr/local:

$ find /usr/local/ -type d | wc -l19

Seperti kita bahas pada awal tulisan,

Linux mengenal tujuh macam tipe file.

Apa yang kita maksud sebagai tipe file

adalah tipe file menurut Linux, bukan tipe

file berdasarkan ekstensi file. Kita sudah

membahas satu tipe, yaitu direktori. Beri-

kut ini, kita akan melihat contoh pencar-

ian tipe file block special di direktori dev,

namun yang memiliki nama file diawali

dengan hda1:

$ find /dev -type b -name “hda1*”/dev/i2o/hda1/dev/i2o/hda10/dev/i2o/hda11/dev/i2o/hda12/dev/i2o/hda13/dev/i2o/hda14/dev/i2o/hda15/dev/hda1/dev/hda10/dev/hda11/dev/hda12/dev/hda13/dev/hda14/dev/hda15/dev/hda16/dev/hda17/dev/hda18/dev/hda19

Contoh tersebut mengombinasikan

penggunaan argumen type dan name.

Sampai di sini, kita sudah membahas pen-

carian dua tipe file. Untuk tipe-tipe lain-

nya, cara yang digunakan sama saja, hanya

notasi tipe file yang diberikan untuk ar-

gumen type saja yang berbeda. Berikut ini

notasi untuk tipe-tipe file yang dikenal di

Linux:

� b untuk block special

� c untuk character special

� d untuk direktori

� p untuk fi fo

� f untuk regular fi le

� l untuk symbolic link

� s untuk socket

Mencari berdasarkan ukuran tertentuMencari berdasarkan ukuran tertentu juga

merupakan tugas yang sering kali dilakukan,

terutama oleh administrator sistem. Contoh

yang umum barangkali audit sistem untuk

mengetahui apakah ada fi le yang berukuran

terlalu besar di sistem misalnya.

Find menyediakan cukup banyak argu-

men yang bisa digunakan. Kita akan mem-

bahas beberapa diantaranya. Yang pertama

adalah mencari fi le yang berukuran nol byte

(empty):

$ find -empty./A/1./A/2./A/3./A/4./A/5./B/1./B/2./B/3./B/B1/B11./C/1

Pada contoh tersebut, karena semua

fi le memang merupakan fi le kosong, maka

semuanya akan ditampilkan. Namun, co-

balah perhatikan bahwa keluaran kita su-

dah tidak termasuk direktori aktif, A, B,

C, dan B1. Argumen empty yang kita gu-

nakan pada contoh tersebut akan mencari

fi le atau direktori berukuran kosong. Den-

gan demikian, fi le yang tidak kosong (>

nol byte) dan direktori yang paling tidak

memiliki satu fi le di dalamnya tidak akan

di tampilkan. De ngan demikian, jangan he-

ran apabila pada suatu ketika, argumen ini

menyebabkan fi nd mengembalikan begitu

banyak direktori.

Contoh berikut yang akan kita bahas

adalah pencarian fi le di /bin yang berukuran

di atas 100 KB. Berikut ini adalah contoh

perintahnya:

$ find /bin -size +100k/bin/ps/bin/ash/bin/tar/bin/vim/bin/zsh/bin/bash/bin/gawk/bin/grep/bin/sash/bin/tcsh/bin/ash.static

Setelah membahas lebih dari, kita akan

membahas pula pencarian fi le di /bin yang

berukuran kurang dari 6 KB. Berikut ini

adalah contoh perintahnya:

$ find /bin -size -6k -type f

Page 18: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 67

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

/bin/ipg/bin/arch/bin/chvt/bin/unicode_stop/bin/setmetamode/bin/dmesg/bin/egrep/bin/fgrep/bin/vitmp/bin/unicode_start/bin/testutf8/bin/fgconsole/bin/bluepincat/bin/usleep/bin/sg_start

Perhatikanlah tambahan argumen type

pada contoh tersebut. Kita perlu memas-

tikan bahwa pencarian hanya dilakukan

pada fi le biasa. Di direktori /bin, terdapat

banyak sekali symbolic link yang berukur-

an kurang dari 6 KB. Kita menambahkan

argumen -type f agar pencarian lebih aku-

rat.

Kita telah membahas lebih besar dari dan

lebih kecil dari. Bagaimana dengan yang

ukurannya telah ditentukan? Jangan gu-

nakan tanda + ataupun -. Berikut ini adalah

contoh perintahnya:

$ find /bin -size 6k -type f/bin/deallocvt/bin/kbd_mode/bin/getkeycodes/bin/rescan-scsi-bus.sh/bin/setkeycodes

Apabila kita ingin mencari dalam range,

argumen size dapat digunakan untuk mem-

beri batas minimal dan maksimal. Sebagai

contoh, kita akan mencari di /bin fi le yang

berukuran lebih besar dari 15 KB namun

lebih kecil dari 20 KB:

$ find /bin -size +15k -size -20k/bin/cat/bin/pwd/bin/rpm/bin/echo/bin/kill/bin/eject/bin/sleep/bin/uname/bin/initviocons/bin/lsmod.static

Untuk satuan yang dipergunakan (dalam

contoh-contoh sebelumnya, satuan adalah

KB yang direpresentasikan oleh sebuah

karakter k), fi nd mengenal beberapa satuan

berikut dan karakter yang dipergunakan se-

bagai simbol:

� b untuk blok 512 byte

� c untuk byte

� w untuk word

� k untuk kilo byte (1024)

� M untuk mega byte (1048576)

� G untuk giga byte (1073741824)

Mencari berdasarkan hak akses tertentuUntuk keperluan audit sistem, administra-

tor biasanya perlu memeriksa apakah ada

‘fi le-fi le berbahaya’ yang terdapat di sistem.

File-fi le berbahaya ini biasanya adalah fi le-

fi le yang diset SUID bit.

Program fi nd menyediakan sepenuhnya

fasilitas yang diperlukan untuk pencarian

berdasarkan hak akses tertentu. Hak akses

sebagai kriteria juga bisa hak akses kaku

(misal: 644) atau hak akses sebagian (se-

bagai contoh dapat ditulisi oleh siapa saja,

dapat dibaca oleh orang lain selain group

dan pemiliknya, dan lain-lain).

Untuk pencarian dengan hak akses kaku,

misalnya, ingin mencari fi le dengan hak ak-

ses 644, maka berikanlah contoh perintah

berikut ini:

$ find -perm 644./A/1./A/2./A/3./A/4./A/5./B/1./B/2./B/3./B/B1/B11./C/1

Untuk lebih jelas, kita akan coba untuk

memberikan perintah tersebut dengan di-

rektori yang dicari adalah /bin:

$ find /bin -perm 644

Output dari program fi nd menunjuk-

kan tidak ada fi le yang ditemukan. Hal ini

benar karena kita hanya mencari fi le dengan

hak akses 644, sementara di /bin, hampir

semuanya adalah 755.

Sekarang, bagaimana kalau kita ingin

mencari fi le yang memiliki hak akses 644,

namun boleh memiliki hak akses tambah-

an? Atau, dengan kata lain, minimal memi-

liki hak akses 644? Hak akses 777, 666 dan

yang lebih leluasa diperbolehkan? Berikan

tanda – sebelum hak akses seperti contoh

berikut:

$ find /bin -perm -644 -size +1M/bin/vim

Lebih lanjut lagi, selain tanda -, kita

juga bisa memberikan tanda +, yang bisa

diartikan sebagai cukup memiliki hak yang

disebutkan. Misal, kita ingin mencari fi le

dimana user, group dan orang lain dapat

menulis ke fi le:

$ find -perm +222

Contoh lainnya, untuk mencari fi le di /bin

yang memiliki SUID bit, kita bisa memberi-

kan perintah seperti contoh berikut:

$ find /bin -perm +4000 /bin/su/bin/ping/bin/eject/bin/mount/bin/ping6/bin/umount

Pencarian dengan kriteria berupa hak

akses sangat membantu untuk menjaga

fi lesistem agar tetap bersih. Tentu, kita

bisa menggabungkan dengan cron job dan

sistem alert yang akan mengabari adminis-

trator sistem apabila di sistem terdapat fi le

yang dikategorikan ‘berbahaya’.

Mencari file yang dimiliki oleh user (atau group) tertentuApabila Anda ingin mengetahui fi le-fi le mi-

liki user tertentu atau group tertentu, peng-

gunaan program fi nd dapat sangat memper-

mudah Anda. Kita akan mulai dari mencari

fi le milik user tertentu. Dalam contoh, kita

akan mencari ke /tmp fi le-fi le yang dimil-

iki oleh user nop dan nama fi lenya diakhiri

dengan karakter 1:

$ find /tmp/ -user nop -name “*1”/tmp/A/A/1/tmp/A/B/1/tmp/A/B/B1/tmp/A/B/B1/B11/tmp/A/C/1

Page 19: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200668

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

Apabila pencarian menggunakan uid

lebih disukai dari pada mengguna kan user-

name, maka gunakanlah opsi -uid. Berikut

ini contohnya, masih mencari yang sama

dengan contoh sebelumnya (catatan: uid

untuk user nop adalah 1000):

$ find /tmp/ -user 1000 -name “*1”/tmp/A/A/1/tmp/A/B/1/tmp/A/B/B1/tmp/A/B/B1/B11/tmp/A/C/1

Untuk mencari fi le yang dimiliki oleh

group tertentu, gunakan opsi -group (pen-

carian menggunakan nama group) atau opsi

-gid (pencarian menggunakan id group).

Berikut ini adalah contohnya:

$ find /tmp/ -group users -name “*1”/tmp/A/A/1/tmp/A/B/1/tmp/A/B/B1/tmp/A/B/B1/B11/tmp/A/C/1

$ find /tmp/ -gid 100 -name “*1”/tmp/A/A/1/tmp/A/B/1/tmp/A/B/B1/tmp/A/B/B1/B11/tmp/A/C/1

Sebagai catatan, group users yang diper-

gunakan memiliki gid 100.

Keluar sejenak dari penggunaan fi nd.

Bahwa kita bisa menggunakan username

atau uid dan groupname atau gid dikarena-

kan Linux (dan berbagai sistem operasi lain)

akan mengenali user dan group berdasarkan

bilangan (oleh karena itu, ada uid dan gid),

sementara user akan lebih mudah mengenal

berdasarkan kata-kata (oleh karena itu, ada

username dan groupname).

Informasi uid dan username disimpan di

fi le /etc/passwd, di mana username disim-

pan pada fi eld pertama setiap barisnya dan

uid disimpan pada fi eld ketiga.

Informasi gid dan groupname disimpan

di fi le /etc/group, dimana groupname di-

simpan pada fi eld pertama setiap barisnya

dan gid disimpan pada fi eld ketiga.

Untuk melihat informasi pasangan uid

dan username (berserta informasi group-

group dimana user menjadi anggota) tanpa

harus repot-repot membuka fi le /etc/pass-

wd dan /etc/group, gunakanlah program id

se perti contoh berikut:

$ id nopuid=1000(nop) gid=100(users) groups=100(users),16(dialout),33(video)

$ id rootuid=0(root) gid=0(root) groups=0(root)

Mencari file dengan kriteria waktuPernahkah Anda mengalami kasus seperti

ini? Suatu hari, Anda membuat dokumen,

namun lupa menyimpan dengan nama apa,

dan lupa pula menyimpan di lokasi mana

di sekian banyak lokasi penyimpanan do-

kumen Anda. Hanya satu yang Anda ingat:

dokumen tersebut dibuat pada hari jumat,

jam 12 siang misalnya (atau penanda waktu

seperti 2 hari lalu misalnya).

Di sinilah, program fi nd dapat memban-

tu. Kita dapat mencari fi le berdasarkan kri-

teria waktu yang diinginkan. Kriteria waktu

bisa pula dibagi menjadi:

� Waktu fi le di akses

� Waktu status fi le di ubah

� Waktu data fi le di ubah

Satu hal yang harus diperhatikan, walau-

pun sebuah fi le memiliki beberapa infor-

masi waktu fi le, tidak semua fi lesistem me-

nyimpan informasi ini. Untungnya, hampir

semua fi lesistem besar seperti ext3 dan rei-

serfs menyimpannya.

Untuk mencari menggunakan fi nd, kita

bisa memberikan opsi atime, amin, ctime,

cmin, mtime ataupun mmin. Berikut ini

adalah contohnya.

Di direktori contoh yang kita miliki, yang

mengandung direktori A, B dan C, kita akan

membuat sebuah fi le baru dengan nama 2

di C. Berikut ini adalah informasi C/2 sesuai

keluaran perintah ls:

$ ls -l C/2 -rw-r--r-- 1 nop users 0 2005-09-30 12:05 C/2

Dari informasi tersebut, bisa dilihat

bahwa fi le C/2 memiliki waktu fi le 12:05.

File yang baru dibuat ini memiliki waktu fi le

yang berbeda dengan semua fi le di direktori

contoh ini.

Saat ini, waktu sistem penulis adalah:

$ dateFri Sep 30 12:18:16 GMT+7 2005

Untuk contoh pertama, kita akan men-

cari fi le yang baru dimodifi kasi kurang dari

30 menit lalu, dan harusnya hanya fi le C/2

inilah yang akan tampil:

$ find -mmin -30./C./C/2

Untuk mencari fi le-fi le yang dimodifi -

kasi lebih dari 30 menit lalu, lihatlah contoh

berikut ini:

$ find -mmin +30../A./A/1......./B/B1./B/B1/B11./C/1

Berikut ini adalah penjelasan selengkap-

nya dari berbagai argumen kriteria waktu

yang disediakan:

� atime. Mencari berdasarkan n * 24 jam

fi le terakhir diakses. Membutuhkan satu

argumen.

� amin, mencari berdasarkan n menit ter-

akhir fi le diakses. Membutuhkan satu

argumen.

� Ctime, mencari berdasarkan n * 24 jam

status fi le terakhir diubah. Membutuh-

kan satu argumen.

� Cmin, mencari berdasarkan n menit ter-

akhir status fi le diubah. Membutuhkan

satu argumen.

� Mtime, mencari berdasarkan n * 24 jam

data fi le terakhir diubah. Membutuhkan

satu argumen.

� Mmin, mencari berdasarkan n menit

terakhir data fi le diubah.

Semua argumen yang diberikan bisa

dikombinasikan dengan tanda – atau + se-

belum argumen untuk menandakan kurang

dari atau lebih dari.

Selain opsi-opsi tersebut, kita bisa meman-

faatkan beberapa opsi pembanding berikut:

Page 20: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 69

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Findutils

� anewer. Opsi pembanding ini membu-

tuhkan satu argumen berupa fi le. Opsi

ini akan mencari fi le dimana waktu ak-

ses lebih baru dari fi le yang diberikan se-

bagai argumen.

� Cnewer. Opsi pembanding ini membu-

tuhkan satu argumen berupa fi le. Opsi

ini akan mencari fi le dimana waktu sta-

tus fi le diubah lebih baru dari fi le yang

diberikan sebagai argumen.

� Newer. Opsi pembanding ini membu-

tuhkan satu argumen berupa fi le. Opsi

ini akan mencari fi le dimana waktu fi le

diubah lebih baru dari fi le yang diberi-

kan sebagai argumen.

Sebagai contoh penggunaan ketiga opsi

tersebut, kita akan kembali pada fi le C/2

yang dibahas sebelumnya. Kita akan men-

cari fi le yang lebih baru dari C/1, dan, ha-

rusnya, C/2 akan tampil karena C/2 dibuat

paling baru.

$ find -newer C/1./C./C/2

Find menyediakan begitu banyak opsi

yang dipergunakan untuk bekerja dengan

pencarian berdasarkan kriteria waktu. Kita

dapat mempergunakan satu atau beberapa

diantaranya untuk mencari fi le yang di-

inginkan.

Memformat keluaran dari pencarianApa yang ditampilkan oleh fi nd secara de-

fault adalah nama fi le yang ditemukan. Apa-

bila diinginkan, kita masih bisa memformat

keluaran dari fi nd dengan berbagai format

yang disediakan.

Sebagai contoh sederhana, kita ingin me-

nambahkan kata found sebelum nama fi le.

Berikut ini adalah contoh penggunaannya:

$ find -printf ‘found: %p\n’found: .found: ./Afound: ./A/1found: ./A/2found: ./A/3found: ./A/4found: ./A/5found: ./Bfound: ./B/1found: ./B/2found: ./B/3

found: ./B/B1found: ./B/B1/B11found: ./Cfound: ./C/1found: ./C/2

Pada contoh di atas, opsi yang dipergu-

nakan adalah printf, yang membutuhkan

satu argumen berupa format. Format bisa

terdiri dari beberapa simbol seperti bebe-

rapa contoh berikut ini:

� %p, nama fi le lengkap

� %f, nama fi le tanpa direktori (base-

name)

� %s, ukuran fi le dalam byte

� %y, tipe fi le

� %u, user yang memiliki fi le

� %g, group yang memiliki fi le

� %m, hak akses fi le

� %t, waktu fi le dimodifi kasi

Sementara, kita juga mengenal beberapa

escape character seperti:

� \n, untuk mencetak karakter baris baru

� \a, untuk alarm

Escape character dan directive seleng-

kapnya bisa dilihat pada manual fi nd. Beri-

kut ini adalah contoh yang lebih kompleks:

$ find -printf ‘found: %p (size: %s) (owner: %u, group: %g) (type: %y) (perm: %m)\n’ found: . (size: 120) (owner: nop, group: users) (type: d) (perm: 755).........found: ./C/1 (size: 0) (owner: nop, group: users) (type: f) (perm: 644)found: ./C/2 (size: 2) (owner: nop, group: users) (type: f) (perm: 644)

Penggabungan find dan xargsFind memiliki banyak sekali fi tur. Sementara,

program xargs dapat dikombinasikan dengan

fi nd untuk menghasilkan berbagai solusi yang

seringkali dibutuhkan. Seperti disebutkan se-

belumnya, xargs akan membaca dari stan-

dard input (dari keluaran find, kemudian

di pipe), kemudian menjalankan perintah

untuk dikenakan pada data yang berhasil

dibaca dari standar input tersebut. Perin-

tah yang diberikan bisa bervariasi.

Melihat tipe file dengan detailBerikut ini adalah contoh pertama peng-

gabungan antara fi nd dan xargs untuk me-

nampilkan dengan rinci tipe fi le yang dite-

mukan dengan bantuan program fi le.

$ find | xargs file.: directory./A: directory./A/1: empty./A/2: empty......./B/B1/B11: empty./C: directory./C/1: empty./C/2: ASCII text

Menghapus file secara massalDengan cara yang sama seperti contoh sebe-

lumnya, kita bisa pula menghapus semua fi le

yang ditemukan dengan bantuan program

rm. Sebagai contoh, kita akan menghapus

semua fi le yang nama fi le-nya di akhiri de-

ngan karakter 1:

$ find -name “*1” | xargs rm -rf

Apabila dicari lagi, fi le-fi le yang diakhiri

karakter 1 sudah tidak ditemukan lagi:

$ find ../A./A/2./A/3./A/4./A/5./B./B/2./B/3./C./C/2

Contoh: nftype_stats.shnftype_stats.sh adalah shell script yang akan

mencari dan membuat statistik fi le-fi le apa

saja yang terdapat di suatu direktori.

Source code selengkapnya bisa di-down-

load di http://www.noprianto.com/code.php.

Demikianlah pembahasan kita tentang

pencarian fi le menggunakan paket GNU

fi ndutils. Selamat mencoba!

Noprianto ([email protected])

Page 21: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200670

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Jika kita simak berita akhir-akhir ini,

kerapkali terjadi sweeping terhadap

beberapa objek yang memang terkait

dengan penggunaan software bajakan. Mi-

salnya toko software, toko komputer, dan

yang paling terakhir adalah warung Internet

(warnet) atau cyber cafe.

Dan para pengelola pun menjadi begitu

panik menyikapinya. Di kota penulis, be-

berapa warung Internet sempat tutup be-

berapa minggu, bahkan sampai ada yang

tutup selamanya.

Pada kesempatan kali ini, penulis ingin

memberikan alternatif pengganti yang mi-

rip dari sistem operasi mahal yang Anda gu-

nakan selama ini. Jika Anda memilih untuk

tidak membajak software mahal atau Anda

merasa kantong Anda kurang sesuai dengan

harga sistem operasi yang mahal, Anda bisa

teruskan membaca artikel berikut.

Tampilan Linux yang lengkap sama se-

perti sistem operasi Windows dan Macin-

tosh. Namun Linux dapat berfungsi sebagai

sistem operasi yang serba guna tanpa ha-

rus menjalankan window. Window di linux

dinamakan X Window. Pengatur tampilan

window dan desktop dinamakan window/

desktop manager. Jadi X Window dan win-

dow/desktop manager adalah tampilan gra-

fi s dari desktop sistem operasi Linux.

Apa itu IceWM?IceWM adalah salah satu window manager

yang mirip Windows. Dengan memakai

theme XP dan menu program yang dikus-

tomisasi, maka tampilannya tak akan beda

jauh dengan Windows XP.

Tujuan pengembangan IceWM adalah

untuk menyediakan window manager yang

kecil, cepat dan lebih familiar untuk peng-

guna X11 window system. IceWM secara

orisinil didesain untuk mengemulasi cita-

rasa dari Motif, OS/2 Warp 4, OS/2 Warp

3 dan Windows 95. Karena itu IceWM me-

miliki sebuah mesin theme. Jadi style-style

lain bisa dimungkinkan untuk dipakai.

IceWM juga dapat merupakan kombinasi

citarasa dari beberapa sistem di atas apabila

itu kompatibel. Informasi lebih jauh dapat

diperoleh di http://www.icewm.org/> dan

http://icewm.sourceforge.net/> atau di di-

rektori /usr/share/doc/icewm-1.2.6/icewm.

html pada sistem Linux yang telah terinstal

icewm-1.2.6.

Permasalahan dari sebagaian user Linux

pemula adalah belum familiar dengan win-

dow manager seperti KDE dan GNOME, se-

hingga mereka merasa malas untuk meng-

gunakannya. Bagaimana cara untuk mem-

buat mereka merasa familiar? Kita harus bi-

sa men-setting window manager sedemikian

rupa agar sangat mirip dengan desktop yang

biasa mereka gunakan. Sebelum melangkah

lebih jauh, mari kita lihat perbedaan antara

IceWM default install dengan IceWM hasil

oprekan ini.

IceWM yang sudah dioprek dapat Anda

lihat di gambar 1, sedangkan IceWM yang

asli default install dapat Anda lihat di gam-

bar 2 (Mandrake 9.1) dan gambar 3 (RedHat

9.0). Bagaimana? Sangat berbeda bukan? Hal

itu dikarenakan IceWM memiliki banyak

theme yang berbeda-beda. Yang paling mi-

rip dengan Windows XP adalah theme XP

yang dibuat oleh Bas Leerintveld (deskripsi:

Theme Resembling MS Whistler™).

IceWM dengan theme XP yang dipakai

penulis adalah paket rpm yang ada di CD

instalasi Mandrake 9.1. Anda bisa men-

download IceWM dalam bentuk paket

rpm ataupun tar gz. Selanjutnya mari kita

pela jari sebagian konfi gurasi yang perlu kita

Desktop IceWM Seindah Windows XPAnda ingin menikmati desktop Linux yang mirip Windows? Apakah KDE dan GNOME terlalu berat untuk komputer Anda? Jika ya, IceWM pilihannya.

IceWM dengan tampilan Windows XP.

IceWM

Page 22: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 71

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

ubah agar tampilan IceWM sangat mirip

dengan Windows® XP®.

File konfigurasi IceWMIceWM mencari beberapa lokasi untuk

mengetahui informasi konfi gurasi, theme,

dan kustomisasi, yang dikenal sebagai re-

source path. Urutan pencariannya adalah:

� $HOME/.icewm: kustomisasi yang dibuat

oleh masing-masing user. $HOME/ arti-

nya direktori /home/nama-user/.

� /etc/X11/icewm: default sistem secara

keseluruhan. Ini sangat tergantung distro

Linux dan paket yang terinstal. Contoh

tersebut diambil dari komputer penulis.

Tempat lainnya adalah /etc/X11R6/lib/

X11/icewm.

� /usr/local/share/icewm: direktori default

dengan fi le default (untuk paket rpm, le-

tak default di /usr/share/icewm).

Saat IceWM dijalankan, akan mencari

dengan urutan seperti di atas. Jadi jika ada

fi le konfi gurasi yang terletak di direktori

$HOME/.icewm yang diciptakan oleh user,

maka fi le konfi gurasi yang terletak di sistem

default akan diabaikan. Apa artinya? Artinya

untuk mengustomisasi (baca: mengoprek)

IceWM agar sesuai dengan keinginan kita,

kita harus menciptakan direktori .icewm di

bawah direktori home kita, dan meng-copy

fi le-fi le yang ingin kita modifi kasi. File-fi le

itu (preferences, menu, toolbar, dan lain-

lain) ada di direktori /etc/X11/icewm atau

/etc/X11R6/lib/X11/icewm atau /usr/share/

icewm atau /usr/local/share/icewm (tergan-

tung mana yang ada di sistem Anda). Copy

semuanya ke $HOME/.icewm dan modifi -

kasi sesuai keinginan Anda.

Penjelasan singkat beberapa fi le konfi -

gurasi sebagai berikut:

� preferences - Setting umum seperti paths,

colors, fonts, dan lain-lain.

� menu - Menu aplikasi yang dapat di-

jalankan dari menu start, yang dapat di-

kustomisasi sendiri oleh user.

� programs - Menu yang dibangkitkan

secara otomatis dari aplikasi (biasanya

digunakan untuk wmconfi g, menu atau

paket sejenis, sebagai bagian dari login

atau rangkaian startup X).

� winoptions – Opsi-opsi aplikasi window.

� keys – Kombinasi kunci (keyboard)

global untuk memanggil aplikasi (bukan

bawaan window manager).

� toolbar – Icon untuk memanggil aplikasi

secara cepat dari taskbar.

� theme – File yang berisi nama theme.

Beberapa bagian dari preferences yang

perlu diubah adalah:

� Focus dan behavior:

� Win95Keys = 1 # support win95 keyboard keys

� ShowThemesMenu = 0 # menyembunyikan submenu themes

� Taskbar:

� TaskBarShowWindowListMenu = 0 # menyembunyikan menu “window list”

� TaskBarShowWorkspaces = 0 # menyembunyikan tombol switch workspace

� TaskBarShowMailboxStatus = 0 # menyembunyikan mailbox status di taskbar

� TaskBarMailboxStatusBeepOnNewMail = 0 # mematikan beep jika email masuk

� UseMouseWheel = 1 # support mouse wheel

� Desktop background:

� DesktopBackgroundImage = “/home/semeru4/.icewm/Bliss.bmp” # Bliss.bmp adalah gambar background yang mirip background Windows XP.

� DesktopBackgroundCenter = 1 # desktop background center dan tidak tiled

� Workspaces atau virtual desktop:

WorkspaceNames=” 1 “ # nama workspace

Berikut ini contoh isi fi le menu secara

lengkap:

### mulai menu ###prog “Terminal” /usr/share/icons/mini/terminals_section.png /usr/X11R6/bin/xvt -bg black -cr green -fg grey -C -sl 2000### akhir menu ###

Berikut isi fi le programs :

### mulai programs ###menu “Internet” folder { prog “Browsing” /usr/share/icons/mini/mozilla.png mozilla prog “mIRC” /usr/share/icons/mini/xchat.png xchat prog “ICQ” /usr/share/icons/mini/licq.png licq prog “Messenger” /usr/share/

IceWM di Mandrake.

IceWM

Page 23: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200672

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

icons/mini/gaim.png gaim prog “Outlook” /usr/share/icons/mini/evolution.png evolution}menu “Games” folder { prog “Kapal Perang” /usr/share/icons/mini/chromium.png chromium prog “Frozen Bubble” /usr/share/icons/mini/frozen-bubble.png frozen-bubble prog “Tux Racing” /usr/share/icons/mini/sport_section.png tuxracer prog “Tank Perang” bzflag bzflag prog “PowerManga” powermanga powermanga prog “Quadra” quadra quadra prog “Skobo” skobo skobo prog “Toppler” toppler toppler prog “Solitaire” /usr/share/icons/mini/cards_section.png pysol prog “Freecell” /usr/share/icons/mini/gnome-cardgame.png freecell prog “Poker” kpoker kpoker prog “Catur” /usr/share/icons/mini/boards_section.png xboard prog “MineSweeper” kmines kmines prog “Bounce” /usr/share/icons/locolor/16x16/apps/kbounce.png kbounce prog “FlightGear” fgfs fgfs prog “FreeCraft” freecraft freecraft prog “LinCity” xlincity xlincity prog “Pingus” pingus pingus & prog “TuxKart” tuxkart tuxkart}menu “Lagu” folder { prog “WinAmp” /usr/share/icons/mini/xmms.xpm xmms -p prog “Media Player” /usr/share/icons/mini/xine.png xine prog “Volume Control” /usr/

share/icons/mini/sound_section.png aumix}menu “Gambar” folder { prog “GIMP” /usr/share/icons/mini/wilbur.png gimp-remote -n -f prog “Paint” kpaint kpaint prog “EOG” “Eye of Gnome” /usr/share/icons/mini/eog.png /usr/bin/eog prog “Kuickshow” /usr/share/icons/locolor/16x16/apps/kuickshow.png kuickshow}menu “Office” folder { prog “Word” /opt/OpenOffice.org1.1.2/share/icons/ooo_writer.png oowriter prog “Excel” /opt/OpenOffice.org1.1.2/share/icons/ooo_calc.png oocalc prog “PowerPoint” /opt/OpenOffice.org1.1.2/share/icons/ooo_impress.png ooimpress prog “Matematika” /opt/OpenOffice.org1.1.2/share/icons/ooo_math.png oomath prog “Corel Draw” /opt/OpenOffice.org1.1.2/share/icons/ooo_draw.png oodraw prog “Web Desain” /opt/

OpenOffice.org1.1.2/share/icons/ooo_web.png ooweb prog “Acrobat Reader” /usr/share/icons/mini/xpdf.png xpdf prog “Notepad” /usr/share/icons/mini/gedit.png gedit}menu “WinZip” folder { prog “GnoZip” /usr/share/icons/mini/gnozip.png gnozip prog “File-Roller” /usr/share/icons/mini/file-roller.png file-roller prog “Ark” - ark}menu “Lain-lain” folder { prog “Calculator” kcalc kcalc prog “Command Prompt” /usr/share/icons/mini/gnome-terminal.png gnome-terminal prog “File Explorer” /usr/share/icons/mini/nautilus.png nautilus --no-desktop prog “Hand Phone” xgnokii xgnokii}menu “Shutdown” folder { prog “Shutdown Now” shutdown /usr/bin/poweroff prog “Reboot” reboot /usr/bin/reboot

IceWM di Red Hat.

IceWM

Page 24: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 73

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

membatasi akses tiap user dengan quota,

chown, chmod, dan seterusnya.

Editor preferencesUntuk lebih memudahkan tugas adminis-

trator, ada juga free utility atau alat bantu

konfi gurasi, yaitu icepref (lihat gambar 5).

Icepref membantu kita untuk mengedit fi le-

fi le konfi gurasi IceWM dengan cara yang

lebih mudah (Anda tinggal klik-klik saja,

semua beres). Yang perlu Anda lakukan

hanyalah memilih konfi gurasi yang tepat

untuk sistem Anda, kemudian tinggal tekan

tombol Save dan kemudian tekan tombol

Restart (IceWM).

Icepref dibangun dengan menggunakan

python yang biasanya sudah terinstal secara

default di sistem Linux. Jadi mudah meng-

gunakan dan menjalankannya. Icepref me-

merlukan paket tambahan pygtk (python

binding untuk GTK+ widget set) dan pyt-

hon-numeric (fasilitas numerikal python).

Mengganti theme Theme digunakan untuk mengonfi gurasi

tampilan window manager. Hal-hal seperti

huruf, warna, ukuran garis batas, gambar

tombol bisa dikonfi gurasikan oleh theme.

Theme dicari di subdirektori libpath/themes

(misalnya /etc/X11R6/lib/X11/icewm/

themes), yang berisi beberapa subdirektori

(misal xp untuk theme Windows XP). Tiap

subdirektori berisi fi le-fi le theme (misalnya

default.theme) yang saling terhubung dan

ada juga fi le-fi le yang berekstensi xpm.

Theme yang akan digunakan dapat dipi-

lih dengan jalan mengubah opsi konfi gurasi

Theme di fi le preferences atau memakai opsi

command line –theme. Di fi le preferences:

Theme = “xp/default.theme”

Catatan: direktori dan nama dari theme

harus ditulis secara jelas. Satu baris di atas

juga dapat dijadikan sebuah fi le bernama

theme, yang diletakkan di bawah direktori

$HOME/.icewm/.

Jika ingin mencari berbagai jenis theme

yang bervariasi, Anda dapat mencarinya di

http://themes.freshmeat.net yang diciptakan

oleh user-user IceWM dari seluruh dunia.

PenutupSecara pribadi, penulis mengakui IceWM

sebagai desktop manager yang tergolong

ringan tapi powerful (cocok untuk komputer

yang agak tua). Memang KDE dan GNOME

adalah desktop manager yang pa ling bagus

tampilannya, tetapi kustomer Anda akan

banyak kagetnya melihat perbedaan yang

menurut penulis sangat mencolok, be-

lum lagi resource komputer Anda yang di-

habiskan oleh KDE atau GNOME tersebut.

Komputer tua Anda akan terasa lambat jika

menggunakan KDE atau GNOME.

Berdasarkan pengalaman penulis, kom-

puter sekelas Pentium II masih terasa ringan

dengan menggunakan desktop manager

IceWM ini. Komputer diskless milik penu-

lis pun dengan mulus bisa menampilkan

IceWM ini. Catatan: screenshot dan fi le-fi le

yang behubungan dengan desktop manager

IceWM ini dapat Anda temukan di www.

geocities.com/iko94/icewm.

Iko Riyadi ([email protected])

}### akhir programs ###

File winoptions dan keys biarkan saja isi

defaultnya, sedangkan untuk fi le toolbar ko-

songkan atau beri tanda comment isinya. Se-

bagai catatan, fi le programs dapat ditambahi

isinya dengan syntax sebagai berikut:

prog “title” nama_ikon program_executable options

Catatan: nama_ikon dapat diisi tanda -

jika icon tidak dimunculkan.

Submenu dapat ditambahkan isinya

dengan syntax sebagai berikut :

menu “title” nama_ikon {prog “title” nama_ikon program_executable options}

Catatan: hanya double quotes yang di-

mengerti oleh icewm. Icewm tidak men-

jalankan shell secara otomatis, jadi Anda

harus mengerjakannya.

Selanjutnya Anda bisa lihat gambar 4

yang menunjukkan dan menjelaskan be-

berapa istilah yang menyangkut fi le konfi -

gurasi di atas. Konfi gurasi di atas disarankan

untuk dipakai di jaringan komputer biasa.

Tidak disarankan untuk jaringan komputer

diskless, sebab di diskless system (LTSP),

komputer klien harus benar-benar diba-

tasi aksesnya ke fi le-fi le vital seperti reboot,

shutdown, halt, dsb. Jika tidak dibatasi,

maka dari komputer klien, seorang user bisa

me-reboot server Anda. Tidak lucu kan jika

hal ini terjadi? Solusinya Anda harus lebih

Istilah-istilah di desktop IceWM. Icepref untuk mengonfigurasi IceWM.

IceWM

Page 25: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200674

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Busybox

Sulit mengatakan betapa hebatnya

busybox. Dan, sudah sangat wajar apa-

bila dunia open source berterimakasih

kepada Eric Andersen (andersen@codepoet.

org) untuk suatu karya yang hebat ini.

Busybox merupakan utiliti yang mencoba

menghadirkan ulang utiliti-utiliti populer,

namun dengan versi mininya (atau lebih

tepat lain, dengan versi yang lebih efi sien).

Dengan demikian, kita bisa cukup hanya

menggunakan busybox untuk melakukan

tugas-tugas yang dilakukan dengan ls, cp,

rm, mv, sh, dan masih sangat sangat banyak

lagi tool lainnya.

Apabila kita bicara sistem Linux yang

sederhana, bukan distribusi yang kompleks,

ukuran merupakan sesuatu yang penting.

Terutama ketika sistem yang dihasilkan

harus sekecil mungkin. Pada distribusi be-

sar, adalah umum bagi direktori /bin un-

tuk berukuran sampai 5 MB. Namun, pada

sistem yang kecil, total ukuran kernel dan

semua fi le terkadang dibatasi hanya sampai

2 MB.

Selain ukuran, faktor lain yang mere-

potkan bagi sistem kecil adalah jumlah

fi le yang banyak. Tentu akan jauh lebih

mudah untuk menangani satu buah fi le

daripada banyak fi le sekaligus. Lebih-lebih

kalau setiap fi le berpeluang untuk memi-

liki ketergantungan sendiri-sendiri terha-

dap pustaka-pustaka lain. Selain itu, pada

sistem kecil, ada kalanya jumlah inode pada

fi lesistem dibatasi. Menggunakan busybox

dimana satu aplikasi tunggal bisa melaku-

kan banyak hal, merupakan penghematan

inode yang luar biasa.

Dengan demikian, bagi Anda yang me-

miliki kepentingan untuk bekerja pada

sistem yang sangat kecil (embedded sistem),

atau bekerja pada sistem dimana jumlah fi le

(atau jumlah inode) merupakan faktor yang

penting, atau sekadar senang membawa satu

utiliti kemana-mana untuk troubleshoot-

ing, maka Anda termasuk orang yang akan

membutuhkan busybox.

Bertindak sesuai dipanggilAnda bisa membayangkan busybox seperti

seseorang yang akan melakukan pekerjaan

sesuai bagaimana dirinya dipanggil. Apa-

bila seseorang dipanggil sebagai koki, maka

beliau akan segera memasak sebagai koki.

Apabila seseorang tersebut dipanggil sebagai

supir, maka beliau akan segera menjadi supir

dan melakukan tugas supir. Sama ketika se-

seorang serba bisa tersebut kita panggil men-

jadi direktur perusahaan. Beliau akan segera

menjadi direktur dan melakukan tugas-tugas

seorang direktur perusahaan. Termasuk keti-

ka seseorang tersebut diminta untuk menjadi

anggota DPR. Luar biasa, bukan?

Seperti telah disebutkan pada bagian

awal tulisan, bahwa busybox mampu ber-

tindak sebagai utiliti-utiliti sistem dengan

menghadirkan ulang utiliti-utiliti tersebut

dalam bentuk yang lebih kecil, tentu saja

tidak semua fi tur dari aplikasi yang diganti-

kan mampu disediakan.

Sama seperti seseorang dalam analogi

sebelumnya yang mampu melakukan segala

pekerjaan. Mulai dari supir sampai anggota

DPR. Segala hal bisa dilakukan.

Apabila busybox mampu menggantikan

fungsi sebuah aplikasi yang diinginkan na-

mun tidak mampu menghadirkan fi tur yang

Anda inginkan dari aplikasi tersebut, maka

Anda selalu bisa menggunakan aplikasi yang

sesungguhnya. Untuk yang bisa ditangani,

Anda tetap mengandalkan busybox. Sama

seperti ilustrasi orang serba bisa sebelum-

nya. Apabila ada satu atau dua tugas yang

tidak bisa dikerjakan, maka Anda selalu bisa

mencari orang yang benar-benar bisa di-

andalkan. Selebihnya, tetap mengandalkan

orang serba bisa tersebut.

Kompilasi dan instalasi busyboxSource code busybox bisa di-download

di website-nya, http://www.busybox.net.

Pada saat tulisan ini dibuat, busybox telah

mencapai versi 1.1.0pre1. Untuk tulisan

kali ini, kita tidak akan memanfaatkan bi-

nary yang telah tersedia di sistem. Hal ini

disebabkan kita akan melakukan kompi-

lasi sendiri.

Bagi Anda yang memiliki source paket

busybox (misal source RPM atau source DEB)

dari distro Anda, Anda selalu bisa mempergu-

nakannya. Busybox umumnya telah dipaket-

kan ke hampir semua distro populer.

Setelah arsip source code kita miliki, ma-

ka kita perlu melakukan ekstraksi terlebih

dahulu:

$ tar jxvf busybox-1.1.0-pre1.tar.bz2

Setelah itu, masuklah ke direktori hasil

ekstraksi:

$ cd busybox-1.1.0-pre1/

Sebelum kita melakukan kompilasi, kita

akan melihat terlebih dahulu struktur direk-

tori source code busybox:

� Terdapat fi le README, INSTALL,

AUTHOR S dan TODO yang berisikan

informasi lebih lanjut mengenai busy-

box, cara instalasi, pembuat, dan todo

list busybox.

� Terdapat fi le LICENSE yang merupakan

lisensi busybox. Busybox dilisensikan di

bawah GPL. Di website busybox, terdapat

bagian hall of shame yang memperli-

hatkan siapa-siapa saja yang di ketahui

telah mempergunakan busybox di dalam

produknya, namun tidak menuruti li-

Utiliti yang Serba SibukApabila Anda menginginkan sebuah utiliti yang hampir bisa melakukan apa saja, maka Anda akan menemukan busybox-lah utilitinya. Simpan busybox di saku, dan Anda pun akan siap sedia setiap saat apabila sistem Anda (atau rekan Anda) bermasalah.

Page 26: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 75

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Busybox

sensi.

� Terdapat banyak direktori yang masing-

masingnya merupakan kelompok besar

dari utiliti-utiliti yang fungsinya dapat

digantikan oleh busybox. Sebagai contoh,

kita bisa melihat direktori shell. Di dalam

direktori ini, kita bisa melihat source code

untuk shell-shell yang didukung oleh

busybox. Hal yang sama bisa kita temu-

kan pula di direktori editors, direktori

dimana busybox menyimpan source code

untuk direktori yang didukung.

$ ls -ltotal 117drwxr-xr-x 2 nop users 232 2005-11-01 06:55 appletsdrwxr-xr-x 3 nop users 488 2005-11-01 06:55 archival......drwxr-xr-x 2 nop users 656 2005-11-01 06:55 miscutilsdrwxr-xr-x 2 nop users 240 2005-11-01 06:55 modutilsdrwxr-xr-x 4 nop users 992 2005-11-01 06:55 networkingdrwxr-xr-x 2 nop users 400 2005-11-01 06:55 patchesdrwxr-xr-x 2 nop users 352 2005-11-01 06:55 procps-rw-r--r-- 1 nop users 8918 2005-11-01 06:55 README-rw-r--r-- 1 nop users 7356 2005-11-01 06:55 Rules.makdrwxr-xr-x 3 nop users 136 2005-11-01 06:55 scriptsdrwxr-xr-x 2 nop users 296 2005-11-01 06:55 shelldrwxr-xr-x 3 nop users 72 2005-11-01 06:55 sysdepsdrwxr-xr-x 2 nop users 248 2005-11-01 06:55 sysklogddrwxr-xr-x 45 nop users 1376 2005-11-01 06:55 testsuite-rw-r--r-- 1 nop users 8872 2005-11-01 06:55 TODOdrwxr-xr-x 2 nop users 848 2005-11-01 06:55 util-linux

$ ls -l shell/total 588-rw-r--r-- 1 nop users 290896 2005-11-01 06:55 ash.c

-rw-r--r-- 1 nop users 44950 2005-11-01 06:55 cmdedit.c-rw-r--r-- 1 nop users 406 2005-11-01 06:55 cmdedit.h-rw-r--r-- 1 nop users 8205 2005-11-01 06:55 Config.in-rw-r--r-- 1 nop users 81972 2005-11-01 06:55 hush.c-rw-r--r-- 1 nop users 42639 2005-11-01 06:55 lash.c-rw-r--r-- 1 nop users 409 2005-11-01 06:55 Makefile-rw-r--r-- 1 nop users 714 2005-11-01 06:55 Makefile.in-rw-r--r-- 1 nop users 104793 2005-11-01 06:55 msh.c

KonfigurasiUntuk melakukan kompilasi, kita perlu

mengkonfi gurasi busybox terlebih dahulu

dengan memberikan perintah:

$ make menuconfig

Bagi Anda yang pernah melakukan kom-

pilasi kernel, tentu tampilan yang muncul

tidak asing lagi. Di menu yang tampil, kita

bisa memilih fi tur-fi tur apa saja yang akan

dimasukkan ke dalam busybox.

Setelah memilih, pilihlah tombol Exit

dan simpanlah konfi gurasi Anda. Penyim-

panan konfi gurasi akan menghasilkan se-

buah fi le dengan nama .confi g, sama seperti

ketika kompilasi kernel dilakukan. Berikut

ini adalah contoh 10 baris pertama .confi g

yang dihasilkan di komputer penulis:

$ head -n 10 .config## Automatically generated make config: don’t edit#HAVE_DOT_CONFIG=y

## General Configuration## CONFIG_FEATURE_BUFFERS_USE_MALLOC is not setCONFIG_FEATURE_BUFFERS_GO_ON_STACK=y

KompilasiKonfi gurasi telah selesai kita lakukan. Se-

lanjutnya, kita akan melakukan kompilasi

dengan memberikan perintah:

$ make

Setelah perintah tersebut diberikan, ma-

ka proses kompilasi akan berlangsung. Apa

yang akan terlihat di layar adalah proses

kompilasi setiap fi le source code busybox.

Proses kompilasi ini akan memakan waktu

tergantung jumlah fi tur yang dipilih.

Apabila proses kompilasi selesai tanpa

kesalahan, maka di direktori source code

busybox akan terbentuk sebuah fi le dengan

nama busybox:

$ ls -al busybox-rwxr-xr-x 1 nop users 245096 2005-11-19 00:15 busybox

Untuk menguji busybox yang baru ter-

bentuk, jalankanlah busybox dengan perin-

tah berikut ini:

$ ./busybox BusyBox v1.1.0-pre1 (2005.11.18-17:11+0000) multi-call binary

Usage: busybox [function] [arguments]... or: [function] [arguments]...

BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as!

Currently defined functions: [, [[, ash, basename, bunzip2, busybox, bzcat, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cut, date, dd, deallocvt, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, grep, gunzip, gzip, halt, head, hexdump, hostname, id, ifconfig, init, install, kill, killall, klogd, linuxrc, ln, logger, ls, mkdir, mknod, mktemp, more, mount, mv, openvt, pidof, ping, pivot_root,

Page 27: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/200676

TUTORIAL Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Busybox

poweroff, ps, pwd, readlink, reboot, reset, rm, rmdir, route, sed, sh, sleep, sort, strings, swapoff, swapon, sync, syslogd, tail, tar, tee, test, time, touch, tr, true, tty, umount, uname, uniq, unzip, uptime, usleep, vi, wc, wget, which, whoami, xargs, yes, zcat

Apabila dijalankan tanpa parameter,

maka busybox akan menampilkan semua

fungsi yang didukung.

InstalasiUntuk melakukan instalasi, kita bisa mem-

berikan perintah make install, namun, kita

juga bisa mengopikan fi le busybox yang ter-

bentuk dari proses kompilasi ke lokasi yang

kita inginkan.

Memanggil applet-applet busyboxTerdapat paling tidak tiga cara untuk me-

manggil fungsi-fungsi atau applet-applet

yang didukung oleh busybox. Kita akan me-

lihatnya satu per satu.

Memanggil busybox dengan parameterCara yang paling mudah adalah dengan me-

manggil busybox diikuti oleh parameter per-

tama berupa fungsi yang ingin digunakan.

Sebagai contoh, apabila kita ingin memanggil

applet ls yang telah didukung oleh busybox,

maka berikanlah perintah berikut ini:

$./busybox lsAUTHORS Makefile applets console-tools docs findutils libpwdgrp networking shell util-linuxChangelog README archival coreutils e2fsprogs include loginutils patches sysdepsINSTALL Rules.mak busybox debian editors init miscutils procps sysklogdLICENSE TODO busybox.links debianutils examples libbb modutils scripts testsuite

Tentu saja, pemanggilan fungsi ls juga

bisa diikuti oleh parameter yang didukung

oleh applet ls:

$./busybox ls -l-rw-r--r-- 1 nop users

4794 Nov 1 06:55 AUTHORS-rw-r--r-- 1 nop users 32534 Nov 1 06:55 Changelog-rw-r--r-- 1 nop users 3818 Nov 1 06:55 INSTALL.........drwxr-xr-x 3 nop users 72 Nov 1 06:55 sysdepsdrwxr-xr-x 2 nop users 360 Nov 19 00:15 sysklogddrwxr-xr-x 45 nop users 1376 Nov 1 06:55 testsuitedrwxr-xr-x 2 nop users 1072 Nov 19 00:15 util-linux

Menggunakan symlinkCara kedua yang umum dilakukan adalah

dengan membuat symlink untuk nama

fungsi yang diinginkan ke program busy-

box. Dengan demikian, kembali ke ilustrasi

di bagian-bagian awal tulisan, busybox akan

bertindak sesuai bagaimana dirinya dipang-

gil. Kita pun tinggal memanggil nama prog-

ram yang berupa symlink tersebut. Sebagai

contoh:

$ ln -sf busybox tar

$ file tar tar: symbolic link to `busybox’

$ ./tar BusyBox v1.1.0-pre1 (2005.11.18-17:11+0000) multi-call binary

Usage: tar -[czjxtvO] [-f TARFILE] [-C DIR] [FILE(s)] ...

Create, extract, or list files from a tar file.Options: c create x extract t list

Archive format selection: z Filter the archive through gzip j Filter the archive through bzip2

File selection: f name of

Konfigurasi busybox.

Page 28: MySQL & FreePascal Pemrograman Database …opensource.telkomspeedy.com/repo/abba/v22/InfoLinux2006/pdf_linux... · waktu adaptasi sewaktu membuat prog-ram di ... Untuk membuat aplikasi

INFOLINUX 01/2006 77

TUTORIALBerita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial

www.infolinux.web.id

Busybox

TARFILE or “-” for stdin O extract to stdout C change to directory DIR before operation v verbosely list files processed

Menggunakan hardlinkApabila Anda berada di sistem di mana

jumlah inode tersedia terbatas, maka peng-

gunaan symlink tidaklah disarankan. Setiap

symlink merupakan fi le tersendiri dan akan

memakan satu inode.

Solusi yang bisa digunakan adalah de-

ngan memanfaatkan hardlink. Hardlink

tidak akan memakan inode dan memakan

space di media penyimpanan (walaupun

hardlink akan terlihat sebagai fi le dengan

ukuran yang sama dengan fi le ‘asli’) karena

bukan fi le tersendiri. Sebagai contoh:

$ ln busybox mv

$ file mv mv: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

$ ./mv BusyBox v1.1.0-pre1 (2005.11.18-17:11+0000) multi-call binary

Usage: mv [OPTION]... SOURCE DESTor: mv [OPTION]... SOURCE... DIRECTORY

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Options: -f don’t prompt before overwriting -i interactive, prompt before overwrite

Kompilasi statikSecara default, busybox dikompilasi dengan

memanfaatkan pustaka sistem. Artinya, ke-

tika dijalankan, busybox masih memerlukan

pustaka sistem. Sebagai contoh:

$ ldd busybox linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/libc.so.6 (0x40027000) /lib/ld-linux.so.2 (0x40000000)

Bagi Anda yang ingin membawa busybox

kemana-mana dalam saku misalnya, aplika-

si yang dilink secara dinamik tidaklah disa-

rankan karena tidak semua sistem menggu-

nakan pustaka dengan versi yang sama.

Solusinya adalah dengan melakukan

kompilasi secara statik sehingga pada saat

dijalankan, busybox tidak memerlukan

pustaka apapun. Dengan demikian, busy box

bisa dijalankan di sistem-sistem lain tanpa

khawatir tidak bisa menemukan pustaka

yang diperlukan. Ini akan sangat membantu

apabila busybox digunakan sebagai alat un-

tuk membantu melakukan rescue sistem di

berbagai kondisi.

Untuk melakukan kompilasi statik,

pada saat melakukan make menuconfi g, di

bagian Build Options, aktifkanlah pilihan

Build Busybox as a static binary (no shared

libs). Setelah itu, lakukanlah kompilasi se-

perti biasa.

File yang dihasilkan akan berukuran

sangat besar apabila dibandingkan dengan

versi dinamiknya. Namun, Anda tidak akan

membutuhkan pustaka lain lagi.

$ ls -l busybox-rwxr-xr-x 1 nop users 820856 2005-11-19 01:41 busybox

$ file busyboxbusybox: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, statically linked, stripped

$ ldd busybox not a dynamic executable

Demikianlah pembahasan kita tentang

busybox. Anda selalu bisa memanfaatkan

busybox untuk berbagai keperluan seperti

rescue ataupun mengembangkan sistem

embedded. Selamat mencoba!

Noprianto ([email protected])