Visualisasi Molekul dengan garlic - Kambing UI
Visualisasi Molekul dengan garlic - Kambing UI
Visualisasi Molekul dengan garlic - Kambing UI
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Tutorial GTK <strong>garlic</strong><br />
<strong>Visualisasi</strong> <strong>Molekul</strong> <strong>dengan</strong> <strong>garlic</strong><br />
Harus diakui bahwa sekolahsekolah<br />
di Indonesia kebanyakan<br />
menggantungkan dirinya kepada<br />
program-program yang proprietary.<br />
Bahkan terkadang sampai kalangan<br />
beberapa universitas pun berpendapat<br />
bahwa software proprietary adalah solusi<br />
yang terbaik untuk komputasi,<br />
mengingat tren pasar dan ketersediaan<br />
dukungan dari vendor. Sebagai<br />
pendukung free software, alangkah<br />
baiknya apabila kita mampu menerobos<br />
ke setiap pelosok ilmu pendidikan dan<br />
meningkatkan produktivitas <strong>dengan</strong><br />
menggunakan free software tersebut.<br />
Tulisan kali ini akan menerobos ke<br />
bidang ilmu yang mempelajari molekular<br />
dan memperkenalkan <strong>garlic</strong> untuk<br />
meningkatkan daya kreasinya.<br />
Ya, Anda dapat menggunakan <strong>garlic</strong><br />
untuk memvisualisasikan molekul,<br />
struktur protein, struktur DNA,<br />
makromolekul biologi dan hal sejenis<br />
lainnya dalam suatu antarmuka yang<br />
mudah. Jauh lebih mudah apabila Anda<br />
menggunakan program pengolah citra<br />
ataupun pengolah vektor untuk<br />
membuatnya secara manual. Dan jauh<br />
<br />
Gambar 1. Antarmuka <strong>garlic</strong><br />
50 INFOLINUX MEI 2003<br />
<strong>garlic</strong>, free molecular visualization program,<br />
protein structure, DNA structure, PDB, molecular<br />
rendering, biological macromolecule,<br />
unix, linux, free software download, open<br />
source software, Damir Zucic.<br />
lebih lebih stabil daripada program<br />
molekular lainnya, menurut sang<br />
pembuat, DR. Damir Zucic. Segala<br />
visualisasi yang Anda buat akan<br />
membuat Anda terus, terus, terus, dan<br />
terus ingin mencipta, <strong>dengan</strong> bantuan<br />
<strong>garlic</strong>. Mari...<br />
<strong>garlic</strong> dan cara<br />
penggunaannya<br />
<strong>garlic</strong> lahir pada akhir bulan September<br />
1998, ketika sang penciptanya<br />
memerlukan visualisator yang baik<br />
untuk gambar molekul. Bosan mencobacoba<br />
<strong>dengan</strong> RasMol, akhirnya sang<br />
jenius ini mempelajari pemrograman X<br />
dan mempersembahkan <strong>garlic</strong> sebagai<br />
proyek pertamanya yang serius. Nama<br />
<strong>garlic</strong> dapat diartikan sebagai sebuah inti<br />
yang dilengkapi <strong>dengan</strong> berbagai<br />
pelengkap di luarnya, kurang lebih sama<br />
seperti bawang putih. <strong>garlic</strong> juga dapat<br />
diartikan sebagai singkatan dari GNU,<br />
Analysis and Rendering, LInux, serta C<br />
(bahasa C).<br />
Anda bisa mendapatkan <strong>garlic</strong> di<br />
situsnya, http://pref.etfos.hr/sources/<br />
<strong>garlic</strong>/. Anda bisa membaca petunjuk<br />
langkah demi langkah<br />
untuk melakukan<br />
kompilasi yang telah<br />
ditulis <strong>dengan</strong> sangat<br />
baik. Apabila<br />
menggunakan Debian,<br />
Anda dapat<br />
memberikan perintah<br />
apt-get install <strong>garlic</strong><br />
<strong>garlic</strong>-doc. <strong>garlic</strong> telah<br />
dimasukkan sebagai<br />
paket standar dari<br />
distro Debian GNU/<br />
Linux.<br />
Asumsikan <strong>garlic</strong><br />
telah terinstalasi, Anda<br />
www.infolinux.web.id<br />
bisa menjalankannya <strong>dengan</strong> perintah<br />
<strong>garlic</strong>. Dan sebuah window pun akan<br />
dihadirkan kepada Anda. Sebuah<br />
antarmuka yang menyebalkan apabila<br />
kita belum menyelam ke dalamnya, dan<br />
harus diakui sebagai antarmuka yang<br />
luar biasa seiring <strong>dengan</strong> penggunaan.<br />
(Hampir) semua dari kontrol program<br />
<strong>garlic</strong> dapat dilakukan <strong>dengan</strong><br />
menggunakan keyboard. Hampir semua<br />
perintah dapat diberikan dalam bentuk<br />
pendek tiga karakter. Berikut ini kita<br />
akan melihat perintah-perintah alam<br />
<strong>garlic</strong>.<br />
ADD ADD Melakukan ekspansi pada.<br />
seleksi yang sedang aktif.<br />
ANG ANGLE Mendefinisikan derajat.<br />
ATO ATOMS Mengubah gaya penggambaran<br />
untuk atom.<br />
BAC BACKBONE<br />
Menggambar tulang belakang<br />
(backbone).<br />
BACKG BACKGROUND<br />
Mengubah warna latar<br />
belakang window utama.<br />
BG BACKGROUND<br />
Sama seperti BACKG.<br />
BON BONDS Mengubah gaya<br />
penggambaran rangka.<br />
CAT CATCH Mengaktifkan suatu struktur.<br />
CEN CENTER Mengubah sistem koordinat<br />
internal.<br />
COL COLOR Mengatur warna.<br />
COM COMPARE<br />
Membandingkan dua sekuens.<br />
DIS DISCARD Mengabaikan perubahan pada<br />
struktur.<br />
DOC DOCK Menyiapkan dua struktur<br />
untuk docking.<br />
EXE EXECUTE Menjalankan script <strong>garlic</strong>.<br />
EXI EXIT Keluar dari sesi <strong>garlic</strong>.<br />
EXP EXPAND Sama seperti ADD.<br />
FAD FADING Mengubah parameter color<br />
fading.<br />
FG FOREGROUND<br />
Mengubah warna window<br />
utama.<br />
FON FONT Mengubah font.<br />
FOREG FOREGROUND<br />
Sama seperti FG.
HID HIDE Menyembunyikan atom yang<br />
telah dipilih.<br />
HYB HYBONDS Membuat tulang-tulang<br />
hidrogen.<br />
IGN IGNORE Tidak melakukan apa-apa.<br />
LAB LABELS Menampilkan label.<br />
LOA LOAD Membuka file.<br />
LOG LOG menulis perintah ke dalam<br />
file log.<br />
MON MONO Berpindah ke modus mono.<br />
MOV MOVE Mendefinisikan object yang<br />
ingin dipindahkan.<br />
NEI NEIGHBORHOOD<br />
Menampilkan atau menyembunyikan<br />
object tetangga.<br />
PAU PAUSE Melakukan pause (untuk<br />
eksekusi script).<br />
PLA PLANE Manipulasi plane.<br />
PLO PLOT Melakukan plot untuk<br />
averaged hydrophob.<br />
POS POSITION Memindahkan struktur ke<br />
lokasi tertentu.<br />
Q<strong>UI</strong> Q<strong>UI</strong>T Sama seperti EXIT.<br />
RAD RADIUS Mendefinisikan ukuran jarijari<br />
bola.<br />
RAM RAMACHANDRAN<br />
Menggambar plot<br />
Ramachandran.<br />
REA READ Sama seperti LOAD.<br />
REG REGISTER Melakukan registrasi <strong>garlic</strong>.<br />
RES RESTRICT Membatasi seleksi aktif.<br />
ROT ROTATE Melakukan rotasi atas<br />
struktur.<br />
SAV SAVE Menyimpan ke dalam file.<br />
SCA SCALE Memilih skala hydrophobicity.<br />
SEL SELECT Memilih atom.<br />
SEQ SEQUENCE<br />
<br />
Memanipulasi buffer.<br />
SHO SHOW Menampilkan atom terpilih.<br />
SLA SLAB Mengubah parameter slab.<br />
SSB SSB Mengubah gaya<br />
penggambaran untuk rangka<br />
disulfida.<br />
STE STEREO Mengubah ke modus steroe.<br />
TAG TAG Meng-assign tag untuk suatu<br />
struktur.<br />
TAK TAKE Sama seperti CATCH.<br />
TBG TEXT_BACKGROUND<br />
Mengubah warna teks latar.<br />
TFG TEXT_FOREGROUND<br />
Memeriksa warna teks.<br />
TIT TITLE Menambahkan judul ke<br />
window utama.<br />
TRA TRANSLATE<br />
Menerjemahkan struktur.<br />
VEN VENN Menggambar diagram Venn.<br />
WHE WHEEL Menggambar roda helikal.<br />
WIN WINDOW Mengatur lebar sliding pada<br />
window.<br />
Setiap perintah tersebut dapat<br />
diketikan setiap saat. Selain perintah<br />
pada <strong>garlic</strong>, ada baiknya bagi kita untuk<br />
mengetahui tombol-tombol keyboard<br />
yang dapat digunakan untuk<br />
mempercepat navigasi. Anda juga bisa<br />
menggunakan mouse dan mengklik pada<br />
tombol yang tersedia. Untuk<br />
penggunaan keyboard, <strong>garlic</strong><br />
menggunakan tombol fungsi (F1, F2...)<br />
dan keypad yang terletak di bagian kanan<br />
keyboard. Berikut ini adalah referensi<br />
singkat untuk navigasi menggunakan<br />
keyboard.<br />
Gambar 2. Membuka struktur dari file <br />
Gambar 3. Merotasikan struktur<br />
www.infolinux.web.id<br />
Tutorial <strong>garlic</strong><br />
GTK<br />
1 Memindahkan kembali permukaan<br />
slab pada sumbu sesuai arah positif.<br />
2 Melakukan rotasi pada struktur<br />
searah jarum jam pada sumbu x.<br />
3 Memindahkan kembali permukaan<br />
slab pada sumbu z sesuai arah:<br />
negatif.<br />
4 Melakukan rotasi pada struktur<br />
searah jarum jam pada sumbu y.<br />
5 Memindahkan struktur pada sumbu<br />
z sesuai arah positif.<br />
6 Melakukan rotasi berlawanan arah<br />
jarum jam pada sumbu y.<br />
7 Melakukan rotasi berlawanan arah<br />
jarum jam pada sumbu z.<br />
8 Melakukan rotasi berlawanan arah<br />
jarum jam pada sumbu x.<br />
9 Melakukan rotasi searah jarum jam<br />
pada sumbu z.<br />
delete Memindahkan permukaan slab yang<br />
dekat pada sumbu z sesuai arah<br />
positif.<br />
enter Memindahkan permukaan slab yang<br />
dekat pada sumbu z sesuai arah<br />
negatif.<br />
/ Memindahkan struktur ke kiri.<br />
* Memindahkan struktur ke kanan<br />
- (minus) memindahkan struktur ke<br />
atas<br />
+ (plus) memindahkan struktur ke<br />
bawah.<br />
F1 Memindahkan permukaan warna<br />
belakang pada sumbu z sesuai arah<br />
positif.<br />
F2 Memindahkan permukaan warna<br />
belakang pada sumbu z sesuai arah<br />
negatif.<br />
INFOLINUX MEI 2003<br />
51
Tutorial GTK <strong>garlic</strong><br />
<br />
<br />
Gambar 4. Memindahkan struktur <br />
Gambar 5. Mendekatkan struktur<br />
Gambar 6. Memodifikasi ukuran rangka<br />
F3 Memindahkan permukaan warna<br />
depan pada sumbu z sesuai arah<br />
positif.<br />
F4 Memindahkan permukaan warna<br />
depan pada sumbu z sesuai arah<br />
negatif.<br />
Escape Kembali ke modus penggambaran<br />
utama.<br />
Efek dari kontrol-kontrol tersebut<br />
masih dapat dimodifikasi ukurannya<br />
<strong>dengan</strong> tombol pengubah berikut ini:<br />
shift besar<br />
alt_shift besar sekali<br />
control kecil<br />
shift_control kecil sekali<br />
Sehingga penekanan alt_shift / akan<br />
memindahkan struktur ke kiri dalam jarak<br />
yang sangat besar.<br />
52 INFOLINUX MEI 2003<br />
<br />
Mulai! Mulai! Mulai!<br />
Berikut ini kita akan memodifikasi sebuah<br />
struktur asam amino tunggal yang<br />
disediakan dalam bentuk yang sangat<br />
sederhana menjadi bentuk visualisasi<br />
yang mencengangkan! Anda bisa<br />
melupakan mouse untuk sementara.<br />
Setiap langkah akan melibatkan<br />
penggunaan tombol-tombol keyboard.<br />
Langkah-langkahnya adalah:<br />
1 . Jalankan <strong>garlic</strong>. Setelah dijalankan,<br />
<strong>garlic</strong> akan menampilkan sebuah<br />
window.<br />
2 . Kita perlu menggunakan sebuah<br />
struktur yang telah disediakan <strong>garlic</strong>.<br />
Untuk itu, kita perlu membuka<br />
sebuah file <strong>dengan</strong> nama trp.pdb.<br />
File tersebut umumnya terletak di /<br />
usr/share/doc/<strong>garlic</strong>/examples/.<br />
Cobalah mencari ke lokasi lain<br />
www.infolinux.web.id<br />
Gambar 7. Mengubah gambar atom menjadi gambar bola<br />
apabila distro Anda meletakkannya<br />
di tempat yang berbeda. Perhatikan<br />
juga prefix kompilasi apabila Anda<br />
melakukan kompilasi sendiri. Berikan<br />
perintah:<br />
loa /usr/share/doc/<strong>garlic</strong>/examples/<br />
trp.pdb<br />
Sekarang, seharusnya area kerja<br />
<strong>garlic</strong> Anda telah menampilkan<br />
sebuah struktur asam amino. (lihat<br />
Gambar 2.)<br />
3 . Bermain-mainlah <strong>dengan</strong> tombol<br />
4,6,2 dan 8 untuk melakukan rotasi.<br />
Anda juga dapat menggunakan<br />
perintah rot untuk merotasikan<br />
struktur. Contoh penggunaan<br />
perintah rot adalah: rot x 90 untuk<br />
merotasikan struktur sebesar 90<br />
derajat pada sumbu x. Setelah
Gambar 8. Memberikan kesan membara pada atom<br />
mencoba, kembalikanlah struktur<br />
dalam pandangan awal. (lihat<br />
Gambar 3.)<br />
4 . Bermain-mainlah <strong>dengan</strong> tombol /<br />
,*,- dan + untuk melakukan<br />
perpindahakan posisi struktur. Anda<br />
dapat pula menggunakan perintah<br />
pos untuk memindahkan struktur ke<br />
posisi yang spesifik. Contoh<br />
penggunaan pos adalah: pos 0 0 0<br />
yang akan memindahkan struktur ke<br />
tengah-tengah layar. Setelah selesai<br />
mencoba, berikan perintah pos 0 0<br />
0. (lihat Gambar 4.)<br />
5 . Berikan perintah pos 0 0 -120<br />
untuk mendekatkan struktur ke mata<br />
kita. (lihat Gambar 5.)<br />
6 . Berikan perintah bon 0 untuk<br />
menggambar rangka <strong>dengan</strong> ukuran<br />
pixel 0. Karena digambar <strong>dengan</strong><br />
ukuran pixel 0, maka rangka menjadi<br />
tidak kelihatan. Anda juga bisa<br />
mencoba ukuran rangka yang lain<br />
<strong>dengan</strong> memberikan nilai dari 0<br />
sampai 5 untuk perintah bon.<br />
Setelah mencoba-coba, berikan<br />
perintah bon 4. (lihat Gambar 6.)<br />
7 . Berikan perintah ato bal untuk<br />
menggantikan gambar atom menjadi<br />
gambar bola. Untuk memperindah<br />
gambar atom, Anda mungkin<br />
menginginkan parameter ba2 untuk<br />
perintah ato. Selain bal dan ba2,<br />
Anda bisa juga mencoba big, bi2,<br />
spa, sp2. Setelah mencoba-coba,<br />
berikan perintah ato ba2. (lihat<br />
Gambar 7.)<br />
<br />
8 . Sekarang kita<br />
akan bermainmain<br />
<strong>dengan</strong><br />
warna. Anda<br />
bisa mencoba<br />
untuk<br />
memberikan<br />
perintah col<br />
<strong>dengan</strong> nilainilai<br />
berikut<br />
sebagai<br />
parameternya:<br />
red, green,<br />
blue, yellow,<br />
cyan, magenta,<br />
white, yellowgreen,cyangrezen,<br />
cyan-blue, magenta-blue,<br />
magenta-red, orange, hot, cold, cpk.<br />
Setelah mencoba-coba, berikan<br />
perintah col hot. (lihat Gambar 8.)<br />
9 . Sebagai sentuhan akhir, berikan<br />
perintah plane dan label. Bagaimana<br />
pendapat Anda tentang struktur<br />
asam amino kita sekarang?<br />
Bagaimana perbandingan <strong>dengan</strong><br />
gambar awal? (lihat Gambar 9.)<br />
10. Kreasikan struktur asam amino<br />
Anda <strong>dengan</strong> menekan tombol F1,<br />
F2, F3, dan F4. Jadikanlah ini<br />
sebagai sentuhan personal Anda<br />
yang penuh kreativitas! (lihat<br />
Gambar 10.)<br />
<br />
Berikut ini adalah petunjuk bagi Anda<br />
yang ingin bekerja <strong>dengan</strong> beberapa<br />
struktur sekaligus. Anda harus<br />
www.infolinux.web.id<br />
Gambar 9. Penambahan plane dan label<br />
Tutorial <strong>garlic</strong><br />
GTK<br />
Gambar 10. Sentuhan personal struktur asam amino<br />
melakukan loa sebanyak jumlah struktur<br />
apabila semuanya disimpan di dalam<br />
file. Kemudian berikan perintah cat<br />
untuk memilih struktur dimana n<br />
adalah nomor urut struktur dimulai dari<br />
1. Setelah berhasil memilih suatu<br />
struktur, Anda bebas untuk<br />
memodifikasinya seperti langkahlangkah<br />
sebelumnya. Untuk keluar tanpa<br />
menyimpan Anda bisa menggunakan<br />
perintah dis all. Untuk menyimpan<br />
berikan perintah sav.<br />
Bagaimana kesan Anda tentang<br />
program ini? Belajar kimia dan biologi<br />
menjadi lebih menyenangkan ? Mari kita<br />
buktikan bahwa sekolah akan lebih<br />
menyenangkan apabila kita menggunakan<br />
sistem operasi GNU/Linux dan<br />
free software lainnya. Salam.<br />
Noprianto (noprianto@infolinux.co.id)<br />
INFOLINUX MEI 2003<br />
53
Tutorial C++ GTK<br />
Bagian 2 dari 3 Artikel<br />
Apakah susah mewujudkan<br />
sebuah sistem penyunting teks<br />
<strong>dengan</strong> kemampuan tab editing?<br />
Ternyata tidak. Triknya adalah <strong>dengan</strong><br />
menampung si editor (lihat kelas Editor di<br />
bagian pertama) dalam tab-tab sendiri. Qt<br />
telah menyediakan widget bernama<br />
QTabWidget. Untuk membubuhkan<br />
sedikit perluasan kemampuannya,<br />
QTabWidget akan dimodifikasi menjadi<br />
kelas baru yang bernama Tab.<br />
Tab<br />
Kelas Tab dideklarasikan pada file tab.h<br />
di bawah ini:<br />
#ifndef __TAB_H<br />
#define __TAB_H<br />
#include <br />
class Editor;<br />
class Tab: public QTabWidget<br />
{<br />
Q_OBJECT<br />
public:<br />
Tab( QWidget * parent=0, const char *<br />
name=0, WFlags f=0 ):<br />
QTabWidget( parent, name, f ) {};<br />
int count();<br />
void addEditor( Editor* e, const QString& t );<br />
Editor* currentEditor();<br />
void removeEditor( Editor* e );<br />
};<br />
#endif<br />
54 INFOLINUX MEI 2003<br />
Expad, Editor<br />
Multifile<br />
<strong>dengan</strong> Qt<br />
Sebagaimana disinggung di bagian sebelumnya, Expad akan<br />
merupakan sebuah editor teks <strong>dengan</strong> fitur tab editing. Bagian<br />
kedua ini akan mengupas mengenai teknik implementasi fitur<br />
tersebut.<br />
Melihat definisi widget Tab di file<br />
header tab.h jelaslah bahwa widget ini<br />
persis seperti induknya, QTabWidget,<br />
<strong>dengan</strong> hanya fungsi-fungsi ekstra untuk<br />
menambahkan sebuah widget Editor baru<br />
menjadi salah satu tabnya atau<br />
menghapus tab yang sudah ada. Tab-tab<br />
di QTabWidget biasa disebut page dan<br />
inilah yang akan di-cast ke widget Editor.<br />
Sederhana saja, bukan?<br />
Implementasi kelas Tab cukup pendek<br />
dan dituangkan dalam file tab.cpp<br />
sebagaimana ditunjukkan di bawah ini:<br />
#include “tab.moc”<br />
#include “editor.h”<br />
#include <br />
#include <br />
// — implementation of Tab —-<br />
int Tab::count()<br />
{<br />
return tabBar()->count();<br />
}<br />
void Tab::addEditor( Editor* e, const<br />
QString& t )<br />
dynamic_cast ?<br />
www.infolinux.web.id<br />
{<br />
if( !e ) return;<br />
addTab( e, t );<br />
setCurrentPage( count() - 1 );<br />
e->show();<br />
show();<br />
}<br />
void Tab::removeEditor( Editor* e )<br />
{<br />
if( !e ) return;<br />
removePage( e );<br />
delete e;<br />
show();<br />
}<br />
Editor* Tab::currentEditor()<br />
{<br />
return dynamic_cast(<br />
currentPage() );<br />
}<br />
Fungsi anggota addEditor dan<br />
removeEditor, sesuai namanya, akan<br />
menyisipkan sebuah editor baru atau<br />
menghapus editor yang dimaksud. Tentu<br />
saja, editor tersebut harus dibuat terlebih<br />
dahulu karena bukan merupakan<br />
tanggung jawab si kelas Tab ini.<br />
Karena user dapat beralih-alih tab,<br />
maka sebuah fungsi tambahan current-<br />
Editor diperlukan untuk mengetahui<br />
editor mana yang kini tengah aktif.<br />
Window utama: Expad<br />
Fungsionalitas paling berat ada pada<br />
kelas Expad sebagai widget yang<br />
merupakan window utama. Expad punya<br />
sejumlah slot yang berfungsi melakukan<br />
operasi file, penyuntingan, dan lain-lain.<br />
Lebih jelasnya, lihat file header expad.h<br />
berikut ini.<br />
#ifndef __EXPAD_H<br />
#define __EXPAD_H<br />
Ya, dynamic_cast adalah proses casting yang murni dialek C++. Anda tidak akan<br />
menemukannya di program C biasa. Berbeda <strong>dengan</strong> casting ala C yang hanya<br />
memaksakan satu tipe variabel ke tipe lainnya, dynamic_cast juga<br />
mengikutsertakan faktor mungkin tidaknya variabel tersebut di-casting.<br />
Contohnya dalam kasus untuk kelas Tab, variabel yang tipenya QWidget bisa dicasting<br />
ke tipe Editor, asal variabel tersebut memang merupakan sebuah Editor.<br />
Ini hanya mungkin karena Editor adalah turunan dari QTextEdit yang juga<br />
turunan dari QWidget.
#include <br />
class Tab;<br />
class DirList;<br />
class QAction;<br />
class QWidget;<br />
class QSplitter;<br />
class Expad: public QMainWindow<br />
{<br />
Q_OBJECT<br />
public:<br />
Expad();<br />
protected:<br />
void initActions();<br />
void initMenu();<br />
private slots:<br />
void fileNew();<br />
void fileOpen();<br />
void fileSave();<br />
void fileSaveAs();<br />
void fileClose();<br />
void fileCloseAll();<br />
void fileQuit();<br />
void editUndo();<br />
void editRedo();<br />
void editCut();<br />
void editCopy();<br />
void editPaste();<br />
void editSelectAll();<br />
void about();<br />
void tabChanged( QWidget* );<br />
void openFile( const QString& filename );<br />
private:<br />
// main widgets<br />
QSplitter* splitter;<br />
Tab *tabs;<br />
DirList* dirlist;<br />
// actions<br />
QAction* ma_FileNew;<br />
QAction* ma_FileOpen;<br />
QAction* ma_FileSave;<br />
<br />
Menu<br />
QAction* ma_FileSaveAs;<br />
QAction* ma_FileClose;<br />
QAction* ma_FileCloseAll;<br />
QAction* ma_FileQuit;<br />
QAction* ma_EditUndo;<br />
QAction* ma_EditRedo;<br />
QAction* ma_EditCut;<br />
QAction* ma_EditCopy;<br />
QAction* ma_EditPaste;<br />
QAction* ma_EditSelectAll;<br />
QAction* ma_About;<br />
};<br />
#endif<br />
Unsur-unsur<br />
antarmuka<br />
dari Expad<br />
DirList<br />
Begitu banyak QAction yang ada di<br />
Expad mencerminkan pendekatannya<br />
yang sedikit berbeda soal penanganan<br />
input dari user. Sebuah QAction sendiri<br />
adalah abstraksi dari suatu tindakan<br />
tertentu yang berasal dari user.<br />
Contohnya, ma_FileNew adalah action<br />
untuk membuat dokumen baru. Selain<br />
melalui menu File, New, user dapat juga<br />
memicu action ini menggunakan<br />
keyboard <strong>dengan</strong> shortcut tertentu,<br />
dalam contoh ini adalah Ctrl+N.<br />
Keuntungannya adalah bahwa satu<br />
action saja bisa digunakan sebagai<br />
representasi item di menu program dan<br />
sebagai tombol shortcut sehingga terasa<br />
cukup mudah dan praktis.<br />
Implementasi kelas Expad diletakkan<br />
pada file tersendiri bernama expad.cpp.<br />
www.infolinux.web.id<br />
Editor<br />
Tutorial C++ GTK<br />
Tab<br />
Karena cukup panjang, maka isi file<br />
tersebut akan dibahas secara tahap demi<br />
tahap sehingga tiap bagian pentingnya<br />
dapat teranotasi <strong>dengan</strong> jelas.<br />
Mula-mula, simaklah prolog file<br />
expad.cpp berikut konstruktor Expad<br />
berikut:<br />
#include “expad.moc”<br />
#include “editor.h”<br />
#include “dirlist.h”<br />
#include “tab.h”<br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
#include <br />
// — implementation of Expad —-<br />
const char* app = “Expad”;<br />
Expad::Expad()<br />
: QMainWindow( 0, “Expad”,<br />
WDestructiveClose )<br />
{<br />
initActions();<br />
initMenu();<br />
splitter = new QSplitter( this );<br />
setCentralWidget( splitter );<br />
INFOLINUX MEI 2003<br />
55
Tutorial C++ GTK<br />
dirlist = new DirList( splitter);<br />
splitter->setResizeMode( dirlist,<br />
QSplitter::KeepSize );<br />
connect( dirlist, SIGNAL( selected( const<br />
QString& ) ),<br />
this, SLOT( openFile( const QString& ) ) );<br />
tabs = new Tab( splitter );<br />
connect( tabs, SIGNAL( currentChanged(<br />
QWidget* ) ),<br />
this, SLOT( tabChanged( QWidget* ) ) );<br />
fileNew();<br />
statusBar()->message( “Ready”, 2000 );<br />
resize( 450, 400 );<br />
}<br />
Tanggung jawab terbesar si<br />
konstruktor adalah menyusun layout dari<br />
tampilan program. Sebagaimana bisa<br />
dilihat pada gambar sebelumnya, ada<br />
dua elemen utama dalam satu window,<br />
yaitu panel direktori (DirList) dan editor<br />
(Tab). Sudah sewajarnya kedua elemen<br />
ini tampil saling bersisian, namun <strong>dengan</strong><br />
sebuah pembatas (splitter) yang dapat<br />
digerakkan untuk mengatur pembagian<br />
ruangan bagi keduanya. Dengan Qt, hal<br />
demikian menjadi mudah berkat widget<br />
QSplitter. Dua widget lain yang ingin<br />
dipisahkan tinggal menjadikan si splitter<br />
sebagai parent-nya.<br />
Sepintas, barangkali Anda bisa lihat<br />
bahwa urusan inisialisai tampilan lainnya<br />
dilakukan di fungsi initActions dan<br />
initMenu berikut:<br />
56 INFOLINUX MEI 2003<br />
void Expad::initActions()<br />
{<br />
ma_FileNew = new QAction( this );<br />
ma_FileNew->setText( “New” );<br />
ma_FileNew->setAccel( CTRL + Key_N );<br />
connect( ma_FileNew, SIGNAL( activated() ),<br />
this, SLOT( fileNew() ) );<br />
ma_FileOpen = new QAction( this );<br />
ma_FileOpen->setText( “Open” );<br />
ma_FileOpen->setAccel( CTRL + Key_O );<br />
connect( ma_FileOpen, SIGNAL( activated() ),<br />
this, SLOT( fileOpen() ) );<br />
ma_FileSave = new QAction( this );<br />
ma_FileSave->setText( “Save” );<br />
ma_FileSave->setAccel( CTRL + Key_S );<br />
connect( ma_FileSave, SIGNAL( activated() ),<br />
this, SLOT( fileSave() ) );<br />
ma_FileSaveAs = new QAction( this );<br />
ma_FileSaveAs->setText( “Save As” );<br />
connect( ma_FileSaveAs, SIGNAL(<br />
activated() ),<br />
this, SLOT( fileSaveAs() ) );<br />
ma_FileClose = new QAction( this );<br />
ma_FileClose->setText( “Close” );<br />
ma_FileClose->setAccel( CTRL + Key_W );<br />
connect( ma_FileClose, SIGNAL( acti<br />
vated() ),<br />
this, SLOT( fileClose() ) );<br />
ma_FileCloseAll = new QAction( this );<br />
ma_FileCloseAll->setText( “Close All” );<br />
connect( ma_FileCloseAll, SIGNAL(<br />
activated() ),<br />
this, SLOT( fileCloseAll() ) );<br />
Manajemen layout<br />
Jika Anda programer Java, pastilah tidak<br />
asing <strong>dengan</strong> teknik Qt dalam melakukan<br />
pengaturan layout. Tetapi, bila Anda lebih<br />
familiar <strong>dengan</strong> kakas pengembangan di<br />
Windows seperti Borland Delphi atau<br />
Microsoft Visual Basic, layout bisa jadi<br />
membuat kepala pening. Memang, widgetwidget<br />
di Qt tidak memiliki posisi yang<br />
ditentukan oleh lokasi pikselnya. Masingmasing<br />
akan menempatkan dirinya sendiri<br />
sesuai tempat yang disediakan, dalam hal ini menjadi urusan si pengatur layout.<br />
Ada beberapa pilihan layout, seperti vertikal, horizontal, ataupun grid. Anda<br />
bahkan bisa memasang nested layout atau layout dalam layout. Cara termudah<br />
untuk mendesain layout yang tepat adalah <strong>dengan</strong> menggunakan aplikasi yang<br />
cocok untuk kebutuhan ini, yaitu Qt Designer. Dengan modal point-and-click,<br />
layout serumit apapun jadi mudah. Coba dan rasakan sendiri!<br />
www.infolinux.web.id<br />
ma_FileQuit = new QAction( this );<br />
ma_FileQuit->setText( “Quit” );<br />
ma_FileQuit->setAccel( CTRL + Key_X );<br />
connect( ma_FileQuit, SIGNAL( activated() ),<br />
this, SLOT( fileQuit() ) );<br />
ma_EditUndo = new QAction( this );<br />
ma_EditUndo->setText( “Undo”);<br />
ma_EditUndo->setAccel( CTRL + Key_Z );<br />
connect( ma_EditUndo, SIGNAL( activated() ),<br />
this, SLOT( editUndo() ) );<br />
ma_EditRedo = new QAction( this );<br />
ma_EditRedo->setText( “Redo”);<br />
connect( ma_EditRedo, SIGNAL( activated() ),<br />
this, SLOT( editRedo() ) );<br />
ma_EditCut = new QAction( this );<br />
ma_EditCut->setText( “Cut”);<br />
ma_EditCut->setAccel( CTRL + Key_X );<br />
connect( ma_EditCut, SIGNAL( activated() ),<br />
this, SLOT( editCut() ) );<br />
ma_EditCopy = new QAction( this );<br />
ma_EditCopy->setText( “Copy”);<br />
ma_EditCopy->setAccel( CTRL + Key_C );<br />
connect( ma_EditCopy, SIGNAL( activated() ),<br />
this, SLOT( editCopy() ) );<br />
ma_EditPaste = new QAction( this );<br />
ma_EditPaste->setText( “Paste”);<br />
ma_EditPaste->setAccel( CTRL + Key_V );<br />
connect( ma_EditPaste, SIGNAL( acti<br />
vated() ),<br />
this, SLOT( editPaste() ) );<br />
ma_EditSelectAll = new QAction( this );<br />
ma_EditSelectAll->setText( “Select All”);<br />
ma_EditSelectAll->setAccel( CTRL +<br />
Key_A );<br />
connect( ma_EditSelectAll, SIGNAL(<br />
activated() ),<br />
this, SLOT( editSelectAll() ) );<br />
ma_About = new QAction( this );<br />
ma_About->setText( “About...”);<br />
connect( ma_About, SIGNAL( activated() ),<br />
this, SLOT( about() ) );<br />
}<br />
// initialize menu<br />
void Expad::initMenu()<br />
{
QPopupMenu *file_menu = new<br />
QPopupMenu( this );<br />
menuBar()->insertItem( “&File”, file_menu );<br />
ma_FileNew->addTo( file_menu );<br />
ma_FileOpen->addTo( file_menu );<br />
file_menu->insertSeparator();<br />
ma_FileSave->addTo( file_menu );<br />
ma_FileSaveAs->addTo( file_menu );<br />
file_menu->insertSeparator();<br />
ma_FileClose->addTo( file_menu );<br />
ma_FileCloseAll->addTo( file_menu );<br />
file_menu->insertSeparator();<br />
ma_FileQuit->addTo( file_menu );<br />
QPopupMenu *edit_menu = new<br />
QPopupMenu( this );<br />
menuBar()->insertSeparator();<br />
menuBar()->insertItem( “&Edit”, edit_menu );<br />
ma_EditUndo->addTo( edit_menu );<br />
ma_EditRedo->addTo( edit_menu );<br />
edit_menu->insertSeparator();<br />
ma_EditCut->addTo( edit_menu );<br />
ma_EditCopy->addTo( edit_menu );<br />
ma_EditPaste->addTo( edit_menu );<br />
edit_menu->insertSeparator();<br />
ma_EditSelectAll->addTo( edit_menu );<br />
QPopupMenu *help_menu = new<br />
QPopupMenu( this );<br />
menuBar()->insertSeparator();<br />
menuBar()->insertItem( “&Help”,<br />
help_menu );<br />
ma_About->addTo( help_menu );<br />
}<br />
Dalam fungsi Expad::initMenu() ,<br />
sejumlah action yang diciptakan di<br />
Expad::initActions() disisipkan ke menu<br />
utama dan ke toolbar (jika memang ingin<br />
ada toolbar) hanya <strong>dengan</strong> memanggil<br />
fungsi addTo dari masing-masing action.<br />
Anda tidak perlu lagi membuat item menu<br />
khusus sebagaimana yang sudah-sudah<br />
(lihat lagi misalnya program QSimpleApp<br />
di InfoLINUX No. 8/2001). Selain<br />
menyederhanakan, teknik ini akan<br />
mengurangi duplikasi kode program yang<br />
tidak perlu.<br />
Pada slot-slot yang mengurusi file,<br />
yakni fileNew(), fileOpen(), fileSave(),<br />
fileSaveAs(), fileClose(), serta fileCloseAll(),<br />
sebagian besar hanya bertindak sebagai<br />
jembatan untuk memanggil fungsi-fungsi<br />
yang tepat dari Editor ataupun Tab.<br />
Perhatikan fungsi Expad::openFile().<br />
Dengan memberikan argumen berupa<br />
nama file yang ingin dibuka, fungsi<br />
tersebut akan mendelegasikan tugas<br />
pembukaan file tersebut ke Editor::load().<br />
Barangkali Anda perlu melihat ulang<br />
bagian pertama tulisan ini untuk<br />
mencermati implementasi Editor::load().<br />
// opens the given file as new document<br />
void Expad::openFile( const QString& filename )<br />
{<br />
if( !filename.isEmpty() )<br />
{<br />
Editor* editor = new Editor( tabs );<br />
editor->setFilename( filename );<br />
editor->load();<br />
tabs->addEditor( editor, editor->title() );<br />
}<br />
}<br />
Fungsi Expad::fileNew() lebih mudah<br />
lagi. Cukup buat saja editor baru dan<br />
sisipkan ke dalam kumpulan tab yang<br />
sudah ada.<br />
// creates a new blank document<br />
void Expad::fileNew()<br />
{<br />
Editor* editor = new Editor( tabs );<br />
editor->setFilename( QString::null );<br />
tabs->addEditor( editor, editor->title() );<br />
}<br />
Beberapa fungsi lain untuk urusan file<br />
merupakan slot. Jadi bisa saja slot ini<br />
diaktifkan dari menu (via QAction yang<br />
tepat). Untuk itu, perlu juga ditanyakan<br />
kepada user nama file yang akan dibuka<br />
atau disimpan. Untunglah Qt<br />
menyediakan fasilitas kotak dialog yang<br />
sudah built-in, yaitu QFileDialog.<br />
// opens and loads a document<br />
void Expad::fileOpen()<br />
{<br />
QString filename;<br />
filename = QFileDialog::getOpenFileName(<br />
dirlist->dir(),<br />
QString::null, this);<br />
openFile( filename );<br />
}<br />
// saves active document<br />
void Expad::fileSave()<br />
{<br />
Editor* editor = tabs->currentEditor();<br />
www.infolinux.web.id<br />
if( !editor) return;<br />
Tutorial C++ GTK<br />
if( editor->filename().isEmpty() )<br />
fileSaveAs();<br />
editor->save();<br />
}<br />
// saves document to a different name<br />
void Expad::fileSaveAs()<br />
{<br />
Editor* editor = tabs->currentEditor();<br />
if( !editor) return;<br />
QString filename;<br />
filename = QFileDialog::getSaveFileName(<br />
dirlist->dir(),<br />
QString::null, this);<br />
if( !filename.isEmpty() )<br />
{<br />
editor->setFilename( filename );<br />
editor->save();<br />
tabs->changeTab( editor, editor->title() );<br />
}<br />
}<br />
// closes active document<br />
void Expad::fileClose()<br />
{<br />
Editor* editor = tabs->currentEditor();<br />
if( !editor ) return;<br />
tabs->removeEditor( editor );<br />
}<br />
// closes all document<br />
void Expad::fileCloseAll()<br />
{<br />
while( tabs->currentEditor() )<br />
{<br />
Editor* editor = tabs->currentEditor();<br />
tabs->removeEditor( editor );<br />
}<br />
}<br />
Ariya Hidayat (ariya@infolinux.co.id)<br />
Edisi berikutnya:<br />
Bagian terakhir akan mengupas<br />
mengenai mekanisme kerja dari<br />
operasi penyuntingan seperti copy,<br />
cut, paste, sekaligus merangkaikan<br />
kesemua kelas yang diperlukan<br />
menjadi satu aplikasi utuh. Jangan<br />
lewatkan pula unjuk gigi kemampuan<br />
Qt <strong>dengan</strong> ilustrasi untuk menghasilkan<br />
versi Windows dari Expad.<br />
INFOLINUX MEI 2003<br />
57
Tutorial GTK shell<br />
Tampil Indah <strong>dengan</strong> shell<br />
Membuat aplikasi interaktif dan menarik di console tidak harus selalu<br />
menggunakan bahasa pemrograman yang rumit <strong>dengan</strong> memanggil pustaka<br />
yang rumit pula. Cobalah shell script terlebih dahulu...<br />
Salah satu fenomena yang cukup<br />
menarik untuk di amati di dunia<br />
UNIX dan GNU/Linux adalah<br />
lengketnya pengguna <strong>dengan</strong> aplikasi<br />
console. Tidak peduli seberapa indah<br />
dan mudah Nautilus misalnya,<br />
pengguna kerap kali masih lebih<br />
memilih program ls misalnya. Berbagai<br />
alasan pun dikemukakan. Mulai<br />
lambatnya aplikasi berbasis G<strong>UI</strong> sampai<br />
kesetiaan <strong>dengan</strong> program-program di<br />
console. Walau, memang tidak setiap<br />
pengguna GNU/Linux lantas membenci<br />
keindahan yang ditawarkan oleh<br />
berbagai desktop yang indah-indah<br />
tersebut.<br />
Sebagai seorang developer, tak<br />
jarang Anda menjumpai masalahmasalah<br />
yang seharusnya dapat<br />
diselesaikan <strong>dengan</strong> solusi yang tidak<br />
begitu rumit. Memberi peringatan<br />
kepada user-user di sistem ketika<br />
memasuki sesi sistem misalnya. Anda<br />
bisa saja meminta administrator sistem<br />
Anda untuk menambahkan sebaris<br />
perintah berikut:<br />
echo “Halo $LOGNAME, jangan nakalnakal<br />
ya...”<br />
Akan tetapi, perintah tersebut yang<br />
mungkin dimasukkan ke dalam file<br />
.bash_profile apabila Anda<br />
menggunakan BASH, rasa-rasanya<br />
kurang efektif walaupun dijalankan<br />
setiap kali user memasuki sesi sistem.<br />
Terlalu sederhana, terlalu tidak<br />
mencolok, terlalu kecil dan macammacam<br />
alasan lainnya. User pun<br />
seringkali kelupaan membaca pesanpesan<br />
satu baris semacam ini.<br />
Lantas bagaimana? Membuat<br />
newline banyak-banyak di awal dan<br />
akhir pesan peringatan? Ini mungkin<br />
saja merupakan solusi. Akan tetapi,<br />
bagaimana <strong>dengan</strong> permasalahan lain<br />
58 INFOLINUX MEI 2003<br />
seperti ketika user-user Anda meminta<br />
frontend untuk program cal? Alasannya<br />
bisa saja karena program yang berguna<br />
untuk menampilkan kalender itu kurang<br />
informatif, kurang mudah dan macammacam<br />
alasan lainnya.<br />
Sekali lagi, lantas bagaimana?<br />
Mengabaikan saja permintaan user<br />
rasa-rasanya bukan hal yang cukup<br />
bijak, walau membuat aplikasi sendiri<br />
untuk mencukupi kebutuhan user<br />
mungkin lebih tidak bijak lagi, apalagi<br />
kalau Anda memiliki segudang kerjaan.<br />
GNU/Linux hadir <strong>dengan</strong> sejumlah<br />
tool yang sebenarnya sangat berguna,<br />
akan tetapi terkadang sangat kurang<br />
dari sisi dandanannya. Tool-tool<br />
tersebut pun umumnya dapat menjadi<br />
solusi atas beberapa permasalahan.<br />
Jika ditambah dialog, atau whiptail,<br />
yang akan menjadi intisari dari artikel<br />
ini, berbagai tampilan indah akan<br />
muncul dan selamat tinggal hitam putih<br />
pun terucap. Semuanya menggunakan<br />
shell script dan tool-tool standar!<br />
Shell script<br />
Kebanyakan distro saat ini datang<br />
bersama berbagai shell. Tinggal<br />
menyesuaikan selera, begitulah bahasa<br />
iklannya. Akan tetapi, apakah semua<br />
shell lantas mendukung shell script?<br />
Atau apakah shell script yang ditulis di<br />
BASH akan dapat terbaca di CSH<br />
misalnya? Atau apakah yang berhak<br />
menyandang gelar shell script hanyalah<br />
script yang dibuat oleh BASH, yag<br />
notabene adalah shell yang super<br />
komplit?<br />
Shell script hanyalah sekumpulan<br />
perintah (yang disimpan di dalam<br />
sebuah file) yang dijalankan oleh shell.<br />
Para veteran MS DOS akan menyebut<br />
ini kurang lebih seperti batch file.<br />
Pengguna MS DOS, yang mengenal<br />
satu jenis shell, yakni command.com<br />
www.infolinux.web.id<br />
,tidak akan bertanya-tanya tentang<br />
portabilitas.<br />
Sebuah shell yang akan<br />
menyandang predikat “dapat<br />
menjalankan shell script” haruslah<br />
komplian <strong>dengan</strong> standar POSIX. Oleh<br />
karena itulah, shell script yang Anda<br />
tulis di dalam shell yang menuruti<br />
standar POSIX tersebut, dapat<br />
dijalankan di shell manapun yang<br />
menuruti standar. BASH adalah contoh<br />
shell yang menuruti standar. Begitupun<br />
<strong>dengan</strong> shell-shell besar. Perbedaannya<br />
hanya pada perintah spesifik shell.<br />
Terus bagaimana <strong>dengan</strong> shell-shell<br />
kecil? Penulis kerapkali menggunakan<br />
ASH, shell yang cukup kecil dan tetap<br />
mampu menjalankan shell script yang<br />
ada.<br />
Berbagai shell default biasanya juga<br />
“mengaliaskan namanya” <strong>dengan</strong> sh<br />
untuk kompatibilitas.<br />
Dialog dan Whiptail<br />
Ketikkan perintah berikut ini dan amati<br />
hasilnya:<br />
echo “Sehat-sehat saja, $LOGNAME ?”<br />
Kemudian ketikkan perintah lain<br />
berikut dan amati pula hasilnya:<br />
dialog —yesno “sehat-sehat saja,<br />
$LOGNAME?” 10 40<br />
Apabila tidak terjadi pesan<br />
kesalahan, tentunya Anda bisa<br />
membandingkan tingkat keindahan dan<br />
interaktifitas di antara keduanya. Yang<br />
pertama hanya muncul dalam satu baris<br />
teks, sementara yang kedua hadir<br />
dalam sebuah kotak dialog lengkap<br />
<strong>dengan</strong> tombol YES dan NO.<br />
Keduanya ditulis <strong>dengan</strong> satu perintah!<br />
Bagi Anda yang menemui pesan<br />
kesalahan semacam dialog: command<br />
not found, berarti program dialog<br />
belum terinstal pada sistem Anda.
Kotak dialog <strong>dengan</strong> dialog<br />
Kemudian gantilah kata dialog pada<br />
perintah yang kedua <strong>dengan</strong> whiptail<br />
dan cermati perbedaannya.<br />
whiltail —yesno “sehat-sehat saja,<br />
$LOGNAME?” 10 40<br />
Keduanya memberikan tampilan<br />
yang kurang lebih mirip.<br />
Permasalahannya mungkin hanya pada<br />
masalah selera. Dialog dibangun di atas<br />
pustaka ncurses, sementara whiptail<br />
dibangun di atas pustaka newt.<br />
Pada whiptail yang penulis pakai<br />
(0.50.17 - Debian 3.0r0), kekurangan<br />
masih terdapat di sana sini, terutama<br />
apabila dibandingkan <strong>dengan</strong> dialog.<br />
Untuk selanjutnya, di dalam artikel ini,<br />
kita akan menggunakan dialog. Bagi<br />
Anda yang jatus cinta <strong>dengan</strong> whiptail,<br />
dalam beberapa contoh, Anda dapat<br />
mengganti tulisan dialog menjadi<br />
whiptail.<br />
Dialog 101<br />
Dialog dibuat untuk memudahkan para<br />
pembuat shell script dalam<br />
meningkatkan keindahan dan<br />
interaktivitas aplikasi. Apa saja yang<br />
datang bersama dialog? Mari kita lihat<br />
satu per satu.<br />
msgbox<br />
Fitur yang satu ini mungkin termasuk<br />
dalam salah satu fitur standar. Message<br />
box dapat digunakan untuk<br />
memberikan pesan. Seorang administrator<br />
mungkin akan menyukai fitur<br />
yang satu ini, terutama apabila<br />
digunakan untuk menarik perhatian<br />
user ketika memasuki sesi sistem.<br />
Untuk memberikan pesan “halo” di<br />
atas sebuah kotak dialog berukuran<br />
10x40 karakter, perintah berikut ini<br />
dapat digunakan.<br />
dialog —msgbox halo 10 40<br />
Secara default, sebuah tombol<br />
<strong>dengan</strong> label “OK” telah tersedia untuk<br />
Anda. Kurang suka? Lebih suka kata<br />
“yoi” untuk menggantikan “OK”?<br />
Cobalah perintah berikut ini:<br />
dialog —ok-label yoi —msgbox halo 10 40<br />
Masih kurang indah? Baiklah. Coba<br />
kita tambahkan judul di latar belakang.<br />
Sebuah opsi —backtitle dapat<br />
digunakan. Cobalah perintah berikut<br />
ini:<br />
dialog —backtitle<br />
“PESAN DARI<br />
ADMIN” —ok-label<br />
yoi —msgbox halo<br />
10 40<br />
Selain itu,<br />
beberapa opsi<br />
berikut ini mungkin<br />
menarik perhatian<br />
Anda:<br />
opsi —title<br />
untuk<br />
menambahkan<br />
judul pada<br />
dialog (harap<br />
<br />
<br />
www.infolinux.web.id<br />
Kotak dialog <strong>dengan</strong> whiptail<br />
Pesan <strong>dengan</strong> msgbox dialog<br />
Tutorial shell<br />
GTK<br />
dibedakan <strong>dengan</strong> opsi —backtitle)<br />
opsi —timeout untuk<br />
memberikan batas waktu sebelum<br />
dialog Anda keluar secara otomatis.<br />
Sangat baik apabila digunakan untuk<br />
pesan yang tidak terlalu penting,<br />
yang akan menutup otomatis setelah<br />
beberapa lama diabaikan.<br />
Sebagai catatan, opsi-opsi tersebut<br />
berlaku secara umum, termasuk untuk<br />
fitur lainnya.<br />
textbox<br />
Fitur yang satu ini digunakan untuk<br />
menampilkan isi suatu file teks dalam<br />
dialog yang menarik. Anda mungkin<br />
bisa menampilkan pesan tentang lisensi<br />
atau hal-hal lain yang disimpan dalam<br />
file menggunakan fitur ini. Kurang<br />
terkesan? Tunggu dulu. Sekilas<br />
INFOLINUX MEI 2003<br />
59
Tutorial GTK shell<br />
<br />
Fitur gauge nan informatif <br />
Memilih file kini mudah <strong>dengan</strong> fselect<br />
mungkin terkesan biasa-biasa saja.<br />
Akan tetapi, jika diamati lebih lanjut,<br />
fitur yang satu ini juga datang <strong>dengan</strong><br />
persentase teks yang telah ditampilkan,<br />
dukungan scroll yang dapat diakses<br />
<strong>dengan</strong> tombol navigasi keyboard dan,<br />
voila: fitur search yang dapat diakses<br />
<strong>dengan</strong> menekan tombol / dan?<br />
Terkesan? Cobalah fitur ini <strong>dengan</strong><br />
memberikan perintah:<br />
dialog —textbox /etc/passwd 10 40<br />
yesno<br />
Kotak dialog yes no seringkali Anda<br />
temui di aplikasi berbasiskan G<strong>UI</strong>. Lain<br />
ceritanya <strong>dengan</strong> aplikasi console.<br />
Anda umumnya akan diharus<br />
menjawab yes/no <strong>dengan</strong> mengetikkan<br />
y atau n, bahkan yes atau no. Dengan<br />
fitur yesno yang disediakan, lupakan<br />
saja penekanan tombol y atau n<br />
tersebut.<br />
Cobalah fitur ini <strong>dengan</strong> memberikan<br />
perintah:<br />
dialog —yesno “Apakah Anda sehat-sehat<br />
saja, saudara $LOGNAME?” 10 40<br />
Baiklah. Masalah mulai muncul.<br />
Bagaimana sang penulis shell script<br />
bisa mengetahui seorang memilih<br />
tombol Yes atau No? Untuk itu,<br />
program dialog, secara konsisten<br />
mengembalikan nilai 0 untuk<br />
penekanan OK atau Yes, 1 untuk<br />
Cancel atau No dan -1 untuk kasuskasus<br />
lainnya.<br />
Untuk memeriksa return value<br />
60 INFOLINUX MEI 2003<br />
perintah sebelumnya, Anda bisa<br />
mengevaluasi variabel $?. Dengan<br />
demikian, blok perintah berikut ini akan<br />
melengkapi kotak dialog yesno kita<br />
menjadi lebih informatif.<br />
dialog —yesno “Apakah Anda baik-baik<br />
saja, saudara $LOGNAME?” 10 40<br />
export retval=$?<br />
if [ $retval -eq 0 ]<br />
then<br />
dialog —msgbox “Syukurlah<br />
$LOGNAME, Anda baik-baik saja” 10 40<br />
else<br />
dialog —msgbox “Aduh ! Bagaimana<br />
ini $LOGNAME, apa yang Anda rasakan?”<br />
10 40<br />
fi<br />
Bisa Anda cermati bahwa <strong>dengan</strong><br />
fitur yesno dan msgbox kita bisa<br />
meningkatkan interaktivitas dan<br />
menjadikan aplikasi kita lebih informatif.<br />
inputbox dan passwordbox<br />
Ingin meminta input dari user? Tidak<br />
masalah berkat datangnya fitur<br />
inputbox. Segala input akan disimpan<br />
ke dalam stderr. Berikan perintah<br />
berikut ini untuk mencoba:<br />
dialog —inputbox halo 10 40<br />
Fitur inputbox juga dilengkapi<br />
<strong>dengan</strong> kemampuan untuk<br />
memasukkan nilai default, yang dalam<br />
beberapa kondisi akan membantu user<br />
dalam memasukkan nilai tertentu. Fitur<br />
www.infolinux.web.id<br />
inputbox ini serupa <strong>dengan</strong><br />
passwordbox yang berguna untuk<br />
pengambilan informasi sensitif seperti<br />
halnya password. Perbedaannya adalah<br />
jika pada inputbox, teks yang<br />
dimasukkan akan dicetak di layar, maka<br />
pada passwordbox, teks yang<br />
dimasukkan tidak terlihat.<br />
Jika pada inputbox pemberian nilai<br />
default akan sangat membantu user,<br />
maka pada passwordbox hal ini sangat<br />
tidak dianjurkan. Hal tersebut<br />
disebabkan karena pemberian nilai yang<br />
tidak terlihat oleh pemakai tentu saja<br />
tidak ada gunanya, di samping<br />
meningkatkan risiko melemahnya<br />
keamanan sistem karena pemberian<br />
nilai tersebut dapat diamati di dalam<br />
process table.<br />
gauge<br />
Memberikan informasi tentang seberapa<br />
jauh pekerjaan telah terselesaikan dapat<br />
Anda lakukan berkat adanya fitur gauge<br />
dari dialog. Gauge berfungsi seperti<br />
halnya sebuah progress bar. Nilai<br />
persentase dari gauge dapat dibaca dari<br />
standard input.<br />
Berikut ini adalah blok perintah yang<br />
dapat Anda berikan untuk menguji fitur<br />
gauge:<br />
i=0<br />
while [ $i -le 100 ]<br />
do<br />
echo $i | dialog —gauge processing<br />
10 40<br />
sleep 0.01
Fitur calendar membuat shell script semakin indah<br />
let i=$i+1<br />
done<br />
Dalam contoh tersebut, kita<br />
menggunakan perintah sleep yang<br />
berfungsi untuk menunda suatu anak<br />
proses (di mana dalam contoh tersebut<br />
waktu tunda adalah 0.01 detik). Nilai<br />
variabel i tersebut kita cetak dan<br />
berikan kepada program dialog yang<br />
menerimanya sebagai standard input<br />
untuk gauge.<br />
fselect<br />
Ini dia fitur yang luar biasa dari dialog.<br />
Sebuah file selector! Dengan fitur ini,<br />
Anda bisa memanjakan user Anda<br />
<strong>dengan</strong> mengizinkannya untuk memilih<br />
nama file <strong>dengan</strong> antarmuka yang<br />
indah daripada meminta user Anda<br />
untuk mengetikkan serangkaian path<br />
yang panjang. Sama seperti halnya<br />
inputbox, keluaran dari fselect akan<br />
disimpan di dalam stderr.<br />
Berikut ini adalah perintah untuk<br />
mencoba fselect:<br />
dialog —fselect / 10 40<br />
calendar<br />
Seperti kasus yang telah dibahas<br />
bahwa program cal, walau telah<br />
memiliki tampilan yang bagus, tetap<br />
kurang interaktif, maka <strong>dengan</strong> fitur<br />
calendar dari dialog, semua masalah<br />
telah terpecahkan. Fitur yang satu ini<br />
mengizinkan Anda menampilkan<br />
kalender saat ini ataupun masa depan<br />
<br />
dan masa lalu serta mengembalikan<br />
nilai dalam format tanggal/bulan/tahun<br />
ketika user keluar dari kotak dialog ini.<br />
Berikan perintah berikut ini untuk<br />
mencoba calendar:<br />
dialog —calendar halo 10 40<br />
radiolist<br />
Setelah memanjakan kita <strong>dengan</strong><br />
berbagai fitur yang telah dibahas, kini<br />
radiolist datang untuk menambah<br />
serangkaian fitur. Sesuai <strong>dengan</strong><br />
namanya, radiolist menyediakan<br />
kemampuan untuk membentuk<br />
serangkaian pilihan dimana hanya<br />
memperbolehkan satu pilihan aktif.<br />
Sama seperti fitur lainnya, nilai terpilih<br />
dicetak di stderr ketika user mengakhiri<br />
dialog.<br />
Ketikkan contoh berikut ini untuk<br />
mencoba radiolist:<br />
dialog —radiolist “Distro yang Anda<br />
gunakan” 20 60 10 Debian Debian on<br />
Redhat Redhat off Slackware Slackware<br />
off other other off<br />
checklist<br />
Apabila radiolist hanya mengizinkan<br />
satu pilihan aktif, maka checklist<br />
mengizinkan pemilihan beberapa item<br />
sekaligus. Ketika user mengakhiri<br />
dialog, semua pilihan akan<br />
dikembalikan dalam format “pil1”<br />
“pil2” “pil3” .... Nilai kembalian<br />
tersebut dalam diproses di dalam iterasi<br />
for ataupun dapat dipisahkan <strong>dengan</strong><br />
program cut.<br />
www.infolinux.web.id<br />
Fitur checklist dari dialog<br />
Tutorial shell<br />
GTK<br />
Ketikkan contoh berikut ini untuk<br />
mencoba checklist:<br />
dialog —checklist “Distro yang Anda<br />
gunakan” 20 60 10 Debian Debian on<br />
Redhat Redhat off Slackware Slackware<br />
off other other off<br />
menu<br />
Katakanlah user harus memilih satu dari<br />
beberapa pilihan. Dalam situasi seperti<br />
itu, Anda bisa menggunakan radiolist,<br />
walau kurang memenuhi antarmuka<br />
yang ramah untuk pemakai. Untunglah<br />
dialog juga menyediakan fitur menu<br />
yang dapat digunakan untuk<br />
pembuatan menu. Nilai kembalian<br />
dicetak ke dalam stderr.<br />
Ketikkan contoh berikut untuk<br />
mencoba menu:<br />
dialog —menu “Kegiatan sehari-hari” 20 60<br />
10 makan makan minum minum tidur tidur<br />
Luar biasa! Hanya itulah kesan yang<br />
terucap untuk program yang satu ini.<br />
Dengan dialog, beberapa solusi yang<br />
memerlukan antarmuka ramah dapat<br />
dibuat hanya dalam hitungan menit.<br />
Bayangkan apabila Anda harus<br />
membuatnya <strong>dengan</strong> berbagai bahasa<br />
pemrograman dilengkapi pula <strong>dengan</strong><br />
penggunaan pustaka ncurses. Waktu<br />
yang dihemat bisa Anda gunakan<br />
untuk keperluan lainnya. Bagi Anda<br />
yang bermain di GNOME, tersedia pula<br />
gdialog yang menawarkan antarmuka<br />
lebih ramah lagi. Salam.<br />
Noprianto (noprianto@infolinux.co.id)<br />
INFOLINUX MEI 2003<br />
61
Tutorial GTK Zope<br />
Berkenalan <strong>dengan</strong> Zope<br />
Using Zope means: To Present Dynamic Content, To Manage your<br />
Web Site, To Secure Your Web Site, To Provide Network Services,<br />
To Integrate Diverse Content, To Provide Scalability...<br />
Dunia cepat berubah. Termasuk<br />
perubahan dalam cara mengembangkan<br />
aplikasi web. Mari<br />
sejenak melangkah ke beberapa tahun<br />
yang lalu. Bisa membuat aplikasi web<br />
<strong>dengan</strong> menulis kode HTML saja sudah<br />
merupakan hal yang luar biasa. Apalagi<br />
bisa menambahkan sedikit keindahan<br />
<strong>dengan</strong> bantuan JavaScript. Dan seiring<br />
<strong>dengan</strong> berjalannya waktu, berbagai tool<br />
untuk server side scripting pun mulai<br />
merajalela.<br />
Kebutuhan pengguna pun semakin<br />
bertambah. Bagi beberapa pihak, website<br />
dinamis seperti halnya website penyedia<br />
berita yang di-update dalam hitungan detik<br />
sudah mencukupi. Akan tetapi, website<br />
dinamis tersebut bagi beberapa pihak<br />
bukanlah merupakan solusi atas masalah<br />
yang mereka hadapi. Mereka butuh lebih.<br />
Mereka butuh kolaborasi yang lebih<br />
powerful. Mereka butuh simple content<br />
management. Mereka butuh web components.<br />
Dan untuk itu, mereka butuh Zope...<br />
Zope Zope Zope...<br />
Zope adalah sebuah framework untuk<br />
membangun aplikasi berbasiskan web.<br />
Aplikasi-aplikasi web seperti halnya<br />
SourceForge dan Yahoo! dapat dibangun<br />
<strong>dengan</strong> menggunakan Zope. Zope sendiri<br />
tidak bisa disetarakan <strong>dengan</strong> PHP, JSP<br />
ataupun bahasa-bahasa server side<br />
scripting lainnya. Zope memberikan lebih<br />
dari sekadar kemampuan untuk<br />
melakukan scripting.<br />
Lantas, apakah yang diberikan oleh<br />
Zope? Jika Anda melakukan instalasi<br />
Zope, Anda akan mendapatkan:<br />
Sebuah web server. Zope datang<br />
bersama <strong>dengan</strong> sebuah web server<br />
yang dapat diandalkan. Akan tetapi,<br />
jika hati Anda sudah tertambat pada<br />
web server lain seperti Apache, maka<br />
Zope bisa diatur untuk saling bekerja<br />
sama <strong>dengan</strong>nya.<br />
62 INFOLINUX MEI 2003<br />
Sebuah FTP server.<br />
Tampilan berbasiskan web. Yah.<br />
Anda hanya membutuhkan sebuah<br />
browser yang andal untuk bekerja<br />
<strong>dengan</strong> Zope Management Interface.<br />
Galeon ataupun Konqueror sudah<br />
lebih dari mencukupi. Di Zope<br />
Management Interface tersebut Anda<br />
bisa mengatur Zope Anda, mengatur<br />
user sampai mengembangkan aplikasi<br />
yang kompleks dalam lingkungan<br />
kerja yang kolaboratif.<br />
Object database. Zope adalah<br />
penerapan dari Object Oriented<br />
Programming. Bekerja <strong>dengan</strong> Zope<br />
adalah bekerja <strong>dengan</strong> object-object.<br />
Dengan Zope Management Interface,<br />
Anda bisa bekerja <strong>dengan</strong> objectobject<br />
tersebut seperti halnya bekerja<br />
<strong>dengan</strong> file manager.<br />
Kerja sama <strong>dengan</strong> database relational.<br />
Zope memungkinkan Anda<br />
bekerja <strong>dengan</strong> database relational<br />
seperti Oracle, PostgreSQL, Sybase,<br />
MySQL, dan lain sebagainya.<br />
Dukungan scripting. Bagian ini<br />
mungkin bisa disetarakan <strong>dengan</strong><br />
PHP, JSP ataupun bahasa server side<br />
scripting lainnya. Zope mengizinkan<br />
Anda untuk bekerja <strong>dengan</strong> berbagai<br />
bahasa, mulai Python, Perl sampai<br />
bawaan Zope sendiri: DTML (Document<br />
Template Markup Language).<br />
Zope juga diberikan dibawah lisensi<br />
yang bersifat open source sehingga<br />
dapat dikembangkan lebih lanjut.<br />
Dapatkan Zope di http://www.zope.org<br />
dan lakukan instalasi sesuai <strong>dengan</strong><br />
instruksi yang diberikan. Zope sendiri<br />
dikembangkan hampir seluruhnya<br />
menggunakan Python. Pada saat artikel<br />
ini ditulis, Zope telah mencapai versi 2.6.<br />
Zope dari sisi bisnis<br />
Kenapa harus menggunakan Zope untuk<br />
www.infolinux.web.id<br />
membangun aplikasi web? Berikut ini<br />
adalah sedikit pandangan dari sisi bisnis:<br />
powerful collaboration<br />
Membuat suatu website yang kompleks<br />
tentunya buka tugas satu atau dua orang<br />
saja. Dalam website berskala besar,<br />
seperti halnya website sebuah koran,<br />
tentunya isi yang ditulis dapat<br />
didelegasikan kepada beberapa<br />
penanggung jawab, di mana<br />
penanggung jawab mendelegasikan<br />
tugas-tugas yang lebih kecil kepada<br />
orang-orang lainnya. Lantas, apakah<br />
orang-orang tersebut harus mengetikkan<br />
kode HTML sendiri ketika ingin membuat<br />
perubahan yang cukup mendasar?<br />
Satu kelebihan yang datang bersama<br />
Zope adalah semua hal dapat diatur<br />
<strong>dengan</strong> klik sana dan sini. Dan<br />
semuanya berbasiskan web sehingga<br />
pengguna awam pun, yang diserahi<br />
tanggung jawab dapat menggunakan<br />
Zope Management Interface. Untuk<br />
mengantisipasi kesalahan, Zope<br />
menyediakan fasilitas undo, version, dan<br />
beberapa tool lainnya yang memungkinkan<br />
orang banyak dapat saling bekerja<br />
sama <strong>dengan</strong> aman. Bukankah tanggung<br />
jawab suatu website yang besar bukan<br />
milik satu dua orang saja?<br />
Simple Content Management<br />
Umumnya, aplikasi web secara tradisional<br />
dipisahkan menjadi tiga lapisan. Data dan<br />
informasi lainnya di simpan di dalam<br />
database, program yang mengendalikan<br />
keseluruhan aplikasi di simpan di dalam<br />
file-file dan HTML serta layout lainnya<br />
disimpan di tempat lain pula.<br />
Salah satu kerugian dari cara<br />
tradisional tersebut adalah penggunaan<br />
berbagai hal dan komponen yang<br />
berujung kepada kemampuan dan<br />
produktivitas setiap anggota tim.<br />
Berbagai hal dan komponen terpisah
Selamat datang di Zope<br />
tersebut juga memiliki tingkat keamanan<br />
masing-masing di mana kerentanan salah<br />
satu komponen bisa saja berakibat fatal.<br />
Dan tidak adanya satu interface global di<br />
mana setiap orang bisa bekerja sama<br />
<strong>dengan</strong> cara yang mudah.<br />
Zope menyediakan semua hal tersebut.<br />
Semua komponen di dalam Zope berada<br />
di dalam sistem yang koheren. Semua<br />
bicara hal yang seragam soal keamanan,<br />
web based management, pencarian data,<br />
clustering, sindikasi, dan berbagai hal<br />
lainnya. Dengan menggabungkan konsepkonsep<br />
tersebut di dalam satu tempat<br />
yang teratur, Zope mengizinkan<br />
penggunanya untuk menggunakan<br />
seperangkat tool canggih untuk<br />
membangun aplikasi web yang kompleks.<br />
Zope juga dapat digabungkan <strong>dengan</strong><br />
mudah <strong>dengan</strong> berbagai tool eksternal.<br />
Soal kerja sama, itu tinggal diatur.<br />
Web Components<br />
Dunia berubah. Web berubah. Banyak<br />
hal yang berubah. Dimulai dari saat ini<br />
sampai saat-saat di depan, aplikasi web<br />
tidak hanya dapat diakses dari browser.<br />
Akan tiba zaman di mana bukan saatnya<br />
lagi membuka suatu website <strong>dengan</strong><br />
duduk terpaku di depan komputer. Suatu<br />
halaman web dapat diakses dari mana<br />
saja. Hal tersebut dimungkinkan <strong>dengan</strong><br />
adanya web service. Dan Zope<br />
mendukungnya.<br />
Kegunaan Zope<br />
Sebelum kita memulai berkenalan lebih<br />
lanjut <strong>dengan</strong> Zope, ada baiknya kita<br />
melihat di mana saja<br />
kegunaan Zope dari<br />
berbagai sisi.<br />
Dalam<br />
menampilkan sebuah<br />
website yang<br />
dinamis, Zope<br />
menyediakan segala<br />
sesuatu yang Anda<br />
butuhkan. Sebut saja<br />
mulai dari fitur<br />
pencarian informasi<br />
sampai hubungan ke<br />
berbagai sistem<br />
database.<br />
Bicara soal<br />
management sebuah website, tentunya<br />
kita sepakat apabila sebuah website<br />
sederhana dapat diatur <strong>dengan</strong> usaha<br />
yang relatif kecil. Akan tetapi,<br />
bagaimana <strong>dengan</strong> website yang sangat<br />
kompleks <strong>dengan</strong> campur tangan<br />
berbagai pihak? Rumit. Situasi yang<br />
terpecah-pecah pada cara pengembangan<br />
website tradisional tidak<br />
memungkinkan Anda untuk mengatur<br />
segala hal dalam satu tempat yang<br />
sama. Dengan zope, semua urusan<br />
beres. Dengan Zope, pengaturan data,<br />
business logic dan tampilan dapat diatur<br />
melalui satu tempat. Zope juga dapat<br />
menangani website yang kecil sampai<br />
website <strong>dengan</strong> ukuran bergiga-giga<br />
bytes. Semuanya hanya menggunakan<br />
sebuah web browser.<br />
Zaman sekarang ini, keamanan<br />
menjadi satu kunci penting. Hal tersebut<br />
tentunya telah disadari oleh Zope. Semua<br />
tugas dapat<br />
didelegasikan kepada<br />
pihak yang<br />
bertanggung jawab<br />
<strong>dengan</strong> hak yang<br />
tertentu pula.<br />
Pengaturannya pun<br />
mudah, cukup<br />
<strong>dengan</strong> klik-klik pada<br />
web browser Anda.<br />
Kemudian, kita<br />
sampai pada salah<br />
satu isu yang cukup<br />
penting bagi<br />
kalangan enterprise:<br />
skalabilitas.<br />
<br />
www.infolinux.web.id<br />
Zope Management Interface<br />
Tutorial Zope GTK<br />
Penambahan atau pengurangan server<br />
atau entiti lainnya bukanlah masalah bagi<br />
Zope. Dengan Zope Enterprise Object,<br />
semuanya beres.<br />
Mulai! Mulai! Mulai!<br />
Mencoba mungkin merupakan salah satu<br />
cara terbaik untuk mengerti Zope.<br />
Jalankan Zope yang telah Anda instalasi<br />
dan bukalah web browser Anda. Secara<br />
default, Zope berjalan pada port 8080.<br />
Apabila Anda menggunakan distribusi<br />
Debian GNU/Linux, Zope berjalan pada<br />
port 9673.<br />
Arahkan web browser Anda pada<br />
alamat di mana Zope berjalan. Apabila<br />
instalasi dilakukan <strong>dengan</strong> sukses, Anda<br />
akan melihat suatu halaman yang<br />
berisikan ucapan selamat datang di Zope.<br />
Kemudian arahkan web browser Anda<br />
pada halaman manage. Apabila Zope<br />
berjalan pada server lokal melalui port<br />
9673, maka arahkan web browser Anda<br />
ke http://localhost:9673/manage. Untuk<br />
memasuki Zope management interface<br />
tersebut, Anda perlu melakukan<br />
otentikasi terlebih dahulu <strong>dengan</strong><br />
pasangan username dan password yang<br />
telah Anda spesifikasikan pada saat<br />
instalasi. Apabila otentikasi berhasil,<br />
Anda akan dibawa menuju halaman<br />
depan Zope Management Interface.<br />
Mari melongok sejenak ke dalam<br />
ZMI. ZMI terbagi ke dalam tiga frame.<br />
Frame yang paling atas menunjukkan<br />
informasi tentang login dan aksi yang<br />
bersesuaian <strong>dengan</strong>nya. Frame paling<br />
kiri, navigator, mengizinkan Anda<br />
INFOLINUX MEI 2003<br />
63
Tutorial GTK Zope<br />
<br />
Membuat user baru pada Zope <br />
Membuat sebuah direktori baru<br />
untuk melakukan navigasi terhadap isiisi<br />
direktori Anda, sama sepertinya<br />
ketika bekerja <strong>dengan</strong> beberapa file<br />
manager populer. Dan frame paling<br />
kanan yang berukuran paling besar<br />
adalah daerah kerja Anda.<br />
Direktori-direktori pada frame sebelah<br />
kiri dapat diakses dari web browser<br />
<strong>dengan</strong> alamat relatif terhadap alamat di<br />
mana Zope di akses.<br />
Cobalah merujuk ke direktori<br />
Control_Panel dan cermati beberapa hal<br />
di direktori ini.<br />
Membuat aplikasi<br />
sederhana<br />
Pada kesempatan kali ini, kita akan<br />
mencoba membuat satu aplikasi<br />
sederhana. Tujuan dari aplikasi tersebut<br />
adalah memperkenalkan konsep user di<br />
Zope dan pembuatan aplikasi web<br />
menggunakan DTML.<br />
Untuk itu, kita akan membuat user<br />
baru terlebih dahulu. User yang kali<br />
pertama Anda ciptakan pada saat<br />
instalasi sebaiknya jangan dipakai untuk<br />
kegiatan sehari-hari. Untuk membuat user<br />
baru, arahkan mouse Anda ke frame<br />
sebelah kiri dan pilihlah direktori<br />
acl_users. Di area kerja frame sebelah<br />
kanan, Anda akan menjumpai tombol<br />
untuk menambahkan user. Klik dan<br />
berikan informasi yang secukupnya<br />
untuk menambahkan user. Untuk saat in,<br />
berikan roles Manager kepada user yang<br />
ingin Anda buat tersebut. Management<br />
user pada Zope memerlukan pembahasan<br />
tersendiri.<br />
64 INFOLINUX MEI 2003<br />
Setelah itu, logout-lah dan login<br />
kembali <strong>dengan</strong> user yang baru saja<br />
Anda ciptakan. Kemudian klik mouse<br />
Anda ke direktori root pada frame<br />
sebelah kiri. Setelah area kerja Anda pada<br />
frame sebelah kanan menampakkan isi<br />
dari direktori root tersebut, arahkan<br />
mouse Anda pada combo box yang<br />
terdapat di bagian kanan layar Anda dan<br />
pilihlah item Folder. Dengan<br />
menambahkan item Folder, Anda telah<br />
membuat sebuah direktori baru di<br />
direktori root. Berikan nama test dan title<br />
tes. Title digunakan untuk memperjelas<br />
kegunaan dari direktori tersebut. Setelah<br />
semuanya selesai, Anda akan melihat<br />
direktori baru di direktori root Anda.<br />
Selamat! Anda baru saja membuat<br />
sebuah direktori baru. Anda bisa<br />
mengakses direktori tersebut lewat web<br />
browser <strong>dengan</strong> alamat http://<br />
localhost:9673/tes.<br />
Alamat tersebut<br />
mengasumsikan<br />
Anda menggunakan<br />
port 9673. Gantilah<br />
nomor port tersebut<br />
sesuai <strong>dengan</strong> nomor<br />
port yang Anda<br />
gunakan.<br />
Tampilan yang<br />
terlihat di alamat http:/<br />
/localhost:9673/tes<br />
tersebut akan sama<br />
seperti tampilan pada<br />
http://localhost:9673.<br />
Mengapa hal tersebut<br />
bisa terjadi?<br />
<br />
www.infolinux.web.id<br />
Mengakses sebuah direktori baru<br />
Zope menggunakan sistem orang tua<br />
dan anak seperti halnya pada OOP. Pada<br />
saat http://localhost:9673/tes diakses,<br />
Zope akan menampilkan suatu informasi.<br />
Berasal dari manakah informasi tersebut?<br />
Lazimnya, informasi didapatkan dari isi<br />
direktori tersebut. Akan tetapi, apabila<br />
direktori tersebut masih kosong, secara<br />
otomatis, Zope akan mencari ke direktori<br />
orang tuanya, dan <strong>dengan</strong> demikian<br />
Zope akan menampilkan informasi yang<br />
sama seperti http://localhost:9673 ketika<br />
kita mengakses http://localhost:9673/<br />
tes.<br />
Mari kita membuat tampilan yang<br />
sedikit berbeda. Bagi Anda yang akrab<br />
<strong>dengan</strong> pemrograman web, tentunya<br />
Anda mengenal istilah index.html,<br />
index.php, index.jsp, dan lain<br />
sebagainya yang notabene diatur di web<br />
server sebagai start page untuk direktori.<br />
Begitupun <strong>dengan</strong> Zope. Akan tetapi,
Menambahkan Dokumen DTML baru <br />
Layar edit index_html<br />
secara default, nama start page adalah<br />
index_html. Entiti pada Zope tidak perlu<br />
diberikan ekstensi. Cukup sebutkan nama<br />
object-nya saja.<br />
Pindahkan direktori aktif ke direktori<br />
tes. Kemudian arahkan mouse Anda ke<br />
tempat di mana pertama Anda<br />
menambah sebuah direktori. Akan tetapi,<br />
untuk saat ini, pilihkan item DTML<br />
Document karena kita akan<br />
menambahkan sebuah dokumen DTML.<br />
Berikan nama index_html. Judul dapat<br />
Anda isi <strong>dengan</strong> string apa saja. Anda<br />
juga bisa mengupload file yang telah<br />
Anda buat.<br />
Di direktori tes kini telah terdapat<br />
sebuah Dokumen DTML baru <strong>dengan</strong><br />
nama index_html. Arahkan kembali web<br />
browser Anda ke http://localhost:9673/<br />
tes dan cermati perubahan tampilannya.<br />
Hal ini disebabkan karena start page<br />
index_html telah berisikan sesuatu yang<br />
lain, yang merupakan isi default. Zope<br />
secara otomatis mengisikan nilai default<br />
ke beberapa entiti yang buat.<br />
Saat ini, kita akan bersiap-siap untuk<br />
mengedit index_html tersebut.<br />
Kembalilah aktif ke dalam direktori tes<br />
pada ZMI dan arahkan mouse Anda ke<br />
area kerja frame kanan. Klik tombol<br />
mouse Anda pada index_html dan dalam<br />
sekejap Anda akan dibawa ke layar edit<br />
index_html tersebut. Di halaman ini,<br />
Anda diberi kesempatan untuk<br />
mengisikan isi index_html datau mengupload<br />
file yang telah Anda buat. Anda<br />
juga bisa mengubah title dari index_html<br />
di halaman ini.<br />
Mari kita analisis isi dari index_html<br />
yang disediakan oleh Zope.<br />
<br />
<br />
<br />
This is the Document.<br />
<br />
<br />
Dari potongan kode tersebut, minimal<br />
kita menjumpai satu hal baru, yakni tag<br />
. DTML, seperti halnya<br />
HTML juga menggunakan istilah tag.<br />
Dan tag yang akan dibahas di artikel ini<br />
adalah tag yang berguna<br />
untuk menampilkan isi sebuah variabel.<br />
Baris pertama, yakni akan<br />
menampilkan isi dari variabel<br />
standard_html_header. Dapat dari<br />
manakah isi variabel ini? Karena tidak<br />
terdapat variabel<br />
ini di dalam isi<br />
direktori tes,<br />
maka Zope akan<br />
mencari ke<br />
direktori orang<br />
tuanya (yaitu<br />
root) dan akan<br />
menemukan<br />
entiti standard_<br />
html_header di<br />
sana. Nilai ini<br />
akan ditampilkan<br />
ke web browser.<br />
Kemudian<br />
pada baris kedua<br />
kita akan melihat<br />
<br />
www.infolinux.web.id<br />
Tampilan baru direktori tes<br />
Tutorial Zope GTK<br />
bagaimana DTML bekerja sama <strong>dengan</strong><br />
HTML. Sekali lagi akan menampilkan judul<br />
atau nama dokumen. Sementara baris<br />
terakhir memiliki penjelasan seperti<br />
pada baris pertama.<br />
DTML sendiri memiliki banyak tag.<br />
Anda bisa merujuk ke http://<br />
localhost:9673/HelpSys apabila Help<br />
System Zope telah terinstalasi.<br />
Bagaimana kesan Anda tentang<br />
Zope? Artikel ini memberikan sedikit<br />
gambaran tentang Zope dan DTML.<br />
Untuk membuat aplikasi, selain DTML,<br />
Anda juga bisa menggunakan ZPT<br />
ataupun External Method yang bisa<br />
berupa script Python ataupun Perl.<br />
Sampai ketemu <strong>dengan</strong> artikel Zope<br />
yang lain. Selamat mencoba! Zope<br />
zope zope....<br />
Noprianto (noprianto@infolinux.co.id)<br />
INFOLINUX MEI 2003<br />
65
Tutorial NFS GTK<br />
Sharing File di<br />
Jaringan <strong>dengan</strong> NFS<br />
File atau direktori milik sebuah komputer dapat diakses oleh<br />
komputer lain. Bahkan harddisk dan CD-ROM sebuah komputer<br />
seakan-akan menjadi milik komputer lain. Mirip share dan map di<br />
jaringan Windows.<br />
NFS merupakan program aplikasi<br />
untuk memudahkan kita dalam<br />
melakukan sharing file atau<br />
data. Melalui NFS, memungkinkan<br />
mesin Anda untuk melakukan mounting<br />
mesin orang lain atau server melalui<br />
remote. Sehingga bisa saling berbagi<br />
data atau menjalankan program<br />
aplikasi.<br />
Konfigurasi server NFS<br />
Sebelum Anda menjalankan NFS,<br />
Anda harus melakukan beberapa konfigurasi<br />
file. File-file tersebut antara lain<br />
adalah:<br />
/etc/exports<br />
/etc/hosts.allow<br />
/etc/hosts.deny<br />
Dalam artikel ini, kami menggunakan<br />
asumsi PC yang digunakan adalah<br />
seperti berikut ini:<br />
Server menggunakan nomor IP:<br />
192.168.0.254<br />
Untuk worstation/PC klien, masingmasing<br />
menggunakan nomor IP:<br />
192.168.0.1<br />
192.168.0.2<br />
192.168.0.3<br />
Adapun langkah-langkah yang harus<br />
dilakukan adalah sebagai berikut:<br />
1. Mengekspor NFS Filesystems<br />
Cara setting konfigurasi /etc/exports<br />
adalah sebagai berikut:<br />
Pada konsol, login sebagai root:<br />
Login: root<br />
Password:<br />
Lakukan editing pada file /etc/exports,<br />
seperti berikut ini:<br />
root@localhost # vi /etc/exports<br />
66 INFOLINUX MEI 2003<br />
Pada file /etc/exports, tambahkan<br />
direktori dan user seperti berikut ini:<br />
/usr/share/doc 192.168.0.1(ro)<br />
192.168.0.2(ro) 192.168.0.3(ro)<br />
/home/siswa 192.168.0.1(rw)<br />
192.168.0.2(rw) 192.168.0.3(rw)<br />
Simpan hasil pekerjaan Anda.<br />
2. Konfigurasi /etc/hosts.deny<br />
/etc/hosts.deny berfungsi untuk<br />
melakukan pemblokiran akses ke server<br />
terhadap semua IP yang ada.<br />
Langkahnya adalah sebagai berikut:<br />
Lakukan editing pada file /etc/<br />
hosts.deny, pada konsol ketikkan<br />
sebagai berikut:<br />
root@localhost # vi /etc/hosts.deny<br />
Isikan kalimat seperti berikut ini:<br />
portmap:ALL lockd:ALL mountd:ALL<br />
rquotad:ALL statd:ALL<br />
Simpan hasil pekerjaan Anda.<br />
3. Konfigurasi /etc/hosts.allow<br />
/etc/hosts.allow berfungsi untuk<br />
mengizinkan IP mana saja yang bisa<br />
terhubung ke server. Adapun langkahnya<br />
adalah sebgai berikut:<br />
Lakukan editing pada file /etc/<br />
hosts.allow, pada konsol ketikkan<br />
sebagai berikut:<br />
root@localhost # vi /etc/hosts.allow<br />
Isikan alamat IP, seperti berikut ini:<br />
lockd: 192.168.0.1 , 192.168.0.2 ,<br />
192.168.0.3<br />
rquotad: 192.168.0.1 , 192.168.0.2 ,<br />
192.168.0.3<br />
mountd: 192.168.0.1 , 192.168.0.2 ,<br />
192.168.0.3<br />
www.infolinux.web.id<br />
statd: 192.168.0.1 , 192.168.0.2 ,<br />
192.168.0.3<br />
4. Menjalankan service pendukung<br />
setelah kita selesai melakukan<br />
konfigurasi, selanjutnya kita jalankan<br />
service-service pendukung seperti<br />
tersebut di bawah ini:<br />
Portmap<br />
Jalankan service portmap, <strong>dengan</strong><br />
cara sebagai berikut:<br />
root@localhost # /etc/init.d/portmap start<br />
NFS<br />
Selanjutnya jalankan service NFS,<br />
sebagai berikut:<br />
root@localhost # /etc/init.d/nfs start<br />
Untuk memastikan program NFS dan<br />
program portmap sudah berjalan,<br />
lakukan monitoring <strong>dengan</strong><br />
menggunakan rpcinfo dan pastikan<br />
hasilnya sama <strong>dengan</strong> keterangan di<br />
bawah ini:<br />
root@localhost # rpcinfo -p program vers<br />
proto port<br />
100000 2 tcp 111 portmapper<br />
100000 2 udp 111 portmapper<br />
100011 1 udp 749 rquotad<br />
100011 2 udp 749 rquotad<br />
100005 1 udp 759 mountd<br />
100005 1 tcp 761 mountd<br />
100005 2 udp 764 mountd<br />
100005 2 tcp 766 mountd<br />
100005 3 udp 769 mountd<br />
100005 3 tcp 771 mountd<br />
100003 2 udp 2049 nfs<br />
100003 3 udp 2049 nfs<br />
300019 1 tcp 830 amd<br />
300019 1 udp 831 amd<br />
100024 1 udp 944 status<br />
100024 1 tcp 946 status
100021 1 udp 1042 nlockmgr<br />
100021 3 udp 1042 nlockmgr<br />
100021 4 udp 1042 nlockmgr<br />
100021 1 tcp 1629 nlockmgr<br />
100021 3 tcp 1629 nlockmgr<br />
100021 4 tcp 1629 nlockmgr<br />
Menjalankan ulang export<br />
/etc/exports yang telah Anda edit<br />
belum bisa dilihat hasilnya sampai<br />
Anda menjalankan-ulang, <strong>dengan</strong><br />
menuliskan sintaks perintah berikut<br />
ini:<br />
root@localhost # exportfs -ra<br />
Perintah tersebut berfungsi untuk<br />
memaksa nfsd membaca ulang file /<br />
etc/exports, yang telah Anda<br />
modifikasi.<br />
Konfigurasi Klien NFS<br />
Setelah Anda selesai melakukan setting<br />
NFS pada server, maka langkah<br />
selanjutnya adalah melakukan setting<br />
NFS pada mesin klien. Kami berasumsi<br />
mesin klien Anda menggunakan nomor<br />
IP 192.168.0.1 Berikut ini merupakan<br />
langkah-langkah untuk melakukan setting<br />
klien NFS.<br />
Pada konsol, login sebagai root:<br />
Login: root<br />
Password:<br />
Sebelum memulai, pastikan file /proc/<br />
filesystems ada baris berisi nfs, seperti<br />
berikut ini:<br />
root@localhost # more /proc/filesystems<br />
nodev rootfs<br />
nodev bdev<br />
nodev proc<br />
nodev sockfs<br />
nodev tmpfs<br />
nodev shm<br />
nodev pipefs<br />
ext2<br />
nodev devfs<br />
nodev devpts<br />
reiserfs<br />
vfat<br />
ext3<br />
nodev usbdevfs<br />
nfs<br />
nodev autofs<br />
iso9660<br />
Linux/Unix<br />
Workstation<br />
192.168.0.1<br />
Adapun cara untuk melakukan<br />
mounting direktori-direktori remote<br />
adalah sebagai berikut:<br />
Pada konsol, login sebagai root<br />
Login: root<br />
Password: password<br />
Buatlah direktori baru pada direktori<br />
/mnt, misalnya doc dan share<br />
[root@localhost:~] # cd /mnt<br />
[root@localhost:~] # mkdir /mnt/doc<br />
[root@localhost:~] # mkdir /mnt/share<br />
Kemudian lakukan mounting<br />
direktori pada server, caranya<br />
sebagai berikut:<br />
[root@localhost:~] # mount<br />
192.168.0.254:/usr/share/doc/ /mnt/<br />
doc<br />
[root@localhost:~] # mount<br />
192.168.0.254:/home/siswa /mnt/<br />
share<br />
Untuk melakukan unmounting<br />
direktori pada server atau PC tujuan,<br />
Anda cukup mengetikkan perintah<br />
sebagai berikut:<br />
[root@localhost:~] # umount /mnt/doc<br />
[root@localhost:~] # umount /mnt/share<br />
www.infolinux.web.id<br />
Skema Jaringan NFS Server<br />
Server Linux<br />
192.168.0.254<br />
Linux/Unix<br />
Workstation<br />
192.168.0.2<br />
Tutorial GTK NFS<br />
Linux/Unix<br />
Workstation<br />
192.168.0.3<br />
Untuk menjalankan mounting<br />
direktori-direktori remote secara<br />
otomatis pada saat komputer klien<br />
dinyalakan, Anda bisa melakukan<br />
editing pada file /etc/fstab, sebagai<br />
berikut:<br />
Pada konsol, login sebagai root<br />
Login: root<br />
Password:<br />
Lakukan editing pada file /etc/fstab,<br />
seperti berikut ini:<br />
[root@localhost:~] # vi /etc/fstab<br />
Tambahkan kalimat sebagai<br />
berikut:<br />
192.168.0.254:/usr/share/doc/ /mnt/<br />
doc nfs ro 0 0<br />
192.168.0.254:/home/siswa /mnt/<br />
share nfs rw 0 0<br />
Kemudian simpan hasil pekerjaan<br />
Anda.<br />
Pada saat PC Anda dinyalakan, Anda<br />
bisa langsung mengakses data atau<br />
menggunakan program aplikasi secara<br />
bersama-sama. Selamat mencoba.<br />
R. Kresno Aji (masaji@ai.co.id)<br />
INFOLINUX MEI 2003<br />
67
Tutorial Wine GTK<br />
Wine:<br />
Menjalankan Aplikasi<br />
Windows di Linux<br />
Tutorial singkat ini akan menjelas<br />
kan cara menginstalasi salah satu<br />
program emulasi Windows, yaitu<br />
CodeWeavers Wine. Paket binari<br />
program ini tersedia di CD InfoLINUX<br />
edisi Maret 2003. CodeWeavers<br />
(www.codeweavers.com) merupakan<br />
perusahaan pembuat software di Linux<br />
dan Unix untuk menjalankan aplikasi<br />
MS Windows. CodeWeavers Wine<br />
adalah salah satu paket yang<br />
dikembangkan dari projek Wine<br />
(www.winehq.org).<br />
Instalasi CodeWeavers Wine ini<br />
sangat mudah karena berbentuk RPM.<br />
Kecuali jika distro Anda tidak mendukung<br />
RPM, sehingga harus menginstalasi<br />
paket Wine yang berformat lain, misalnya<br />
kompilasi dari source yang juga tersedia<br />
di CD InfoLINUX. CATATAN: Pengguna<br />
Mandrake 9.0 pantas gembira, karena<br />
Wine telah disertakan dalam paket RPM<br />
di CD ke-2.<br />
Langkah pertama, instalasi paket,<br />
misalnya <strong>dengan</strong> perintah:<br />
rpm -Uvh codeweacers-wine-20020904-<br />
7.i386.rpm<br />
<br />
68 INFOLINUX MEI 2003<br />
Saat bekerja <strong>dengan</strong> Linux, Anda ingin<br />
menjalankan aplikasi MS Windows tanpa<br />
logout atau reboot? Ada dua pilihan bagus<br />
tapi tidak free, VMWare atau Win4Lin. Jika<br />
ingin yang free meski tidak istimewa,<br />
cobalah Wine.<br />
Gambar 1. Setup CodeWeavers Wine<br />
Langkah kedua, jalankan perintah<br />
setup:<br />
winesetup<br />
Langkah ketiga, pada tampilan seperti<br />
Gambar 1, tekan Next dan Next lalu<br />
Finish.<br />
Untuk menguji coba,<br />
jalankan salah satu<br />
program di MS<br />
Windows, misalnya<br />
Winamp yang ada<br />
dalam direktori C:/<br />
Program Files/Winamp/<br />
winamp.exe. Jika<br />
partisi Windows dimount<br />
pada /c<br />
(biasanya /mnt/<br />
windows atau /mnt/<br />
dos), jalankan perintah<br />
berikut:<br />
wine /c/Program\ Files/<br />
Winamp/winamp.exe<br />
<br />
Gambar 2 memperlihatkan<br />
perbandingan tampilan player MP3 di<br />
Linux (XMMS, gambar atas) <strong>dengan</strong> di<br />
Windows (Winamp, gambar bawah).<br />
Gambar 3 adalah dekstop<br />
WindowMaker di Linux sedang<br />
menampilkan program pengolah gambar<br />
di Windows, Paint Shop Pro.<br />
Berdasarkan pengalaman penulis<br />
<strong>dengan</strong> Mandrake 9.0, lebih baik<br />
menggunakan paket Wine dari CD<br />
Mandrake daripada Codeweavers-wine<br />
dari CD InfoLINUX. Misalnya, Winamp<br />
www.infolinux.web.id<br />
<br />
Gambar 2. XMMS dan Wine<br />
Menjalankan Winamp<br />
yang dijalankan dari <strong>dengan</strong> wine<br />
Mandrake menghasilkan suara yang lebih<br />
baik daripada dijalankan <strong>dengan</strong><br />
Codeweavers-wine. Dua jenis wine ini<br />
belum stabil, sehingga belum bisa<br />
menjalankan aplikasi besar semacam<br />
Microsoft Office.<br />
Gambar 3. Wine Menjalankan Paint Shop Pro<br />
CodeWeavers telah berhasil<br />
mengembangkan aplikasi Linux untuk<br />
menjalankan Microsoft Office 97/2000,<br />
Lotus Notes, dan lain-lain, yaitu<br />
CrossOver Office. Produk lainnya,<br />
CrossOver Plugin, dapat mengaktifkan<br />
plugin Windows, seperti QuickTime,<br />
ShockWave Director, Windows Media<br />
Player 6.4, Word Viewer, Excel Viewer,<br />
PowerPoint Viewer, dan lain-lain.<br />
langsung dari web browser Linux.<br />
Sayangnya, semua itu tidak free.<br />
Rusmanto (rus@infolinux.co.id)
GnomeMeeting:<br />
VoIP atau<br />
Telepon via<br />
Internet<br />
Bertelepon jarak jauh antarkota bahkan antarnegara tidak mesti<br />
membayar mahal. Linux <strong>dengan</strong> Gnomemeeting-nya dapat<br />
membantu Anda ber-SLJJ atau SLI via Internet. Istilah<br />
populernya VoIP Merdeka.<br />
Gnomemeeting merupakan program<br />
aplikasi bawaan Gnome, yang<br />
memungkinkan kita untuk<br />
melakukan komunikasi dua arah ataupun<br />
lebih. Baik melalui teks (chatting),<br />
maupun <strong>dengan</strong> menggunakan mikrofon<br />
atau webcam. Komunikasi suara ini<br />
sering disebut VoIP (Voice over Internet<br />
Protocol). Fungsinya hampir sama seperti<br />
kita menggunakan aplikasi Netmeeting<br />
dari Microsoft® (Lihat Gambar 1.).<br />
Baru-baru ini, kami mencoba<br />
kemampuan Gnomemeeting untuk<br />
berhubungan <strong>dengan</strong> Microsoft<br />
Netmeeting®. Dengan menggunakan dua<br />
buah PC dan sebuah kabel cross.<br />
Penggunaan Gnomemeeting secara<br />
intranet ini, dimaksudkan agar kami bisa<br />
mengetahui respon dari masing-masing<br />
PC, satu sama lain secara baik.<br />
Anda tidak perlu mengkhawatirkan,<br />
artikel ini bisa Anda coba secara online<br />
menggunakan jaringan internet yang<br />
terpasang pada PC Anda. Sepanjang<br />
Anda mengetahui alamat IP dari lawan<br />
Gambar 1. <br />
Gnomemeeting<br />
dan Netmeeting<br />
bicara Anda. Atau Anda dapat<br />
menggunakan bantuan dari server ILS,<br />
yang bisa anda jalankan <strong>dengan</strong><br />
menekan tombol ikon bergambar buku<br />
dan tulisan ILS.<br />
Pada penggunaan Gnomemeeting kali<br />
ini, kami menggunakan sistem operasi<br />
Linux Mandrake 9.0, yang tersambung<br />
<strong>dengan</strong> Microsoft® Windows 2000<br />
Advance Server®. Adapun spesifikasinya<br />
adalah sebagai berikut:<br />
Linux Mandrake 9.0<br />
Processor AMD Duron 1,2GB<br />
RAM 256MB<br />
Alamat IP: 192.168.1.1<br />
Microsoft Advance Server 2000<br />
Processor Pentium III/733MHz<br />
RAM 512MB<br />
Alamat IP: 192.168.1.254<br />
Instalasi dan konfigurasi<br />
Gnomemeeting<br />
Untuk melakukan instalasi<br />
Gnomemeeting, Anda harus memastikan<br />
bahwa prgram ini sudah terpasang, pada<br />
saat Anda melakukan instalasi sistem<br />
Linux pada PC Anda. Untuk<br />
memastikannya, Anda bisa mengetikkan<br />
perintah berikut ini:<br />
masaji@path:~ > rpm -qa |grep meeting<br />
gnomemeeting-0.93-3mdk<br />
Instalasi Gnomemeeting<br />
Jika belum melakukan instalasi<br />
Gnomemeeting, Anda bisa melakukan<br />
kompilasi <strong>dengan</strong> menggunakan paket<br />
source atau rpm yang tersedia di CD<br />
www.infolinux.web.id<br />
Tutorial Gnomemeeting<br />
Tutorial GTK<br />
InfoLINUX April 2003. Adapun<br />
kebutuhan program Gnomemeeting,<br />
antara lain sebagai berikut:<br />
File library yang dibutuhkan:<br />
1. openh323 >= 1.8.0-2<br />
2. pwlib<br />
3. libopenh323.so.1<br />
4. libpt.so.1<br />
Untuk aplikasi Gnomemeeting, kami<br />
menggunakan program versi berikut:<br />
gnomemeeting-0.93-3mdk.i586.rpm<br />
Jika file library yang dibutuhkan<br />
sudah terpasang pada sistem Anda,<br />
selanjutnya Anda bisa melakukan<br />
langkah-langkah kompilasi sebagai<br />
berikut:<br />
1 . Pada konsol, lakukan login sebagai<br />
root<br />
login: root<br />
Password: password (ganti <strong>dengan</strong> pasword<br />
Anda)<br />
Anda juga bisa menjadi root, pada<br />
saat Anda login sebagai user biasa atau<br />
pada waktu menggunakan X Window,<br />
<strong>dengan</strong> mengetikkan sintaks perintah<br />
pada konsol sebagai berikut:<br />
[user@localhost:~] $ su -l root<br />
Password: (isi <strong>dengan</strong> password root Anda)<br />
2. Pindah direktori<br />
Selanjutnya Anda bisa pindah ke<br />
direktori, di mana Gnomemeeting berada.<br />
Misalkan file tersebut berada pada<br />
direktori /mnt/cdrom/Mandrake/RPMS2/.<br />
Anda bisa mengetikkan perintah berikut<br />
ini:<br />
[root@localhost:~] # cd /mnt/cdrom/<br />
Mandrake/RPMS2/<br />
3. Instalasi Gnomemeeting<br />
Selanjutnya, Anda bisa mengetikkan<br />
perintah berikut ini:<br />
[root@localhost:RPMS2] # rpm -ivh<br />
gnomemeeting-0.93-3mdk.i586.rpm<br />
gnomemeeting<br />
#############################<br />
#############################<br />
Konfigurasi Gnomemeeting<br />
Selanjutnya, untuk melakukan<br />
konfigurasi Gnomemeeting, Anda bisa<br />
menjalankan langkah-langkah konfigurasi<br />
INFOLINUX MEI 2003<br />
69
Tutorial GTK Gnomemeeting<br />
Gnomemeeting sebagai berikut:<br />
1 . Untuk menjalankan Gnomemeeting,<br />
caranya sederhana. Pada konsol,<br />
Anda bisa mengetikkan perintah<br />
berikut ini:<br />
[masaji@localhost:~] $ gnomemeeting &<br />
Selanjutnya akan tampak tampilan<br />
gambar seperti Gambar 2.<br />
Gambar tersebut merupakan jendela<br />
konfigurasi Gnomemeeting, jika Anda<br />
baru kali pertama menjalankan<br />
program tersebut. Tekan tombol [OK]<br />
untuk pindah ke jendela konfigurasi<br />
berikutnya.<br />
2 . Selanjutnya, Anda akan melihat<br />
tampilan selamat datang dari<br />
GnomeMeeting Configuration<br />
Assistant, seperti tampak pada<br />
Gambar 3.<br />
<br />
Tekan tombol [Forward] untuk masuk<br />
pada jendela konfigurasi selanjutnya.<br />
3 . Selanjutnya, Anda bisa mengisikan:<br />
nama, alamat e-mail, lokasi, dan<br />
komentar. Anda juga bisa mencentang<br />
() pada bagian Do not register me to<br />
the GnomeMeeting ILS directory, jika<br />
Anda tidak ingin mendaftarkan diri<br />
pada GnomeMeeting ILS directory.<br />
Selengkapnya, Anda bisa melihat<br />
pada Gambar 4.<br />
Tekan tombol [Forward] untuk masuk<br />
pada jendela konfigurasi selanjutnya.<br />
4 . Pada jendela selanjutnya, Anda akan<br />
mendapatkan pilihan koneksi jaringan,<br />
apakah Anda akan menggunakan<br />
70 INFOLINUX MEI 2003<br />
Gambar 2.<br />
Jendela awal<br />
konfigurasi<br />
Gnomemeeting<br />
Gambar 3. Bantuan pertama<br />
konfigurasi Gnomemeeting<br />
<br />
jaringan internet, seperti: modem,<br />
ADSL, ISDN atau jaringan intranet,<br />
menggunakan LAN serta Anda atur<br />
sendiri (custom).<br />
Jika PC Anda merupakan PC Desktop,<br />
yang tidak terhubung ke jaringan lain<br />
selain internet, Anda bisa<br />
menggunakan modem dial-up<br />
maupun ISDN atau ADSL. Namun jika<br />
PC Anda terhubung ke server, Anda<br />
bisa memilih penggunaan TI/LAN.<br />
Lihat Gambar 5.<br />
<br />
Gambar 4. Bantuan kedua<br />
mengisi data pribadi<br />
Gambar 5. Bantuan ketiga<br />
memilih jenis koneksi<br />
Pada gambar di atas, tampak secara<br />
default menggunakan jaringan<br />
modem. Klik tombol [Forward] untuk<br />
melanjutkan ke jendela selanjutnya.<br />
5 . Sampai di sini konfigurasi<br />
Gnomemeeting sudah selesai, seperti<br />
diperlihatkan pada Gambar 6.<br />
Menjalankan<br />
Gnomemeeting<br />
Untuk menjalankan Gnomemeeting ada<br />
dua cara, antara lain sebagai berikut:<br />
1 . Pada X Window, Anda bisa membuka<br />
konsol, kemudian menjalankan<br />
program Gnomemeeting <strong>dengan</strong><br />
mengetikkan perintah sebagai berikut:<br />
[masaji@localhost:~] $ gnomemeeting &<br />
www.infolinux.web.id<br />
2. Jika menggunakan Linux Mandrake<br />
9.0 dan KDE, Anda bisa menjalankan<br />
Gnomemeeting <strong>dengan</strong><br />
mengklik pada bagian: K Menu -<br />
Networking - Other - Gnomemeeting.<br />
Seperti yang diperlihatkan pada<br />
Gambar 7.<br />
<br />
<br />
Gambar 6. Konfigurasi selesai<br />
Gambar 7. Mencari menu<br />
menjalankan Gnomemeeting<br />
Setelah Gnomemeeting berjalan,<br />
tampilannya dapat Anda lihat seperti<br />
Gambar 8.<br />
Setelah Gnomemeeting berjalan, Anda<br />
bisa memulai <strong>dengan</strong> mengisikan nomor<br />
IP yang dapat Anda panggil atau <strong>dengan</strong><br />
cara mencari pada tombol ILS, yang<br />
<br />
<br />
Gambar 8.<br />
Tampilan<br />
Gnomemeeting<br />
Gambar 9.<br />
Mengontak<br />
teman <strong>dengan</strong><br />
Alamat IP
terletak pada tombol sebelah kiri atas<br />
pada gambar di atas.<br />
Pada contoh ini, kami langsung<br />
melakukan panggilan <strong>dengan</strong> mengisikan<br />
nomor IP tujuan, dilanjutkan <strong>dengan</strong><br />
menekan tombol [Enter] atau mengklik<br />
menu: Call - Connect, seperti<br />
diperlihatkan pada Gambar 9.<br />
Anda juga bisa melakukan sambungan,<br />
<strong>dengan</strong> mengklik pada tombol bergambar<br />
kabel pada bagian atas sebelah kanan<br />
pada gambar tersebut di atas.<br />
Pada PC Windows 2000 Advance<br />
Server, jika Microsoft Netmeeting dijalankan,<br />
akan tampak adanya jendela konfirmasi<br />
penerimaan, seperti Gambar 10.<br />
<br />
Gambar 10. MS Windows Netmeeting<br />
Jika konfirmasi Anda terima, maka<br />
selanjutnya akan tampak daftar user yang<br />
sedang online pada PC Windows <strong>dengan</strong><br />
user Anan akan menerima user Kresno<br />
Aji dari PC Linux.<br />
Pada Gambar 11 dan 12, diperlihatkan<br />
posisi masing-masing, baik pada PC<br />
Windows maupun pada PC Linux,<br />
kondisi user yang sedang online. Pada<br />
Gnomemeeting, Anda bisa melakukan<br />
chatting <strong>dengan</strong> menekan tombol<br />
bertuliskan Hi, yang terletak pada posisi<br />
sebelah kiri atas pada gnomemeeting.<br />
Untuk pengaturan suara dan<br />
penggunaan mikrofon, Anda bisa<br />
<br />
Gambar 11. Gnomemeeting<br />
berkomunikasi <strong>dengan</strong><br />
Netmeeting<br />
<br />
Gambar 12. Netmeeting<br />
berkomunikasi <strong>dengan</strong><br />
Gnomemeeting<br />
menekan tombol bergambar speaker<br />
beserta tombol bergambar pegangan<br />
pintu di bawahnya. Untuk penggunaan<br />
web camera, Anda tinggal menekan<br />
tombol bergambar kamera di sebelah kiri.<br />
Anda bisa menggunakan kamera USB<br />
yang banyak beredar saat ini.<br />
Cara penggunaan VoIP<br />
Merdeka<br />
Untuk menggunakan jaringan VoIP<br />
Merdeka, komputer harus terhubung ke<br />
Internet, baik menggunakan WaveLAN<br />
maupun modem telpon biasa. Komputer<br />
juga harus memiliki sound card, mikrofon,<br />
headphone (peralatan ini sebaiknya<br />
digunakan karena lebih baik dari speaker<br />
eksternal dalam mengatasi feedback).<br />
Ikuti langkah-langkah seperti berikut ini:<br />
1 . Setelah tampil jendela Gnome-<br />
Meeting, klik pada bagian Edit -<br />
Preferences (Gambar 13). Klik pada<br />
bagian Directory Settings.<br />
2 . Pada tab Gatekeeper, bagian Registering<br />
Method, pilih Gatekeeper host. Isi<br />
alamat IP Gatekeeper yang akan Anda<br />
akses, seperti diperlihatkan pada<br />
Gambar 14.<br />
3 . Setelah di-close, Gnomemeeting akan<br />
mencari Gatekeeper untuk melakukan<br />
registrasi via Internet.<br />
4 . Untuk melakukan pembicaraan<br />
<strong>dengan</strong> relasi maupun saudara Anda,<br />
pada kolom berisi callto://. Anda bisa<br />
tes <strong>dengan</strong> mengetikkan alamat IP<br />
seperti di bawah ini:<br />
202.148.53.18<br />
Selanjutnya tekan tombol bergambar<br />
kabel.<br />
www.infolinux.web.id<br />
Tutorial Gnomemeeting<br />
Tutorial GTK<br />
5 . Setelah tersambung kepada<br />
Gatekeeper, Anda bisa melakukan<br />
sambungan ke rekan maupun famili<br />
Anda yang menggunakan jaringan<br />
VoIP Merdeka, <strong>dengan</strong> mengetikkan<br />
nomor seperti tersebut di bawah ini:<br />
0111 a xxxxxxxx<br />
Keterangan:<br />
0111: merupakan nomor Gatekeeper<br />
(IIX) yang harus Anda tuliskan <strong>dengan</strong><br />
benar.<br />
huruf n merupakan kode area sesuai<br />
<strong>dengan</strong> nomor tujuan Anda.<br />
xxxxxxxx merupakan nomor dari<br />
rekan/famili Anda yang tersambung ke<br />
VoIP Merdeka.<br />
<br />
<br />
Gambar 13. Edit Preferences<br />
Gnomemeeting<br />
Gambar 14. Setting untuk akses<br />
Gatekeeper<br />
Misalnya, Anda ingin melakukan<br />
hubungan denga rekan Anda di<br />
Denpasar-Bali yang tersambung ke VoIP<br />
Merdeka <strong>dengan</strong> nomor area 0361 dan<br />
nomor telponnya adalah 1234567.<br />
Anda bisa menuliskan sebagai berikut:<br />
0111 361 1234567<br />
Untuk lebih jelasnya bagaimana<br />
penomoran telepon VoIP Merdeka, lihat<br />
www.voipmerdeka.net. Nah, selamat<br />
mencoba!<br />
R. Kresno Aji (masaji@ai.co.id)<br />
INFOLINUX MEI 2003<br />
71
Tutorial SSH GTK<br />
SSH:<br />
Meningkatkan<br />
Keamanan<br />
Remote Login<br />
Sekarang bukan lagi era telnet, karena sangat tidak aman.<br />
Informasi yang Anda ketik ketika telnet dapat dicuri <strong>dengan</strong><br />
mudah. Tiba saatnya Anda beralih ke ssh.<br />
Fasilitas remote login yang<br />
memungkinkan user suatu sistem<br />
untuk menjalankan perintah dari<br />
jarak jauh, telah berkembang dari waktu<br />
ke waktu. Di satu sisi fasilitas ini<br />
memberikan keuntungan bagi user,<br />
karena tidak lagi harus dibatasi oleh<br />
lokasi, namun di sisi lain fasilitas ini<br />
membuka celah bagi tangan-tangan jahil<br />
untuk mengacaukan sistem.<br />
Sejak penggunaan telnet sebagai<br />
program remote login ditinggalkan,<br />
secara de facto ssh merupakan program<br />
remote login yang paling banyak<br />
digunakan, karena ssh yang relatif lebih<br />
aman dibanding <strong>dengan</strong> metode lainnya.<br />
Namun demikian, bukan berarti ssh<br />
menjamin sepenuhnya tidak akan terjadi<br />
penyusupan. Oleh karena itulah, tulisan<br />
ini dibuat untuk lebih meningkatkan<br />
keamanan remote login menggunakan<br />
ssh.<br />
Tulisan ini mengasumsikan pembaca<br />
sudah terbiasa paling tidak menggunakan<br />
ssh client untuk melakukan sesi remote<br />
login. Bagi pembaca yang belum terbiasa<br />
menggunakan ssh client, silahkan<br />
berkonsultasi <strong>dengan</strong> manual page<br />
ssh(1).<br />
SSH<br />
SSH (ssh client) adalah program yang<br />
digunakan “logging” ke suatu mesin lain.<br />
Dengan SSH, user dapat meng-eksekusi<br />
perintah-perintah yang tersedia di mesin<br />
lain tersebut. SSH ditujukan sebagai<br />
pengganti rlogin dan rsh, untuk<br />
menyediakan komunikasi yang aman dan<br />
72 INFOLINUX MEI 2003<br />
terenkripsi antara dua host menggunakan<br />
jaringan yang seperti kita tahu tidak<br />
aman.<br />
Seperti yang disebutkan sebelumnya,<br />
di sini terjadi interaksi antara dua<br />
“untrusted” host. Salah satu dari kedua<br />
untrusted host tersebut bertindak sebagai<br />
“SSH server host”, sedangkan yang<br />
lainnya sebagai “SSH client host”. SSH<br />
server host menjalankan sebuah program<br />
daemon yang bernama sshd untuk<br />
memberi layanan logging, sedangkan<br />
SSH client host menggunakan program<br />
SSH client (selanjutnya hanya akan<br />
digunakan ssh untuk menyebut SSH<br />
client) untuk mengakses sshd.<br />
Kedua ssh dan sshd, pada distrubusi<br />
UNIX like seperti BSD dan GNU/Linux<br />
hampir dipastikan telah tersedia pada<br />
instalasi standar. Pada BSD dan GNU/<br />
Linux, distribusi paket ssh biasanya<br />
menggunakan OpenSSH. Begitu pula<br />
pada tulisan ini, mengasumsikan Anda<br />
menggunakan OpenSSH sebagai paket<br />
penyedia ssh dan sshd.<br />
OpenSSH<br />
OpenSSH yang merupakan software<br />
FREE hasil kerja tim OpenBSD memiliki<br />
fasilitas yang tidak kalah bagusnya<br />
dibandingkan <strong>dengan</strong> produk komersial<br />
yang serupa. Pada kenyataannya, secara<br />
de facto, OpenSSH menjadi standar<br />
fasilitas “remote login” pada sebagian<br />
besar OS UNIX like. Sebut saja,<br />
OpenBSD dan FreeBSD serta semua<br />
distribusi GNU/Linux, semuanya<br />
menggunakan OpenSSH. OpenSSH<br />
www.infolinux.web.id<br />
menyediakan dukungan kedua protokol<br />
SSH versi 1 dan versi 2 sebagai media<br />
komunikasi aman dan terenkripsi yang<br />
terjadi antara ssh dan sshd.<br />
Tulisan ini tidak akan membahas<br />
secara mendalam mengenai protokol<br />
SSH versi 1 dan versi 2. Tulisan ini juga<br />
tidak akan menjelaskan cara instalasi<br />
OpenSSH. Bagi Anda yang ingin<br />
mengetahui lebih jauh mengenai<br />
spesifikasi Protokol SSH silakan<br />
berkonsultasi <strong>dengan</strong> manual page<br />
ssh(1) dan sshd(8). Begitu pula bagi<br />
Anda yang tertimpa nahas tidak memiliki<br />
instalasi OpenSSH pada sistem, silakan<br />
berkonsultasi <strong>dengan</strong> file INSTALL dan<br />
README yang tersedia bersama <strong>dengan</strong><br />
distribusi source code OpenSSH.<br />
Konfigurasi sshd<br />
Langkah pertama mengamankan<br />
komunikasi ssh antardua host adalah<br />
<strong>dengan</strong> melakukan pengetatan pada sisi<br />
sshd. Konfigurasi standar sshd pada<br />
kebanyakan distribusi biasanya belum<br />
optimal dalam hal pemanfaatan fasilitas<br />
keamanan yang mampu diberikan oleh<br />
OpenSSH.<br />
Konfigurasi sshd tersimpan dalam file<br />
/etc/ssh/sshd_config. Perilaku sshd akan<br />
mengikuti definisi yang dibuat di dalam<br />
file tersebut. Anda bisa memerintahkan<br />
sshd untuk berperilaku berbeda <strong>dengan</strong><br />
memberikan parameter tambahan pada<br />
command line saat menjalankan sshd.<br />
Setelah melakukan perubahan pada<br />
file konfigurasi, hendaknya Anda<br />
mengirimkan sinyal SIGHUP kepada sshd<br />
agar ia membaca kembali file konfigurasi<br />
dan memberikan efek atas perubahan<br />
yang dibuat. Jalan alternatif untuk<br />
memerintahkan sshd untuk membaca<br />
ulang file konfigurasi adalah <strong>dengan</strong> cara<br />
me-restart daemon itu. Hampir dipastikan<br />
pada distribusi GNU/Linux atau BSD<br />
menyertakan script yang akan<br />
mempermudah proses restart ini,<br />
periksalah direktori script ini distribusi OS<br />
Anda, biasanya di /etc/init.d.<br />
Berikut ini beberapa kata kunci<br />
konfigurasi sshd yang akan disesuaikan.<br />
Kata kunci konfigurasi ini bukanlah daftar<br />
lengkap, melainkan hanya beberapa<br />
bagian saja yang dianggap perlu
disesuaikan dalam rangka langkah<br />
pengamanan. Daftar lengkap konfigurasi<br />
sshd dapat Anda temui di manual page<br />
sshd_config(5).<br />
AllowGroups<br />
Kata kunci ini dapat diikuti <strong>dengan</strong><br />
sebuah daftar pattern nama group. Setiap<br />
pattern nama group, jika lebih dari satu,<br />
dipisahkan oleh spasi. Jika disebutkan,<br />
maka user yang diperbolehkan login<br />
adalah user yang termasuk dalam group<br />
yang disebutkan pada kata kunci ini.<br />
Penggunaan wildcards “*” dan “?”<br />
diperbolehkan dan hanya nama group<br />
yang dapat dipergunakan, group ID<br />
numerik tidak dikenal di sini.<br />
Contoh berikut ini mengakibatkan<br />
hanya user-user yang termasuk dalam<br />
group “wheel” saja yang bisa melakukan<br />
remote login.<br />
AllowGroups wheel<br />
AllowUsers<br />
Kata kunci ini memberikan efek yang<br />
mirip <strong>dengan</strong> efek AllowGroups, hanya<br />
saja kata kunci ini berlaku untuk pattern<br />
nama user.<br />
AllowUsers shiro henry salman yanofsky rojul<br />
Baris di atas mengindikasikan hanya<br />
user-user shiro, henry, salman, yanofski,<br />
dan rojul yang diperkenankan untuk<br />
melakukan remote login. Jika pattern user<br />
diberikan dalam format USER@HOST,<br />
maka USER dan HOST diperiksa secara<br />
terpisah untuk membatasi USER supaya<br />
hanya melakukan remote login dari HOST<br />
saja. Contoh berikut membatasi agar user<br />
henry hanya melakukan remote login dari<br />
host boypyt.nurulfikri.co.id.<br />
AllowUsers henry@boypyt.nurulfikri.co.id<br />
DenyGroups<br />
Kata kunci ini kebalikan dari Allow-<br />
Groups. Gunakan kata kunci ini jika<br />
jumlah group yang tidak diizinkan<br />
melakukan remote login lebih sedikit<br />
dibanding jumlah group yang diizinkan,<br />
jika sebaliknya, maka gunakan<br />
AllowGroups. Hal ini bukan keharusan,<br />
melainkan hanya untuk kemudahan saja.<br />
Bayangkan jiga ada 99 group yang<br />
dimaksudkan untuk tidak diizinkan<br />
remote login dan hanya 1 group yang<br />
diizinkan. Suatu hal yang masuk akal jika<br />
anda menggunakan AllowGroups, karena<br />
Anda hanya perlu menyebutkan satu<br />
pattern group saja. Bandingkan jika Anda<br />
menggunakan DenyGroups pada kasus<br />
ini, di mana anda harus menyebutkan 99<br />
pattern group.<br />
DenyUsers<br />
Mirip <strong>dengan</strong> DenyGroups, DenyUsers<br />
ini kebalikan dari AllowUsers. Trik<br />
penggunaannya pun serupa <strong>dengan</strong> kata<br />
kunci DenyGroups.<br />
ClientAliveInterval<br />
Jika dalam waktu yang cukup lama Anda<br />
meninggalkan console remote Anda<br />
tanpa ada aktivitas, sshd akan tetap<br />
mempertahankan koneksi agar tetap<br />
terjalin. Hal ini merupakan risiko<br />
keamanan tersendiri bisa pada saat itu<br />
ada orang jahil yang memanfaatkan<br />
kelengahan Anda. Oleh karena itu, Anda<br />
perlu memberi waktu pada sshd agar<br />
mengirimkan pesan untuk meminta<br />
respon jika tidak menerima paket data<br />
dari ssh pada interval tertentu.<br />
Berikan interval waktu dalam detik<br />
pada kata kunci ClientAliveInterval agar<br />
sshd mengirim “Alive Message” jika<br />
terjadi idle. Jika anda memberikan<br />
interval 0, maka sshd tidak akan pernah<br />
mengirim alive message.<br />
ClientAliveInterval 60<br />
ClientAliveCountMax<br />
Kata kunci ini menyebutkan jumlah<br />
maksimum alive message boleh dikirim<br />
oleh sshd tanpa mendapat respon. Jika<br />
jumlah ini tercapai dan tetap tidak ada<br />
respon dari client, sshd akan memutuskan<br />
koneksi yang terjadi <strong>dengan</strong> client.<br />
ClientAliveContMax 5<br />
Alive message yang dikirim oleh sshd<br />
menggunakan kanal terenkripsi. Oleh<br />
karena itu, jaminan tidak terjadinya<br />
“spoof” terhadap pesan ini bisa<br />
diandalkan.<br />
LoginGraceTime<br />
Kata kunci ini menyebutkan waktu dalam<br />
detik di mana sshd akan memutuskan<br />
www.infolinux.web.id<br />
Tutorial SSH GTK<br />
hubungan pada saat user gagal<br />
melakukan otentikasi. Memperkecil waktu<br />
default (600) mungkin akan<br />
meningkatkan keamaan, maka perkecil<br />
waktu default konfigurasi ini.<br />
LoginGraceTime 300<br />
MaxStartups<br />
Kata kunci ini memberi nilai maksimum<br />
koneksi yang gagal terotentikasi pada<br />
“waktu yang sama”. Penggunaan<br />
“waktu yang sama” mungkin kurang<br />
tepat. Untuk menghindari kesalahpahaman,<br />
istilah “concurrent” lebih tepat<br />
untuk digunakan.<br />
Selanjutnya, bila ada percobaan<br />
koneksi lain, maka koneksi itu di “drop”<br />
oleh sshd sampai koneksi itu berhasil diauthentikasi<br />
atau LoginGraceTime<br />
terlampaui. Secara default, nilai<br />
MaxStartups adalah 10. Perkecil nilai ini<br />
untuk memperkecil peluang keberhasilan<br />
“brute attack”.<br />
MaxStartups 5<br />
PasswordAuthentication<br />
Bila kata kunci ini diberi nilai “yes”, maka<br />
metode otentikasi menggunakan<br />
password akan diperbolehkan. Otentikasi<br />
menggunakan password adalah yang<br />
paling umum digunakan. Namun<br />
demikian, penggunaan metode ini<br />
menurut penulis memberikan peluang<br />
untuk terjadinya “brute attack”.<br />
Meskipun brute attack sudah diantisipasi<br />
<strong>dengan</strong> LoginGraceTime dan Max-<br />
Startups, ada baiknya metode otentikasi<br />
password benar-benar ditiadakan.<br />
Sebagai pengganti otentikasi password,<br />
digunakan metode “Key Authentication”.<br />
Metode ini cenderung lebih<br />
aman, karena menggunakan sepasang key<br />
yang dibuat secara acak. Password dapat<br />
digunakan untuk mencegah key<br />
digunakan oleh orang yang tidak berhak.<br />
Perlu Anda perhatikan, bahwa password<br />
yang digunakan oleh key dan sshd (yang<br />
diperbolehkan oleh Password-<br />
Authentication) adalah berbeda. Password<br />
yang digunakan oleh key adalah untuk<br />
memeriksa apakah key tersebut digunakan<br />
oleh orang yang berhak. Jika key berhasil<br />
diverifikasi, selanjutnya sshd akan<br />
menggunakan key tersebut untuk meng<br />
INFOLINUX MEI 2003<br />
73
Tutorial SSH GTK<br />
koneksi. Sedangkan jika menggunakan<br />
otentikasi password, sudah tidak<br />
memperhatikan key, asalkan seseorang<br />
berhasil memasukkan password yang<br />
benar, maka sshd akan mengotentikasi<br />
koneksi. Di sini terlihat <strong>dengan</strong> jelas<br />
peningkatan keamanan <strong>dengan</strong><br />
menggunakan Key Authentication.<br />
Mengenai key yang akan digunakan<br />
pada prosedur otentikasi akan dibahas<br />
pada bagian lain tulisan ini.<br />
PasswordAuthentication no<br />
PermitRootLogin<br />
Kata kunci ini sebaiknya diberi nilai “no”<br />
untuk mencegah login secara langsung<br />
menggunakan account “root”. Hal ini<br />
semata-mata untuk mempersulit<br />
percobaan mengambil alih kendali sistem.<br />
PermitRootLogin no<br />
Dengan demikian, setiap sesi login<br />
harus didahului <strong>dengan</strong> otentikasi<br />
sebagai user biasa. Barulah kemudian<br />
user yang berhasil diotentikasi otentikasi<br />
boleh mengubah previlege-nya ke “root”.<br />
PubkeyAuthentication<br />
Memberi nilai “yes” pada kata kunci ini,<br />
berarti memperbolehkan otentikasi<br />
menggunakan key. Pada kata kunci<br />
sebelumnya, PasswordAuthentication<br />
sudah dicegah, oleh karena itulah kata<br />
kunci ini seharusnya diperbolehkan.<br />
PubkeyAuthentication yes<br />
Kata kunci lain yang tidak disebutkan<br />
di sini, seperti yang telah diutarakan<br />
sebelumnya, dijelaskan secara detail di<br />
manual page sshd_config(5). Kata kuncikata<br />
kunci itu (yang tidak disebutkan di<br />
sini), adalah kata kunci yang menurut<br />
pandangan penulis tidak memberikan<br />
efek signifikan untuk keamanan atau<br />
memiliki nilai default yang cukup aman,<br />
sehingga tidak perlu lagi dilakukan<br />
modifikasi padanya.<br />
Aktivasi efek konfigurasi<br />
Setelah melakukan perubahan<br />
konfigurasi, agar memberikan efek pada<br />
sshd, selanjutnya Anda perlu<br />
memberikan sinyal SIGHUP kepada sshd.<br />
Identifikasilah pid sshd lalu kirim sinyal<br />
74 INFOLINUX MEI 2003<br />
ke sana. Berikut ini langkah-langkah<br />
pengiriman sinyalnya:<br />
# kill -HUP ‘cat /var/run/sshd.pid‘<br />
Perhatikan: yang digunakan adalah<br />
tanda “ ` “ (backtick) bukan “ ‘ “ (single<br />
quote).<br />
Jika di sistem Anda tersedia script<br />
sshd, maka Anda bisa juga<br />
menggunakan script itu untuk me-restart<br />
sshd tanpa harus mengirim sinyal<br />
SIGHUP supaya sshd kembali membaca<br />
file konfigurasi. Berikut ini penggunaan<br />
script init sshd di distribusi GNU/Linux<br />
SuSE, RedHat dan Mandrake.<br />
SuSE, RedHat, dan Mandrake:<br />
# /etc/init.d/sshd restart<br />
atau hanya di SuSE:<br />
# rcsshd restart<br />
atau hanya di Mandrake:<br />
# service sshd restart<br />
Authentication Key<br />
Secara keseluruhan, perubahan yang<br />
dilakukan pada perilaku sshd (modifikasi<br />
sshd_config) mengakibatkan satu<br />
penyesuaian prosedur koneksi dilihat dari<br />
sisi client. Penyesuaian tersebut adalah<br />
pada metode otentikasi. Dengan<br />
perubahan di sisi sshd, maka client tidak<br />
lagi diberikan peluang untuk melakukan<br />
otentikasi menggunakan password, client<br />
hanya diberi peluang untuk<br />
mengotentikasikan dirinya <strong>dengan</strong><br />
menggunakan “Authentication Key” atau<br />
Kunci Authentikasi.<br />
Paling tidak, setiap user yang ingin<br />
melakukan remote login ke server, harus<br />
memiliki dua kunci. Kunci tersebut adalah<br />
“Private Key” dan “Public Key”. Private<br />
key adalah kunci pribadi yang harus dijaga<br />
oleh setiap user. Kunci tersebut tidak<br />
boleh jatuh ke tangan orang lain. Izin<br />
baca-tulis-eksekusi untuk “group” dan<br />
“other” pada kunci ini harus ditiadakan.<br />
Kunci ini adalah identitas pribadi yang<br />
digunakan oleh sshd untuk melakukan<br />
authentikasi dan memutuskan untuk<br />
memperbolehkan atau tidak memperbolehkan<br />
sesi login user. Sedangkan<br />
public key adalah kunci pasangan private<br />
key. Public key ini akan disimpan di sisi<br />
sshd dan boleh dibaca secara global.<br />
www.infolinux.web.id<br />
Membuat Private/Public Key<br />
Sekarang saatnya untuk membuat kedua<br />
kunci yang dibutuhkan tersebut.<br />
Gunakan ssh-keygen untuk membuat<br />
Authentication Key yang akan digunakan<br />
bersama ssh(1).<br />
$ ssh-keygen -t dsa<br />
Option -t diperlukan untuk mendefinisikan<br />
metode enkrip yang akan digunakan<br />
pada key-pair (public/private key) yang<br />
akan dibuat. Anda bisa memilih dsa atau<br />
rsa sebagai metode enkrip key-pair.<br />
Selanjutnya Anda diminta memutuskan<br />
tempat di mana key akan disimpan. Tekan<br />
saja ENTER jika key hendak disimpan di<br />
tempat default ~/.ssh/id_dsa<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Anda diminta untuk memberi password<br />
untuk key yang akan di-generate<br />
sebanyak dua kali (yang terakhir<br />
digunakan untuk meyakinkan password<br />
yang dimaksud sesuai <strong>dengan</strong> keinginan<br />
Anda). Seperti yang dijelaskan sebelumnya,<br />
password ini akan digunakan untuk<br />
memastikan pengguna key ini adalah<br />
yang berhak menggunakannya.<br />
Proses generate key-pair memakan<br />
waktu tidak terlalu lama, walaupun<br />
tergantung pada kecepatan prosesor<br />
mesin Anda. Setelah proses selesai keypair<br />
akan tersimpan di dalam direktori ~/<br />
.ssh sebagai ~./ssh/id_dsa untuk private<br />
key dan ~/.ssh/id_dsa.pub untuk public<br />
key.<br />
Menyelenggarakan koneksi SSH<br />
lebih aman<br />
UNIX Client<br />
Dengan memiliki key-pair, user sudah<br />
dapat melakukan koneksi yang aman ke<br />
sshd. Pada saat client memulai koneksi,<br />
sshd (server) akan memeriksa daftar<br />
public key yang diperbolehkan untuk<br />
login. Daftar tersebut diambil dari file ~./<br />
ssh/authorized_keys. Oleh karena itulah,<br />
public key yang dimiliki user harus<br />
masuk dalam daftar itu. Di mesin server,<br />
tambahkan isi id_dsa.pub ke dalam file<br />
~/.ssh/authorized_keys.<br />
$ cat id_dsa.pub > ~/.ssh/<br />
authorized_key
jika hanya satu public key yang<br />
diperbolehkan, atau gunakan double<br />
redirection “>>” jika ingin ada lebih dari<br />
satu public key dalam daftar tersebut<br />
untuk memasukkan public key lainnya.<br />
Jika public key teridentifikasi sebagai<br />
key yang diperbolehkan login, server akan<br />
memberikan tantangan berupa nomor acak<br />
kepada client yang mencoba login. Nomor<br />
acak tersebut dienkripsi menggunakan<br />
public key user bersangkutan. Tantangan<br />
nomor acak itu hanya bisa didekripsi<br />
<strong>dengan</strong> menggunakan private key<br />
pasangan yang tepat, yaitu private key<br />
yang dimiliki user. Private key ini menggunakan<br />
id_dsa yang terdapat di dalam file<br />
~/.ssh/identity. Tambahkan isi id_dsa ke<br />
dalam file ~/.ssh/identity di host client,<br />
agar ssh client dapat menjawab tantangan<br />
nomor acak <strong>dengan</strong> tepat.<br />
$ cat id_dsa > ~/.ssh/identity<br />
Windows Client<br />
Untuk user yang akan menyelenggarakan<br />
koneksi ssh menggunakan Windows<br />
sebagai clientnya, biasa nya menggunakan<br />
PuTTY sebagai program ssh client.<br />
PuTTY bisa di-download secara gratis dari<br />
http://www.chiark.greenend.org.uk/<br />
sgtatham/putty/download.html. Jika<br />
Anda menggunakan PuTTY, maka jangan<br />
lupa untuk men-download juga<br />
PuTTYgen. PuTTY tidak mengenal<br />
authentication key yang dibuat OpenSSH<br />
secara langsung. Oleh karena itulah, key<br />
yang anda buat sebelumnya harus<br />
dikonversi dahulu ke dalam format yang<br />
dimengerti oleh PuTTY.<br />
Langkah-langkah konversi key dari<br />
format OpenSSH ke format putty adalah<br />
sebagai berikut:<br />
Pertama siapkan file yang berisi<br />
private key yang telah di-generate<br />
<br />
Gambar 1. PuTTY key-gen<br />
sebelumnya (id_dsa atau id_rsa) di salah<br />
satu folder windows. Setelah itu,<br />
jalankan PuTTYgen.<br />
Setelah tampil window PuTTYgen,<br />
pilihlah Convertions Import keys, lalu<br />
pilihlah Private key rsa atau dsa yang<br />
akan di konversi ke format PuTTY.<br />
Untuk membuka Private key Anda<br />
akan diminta memberikan password key,<br />
masukkan password yang digunakan<br />
saat pembuatan key tersebut.<br />
Setelah Anda berhasil memberikan<br />
password key, PuTTYgen akan<br />
melakukan konversi format tersebut ke<br />
format yang dikenal oleh PuTTY.<br />
Simpanlah hasil konversi tersebut. Untuk<br />
menyimpan hasil konversi tekan tombol<br />
“Save the generated key”, karena saat ini<br />
Anda meng-generate Private Key, maka<br />
pilih lah tombol “Save private key”.<br />
Hasil<br />
konversi yang<br />
dilakukan oleh<br />
PuTTYgen<br />
bisa Anda<br />
gunakan<br />
untuk<br />
Gambar 4. Save Key<br />
mengotentikasi<br />
koneksi ssh. Untuk Memulai sesi ssh,<br />
sekarang jalankan PuTTY, masukkan<br />
nama host atau IP address host tujuan<br />
login. Jangan lupa untuk memilih<br />
protokol ssh (port 22). Lalu dari menu<br />
pilihan PuTTY, yang terletak di sebelah<br />
kiri, pilihlah SSH Auth.<br />
Dari menu Authentikasi SSH PuTTY,<br />
bukalah Private key yang dihasilkan dari<br />
konversi oleh PuTTYgen sebelumnya.<br />
Lalu pilih Open untuk memulai<br />
koneksi. Kemudian Anda akan diminta<br />
untuk memasukkan nama user yang<br />
ingin digunakan dalam sesi login, serta<br />
kembali diminta untuk memasukkan<br />
<br />
<br />
Gambar 2.<br />
Import<br />
Keys<br />
<br />
Gambar 3.<br />
Key Password<br />
www.infolinux.web.id<br />
Tutorial SSH GTK<br />
password Private Key. Jika semua<br />
berjalan mulus, maka sesi ssh berhasil<br />
dilakukan oleh PuTTY, seperti berikut<br />
ini.<br />
login as: shiro<br />
Authentication with public key “importedopenssh-key”<br />
Passphrase for key “imported-openssh-key”:<br />
[shiro@aurum shiro]$<br />
<br />
<br />
Gambar 6.<br />
Auth Key<br />
PuTTY<br />
Gambar 7. Load<br />
Private Key<br />
<br />
Gambar 5.<br />
PuTTY<br />
Dengan<br />
pembatasan<br />
di sisi server<br />
(sshd) akan<br />
memaksa<br />
user di sisi<br />
client untuk<br />
menggunakan<br />
metode koneksi <strong>dengan</strong> lebih aman.<br />
Setelah mempersiapkan key-pair,<br />
selanjutnya koneksi ssh bisa dilakukan<br />
seperti biasa. Tidak ada perbedaan cara<br />
penggunaan ssh client <strong>dengan</strong><br />
perubahan ini, hanya saja di sini tidak<br />
lagi digunakan password user di sistem.<br />
Password yang ditanyakan pada awal<br />
koneksi adalah password yang<br />
digunakan pada saat membuat key-pair.<br />
Berikut ini ilustrasi percobaan login<br />
setelah langkah-langkah pengamanan.<br />
[shiro@aurum shiro]$ ssh 192.168.1.253<br />
Enter passphrase for key ’/home/shiro/<br />
.ssh/identity’:<br />
(masukkan password key-pair)<br />
[shiro@cobalt shiro]$<br />
Reza Iskandar Achmad<br />
(reza@chipset.or.id)<br />
INFOLINUX MEI 2003<br />
75
Tutorial GTK OpenMOSIX<br />
Clustering di Linux<br />
<strong>dengan</strong> OpenMOSIX<br />
Bagian 1 dari 3 Artikel<br />
Anda masih ingat film “Titanic” atau “Shrek”? Pembuatan filmfilm<br />
itu menggunakan komputer-komputer Linux yang dibangun<br />
sebagai sistem cluster. Clustering dapat menghasilkan sistem<br />
setara mainframe atau superkomputer <strong>dengan</strong> biaya rendah.<br />
Kalau Anda membaca istilah<br />
clustering, maka mungkin dalam<br />
benak Anda timbul 1001<br />
persepsi. Mungkin salah satunya, Anda<br />
mengaitkan <strong>dengan</strong> istilah cluster untuk<br />
satuan data di disk pada DOS. Lalu Anda<br />
mungkin berpikir lagi, “Hemm, kalau<br />
begitu, berarti ini kata kerja, tapi ini aneh<br />
juga, kan artinya jadi penyatuan data di<br />
disk?” Atau bisa juga kalau dikaitkan<br />
<strong>dengan</strong> istilah di ilmu data mining, cluster<br />
berarti penyatuan sekelompok data yang<br />
mempunyai korelasi atau karakteristik<br />
sejenis, tapi lagi-lagi, “Kok rada nggak<br />
nyambung ya?”<br />
Ok, semua konsep di atas sebenarnya<br />
membawa kita pada suatu kesamaan,<br />
bahwa ada konsep penyatuan. Lalu,<br />
apanya yang disatukan? Dalam hal ini<br />
karena konteks kita berbicara clustering di<br />
Linux, berarti kita menyatukan PC-PC atau<br />
server (atau apapun device yang ber-OS<br />
Linux) ke dalam satu kesatuan komputasi.<br />
Wah, terkesan seperti suatu hal yang sulit<br />
dimengerti dan sukar dibayangkan.<br />
Baiklah, kita mulai <strong>dengan</strong> suatu<br />
gambaran sederhana.<br />
Pada Gambar 1. terlihat ada suatu<br />
node (istilah yang menandakan suatu<br />
satuan pemroses dalam jaringan, misal<br />
PC) yang menjadi master, dan dibantu 8<br />
slave. Di antara master dan slave, ada<br />
konektor dua arah yang menandakan<br />
komunikasi. Lalu, <strong>dengan</strong> konfigurasi<br />
seperti apa yang bisa kita lakukan?<br />
Bukankah ini sama saja <strong>dengan</strong><br />
konfigurasi jaringan biasa <strong>dengan</strong> topologi<br />
star? Benar! Cluster pada dasarnya juga<br />
menggunakan jaringan, tapi yang menjadi<br />
ciri khususnya adalah bagaimana<br />
76 INFOLINUX MEI 2003<br />
konfigurasi ini digunakan untuk<br />
menyelesaikan problem, misal saya<br />
menulis suatu program C berikut ini<br />
(pseudo code):<br />
[Listing 1]<br />
#include <br />
int main(argumen pertama dan kedua<br />
menyatakan range angka)<br />
{<br />
x=0;<br />
if (argumen_pertama/tmp/hasil-2.txt &<br />
:<br />
:<br />
www.infolinux.web.id<br />
rsh [node_slave_h][user_a]/usr/bin/<br />
program_kuadrat 71 80>/tmp/hasil-8.txt &<br />
Loop untuk cek semua file hasil output sudah<br />
ada<br />
Tambahkan semua hasil output ke variabel<br />
TAMPUNG<br />
echo “Hasil Kuadrat : $TAMPUNG”<br />
Di Listing 2 ini, saya sengaja tidak<br />
memperinci kode program, sekadar untuk<br />
ilustrasi saja. Pada script ini, sebut saja<br />
script master, kita jalankan di node master<br />
yang nantinya membagi tugas<br />
penjumlahan ke node slave. Aha! Anda<br />
pasti berpikir, “Bagaimana cara saya<br />
membagi task ke slave node?” Sederhana,<br />
di sini peranan rsh dimainkan. Terlebih<br />
dahulu kita asumsikan program di Listing<br />
1 kita kompilasi menjadi (misalnya)<br />
program_kuadrat, lalu kita taruh di /usr/bin.<br />
Jangan lupa chmod +x dulu program ini.<br />
Baru kita jalankan rsh. Ini pun harus harus<br />
kita tambahkan di /etc/host.equiv masingmasing<br />
node sebagai berikut.<br />
[Listing 3]<br />
IP_master_node nama_user_untuk_<br />
eksekusi<br />
dst<br />
Jadi kalau misalnya Anda buat di<br />
semua node user <strong>dengan</strong> nama “test”<br />
(bisa juga Anda pakai NIS, tapi untuk<br />
sementara lupakan dulu, dan IP master<br />
node Anda 10.11.12.1, maka entry<br />
menjadi:<br />
10.11.12.1test<br />
Eksekusi secara lengkap sebagai berikut:<br />
$ su test<br />
# program_master
Dan voila, output akan keluar di<br />
konsol. Anda sudah bisa membayangkan<br />
proses clustering? Mungkin ilustrasi ini<br />
tidak sempurna, tapi saya harap bisa<br />
menjadi gambaran awal.<br />
Mungkin di sini timbul pertanyaan lagi<br />
“Kan tidak semua proses bisa diparalel<br />
seperti ini?” Kalau Anda berpikir begitu,<br />
berarti Anda cukup kritis. Memang secara<br />
umum, program paralel baru efektif jika:<br />
Problem yang dikerjakan bisa dibagibagi.<br />
Antara subproses satu <strong>dengan</strong> yang<br />
lainnya tidak bersifat batch, maksudnya<br />
saling menunggu satu sama lain, atau<br />
punya urutan yang pasti.<br />
Komunikasi yang dilakukan antar<br />
subproses tidak terlalu dominan<br />
dibanding komputasi.<br />
Kalau ini saya terjemahkan untuk<br />
permasalahan saya tadi, maka bisa<br />
diartikan sebagai berikut.<br />
Problem menghitung kuadrat 1 sampai<br />
<strong>dengan</strong> 80 saya bagi menjadi 8<br />
bagian, masing-masing 1-10, 11-20,<br />
dan seterusnya. sampai 71-80.<br />
Lalu, bagaimana satu sama lain tidak<br />
menunggu? Karena yang saya<br />
gunakan adalah script biasa, maka kita<br />
bisa akali <strong>dengan</strong> background proses.<br />
Solusi cepat dan efisien. Kernel Linux<br />
yang kita utilize jadi pengatur job. Lalu<br />
output-nya? Sederhana, kita cetak di<br />
suatu file teks!<br />
Nah, ini yang terakhir, proses<br />
penjumlahan. Bagaimana kita tahu<br />
suatu proses di node sudah selesai?<br />
Kita gunakan saja looping sambil cek IF<br />
EXIST dari file output tadi. Memang<br />
bukan yang tercanggih, tapi cukup<br />
memadai. Baru dari tiap isi file ini, kita<br />
jumlahkan isinya. Jadi komunikasi di<br />
sini contohnya adalah saat node slave<br />
mengirim hasil ke master.<br />
Sejauh ini, kita sudah melihat bahwa<br />
karakteristik utama clustering, yaitu<br />
bagaimana suatu task ditangani secara<br />
bersama-sama. Kata bersama-sama di sini<br />
yang membedakan cluster <strong>dengan</strong><br />
mekanisme jaringan biasa yang<br />
menjalankan program client server.<br />
Memang seringkali rancu <strong>dengan</strong><br />
Node Slave<br />
Node Slave<br />
Node Slave<br />
Distributed Computing, tapi mungkin bisa<br />
diperjelas lagi bahwa clustering<br />
difokuskan pada mekanisme dari OS dan<br />
hardware untuk menyatukan sumber daya<br />
setiap node (bisa CPU, memori, disk, dan<br />
sebagainya). Di atas cluster sendiri, kita<br />
bisa menjalankan berbagai aplikasi,<br />
walaupun yang mendominasi ada dua<br />
jenis, yang sekaligus menjadi tipe cluster,<br />
yaitu:<br />
1. High Perfomance Computing (HPC).<br />
Secara umum, tipe cluster HPC ditujukan<br />
pada bagaimana suatu proses komputasi<br />
diakselerasi, <strong>dengan</strong> demikian task bisa<br />
diselesaikan lebih cepat. Contoh yang<br />
penulis berikan di atas, bisa dianggap<br />
salah satu model cluster HPC yang paling<br />
sederhana<br />
2. High Availability (HA).<br />
Secara umum, tipe cluster ini ditujukan<br />
agar program yang dijalankan di atasnya<br />
bisa terus running, sekalipun salah satu<br />
node hang atau down. Contoh yang<br />
paling mudah adalah web server Apache<br />
yang diset <strong>dengan</strong> suatu redirector,<br />
sehingga jika salah satu server down,<br />
server lain bisa mengambil alih.<br />
“Hemm, berarti ada banyak tipe<br />
clustering, lalu OpenMOSIX termasuk<br />
yang mana?” Jawaban singkat, HPC!<br />
Namun sebelum kita memasuki<br />
pembahasan OpenMOSIX, kita lanjutkan<br />
sedikit sejarah clustering.<br />
Ide awal clustering adalah tantangan<br />
menciptakan kecepatan komputasi setara<br />
www.infolinux.web.id<br />
Tutorial Tutorial OpenMOSIX GTK<br />
Node Slave<br />
Node Master<br />
Node Slave<br />
Node Slave<br />
Node Slave<br />
Node Slave<br />
mainframe, namun <strong>dengan</strong> biaya yang<br />
rendah. Anda mungkin sedikit banyak<br />
tahu, bahwa harga mainframe, misal<br />
Cray, luar biasa mahalnya! Di era 70-an<br />
dan 80-an dimana mainframe (IBM AS/<br />
400 masuk kategori mainframe) cukup<br />
terkenal, hanya perusahaan-perusahaan<br />
bermodal besar yang sanggup<br />
membelinya. Biasanya, di lingkungan<br />
komersial, sering dipakai untuk sistem<br />
banking. Lalu timbul ide dari dua<br />
ilmuwan NASA pada tahun 1994 yaitu<br />
Dr. Donald Becker dan Dr. Ron Sterling<br />
untuk memulai suatu riset <strong>dengan</strong><br />
sebutan Beowulf.<br />
Riset ini lalu berhasil<br />
menggabungkan 16 PC 486 DX untuk<br />
melakukan komputasi paralel <strong>dengan</strong><br />
bantuan library paralel. Memang hasil<br />
flops (floating operation per second)-nya<br />
masih jauh di bawah mainframe, tapi ini<br />
merupakan awal yang baik. Istilah flops<br />
adalah satuan yang digunakan untuk<br />
mengukur kecepatan komputasi, dan ini<br />
diadopsi dalam clustering. Kenapa<br />
operasi floating point? Karena operasi<br />
floating point dinilai bisa memacu<br />
prosesor sampai titik maksimum. Jadi<br />
agak berbeda <strong>dengan</strong> kita menyebut<br />
prosesor, misal 166MHz, maka untuk<br />
istilah dalam clustering, kita pakai misal<br />
2 Mflops.<br />
Lalu Anda penasaran, “Apa saja sih<br />
komponen penyusun Beowulf?”<br />
Berdasarkan paper dan keterangan yang<br />
penulis himpun, komponen Beowulf<br />
adalah:<br />
INFOLINUX MEI 2003<br />
77
Tutorial GTK OpenMOSIX<br />
Hardware, dipakai sembarang PC<br />
<strong>dengan</strong> basis prosesor Intel. “Bisa<br />
nggak <strong>dengan</strong> tipe lain?” Bisa saja,<br />
tapi karena dianggap prosesor Intel<br />
yang terjangkau (mungkin ini<br />
alasannya Beowulf pertama memakai<br />
prosesor Inte), maka jadilah Intel<br />
yang dipakai.<br />
Network card, kabel UTP, dan hub<br />
atau switch. Peralatan standar<br />
jaringan, Anda tentu sudah tidak<br />
asing lagi. Disarankan memakai tipe<br />
ethernet, tapi tidak menutup<br />
kemungkinan memakai tipe lain.<br />
“Pakai yang mana nih, 10 atau<br />
100Mbps?” Terserah, tidak ada<br />
batasan. Pilihan hub atau switch<br />
pun terserah, tergantung aplikasi<br />
yang dipakai.<br />
Operating System. Nah ini dia,<br />
banyak kan pilihannya? Lucunya,<br />
dari banyak riset kecil-kecilan<br />
penulis, clustering banyak memakai<br />
OS Linux. Kenapa begitu? Ternyata,<br />
alasannya: Free, Open Source, dan<br />
banyak utiliti-nya. Ini tentu saja<br />
memudahkan pembuat cluster.<br />
“Wah, saya punyanya Windows,<br />
gimana dong?” Jangan khawatir,<br />
banyak alternatif software cluster<br />
yang jalan di atas WIndows,<br />
walaupun tidak sebanyak dan sepowerful<br />
di Linux/UNIX.<br />
Library pemrograman paralel.<br />
“Waduh apalagi nih? Saya kan bukan<br />
programer.” Ya, memang terkesan<br />
bikin ribet, tapi ini adalah pelengkap<br />
yang kadang diperlukan, terutama<br />
jika kita ingin menulis program paralel<br />
<strong>dengan</strong> cepat atau menjalankan suatu<br />
program paralel yang membutuhkan<br />
library paralel. Dua library utama<br />
yang terkenal adalah PVM dan MPI.<br />
Kalau Anda tidak butuh, cukup pakai<br />
saja rsh/ssh, beres.<br />
Dari keempat komponen di atas,<br />
menurut penulis semuanya memegang<br />
peranan penting. Tapi, yang cukup<br />
memegang peranan penting adalah<br />
Operating System. Kenapa demikian?<br />
Dengan Operating System yang baik,<br />
akan didapat pengaturan task yang<br />
optimum dan reliability yang andal.<br />
78 INFOLINUX MEI 2003<br />
Reliability yang baik diperlukan,<br />
mengingat cluster dalam kesehariannya<br />
kita bebani task yang loadnya tinggi.<br />
Bisa dibayangkan, di tengah-tengah<br />
Anda menunggu suatu program paralel<br />
yang run time-nya 20 menit, tiba-tiba<br />
di menit ke-17, salah satu node down<br />
karena OS-nya hang tanpa sebab.<br />
Seringkali untuk lebih meminimalkan<br />
biaya dan kemudahan upgrade, dipakai<br />
metode diskless workstation. “Nah,<br />
saya bisa pakai LTSP nih.”” Tepat<br />
sekalii! Anda bisa menggunakan paket<br />
LTSP, setup seperti biasa, tapi hanya<br />
komponen-komponen yang penting,<br />
semisal gcc, glibc, shell (bash,csh),<br />
rsh/ssh. X Window? Sebaiknya tidak<br />
usah, kecuali ada keperluan spesifik,<br />
misal tiap node harus ada display X<br />
Window. Catatan: biasanya slave node<br />
hanya berfungsi sebagai pemroses, jadi<br />
kalau pun anda butuh X Window,<br />
kemungkinan besar hanya pada master<br />
node. Setup LTSP tidak dijelaskan di<br />
sini, silakan anda simak artikel<br />
InfoLINUX edisi-edisi sebelumnya.<br />
Sampai di sini kita melihat ada satu<br />
tantangan utama yaitu: Bagaimana<br />
saya membangun cluster <strong>dengan</strong> cepat<br />
dan mudah, tanpa direpotkan <strong>dengan</strong><br />
pengetahuan library paralel, tapi<br />
<strong>dengan</strong> hasil optimum? Jawabannya,<br />
(Open)MOSIX!<br />
Konsep pertama yang digambarkan<br />
di atas disebut NoW (Network of<br />
Workstation) atau PoP (Pile of PC).<br />
“Well, namanya antik juga,” mungkin<br />
begitu pikir Anda. Tapi di saat awal ide<br />
clustering digulirkan, konsep ini sudah<br />
termasuk canggih. Apalagi saat itu<br />
(akhir 80-an dan awal 90-an) media<br />
untuk local networking belum terlalu<br />
canggih.<br />
“Lalu, bisa puyeng nih, masa bikin<br />
cluster saja, setup dan programmingnya<br />
pusing tujuh keliling?” Ya, ini suatu<br />
pertanyaan wajar. Lalu timbullah ide<br />
memunculkan konsep clustering<br />
berbasis SSI (Single System Image).<br />
Apa itu SSI? Sederhananya, SSI adalah<br />
clustering yang menggabungkan<br />
beberapa node (PC dan sebagainya)<br />
menjadi satu kesatuan, sehingga dari<br />
pandangan luar terlihat sebagai satu<br />
www.infolinux.web.id<br />
<br />
Situs OpenMOSIX<br />
satuan komputasi. Satu kesatuan yang<br />
dimaksud di sini adalah kesatuan unit<br />
CPU, kesatuan memori, serta kesatuan<br />
media penyimpan (storage).<br />
Ada dua cara untuk membentuk satu<br />
kesatuan ini.<br />
1. Middleware. Secara umum, ini<br />
meliputi semua komponen/library<br />
yang menjadi perantara antara<br />
program yang berjalan di user space<br />
<strong>dengan</strong> kernel. Contoh yang penulis<br />
ketahui adalah sistem batch scheduler<br />
seperti Condor atau Maui<br />
Scheduler atau Enfuzion. Batch<br />
scheduler akan penulis bahas di<br />
artikel lain. Library PVM dan MPI<br />
(misalnya MPICH) bisa juga<br />
dimasukkan dalam kategori<br />
Middleware, karena mereka<br />
sebenarnya juga menjadi perantara<br />
antara program paralel yang anda<br />
tulis <strong>dengan</strong> OS.<br />
2. Modifikasi kernel (kernel extension).<br />
Secara umum, ini meliputi semua<br />
tambahan kernel OS yang membuat<br />
OS tersebut menjadi sistem cluster,<br />
termasuk yang bertipe SSI. IBM<br />
Sysplex, Compaq Tru Custer, VAX<br />
Cluster adalah contoh-contoh SSI<br />
yang bersifat komersial. Sedangkan<br />
MOSIX dan OpenMOSIX adalah<br />
contoh yang bersifat GPL. Namun<br />
semenjak 2002, MOSIX menjadi<br />
closed sourse dan dibentuklah<br />
proyek OpenMOSIX yang dipimpin<br />
Dr. Moshe Bar, <strong>dengan</strong> model<br />
lisensi GPLv2.<br />
Lalu, bagaimana <strong>dengan</strong><br />
OpenMOSIX itu sendiri? Tunggu<br />
pembahasannya di InfoLINUX yang<br />
akan datang.<br />
Mulyadi Santosa (a_mulyadi@telkom.net)
Tutorial BAHAMUT Tutorial & EPONA GTK<br />
Membangun Server IRC<br />
<strong>dengan</strong> BAHAMUT dan EPONA<br />
Berdiskusi atau chatting tidak harus melalui server IRC umum di Internet. Apalagi jika<br />
ingin lebih terjaga privasi Anda atau perusahaan, memiliki server IRC sendiri akan lebih<br />
seru dan aman.<br />
BAHAMUT adalah salah satu<br />
Internet Relay Chat Daemon<br />
(IRCd). BAHAMUT didesain<br />
untuk DALnet yang merupakan salah<br />
satu jaringan IRC yang sangat terkenal di<br />
dunia Internet. Sebenarnya banyak sekali<br />
jenis IRCd yang ada, tapi dalam<br />
pandangan penulis, BAHAMUT lebih<br />
mudah diinstalasi dan dikonfigurasi dari<br />
yang lain. Pada saat pembuatan tulisan<br />
ini, versi terakhir BAHAMUT adalah<br />
bahamut-1.4.35-release.tar.gz, tetapi<br />
yang penulis coba instalasi adalah<br />
bahamut-1.4.32-release.tar.gz.<br />
Instalasi dan konfigurasi<br />
BAHAMUT<br />
Sebelum memulai instalasi, saya<br />
asumsikan Anda mempunyai account di<br />
mesin Linux <strong>dengan</strong> username belog,<br />
punya aksess root dan direktori kerja ada<br />
di /home/belog.<br />
Login ke mesin Linux:<br />
belogpolos login: belog<br />
password:<br />
(Masukkan password yang benar lalu<br />
tekan enter).<br />
Jika login ke Linux sukses, tampilan<br />
prompt Linux Anda (misalnya) seperti<br />
ini:<br />
belog@belogpolos:~$<br />
Langkah-langkah instalasi BAHAMUT:<br />
1. Download BAHAMUT<br />
Jika belum mempunyai source code<br />
BAHAMUT, Anda dapat men-download<br />
dari ftp://ftp.dal.net/pub/dalnet/server/<br />
bahamut/bahamut-1.4.32-release.tar.gz<br />
atau http://bahamut.dal.net/ircd-qa/<br />
bahamut-1.4.32-release.tar.gz. Simpan<br />
di bawah direktori kerja Anda, misalnya /<br />
home/belog.<br />
2. Ekstrak File Tarball<br />
$ tar -zxvf bahamut-1.4.32-release.tar.gz<br />
Setelah proses ekstraksi selesai, akan<br />
membentuk direktori baru <strong>dengan</strong> nama<br />
bahamut-1.4.32-release.<br />
3. Konfigurasi BAHAMUT<br />
$ mkdir bahamut<br />
$ cd bahamut-1.4.32-release<br />
$ ./configure<br />
$ ./config<br />
Welcome to Config for DALnet IRCD,<br />
Version: bahamut(1)-4.30(00).<br />
What are the maximum File Descriptors that<br />
the IRCD can use?<br />
[1024] -> 1024<br />
What are the maximum number of Users you<br />
intend to allow on your IRC server?<br />
Note that you can now change this number<br />
on the fly with with /set command.<br />
[1000] -> 1000<br />
What is the maximum connection buffer<br />
amount?<br />
Note, this CANNOT exceed the number of file<br />
descriptors<br />
minus the maximum clients.<br />
[24] -> 24<br />
What directory are all the server<br />
configuration files in?<br />
Note, this directory name needs to end with<br />
a /<br />
[/home/belog/bahamut-1.4.32-release/] -> /<br />
home/belog/bahamut/<br />
What is the explicit path to where the ircd<br />
binary will be<br />
installed? This should point to a file, not a<br />
directory.<br />
www.infolinux.web.id<br />
[/home/belog/bahamut-1.4.32-release/src/<br />
ircd] -> /home/belog/bahamut/ircd<br />
Would you like to see when a /stats is<br />
requested?<br />
This only applys for +y users.<br />
[Yes] -> Yes<br />
There are clients out there ignoring the<br />
MOTD numeric, so<br />
there is no point forcing MOTD on connecting<br />
clients. Instead of<br />
sending the MOTD, enabling this will just<br />
send a short notice to the<br />
connecting client asking them to read the<br />
motd.<br />
To change the notice, you may edit<br />
ircd.smotd in the same directory<br />
as your ircd.motd file.<br />
[Yes] -> Yes<br />
Would you like Connecting Clients to by<br />
automatically set +i?<br />
[Yes] -> Yes<br />
Would you like to compile as a HUB?<br />
[No] -> Yes<br />
Would you like connecting users to be sent a<br />
notice regarding<br />
wingate and socks scans? This must be<br />
defined if you<br />
intend to run your server on DALnet.<br />
[Yes] -> Yes<br />
What host does your wingate bot run from?<br />
This is only a default and may be overridden<br />
with a T: line<br />
See doc/example.conf for more information<br />
on T: lines<br />
[some.bot.host] -> belogpolos.net<br />
What address can users affected by k-lines<br />
INFOLINUX MEI 2003<br />
79
Tutorial GTK BAHAMUT & EPONA<br />
<br />
Gambar 1. MIRC mengakses BAHAMUT<br />
ask for help?<br />
This is displayed to all LOCALLY k-lined<br />
users upon connect.<br />
This should be the address of the local<br />
administrator.<br />
This should _NOT_ be kline@dal.net!<br />
[admin@poorly.configured.server.com] -><br />
admin@belogpolos.net<br />
What address can users affected by autokills<br />
ask for help?<br />
This is displayed to all globally autokilled<br />
users upon connect.<br />
This should be the address of the network<br />
administrator.<br />
On dalnet, this should be kline@dal.net.<br />
[admin@poorly.configured.server.com] -><br />
kline@belogpolos.net<br />
Would you like to use syslog for server<br />
logging?<br />
This is STRONGLY reccomended, many<br />
errors can be caught by syslog.<br />
[Yes] -> no<br />
What sendq length do you wish to have?<br />
[5050000] -><br />
What size of a bufferpool do you wish to<br />
have?<br />
A bufferpool is a total of ALL sendq’s in use<br />
[(4 * MAXSENDQLENGTH)] -><br />
Do you want your server to hide U:lined<br />
servers in a /links?<br />
If you are planning to link to DALnet, this<br />
80 INFOLINUX MEI 2003<br />
MUST be defined.<br />
[Yes] -><br />
<br />
Do you want to use the poll system call?<br />
If you are on a solaris machine, this is<br />
mandatory.<br />
Linux machines should use select until poll()<br />
is ironed out.<br />
Poll works nicely on freebsd machines.<br />
Select is more economical for small<br />
networks.<br />
[Yes] -><br />
If you have network services and would like<br />
to make use of<br />
the built in secure services aliasing features,<br />
type in the<br />
name of your network services server here.<br />
If you are a<br />
DALnet admin, you would type in<br />
“services.dal.net” below.<br />
[services.dal.net] -> services.localhost.net<br />
What is the maximum number of channels a<br />
user should be able to join?<br />
[10] -> 25<br />
Would you like to encrypt oper passwords in<br />
O:lines?<br />
[No] -><br />
Thats all folks..<br />
Writing include/options.h...Done.<br />
Now your include/options.h is configured.<br />
Please look over<br />
www.infolinux.web.id<br />
Gambar 2. Channel IRC BAHAMUT<br />
include/config.h for more server specific<br />
options.<br />
To compile your server, type ‘make’.<br />
4. Kompilasi Bahamut<br />
$ make<br />
5 . Edit File Konfigurasi (misal <strong>dengan</strong><br />
editor teks pico)<br />
$ cd bahamut<br />
$ pico ircd.conf<br />
Sesuaikan nomor port (misalnya<br />
6667), alamat e-mail dan informasi<br />
network lainnya sesuai <strong>dengan</strong> kondisi di<br />
jaringan Anda.<br />
6. Jalankan Server IRC<br />
$ ./ircd<br />
Importing prime...<br />
Prime imported.<br />
Generating random state...<br />
No random state found, trying to generate<br />
entropy from /dev/random...<br />
Got 64 of 512 bits of entropy..<br />
Got 128 of 512 bits of entropy..<br />
Got 192 of 512 bits of entropy..<br />
Got 256 of 512 bits of entropy..<br />
Got 320 of 512 bits of entropy..<br />
Got 384 of 512 bits of entropy..<br />
Got 448 of 512 bits of entropy..<br />
Got 512 of 512 bits of entropy..<br />
Random state successful.<br />
Value of FD_SETSIZE is 1024<br />
Value of NOFILE is 256<br />
Ircd is now becoming a daemon.
Tes <strong>dengan</strong> menggunakan program<br />
IRC di Linux (misalnya xchat) atau di<br />
Windows (misalnya mIRC) seperti<br />
tampak dalam Gambar 1 dan 2.<br />
Agar server IRC (ircd) jalan secara<br />
otomatis pada saat komputer di reboot,<br />
tambahkan satu baris berikut ini pada<br />
file rc.local (di bawah direktori /etc atau<br />
/etc/rc.d).<br />
/home/belog/bahamut/ircd/ircd -u belog<br />
Membuat IRC Service<br />
<strong>dengan</strong> EPONA<br />
EPONA adalah sebuah IRC Services<br />
yang merupakan pasangan dari<br />
BAHAMUT. Dengan EPONA kita dapat<br />
membuat sistem layanan, seperti<br />
NickServ, ChanServ, MemoServ,<br />
BotServ, dan OperServ. EPONA<br />
dirancang sangat stabil, efisien dan<br />
user friendly. Di samping <strong>dengan</strong><br />
BAHAMUT, EPONA juga kompatibel<br />
<strong>dengan</strong> IRCd DreamForge, Unreal, dan<br />
Ultimate.<br />
Langkah langkah instalasi EPONA<br />
(dalam hal ini epona-1.4.10.tar.gz)<br />
adalah sebagai berikut (asumsi: direktori<br />
kerja di /home/belog).<br />
1. Download Epona di www.epona.org<br />
2. Ekstrak file tarball source code Epona<br />
$ tar -xzvf epona-1.4.10.tar.gz<br />
3. Konfigurasi EPONA<br />
Sebelumnya kita buat dulu direktori<br />
services.<br />
$ mkdir services<br />
Masuk ke direktori epona-1.4.10,<br />
dan jalankan script configure, lalu<br />
jawab pertanyaan seperti contoh di<br />
bawah ini.<br />
$ cd epona-1.4.10<br />
$ ./configure<br />
Where do you want the data file to be<br />
installed? [/home/belog/services] [enter]<br />
Which group should all Services data files be<br />
owned by? (If Services should not force<br />
files to be owned by a particular group, just<br />
press Return.) [enter]<br />
What should the default umask for data files<br />
be (in octal)?<br />
(077 = only accessible by owner; 007 =<br />
accessible by owner and group)<br />
[077] [enter]<br />
Tutorial BAHAMUT Tutorial & EPONA GTK<br />
Which of the following is closest to the type<br />
of server on your IRC<br />
network?<br />
1) DreamForge 4.6.7 [this is an old IRCd,<br />
you should upgrade to Bahamut]<br />
2) Bahamut 1.4.27 or later<br />
3) UnrealIRCd 3.1.1 or later<br />
4) UltimateIRCd 2.8.2 or later<br />
5) Sequana 0.2.0 or later<br />
[no default] 2<br />
Selanjutnya tinggal tekan [enter]<br />
saja, dan tunggu<br />
hingga proses<br />
konfigurasi selesai.<br />
4. Kompilasi EPONA<br />
$ make<br />
Tunggu sampai<br />
proses selesai, jika<br />
tidak ada pesan error<br />
berarti sukses.<br />
$ make install<br />
Tunggu sampai<br />
proses kompilasi<br />
selesai.<br />
5 . Edit File<br />
services.conf<br />
Karena kita menginstalasi services di<br />
direktori /home/belog/services, maka<br />
semua file akan tersimpan di sana.<br />
Masuk direktori /home/belog/services:<br />
$ cd /home/belog/services<br />
<br />
Copy file example.conf menjadi<br />
services.conf<br />
$ cp axample.conf services.conf<br />
Edit file services.conf sesuaikan<br />
<strong>dengan</strong> kebutuhan Anda, misalnya<br />
seperti contoh ini (<strong>dengan</strong> editor teks<br />
pico):<br />
$ pico services.conf<br />
RemoteServer localhost 6667<br />
mypass<br />
ServerName services.localhost.net<br />
ServerDest nama server anda<br />
6. Edit File ircd.conf<br />
Tambahkan beberapa baris seperti di<br />
www.infolinux.web.id<br />
bawah ini.<br />
Y:27:180:0:0:4000000<br />
C:127.0.0.1:mypass:Services.LocalHost.Net::30<br />
N:127.0.0.1:mypass:Services.LocalHost.Net::30<br />
U:Services.LocalHost.Net:*:*<br />
H:*::Services.LocalHost.Net<br />
7. Jalankan Services<br />
$ ./services<br />
Tes <strong>dengan</strong> menggunakan program<br />
IRC (misalnya mIRC) seperti tampak<br />
dalam Gambar 3.<br />
Gambar 3. MIRC Mengakses Epona<br />
Agar services ini jalan secara<br />
otomatis pada saat komputer di reboot,<br />
tambahkan satu baris berikut ini pada<br />
file rc.local (di bawah direktori /etc atau /<br />
etc/rc.d).<br />
/home/belog/services/services -u belog<br />
IRC Client di Linux<br />
Gambar-gambar contoh ini menggunakan<br />
mIRC (IRC client di Windows). Anda<br />
ingin mencoba IRC client di Linux? Daftar<br />
berikut hanya sebagian dari banyak paket<br />
yang tersedia di Linux:<br />
Xchat (tersedia di hampir semua<br />
distro, atau www.xchat.org)<br />
KsIrc (tersedia bersama paket<br />
kdenetwork, lihat www.kde.org)<br />
Mozilla-irc (tersedia di CD distro, atau<br />
www.mozilla.org)<br />
BitchX (www.bitchx.org)<br />
Kvirc (www.kvirc.net)<br />
I Wayan Sudana (belogp@yahoo.com)<br />
INFOLINUX MEI 2003<br />
81