17.07.2013 Views

Visualisasi Molekul dengan garlic - Kambing UI

Visualisasi Molekul dengan garlic - Kambing UI

Visualisasi Molekul dengan garlic - Kambing UI

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!