www.infolinux.web.id50 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Setelah Anda selesai melakukan setting Diskless Server dan Diskless Client, selanjutnyaAnda bisa melakukan setting aplikasi lokal. Pada artikel kali ini, kita akan melakukansetting printer lokal yang terpasang pada Diskless Client.
Local Printer padaDiskless System
Tulisan di bawah ini merupakan lanjutan
dari pembahasan K12LTSP di majalah
dan buku mini InfoLINUX tentang
Diskless System, sekaligus jawaban dari per-
tanyaan pembaca seputar masalah setting
printer lokal pada Diskless Client.
Untuk melakukan setting printer lokal,
langkah-langkahnya adalah sebagai berikut:
1. Anda jalankan Diskless Server.
2. Selanjutnya, Anda masuk ke konsol
dengan mengetikkan sintaks perintah:
[Ctrl] +[Alt] + F1
3. Pada konsol, lakukan login sebagai root .
login: root
Password: password (ganti
dengan pasword Anda)
Anda juga bisa menjadi root, pada saat
Anda login sebagai user biasa atau pada
waktu menggunakan X Window, dengan
mengetikkan sintaks perintah pada
konsol sebagai berikut:
[user@localhost:~] $ su -l
root
Password: (isi dengan
password root Anda)
4. Pastikan Anda sudah melakukan instalasi
Local_Apps.
Pada K12LTSP, secara default file
local_apps sudah diikutsertakan. Anda
tinggal mengaktifkannya, yang akan kita
bahas pada bagian berikutnya pada
artikel ini.
5. Pindah ke direktori /opt/ltsp/i386/etc
Selanjutnya, Anda menuju ke direktori /
opt/ltsp/i386/etc, dengan mengetikkan
sintaks perintah sebagai berikut:
[root@localhost:~] # cd /opt/
ltsp/i386/etc
6. Edit file lts.conf Edit file lts.conf dengan
editor kegemaran Anda. Pada contoh ini,
kami menggunakan ‘vi’, ketikkan sintaks
perintah sebagai berikut:
[root@localhost:~] # vi
lts.conf
Selanjutnya, Anda bisa melihat isi dari file
lts.conf, seperti berikut ini:
#
# Config file for the Linux
Terminal Server Project
(www.ltsp.org)
#
[Default]
SERVER =
192.168.0.254
XSERVER = auto
X_MOUSE_PROTOCOL = “PS/2”
X_MOUSE_DEVICE = “/dev/
psaux”
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
LOCAL_APPS = Y
RUNLEVEL = 5
[ws001]
USE_NFS_SWA = Y
SWAPFILE_SIZE = 48m
RUNLEVEL = 5
[ws002]
XSERVER =
XF86_SVGA
LOCAL_APPS = N
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 64m
RUNLEVEL = 3
7. Pengaktifan Local Application
Lakukan perubahan pada kalimat
LOCAL_APPS, menjadi sesuai dengan
contoh berikut ini:
LOCAL_APPS = Y
8. Penambahan parameter Lakukan
penambahan parameter pada kolom
[Default]sebagai berikut:
� PRINTER_0_DEVICEKalimat di atas merupakan device
pertama dari printer. Nama device
seperti: /dev/lp0', /dev/ttyS0 atau /
dev/ttyS1 diizinkan.
� PRINTER_0_TYPEMerupakan jenis dari printer. Untuk
pilihan yang tepat adalah ‘P’ untuk
Parallel, dan ‘S’ untuk Serial.
� PRINTER_0_PORTNomor port TCP/IP yang digunakan.
Secara default, biasanya mengguna-
kan port ‘9100’.
� PRINTER_0_SPEEDJika printer Anda merupakan printer
serial, konfigurasi ini untuk menentu-
kan kecepatan (baud rate). Secara de-
fault, kecepatan yang digunakan
adalah ‘9600’.
� PRINTER_0_FLOWCTRLDigunakan pada jenis printer serial,
alur kontrol yang digunakan lebih ter-
arah. Isikan ‘S’ untuk Software (XON/
XOFF) alur kontrol, atau ‘H’ untuk
Hardware (CTS/RTS) alur kontrol.
Biasanya, yang digunakan adalah ‘S’.
Diskless System
51InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
� PRINTER_0_PARITYDigunakan pada jenis printer serial,
the Parity can be specified. Pilihannya
adalah: ‘E’ (Even), ‘O’ (Odd) atau ‘N’
(None). Jika tidak ada pilhan, Anda
bisa memilih ‘N’.
� PRINTER_0_DATABITSDigunakan pada jenis printer serial,
angka dari databit yang digunakan
adalah khusus. Pilihan angka me-
liputi: ‘5’, ‘6’, ‘7’ dan ‘8’. Jika tidak ada
pilhan atau bingung, Anda bisa me-
milih angka ‘8’.
� PRINTER_1_DEVICEMerupakan device printer kedua.
� PRINTER_1_TYPEMerupakan jenis printer kedua.
� PRINTER_1_PORTPort tcp/ip yang digunakan pada
printer kedua.
� PRINTER_1_SPEEDBaud rate pada printer kedua (serial).
� PRINTER_1_FLOWCTRLJalur kontrol printer kedua (serial).
� PRINTER_1_PARITYParity pada printer kedua (serial).
� PRINTER_1_DATABITSData bits / kecepatan data pada printer
kedua (serial).
� PRINTER_2_DEVICENama device printer ketiga.
� PRINTER_2_TYPEJenis printer ketiga.
� PRINTER_2_PORTPort tcp/ip pada printer ketiga.
� PRINTER_2_SPEEDBaud rate pada printer ketiga (serial).
� PRINTER_2_FLOWCTRLJalur kontrol pada printer ketiga (se-
rial).
� PRINTER_2_PARITYParity pada printer ketiga (serial).
� PRINTER_2_DATABITSData bits / kecepatan data pada printer
ketiga (serial).
Untuk jelasnya, Anda bisa melihat isi dari
file lts.conf secara lengkap, sebagai berikut:
#
# Config file for the Linux
Terminal Server Project
(www.ltsp.org)
#
Diskless System
[Default]
SERVER =
192.168.0.254
XSERVER = auto
X_MOUSE_PROTOCOL = “PS/2”
X_MOUSE_DEVICE = “/dev/
psaux”
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
LOCAL_APPS = N
RUNLEVEL = 5
PRINTER_0_DEVICE = /dev/
lpo
PRINTER_0_TYPE = P
PRINTER_0_PORT = 9100
PRINTER_0_SPEED = 9600
PRINTER_0_FLOWCTRL = S
PRINTER_0_PARITY = N
PRINTER_0_DATABITS = 8
PRINTER_1_DEVICE = /dev/lp1
PRINTER_1_TYPE = S
PRINTER_1_PORT = 9100
PRINTER_1_SPEED = 9600
PRINTER_1_FLOWCTRL = S
PRINTER_1_PARITY = N
PRINTER_1_DATABITS = 8
PRINTER_2_DEVICE = /dev/lp2
PRINTER_2_TYPE = S
PRINTER_2_PORT = 9100
PRINTER_2_SPEED = 9600
PRINTER_2_FLOWCTRL = S
PRINTER_2_PARITY = N
PRINTER_2_DATABITS = 8
[ws001]
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 48m
RUNLEVEL = 5
[ws002]
XSERVER =
XF86_SVGA
LOCAL_APPS = N
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 64m
RUNLEVEL = 3
9. Jika Anda juga memiliki printer yang
menggunakan port USB, Anda bisa me-
nambahkan konfigurasi sebagai berikut:
[ws003]
MODULE_01 = usb-ohci
MODULE_02 = printer
PRINTER_3_DEVICE= /dev/
usb/lp0
PRINTER_3_TYPE = S
10.Menyimpan hasil pekerjaan.
Selanjutnya, simpan hasil pekerjaan Anda
dengan mengetikkan sintaks perintah
sebagai berikut:
[Esc]+[Shift][:]
11.Restart LTSP Client.
Langkah terakhir, Anda bisa melakukan
restart Diskless Client Anda, agar peruba-
han konfigurasi bisa dirasakan. Selamat
mencoba.�R. Kresno Aji ([email protected])
Konfigurasi jaringan LTSP dengan printer di masing-masing client.
www.infolinux.web.id52 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Software .NET adalah produk yang
diciptakan oleh Microsoft sebagai
respon terhadap kesuksesan Java.
.NET adalah suatu framework atau platform
untuk software. Anda bisa bilang .NET
sebagai saingan Java. .NET sendiri bukanlah
jiplakan dari Java, tapi desain ulang kembali
dari Java dengan ditambahi berbagai fitur
menarik.
Anda cuma bisa memakai bahasa pem-
rograman Java untuk platform Java, tapi di
platform .NET Anda bisa memakai ber-
bagai bahasa pemrograman sepanjang
bahasa pemrograman itu memiliki properti
.NET. Ya, salah satu fitur menarik dari .NET
adalah ketidaktergantungan dari suatu
bahasa tertentu. Itulah sebabnya di dunia
Windows, Anda sering mendengar VB.NET,
C++.NET, Cobol.NET, ASP.NET, dan
C#.NET. Anda bisa mencampur berbagai
bahasa itu dengan mudah.
Untuk perbandingannya, salah satu
alasan pustaka GTK+ ditulis dengan bahasa
C adalah supaya bisa diakses oleh berbagai
bahasa. Misalnya Anda ingin menggunakan
pustaka GTK+ untuk membuat aplikasi
tapi Anda ingin menggunakan bahasa py-
thon bukan bahasa C. Hal ini dimung-
kinkan dengan binding. Anda mengakses
pustaka Gtk+ yang ditulis dengan bahasa
C itu dengan binding. Tapi Anda tidak bisa
mengakses pustaka python dari bahasa C.
Di .NET hal ini dimungkinkan. Luar biasa!
.NET mempunyai pustaka yang sangat
besar untuk hampir setiap keperluan.
Beberapa di antaranya adalah dukungan
XML, database, dan web. Sementara itu
dengan .NET, Anda bisa membuat aplikasi
web dengan mudah lewat ASP.NET. Dengan
ASP.NET, membuat aplikasi web berskala
besar menjadi jauh lebih mudah. Yang
enaknya, ASP.NET memberi Anda pilihan
berbagai bahasa seperti C#, atau C++ dalam
mengerjakan aplikasi web.
Walaupun .NET dibuat oleh Microsoft
tapi framework itu sendiri standar dan
begitu juga dengan berbagai hal lainnya
seperti spesifikasi C#. Standardisasi itu
sendiri di-submit ke ECMA, yaitu suatu
organisasi yang mengurus standardisasi atas
bidang teknologi informasi dan komunikasi.
Ini artinya setiap pihak bisa mengambil ke-
untungan dari framework ini secara bebas.
Novell dan kelompok open source men-
jawab tuntutan untuk menghadirkan frame-
work yang luar biasa ini di platform Unix, di
mana kemudian platform Windows dan
MacOSX pun didukung. Dengan dimotori
oleh Miguel de Icaza (salah satu pendiri
projek Gnome), projek Mono dikembangkan.
Secara singkatnya, Mono adalah imple-
mentasi bebas dari platform .NET. Ada
berbagai teknologi menarik dari Mono,
seperti compiler untuk bahasa pemrog-
raman yang baru, yaitu C#, compiler Basic,
compiler LOGO, mesin virtual bagi kode-
kode binari CIL (Common Intermediate
Language) yang mirip dengan Java Virtual
Machine, berbagai pustaka untuk mema-
nipulasi XML, pengaturan database, pem-
buatan aplikasi GUI, sampai konstruksi
web.
Anda boleh menulis aplikasi open source
maupun closed source dengan teknologi ini.
Compiler C# dilensikan ke dalam GNU GPL
sedangkan runtime library-nya dilensikan
dengan GNU Library GPL dan pustaka
kelas-kelasnya dilensikan dengan salah satu
lisensi open source, yaitu lisensi MIT X11.
Terus mungkin ada yang khawatir karena
bagaimanapun ini adalah teknologi yang
berhubungan dengan Microsoft. Mungkin
suatu hari Microsoft akan menuntut orang-
orang yang yang menggunakan platform
.NET di Linux seperti kasus SCO menuntut
IBM. Sebagai latar belakang informasi,
teknologi .NET terbagi dua: teknologi .NET
yang di-submit ke ECMA dan teknologi yang
dibangun di atasnya seperti Windows.Forms,
ADO.NET, ASP.NET.
Mono mengimplementasikan kedua-
duanya dan juga melebihi dari itu, yaitu
dengan mengembangkan dan menginteg-
rasikan pustaka pihak ketiga seperti API
untuk debugging, Mozilla, OpenGL, du-
kungan atas database yang luas, integrasi
dengan pustaka POSIX. Teknologi .NET
yang di-submit ke ECMA adalah standar.
Artinya semua pihak boleh mengimple-
mentasikan komponen-komponen itu
secara bebas untuk kepentingan apapun.
Teknologi .NET yang kontroversial
adalah seperti Windows.Forms, ADO.NET,
ASP.NET. Teknologi ini diperlukan bagi or-
ang yang memerlukan kompatibilitas penuh
dengan platform Windows, tapi tidak
diperlukan bagi platform open source
seperti Linux atau *BSD yang kaya akan
Implementasi .NETdengan Mono
Mono
Penulis masih ingat ketika membaca tulisan yang membandingkan aplikasi di Windowsdan di Linux. Misalnya, Photoshop di Windows dibandingkan dengan Gimp di Linuxsebagai editor gambar. Yang menarik adalah artikel itu membandingkan .NET di Win-dows dengan J2EE di Linux sebagai framework pengembangan teknologi informasiatau software. Tapi, hal yang lebih menarik adalah .NET sekarang “sudah” tersedia diLinux.
53InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
pustaka-pustaka. Jadi, seharusnya Anda
tidak perlu khawatir untuk mengembang-
kan karya dengan Mono. Lagipula ada
perusahaan besar yang menjadi sponsor
utama dari projek ini, yaitu Novell. Kita tahu
sendiri Novell adalah perusahaan yang
memiliki reputasi bagus. Jangan lupa juga,
masalah paten ini tidak berlaku di negara di
mana paten piranti lunak (software patents)
dilarang. Kabar baiknya, sampai artikel ini
ditulis, software patents tidak atau belum
diberlakukan di Indonesia.
Walaupun Anda bisa mencampur ber-
bagai bahasa dalam platform .NET ini, tapi
.NET ini sendiri memperkenalkan bahasa
baru, yaitu C# yang dikembangkan oleh
Anders Hejlsberg (pengembang inti Borland
Delphi sebelum ditarik oleh Microsoft)
bersama timnya. C# memiliki sintaks yang
elegan, bersih, dan indah.
Bagi yang memiliki pengalaman di
bidang bahasa pemrograman bahasa ber-
orientasi objek seperti Java dan C++, Anda
tidak akan mengalami kesulitan untuk
mempelajari bahasa ini. C# itu seperti anak
yang dilahirkan dari perkawinan C++ yang
“perkasa” dan Java yang “anggun” di mana
gen C++ lebih dominan. Jadi sekarang
dengan Mono, Anda bisa membuat aplikasi
dengan bahasa C# di platform Linux.
C# tidak di-compile ke bahasa mesin, tapi
ke kode-kode binari bagi mesin CIL yang
kemudian dengan bantuan pustaka-pustaka
class utamanya mengeksekusi program ini.
Mirip dengan Java VM. Apa artinya ini?
Artinya program yang dikembangkan di
platform Windows bisa dieksekusi dengan
baik oleh Mono tanpa kompilasi ulang
sepanjang program itu tidak memiliki kode
khusus Win32 seperti fungsi yang meng-
akses registry atau fungsi spesifik Windows
seperti fungsi spawnv(...).
Ok, kita akan mencoba pemrograman C#
di Linux. Umumnya Anda hanya mem-
butuhkan satu paket saja agar bisa melakukan
pemrograman di framework .NET, yaitu
mono-0.95.tar.gz. Paket ini berisi source code
dari Mono runtime dan demi kemudahan
pengguna, maka developer Mono memu-
tuskan untuk memasukkan juga compiler C#,
compiler VB, dan tentu saja pustaka class-nya
yang sudah di-compile. Jadi ketika mela-
kukan make install untuk paket mono-
0.95.tar.gz, maka Anda siap bekerja dengan
framework .NET ini. Source code dari com-
piler C#, compiler VB, dan pustaka class-nya
ada di paket mcs-0.95.tar.gz. Anda tidak akan
membutuhkan paket ini, kecuali Anda adalah
seorang hacker mono.
Sampai artikel ini ditulis, Mono sudah
mencapai versi 1 Beta 2 atau 0.95. Tapi
karena projek Mono ini begitu aktif, adalah
mungkin jika pada saat pembaca membaca
artikel ini Mono sudah mencapai rilis stabil
atau lebih baru dari ini. Instalasikan paket
mono-0.95.tar.gz seperti berikut:
$ tar -zxvf mono-0.95.tar.gz
$ cd mono-0.95
$ ./configure —prefix=/usr
$ make
$ su
# make install
Untuk kedua paket ini, Anda bisa meng-
gunakan prefix default yaitu /usr/local tapi
Anda bisa menggantikannya ke /usr yang
cukup umum digunakan orang. Dalam hal
ini, penulis merasa lebih nyaman dengan
prefix /usr.
Dengan asumsi Anda berhasil meng-
instalasinya, sekarang kita akan mencoba
program sederhana. Gunakanlah text editor
kesayangan Anda.
Program yang dihasilkan memiliki eks-
tensi exe karena untuk menjaga kompati-
bilitas dengan file yang dihasilkan di plat-
form Windows.
//Fitur.cs
using System;
class Fitur {
private string String;
private int Mono = 0;
public int FiturProperty {
get {
Console.WriteLine(
“Ini fitur baru C#. “ );
return Mono;
}
set {
Mono = value;
}
}
public static void Main() {
string Majalah =
“InfoLinux”;
int Jumlah = 4;
Mono
Tampilan MONO mengedit kode program Fitur .cs.
www.infolinux.web.id54 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Console.WriteLine( “Saya
mempunyai majalah {0} sebanyak
{1}. “, Majalah, Jumlah );
double[] angka = { 1.2,
2.3, 3.4 };
foreach( double temp in
angka )
{
Console.WriteLine(
“{0}”, temp );
}
Fitur penguin = new
Fitur();
penguin.FiturProperty =
7;
Console.WriteLine(
“{0}”, penguin.FiturProperty );
}
}
Simpanlah kode itu dengan nama Fitur.cs.
Lalu gunakan konsol dan pergilah ke direktori
tempat file itu berada.
$ mcs Fitur.cs
Compilation successful
$ mono Fitur.exe
Saya mempunyai majalah
InfoLINUX sebanyak 4 buah.
1.2
2.3
3.4
Ini fitur baru C#.
7
Kita akan membahas beberapa fitur unik
dari C#.
using System;
Ini berarti kita menggunakan namespace
System sehingga kita bisa menuliskan
Console.WriteLine langsung. Jika tidak kita
harus menuliskan System.Console.WriteLine.
get {
.....
}
set {
.....
}
Di C++ biasanya kita menggunakan
metoda tradisional untuk mengambil data
dengan fungsi dari class seperti int getX()
dan untuk mengeset nilai data dengan
fungsi dari class seperti void setX(...). Di C#,
Anda tinggal menggunakan fitur properti
yang menyederhanakan kode. Imple-
mentasinya bisa dilihat di kode program di
atas.
foreach( double temp in angka )
Ini mirip perulangan for biasa. Arti dari
pernyataan ini adalah perulangan atas array
angka dari index terkecil sampai ke index
terbesar dan dalam setiap pengulangan itu
nilai array angka dengan index yang ber-
sangkutan disalin ke variabel temp.
Sedangkan hal lainnya cukup jelas dari
kode program di atas.
Ok...kejutannya adalah mono datang
dengan compiler Basic.NET juga. Mari kita
mencicipi program Basic.NET di Linux.
Buka lagi text editor kesayangan Anda.
//InfoLinux.vb
Imports System
Module InfoLinux
Sub Main()
Console.WriteLine(
“Contoh sederhana program vb di
Linux” )
Dim nama as String
Dim jumlah as Integer
Console.Write( “Siapa
nama Anda? “ )
nama =
Console.ReadLine()
jumlah = 4
Console.WriteLine( nama +
“ mempunyai majalah InfoLinux
sebanyak “ + jumlah + “. “ )
End Sub
End Module
Simpanlah kode program ini dengan
nama InfoLinux.vb. Kita akan meng-com-
pile kode program ini menjadi kode binari
CIL.
$ mbas InfoLinux.vb
Compilation successful
$ mono InfoLinux.exe
Contoh sederhana program vb di
Linux
Siapa nama Anda? Slacker
Slacker mempunyai majalah
InfoLinux sebanyak 4.
Merupakan hal yang menarik jika kita
bisa bermain-main dengan C# dan Basic di
Linux dengan Mono. Tapi bagaimanapun,
program-program yang dihasilkan itu
adalah program konsol. Bagaimana dengan
GUI? Tentu kita bisa membuat aplikasi GUI
dengan C# atau Basic. Tapi untuk pem-
bahasan kali ini, kita akan menggunakan
bahasa C# karena bahasa ini dibuat khusus
untuk platform .NET.
Jika melakukan pemrograman GUI de-
ngan C# di platform Windows, maka Anda
umumnya memakai System.Windows.Forms
sebagai toolkit-nya. Untuk alasan kom-
patibilitas, maka Mono juga menyertakan
System.Windows.Forms sebagai toolkit-nya,
dan di platform Windows toolkit ini bekerja
secara sempurna seperti yang diharapkan tapi
di platform Unix dan MacOS X, keadaan
menjadi lebih sulit. Implementasi untuk
toolkit ini menggunakan pustaka winelib.
Akibatnya aplikasi yang dibuat dengan toolkit
ini kelihatan jelek di platform Linux dan
MacOS X karena menggunakan emulasi.
Bahkan untuk sekarang ini, tidak semua
fungsi API dari toolkit ini didukung di plat-
form Linux dan MacOS X karena projek
Mono sendiri belum selesai 100%.
Jadi jangan menggunakan toolkit ini,
kecuali Anda cuma mau membuat aplikasi
di platform Windows saja. Sekali lagi toolkit
ini didukung karena untuk mempermudah
transisi aplikasi yang dibuat dengan frame-
work .NET di Windows ke platform Linux.
Anda memerlukan paket winelib-0.3.tar.gz
untuk melakukan pemrograman GUI dengan
Windows.Forms.
Alternatif yang lainnya adalah GTK#.
Binding ini masih belum matang dan berada
dalam pengerjaan yang aktif. GTK# me-
warisi API yang stabil dari GTK+ dan
mempunyai basis komunitas yang besar.
Kita juga bisa membuat GUI dari program
secara cepat dengan Glade. Keunggulan
lainnya dari toolkit ini yang lainnya adalah
Mono
55InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
mendukung internasionalisasi, kontrol atas
HTML (rendering dan pengeditan). Tentu
saja program ini terintegrasi dengan manis
ke dalam desktop Gnome. Walaupun begitu,
aplikasi yang dibuat dengan GTK# bisa
dijalankan di platform mana saja seperti
Windows, Unix, atau MacOSX karena GTK+
itu sendiri multiplatform. Anda memer-
lukan paket gtk-sharp-0.93.tar.gz untuk
melakukan pemrograman GUI dengan
toolkit ini.
Mungkin Anda bertanya bagaimana
dengan penggemar KDE? Jawabannya
adalah Qt#. Toolkit yang dikembangkan
oleh Adam Treat ini mewarisi keunggulan
dari toolkit yang sudah sangat terbukti ke-
handalannya, yaitu Qt. Aplikasi yang dibuat
dengan Qt# ini multiplatform dan di setiap
platform penampilannya seperti aplikasi
asli pada platform yang bersangkutan atau
istilahnya native look. Anda memerlukan
paket qtsharp-0.7.tar.gz untuk melakukan
pemrograman dengan toolkit ini. Selain itu,
masih ada toolkit wx.NET dan Sharp WT.
Pengembangan software identik dengan
IDE. IDE yang khusus untuk keperluan
Mono ini diberi nama MonoDevelop. Proyek
ini masih berada dalam versi awal dan seperti
Mono, pengembangan project Monodevelop
sangat aktif. Tapi Anda juga bisa memakai
IDE yang sudah matang seperti Sharp-
Develop (hanya di platform Windows) atau
Eclipse dengan plugin C#-nya.
Masih banyak lagi teknologi lainnya yang
belum sempat dibahas pada artikel ini
tentang .NET di Linux seperti ASP.NET,
ADO.NET, Gecko#, dan lain-lainnya. Anda
juga bisa meng-compile Java ke kode binari
CIL. Jadi Anda bisa menjalankan program
Java dengan Mono. Walaupun begitu, tidak-
lah bijaksana untuk menggunakan Mono
dalam sistem produktif karena Mono ini
sendiri masih dalam pengerjaan yang aktif.
Istilahnya, “Under heavy development”.
Tapi banyak orang yang menaruh
harapan pada Mono. Mono adalah proyek
yang memiliki masa depan yang cerah
karena didukung oleh banyak developer
open source, perusahaan besar seperti
Novell dan tentu saja sebagian besar
komunitas open source. Sangat menarik
untuk melihat sepak terjang dari project
yang mencoba untuk menghadirkan frame-
work .NET di Linux ini.
Mono
Mono bukanlah satu-satunya imple-
mentasi bebas dari platform .NET di Linux.
Alternatif yang lain adalah proyek DotGNU.
Sama seperti proyek Mono, DotGNU juga
menghadirkan perlengkapan untuk me-
ngembangkan dan menjalankan aplikasi
Common Language Infrastructure (CIL). Tar-
get awalnya adalah platform Linux, ke-
mudian platform lainnya seperti Windows,
*BSD, Solaris, dan MacOS X.
Perbedaan proyek DotGNU dengan
Mono tetap ada. Pertama, proyek DotGNU
itu murni komunitas yang terlihat jelas dari
namanya. Mono sendiri dikembangkan oleh
perusahaan Ximian yang merupakan bagian
dari perusahaan Novell tapi tetap membuka
kesempatan bagi siapa saja untuk bergabung
mengembangkan proyek Mono. Secara
kasarnya, DotGNU itu seperti distro Slack-
ware yang murni komunitas walaupun tidak
menutup kemungkinan bagi orang untuk
menggunakannya secara komersial. Mono
itu seperti distro Mandrake di mana ada
upaya komersial untuk menjual distro itu
dan memberikan pelayanan pelanggan tapi
tetap saja orang bisa menggunakan distro
Mandrake itu secara bebas dan gratis.
Untuk GUI, tidak seperti Mono yang
menggunakan GTK+ binding sebagai fokus
utamanya, DotGNU menggunakan toolkit
Mono Documentation Library.
System.Windows.Forms. Mono mengguna-
kan pustaka winelib sebagai implementasi
dari toolkit System.Windows.Forms, se-
dangkan DotGNU menggunakan pen-
dekatan Java Swing. DotGNU tidak meng-
gunakan pustaka pihak ketiga, seperti
GTK+, Qt, ataupun Wine sebagai imple-
mentasi dari toolkit System.Windows.Forms.
Artinya DotGNU “menggambar” sendiri
penampilan aplikasi yang dibuat dari toolkit
System.Windows.Forms pada setiap plat-
form. Tentu masih ada beberapa bagian dari
toolkit System.Windows.Forms yang tidak
bisa “digambar” sendiri dan mesti meng-
gunakan pendekatan Wine.
Mungkin motivasi adalah perbedaan yang
paling menarik dari Mono dan DotGNU.
Motivasi utama dari proyek Mono yang
terlihat jelas dari situs dan milisnya adalah
ingin menghadirkan alat pengembangan
yang diharapkan bisa mendongkrak produk-
tivitas para developer di platform Free Soft-
ware seperti Linux. Motivasi utama dari
proyek DotGNU sendiri adalah menghindari
monopoli .NET-nya Microsoft. Malah
DotGNU sudah membuat pernyataan khusus
tentang bahaya .NET Microsoft bagi Free Soft-
ware di websitenya. Jadi Mono atau DotGNU?
Kebebasan ada di tangan Anda.�Akbar ([email protected])
www.infolinux.web.id56 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SciLab
Kelangkaan (baca: mahalnya)software
(dalam hal ini Matlab, dari
MathWorks, http://www. mathworks.
com) yang dapat digunakan untuk me-
nyimulasikan proses-proses yang terjadi pada
sistem teknik pengaturan tersebut, se-
wajarnyalah tidak memberikan kendala bagi
para mahasiswa tersebut untuk belajar lebih
lanjut. Sifat yang mengekalkan pembajakan
hak cipta, sudah waktunya untuk dihindari
di negeri ini. Untuk itu, marilah kita tilik
perangkat simulasi teknik pengaturan yang
berbasiskan Open Source Software (OSS).
Kalangan pendukung OSS, khususnya
pengguna Linux dan FreeBSD dihadapkan
pada dua pilihan software yang kurang lebih
berfungsi sama dengan Matlab, yaitu GNU
Octave dan Scilab. GNU Octave (http://
www.octave.org) dikembangkan di Dept. of
Chemical Eng., Univ. of Winsconsin, Amerika,
sedangkan Scilab (http://www-rocq.inria.fr/
scilab) dikembangkan oleh INRIA/ENPC
Cergrene, Prancis. SciLab bersifat open
source (tidak didaftarkan dengan lisensi
GNU) dan diperkenalkan sejak 1994.
Pada kesempatan ini, penulis mencoba
memaparkan penggunaan SciLab untuk
membantu memahami pembahasan sistem
kontrol/kendali. Untuk hal tersebut, pe-
maparan akan dimulai dengan tahap
instalasi Scilab v2.7 (stable) pada distro
Mandrake Linux v9.0. Sebenarnya, pada
saat penulisan naskah ini, SciLab v3.0 RC1
sudah dapat di-download oleh para peng-
guna.
Setelah instalasi di atas, penulis akan
membahas dua contoh yang digunakan
pada sistem kontrol (control system)
sebagai dasar pijakan penggunaan software
tersebut sebelum melangkah pada tahap
pemodelan dan pembahasan sistem yang
bersangkutan.
Instalasi SciLabInstalasi SciLab bukanlah hal yang sukar.
Paket RPM telah tersedia di situs berikut ini
(http://scilabsoft.inria.fr) dan dapat segera di
download sesuai dengan sistem operasi yang
Anda gunakan. Pilihlah file instalasi bagi
sistem Linux bila Anda mengunjungi situs
tersebut. Untuk hal tersebut, penulis men-
downdload scilab-2.7-1.i586.rpm dan untuk
sementara disimpan pada direktori /tmp.
Berikut ini adalah tahapan instalasinya.
[indraindra]$ su
password: ******** (password
root anda isikan pada bagian
*** tersebut)
[flop-xindra]# cd /tmp
[root@flop-x tmp]# rpm -ivh
Teknik Pengaturan atau lebih dikenal dengan terminologi sistem kontrol atau sistemkendali (dalam bahasa Inggris: control system, control theory, control engineering, pro-cess control) merupakan mata pelajaran utama pada perguruan tinggi yang berbasisteknik (engineering), seperti teknik mesin, teknik elektro dan elektronik, teknik kimia,teknik fisika, dan sebagainya.
SciLab: PemodelanSistem Kontrol
Gambar 1. Tampilan SciLab pada Mandrake Linux v9.0. Gambar 3. Perhitungan Fungsi Transfer (TF) dengan SciLab.
57InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
SciLab
scilab-2.7-1.i586.rpm
Preparing...
###############################
[100%]
1: Scilab
###############################
[100%]
Setelah terinstal dengan baik, pembaca
dapat temui SciLab pada direktori berikut;
/usr/lib/scilab-2.7/bin. Ketikan scilab pada
shell prompt setelah merujuk direktori
tersebut. Selanjutnya, Anda akan men-
dapatkan tampilan berikut ini:
[root@flop-x indra]$ cd /usr/
lib/scilab-2.7/bin
[root@flop-x indra]$ ./scilab
Untuk mengetahui apakah scilab ber-
fungsi dengan baik, cobalah ikuti per-
samaan/operasi matematika sebagaimana
ditampilkan pada Gambar 1.
Diagram BlokPada teknik pengaturan (sistem kontrol),
kita kenal dua jenis sistem, yaitu sistem siklus
terbuka (open-loop) dan siklus tertutup
(close-loop). Ciri utama sistem siklus ter-
tutup ialah adanya komponen umpan-balik
(feedback) pada sistem dalam pembahasan.
Sedangkan pada sistem siklus terbuka
komponen umpan-balik ini tidak dijumpai.
Untuk memperlihatkan komponen-kom-
ponen ini, teknik pengaturan menyajikan
pengunaan diagram blok. Gambar 2 mem-
perlihatkan diagram blok dari kedua jenis
sistem tersebut.
Contoh 1(Dicuplik dari buku Sudhir Gupta, Elements
of Control Systems, Prentice Hall of India,
New Delhi, 2002).
Sebuah potensiometer digunakan sebagai
transducer posisi angular. Jangkauan angu-
lar potensiometer ini adalah 0°-300° dan
catu daya masukan 12V. Potensiometer
tersebut bersifat linier. Tentukan fungsi
transfer (TF = Transfer Function) dari sistem
tersebut.
Contoh 1 ini dapat ditampilkan dengan
diagram blok sistem siklus terbuka seperti
pada Gambar 2a. Fungsi Transfer (TF)
adalah perbandingan Keluaran/Masukan
(Output/Input). Dan, bagi potensiometer
tersebut, Input = 300°, dan Output = 12V.
Jadi, TF yang dihasilkan dapat diper-
lihatkan secara sederhana seperti pada
Gambar 3.
Tentunya, contoh 1 di atas masih ter-
golong sebuah permasalahan yang teramat
sederhana. Bagi pembaca yang ingin me-
ngetahui TF, sebaiknya merujuk pada buku
Elements of Control Systems. Bila ingin
mengetahui TF pada SciLab secara lebih
rinci, pembaca dapat mengetikkan ‘help
transfer’ pada SciLab. Pada Gambar 3,
ditampilkan pula “error” yang akan di-
tampilkan SciLab bilamana kekeliruan
mengetik terjadi.
SciLab telah mengemas berbagai TF. Hal
ini dapat diperhatikan dari Gambar 4
berikut ini. Bila pembaca klik pada salah
satu jenis TF tersebut, maka akan di-
tampilkan informasi pengunaannya lebih
lanjut sebagaimana ditampilkan pada
Gambar 5.
Contoh 2Contol ini menampilkan diagram-diagram
yang perlu diketahui pada analisis sistem
kontrol, yaitu Bode, Nyquist, Root Locus,
dan lain-lainnya. Berikut ini adalah pa-
paran yang umumnya ditemui bagi mereka
yang tidak asing dengan sistem kontrol,
yaitu berbagai jenis diagram yang di-
gunakan untuk menyatakan kestabilan
sebuah sistem.
Secara sederhana, bahasan berikut me-
ngacu pada Gambar 2b. Untuk meng-
hindari kompleksitas bahasan, telaah sistem
lebih lanjut tidak diulas di sini. Pembaca
yang berminat lebih lanjut, silakan rujuk
buku Elements of Control Systems dan situs
SciLab Group, Introduction to Scilab -user
guide-, http://scilabsoft.inria.fr ataupun
pustaka yang mengupas pengunaan Matlab
[G.J. Borse, Numerical Methods with
Matlab, PWS Publishing Company, Boston,
1997].
Untuk mengikuti sistem kontrol berikut
ini, silakan menyalin teks berikut pada
Scilab. Setiap baris diikuti dengan tombol
Gambar 2: a. Siklus Terbuka, b. Siklus Tertutup.
Gambar 5. Transfer Function to State-Space.Gambar 4. Berbagai Fungsi Transfer yang telah dikemasdalam SciLab.
www.infolinux.web.id58 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
“enter”. Perhatikan penempatan titik-koma
‘;’, jumlah kurung buka ‘(‘ dan kurung tutup
‘)’ haruslah genap, dan seterusnya.
S=poly(0, ‘s’);
h=syslin(‘c’,
(s^2+2*0.9*10*s+100)/
(s^2+2*0.3*10.1*s+102.01));
h1=h*syslin(‘c’,(s^2+2*0.1*15.
1*s+228.01)/(s^2+2*0.9*15*s+
225));
// bode diagram
subplot(2,2,1)
gainplot([h1;h],0.01,100);
Gambar 6. Proses Perhitungan dan Grafik Bode Diagram pada Mandrake Linux v9.0.
// Nyquist diagram
subplot(2,2,2)
nyquist([h1;h])
// Chart & Black
subplot(2,2,3)
black([h1;h],0.01,100,
[‘h1’;’h’])
chart([-8 -6 -
4],[80,120],list(1,0));
// evans —> cari Root Locus
subplot(2,2,4)
H=syslin(‘c’,352*poly(-5,’s’)/
poly([0,0,2000,200,25,1],’s’,
Gambar 8. Diagram Nyquist .Gambar 7. Beberapa diagram pada Sistem Kontrol.
’c’));
evans(H,100)
Gabungan dari grafik-grafik yang diplot
di atas ditampilkan pada Gambar 6, 7, dan 8.
Paparan di atas menampilkan alternatif
penggunaan OSS (Open Source Software)
pada bidang teknik (engineering). Di sam-
ping software yang telah banyak dikenal
untuk bidang ini (Matlab), ternyata inisiatif
para programmer OSS pun telah menam-
pilkan perangkat pemodelan yang cukup
memadai, dan penggunanya pun akan
cukup terhormat dengan lebih meng-
hormati HaKI (Hak atas Kekayaan Inte-
lektual).
Scilab, sebenarnya dibuat semirip mung-
kin (baca: compatible) dengan perintah-
perintah yang tersedia pada Matlab. Walau-
pun ada beberapa perintah yang tidak sama,
tetapi padanannya pun masih tersedia.
Sebenarnya bagi mereka yang belajar
pada ilmu-ilmu sosial pun dapat meng-
gunakan perangkat ini. Hanya saja, penulis
belum menjumpai contoh yang memadai
untuk dikemukakan. Bagi mereka yang
cukup paham dengan contoh-contoh di atas,
tentunya dapat memetik arti fisik dari
grafik-grafik yang ditampilkan.
Newsgroup Scilab ada di comp.soft-
sys.math.scilab. Perbandingan antara Scilab
dan Matlab tersedia di www.biostat.wustl.
e du / a rc h i ve s / h t m l / s - n e w s / 1 9 9 9 - 0 6 /
msg00025.html.�Prianggada Indra Tanaya([email protected])
SciLab
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
IKLAN
www.infolinux.web.id60 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Indonesia kini terpuruk dalam krisis
multidimensi. Salah satunya adalah
keterpurukan di dunia pemanfaatan
teknologi informasi. Tetangga kita, Vietnam
atau malaysia misalnya, telah melesat jauh
di bidang pemanfaatan TI. Dengan tetap
optimis dan tidak mengecilkan usaha
pemerintah untuk memperbaiki sarana,
kebijaksanaan dan fasilitas penunjang
infrastruktur TI, bagaimanapun kita harus
maju.
Di dunia TI yang berkembang demikian
pesat, Internet adalah suatu hal yang mulai
menjadi kebutuhan wajib. Berita dan pe-
manfaatan TI di berbagai pelosok negara
bisa kita dapatkan dari Internet. Oleh
karena itu, ber-Internet adalah hal yang
sangat penting. Agar kita, generasi penerus
bangsa tidak ketinggalan pelajaran. Dengan
Internet, kita bisa belajar bagaimana
vietnam bisa mulai serius memanfaatkan
TI. Dengan berbicara melalui praktisi TI di
India dan membaca berbagai kolom orang
India, kita bisa belajar bagaimana sebenar-
nya proyek-proyek di Amerika Serikat bisa
lari ke India.
Salah satu cara untuk tersambung ke In-
ternet adalah menggunakan bantuan tele-
pon. Jaringan telepon kini terpasang cukup
meluas di banyak tempat di Indonesia.
Penyedia jasa Internet juga siap menye-
diakan jasanya. Bagi pengguna rumah yang
memiliki anggaran terbatas, dial-up se-
sekali untuk sekadar men-download berita
adalah cara yang murah. Cara yang lain
seperti leased line dan ADSL, walaupun
menawarkan kecepatan luar biasa, sangat-
lah mahal.
Menggunakan Linux, kita tidak memiliki
halangan apapun untuk ber-Internet. Distro
apapun sebenarnya. Bedanya, distro yang
satu menyediakan fasilitas lebih banyak dari
distro lainnya. Sebagai contoh, SUSE 9.x
menyediakan cara yang sangat mudah untuk
melakukan koneksi Internet. Di artikel ini,
kita akan memfokuskan diri untuk melaku-
kan dialup di SUSE 9.x. SUSE yang diguna-
kan sebagai referensi adalah SUSE 9.1,
namun dapat diterapkan di SUSE 9.0 tanpa
halangan berarti.
PersiapanSUSE 9.1 dapat mendeteksi hardware
dengan sangat sangat sangat luar biasa.
Dengan kernel 2.6 di dalamnya, distro ini
terbang ke langit bebas, mengalahkan
kemampuan deteksi hardware pada Win-
dows XP untuk beberapa hardware. Mo-
dem yang penulis miliki di notebook tidak
dikenali sama sekali oleh XP (membeli
notebook tanpa sistem operasi) dan di-
kenali dengan sempurna oleh SUSE 9.1.
Bahkan, SUSE menyediakan satu paket
khusus untuk menangani modem yang
penulis gunakan.
Pertama-tama, kita perlu memastikan
apakah hardware kita telah dikenali oleh
SUSE atau belum. Caranya, bukalah YaST
dan aktiflah di bagian hardware. Kemudian,
jalankanlah modul Hardware Information.
Tunggulah sebentar, dan ketika selesai
memeriksa, pastikan modem Anda terdaftar
di Hardware Information tersebut.
Banyak software modem yang tidak
dikenali dengan baik atau dikenali, namun
tidak dapat bekerja dengan sempurna.
Apabila berencana membeli modem, belilah
modem eksternal, yang pasti dapat dikenali
dengan baik di Linux.
Apabila modem telah dikenali, maka
sebagian besar masalah telah kita selesaikan.
Tugas berikutnya akan jauh lebih mudah.
Siapkan modem dan telepon Anda. Jangan
lupa kabel-kabelnya. Setelah itu, mintalah
SuSE menyediakan cara supermudah untuk melakukan dial-up. Cukup beberapa kali klik,dan Anda pun siap melanglangbuana ke dunia maya.
Dial-up Cepat di SuSE
Distro SuSE
Parameter modem.Informasi Hardware.
61InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
informasi dari provider Internet Anda. Artikel
ini menggunakan Telkomnet@instan sebagai
layanan dial-up Internet. Anda perlu menge-
tahui nomor telepon ISP Anda beserta
username dan password-nya. Harap diper-
hatikan bahwa SUSE secara default akan
mengingat password Anda. Tentunya, Anda
bebas memilih untuk selalu memasukkan
password ketika memulai proses dial-up.
Konfigurasi modem dan providerSetelah modem dikenal, nyalakan modem
dan bukalah YaST. Aktiflahdi bagian Network
Devices dan jalankanlah modul Modem.
YaST akan segera mendeteksi modem
Anda secara otomatis. Setelah itu, modem
Anda akan terdaftar dalam Modems to Con-
figure. Pilih modem Anda dan klik tombol
Configure. Sebuah dialog akan ditampilkan.
Pertama-tama, SUSE akan meminta
Anda untuk memasukkan berbagai param-
eter. Pertama-tama adalah dial prefix. Hal ini
tidak dibutuhkan kalau Anda tidak berada
dalam jaringan telepon PBX.
Setelah itu, Anda akan diminta untuk
memilih mode dial. Umumnya, mode dial
adalah tone dialing.
Parameter lainnya yang dapat diatur
adalah menyalakan speaker dan mendeteksi
dial tone. Aktifkan keduanya. Pemberian
parameter kini selesai. Klik tombol Next
untuk melanjutkan ke layar berikutnya.
Pada layar dialog ini, Anda akan diminta
untuk memilih provider. Pilihlah Custom
provider dan kliklah tombol New. Sebuah
dialog tambahan akan ditampilkan. Berikut
Distro SuSE
ini adalah contoh entri provider yang
penulis miliki:
Provider Name: Telkom
Phone Number: 080989999
Username: telkomnet@instan
Password: telkom
Setelah itu, klik tombol Next untuk
melanjutkan ke layar berikutnya.
Di layar berikutnya ini, kita akan me-
ngatur parameter koneksi. Umumnya, Anda
tidak perlu mengatur nilai-nilai di sini.
Hanya, pastikan Anda memilih Modify DNS
when connected dan Automatically retrieve
DNS. Apabila rekan Anda yang meng-
gunakan provider yang sama mengatakan
bahwa koneksi susah dilakukan atau terlalu
lambat, cobalah untuk mengaktifkan pilihan
Stupid Mode.
Klik tombol Next untuk menyelesaikan
pengaturan. Anda akan kembali ke layar
utama. Pastikan Anda melihat modem Anda
dalam Already Configured devices lengkap
dengan nama provider ISP Anda. Klik
tombol Finish untuk menyimpan segala
perubahan.
Sewaktu-waktu, Anda bisa mengubah
konfigurasi modem dengan klik pada
tombol Change. Apabila Anda memilih
Change, maka sebuah layar akan ditam-
pilkan. Anda bisa mengubah modem atau-
pun provider di sini.
Setelah perubahan disimpan, YaST akan
menanyakan kepada Anda apakah penga-
turan e-mail akan dilakukan. Bagi Anda
yang menginginkan, lakukanlah konfigurasi
Modem telah dikonfigurasi.Provider Internet.
e-mail. Bagi Anda yang tidak memerlu-
kannya, jawablah tidak. Kini, Anda siap
untuk melakukan dial-up.
Memulai dial-up!SUSE menyertakan sebuah tool, Kinternet
untuk membantu dial-up. Jalankanlah
Kinternet dari Internet|Dial up. Lihatlah ke
System tray Anda. Anda akan menjumpai
icon seperti colokan listrik yang tidak
tersambung. Klik sekali untuk melakukan
dialup.
Ketika dial-up sedang dilakukan, icon
akan berubah seperti colokan listrik dan
logo PLN. Apabila telah terkoneksi, icon
akan berubah seperti colokan listrik yang
terhubung dengan colokan lainnya.
Untuk mengakhiri koneksi, klik sekali
lagi pada icon tersebut. Segera, icon akan
berubah lagi menjadi colokan listrik yang
tidak tersambung.
Pada saat dial-up, Anda mungkin tertarik
untuk melihat log koneksi. Klik kananlah
pada icon colokan listrik tersebut dan
pilihlah View Log. Di sebuah window yang
ditampilkan, Anda bisa melihat apa-apa saja
yang terjadi.
Mudah sekali untuk melakukan dial-up
di Linux. Memang sedikit lambat, tapi yang
penting masih dapat terhubung ke dunia
maya yang penuh informasi. Tetaplah
mengikuti perkembangan dunia dan meng-
aplikasikannya secara lokal. Agar kita,
generasi penerus bangsa, bisa menjadi insan
TI yang bijaksana. Selamat mencoba!�Noprianto ([email protected])
www.infolinux.web.id62 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Bagi kita yang sering menggunakan
StarOffice, tentu saja kita selalu
menggunakan berbagai fungsi-fung-
si dasar seperti membuat dokumen baru,
membuka dokumen baik secara read/write
ataupun read only, menyimpan dokumen,
mengubah properties dokumen, mengetahui
statistik dokumen, mencari teks tertentu
dalam dokumen, ataupun mencetak doku-
men.
Semua fungsi tersebut adalah fungsi
dasar StarOffice. Tak terlepas dari kom-
ponen apapun yang Anda gunakan, baik
Writer, Calc ataupun Impress, membuka
dan menyimpan dokumen adalah tugas
dasar yang tak terelakkan.
Dengan macro, kita dapat mengem-
bangkan apa saja di StarOffice. Membuat file
manager sendiri pun bisa asalkan rajin
karena tersedia banyak dukungan fungsi file
sistem. Tidak mudah memang mempelajari
macro di StarOffice. Sering berlatih adalah
salah satu cara untuk mempelajarinya.
Membuat macro pada dasarnya adalah hal
yang menarik. Banyak hal tersimpan di paket
office berukuran ratusan megabyte ini. Di
artikel kali ini, kita akan membuat macro
untuk menyimulasikan berbagai fungsi dasar
StarOffice yang sering kita akses.
Kita akan melihat secara detail apa saja
yang perlu kita lakukan untuk membuat
dokumen baru. Tak lupa, hal-hal tersembunyi
dalam proses membuka dokumen tersimpan
juga akan kita kuak habis-habisan. Termasuk
di antaranya bagaimana membuka dokumen
dalam modus read-only.
StarOffice adalah paket Office luar biasa. Kemampuannya untuk dikembangkan lebihlanjut dengan bantuan macro membuat paket Office ini begitu fleksibel. Dengan macro,kita bahkan bisa menyimulasikan berbagai fungsi dari StarOffice.
Simulasi BerbagaiFungsi Dasar StarOfficedengan Macro
Setiap contoh macro yang ada sebisa
mungkin akan kita sajikan dalam bentuk
form, sehingga akan terlihat lebih bagus dan
bagi user akan lebih mudah untuk di-
gunakan.
Kita akan melihat, bahwa kemampuan
StarOffice tidak kalah dibandingkan dengan
paket office di Windows, seperti Microsoft
Office.
PersiapanSebelum memulai, ada baiknya kita mela-
kukan persiapan terlebih dahulu. Dalam
beberapa artikel sebelumnya, ketika kita
membahas macro StarOffice, kita menge-
tahui bahwa macro dapat disimpan di dua
tempat: ikut StarOffice ataupun ikut doku-
men. Artikel ini akan menggunakan cara
kedua. Dengan demikian, kita perlu mem-
buat sebuah dokumen teks baru. Berikan
nama yang bersesuaian, sebagai contoh
macro.sxw. Kemudian, buatlah modul baru
dengan cara berikut ini:
� Akses Tools|Macros|Macro.
� Pilih dokumen|Standard
� Klik tombol New, berikan nama Module1.
� Tutup layar edit macro, kita belum
membutuhkannya untuk saat ini.
Berikutnya, kita perlu memahami ter-
lebih dahulu beberapa hal berikut ini:
� Dulu, di StarOffice 5, kita mengenal
StarDesktop sebagai suatu objek yang vis-
ible. StarDesktop berfungsi sebagai
kontainer berbagai komponennya. Kini,
di StarOffice 7, banyak perubahan yang
terjadi. Salah satunya adalah pergantian
fungsi StarDesktop. Kini, StarDesktop
bukanlah komponen visible. Saat ini,
StarDesktop lebih mengacu kepada
konsep. StarDesktop adalah objek yang
menaungi StarOffice itu sendiri. Berbagai
fungsi umum StarOffice akan dilakukan
oleh StarDesktop. Sebagai contoh, mem-
buka dokumen, menyimpan dokumen,
mencetak dokumen, dan lain sebagainya.
� Dalam artikel ini, kita akan banyak
bermain dengan objek StarDesktop.
Sebagian kecil contoh akan membahas
bagaimana bekerja dengan dokumen teks.
� Cobalah merekam macro dan kemudian
lihat source code-nya. Akan terlihat sangat
kompleks. Jangan pedulikan untuk saat
ini. Kita akan mencoba lihat macro dari
sisi yang mudah.
Kita telah membahas pembuatan dialog
pada pembahasan macro StarOffice sebelum-
nya. Kali inipun, kita akan menggunakan
macro. Hanya, perlu diperhatikan bahwa kita
tetap membutuhkan Module untuk menyim-
pan berbagai subrutin kita. Dialog hanya
berfungsi sebagai user interface, dan tetap
akan memanggil berbagai subrutin yang
disimpan di dalam Module tersebut.
Membuat dokumen baruUntuk membuat dokumen baru, kita perlu
meminta bantuan StarDesktop. Berikut ini
adalah contoh kode dan penjelasannya:
Sub CreateNew
Dim doc as object
StarOffice
63InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
dim URL as string
dim Dummy()
URL = “private:factory/swriter”
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0 ,
Dummy())
end sub
Subrutin tersebut, apabila dijalankan,
akan membuka sebuah dokumen teks baru.
Perhatikanlah isi dari variabel URL. Pada
contoh ini, kita mengisikan nilainya dengan
private:factory/swriter.
Untuk membuka spreadsheet baru atau
presentasi baru, gantilah swriter dengan
scalc dan simpress. Adanya kata kunci pri-
vate kurang lebih melambangkan bahwa apa
yang kita panggil merupakan milik internal
StarOffice. StarOffice sangat kompleks dan
dapat mengizinkan komponen lain me-
ngontrol dokumen yang dibuka untuk
diakses dari komponen luar.
Sementara, Dummy() adalah sebuah ar-
ray kosong yang dilewatkan pada method
loadComponentFromURL milik StarDesk-
top. Method tersebut mewajibkan adanya
properti file dalam bentuk array. Karena kita
belum membutuhkannya saat ini, kita
menggunakan array kosong. Ini sepenuhnya
valid di StarOffice.
Doc adalah variabel yang mengacu
kepada objek dokumen baru yang dibuat.
Perhatikanlah method loadComponent-
FromURL tersebut. Parameter pertama
adalah URL. Parameter kedua, yang saat ini
bernilai _blank, akan membuka dokumen
pada window baru, parameter ketiga adalah
search flag, kita tidak akan membutuh-
kannya untuk saat ini. Parameter terakhir
adalah properti pembukaan dokumen. Kita
akan melihat contohnya nanti.
Setelah mengetahui cara-cara dasarnya,
kita akan membungkusnya dengan user in-
terface yang baik. Kita akan membat dialog
dengan beberapa tombol, yang masing-
masingnya apabila diklik akan membuka
dokumen baru.
Pilihlah Tools|Macros|Macro. Klik tombol
Organize dan pilihlah New Dialog pada li-
brary Standard. Berikan nama Dialog1.
Kliklah tombol Edit. Susunlah dialog seperti
gambar contoh.
Setelah itu, buatlah tiga subrutin tam-
bahan berikut di dalam Module1.
Sub CreateNewText
Dim doc as object
dim URL as string
dim Dummy()
URL = “private:factory/swriter”
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0 ,
Dummy())
end sub
Sub CreateNewSpreadSheet
Dim doc as object
dim URL as string
dim Dummy()
URL = “private:factory/scalc”
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0 ,
Dummy())
end sub
Sub CreateNewPresentation
Dim doc as object
dim URL as string
dim Dummy()
URL = “private:factory/
simpress”
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0 ,
Dummy())
end sub
Setelah itu, assignlah event Mouse Button
Released masing-masing tombol dengan
subrutin yang bersesuaian. Kenapa event
Mouse Button Released? Sebenarnya, kita
bisa saja memproses event Mouse Button
Pressed. Namun, dengan asumsi bahwa aksi
klik adalah menekan dan kemudian mele-
paskan tombol mouse, dengan kemung-
kinan user membatalkan aksi klik setelah
menekan tombol mouse, memproses event
ketika tombol mouse dilepaskan akan terasa
lebih bijak.
Anda bisa saja membuat modul-modul
tersebut menjadi lebih sederhana dengan
melakukan passing parameter. Sediakan satu
handler untuk ketiga button. Handler
tersebut akan menerima parameter berupa
nama button tersebut. Parameter tersebut
kemudian akan menentukan komponen apa
yang akan dibuka. Cara ini lebih sederhana,
namun, penerapannya akan lebih susah.
Buat subrutin SimulateNew di Module1
yang berisikan kode-kode berikut ini:
Sub SimulateNew
Dim Dlg As Object
DialogLibraries.LoadLibrary
(“Standard”)
Dlg = CreateUnoDialog
(DialogLibraries.Standard.
Dialog1)
Dlg.Execute()
Dlg.dispose()
End SubLayar edit Module.
StarOffice
www.infolinux.web.id64 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Untuk menjalankan Dialog1 tersebut,
jalankanlah subrutin SimulateNew. Bisa
dengan shortcut ataupun penambahan
menu item (baca edisi sebelumnya untuk
melakukan hal tersebut). Harap diper-
hatikan bahwa apa saja yang dijalankan dari
dialog ini tidak akan bisa ditutup ketika dia-
log belum ditutup. Method dispose pada dia-
log akan menutup dialog sekaligus mengem-
balikan memori yang telah dipakai.
Sampai di sini, kita telah mengetahui
bagaimana cara StarOffice membuat doku-
men baru. Kita akan melanjutkan dengan
menyimulasikan membuka dokumen ter-
simpan.
Membuka dokumen tersimpanUntuk membuka dokumen tersimpan, sama
seperti membuat dokumen baru, kita juga
tetap meminta bantuan StarDesktop. Berikut
ini adalah contoh kode dan penjelasannya:
Sub OpenDoc
Dim doc as object
Dim URL as string
Dim Dummy()
URL = “/tmp/a.sxw”
URL = ConvertToURL(URL)
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0,
Dummy())
end sub
Perbedaan dengan membuat dokumen
baru hanyalah terletak pada URL-nya.
Apabila pada pembuatan dokumen baru kita
menyebutkan komponen StarOffice, maka
kali ini kita menyebutkan nama file-nya
secara langsung.
Satu hal yang perlu diperhatikan adalah
perihal nama file. StarOffice adalah paket of-
fice multiplatform. Dengan demikian, nama
file adalah hal yang penting. Linux tidak
mengenal istilah drive C:. Demikian juga
pemisah direktori di Windows berbeda
dengan pemisah direktori di Linux. Oleh
karena itu, setiap nama file akan dikonversi
ke bentuk URL yang standar. Untuk pengu-
bahan ini, kita mengenal dua fungsi:
ConvertToURL dan ConvertFromURL
dengan fungsi sesuai dengan namanya.
Berikut ini kita akan membuat user in-
terface yang lebih baik. Kali ini kita tidak
akan membuat dialog sendiri, melainkan
akan menggunakan cara yang lebih mudah:
menggunakan inputbox. Buatlah subrutin
ini di dalam Module1.
Sub SimulateOpen
Dim doc as object
Dim URL as string
Dim Dummy()
URL = inputbox(“Nama
dokumen”,”Masukkan nama
dokumen”,”/tmp/a.sxw”)
URL = ConvertToURL(URL)
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0,
Dummy())
end sub
Panggilah SimulateOpen untuk mem-
buka dokumen baru. Untuk saat ini, peng-
guna perlu mengetikkan path lengkap ke
dokumen. Ekstensi dokumen bebas dan
StarOffice akan menentukan dengan kom-
ponen apa dokumen tersebut dibuka.
Inputbox adalah fungsi yang berguna
untuk menampilkan layar input kepada user.
Bagi Anda yang pernah menggunakan
Delphi/Kylix, fungsi ini serupa baik nama
dan fungsinya.
Sebagai tambahan dari membuka doku-
men dan memahami cara membuka doku-
men dengan pengubahan properti, kita akan
membuka dokumen secara read only. Ketik-
kan subrutin berikut ini di module1:
Sub OpenDoc2
Dim doc as object
Dim URL as string
Dim FileProperties(0) as New
com.sun.star.beans.
PropertyValue
URL = “/tmp/a.sxw”
URL = ConvertToURL(URL)
FileProperties(0).Name =
“ReadOnly”
FileProperties(0).Value = True
doc = StarDesktop.loadComponent
FromURL(URL, “_blank”, 0,
FileProperties())
end sub
Selama ini, parameter terakhir load-
ComponentFromURL selalu kita isi dengan
array kosong Dummy. Kali ini, kita akan
mengubah satu properti yaitu properti
ReadOnly. Sebelum itu, kita mendeklarasi-
kan FileProperties(0) sebagai instans dari
com.sun.star.beans.PropertyValue.
Perhatikanlah kedua baris berikut:
FileProperties(0).Name =
“ReadOnly”
FileProperties(0).Value = True
Pada bahasa lain, akan lebih mudah di-
pahami apabila dituliskan sebagai berikut:
FileProperties(0).ReadOnly =
True
Layar desain dialog.
StarOffice
65InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Akan tetapi, kita perlu memahami aturan
StarOffice yang menuliskan pengubahan
properti dengan dua baris tersebut.
Menyimpan dokumenSama seperti membuat dokumen baru
ataupun membuka dokumen, menyimpan
dokumen juga dilakukan dengan bantuan
StarDesktop. Berikut ini adalah contoh
penyimpanan dokumen. Ketikkan kode ini
di dalam bagian subrutin Anda:
Dim URL As String
Dim Dummy()
URL=”/tmp/a.sxw”
URL = ConvertToURL(URL)
Doc.storeAsURL(URL, Dummy())
Mencetak dokumenMencetak dokumen dengan bantuan macro
adalah hal yang mudah, menarik, dan bagi
sysadmin, adalah hal yang perlu diper-
hatikan. Kita akan membahas soal sys-
admin terlebih dahulu. Asumsikan ada
salah satu rekan kerja Anda yang nakal.
Beliau kemudian membuat virus macro
StarOffice yang sangat sederhana: men-
cetak puluhan kali ke berbagai printer di
dalam jaringan. Bisa Anda bayangkan kalau
tiba-tiba banyak printer yang sibuk men-
cetak berkali-kali?
Salah satu cara untuk mengontrol adalah
dengan menerapkan policy secure path list
yang tidak bisa diubah-ubah oleh user dengan
mudah. Gunakan StarOffice Configuration
Manager untuk melakukan pengubahan
secara mudah. Harap diperhatikan bahwa
SCM tidak dimiliki oleh OpenOffice.org.
Kembali ke pencetakan. Pencetakan da-
lam bentuk sederhana dapa dilihat pada
contoh berikut. Ketikkan bagian kode ini di
dalam bagian subrutin Anda:
Dim Dummy()
Doc.print(Dummy())
Untuk pencetakan yang lebih kompleks,
perhatikanlah contoh berikut ini. Contoh
berikut akan mencetak halaman tertentu saja:
Dim Doc As Object
Dim PrintProperties(0) As New
com.sun.star.beans.PropertyValue
PrintProperties(0).Name=”Pages”
PrintProperties(0).Value=”1-3;
7; 9"
Doc.print(PrintProperties())
Contoh berikut akan mencetak lebih
kompleks lagi. Lengkap dengan pemilihan
printer.
Dim Doc As Object
Dim PrinterProperties(1) As New
com.sun.star.beans.PropertyValue
Dim PaperSize As New
com.sun.star.awt.Size
PaperSize.Width = 20000' 20 cm
PaperSize.Height = 20000' 20 cm
PrinterProperties
(0).Name=”Name”
PrinterProperties (0).Value=”HP
Laserjet”
PrinterProperties
(1).Name=”PaperSize”
PrinterProperties
(1).Value=PaperSize
Doc.Printer =
PrinterProperties()
Doc.print(PrintProperties())
Kita tidak membuat user interface de-
ngan dialog kali ini.
Mengubah properties dokumenBukalah File|Properties. Maka Anda akan
dapat mengubah properti dokumen dengan
mudah. Dengan mengabaikan dialog tersebut,
kita akan melihat bagaimana mengubah
properti dokumen dengan bantuan macro.
Berikut ini adalah contoh subrutinnya:
Sub ChangeDocProperty
doc = StarDesktop.
CurrentComponent
doc.DocumentInfo.Title =
“Testing Macro:)”
End Sub
Satu hal yang menarik dari kode tersebut
adalah kode StarDesktop.CurrentCom-
ponent. Kita akan menggunakan cara seperti
ini untuk mendapatkan dokumen yang
sedang aktif dalam window. Berbeda dengan
macro pada Microsoft Office yang mem-
bedakan dokumen dan spreadsheet aktif,
StarOffice menerapkan cara yang sama
untuk mengambil dokumen aktif. Sangat
luar biasa!
Melihat statistik dokumenBagi penulis, salah satu fasilitas yang paling
sering diakses adalah melihat statistik
dokumen. Penulis harus mengetahui berapa
karakter yang ditulis, apakah sudah men-
cukupi persyaratan satu artikel. Untuk
mendapatkan fungsi tersebut, kita dapat
mengakses menu File|Properties|Statistics.
Berikut ini kita akan menampilkan infor-
masi tersebut dengan lebih cepat dengan
fungsi statistik buatan sendiri. Ketikkan
subrutin berikut ini di dalam Module1.
Statistik dokumen buatan sendiri.
StarOffice
www.infolinux.web.id66 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Sub MyStat
Dim StatString as String
doc = StarDesktop.
CurrentComponent
StatString = StatString +
“Character Count: “ +
doc.CharacterCount + chr(13)
StatString = StatString + “Word
Count: “ + doc.WordCount +
chr(13)
StatString = StatString +
“Paragraph Count: “ +
doc.ParagraphCount + chr(13)
msgbox StatString,64,
”Statistics”
end sub
Berikan shortcut agar mudah dijalankan.
Secara mendasar, apa yang perlu kita
dapatkan adalah properti CharacterCount,
WordCount, dan ParagraphCount milik
dokumen aktif. Selanjutnya, kita meng-
gabungkan semua informasi dalam satu
string, yang kemudian dicetak dengan fungsi
msgbox.
Parameter 64 menunjukkan dialog be-
rupa information. Fungsi ini lebih cepat
diakses daripada harus membuka File|
Properties|Statistics.
Mengatasi kelemahan Editor MacroStarOfficeBagi Anda yang pernah bekerja dengan
StarOffice dan Microsoft Office, coba
bandingkan kemampuan IDE kedua paket
office tersebut. Harus diakui bahwa editor
miliki Microsoft Office jauh lebih enak
digunakan.
Begitu kita mengetikkan suatu objek
diikuti tanda titik, maka properti dan
method yang bisa dipanggil akan ditam-
pilkan. Kita tidak perlu mengetikkan secara
manual. Bagi kita yang mudah lupa, hal ini
akan terasa sangat membantu.
Sebaliknya, editor untuk StarOffice akan
terasa sangat sederhana. Namun, tentu saja
kelemahan kecil tersebut tidak sebanding
dengan kemampuan paket Office itu sendiri.
StarOffice memiliki desain lebih baik, jauh
lebih stabil, jauh lebih bisa diandalkan, dan
bagi penulis pribadi, jauh lebih meng-
hasilkan.
Pada awalnya, penulis memiliki cukup
banyak kesulitan dengan editor yang susah
diajak kerja sama tersebut. Namun, penulis
kemudian mendapatkan cara yang sedikit
membantu. Yaitu, mencetak keluar properti
dan methodnya secara manual dalam
sebuah messagebox.
Perhatikan contoh berikut:
doc = StarDesktop.
CurrentComponent
msgbox doc.dbg_properties,64,
”Properties”
dan
doc = StarDesktop.
CurrentComponent
msgbox doc.dbg_methods,64,
”Methods”
Dengan mencetak properti dbg_pro-
perties dan dbg_method ke dalam message-
box, kita dapat melihat properti dan method
apa saja yang dimiliki oleh suatu objek.
Tidak interaktif dan menarik memang, tapi
tetap informatif.
Harapannya, dengan demikian kita tidak
lagi mengalami masalah dengan mengamati
properti dan method suatu objek. Hanya,
karena kita mengambil objek aktif, maka
hati-hatilah dalam menjalankan macro
tersebut. Pastikan Anda menjalankan macro
ini di objek yang bersangkutan. Sebagai
contoh, untuk mengetahui properti apa saja
yang dimiliki oleh komponen Writer, jalan-
kanlah di Writer dan bukannya tanpa
sengaja di layar edit macro.
Untuk mudahnya, macro tersebut di-
simpan ikut StarOffice dan diberikan short-
cut umum yang dapat dijalankan dari
seluruh komponen StarOffice.
Satu kelemahan cara ini adalah ketika
suatu objek menjadi begitu kaya raya akan
properti dan method. Dengan demikian,
satu layar messagebox tidak akan mampu
menampilkannya secara tuntas. Gabung-
kan dengan kemampuan menulis pada
Writer untuk mendapatkan properti dan
methodnya ditampilkan dalam dokumen
Writer.
Salah satu kelebihan StarOffice yang
tidak dimiliki oleh OpenOffice.org adalah
dokumentasi yang sangat baik. Apabila
dengan mengintip properti dan method
suatu objek masih tidak membantu, cobalah
mengintip dokumentasinya.
Sampai di sini perkenalan kita dengan
simulasi fungsi dasar StarOffice dengan
macro. Selamat mencoba, dan sampai ketemu
lagi dengan berbagai tip macro StarOffice.
Kita buktikan bahwa menggunakan Linux
bisa jauh lebih produktif dibandingkan
dengan menggunakan Windows. Bebas virus
dan lebih stabil. Pokoknya luar biasa, apalagi
dengan kehadiran kernel 2.6.�Noprianto ([email protected])
Mendapatkan method suatu objek.
StarOffice
67InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Membaca Prosesdengan Shell ScriptLinux menyediakan banyak informasi proses. Dengan shell script, kita bisa membacanyadan menampilkannya dengan mudah.
Linux adalah sistem operasi yang benar-
benar ramah dan user friendly. Bagai-
mana tidak? Keadaan sistem dengan
transparan dipetakan di dalam pesudo file
system /proc. Kondisi memory, memory yang
digunakan oleh proses, status sistem, dan
berbagai informasi lainnya dipetakan dalam
berbagai file di dalam direktori /proc.
Bagi yang menyenangi shell script, Anda
bisa mendapatkan banyak keuntungan
dengan membaca /proc tersebut. Sebagai
contoh, dengan mudah, kita bisa menge-
tahui sudah berapa lama sistem berjalan.
Cukup dengan membaca /proc/utime,
informasi lama sistem berjalan bisa di-
dapatkan dengan mudah. Atau, dengan
membaca /proc/cpuinfo, kita dapat me-
ngetahui dengan lengkap informasi proces-
sor yang digunakan. Semua itu dapat
dilakukan tanpa harus menggunakan pem-
rograman low level seperti assembly atau
bahasa C. Bayangkan ketika Anda harus
membaca informasi processor di Windows.
Di artikel ini, kita akan memfokuskan
diri untuk membaca status proses. Proses
adalah hal yang supermenarik di Linux.
Kehebatan Linux dalam menangani proses
dan alokasi sumber daya menjadikannya
sangat stabil. Di linux, semua proses me-
miliki sebuah id unik, yang lazimnya disebut
sebagai PID (Process ID). Kita cukup
mengetahui ID sebuah proses untuk me-
lakukan berbagai hal pada suatu proses.
Di Linux, kita mengenai sebuah proses
nenek moyang, yaitu proses init. Proses ini
memiliki PID 1. Semua proses adalah anak,
cucu, cicit atau turunan lebih lanjut dari
proses init ini.
Berikanlah perintah ‘ps ax’ untuk melihat
proses-proses di sistem. Anda akan melihat
sejumlah PID di layar. Sekarang, tampilkanlah
isi /proc, Anda akan mendapatkan banyak
direktori berupa angka-angka. Direktori
tersebut mencerminkan ID proses. Apabila
masuk ke sebuah direktori ID proses tersebut,
Anda akan melihat banyak file. File-file
tersebut memetakan informasi detail setiap
proses. Dengan demikian, sebenarnya, dengan
sebuah shell script pun, dengan mudah kita
bisa membuat program ps sendiri. Setuju?
Berbagai tool siap pakaiShell script bukanlah bahasa pemrograman
lengkap seperti C. Oleh karena itu, shell script
tidak menyediakan berbagai pustaka siap
pakai untuk mengakses sistem. Shell script
berfungsi sebagai “file batch” yang akan
memroses perintah-perintah yang kita beri-
kan di dalamnya. Shell script menyediakan
berbagai fungsi dasar pemrograman seperti
perulangan, seleksi, array, dan lain sebagainya.
Untuk menggantikan fungsi-fungsi
seperti fungsi pembacaan file, kita meng-
gunakan program yang telah disediakan.
Sebagai contoh, kita menggunakan program
cat untuk membaca isi sebuah file. Atau, kita
menggunakan program grep untuk peng-
gunaan regular expression.
Dengan demikian, kita sangat ber-
gantung kepada ketersediaan program eks-
ternal untuk menghasilkan shell script yang
memadai. Untungnya, program-program
standar seperti cat, grep, dan lain sebagainya
selalu tersedia di hampir setiap distro Linux.
Untuk memperlancar pembuatan shell
script, kita perlu sering berlatih agar lebih
menguasai penggunaan berbagai program.
Dengan penguasaan program seperti grep
atau tr misalnya, dengan mudah kita bisa
menggunakan regular expression di shell
script.
Di artikel ini, kita akan banyak meng-
gunakan program cat, tr, cut, grep, sort, uniq,
dan berbagai tool lain.
Satu hal yang penting adalah, kita me-
miliki banyak cara untuk mencapai tujuan
ketika kita menggunakan shell script. Seperti
pepatah, “banyak jalan menuju roma”.
Contoh yang Anda lihat mungkin berten-
tangan dengan gaya Anda. Anda berhak
untuk memiliki gaya sendiri. Hanya, seba-
iknya gunakanlah gaya yang efisien dan
pastikan script Anda mudah terbaca untuk
memudahkan debugging dan penyem-
purnaan oleh pihak lain. Tidak ada gunanya
membuat shell script yang pendek, namun
hanya dimengerti oleh Anda.
Membaca status prosesAda sebuah file yang menarik di direktori ID
proses di dalam /proc. File tersebut adalah file
status. File tersebut memetakan informasi real
time setiap proses seperti nama, status proses,
memory yang digunakan, pemilik proses,
mask signal, dan lain sebagainya. Kita akan
banyak memanfaatkan file ini nantinya.
Cobalah untuk memberikan perintah
berikut ini untuk mendapatkan informasi
dari proses init:
cat /proc/1/status
Berikut ini adalah contoh keluaran di
sistem yang penulis gunakan untuk menulis
artikel ini:
Name: init
State: S (sleeping)
Tgid: 1
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0000
Gid: 0000
FDSize:32
Groups:
VmSize: 620 kB
VmLck: 0 kB
Shell Script
www.infolinux.web.id68 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
VmRSS: 72 kB
VmData: 136 kB
VmStk: 8 kB
VmExe: 464 kB
VmLib: 0 kB
SigPnd:0000000000000000
SigBlk:0000000000000000
SigIgn:ffffffffd770d8fc
SigCgt:00000000288b2603
CapInh:0000000000000000
CapPrm:00000000ffffffff
CapEff:00000000fffffeff
Dengan program grep, kita dapat me-
nyaring informasi dengan mudah. Sebagai
contoh, kita akan mendapatkan nama proses
dari proses dengan ID 1 ini.
cat /proc/1/status | grep Name:
Yang tampil adalah:
Name: init
Apabila ingin mendapatkan string init
saja, kita perlu membuang tulisan Name:.
Cara yang penulis gunakan adalah dengan
memanfaatkan program cut untuk memecah
string dengan pemecah berupa tanda titik
dua. Berikut ini adalah contohnya:
cat /proc/1/status | grep Name:
| cut -d: -f2
Perintah tersebut akan menampilkan:
init
Apabila ingin membuang spasi di depan
init, Anda bisa menggunakan bantuan pro-
gram tr untuk membuang segala spasi kosong:
cat /proc/1/status | grep Name:
| cut -d: -f2 | tr -d
‘[:space:]’
Perintah tersebut akan menghasilkan
tulisan init.
Dengan demikian, kita bisa melihat
betapa mudahnya mengambil informasi dari
file status ini menggunakan shell script dan
berbagai tool.
Berikutnya, kita akan melihat berbagai
contoh lebih lanjut.
Contoh 1: prunstatusKita akan melihat bagaimana menghitung
jumlah proses yang sedang berjalan, sedang
tidur ataupun sedang dihentikan. Hal ini
umumnya kita temukan ketika kita men-
jalankan program top. Linux adalah pro-
gram multitasking sehingga dalam satu
waktu, kita bisa menemukan banyak proses.
Beberapa di antaranya sedang berjalan,
sedang tidur, ataupun sedang dihentikan.
Kita menyebut kondisi sedang berjalan,
sedang tidur, ataupun sedang dihentikan
tersebut sebagai status proses. Dalam time-
slice (potongan waktu tertentu, umumnya
dalam hitungan nanosecond atau mili-
second) tertentu, sebuah proses dapat
berubah status. Sistem membagi waktu
dalam berbagai timeslice. Oleh karena itu,
dalam satu waktu tertentu, kita dapat
melihat beberapa proses berjalan sekaligus.
Perhatikanlah State pada file status di /
proc/<ID>. Kita akan membaca semua file
status di /proc/<ID>, kemudian meng-
hitung berapa saja yang sedang dalam sta-
tus running, sleeping, atau stopped.
Berikut adalah kode dan penjelasannya:
#!/bin/sh
#(c) Noprianto, June 2004.
TEMP=temp
for i in ‘ls /proc | grep -e
‘[0-9]’‘
do
cat /proc/$i/status 2>/dev/
null | grep State: >> $TEMP
done
echo ‘cat $TEMP | wc -l‘ total
echo ‘cat $TEMP | grep sleeping
| wc -l‘ sleeping
echo ‘cat $TEMP | grep stopped
| wc -l‘ stopped
echo ‘cat $TEMP | grep running
| wc -l‘ running
rm -f $TEMP
Pertama-tama, kita mendapatkan direk-
tori angka-angka di /proc. Penulis meng-
gunakan bantuan program grep untuk
mendapatkannya. Penulis menggunakan
regular expression dengan pola [0-9] untuk
menyaring direktori berupa angka dari
keluaran program ls.
Setelah itu, dalam perulangan, kita akan
membaca setiap file status dan menyaring
State: untuk kemudian ditambahkan ke
dalam file temp. Setiap perulangan akan
menghasilkan satu baris entri di dalam file
temp.
Pada akhirnya, kita akan menghitung
jumlah baris dengan bantuan program wc.
untuk mendapatkan total, kita hanya akan
membaca jumlah baris tanpa melakukan
penyaringan apapun. Untuk mendapatkan
jumlah proses yang sleeping, kita akan
menyaring kata sleeping. kemudian meng-
hitung jumlah baris yang dihasilkan. Begitu-
pun dengan stopped dan running.
Berikut adalah keluaran script ini di
komputer yang penulis gunakan:
222 total
221 sleeping
0 stopped
1 running
Contoh 2: pproglibSetiap proses akan memanfaatkan berbagai
file, program, atau pustaka sistem. Dengan
mudah kita bisa mendapatkan informasi
tersebut. Bedanya, kita tidak lagi membca
file status untuk mendapatkan informasi
tersebut. file status hanya kita perlukan
untuk mendapatkan nama proses.
Sebagai gantinya, kita akan membaca file
maps. Kita tidak akan mengambil semua
informasi di dalam file ini. Yang kita ambil
adalah nama file, pustaka, atau program,
yang ciri khasnya adalah diawali dengan
karakter /.
Berikut adalah kode dan penjelasannya:
#!/bin/sh
[ $# -ne 1 ] && echo ‘basename
$0‘ \<pid\> && exit 1
cat /proc/$1/status | grep
Name:
cat /proc/$1/maps | grep /
Program ini harus menerima satu pa-
rameter. Apabila jumlah parameter tidak
sama dengan satu, kita akan menampilkan
cara penggunaan kemudian keluar dengan
exit code 1. program basename kita gunakan
untuk memperindah tampilan. Apabila
pengguna tidak memberikan parameter,
maka program akan menampilkan tulisan
berikut ini:
pproglib <pid>
Shell Script
69InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Perhatikan bahwa untuk menampilkan
karakter <, kita menggunakan cara <.
Setelah itu, kita akan mendapatkan nama
proses dengan menyaring Name: dari file /
proc/$1/status. Kemudian, kita menyaring
berbagai file yang terdaftar di /proc/$1/maps.
tanda $1 menunjukkan parameter pertama
yang dilewatkan pada program.
Berikut ini adalah contoh keluaran dari
program dengan parameter 1321 pada
komputer yang penulis gunakan:
Name: resmgrd
08048000-0804f000 r-xp 00000000
03:01 51281 /sbin/resmgrd
0804f000-08050000 rw-p 00007000
03:01 51281 /sbin/resmgrd
40000000-40018000 r-xp 00000000
03:01 6654 /lib/ld-
2.3.2.so
40018000-40019000 rw-p 00017000
03:01 6654 /lib/ld-
2.3.2.so
40029000-4002c000 r-xp 00000000
03:01 51278 /lib/
libresmgr.so.0.1
4002c000-4002d000 rw-p 00002000
03:01 51278 /lib/
libresmgr.so.0.1
4002d000-40159000 r-xp 00000000
03:01 6651 /lib/i686/
libc.so.6
40159000-4015e000 rw-p 0012c000
03:01 6651 /lib/i686/
libc.so.6
40160000-40167000 r-xp 00000000
03:01 6667 /lib/
libnss_compat.so.2
40167000-40168000 rw-p 00006000
03:01 6667 /lib/
libnss_compat.so.2
40168000-4017a000 r-xp 00000000
03:01 6666 /lib/
libnsl.so.1
4017a000-4017b000 rw-p 00011000
03:01 6666 /lib/
libnsl.so.1
4017d000-40185000 r-xp 00000000
03:01 6671 /lib/
libnss_nis.so.2
40185000-40186000 rw-p 00007000
03:01 6671 /lib/
libnss_nis.so.2
40186000-4018f000 r-xp 00000000
03:01 6669 /lib/
libnss_files.so.2
4018f000-40190000 rw-p 00008000
03:01 6669 /lib/
libnss_files.so.2
Apabila ternyata Anda merasa bahwa
keluaran program terlalu kompleks, Anda
dapat menyaring hanya nama file-nya saja
dengan memisahkan setiap baris dengan
program cut atau awk dengan pemisah
berupa spasi. Anda juga dapat menggantikan
spasi dengan karakter # misalnya. Harap
perhatikan bahwa Anda tidak dapat meng-
gunakan karakter : sebagai pemisah karena
telah digunakan pada informasi waktu
proses.
Salah satu kekurangan dari program ini
adalah tidak ada validasi ketika membaca
direktori ID proses. Apabila user memasuk-
kan ID yang tidak valid, maka pesan kesalahan
default akan ditampilkan. Untuk mengujinya,
Anda bisa menggunakan program test dengan
parameter -d yang akan menguji apakah
sebuah file ada dan merupakan direktori.
Contoh 3: pnameApakah Anda sering menjumpai kasus di
mana Anda ingin mengetahui PID dari
semua proses java di komputer Anda?
Misalnya ketika Anda ingin melewatkan
semua PID tersebut dengan signal SIGKILL
pada program kill? Apabila sering menga-
laminya, Anda mungkin tertarik pada
contoh program yang satu ini.
Contoh yang satu ini lebih mengacu pada
latihan pemrograman. Untuk tugas bunuh-
membunuh, Anda bisa melihat manual pro-
gram kill ataupun pkill.
#!/bin/sh
#(c) Noprianto, June 2004.
Shell Script
http://www.distrolinux.net
Sedia CD Distro Linux & BSD
Murah, Bergaransi (10Rb/CD)
Email : [email protected]
HP/SMS : 0812 1876 981
IKLAN
www.infolinux.web.id70 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
[ $# -ne 1 ] && echo ‘basename
$0‘ \<name\> && exit 1
export PIDS=””
for i in ‘ls /proc | grep -e
‘[0-9]’‘
do
TEMP=‘cat /proc/$i/status 2>/
dev/null | grep $1 | tr -s
‘[:space:]’ ‘:’ | cut -d: -f2‘
test ! -z $TEMP && test $TEMP
= $1 && PIDS=”$PIDS $i”
done
echo $PIDS
Program ini juga menerima sebuah pa-
rameter. Karena tujuan dari program ini
adalah mendapatkan semua PID dari nama
proses, maka program ini menerima para-
meter berupa nama. Apabila pengguna tidak
melewatkan parameter, maka pesan ke-
salahan berikut akan ditampilkan:
pname <name>
Sama seperti contoh sebelumnya, kita
menggunakan basename untuk mem-
perindah tampilan. Exit code 1 akan di-
kembalikan apabila terjadi kesalahan.
Kita memiliki sebuah variabel PIDS yang
nilainya kosong ketika program dijalankan.
Setelah itu, kita melakukan perulangan pada
direktori-direktori angka di dalam /proc dan
mendapatkan PID proses.
Untuk mendapatkan PID proses, kita akan
menyaring parameter pertama dalam file sta-
tus di semua direktori angka. Harap diper-
hatikan bahwa kita mungkin akan mendapat-
kan nilai kosong karena tidak semua file sta-
tus akan berisikan string yang ingin kita cari.
Apabila pencarian berhasil, variabel
TEMP akan berikan string berupa nama
proses. Kita telah membuang spasi yang
tidak diperlukan dengan program tr.
Sebagai contoh, kita menyaring kata java.
Tentu saja, tidak semua file status akan
berisikan kata java. Maka, kita perlu meme-
riksa variabel TEMP yang kita gunakan
sebagai penampung tersebut.
Apabila TEMP kosong, maka kita asum-
sikan bahwa direktori tersebut bukan
direktori yang kita inginkan. Oleh karena
itu, perulangan dilanjutkan. Tapi, apabila
TEMP berisikan nilai yang kita inginkan,
maka kita akan menambahkan direktori
tersebut dalam daftar PIDS.
Pada akhirnya, kita hanya perlu menam-
pilkan variabel PIDS yang telah berisikan
daftar PID untuk nama program yang kita
lewatkan.
Berikut ini adalah contoh keluaran script
pada komputer yang penulis gunakan
apabila diberikan parameter java:
21979 21980 21981 21982 21983
21984 21985 21986 21987 21989
21990 21991 21992 21994 21995
22005 22014 24753 24754 24755
24756 24757 24758 24759 24760
24761 24762 24763 24764 24765
24766 24767 24769 24789 24790
24791 24797 26535 26550 26563
Kenapa program ini menampilkan hasil
yang sederhana? Tujuannya adalah supaya
program ini dapat digunakan bersama pro-
gram kill. Sebagai contoh:
kill ‘./pname vi‘
Kelemahan utama dari program ini adalah
lambat. Hal tersebut disebabkan karena kita
mencari PID proses secara brute force.
Contoh 4: puserLinux adalah sistem operasi yang didesain
dengan memperhatikan konsep keamanan.
Oleh karena itulah, penerapan sisi ke-
amanan dapat ditemukan di hampir semua
tempat di Linux. Termasuk proses. Contoh
berikut ini akan menampilkan user yang
memiliki proses tersebut.
File yang kita gunakan adalah file status.
Perhatikanlah Uid: di dalam file ini. Kita akan
mengambil daftar Uid dan melihat ke dalam
/etc/passwd untuk mendapatkan nama user.
Berikut ini adalah kode dan penjelasan:
#!/bin/sh
#(c) Noprianto, June 2004.
[ $# -lt 1 ] && echo ‘basename
$0‘ \<pid\> [-v] && exit 1
export USERS=””
USERS=‘cat /proc/$1/status 2>/
dev/null | grep Uid: | tr -s
‘[:space:]’ ‘:’ | cut -d: -f2-
5‘
USERS=‘echo $USERS | tr ‘:’ ‘
‘‘
for user in $USERS
do
cat /etc/passwd | grep -w
$user | cut -d: -f1
done
export COUNT=‘echo $USERS | tr
‘[:space:]’ ‘\n’ | uniq | wc -
l‘
test ! -z $2 && test $2 = -v &&
echo —‘echo $COUNT | wc -w‘
users —-
program ini dapat menerima dua parameter.
Parameter pertama adalah parameter wajib
dan parameter kedua adalah parameter
opsional. Parameter pertama adalah pid, dan
parameter kedua adalah verbose. Apabila
parameter kedua dilewatkan, nama kita akan
menampilkan informasi ekstra.
Kemudian, kita memiliki sebuah variable
USERS yang bernilai kosong pada saat pro-
gram dijalankan. variabel ini akan menam-
pung user-user yang memiliki proses yang
dimasukkan oleh pengguna.
Pertama-tama, kita menyaring terlebih
dahulu Uid di file status. Kemudian, kita
menghapus spasi, menggantikan spasi
dengan tanda :, memisahkan berdasarkan
tanda : tersebut dan mengambil field kedua
sampai kelima. Setelah itu, kita mengganti
kembali pemisah : menjadi karakter spasi di
variabel USERS.
Dengan menggunakan perulangan, kita
akan mencari ke dalam /etc/passwd dan
langsung menampilkannya.
Setelah itu, kita menghitung jumlah user
unik yang kita dapatkan. Untuk itu, penulis
mencetak isi variabel USERS, mengganti spasi
dengan karakter newline (\n), mendapatkan
nilai unik dengan program uniq dan menge-
tahui berapa baris dengan program wc -l.
Kita akan memeriksa apabila paramater
kedua dilewatkan. caranya, dengan bantuan
program test, kita menguji apakah isi variabel
kedua kosong atau berisikan nilai tertentu.
Apabila berisikan nilai tertentu, kita akan
memeriksa apakah nilainya sama dengan -v.
Apabila sama, kita akan mencetak jumlah
user unik yang telah kita dapatkan tersebut.
Shell Script
71InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Berikut adalah contoh keluaran program
apabila dua parameter dilewatkan:
root
root
root
root
— 1 users —-
Salah satu kelemahan program ini adalah
tidak ada pemeriksaan bahwa suatu PID
benar-benar valid atau tidak.
Contoh 5: pchildrenProses di Linux memiliki hirarki yang jelas.
Nenek moyang proses adalah proses init
(proses dengan PID 1). Setelah itu, juga
terdapat anak-anak proses. Kemudian, ada
pula cucu-cucu proses. Umumnya, hubu-
ngan orang tua dan anak adalah hubungan
yang paling diperhatikan.
Terdapat sebuah program yang sangat
berguna untuk melihat hirarki proses dalam
bentuk tree. Program tersebut adalah pstree.
Dalam banyak kasus, pstree sangat mem-
bantu.
Namun, apakah Anda tertarik untuk
mendapatkan PID anak-anak suatu proses?
Sebagai contoh, pernahkah Anda tertarik
untuk membunuh semua anak proses dari
sebuah proses? Apabila Ya, mungkin Anda
akan tertarik dengan contoh program be-
rikut. Program berikut akan menampilkan
PID semua anak proses dari proses tertentu.
Berikut adalah kode dan penjelasannya:
#!/bin/sh
#(c) Noprianto, June 2004.
[ $# -lt 1 ] && echo ‘basename
$0‘ \<pid\> [-v] && exit 1
export CHILDREN=””
for i in ‘ls /proc | grep -e
‘[0-9]’‘
do
TEMP=‘cat /proc/$i/status 2>/
dev/null | grep PPid: | tr -s
‘[:space:]’ ‘:’ | cut -d: -f2‘
test ! -z $TEMP && test $TEMP
Shell Script
= $1 && CHILDREN=”$CHILDREN $i”
done
echo $CHILDREN
test ! -z $2 && test $2 = -v &&
echo —‘echo $CHILDREN | wc -w‘
children —-
Program ini menerima dua parameter.
Parameter pertama adalah parameter wajib
dan parameter kedua adalah parameter
opsional. paramater pertama adalah PID or-
ang tua dan parameter kedua adalah verbose.
Kita akan memiliki variabel CHILDREN
yang kosong ketika program dijalankan.
Pertama-tama, kita akan mendapatkan
semua direktori angka dan melakukan per-
ulangan di semua direktori tersebut sambil
membaca file status dan menyaring kata PPid:
Parent Process ID, atau PID milik orang tua
proses. karena kita akan mencari anak-anak
proses, maka kita akan menyaring proses-
proses yang orang tuanya adalah PID yang
dilewatkan sebagai parameter pertama.
IKLAN
www.infolinux.web.id72 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Kita menghapus spasi dan mengambil
hanya PPid proses tersebut. Kita juga me-
meriksa apakah PPid yang didapatkan sama
dengan parameter pertama. Apabila ya, maka
kita akan menambahkan direktori tersebut
sebagai isi dari variabel CHILDREN.
Setelah itu, kita hanya perlu menam-
pilkan isi dari variabel children. Apabila
pengguna memberikan parameter kedua,
maka informasi tambahan akan diberikan.
Pertama-tama, akan diperiksa dahulu
apakah parameter kedua kosong atau tidak.
Apabila berisikan nilai, maka akan diperiksa
apakah nilainya sama dengan -v. Apabila
benar, maka jumlah kata dalam variabel
CHILDREN akan dihitung dengan bantuan
program wc -w. Jumlah kata yang didapat-
kan adalah jumlah anak-anak proses.
Berikut ini adalah contoh keluaran dari
program ini:
1007 1066 12 1321 1373 1402
1439 1440 1491 1597 1607 1689
1833 1834 1835 1836 1838 1870
1941 2 2183 2190 2205 2234 2235
2250 2374 2428 2429 2430 2431
2432 27888 27891 27894 27897
27907 27910 27913 27915 27918
27924 27926 27931 27932 27951 3
30062 31110 31111 3202 373 3918
4 417 5 6 7 723 724 730 8 811 9
992
— 65 children —-
Contoh 6: mytopProgram top akan melihat proses-proses
yang paling banyak memakan resource
sistem. Program top adalah program yang
sangat luar biasa. Kita akan membuat pro-
gram top sederhana dengan shell script, yang
akan menampilkan proses-proses yang pa-
ling banyak memakan memory.
Program ini jelas masih kalah jauh
dibandingkan dengan program top. Pe-
ngertian paling banyak memakan memory
juga dilakukan secara sederhana. Berikut ini
adalah kode dan penjelasannya:
#!/bin/sh
#(c) Noprianto, June 2004
export LONGDATA=””
test -z $1 && COUNT=10 ||
COUNT=$1
for i in ‘ls /proc | grep -e
‘[0-9]’‘
do
NAME=‘cat /proc/$i/status 2>/
dev/null | grep Name: | tr -s
‘[:space:]’ ‘:’ | cut -d: -f2‘
VMSIZE=‘cat /proc/$i/status
2>/dev/null | grep VmSize: | tr
-s ‘[:space:]’ ‘:’ | cut -d: -
f2‘
DATA=”$VMSIZE:$NAME”
test ! -z $NAME &&
LONGDATA=”$LONGDATA $DATA”
done
LONGDATA=‘echo $LONGDATA | tr
‘[:space:]’ ‘\n’ | sort -nr‘
LONGDATA=‘echo $LONGDATA | tr
‘[:space:]’ ‘\n’ | uniq ‘
COUNTER=0
for i in $LONGDATA
do
let COUNTER=$COUNTER+1
echo ‘echo $i | tr ‘:’ ‘\t’‘
[ $COUNTER -eq $COUNT ] &&
break
done
Program ini dapat menerima satu param-
eter opsional yang akan diartikan jumlah
proses yang akan ditampilkan. Pertama-tama,
kita akan memeriksa apabila parameter
pertama kosong atau memiliki nilai. Apabila
kosong, maka variabel COUNT akan diset
secara default menjadi 10. Apabila berisikan
nilai, maka variabel COUNT akan diset sesuai
nilai yang diberikan.
Kita memiliki variabel LONGDATA yang
akan menampung seluruh proses dan
memory yang digunakan.
Untuk mendapatkan memory proses,
kita akan menyaring informasi VmSize.
Setelah itu, kita akan membangun struktur
sederhana berupa VmSize:Name. Kemudian,
apabila Name memiliki nilai, kita akan
meggabungkan struktur VmSize:Name
tersebut ke dalam variabel LONGDATA.
Setelah LONGDATA berisikan nilai dan
perulangan selesai, maka kita akan me-
nurutkan terbalik (dari besar ke kecil) dengan
bantuan program sort (yang diberikan opsi -
n untuk pengurutan bilangan). Setelah itu,
Shell Script
untuk menghilangkan entri ganda, kita akan
meminta bantuan program uniq.
Terakhir, kita akan melakukan perulangan
untuk menampilkan isi dari LONGDATA
tersebut sesuai isi variabel COUNT. Apabila
COUNTER telah mencapai COUNT, maka
perulangan dihentikan. Dalam menampilkan
isi dari LONGDATA, kita menggantikan :
dengan TAB dengan bantuan program tr.
Salah satu kelemahan program ini yang
paling terasa adalah lambat. Selain itu,
masih ada nama proses yang berganda. Hal
ini dapat dihilangkan, namun struktur
dalam LONGDATA mungkin harus diubah.
Berikut ini adalah contoh keluaran dari
program ini:
357432 java
179748 kernel
29364 kdeinit
29356 kdeinit
27908 kdeinit
27116 suseplugger
26860 httpd2-prefork
26676 kdeinit
25916 kdeinit
25628 kdeinit
Program mytop dapat dijalankan dengan
bantuan program watch untuk mendapat-
kan informasi secara perodik.
Demikianlah perkenalan kita dengan
informasi-informasi proses di Linux. Con-
toh-contoh dalam artikel ini lebih berfungsi
untuk mempelajari shell script daripada
menghasilkan program yang digunakan
pada lingkungan kerja produktif.
Satu hal yang perlu diperhatikan secara
umum adalah bahwa informasi proses
berubah sesuai kondisi sistem. Oleh karena
itu, kita tidak dapat mengandalkan pem-
bacaan informasi proses di /proc dalam
waktu yang berbeda. Pada contoh terakhir
misalnya, mytop, kita tidak bisa mengambil
semua informasi VmSize, diurutkan, dan
barulah mencari nama proses sesuai VmSize.
Takutnya, pada saat kita ingin mencari entri
yang sesuai dengan VmSize, entri yang
bersangkutan telah menggunakan VmSize
yang berbeda.
Kita bisa melihat bahwa Linux adalah
sistem operasi luar biasa. Masih banyak yang
bisa dikerjakan dengan membaca /proc.
Selamat mencoba dan sukses!�Noprianto ([email protected])
73InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Yang jadi pertanyaan, apakah
presentasi di layar komputer selalu
identik dengan PowerPoint? Tidak-
kah ada program lain yang dapat diseban-
dingkan atau bahkan lebih baik daripada
PowerPoint? Di lingkungan open source
terdapat banyak sekali paket presentasi yang
dapat digunakan untuk menggantikan
PowerPoint, misalnya LyX/LaTeX dengan
Acrobat Reader, MagicPoint, StarOffice/
OpenOffice.org Impress, Kpresenter, dan
lain-lain. Pemilihan tergantung pada rasa
masing-masing. Pada artikel ini, penulis
akan membahas bagaimana membuat
presentasi dengan LyX.
Apa yang membuat LyX lebihistimewa?Hampir semua software Office baik di ling-
kungan Linux maupun Windows menye-
diakan software untuk presentasi, seperti
Microsoft PowerPoint (*.ppt) pada Micro-
soft Office, StarOffice/OpenOffice.org Im-
press (*.sxi) pada StarOffice/Open-
Office.org, Lotus Freelance Graphics (*.pre)
pada Lotus SmartSuite, atau KPresenter
(*.kpr) pada KOffice.
Salah satu kelemahan dari berkas (file)
presentasi yang dihasilkan oleh software
Office ini adalah ukuran berkasnya yang
cukup bahkan sangat besar, terutama kalau
menggunakan kombinasi teks dan banyak
gambar, kecuali pada OpenOffice dan
KOffice. Kedua software ini menggunakan
format standard XML (eXtensible Markup
Language) yang terkompres zip atau tar
untuk memperkecil ukuran berkasnya,
namun dekompresi berkas ini pada saat
pembacaan dan penyimpanan data mem-
butuhkan memory yang besar dan mungkin
menyebabkan akses menjadi lambat.
Ada cara lain teknik presentasi tanpa
menggunakan semua jenis software di atas,
yaitu dengan menggunakan Adobe Acrobat
Reader (versi >4.0). Semua berkas PDF
(Portable Data Format) yang didesain
berukuran screen (layar monitor) dapat
dipresentasikan dengan Adobe Acrobat
Reader. Caranya: buka berkas PDF dengan
Adobe Acrobat Reader lalu pilih menu View| Full Screen (Ctrl+L). Tinggal mengguna-
kan mouse kiri atau kanan untuk memin-
dahkan halaman per halaman slide.
Seperti telah diketahui bahwa LyX
merupakan front-end dari LaTeX, sehingga
apa yang dapat dibuat dengan perangkat
lunak LaTeX dapat juga dibuat dengan LyX,
walaupun kadang-kadang harus meng-
gunakan perintah ERT (Evil Red Text).
Dengan kata lain, LyX mempunyai keung-
gulan konsistensi dan pe-layout-an sendiri
sehingga pengguna hanya mengetikkan
materi slide. Semua hal yang berkaitan
dengan layout dilakukan oleh LyX/LaTeX
dengan hasil sesuai dengan makro yang
Presentasi dengan LyXMelalui Acrobat ReaderSering kita mendengar seorang presenter, baik pengajar di universitas atau presenter disuatu seminar, beranggapan bahwa presentasi “harus” menggunakan PowerPoint.Apakah pendapat ini benar? Hal ini mungkin benar, karena saat ini hanya program inisaja yang sangat populer di masyakarat. Bahkan Lotus Freelance yang sejak dulu menjadipesaing PowerPoint pun tidak begitu populer di masyarakat.
Gambar 1. Tampilan pembuka LyX.
LyX
www.infolinux.web.id74 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
digunakan. Untuk mendesain slide pre-
sentasi, LyX menyediakan beberapa layout
yang telah didukung oleh paket LaTeX,
seperti misalnya PDFscreen, prosper, dan
seminar/foilTeX. Artikel ini hanya akan
membahas layout Prosper yang sangat
mirip dengan hasil PowerPoint atau
StarOffice/OpenOffice.org Impress, dan
PDFscreen yang sangat istimewa serta
mudah dibuat pada LyX.
ProsperProsper adalah suatu kelas LaTeX untuk
membuat transparansi atau slide presentasi.
Paket ini ditulis pada bagian atas dari kelas
seminar oleh Timothy van Zandt. Tujuan-
nya adalah untuk menyediakan suatu ling-
kungan yang mudah dalam membuat atau
mendesain slide, baik untuk presentasi
dengan overhead proyektor atau dengan
video proyektor. Slide yang dipersiapkan
untuk suatu presentasi dengan komputer
dan video projektor memungkinkan untuk
mengintegrasikan efek animasi, tampilan
pelan-pelan, dan lain-lain.
Berkas LyX yang menggunakan klas pros-
per, akan dikonversi ke dalam format LaTeX
dan akhirnya oleh LaTeX akan dikompilasi
menjadi dua format yang berbeda, yaitu:
� Format Adobe PostScript untuk trans-
paransi cetak.
� Format Adobe PDF untuk tampilan slide
pada komputer dengan Acrobat Reader.
Jika berkas ini dibuat dalam bentuk PDF,
slide prosper memberikan kemungkinan
pada efek transisi antarslide dan tampilan
pelan-pelan dengan beberapa efek animasi.
Macam-macam desain ProsperDi antara bermacam-macam slide desain
pada LaTeX, Prosper memiliki paling banyak
macam desain, seperti alienglow, autumn,
azure, blends, clean, contemporain, darkblue,
default, frames, lignesbleues, nuancegris, dan
troispoints. Untuk melihat bagaimana
perbedaan tampilan desain-desain ini, Anda
dapat melihat manual klas prosper atau pada
[http://warmada.pandu. org/TextProc/lyx/
prosper/] atau [http://prosper.sourceforge.net]
atau CTAN.
Membuat slide presentasi Prosperdengan LyXLangkah awal yang harus dilakukan sebelum
membuat slide dengan Prosper adalah
memastikan apakah pada jendela Document
Setting pilihan klas naskah (Document class)
Prosper ditemukan. Kalau belum ditemu-
kan, maka hal yang pertama harus dilakukan
adalah menginstalasi paket slides (Prosper)
pada direktori $texmf dan prosper.layout
Gambar 2. Document Settings Prosper pada LyX. Gambar 3. Tampilan desain slide-prosper pada LyX.
Gambar 4. Contoh tampilan PDF prosper di Acrobat Reader.
LyX
75InfoLINUX 08/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
pada direktori lyx/layouts/. Prosedur insta-
lasi paket ini sama persis dengan menginstal
paket lain pada software LaTeX.
Jika kedua paket ini telah terinstalasi
dengan baik dalam sistem, maka layout
Prosper akan muncul pada jendela dialog
Document Setting (Document class) yang
dapat ditampilkan melalui perintah Layout| Document. Pembuatan slide dapat dimulai
dengan memilih layout slides (Prosper) pada
Document class dan menambahkan peri-
ntah darkblue, pdf, accumulate, slideColor,
colorBG pada Options (lihat Gambar 2.
Document Settings LyX).
Materi slide dapat diisi seperti pengetikan
naskah yang lain pada perangkat lunak LyX.
Misalnya, berikan judul utama slide, nama
penulis, institusi. Tiap halaman slide selalu
dimulai dengan subklas Slide (lihat Gambar
3. Tampilan desain slide-prosper pada LyX).
Memanipulasi efek transisi padaProsper di LyXSlide tanpa efek transisi biasanya akan
membosankan peserta seminar. Bahkan,
sering kita mendengar celetukan, “Kok tidak
seperti PowerPoint?” Efek transisi ini akan
sangat berpengaruh kepada penyampaian
materi presentasi. Saat ini, efek transisi yang
sudah didukung oleh Prosper, meliputi Split,
Blinds, Box, Wipe, Dissolve, Glitter, dan Re-
place. Secara default, LyX hanya mengguna-
kan R/Replace sebagai efek transisi slide. Jika
transisi lain yang akan digunakan maka
perintah ERT (Evil Red Text) harus di-
tambahkan. Perintah-perintah yang biasa
digunakan misalnya (dalam kotak meru-
pakan perintah ERT):
\begin{slide}[transisi]{judul
slide}
materi slide yang dibuat
\end{slide}
Misalnya:
\begin{slide}[Split]{Pengantar}
ini contoh materi slide
item pertama
* ini contoh materi slide item
kedua
* ini contoh materi slide item
ketiga. Tidak semua bagian
harus di-ERT.
\end{slide}
Atau kalau ingin menambahkan overlay
sejumlah n kali, dapat dilakukan perintah
berikut:
\overlays{n}{
\begin{slide}[Glitter]
{Kesimpulan}
ini contoh materi slide
item pertama. Tidak semua
bagian harus di-ERT.
* ini contoh materi slide item
kedua. Tidak semua
bagian harus di-ERT.
* ini contoh materi slide item
ketiga. Tidak semua
bagian harus di-ERT.
\end{slide}
}
Salah satu contoh tampilan desain pros-
per dapat dilihat pada Gambar 4. Contoh
tampilan PDF Prosper di Acrobat Reader.
PDFScreenPaket pdfscreen membantu mendesain
kembali keluaran PDF dari naskah normal
sehingga pas dapat dibaca dengan jelas pada
layar monitor dengan menyisakan kebebasan
untuk memformatnya pada percetakan
konvensional. Ini dilakukan dengan men-
definisikan kembali batas samping dan lebar/
tinggi halaman sehingga pas untuk layar
monitor. Tujuan mendasar dari paket ini
adalah untuk merubah dimensi lebar dan
tinggi halaman sehingga menghasilkan
dimensi ideal yang pas dengan tampilan layar.
Untuk menjalankan paket ini, hanya
membutuhkan paket hyperref.sty yang
biasanya telah terinstal pada direktori $texmf.
Namun selain itu paket ini juga memerlukan
pdfscreen.layout yang harus ditempatkan
pada direktory lyx/layouts/. Paket pdfscreen
lengkap dengan layoutnya dapat didownload
LyX
IKLAN
www.infolinux.web.id76 InfoLINUX 08/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
dari [http://warmada. pandu.org/TextProc/
lyx/pdfscreen/] atau pada CTAN.
Membuat slide dengan pdfscreenSeperti halnya Prosper, mendesain slide
dengan paket ini dapat dilakukan dengan
memilih klas naskah slides (pdfscreen) pada
jendela dialog Document Setting (lihat
Gambar 5. Document Settings Pdfscreen).
Pengisian materi slide dapat diisi seperti
pengetikan naskah yang lain pada perangkat
lunak LyX. Misalnya, berikan judul slide,
nama pengarang, dan institusi. Tiap hala-
man slide selalu dimulai dengan subklas
Slide (lihat Gambar 6. Tampilan desain slide-
pdfscreen pada LyX).
Penambahan perintah pada kolom Op-
tions akan memberikan variasi tampilan slide
yang dibuat. Misalnya, penambahan opsi
panelleft atau panelright akan menyebabkan
panel navigasi terletak pada bagian kiri atau
kanan slide. Perintah paneltoc dipergunakan
untuk menambah daftar isi pada panel.
Transisi halaman pada pdfscreenSeperti halnya Prosper, pada pdfscreen juga
menyediakan fasilitas efek transisi pada tiap
halaman slide. Fasilitas ini menggunakan
perintah \pagedissolve{<option>} pada Ac-
robat. Macam-macam opsi dan kunci pada
perintah ini, meliputi /Split, /Blinds, /Box, /
Wipe, /Dissolve, /Glitter, /R(Replace). Para-
meter tambahan yang dapat ditambahkan
Gambar 5. Document Settings Pdfscreen.
pada opsi ini, meliputi /D (durasi dari efek
transisi dalam detik), /Di (arah pergerakan
yang hanya berlaku untuk transisi /Wipe dan
/Glitter), /Dm (ukuran yang hanya berlaku
untuk transisi /Split dan /Blinds), /M (gera-
kan dari dalam atau luar slide yang hanya
berlaku untuk transisi /Split dan /Box).
Contoh perintah transisi pada pdfscreen
adalah sebagai berikut:
\pagedissolve{/S /Spit /D 2 /Dm
/H /M /O}
Dengan perintah ini, halaman akan
mengalami transisi Split (/S /Split) dengan
Gambar 6. Tampilan desain slide-pdfscreen pada LyX.
Gambar 7. Contoh tampilan Pdfscreen di Acrobat Reader.
efek horizontal (/Dm /H) yang bergerak dari
bagian dalam ke arah luar halaman slide (/
O). Rentang waktu (/D) efek transisi ini
adalah 2 detik.
Software LyX tidak hanya dapat diguna-
kan sebagai alat bantu pengolahan naskah
(document processor), namun dapat juga
digunakan sebagai alat bantu untuk mende-
sain slide presentasi. Saat ini, baru beberapa
disain slide yang sudah didukung penuh
oleh LyX. Artinya, LyX menyediakan berkas
layout, sehingga paket LaTeX dapat digu-
nakan dengan lebih mudah.�I Wayan Warmada ([email protected])
LyX
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
IKLAN
Top Related