StarOffice Calc Fungsi Lookup di...
Transcript of StarOffice Calc Fungsi Lookup di...
www.infolinux.web.id50 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Spreadsheet memiliki berbagai fungsi yang dibutuhkan dalam membantu mengelolabisnis. Salah satu fungsi yang sangat berguna adalah fungsi lookup.
Fungsi Lookup di Calc
Spreadsheet diciptakan karena tool
tersebut bisa membantu seseorang
mengelola bisnis. Tentu saja bukan
bisnis skala enterprise, tapi banyak bagian
bisnis yang bisa diselesaikan dengan ban-
tuan spreadsheet. Spreadsheet dirancang
untuk menjadi one stop solution untuk
berbagai tugas pengelolaan bisnis sederhana.
Tentu saja, segala kemampuan spread-
sheet tersebut sangat ditunjang oleh adanya
berbagai fungsi. Mulai dari fungsi mate-
matika, statistika, keuangan, tanggal waktu,
pemformatan, dan lain sebagainya. Kali ini,
kita akan melihat salah satu fungsi spread-
sheet yang sangat berguna, yaitu fungsi
lookup.
Data yang baik adalah data yang di-
simpan secara terstruktur dan memiliki
integritas tinggi. Dengan demikian, diharap-
kan tidak ada data yang terduplikasi, tidak
konsisten ataupun susah untuk dicari.
Ketika merancang suatu data, umumnya,
kita merancang data master. Data master
haruslah tunggal dan memiliki integrasi
tinggi. Data tersebut mungkin akan di-
butuhkan oleh banyak entitas lain.
Setelah merancang data master, umum-
nya kita akan merancang data transaksi.
Contoh data transaksi yang umum adalah
penjualan harian. Dalam laporan penjualan
harian, umumnya yang disajikan hanyalah
kode barangnya. Untuk melihat detail nama
barang dan informasi lain, kita akan melihat
(lookup) ke data master.
Spreadsheet Calc menyediakan segala
fungsi lookup yang diperlukan. Fungsi yang
dimiliki, yakni hlookup atau vlookup
kompatibel dengan Microsoft Excel. Dengan
demikian, pengetahuan fungsi lookup di
Excel bisa dimanfaatkan di sini.
Vertikal atau horizontalTerdapat dua fungsi lookup yang populer:
vlookup dan hlookup. Keduanya memiliki
fungsi yang sama, dan tidak ada satu yang
lebih baik dari yang lain. Kapankah kita akan
menggunakan vlookup dan kapankah kita
akan menggunakan hlookup?
Jawabannya adalah perhatikan jenis tabel
master Anda. Apabila tabel master Anda
tersusun seperti tabel 1, maka fungsi lookup
yang digunakan adalah fungsi vlookup.
Sebaliknya, apabila tabel Anda tersusun
seperti pada tabel 2, maka fungsi lookup
yangdigunakan adalah fungsi hlookup.
Sebaiknya, dalam melakukan pendataan
yang baik, jangan biasakan untuk men-
campuradukkan berbagai jenis visualisasi
tabel. Pilih satu dan konsistenlah. Walau
tidak ada yang salah dengan hal ini, paling
tidak akan terlihat lebih indah dan pengguna
hanya perlu tahu satu jenis fungsi.
Mempersiapkan data masterSebagai contoh, kita akan mempergunakan
data master vertikal sebelumnya. Kita perlu
memberikan nama kepada tabel master
tersebut agar dikenali oleh StarOffice.
Lakukan langkah berikut ini untuk mem-
berikan nama pada tabel:
1. Blok keseluruhan isi tabel.
2. Akses menu Insert|Names|Define.
3. Sebuah dialog akan ditampilkan. Berikan
nama yang bersesuaian, misalnya
msBarangv.
Tabel 2.
Kode KNS-10100 KNS-10210 KNS-30300 KNE-40000 KNE-50000Harga 2000000 2500000 3250000 10000000 15000000
Tabel 1.
Kode HargaKNS-10100 2000000KNS-10210 2500000KNS-30300 3250000KNE-40000 10000000KNE-50000 15000000
Berikut ini adalah prototipe fungsi vlookup:=VLOOKUP(Search criterion;array;index; sort order)Parameter DeskripsiSearch criterion Nilai yang ingin dicari.Array Tabel di mana data akan dicari.Index Nomor kolom di dalam array yang mengandung nilai yang akan dikembalikan.Sort order Parameter yang diberikan untuk menandakan apakah kolom pertama dalam
array telah diurutkan secara ascending. Berikan nilai FALSE apabila tidakterurut, dan TRUE apabila terurut.
Berikut ini adalah prototipe fungsi hlookup:=HLOOKUP(Search criterion;array;index; sort order)Parameter DeskripsiSearch criterion Nilai yang ingin dicari.Array Tabel dimana data akan dicari.Index Nomor baris di dalam array yang mengandung nilai yang akan dikembalikan.Sort order Parameter yang diberikan untuk menandakan apakah baris pertama dalam
array telah diurutkan secara ascending. Berikan nilai FALSE apabila tidakterurut, dan TRUE apabila terurut.
Prototipe fungsi
StarOffice Calc
51InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
4. Tutup dialog tersebut dan pastikan nama
tabel Anda tercantum pada Sheet Area di
bawah nama font di toolbar.
Contoh penggunaan VlookupContoh lookup sederhana. Kita isikan sel E1
dengan KNS-10100 dan kita berharap sel F1
akan berisikan harga dari KNS-10100.
Ketikkan KNS-10100 di E1 dan ketikkan for-
mula dan function berikut di F1:
=VLOOKUP(E1;msBarangv;2;0)
Contoh berikutnya. Kita memiliki tabel
transaksi dengan tiga kolom: Kode, Qty dan
Pendapatan. Yang terisi hanyalah Kode dan
Qty. Untuk mengetahui Pendapatan perkode
barang, tentulah kita harus mengetahui
harga satuannya terlebih dahulu. Setelah itu,
barulah kita kalikan dengan Qty dan di-
simpan sebagai pendapatan.
Tabel master vertikal. Tabel master horizontal.
Berikut ini adalah visualisasi tabel kita:
A B C1 Kode Qty Pendapatan2 KNS-10100 2003 KNS-10210 4004 KNS-30300 305 KNE-40000 106 KNE-50000 10
Tujulah C2 dan ketikkanlah formula dan
fungsi berikut ini:
=VLOOKUP(A2;msBarangv;2;0)*B2
Setelah itu, tariklah isi sel tersebut ke
bawah sampai ujung tabel. Dengan demi-
kian, persoalan kita pun selesai.
Berikut ini adalah penjelasannya. Per-
tama-tama, kita perlu memahami bahwa
kita perlu mendapatkan harga barang dari
StarOffice Calc
Pemberian nama tabel master. Hasil lookup.
kodenya. Kita akan melihat ke tabel data
master kita dengan fungsi vlookup. Setelah
mendapatkan harga, kita perlu mengalikan
dengan kolom B untuk mendapatkan hasil
di kolom C.
Pada saat melakukan vlookup, kita akan
mengambil kriteria dari kolom A, melihat
tabel msBarangv di kolom ke-2 dengan
asumsi kolom pertama pada msBarangv
tidak terurut. Harap diperhatikan bahwa
kita tidak mengambil dari kolom pertama
di msBarangv. Apa yang kita butuhkan ada
di kolom ke-2. Sementara kolom pertama
adalah kolom untuk mencocokkan. Oleh
karena itu, parameter ketiga dari vlookup
kita berisikan nilai 2. Untuk fungsi hlookup,
gantikan saja kolom dengan baris dan
sebaliknya, dan Anda akan mendapatkan
fungsi yang serupa!�Noprianto ([email protected])
www.infolinux.web.id52 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Akhir–akhir ini, popularitas bahasa scripting semakin menanjak. Bahasa scripting punsemakin mendapat di hati para programer. Salah satunya adalah Ruby. Simak ulasannyaberikut.
Pemrograman Ruby
Salah satu alasan bahasa scripting
semakin populer adalah karena
kesederhanaannya, powerful, dan sa-
ngat mudah digunakan serta dikembangkan.
Bahasa scripting semakin diakui keberadaan-
nya, salah satu buktinya adalah Google dan
Nokia yang menggunakan bahasa scripting
Python dalam produk mereka. Mungkin
Anda selama ini sudah cukup puas dengan
bahasa pemrograman yang ada seperti Java,
C, C++, VB, dan sebagainya.
Mengapa kita memerlukan bahasa script-
ing? Bahasa scripting dirancang untuk tipe
aplikasi yang berbeda dengan bahasa pem-
rograman sistem seperti C dan C++. Bahasa
scripting sangat cocok digunakan sebagai
glue language(bahasa perekat) misalnya
untuk membuat interface antarkomponen-
komponen. Walaupun bahasa scripting
bersifat interpreter dan lebih lambat di-
bandingkan dengan bahasa compiler seperti
C dan C++, hal tersebut jarang diungkit
sebab bagian penting dari suatu program
misalnya yang berhubungan dengan sistem
tetap akan dibuat dengan bahasa pem-
rograman sistem seperti C dan C++, sedang-
kan bahasa scripting berfungsi sebagai glue
language untuk menghubungkan antar
komponen–komponen sistem tersebut
misalnya untuk GUI interface.
Pada umumnya, bahasa scripting memi-
liki string processing yang sangat akurat
misalnya regular expression sehingga sangat
cocok untuk administrator sistem untuk
membuat shell script yang powerful. Di pihak
lain, bahasa scripting menawarkan pengem-
bangan aplikasi yang cepat misalnya pem-
buatan aplikasi GUI, web scripts, system
utilities, dan aplikasi yang membutuhkan
pemrosesan string ataupun perhitungan
yang akurat.
Dalam perhitungan, bahasa scripting
tidak kalah jika dibandingkan dengan
bahasa compiler seperti C dan C++.
Sejarah singkat RubyBahasa Ruby lahir pada tanggal 23 Februari
1993 dan masuk ke Amrik pada tahun 2000.
Pada awalnya, pembuat bahasa ini Yukihiro“Matz” Matsumoto semasa kuliahnya
sangat menyenangi pemrograman berorien-
tasi objek dan bahasa scripting, kemudian
dia melakukan riset terhadap bahasa script-
ing Perl dan Python. Akan tetapi dia tidak
menemukan yang diinginkannya.
Menurutnya bahasa Perl kurang power-
ful dan bahasa Python kurang object-ori-
ented, sehingga ia memutuskan untuk
membuat suatu bahasa yang lebih powerful
daripada Perl dan lebih object-oriented dari
Python. Lahirlah bahasa baru yang dinama-
kan Ruby yang berarti sejenis batu permata.
Dewasa ini, Ruby sudah mulai diterima oleh
para programmer dunia. Konon, Ruby lebih
populer daripada Python di Jepang.
Fitur–fitur Ruby� Ruby merupakan bahasa interpreter.
� Ruby memiliki sintaks yang sederhana,
mudah dipelajari dan dipahami.
� Ruby mendukung exception handling
seperti halnya Java dan Python.
� Ruby kaya akan pustaka–pustaka siap
pakai yang powerful.
� Ruby murni merupakan bahasa ber-
orientasi objek di mana semua datanya
adalah objek, begitu pula dengan angka
8 yang merupakan instansi dari kelas
FixNum.
� Ruby mendukung single-inheritance dan
modul mix-in yang serupa dengan inter-
face di Java.(Multiple-inheritance dapat
digantikan dengan menggunakan fitur
mix-in ini).
� Ruby memiliki portabilitas yang tinggi
antar-platform sehingga dapat berjalan di
berbagai OS seperti UNIX, Linux, DOS,
Windows 95/98/Me/NT/2000/XP,
MacOS, BeOS, OS/2, dan sebagainya.
� Ruby mendukung dynamic-typing, se-
perti halnya Python di mana kita tidak
perlu mendeklarasikan tipe untuk suatu
variabel.
� Ruby mendukung garbage collection
seperti halnya Java dan Python di mana
Anda tidak perlu membebaskan memory
yang dialokasi( mis. free() di C) . Variabel
yang tidak lagi digunakan akan segera
dibebaskan oleh garbage collector. De-
ngan demikian, Anda tidak perlu berhu-
bungan dengan manajemen memory
yang merumitkan.
� Ruby mudah dikembangkan dengan
bahasa C seperti halnya Python misalnya
dengan menggunakan interface SWIG.
� Ruby lahir dari komunitas, sehingga Ruby
memiliki dukungan komunitas yang siap
membantu Anda jika menemui kesulitan.
� Dan yang terakhir, tentunya Ruby gratis
bahkan untuk aplikasi komersial.
Instalasi RubyPada artikel ini, penulis menggunakan Ruby
ver 1.8.0 dari distro Mandrake 9.2 . Untuk
mendapatkan versi terbaru, Anda dapat
mengunjungi situs resmi www.ruby-lang.org.
Ruby biasanya disertakan dalam distro Linux
umumnya seperti Mandrake dan SUSE.
Untuk mempermudah instalasi tanpa
command-line, Anda dapat menggunakan
Control Center pada Mandrake ataupun Yast
pada SuSe.
$ rpm -ivh ruby-1.8.0-4mdk
$ irb
irb(main):001:0>
Dasar pemrograman RubySebagai bahasa scripting yang berbasis inter-
preter, Ruby menawarkan modus interaktif,
yakni Interactive Ruby yang disingkat dengan
irb. Untuk masuk ke modus interaktif Ruby,
Anda cukup mengetikkan irb pada command
prompt shell Anda, untuk keluar Anda cukup
Ruby
53InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
menekan tombol Ctrl-D atau ketikkan exit.
Anda dapat menambahkan opsi—simple-
prompt pada irb agar bentuk prompt-nya
berubah menjadi >>.
Di samping itu, tentunya program Ruby
juga dapat disimpan dalam file berextension
‘.rb’. Sama halnya seperti Python, modus
interaktif Ruby juga dapat digunakan sebagai
kalkulator untuk perhitungan sederhana.
Kemampuan menghitung Ruby tidak kalah
jika dibandingkan dengan Python. Konon,
Ruby memiliki kecepatan eksekusi program
yang lebih cepat dibandingkan dengan Python.
$ irb —simple-prompt
>> 2 + 3 - 1
=> 4
>> 3 * 2 / 2
=> 3
>> 4 % 3 ** 2
=> 4
>> 5.0/2.0
=> 2.5
Untuk tipe data angka yang dapat di-
tangani oleh Ruby, akan dibahas lebih de-
tail pada bagian bawah. Sekarang kita akan
mengenal lebih jauh tentang Ruby, terutama
sintaks–sintaks dasarnya.
1. Aturan penamaan variabelKarena Ruby bersifat dynamic-typing, Anda
tidak perlu mendeklarasikan tipe dan variabel
yang ingin Anda gunakan seperti pada bahasa
C. Anda cukup memasukkan nilai ke variabel
yang ingin Anda pakai. Aturan penamaan
variabel sama dengan aturan penamaan
variabel pada umumnya, yakni tidak boleh
dimulai dengan angka dan tidak memakai
keyword penting dari bahasa tersebut.
Berikut contoh deklarasi variabel:
Contoh valid:
x = 888
ini_variabel_string = “halo”
Contoh tidak valid:
8x = 888
while = “halo” # while adalah
reserved keyword
2. KonstantaKonstanta tidak lain adalah sebuah variabel
yang isinya tetap (tidak berubah). Konstanta
di Ruby dideklarasikan dengan huruf kapital
pada huruf pertama. Suatu konstanta tetap
dapat diubah nilainya. Pemberian status
konstanta pada suatu variabel hanya akan
memberikan suatu peringatan apabila kita
mengubah isi konstanta tersebut.
>> Pi = 3.14
=> 3.14
>> Pi = 3.1428
(irb):2: warning: already
initialized constant Pi
=> 3.1428
>> Pi
=> 3.1428
3. Input OutputUntuk meminta input-an dari user, kita
menggunakan perintah gets. Sedangkan
untuk output ke layar monitor, kita dapat
menggunakan puts, print maupun printf.
>> puts “Halo, pa kabar ?”
Halo, pa kabar?
=> nil
>> print “Halo, pa kabar ?”
Halo, pa kabar ?=> nil
>> nama = gets
Eric
=> “Eric\n”
>> printf “Nama saya %s”, nama
printf “Nama saya %s”, nama
Nama saya Eric
=> nil
Adapun perbedaan antara puts , print
dan printf yakni di mana puts akan menam-
bahkan karakter newline(‘\n’) pada akhir
string dan parameternya harus string,
sedangkan print hanya mencetak string
tanpa menambahkan karakter newline,
printf sama dengan print; bedanya printf
mengenal formatting seperti %s untuk
string,%f untuk float, %d untuk integer, dan
seterusnya. Perintah printf ini sama dengan
perintah printf di bahasa C.
4. Struktur programProgram Ruby umumnya juga memakai in-
dentasi seperti bahasa Python. Akan tetapi
indentasi tidak mutlak harus dilakukan,
karena Ruby menggunakan keyword end
untuk menandakan akhir dari suatu bagian
program.
5. Lain-lainMungkin pada beberapa contoh di atas,
Anda sering melihat tulisan nil. Nil berarti
suatu objek di Ruby sama dengan NULL di
bahasa C. Nil berarti hasil eksekusi perintah
tersebut tidak mengembalikan objek apapun
alias nil (tidak memiliki return value).
Misalkan perintah puts hanya mencetak
string ke layar dan tidak mengembalikan
objek apapun untuk disimpan alias nil. Akan
tetapi lainnya halnya dengan a = “halo” akan
mengembalikan objek String “halo” yang
akan disimpan dalam variabel a.
Untuk komentar pada program Ruby,
Anda dapat menggunakan tanda # . Untuk
lebih dari satu statement pada satu baris ,
Anda dapat menggunakan pemisah ‘;’. Sedang-
kan untuk statement yang lebih dari satu baris,
Anda dapat menggunakan tanda ‘\’.
>> a = 1#Variabel a berisi 1
=> 1
>> print “Halo “; puts “ apa
kabar ?”
Halo apa kabar ?
=> nil
>> b = 1 + 3 + 5 \
?> + 7 + 9
=> 25
Seperti umumnya untuk contoh pertama
program, kita akan membuat program
“Hello World !”. Berikut contohnya:
#hello.rb
#!/usr/bin/env ruby
puts “Hello World !”
Program di atas akan mencetak tulisan
“Hello World !” pada console Anda. Untuk
menjalankan hello.rb, Anda cukup me-
ngetikkan ruby hello.rb ataupun dapat
mengubah file permission menjadi execut-
able dengan perintah chmod +x hello.rb dan
menjalankannya.
$ cat > hello.rb
$ ruby hello.rb
Hello World !
$ chmod +x hello.rb
$ ./hello.rb
Hello World !
Sebelum melangkah lebih lanjut, kita
perlu mengetahui perbedaan objek dengan
kelas. Objek adalah suatu unit data. Sedang-
kan kelas adalah jenis dari objek tersebut.
Misalnya ada dua angka 5 dan 8 keduanya
adalah objek yang berbeda, akan tetapi
Ruby
www.infolinux.web.id54 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
mereka tergolong kelas yang sama Integer,
tepatnya kelas FixNum.
Objek Kelas Metode“Halo” String reverse, strip, ...1 .. 9 Range min, max, ...5 FixNum +, - ,* , /, %, ...83.5 Float +, - ,* ,/, %, ...[1, 2, “a”] Array push, pop, ...{“r” => “Ruby”} Hash delete,fetch, ...
Di samping itu, Anda juga perlu mengerti
tentang metode suatu kelas. Metode adalah
suatu hal yang dapat dilakukan pada suatu
objek. Untuk mengetahui tipe/kelas dari
suatu objek, kita dapat menggunakan metode
class ; sedangkan apabila kita ingin menge-
tahui metode-metode apa saja yang berlaku
umum untuk objek tersebut, Anda dapat
metode methods.
>> a = 1
=> 1
>> a.class
=> Fixnum
>> a.methods
=> [“to_a”, “%”,
“instance_eval”, “<<“,
“prec_i”, “coerce”, “&”,
“type”, “>>”, “ceil”,
“protected_methods”, “div”,
“extend”, ...]
Setelah berkenalan dengan dasar-dasar in-
terpreter Ruby, kini saatnya untuk membahas
beberapa tipe data dasar yang disediakan Ruby
yang tentunya merupakan instansi dari kelas–
kelas mengingat Ruby adalah bahasa ber-
orientasi objek yang murni. Di samping itu,
kita juga akan membahas beberapa metode
yang umum dari kelas– kelas tersebut.
1. AngkaRuby dapat menangani angka baik yang
bertipe integer maupun float. Untuk tipe data
Integer di Ruby, kelas Integer dibagi dalam
dua kelas yakni FixNum dan BigNum. Angka
dengan batas -230 sampai 230–1 tergolong
dalam kelas FixNum; apabila suatu angka
telah melampaui batas tersebut, maka akan
digolongkan dalam kelas BigNum. Karena
Ruby bersifat dynamic–typing, Anda tidak
perlu melakukan konversi dari FixNum ke
BigNum karena konversi akan dilakukan
secara otomatis. Sedangkan untuk angka
yang bertipe float, Ruby akan menganggap
objek angka tersebut merupakan instansi dari
kelas Float. Seperti bahasa pemrograman
umumnya, pada Ruby Anda dapat meng-
gunakan prefiks (awalan) untuk menandakan
arti angka tersebut, misalya untuk menyata-
kan bilangan negatif, 0 untuk bilangan oktal
, 0b untuk bilangan biner dan 0x untuk
bilangan heksadesimal serta e untuk bilangan
eksponensial.
Untuk mempermudah penulisan suatu
angka dengan nilai yang sangat besar, Anda
dapat membubuhkan karakter _ pada
penulisan angka (karakter _ tidak akan
disimpan, hanya untuk membantu saja).
>> a = 2
=> 2
>> a.class
=> FixNum
>> a = a ** 31
=> 2147483648
>> a.class
=> BigNum
>> 188_888_000_000
=> 188888000000
>> 0x6AF
=> 1711
>> 1.89e+18
=> 1.89e+18
>> b = 1.4
=> 1.4
>> b.class
=> Float
2. StringTipe data String di Ruby sama dengan tipe
data String pada bahasa pemrograman lain
umumnya. Untuk membuat tipe data String,
anda dapat menggunakan kutip satu ‘
ataupun kutip dua “ . Adapun perbedaan di
antara keduanya, yakni di mana objek String
yang dibuat dengan kutip dua “ akan
mengerti karakter khusus seperti ‘\n’,’\r’,’\b’
,dsb. ; sedangkan karakter dengan objek
String yang dibuat dengan kutip satu ‘ tidak
bisa menerjemahkan karakter khusus di atas.
Perhatikanlah contoh berikut:
>> a = “Hello\n”
=> “Hello\n”
>> print a
Hello
=> nil
>> b = ‘Hello\n’
=> “Hello\\n”
>> print b
Hello\n=> nil
Kelas String kaya akan metode-metode
yang powerful. Anda dapat mencoba bebe-
rapa di antaranya seperti berikut ini.
� length—untuk mengetahui panjang
suatu string.
� capitalize—untuk mengubah huruf
pertama pada awal kalimat menjadi
huruf kapital.
� downcase—mengubah string menjadi
huruf kecil.
� upcase—mengubah string menjadi hu-
ruf besar.
� swapcase—mengubah objek string de-
ngan huruf kecil diubah menjadi huruf
kapital dan sebaliknya.
� strip—membuang karakter whitespace
di awal dan akhir string.
� reverse—membalikkan string.
� include ? str—mengembalikan true jika
substring str terdapat dalam string dan
false jika tidak ada.
� chop—membuang karakter terakhir dari
string.
Salah satu hal yang unik dari Ruby adalah
Anda dapat menambahkan tanda ‘!’ di akhir
metode untuk menandakan metodenya
bersifat destruktif di mana hasil metode
tersebut berdampak langsung pada objeknya.
>> “Hello”.length
=> 5
>> “hello”.capitalize
=> “Hello”
>> “HELlo”.downcase
=> “hello”
>> “HeLLo”.upcase
=> “HELLO”
>> “hElLo”.swapcase
=> “HeLlO”
>> “hello”.reverse
=> “olleh”
>> “ hello “.strip
=> “hello”
>> “helloo”.chop
=> “hello”
>> “hello”.include? “h”
=> true
>> a = “ Hello “
=> “ Hello “
>> a.strip
=> “Hello”
Ruby
55InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
>> a
=> “ Hello “
>> a.strip!
=> “Hello”
>> a
=> “Hello”
3. ArrayTipe data Array di Ruby hampir sama
dengan tipe data array pada bahasa pem-
rograman lain umumnya. Tipe data Array di
Ruby sama dengan tipe data list di Python.
Untuk membuat suatu objek Array baru,
Anda dapat menggunakan literal Array []
ataupun konstruktor Array.new. Isi array
dapat berupa objek apapun baik angka, string,
maupun objek lain termasuk objek array itu
sendiri. Untuk mengakses elemen objek Ar-
ray ini, kita menggunakan indeks di mana
indeks awal dimulai dari 0 sampai panjang
array – 1. Anda juga dapat menggunakan
indeks negatif di mana indeks -1 berarti
elemen terakhir , -2 berarti elemen kedua
terakhir, dan seterusnya.
Apabila kita mencoba mengakses elemen
Array pada indeks yang di luar jangkauan,
pernyataan tersebut tidak akan menyebabkan
error seperti IndexError : list index out of range
di Python, Ruby akan mengembalikan objek
nil. Untuk mengubah isi array ataupun me-
nambahkan data pada objek Array dengan
indeks tertentu, kita bisa menggunakan state-
ment biasa seperti array[indeks] = nilai baru
. Apabila kita ingin membuat objek Array
yang berisi string, akan repot sekali untuk
menambahkan tanda kutip pada setiap
elemen Array. Hal tersebut dapat diatasi
dengan menggunakan prefiks %w. Untuk
jelasnya, simak contoh berikut:
>> a = []
=> []
>> a = [1,2,”m”,[3,4,5]]
=> [1, 2, “m”, [3, 4, 5]]
>> a[0]
=> 1
>> a[3]
=> [3, 4, 5]
>> a[3][1]
=> 4
>> a[-1]
=> [3, 4, 5]
>> a[6]
=> nil
>> a[1] = 88
=> 88
>> a
=> [1, 88, “m”, [3, 4, 5]]
>> c = %w(Anto, Eric, Isabel)
=> [“Anto,”, “Eric,”, “Isabel”]
Metode-metode pada kelas Array :
� length—untuk mengetahui ukuran array.
� push(nilai_baru)—untuk menambah
data pada array. Data terbaru akan
ditempatkan paling akhir.
� pop—mengembalikan data pada indeks
terakhir array dan menghapus data pada
indeks terakhir.
� reverse—membalik isi data array.
� sort—mengurut isi array secara ascending.
>> a = [“a”,”b”,”c”]
=> [“a”, “b”, “c”]
>> a.length
=> 3
>> a.push(“d”)
=> [“a”, “b”, “c”, “d”]
>> a.pop
=> “d”
>> a
=> [“a”, “b”, “c”]
>> a.reverse
=> [“c”, “b”, “a”]
>> a.sort
=> [“a”, “b”, “c”]
4. HashTipe data hash di Ruby sama dengan tipe data
dictionary di Python. Untuk membuat objek
hash yang baru, Anda dapat menggunakan
literal hash {} ataupun konstruktor Hash.new.
Lain halnya dengan array, untuk mengakses
elemen objek Hash kita tidak menggunakan
indeks seperti array. Kita dapat mendefinisi-
kan kunci(key) yang unik untuk setiap
elemen. Sama halnya seperti array, apabila
kita mengakses elemen dengan key yang tidak
tercantum di hash, maka akan mengem-
balikan nilai nil.
>> alamat = {
?> “Amat” => “Kemanggisan Raya
50”,
?> “Budi” => “Sudirman 80”,
?> “Eric” => “Sandang 9A”,
?> “Melissa” => “Pandu 77”
?> }
=> {“Eric”=>”Sandang 9A”,
“Budi”=>”Sudirman 80",
“Amat”=>”Kemanggisan Raya 50",
“Melissa”=>”Pandu 77"}
>> alamat[“Eric”]
=> “Sandang 9A”
Interactive Ruby, mirip dengan Python. Membangun aplikasi GUI dengan Ruby.
Ruby
www.infolinux.web.id56 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
>> alamat[“Dani”]
=> nil
5. RangeObjek range di Ruby merupakan suatu
barisan di mana terdapat nilai awal dan nilai
akhir dari barisan tersebut. Objek Range ini
sama dengan perintah range() di Python.
Untuk membuat suatu objek Range, kita
dapat menggunakan operator range ‘..’ dan ‘...’
. Format ‘..’ akan menciptakan objek Range
yang ikut menyertakan elemen terakhirnya,
sedangkan format ‘...’ akan menghilangkan
elemen terakhirnya. Range di Ruby tidak
dianggap sebagai objek Array melainkan
dianggap sebagai suatu objek Range sendiri.
Untuk menjadikannya objek Array, Anda
dapat menggunakan metode to_a . Untuk
lebih jelasnya, perhatikanlah contoh berikut.
>> a = (1..5)
=> 1..5
>> a.class
=> Range
>> (1..5).to_a
=> [1, 2, 3, 4, 5]
>> (1...5).to_a
=> [1, 2, 3, 4]
Konversi tipe dataWalaupun Ruby bersifat dynamic-typing,
konversi tipe data ada kalanya perlu dilaku-
kan untuk keperluan tertentu, misalnya kita
hendak mengkonversi inputan user menjadi
angka untuk dihitung ataupun meng-
konversi angka menjadi string untuk di-
cetak. Untuk mempermudah pembacaan ,
kita akan memakai notasi Kelas#metode
mengingat metode bisa sama namun efek-
nya berbeda untuk tiap kelas. Misalnya
metode + apabila diaplikasikan pada angka
dan string hasilnya pasti akan berbeda.
Metode Dari KeString#to_i String IntegerString#to_f String FloatFloat#to_s Float StringFloat#to_i Float IntegerInteger#to_s Integer StringInteger#to_f Integer FloatRange#to_a Range Array
Seleksi dan perulanganDalam pemrograman, kita tentunya me-
ngenal istilah seleksi dan perulangan. Untuk
seleksi kita akan menggunakan if, sedangkan
untuk perulangan kita akan menggunakan
for dan while. Penulis tidak akan lagi men-
jelaskan detail sintaks if, for, while karena
sintaksnya hampir sama seperti umumnya.
Seleksi if
#if.rb
#!/usr/bin/env ruby
print “Masukkan nilai Anda : “
nilai = gets
nilai.chop!
if nilai.to_i >= 85
puts “Anda mendapat grade A”
elsif nilai.to_i >= 75
puts “Anda mendapat grade B”
elsif nilai.to_i >= 65
puts “Anda mendapat grade C”
else
puts “Anda mendapat grade D”
end #end untuk if
$ ruby if.rb
Masukkan nilai Anda : 80
Anda mendapat grade B
Untuk perulangan, kita dapat memakai
metode times dari suatu angka.
>> 3.times { print “Hi “ }
Hi Hi Hi=> 3
>> 3.times do
?> print “Hi “
?> end
Hi Hi Hi=> 3
Perulangan while#while.rb
#!/usr/bin/env ruby
i = 1
while i<= 5
printf “%d “, i
i = i + 1
end # end untuk while
$ ruby while.rb
1 2 3 4 5
Perulangan for#for.rb
#!/usr/bin/env ruby
for i in 1..5
if i%2 == 1
puts i.to_s + “ ganjil”
else
puts i.to_s + “ genap”
end #end untuk if
end #end untuk for
$ ruby for.rb
1 ganjil
2 genap
3 ganjil
4 genap
5 ganjil
Deklarasi fungsiUntuk mendefinisikan suatu fungsi, kita
menggunakan kata kunci def diakhiri dengan
end. Kita akan membuat fungsi faktorial.
#faktorial.rb
#!/usr/bin/env ruby
def faktorial(n)
hasil = 1
ctr = 0
n.times do
ctr += 1
hasil *= ctr
end #end untuk do
return hasil
end #end untuk def
puts “Faktorial 5 = “ +
faktorial(5).to_s
puts “Faktorial 10 = “ +
faktorial(10).to_s
$ ruby faktorial.rb
Faktorial 5 = 120
Faktorial 10 = 3628800
Demikianlah perkenalan singkat kita
dengan Ruby, untuk kesempatan ini penulis
tidak akan membahas kelas dan iterator serta
fitur-fitur Ruby seperti mix-in. Yang dibahas
kali ini hanya mencakup dasar-dasar pem-
rograman Ruby. Bagi Anda yang telah
mengenal Perl dan Python, mempelajari
Ruby tidak akan menjadi kendala, begitu
pula dengan Anda yang pemula. Ruby
menawarkan sintaks program yang seder-
hana namun akurat dan menyenangkan,
kini yang tinggal hanya masalah selera. Akhir
kata dari penulis, selamat mencoba!�Eric ([email protected])
Ruby
57InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Pengguna notebook yang sering berpindah lokasi kerja dan harus terhubung ke jaringanakan memiliki masalah besar dalam konfigurasi yang berubah-ubah. Dengan SCPM diSUSE, semua masalah tersebut akan terselesaikan.
System ConfigurationManagement Profile di SUSE
Notebook memiliki satu kelebihan
yang tidak dimiliki oleh desktop:
portabilitas. Pengguna notebook
dapat memindahkan komputernya ke
manapun yang diinginkan tanpa usaha
yang besar. Dengan demikian, seseorang
dapat bekerja dimanapun beliau berada. Di
kantor, di tempat client atau ketika pulang
ke rumah.
Ketika digunakan secara standalone,
tidak banyak masalah yang terjadi. Namun,
ketika notebook tersebut harus terhubung
ke jaringan, maka masalah mulai muncul.
Masalah yang utama adalah konfigurasi
jaringan. Ketika di kantor, konfigurasi yang
digunakan adalah DHCP. Di tempat client,
katakanlah yang digunakan adalah IP statis.
Dan ketika kembali ke rumah, yang di-
gunakan adalah IP statis.
Dalam satu hari, pengguna tersebut
bekerja di kantor, kemudian berkunjung ke
client. Maka, dari pengaturan DHCP sebe-
lumnya, pengguna tersebut harus mengatur
IP secara statis. Kembali ke kantor, maka
kembali harus mengatur agar mengaktifkan
client DHCP. Ketika kembali ke rumah,
maka kembali ke IP statis, yang berarti
adalah pengaturan lagi.
Memang, ada kalanya seseorang dapat
membiarkan saja komputernya untuk
mencari DHCP server, namun hal tersebut
akan memakan waktu. Dan, yang jelas,
berpindah-pindah konfigurasi jaringan
sangat merepotkan. Pengguna akan mem-
buka YaST dan membuka modul jaringan,
kemudian mengatur konfigurasi yang
diinginkan. Merepotkan. Cara dengan
membuat shell script juga bukan cara yang
bijak karena tidak dapat diterapkan pada
setiap orang.
SUSE dan distro turunannya seperti JDS
memiliki satu fasilitas yang sangat baik
untuk menyelesaikan problem tersebut:
SCPM. SCPM adalah singkatan dari System
Configuration Profile Management. Di
tulisan kali ini, kita akan membahas pe-
ngertian SCPM dan bagaimana SCPM
dapat membantu pengguna notebook
dalam bekerja sehari-hari.
Apakah SCPM itu?Untuk mengakses konfigurasi SCPM,
bukalah YaST dan aktiflah di bagian Sys-
tem. Kemudian, bukalah modul Profile
Manager. Secara default , SCPM tidak
diaktifkan.
SCPM adalah singkatan dari System
Configuration Profile Management, salah
satu fasilitas yang memungkinkan kita
untuk menyimpan snapshot dari konfi-
gurasi kita pada suatu waktu sebagai suatu
profile. Dengan demikian, kita dapat meng-
aktifkannya kembali pada waktu lain. Tentu
saja, dengan SCPM, kita bisa menyimpan
banyak profile yang kapan saja bisa di-
aktifkan.
Layar utama SCPM. Options SCPM.
Distro SUSE
www.infolinux.web.id58 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Konfigurasi pada suatu waktu dapat
sangat beragam. Pada pendahuluan artikel
ini, kita menggunakan contoh konfigurasi
jaringan. Hal lain yang dapat mengambil
keuntungan dari SCPM adalah ketika kita
ingin melakukan pengujian tertentu pada
sistem. Ketika menulis beberapa hal yang
membutuhkan pengujian, penulis me-
ngurangi beberapa servis, mengubah
beberapa parameter sistem dan meng-
ubahnya kembali ke profile lain ketika
pengujian selesai dilakukan. Apa yang
perlu penulis lakukan adalah membuat
profile untuk pengujian dan profile untuk
digunakan secara default. Apabila ingin
menguji, penulis tinggal mengubah ke
profile testing dan setelah itu, tinggal
mengembalikan ke profile default.
Dari namanya, SCPM berfungsi untuk
mengatur konfigurasi sistem. Sistem dalam
pengertian pengaturan umum seperti
konfigurasi jaringan, pengaturan e-mail,
time zone, dan lain sebagainya. SCPM dapat
melakukan profiling pada berbagai konfi-
gurasi sistem, namun tidak dapat me-
lakukan profiling pada preferensi per user.
Dengan kata lain, pengaturan wallpaper
setiap user misalnya, tidak dapat disimpan
sebagai profile.
Untuk menggunakan SCPM, pertama-
tama fasilitas ini perlu diaktifkan terlebih
dahulu. Sistem kemudian akan membuat
database dan profil default. Pada saat
berada pada profil default, kita boleh
mengatur apa saja yang diinginkan. Setelah
itu, kita dapat membuat profil baru ber-
dasarkan profil default, kemudian ber-
pindah ke profil baru tersebut. Ketika
berada pada profil baru tersebut, kita bisa
mengatur konfigurasi yang diinginkan.
Segala konfigurasi otomatis akan tersimpan
pada profil yang sedang digunakan. Setelah
itu, kita bisa kembali ke profil default.
Untuk mendapatkan konfigurasi pada
profil baru sebelumnya, kita hanya perlu
berpindah ke profil tersebut.
Jadi, untuk mengatur konfigurasi pada
suatu profil, kita aktif dulu pada profil
tersebut dan melakukan pengaturan. Kita
tidak mengatur profil yang tidak aktif.
Menggunakan SCPMBukalah YaST|System|Profile Manager.
Untuk kali pertama penggunaan, sebuah
pesan akan ditampilkan. Tutuplah pesan
tersebut dan pada bagian Generap Setup,
kliklah tombol Options. Kita akan meng-
aktifkan SCPM.
Sebuah layar baru akan ditampilkan.
Pada bagian Enable SCPM, aktifkan pilihan
Enabled. Kliklah tombol OK. Sebuah pesan
yang menunjukkan progress akan ditam-
pilkan. Ada baiknya apabila Anda meng-
aktifkan pilihan Close Progress Pop-ups Au-
tomatically (reenable it in SCPM Options).
Klik tombol Close.
Kini, Anda akan memiliki satu profil
baru dengan nama default. Pada kolom ac-
tive, sebuah tanda panah harusnya me-
nunjuk pada profil default ini. Anda telah
aktif pada profil ini. Tutuplah dialog SCPM
ini. Kemudian, lakukanlah konfigurasi pada
sistem Anda seperti biasa. Katakanlah, pada
profil default ini, Anda melakukan kon-
figurasi untuk sistem di kantor.
Selesai mengatur, Anda mungkin ingin
mengatur konfigurasi untuk di rumah.
Maka, bukalah kembali Profile Manager.
Kita akan menambahkan profil baru.
Kliklah tombol Add. Sebuah dialog akan di-
tampilkan. Pada dialog ini, kita bisa
memilih untuk membua profil baru ber-
dasarkan konfigurasi sistem aktif atau
berdasarkan salah satu profil yang ada.
Pilihlah pilihan kedua, on existing profile
dan pilihlah default. Klik tombol OK.
Layar baru akan ditampilkan. Isikan
nama profil dan deskripsinya. Sebagai
contoh, isikan home untuk Profile Name
dan Home sweet home untuk Description.
Aktifkan pilihan Set file permissions of all
scripts secure (0700) dan kliklah tombol
OK.
Sebuah window progress akan ditampil-
kan. Setelah selesai, Anda akan kembali ke
laar depan di mana Anda bisa melihat dua
profil sistem. Kini, Anda telah memiliki
dua profil. Profil aktif masihlah profil de-
fault.
Untuk mengatur konfigurasi sistem
pada profil home, pilihlah profil home dan
kliklah tombol Switch to.... Sebuah win-
dow progress akan ditampilkan. Setelah
selesai, Anda akan menjumpai layar
konfirmasi. Layar konfigurasi ini akan
menampilkan apa saja yang dimodifikasi.
Klik tombol OK. Sebuah window progress
akan ditampilkan. Setelah selesai, Anda
Mengedit profil. Berpindah ke profil lain.
Distro SUSE
59InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
akan kembali ke layar utama, di mana akan
terlihat profil aktif adalah profil home.
Anda telah berada pada profil home.
Lakukanlah konfigurasi seperti biasa untuk
profil home ini. Apabila ingin kembali ke
profil default, buka kembali Profil Manager,
pilih profil default, dan klik tombol Switch
to.... Begitu mudah dan sederhana!
Lebih lanjut dengan SCPMAda beberapa hal lanjutan yang perlu
diperhatikan ketika bekerja dengan SCPM.
Berikut ini adalah beberapa contohnya:
� Anda bisa memberikan nama apa saja
untuk suatu profil. Apabila namanya
tidak cocok, Anda bisa mengubah nama-
nya tanpa perlu menghapus profil yang
bersangkutan. Klik tombol Edit untuk
mengubah namanya. Sebagai contoh,
penulis akan mengubah nama default
menjadi kantor.
� Untuk menghapus profil, Anda dapat
klik pada tombol Delete. Harap diper-
hatikan bahwa Anda tidak dapat meng-
hapus profil yang sedang aktif.
� Anda memiliki kesempatan untuk men-
jalankan script dalam beberapa event
berikut: sebelum mengaktifkan profil,
setelah mengaktifkan profil, sebelum
menonaktifkan profil dan setelah me-
nonaktifkan profil. Umumnya, hal ini
tidak diperlukan. Namun, dalam ber-
bagai konfigurasi besar seperti pada
testing, berbagai hal umumnya di-
perlukan. Penulis memiliki beberapa
pengaturan seperti penambahan swap,
penambahan nilai shmm ax ketika
melakukan testing. Oleh karena itu,
penulis menambahkan script pada
sebelum mengaktifkan profil dan me-
ngembalikannya pada kondisi normal
setelah menonaktifkan profil.
� Bagi Anda yang lebih menyukai pesan-
pesan singkat, Anda dapat menonaktif-
kan pilihan Verbose Messages pada
bagian Options.
� Ketika Anda mendisable fasilitas SCPM
ini, konfigurasi Anda akan tetap di-
simpan. Tidak ada konfigurasi yang
akan dihapus. Sistem akan mengingat
konfigurasi aktif dan Anda tidak akan
dapat berpindah-pindah profile sampai
Anda mengaktifkan kembali SCPM.
� Seperti yang kita ketahui, bahwa SCPM
akan mengatur segala sesuatu yang
berhubungan dengan konfigurasim
sistem. SCPM akan mengatur file dan
servis yang berubah pada saat berpindah
ke profil lain. Dalam istilah SCPM, Anda
mungkin akan menjumpai istilah Re-
source. Resource secara sederhana
adalah file dan servis yang dibicarakan
sebelumnya. Berbagai resource kemu-
dian dikelompokkan dalam unit logikal,
yang selanjutnya disebut sebagai re-
source group. Anda tidak perlu me-
ngatur resource group ini secara default.
Sistem telah datang dengan resource
group yang siap digunakan. Apabila
Anda merasa perlu untuk mengatur re-
source group, kliklah tombol Options.
Pada layar options tersebut, kliklah
tombol Configure Resources. Seperti
biasa, Anda bisa menambahkan, me-
ngedit atau menghapus resource.
� Pada bagian Options, Anda akan men-
jumpai pilihan untuk Switch Mode.
Switch mendefinisikan sifat SCPM
ketika berpindah profil. Apabila Normal
atau Save changes dipilih, maka re-
source-resource yang dimodifikasi pada
dialog switch akan disimpan. Apabila
Drop changes dipilih, maka berbagai
perubahan akan diabaikan.
� Di sebelah Switch Mode, Anda akan
menjumpai Boot Mode. Boot Mode
mendefinisikan sifat SCPM ketika
sistem di boot. Pilihan Save Changes
akan mengaplikasikan semua peruba-
han pada profil sebelumnya.
Tidak hanya pengguna notebook yang
dapat memanfaatkan SCPM ini. Ketika
Anda melakukan perubahan pada sistem
secara berkala, Anda mungkin membutuh-
kan SCPM.
SCPM adalah fasilitas yang sangat ber-
guna. Cara-cara lama seperti menggunakan
shell script tentunya tidak akan mampu
menjangkau sampai berbagai resource yang
ditawarkan oleh SCPM. Kalaupun mampu,
rasanya akan sangat mubazir karena sebuah
tool pintar telah disediakan untuk kita.
Dengan Linux, mari kita bekerja lebih
pintar!�Noprianto ([email protected])
Distro SUSE
www.infolinux.web.id60 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Mandrake telah mengeluarkan distro Linux yang dapat dijalankan langsung dari CD atauLiveCD, yaitu MandrakeMove. Namun, CD itu terlalu berat dan kompleks. Onno W. Purbotelah berhasil membuat sendiri LiveCD yang ringan sebagai router, berbasisMandrakelinux 10.0.
MembuatCD Linux Router Sendiri
Saya memiliki router Linux di harddisk
komputer, untuk menghubungkan
jaringan LAN di rumah dengan Inter-
net. Mengapa saya membutuhkan router
Linux di CD-ROM? Jawabannya sebetulnya
sederhana saja, karena listrik di rumah saya
tidak stabil dan sering mati mendadak.
Akibat seringnya listrik mati, harddisk akan
crash atau rusak dengan mudah.
Salah satu solusi yang paling sederhana
untuk mengatasi harddisk crash tersebut
adalah menggantikan harddisk di router
rumah saya ke Internet dengan meng-
gunakan CD-ROM, dan di operasikan
tanpa harddisk sama sekali.
Istilah keren dari CD-ROM yang di-
siapkan untuk operasikan di PC tanpa
menggunakan harddisk adalah “LiveCD”.
Ada baiknya anda search di Internet
(seperti http://www.google.com) mengguna-
kan keyword “LiveCD”. Knoppix adalah
salah satu jenis LiveCD yang cukup beken
di dunia open source. Mandrake juga
menyediakan LiveCD MandrakeMove, tapi
terlalu berat, karena ditujukan untuk desk-
top, bukan router.
Pada kesempatan ini, saya akan men-
ceritakan sedikit tentang cara membuat
LiveCD router, bukan untuk desktop, tapi
untuk keperluan gateway Internet 24 jam
di rumah. Tentu saja, teknik ini sebetulnya
dapat digunakan di kantor, di sekolah, dan
di mana saja.
Peralatan router yang digunakanDalam eksperimen ini saya menggunakan
PC Pentium III 933 MHz memory 128
Mbyte dengan card Wireless LAN PCI dari
Planet yang tersambung ke ISP VisionNet
(http://www.vision.net.id) yang berjarak
sekitar 500 meter dari rumah saya. Sam-
bungan Internet berjalan 24 jam meng-
gunakan frekuensi 2,4 GHz (untuk tidak
di-sweeping aparat). Untuk menyam-
bungkan semua komputer yang berada di
LAN rumah, saya menggunakan Ethernet
card D-Link 10/100 Mbps.
Sistem operasi Linux yang digunakan
adalah Mandrakelinux 10.0 yang diperoleh
dari buku mini InfoLINUX (http://
www.infolinux.web.id). Penggunaan
Mandrakelinux 10.0 agak membuat “susah
hidup” karena memory 64 Mbyte tidak
cukup untuk Mandrakelinux 10.0. Jika Anda
ingin GUI yang beroperasi dengan baik,
sebaiknya tambah memori menjadi minimal
128 Mbyte untuk Mandrakelinux 10.0.
Sebetulnya PC Pentium III 933 MHz
memory 128 Mbyte terlalu besar untuk
router. Pengalaman saya dapat meng-
gunakan PC Pentium 75 MHz memory 64
Mbyte untuk router tersebut. Hanya proses
pembuatan LiveCD menjadi lelet sekali.
Kebutuhan dan persiapan sistemoperasiHardware yang dibutuhkan untuk membuat
LiveCD router yang mendukung wireless
LAN 2,4 GHz adalah:
� PC Pentium, saya menggunakan Pentium
III 933 MHz Memory 128 Mbyte.
� Harddisk 5-6 Gbyte.
� Card Wireless LAN PCI Planet 11-22
Mbps.
� Card Ethernet D-Link 10/100 Mbps.
Lakukan partsisi harddisk sebagai
berikut:
swap 256Mbyte
/LiveCD 2 Gbyte
/ 3-4 Gbyte
Anda harus membuat partisi sendiri
yang terpisah untuk nantinya membuat
file iso dari LiveCD. Di sini saya meng-
gunakan partisi yang saya namakan /
LiveCD.
Instalasi Mandrakelinux 9.2 atau
Mandrakelinux 10.0 di PC tersebut seperti
biasa, lalu konfigurasikan agar semua card
terdeteksi dan beroperasi dengan baik.
Yang agak sulit adalah mengonfigurasi
card Wireless LAN PCI Planet yang ber-
basis chipset Texas Instrument ACX100.
Sebaiknya anda membaca-baca http://
www. houseofcraig.net/acx100_howto.php.
Pada prinsip-nya untuk Mandrakelinux
10.0 relat if sederhana, karena driver
acx100_pci.o sudah tersedia, tapi Anda
harus mengonfigurasi file ini:
/etc/modules.conf
Edit file tersebut dengan menambahkan
dua baris berikut:
alias wlan0 acx100_pci
options acx100_pci
firmware_dir=/usr/share/
acx100_pci
Dan isi direktori ini:
/usr/share/acx100_pci
dengan file:
RADIO0d.BIN
RADIO11.BIN
RADIO15.BIN
WLANGEN.BIN
Distro Live CD
61InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Keempat (4) file BIN tersebut dapat Anda
ambil dari CD driver yang di distribusikan
bersama card Wireless LAN PCI Planet.
Jangan lupa untuk mengonfigurasi isi
dua file ini:
/etc/sysconfig/network-
scripts/ifcfg-wlan0
/etc/sysconfig/network-
scripts/ifcfg-eth0
Sesuaikan isinya dengan kondisi jaringan
yang Anda gunakan.
Kesulitan dan kelemahan LiveCDBeberapa kesulitan dan kelemahan peng-
gunaan LiveCD yang saya alami adalah:
� Tidak ada swap. Saya belum tahu cara
membuat swap di LiveCD, akibatnya
cukup fatal. Berbagai aplikasi server
yang saya butuhkan seperti dhcp, squid,
dan lain-lain tidak bisa diaktifkan.
� Akan sulit untuk membuat LiveCD jika
kernel Thomas Blacklund (kernel-tmb)
tidak mensupport driver yang dibutuh-
kan, kecuali jika Anda dapat meng-com-
pile kernel dan memasukan cloop.o ke
dalamnya.
Solusi router yang saya gunakan saat ini
hanya mengoperasikan NAT pada iptables
saja. Mungkin di lain waktu jika saya
berhasil mengaktifkan swap secara oto-
matis di LiveCD maka berbagai servis dapat
saya jalankan langsung dari LiveCD.
Persiapan software LiveCDBagi pengguna Mandrakelinux, kunci
utamanya adalah menggunakan kernel
buatan Thomas Blacklund atau dikenal
sebagai kernel-tmb. Mengapa? Karena ker-
nel-tmb-2.4.22.21 mengandung module
cloop.o yang digunakan untuk meng-
kompress file system agar file menjadi kecil
dan sangat berguna untuk digunakan di CD-
ROM.
Sebetulnya kernel Thomas Backlund
yang terbaru baik dari versi 2.4 maupun 2.6
tersedia di http://www.netikka.net/tmb/
Cooker/, akan tetapi saya biasanya me-
ngambil RPM versi 2.4.22.21 yang me-
ngandung modul cloop.o dari http://
fr2.rpmfind.net/.
Bagi Anda yang cukup punya nyali
untuk menginstal cloop.o sendiri di ker-
nel Linux, dapat mengambilnya dari http:/
/www.knopper.net/download/knoppix/
cloop_0.68-2.tar.gz. Terus terang saya gagal
menginstalasi cloop.o di kernel 2.6.3 dari
Mandrakelinux 10.0, karena tampaknya
cloop.o disiapkan untuk kernel 2.4. Saya
belum sempat mencoba untuk meng-
instalnya di kernel 2.4.
Secara praktis, paket software yang
dibutuhkan adalah:
� kernel-tmb
� busybox
� cloop-utils
� mklivecd
� mkisofs
Bagi pembaca yang seperti saya, malas
untuk mengompilasi kernel, akan mem-
peroleh banyak kemudahan dengan me-
ngambil RPM yang dibutuhkan dari http://
fr2.rpmfind.net/.
� Gunakan keyword “kernel-tmb”, atau
ambil dari ftp://fr2.rpmfind.net/linux/
Mandrake/9.2/contrib/i586/kernel-tmb-
2.4.22.21.tmb.1mdk-1-1mdk.i586.rpm.
� Gunakan keyword “busybox”, atau
ambil dari ftp://fr2.rpmfind.net/linux/
MandrakeCooker/cooker/contrib/i586/
busybox-1.00-0.pre5.1mdk.i586.rpm.
� Gunakan keyword “cloop-utils”, atau
ambil dari ftp://fr2.rpmfind.net/linux/
MandrakeCooker/cooker/contrib/i586/
cloop-utils-1.02-5mdk.i586.rpm.
� Gunakan keyword keyword “mklivecd”,
atau ambil dari ftp://fr2.rpmfind.net/
linux/MandrakeCooker/cooker/contrib/
alpha/mklivecd-0.5.6-4mdk.noarch.rpm.
� Sedang mkisofs ada di CD distribusi
Mandrakelinux 10.0, dan dapat lang-
sung Anda pilih pada saat instalasi
Mandrakelinux 10.0.
Setelah semua RPM yang dibutuhkan
diambil, untuk menginstalasi RPM secara
manual sebetulnya tidak sukar, dapat
dilakukan melalui perintah:
# rpm –ivh nama-file-rpm.rpm
Lakukanlah instalasi untuk semua paket
RPM yang anda ambil di atas.
Mengonfigurasi Router untukPembuatan CDKonfigurasi router yang saya gunakan
relatif sederhana. Sebetulnya hanya meng-
gunakan sebuah script yang saya ambil dari
posting rekan [email protected] di
mailing list [email protected] bebe-
rapa tahun yang lalu. Cukup lumayan lah
untuk mengaktifkan NAT di router yang
saya gunakan.
Adapun file script tersebut diaktifkan
Distro Live CD
LiveCD MandrakeMove dan Knoppix.
www.infolinux.web.id62 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
atau dijalankan melalui /etc/rc.d/rc.local
yang berisi kira-kira sebagai berikut:
#!/bin/bash
# From: AHK <[email protected]>
# To: [email protected]
# Save this file and activate
through # file_name start
# and de-activate through #
file_name stop
# This firewall-script can be
used for workstation, laptop,
router
# or server that are not run-
ning network service (such as
web server, ftp
# server etc)
# change the parameter UPLINK
with Interface device to the
Internet.
# In our case WLAN router with
NIC wlan0 connected to the
Internet
# and LAN connection with eth0.
# if you use dial-up modem, you
might use ppp0 as your UPLINK
UPLINK=”wlan0"
# if you run the gateway as
router and forward IP packet
between eth devices
# please fill .yes., if not,
please fill .no.
ROUTER=”yes”
# Please change 10.10.10.224 to
your static IP address of
UPLINK device.
# For those who use dial-up or
dynamic IP, please enter .dy
namic.
NAT=”10.10.10.224"
# NAT=”dynamic”
# please list all network
interfaces including eth
devices
# as well as dial-up interface
such as ppp0
INTERFACES=”lo eth0 wlan0"
if [ “$1” = “start” ]
then
echo “Activate Firewall ...
.. “
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -i !
${UPLINK} -j ACCEPT
/sbin/iptables -A INPUT -i
${UPLINK} -p tcp -s 0/0 —dport
25 -j ACCEPT
/sbin/iptables -A INPUT -m
state —state ESTABLISHED,
RELATED -j ACCEPT
/sbin/iptables -A INPUT -p
tcp -i ${UPLINK} -j REJECT —
reject-with tcp-reset
/sbin/iptables -A INPUT -p
udp -i ${UPLINK} -j REJECT —
reject-with icmp-port-unreach
able
# turn off packet spoofing in
all interfaces
for x in ${INTERFACES}
do
echo 1 > /proc/sys/net/
ipv4/conf/${x}/rp_filter
done
if [ “$ROUTER” = “yes” ]
then
# Activate IP forwarding at
router
echo 1 > /proc/sys/net/
ipv4/ip_forward
if [ “$NAT” = “dynamic” ]
then
# Dynamic IP address,
activate Masquerading
echo “Activate Masquerading
(Dynamic IP) ....”
/sbin/iptables -t nat -A
POSTROUTING -o ${UPLINK} -j
MASQUERADE
elif [ “$NAT” != “” ]
then
# Static IP address use
source NAT
echo “Activate SNAT (static
IP) ....”
/sbin/iptables -t nat -A
POSTROUTING -o ${UPLINK} -j
SNAT —to ${NAT}
fi
fi
elif [ “$1” = “stop” ]
then
echo “Deactivate Firewall
...”
/sbin/iptables -F INPUT
/sbin/iptables -P INPUT
ACCEPT
Uninstall program di Mandrakelinux 10.
Distro Live CD
63InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
/sbin/iptables -F FORWARD
/sbin/iptables -P FORWARD
ACCEPT
# Turn off NAT or MAS
QUERADING
/sbin/iptables -t nat -F
POSTROUTING
fi
Pembuatan Live CDSecara umum langkah pembuatan LiveCD
menggunakan Linux Mandrake 9.2 (bukan
Mandrakelinux 10.0) dapat diperoleh di fo-
rum diskusi http://www.mandrakeusers.org.
Langkah-langkah yang dilakukan adalah
sebagai berikut:
Step 1Instalasi ‘basic’ Mandrakelinux 10.0 (atau
Mandrake 9.2). Minimal harus ada account
root dan satu buah user. Buat partisi khusus,
misalnya dimount sebagai direktori /LiveCD
sebesar 1.5-2 Gbyte untuk membuat
LiveCD. Saya pernah mencoba menggu-
nakan 700 Mbyte ternyata gagal membuat
LiveCD. Jadi sebaiknya menggunakan partisi
/LiveCD yang besar.
Step 2Instalasi RPM paket-paket berikut:
kernel-tmb-2.4.22.21
busybox
cloop-utils
mklivecd
mkisofs
Ubah /etc/lilo.conf supaya booting
dengan menggunakan kernel-tmb-
2.4.22.21 sebagai default. Jangan lupa
menjalankan lilo sesudah mengubah isi /
etc/lilo.conf:
# lilo
Step 3Buang paket-paket software yang tidak
digunakan, Anda dapat menggunakan
Mandrake Control Center untuk uninstall
RPM. Atau secara manual men-delete folder
yang tidak digunakan. Beberapa paket yang
tidak banyak digunakan, antara lain python
dan gimp.
Cek berapa space yang Anda gunakan
menggunakan perintah df:
# df
Anda harus mengatur agar file iso yang
dihasilkan jangan melebihi 700 Mbyte, agar
dapat diburn ke CD-ROM. Jika kompresi
rata-rata sekitar 40-50% maka isi folder
root (/) harus maximum sekitar 1.4-1.7
Gbyte.
Jika masih merasa kekurangan space,
Anda dapat mendelete folder usr/share/
doc, /usr/share/man dan /usr/share/wall-
papers untuk memperoleh tambahan
~200 MB.
Step 4Konfigurasikan supaya nantinya LiveCD
dapat berfungsi seperti yang Anda ingin-
kan. Jangan lupa membuang semua isi /
home/user/tmp, coockies, cache browser,
dan lain-lain.
Lagi-lagi jangan lupa check space yang
Anda gunakan, melalui perintah:
# df
Step 5Masuk ke shell dan jalankan su untuk men-
jadi root, lalu jalankan perintah berikut:
# cd /LiveCD
# mklivecd —help
Anda akan melihat semua option untuk
menjalankan script mklivecd. Salah satu
option atau cara yang paling sederhana
untuk membuat LiveCD adalah langsung
menyebut nama file iso:
# mklivecd namaisolivecd.iso
Saya sendiri dalam membuat LiveCD
menggunakan beberapa option sebagai
berikut:
# mklivecd —verbose —lowmem —
splash=no –resolution=800x600
router.iso
Kira-kira membutuhkan waktu 10-15
menit untuk membuat file iso untuk CD-
ROM yang Anda inginkan di Pentium III
933 MHz.
Step 6Burn iso ke CD-RW (atau CD-R) dengan
program yang biasa Anda gunakan, misal-
nya Nero (MS Windows) atau K3B (Linux
dengan desktop KDE), atau dengan perintah
di konsol Linux berikut ini:
# cdrecord -scanbus (Catat kode
device CD writer, misal 0,1,0)
# cdrecord -v dev=0,1,0
speed=16 router.iso
Step 7Berdoalah dan boot LiveCD router Linux
Anda.�Onno W. Purbo ([email protected])
Mem-burn CD dengan K3b.
Distro Live CD
65InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Berkolaborasi lewat jaringan dengan sesama teman kerja tidak harus menggunakanaplikasi yang mahal seperti MS Exchange atau Lotus Domino. Anda bisa memilihsalah satu paket groupware yang free di Linux. eGroupWare yang berbasis web inilayak Anda coba.
Kolaborasi BersamaMenggunakan eGroupWare
Selama ini, kita hanya mengenal istilah
software dan hardware saja untuk
istilah-istilah umum pada dunia kom-
puter, padahal ada beberapa istilah *-ware
yang lain, seperti brainware, middleware, dan
juga groupware. Brainware mengacu ke
seseorang yang menjalankan sebuah kom-
puter atau yang sering disebut dengan
operator, namun istilah brainware bisa
sangatlah luas, karena pengguna komputer
sangatlah bervariasi. Istilah middleware
sendiri berarti sebuah aplikasi yang menjem-
batani antara dua aplikasi lain, yang seringkali
kita temui pada beberapa aplikasi web service.
Nah, istilah yang ketiga inilah yang baru-baru
ini mulai muncul ke permukaan, yaitu
groupware. Apa itu groupware?
Pada dasarnya, sebuah groupware adalah
sebuah aplikasi yang mampu menyatukan
beberapa fasilitas ataupun kemampuan dari
beberapa aplikasi independen dan me-
nampilkannya dalam sebuah aplikasi yang
lebih besar dan terintegrasi. Dengan adanya
aplikasi groupware, maka tidak diperlukan
banyak software yang diinstalasi, yang pada
akhirnya juga bisa menghemat biaya lisensi
(jika menggunakan aplikasi komersial) dan
juga menghemat waktu, karena instalasi satu
aplikasi sudah setara dengan menginstalasi
beberapa aplikasi.
Beberapa contoh aplikasi groupware yang
dapat kita jumpai di pasaran, yaitu Microsoft
Exchange, Lotus Domino, dan juga eBdesk.
Khusus untuk aplikasi yang terakhir, meru-
pakan aplikasi buatan perusahaan lokal,
namun keandalannya tidak perlu diragukan
lagi, karena banyak perusahaan asing pun
sudah menggunakannya. Anda bisa men-
dapatkan informasi yang lebih baik melalui
situs resminya, http://www.ebdesk.com.
Salah satu masalah yang dihadapi ketika
menggunakan aplikasi di atas adalah lisensi,
karena kesemuanya merupakan aplikasi
komersial (proprietary) yang mewajibkan kita
untuk membayar lisensi jika kita hendak
menggunakannya untuk jangka panjang.
Selain itu, tingkat interoperabilitasnya juga
sangatlah kurang, karena kita tahu bahwa
produk Exchange dan Lotus hanya bisa
dijalankan pada platform Windows dan Lotus
sendiri. Ini berarti kita juga harus membayar
lisensi tambahan untuk sistem operasi yang
kita gunakan, atau bahkan tidak mungkin
dijalankan ketika kita melakukan migrasi ke
platform GNU/Linux. Khusus untuk eBdesk,
sudah terdapat aplikasi yang berjalan di
GNU/Linux, sehingga memungkinkan men-
jalankannya di platform Linux.
Masalah lain yang harus dihadapi adalah
kebutuhan perangkat keras. Untuk meng-
optimalkan penggunaan Microsoft Exchange,
maka Microsoft merekomendasikan peng-
gunaan Microsoft Windows 2003 Server yang
notabene membutuhkan kebutuhan hard-
ware yang cukup besar, seperti jumlah RAM
(256 MB ke atas) dan harddisk (minimal 1,5–
eGroupWare
Gambar 1. Tampilan situs eGroupWare. Gambar 2. Halaman tes instalasi eGroupWare.
www.infolinux.web.id66 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
eGroupWare
2 GB untuk setup sistem). Bisa jadi perusa-
haan belum sempat menerapkan aplikasi
groupware, karena biaya sudah habis untuk
membeli infrastrukturnya saja. Selain itu,
ketika kita menggunakan produk Microsoft,
salah satu masalah yang sering menjadi
pertimbangan kita adalah masalah keaman-
an. Di zaman yang penuh dengan ancaman
yang bervariasi seperti sekarang ini, siapa
yang tidak peduli akan masalah keamanan?
Di platform GNU/Linux pun sudah
dikembangkan beberapa aplikasi groupware,
seperti salah satunya yaitu Kolab Group-
ware, yang dikembangkan oleh proyek KDE.
Namun, bagi yang tidak suka menggunakan
aplikasi-aplikasi buatan KDE, dan ingin
menggunakan aplikasi Kolab Groupware,
hal ini bisa menjadi sebuah dilema yang
cukup panjang.
Alternatif lain yang dikembangkan oleh
para pengembang open source adalah dengan
mengalihkan aplikasi groupware tersebut ke
dalam bentuk halaman web (web-based
application) yang dapat dinikmati oleh semua
orang, asalkan mempunyai browser. Sampai
saat ini, banyak sekali aplikasi groupware
yang sudah menggunakan interface web,
seperti phpgroupware, opengroupware, dan
yang terakhir eGroupWare. Kita akan men-
coba aplikasi yang terakhir. Anda bisa men-
dapatkan aplikasi ini melalui alamat situs
http://www.egroupware.org (Gambar 1).
eGroupware menyediakan berbagai macam
layanan, seperti layaknya aplikasi groupware
yang ditawarkan oleh aplikasi komersial,
dengan tampilan yang sederhana namun
menarik untuk diakses karena berbasis web
dan mudah dimodifikasi.
Saat ini, versi terbaru dari eGroupWare
adalah 1.0RC7, tetapi penamaan pada file
sudah menggunakan versi 1.0. Anda bisa
memilih untuk men-download versi tarball,
bzip2, maupun RPM. Untuk kemudahan,
kita akan menggunakan versi RPM, yang
akan sangat membantu kita, terutama yang
masih awam dengan instalasi gaya GNU/
Linux. Silakan download paket bernama
e G r o u p Wa r e - a l l - a p p s - 1 . 0 . 0 0 . 0 0 1 -
1.noarch.rpm dengan berukuran sekitar
13MB.
Paket ini akan berisi semua aplikasi yang
ditawarkan oleh eGroupware. Jika hanya
ingin menginstal sebagian paket, Anda bisa
menggunakan paket terpisah ataupun tetap
menggunakan paket ini, namun pada
langkah selanjutnya, Anda bisa memilih
aplikasi yang hendak diinstal. Untuk
memudahkan konfigurasi, akan lebih baik
jika kita memilih paket ini, sebab kita tidak
perlu repot-repot lagi untuk men-download
setiap aplikasi yang ada. Semuanya sudah
tercakup pada satu paket saja.
Komputer yang digunakan pada per-
cobaan ini menggunakan sistem operasi
GNU/Linux Mandrakelinux 10.0 Official,
dengan spesifikasi Apache 2.0.48, PHP 4.3.4,
dan MySQL 4.0.18 standar bawaan
Mandrakelinux 10.0.
Setelah Anda selesai men-download
paket eGroupware dari http://www.
sourceforge. net, letakkan file tersebut pada
direktori tertentu (misalnya /usr/local/src)
dengan perintah ini:
$ mv eGroupWare-all-apps-
1.0.00.001-1.noarch.rpm /usr/
local/src
Lalu pindahlah ke direktori yang Anda
tentukan tersebut dan login (berubah)
sebagai root.
$cd /usr/local/src
$su -
password : password root
Setelah itu, lakukan instalasi eGroupware
dengan perintah ini:
#rpm -ivh eGroupWare-all-apps-
1.0.00.001-1.noarch.rpm
Tunggu proses instalasi hingga muncul
prompt untuk user root kembali dan juga
tampilan petunjuk. Perhatikan petunjuk
yang muncul, karena sangat penting demi
keberhasilan implementasi sistem
eGroupWare Anda.
*******************************
* Attention: You must create
the folder FILES *
* manually outside the root
from your *
* webserver root. *
* The folder must include theGambar 3. Pesan kesalahan batas memory.
Gambar 4. Halaman setup dasar. Gambar 5. Halaman setup untuk admin.
67InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
folders users and *
* files like: /var/www/ *
* egwfiles/ *
* users *
* groups *
* Give the webserver the rights
to read and write *
* and no anonymous access to
this folders *
* *****************************
* Please secure you apache and
add *
* the follow lines to you
httpd.conf *
* *
* <Directory /var/www/html/
egroupware> *
* <Files ~ .(inc.php|tpl)> *
* Order allow,deny *
* Deny from all *
* </Files> *
* </Directory> *
eGroupWare akan diinstalasi pada direk-
tori default web server, yang pada komputer
penulis berada pada /var/www/html. Jika
Anda menggunakan distro lain, disarankan
untuk menggunakan paket src.rpm, yang
merupakan paket source rpm.
Dengan menggunakan paket ini, Anda
bisa melakukan proses rebuilding terhadap
paket rpm tersebut sehingga bisa sesuai
dengan kebutuhan distro Anda. Misalnya
untuk distro SUSE, direktori web server
defaultnya berada di /srv/www/htdocs. Untuk
melakukan rebuilding, berikan perintah:
# rpm —rebuild eGroupWare-all-
apps-1.0.00.001-1.src.rpm
Hasilnya akan diletakkan pada direktori
/usr/src/RPM/RPMS/<arsitektur>/. Maksud
<arsitektur> di sini bisa berupa i386
ataupun i586, sesuai dengan arsitektur
komputer Anda.
Setelah proses instalasi selesai, berikan
permission dan juga user serta group yang
tepat untuk direktori Anda. Penulis meng-
gunakan user dan group apache untuk
direktori egroupware. Berikan dengan
perintah
# chown -R apache:apache /var/
www/html/egroupware
# chmod -R 755 /var/www/html/
egroupware
Berikutnya, Anda harus memastikan
bahwa direktori phpgwapi/images/ dan
fudforum haruslah dapat ditulis oleh user
dan group apache (biasanya cukup dengan
perintah di atas). Setelah itu, buka browser
Anda (penulis menggunakan Mozilla Firefox
0.9.1) dan bukalah alamat URL http://
<nama_komputer>/egroupware atau http://
localhost/egroupware. Hasilnya akan tampak
seperti Gambar 2. Langkah berikutnya
adalah dengan memilih link Run Installation
Tests yang akan menguji konfigurasi pada
komputer Anda. Pastikan bahwa tidak ada
pesan kesalahan sama sekali (beberapa pesan
warning bisa diabaikan, namun sebisa
mungkin jumlahnya diminimalkan). Pada
Gambar 3, terdapat pesan kesalahan yang
sebaiknya diperbaiki, yaitu jumlah batasan
memory yang digunakan untuk aplikasi
eGroupWare. Bukalah file /etc/php.ini dan
eGroupWare
www.infolinux.web.id68 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
ubahlah pada bagian ini:
memory_limit = 16M ; Maximum
amount of memory a script may
consume (8MB)
Setelah selesai mengedit file php.ini,
jangan lupa untuk me-restart server Apache
Anda dengan perintah:
# /etc/init.d/httpd restart
Setelah semua persyaratan dipenuhi,
silakan melanjutkan proses instalasi dengan
memilih Continue to the Header Admin. Pada
halaman selanjutnya, Anda akan menemu-
kan halaman setup dasar untuk aplikasi
eGroupWare Anda (Gambar 4). Silakan
masukkan data yang sesuai untuk aplikasi
dan kebutuhan Anda. Untuk bagian database,
akan lebih baik jika Anda sudah menyiapkan
sebuah user baru yang digunakan khusus
untuk aplikasi eGroupWare dan bukan user
yang Anda gunakan sehari-hari. Hal ini hanya
untuk alasan keamanan. Di sini, penulis
menggunakan user egroupware dengan
password egroupware yang telah diciptakan
menggunakan PHPMyAdmin. Jangan lupa
untuk membuat sebuah user baru yang
mempunyai kewenangan untuk meng-
konfigurasi aplikasi eGroupWare Anda.
Setelah selesai mengisi semua field yang
dibutuhkan, tekan tombol Write, maka file
konfigurasi baru Anda akan dibuat dengan
nama header.inc.php. Setelah selesai, klik
pilihan continue. Anda akan masuk pada
halaman setup untuk admin (Gambar 5).
Login-lah dengan user yang telah Anda buat
pada halaman sebelumnya dan Anda akan
menjumpai halaman setup yang lebih detail.
Pada halaman ini, Anda akan membuat
database, mengonfigurasi, membuat account,
mengelola bahasa yang digunakan untuk
aplikasi, dan melakukan konfigurasi lanjut
(advanced management) yang ditunjukkan
dengan langkah-langkah. Ikuti langkah demi
langkah yang sudah disiapkan, dimulai
dengan membuat database.
Untuk mempermudah pembuatan data-
base, biarkan program setup eGroupWare
yang membuatkan database beserta tabel-
tabelnya untuk Anda. Anda cukup mem-
berikan user dan password root atau user
pada database server Anda yang mempunyai
hak untuk membuat sebuah database baru.
Jika Anda tidak menerima pesan kesa-
lahan apapun, lanjutkan dengan memilih
Re-Check My Installation. Akan muncul
menu pilihan baru, yaitu untuk meng-
instalasi semua tabel yang berhubungan
dengan installasi eGroupWare. Klik pada
menu tersebut dan tabel-tabel akan di-
bentuk secara otomatis.
Setelah pembuatan database selesai,
halaman setup akan tampak seperti pada
Gambar 8. Halaman login user. Gambar 9. Halaman setelah login.
Gambar 6. Hasil setup database. Gambar 7. Setup pengelolaan aplikasi.
eGroupWare
69InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Gambar 6. Lanjutkan instalasi dengan
membuat sebuah direktori baru di luar
direktori web server Anda, sesuai dengan
petunjuk yang tertera pada saat instalasi
selesai. misalnya /var/www/files. Di dalam
direktori ini terdapat dua direktori baru,
yaitu user dan group. Jangan lupa untuk
memberikan hak baca dan tulis untuk
direktori ini kepada user dan group Apache.
# mkdir /var/www/files
# mkdir /var/www/files/user
# mkdir /var/www/files/group
# chown -R apache:apache /var/
www/files
# chmod -R 755 /var/www/files
Lakukan konfigurasi pada langkah 2
(Edit Current Configuration), terutama pada
field pertama, kedua, dan ketiga, yaitu
alamat path dari direktori temporary, alamat
path dari direktori yang baru saja Anda buat,
dan juga alamat path absolut atau URL dari
installasi eGroupWare. Untuk bagian LDAP,
Authentikasi, setting mcrypt tidak akan
dibahas, karena membutuhkan pengetahuan
yang lebih untuk itu. Silakan membaca
halaman manual yang sudah disediakan.
Langkah berikutnya (langkah 3) adalah
membuat sebuah account admin untuk
aplikasi eGroupWare. Perhatikan bahwa
account ini berbeda dengan account yang
kita buat pada awal instalasi. Jika Anda
hendak menggunakan bahasa lain selain
bahasa Inggris, maka lakukan juga setup
pada langkah 4, yaitu pengelolaan bahasa.
Sayangnya, bahasa Indonesia belum diikut-
sertakan pada aplikasi ini.
Untuk mengelola aplikasi yang tersedia,
lakukan setup pada langkah 5, yaitu penge-
lolaan aplikasi (Gambar 7). Setelah semua-
nya selesai, lakukan logout, dan pilihlah link
Back to user login. Anda akan menjumpai
halaman login untuk setiap user (Gambar 8).
Karena belum ada user baru yang kita buat,
maka silakan login dengan user admin yang
telah kita buat. Anda akan mendapatkan
tampilan seperti Gambar 9.
Jika jeli, maka Anda bisa melihat satu
perubahan yang sudah penulis lakukan, yaitu
mengganti logo eGroupware dengan logo
yang kita tentukan. Hal ini memang telah
disediakan oleh eGroupware. Anda bisa
meletakkan file logo pada direktori
phpgwapi/templates/default/images/ dan
melakukan setting pada bagian
Configuration|Site Configuration.
Pada bagian atas, terdapat sejumlah icon
yang melambangkan setiap aplikasi yang
ada, yaitu:
� Admin (khusus untuk user admin,
berguna untuk melakukan konfigurasi
aplikasi).
� Email (untuk mengonfigurasi POP3/
IMAP mail server).
� Felamimail (untuk membaca e-mail yang
telah di-download dengan menggunakan
setting POP3/IMAP).
� Calendar (untuk menampilkan kalender
dan juga kegiatan pada tanggal tertentu).
� AddressBook (untuk mencatat daftar
kontak teman-teman).
� Info Log (untuk mencatat kemajuan
sebuah proyek).
� File Manager (untuk pengelolaan situs
web).
� Forum (untuk tempat berdiskusi).
� Fud Forum (hampir sama dengan forum,
tetapi tampilannya menyerupai PHPBB).
� Project (untuk pengelolaan proyek).
� Wiki (versi eGroupware untuk aplikasi
� Bookmarks (untuk pengelolaan book-
mark).
� Headline (untuk mengambil RSS dari si-
tus-situs berita).
� News (untuk melihat berita yang di-
kirimkan oleh admin).
� Poll (untuk jajak pendapat atau polling).
� Messenger (fasilitas messenger untuk
user lokal).
� Comic (untuk men-download komik-
komik online).
� Dan lain sebagainya.
Dengan menginstalasi satu aplikasi saja,
yaitu eGroupWare, Anda bisa mendapatkan
banyak sekali manfaat dan juga fungsiona-
litas dari beberapa aplikasi yang sebelumnya
harus diinstal satu per satu. Kemudahan
manajemen dan kustomisasi juga meru-
pakan keunggulan dari aplikasi ini. Bagi
Anda yang mengalami kesulitan dalam
melakukan instalasi, terdapat HOWTO
untuk instalasi yang sudah penulis ter-
jemahkan ke dalam bahasa Indonesia dan
bisa di-download pada halaman yang sama
ketika Anda men-download paket eGroup-
Ware. Selamat menikmati eGroupWare!�Willy Sudiarto Raharjo ([email protected])
eGroupWare
www.infolinux.web.id70 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Kali pertama mencoba dotProject langsung terasa sekali kelengkapan dari aplikasi ini.Tanggapan-tanggapan positif dan pujian dari para pengguna sebelumnya ternyatamemang terbukti dengan cukup meyakinkan. Anda harus coba!
Pemakaian dotProject
Pada tulisan sebelumnya sudah dibahas
tentang bagaimana proses instalasi
dotProject. Selanjutnya pembahasan
beranjak pada bagaimana cara mengguna-
kan software ini di keseharian.
Login awalMisalkan peletakan dotProject yang dipilih
adalah pada IP local 192.168.1.181 atau
localhost (127.0.0.1). Halaman depan
dotProject akan tampil di browser seperti
Gambar 1, dengan memasukkan URL:
http://localhost/dotproject atau http://
192.168.1.181/dotproject.
Secara default, dotProject sudah menye-
diakan satu user, yaitu admin:
username : admin
password : password
Apabila proses login berhasil, maka akan
tampil halaman pertama.
Perhatikan pada baris paling atas. Di
sana terlihat menu: Companies, Projects,
Tasks, Calendar, Files, Contacts, Forums,
Tickets, User Admin, dan System Admin.
Pemunculan menu tersebut nantinya akan
tergantung pada user dan permission
yang diberikan pada user yang login. Bisa
jadi nanti ada seorang user yang tidak
dapat masuk ke dalam modul Forum, dan
seterusnya.
Company managementdotProject mensyaratkan minimal perlu
didefinisikan satu buah perusahaan (com-
pany). Hal ini sebaiknya dilakukan sebelum
mendefinisikan user-user yang akan terlibat
di dalam dotProject. Untuk sementara, owner
default dari perusahaan yang baru dibuat ini
adalah admin person. Hal ini nantinya dapat
diubah setelah ada user lain yang dimasukkan
melalui bagian user management.
Klik mouse (kiri) pada tulisan “New
Company” yang terletak pada pojok kanan
atas, maka akan menampilkan halaman
formulir pendaftaran perusahaan baru (new
company). Formulir ini minimal mem-
butuhkan masukan berupa nama perusa-
haan, lalu secara default Company Owner
akan di set ke user admin person. Terakhir
ditutup dengan melakukan klik pada tombol
bertuliskan “Submit” di pojok kanan bawah.
Misalnya, masukkan data berikut ini:
Company Name: CV Ide Satu
Kosong
User managementUser management di dotProject bisa dikata-
kan cukup baik. Modul ini menyediakan
proses penambahan user, editing, hingga set-
ting user permission dengan sangat mudah.
Menambah userPilih menu User Admin (catatan : saat ini user
yang sedang aktif adalah Admin) lalu klik
pada add user maka akan muncul formulir
penambahan data user. Formulir ini minimal
harus diisi dengan Login Name, Password,
First Name, Last Name, dan alamat email.
Sebagai latihan, silakan memasukkan
data berikut:
Login Name : loona
User Type : Director
Password : *******
Password2 : *******
First Name : Loona Sulanta
Company : CV Ide Satu Kosong
Email : loona@idesatukosong.
co.id
Harap berhati-hati dalam memberikan
password, karena pengubahan terhadap
password selalu meminta password yang
sedang aktif. Jika password yang sedang aktif
terlupa, maka pengubahan password harus
dilakukan secara langsung pada server da-
tabase. Misalkan password dari user noova
Gambar 1. Halaman login dotProject. Gambar 2. Halaman muka dotProject.
dotProject
71InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
lupa, maka dapat dicoba perintah langsung
ke database dengan menggunakan console/
terminal sebagai berikut:
$ mysql -u root -p [enter]
Enter password: *****
mysql> use dotproject;
mysql> UPDATE users SET
user_password=MD5(‘PasswordBaru’)
where user_username=’noova’;
Perlu dicermati bahwa setiap kali sebuah
user account selesai dibuat, user tersebut
tidak dapat langsung digunakan sebelum
diberikan permission tertentu. Daftar user
account yang baru saja di-entry ini diletak-
kan pada tab/kelompok Inactive Users.
Selanjutnya silakan masukkan beberapa user
account yang lain jika diperlukan.
Setting permissionSetting permission adalah bagian yang penting
di dalam managemen user dotProject, ter-
utama jika ingin membuat suatu pengorga-
nisasian tim proyek yang lebih terstruktur
dengan pengaturan wewenang yang lebih baik.
Permission ini akan menyangkut hak
baca/tulis, hanya baca, dan tidak boleh dibaca/
ditulis, (read/write, read only, deny) yang akan
dikaitkan dengan menu-menu di atas.
Sebagai contoh, jika seorang user yang diberi
akses hanya untuk perusahaan “A”, maka dia
tidak akan bisa melihat data proyek perusa-
haan lainnya kecuali proyek yang khusus di-
definisikan untuknya. Perlu dicatat bahwa
pemberian permission Project All akan
berakibat, user tersebut minimal dapat
melihat daftar proyek dari perusahaan
lainnya, walaupun tidak mendapat permission
Company. User type sebagai CEO, Director,
Branch Manager, Manager, Supervisor
ataupun Employee tidak menentukan model
permission-nya. Tip dan trik dalam pem-
berian permission ini cukup banyak variasi-
nya, silakan dicoba.
Pada saat sebuah user account dipilih, di
bagian bawah terdapat dua buah menu
tabulasi, yaitu Owned Projects & Permissions.
Owned project akan menampilkan daftar
Gambar 3. Menambah user. Gambar 4. Seting permission.
Gambar 5. Proyek baru. Gambar 6. Daftar proyek baru.
dotProject
www.infolinux.web.id72 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
proyek-proyek yang dimiliki oleh user ac-
count tersebut.
Sekarang pilihlah tab Permissions. Bagian
paling kiri akan berisi daftar permissions
yang diberikan, dan bagian kanan terdiri
dari Add or Edit Permissions dan Copy Per-
missions from Template.
Menu Add or Edit Permissions berfungsi
sebagai tempat memilih modul-modul serta
detail modul (item)-nya kalau ada, yang
akan dipilih dan diatur model permissions-
nya. Sedangkan menu Copy Permissions
from Template dapat digunakan untuk
“mencontek” setting permissions yang
sudah ada pada user account tertentu kepada
user account yang kita inginkan.
Menjalankan projects (Proyek-proyek)Membuat proyek baruUser yang berhak untuk membuat proyek
baru, minimal harus memiliki permission
company yang read-only. Klik-lah pada New
Project yang letaknya di bagian kanan atas.
Pendefinisian sebuah proyek baru mem-
butuhkan data minimal berupa: Project
Name, Project Owner, Company, Short Name,
Status dan Color Identifier. Secara default Sta-
tus akan berisi Not Defined, sedangkan Sta-
tus lainnya yang dapat dipilih antara lain Pro-
posed, In Planning, In Progress, On Hold, dan
Complete. Sebenarnya pilihan status ini dapat
diubah-ubah (ke bahasa Indonesia misalnya)
dengan mengubah langsung ke database pada
tabel sysvals. Proyek yang dibuat akan
terdistribusi sesuai dengan statusnya.
Manajemen pekerjaan/tasksSetelah proyek didefinisikan dengan leng-
kap, langkah selanjutnya adalah men-
daftarkan pekerjaan-pekerjaan apa saja
(Tasks) yang akan dilakukan di dalam proyek
tersebut. Setiap Task dapat dispesifikasikan
berupa Milestone, Independent Task, Parent
Task, dan Child Task. Keempat spesifikasi
Tasks tersebut dapat kita tentukan di awal
pendefinisian, maupun ditentukan kemu-
dian dengan melakukan proses edit.
Setiap Task harus memiliki seorang task cre-
ator yang dipilih dari salah satu user. Task cre-
ator ini dapat menerima pesan berupa e-mail
dari para kontributor yang terlibat di Tasks
tersebut pada saat mengisi log task. Log Task
adalah suatu catatan perkembangan dalam
format teks yang dapat dimasukkan oleh siapa
saja yang terlibat pada proyek tersebut.
Setiap Task dapat ditentukan modelnya,
yaitu Public, Protected, Partisipant, dan Pri-
vate. Model Partisipant misalnya, Task
dengan pilihan ini hanya dapat diakses oleh
orang-orang yang memang dilibatkan dalam
pekerjaan tersebut, yaitu creator dan assigned
staff (orang yang ditunjuk sebagai pelak-
sana). Administrator dotProject sekalipun
tidak bisa melihat detail Task dengan option
Partisipant ini.
Bila ada pekerjaan yang merupakan de-
tail atau sub dari pekerjaan yang lain, maka
pada spesifikasi data pekerjaan tersebut
harus menyertakan Task Parent-nya. Biasa-
nya suatu pekerjaan yang berposisi sebagai
task parent, maka pendefinisian pekerjaan
tersebut menyertakan pilihan Dynamic Task.
Pemilihan ini akan menjadikan waktu awal
dan akhir penyelesaian pekerjaan tersebut
menyesuaikan dengan subpekerjaan yang
pertama dan yang terakhir didefinisikan.
Jadi input-an Start Date maupun Finish Date
menjadi tidak perlu. Sayangnya pada versi
1.0.2 ini, field Target Budget tidak secara
otomatis ter-update.
Apabila suatu pekerjaan bergantung
kepada jadwal mulainya setelah penyelesaian
jadwal yang lainnya, maka hal tersebut
diatur pada bagian Task Dependencies. Kita
tinggal memilih satu atau lebih pekerjaan
yang menjadi prasyarat dilaksanakannya
pekerjaan yang sedang didefinisikan ini.
Pekerjaan-pekerjaan tersebut dapat pula
ditampilkan dalam format Gantt Chart.
Ada titik lemah pada penggunaan Gantt
Chart ini, yaitu pada saat daftar pekerjaan
mencapai jumlah yang sangat banyak. Secara
visual di layar monitor, memang semua
pekerjaan akan ditampilkan secara lengkap,
tetapi membutuhkan waktu cukup lama,
karena server harus meng-generate gambar
terlebih dahulu baru kemudian dikirim ke
client. Di samping itu, apabila Gantt Chart
menjadi sangat besar lalu akan dicetak ke
printer, gambar yang tercetak menjadi kacau
karena tidak dilakukan pagging terhadap
Gantt Chart yang besar tersebut.
Task LogsTask Logs adalah bagian yang sangat penting
dalam proses pengawasan kemajuan suatu
pekerjaan. Menu ini ditampilkan jika suatu
pekerjaan dipilih dengan cara melakukan
Klik pada saat View Project.
Pengisian Logs ini dapat dilakukan oleh
siapa saja yang dapat mengakses Task terkait,
terutama pada user yang ditunjuk sebagai
pelaksana pekerjaan tersebut. User yang
bertugas mengisi Logs tersebut dapat
Gambar 8. Daftar task.Gambar 7. Task baru.
dotProject
73InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
memilih pilihan (check box) Notify Creator
agar dotProject mengirimkan email kepada
pembuat project tentang pengisian Logs ini.
Karena sifat dari fungsi adalah sebagai Logs,
maka tidak ada pilihan untuk mengedit dari
apa yang sudah dimasukkan, hanya bisa
dilakukan penghapusan saja.
CalendarModul Calendar pada dotProject adalah
gabungan antara sistem event management
dan task management. Pilihan tampilan yang
disediakan adalah per bulan, per minggu dan
per hari dengan default tampilan per bulan.
Tampilan per minggu dapat ditampilkan
dengan cara mengklik icon yang ada di
kolom paling kiri/awal minggu dari tam-
pilan perbulan.
Tampilan per hari dapat dimunculkan
dengan cara mengklik pada tanggal tertentu.
Pengaturan Calendar ini secara umum, ada
di file config.php yang ada di direktori in-
cludes. Baris yang mengatur Calendar ini
adalah:
// Calendar settings.
// Day view start end and
increment
$dPconfig[‘cal_day_start’]
= 8; // Start hour, in 24
hour format
$dPconfig[‘cal_day_end’]
= 17; // End hour in 24 hour
format
$dPconfig[‘cal_day_increment’]
= 15; // Increment, in minutes
$dPconfig[“cal_working_days”]
= “1,2,3,4,5”; // days of week
that the company works 0=Sunday
Pengaturan di atas menunjukkan bahwa
calendar perhari akan menampilkan events
mulai dari jam 8 pagi hingga jam 17. Walau-
pun demikian, pendefinisian jadwal lebih awal
dari jam 8 tetap bisa dilakukan, akan tetapi
ditampilkan tetap pada posisi jam 8. Sayang-
nya tampilan events ini masih ada bugs se-
hingga tampilannya masih ada yang tidak pas.
Di bagian tampilan harian ini pula dapat
dilihat apakah sebuah pekerjaan/project
masih dalam jadwal (on schedule) atau sudah
melewati jadwal yang ditentukan dengan
pembedaan berdasarkan perbedaan warna
latar belakang tulisannya.
Manajemen fileTerkadang dalam pengerjaan proyek, di-
butuhkan file-file digital yang bisa diakses
oleh orang lain dalam proyek tersebut, maka
fitur Manajemen File ini menjadi alat yang
sangat bermanfaat ketika diperlukan pen-
distribusian file-file tertentu yang berguna
bagi proyek.
Untuk bisa memanfaatkan fitur ini,
direktori ~public_html/dotproject/files harus
diatur menjadi mode 777.
$ cd ~/public_html/dotproject/
$ cd chmod 777 files
Manajemen Trouble TicketDotProject menyediakan management trouble
ticket sederhana tapi cukup berguna. Setiap
ticket yang diajukan akan dapat diposisikan
pada status Open, Processing, Closed, dan De-
leted. Masing-masing status dapat berpindah-
pindah dengan cara memberikan Post Follow-
up sekaligus perubahan statusnya. Khususnya
untuk Ticket yang sudah deleted, dapat secara
permanen dihilangkan dengan mengklik Ex-
punge Deleted.
Sayangnya hingga versi terakhir ini,
setiap ticket yang didefinisikan masih dapat
dilihat oleh siapapun walaupun dari com-
pany yang berbeda.
Manajemen forumdotProject memiliki modul forum yang
cukup baik dan lengkap. Salah satu kekuatan
forum di dotProject ini adalah keterkaitan
forum-forum yang ada dengan project-
project yang terdaftar.
Aktivitas pada modul forum ini antara
lain, penciptaan Forum baru, pembuatan
topic yang terkait dengan forum tersebut,
lalu interaksi para user terhadap topik-topik
dengan memasukkan catatan dan tang-
gapan. Setiap forum dimiliki oleh user
tertentu, yang akan memiliki wewenang
penuh terhadap pengaturan Forum milik-
nya itu, hingga dapat melakukan peng-
hapusan terhadap tanggapan, topik, bahkan
forum itu sendiri.
Manajemen contactTidak ada yang istimewa dari modul mana-
jemen contact yang dimiliki oleh dotProject
ini.
Bagian modul System Administrator
sengaja belum dibahas, karena bagian ini
masih dalam tahap pengembangan yang
masih cukup jauh dari sempurna. Secara
umum, dotProject cukup lengkap untuk
digunakan di keseharian, baik itu untuk
manajemen proyek pribadi maupun mana-
jemen proyek setingkat perusahaan.�Prihantoosa ([email protected])
Gambar 9. Gantt Chart. Gambar 10. Kalender bulanan.
dotProject
www.infolinux.web.id74 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Kylix merupakan Rapid Application Development tool di Linux yang luar biasa. Pengem-bangan aplikasi berbasis GUI dapat dilakukan dengan mudah menggunakan Kylix.
Mengenal Kylix danSeluk Beluk Instalasinya
Dunia Linux adalah surga bagi
pengembang program. Beragam
bahasa pemrograman tersedia.
Mulai dari yang konvensional sampai yang
penuh kontroversial. Berbagai pustaka, untuk
melakukan apa saja juga tersedia gratis. Mulai
dari kebutuhan pemrosesan teks sampai
dukungan Internet. Sementara, editor juga
banyak bukan kepalang. Saat ini terdapat
lebih dari 400 editor dan jumlahnya cen-
derung akan terus bertambah. Beberapa edi-
tor menawarkan fungsionalitas Integrated
Development Environment yang sangat
membantu dalam pengembangan aplikasi
skala menengah sampai besar.
Framework untuk pengembangan aplikasi
pun tersedia, dan hampir semuanya boleh
dikatakan gratis. Contoh yang terbaik
barangkali Mono, yang versi 1.0nya baru saja
diluncurkan.
Namun, dunia free software sepertinya
lupa pada satu kebutuhan pengembangan
aplikasi yang banyak terdapat di dunia Win-
dows: Rapid Application Development. Suatu
lingkungan pengembangan aplikasi yang
terintegrasi, segalanya telah tersedia, mulai
dari debugger sampai drag and drop GUI
builder. Di Windows, kita mengenal dengan
baik Visual Basic dan Delphi.
Benar bahwa kita mengenal Gambas dan
Boa-Constructor. Gambas adalah imple-
mentasi versi free software untuk Visual Ba-
sic. Namun, sampai saat ini, Gambas, se-
jujurnya, belum bisa digunakan dalam
lingkungan kerja produktif. Sementara, Boa-
Constrcutor, GUI builder untuk bahasa Py-
thon yang dikembangkan dengan pustaka
Wx, juga belum bisa digunakan untuk
lingkungan yang produktif. Fiturnya banyak,
termasuk integrasi Zope, namun banyak hal
harus diperbaiki agar layak digunakan sehari-
hari.
Yang paling sempurna barangkali Qt De-
signer, karya besar Trolltech. Sayangnya, us-
ability-nya belum sebagus Visual Basic
ataupun Delphi. Lagipula, untuk pengem-
bangan aplikasi non-free software, harganya
terlalu mahal untuk versi enterprise-nya.
Serba-serbi KylixBorland, sebagai software development com-
pany sangat terkenal, kemudian melakukan
porting Delphi 5 pada awalnya menggunakan
bantuan WineLib dan menghasilkan produk
dengan nama Kylix. Kylix sendiri hadir
dengan dua IDE untuk dua bahasa yang
berbeda: Delphi dan C++. Berbeda jauh
dengan kondisi di dunia windows dimana
kedua fungsionalitas tersebut dipaketkan
dalam dua produk berbeda: Delphi dan C++
Builder. Bahwa Kylix mendukung C++ tentu
bisa dipahami karena popularitas C++ yang
begitu tinggi di Linux.
Bagaimana tingkat usability-nya? Me-
nurut penulis, usability-nya sangat tinggi.
Penulis cukup lama menggunakan Delphi
ketika melakukan pemrograman di Windows
dan mendapatkan penggunaan Kylix sangat-
lah mudah dan menyenangkan.
Saat ini (atau sejak 2002), Kylix telah
mencapai versi 3. Kylix 3 dipaketkan dalam
tiga jenis: Open, Professional, dan Enterprise.
Versi open-nya bisa di-download bebas,
namun Anda hanya bisa membangun apli-
kasi GPL dengan versi open tersebut. Dan,
beberapa dukungan seperti XML dan data-
base canggih tidak akan didapatkan dari versi
open ini. Versi Enterprise adalah versi yang
paling lengkap dan menawarkan fungsi yang
luar bisa untuk sebuah produk dengan harga
US$1500.
Ada tiga permasalahan yang cukup meng-
ganjal. Yang pertama dan mungkin utama
adalah ketika Borland telah TIDAK menge-
luarkan update Kylix selama kurang lebih dua
tahun. Hal ini cukup menyita perhatian
karena pada saat Kylix 3 dirilis, teknologi
Linux belum secanggih saat ini. Kernel yang
digunakan masihlah 2.4, dan versi distro yang
didukung bahkan sangat kuno, seperti SUSE
7.3 misalnya. Saat ini, SUSE saja telah
mencapai versi 9.1 dengan kernel 2.6.
Masalah ini jelas berbahaya. Coba saja in-
stall Kylix 3 di SUSE 9.1, dan Anda akan
mendapatkan produk yang berhasil diinstal,
namun gagal dijalankan. Tidak hanya SUSE
9.1, Anda juga akan mendapatkan hal serupa
di distro berbasis kernel 2.6.
Masalah ini bisa diselesaikan, namun
solusinya sangat menyedihkan. Dan ketika
masalah ini selesai dan Anda ingin meng-
gunakan IDE C++, Anda bahkan tidak dapat
melakukan kompilasi apapun karena terjadi
inkompatibilitas dengan beberapa header
versi terbaru.
Permasalahan kedua adalah bahwa Kylix
hanya dapat digunakan untuk membuat
aplikasi untuk arsitektur IA32, artinya, untuk
arsitektur Intel 32 bit. Borland tidak mem-
berikan tanda untuk Kylix pada sistem 64-
bit, atau untuk arsitektur lain.
Permasalahan ketiga adalah tanda-tanda
akan mulai matangnya BuilderX. Yang satu
ini adalah unifikasi C++ dan semua tool
andalan Borland untuk pengembangan
aplikasi multi platform dengan C++. Ini
menjadi masalah karena ketika digabungkan
dengan masalah pertama dan kedua, sebuah
pertanyaan apakah Kylix akan dihentikan
menjadi pertanyaan yang sangat penting!
Penulis mengikuti beberapa milis Kylix
dan membaca beberapa interview dengan
pengembang utama Delphi pada beberapa
konferensi yang diadakan Microsoft, dan
mendapatkan beberapa sinyal bahwa Borland
sedang melakukan sesuatu dengan Kylix, atau
Kylix
75InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
pesimisnya, Borland masih memperhatikan
Kylix.
Beberapa pengembang melakukan pem-
bicaraan dengan Miguel Icaza, pengembang
utama Mono, dan mendapatkan sinyal bahwa
Borland juga memperhatikan Mono dan
Kylix, dan dihubungkan dengan perkiraan
bahwa Borland masih memperhatikan Kylix,
kita boleh sedikit lebih tenang.
Kylix, menurut perkiraan penulis, masih
sangat-sangat layak mendapatkan perhatian
dan layak pula dicoba apabila Anda mem-
butuhkan RAD. Pengalaman Borland dalam
mengembangkan tool bahasa pemrograman
sudah tidak diragukan lagi. Bicara matang,
Kylix adalah produk yang sangat matang.
Harap diperhatikan bahwa Kylix adalah
Delphi, yang telah diluncurkan tujuh atau
delapan seri di Windows.
Berbagai masalah Kylix akan kita bahas
dalam artikel ini. Beberapa contoh akan
dibahas pula.
Instalasi KylixInstalasi akan dilakukan pada distro SUSE
9.1, namun dapat diterapkan pada distro lain
dengan mudah. Pembahasan ini akan men-
cakup distro dengan kernel 2.6.x.
Apabila Anda memiliki CD-ROM Kylix,
masukkan segera, dan SUSE secara default
akan melakukan autorun dengan meminta
Anda untuk memasukkan password root. Hal
ini disebabkan karena secara default, instalasi
akan dilakukan secara system wide.
Ya. Kylix menawarkan dua tipe instalasi,
system wide dan lokal per user. Secara default,
apabila privilege root memungkinkan, maka
instalasi system wide akan dilakukan. Namun,
Anda selalu bisa memilih untuk melakukan
instalasi lokal.
Instalasi system wide memiliki banyak
manfaat, yang salah satunya adalah dapat
diakses oleh beberapa user tanpa meminta
setiap user untuk melakukan instalasi
masing-masing. Hal ini cukup menguntung-
kan dari sisi penggunaan ruang kosong
harddisk. Sekali melakukan instalasi, 400 MB
bisa terpakai untuk Kylix Enterprise.
Namun, sebelum Anda melanjutkan, se-
baiknya JANGAN melakukan instalasi secara
system wide. Batalkan apabila password root
diminta. Kenapa sebaiknya jangan system
wide? Pertama, system wide akan mengguna-
kan RPM, yang notabene segala dependency
dan aturannya cukup kuno. Salah satu paket
bahkan memiliki dependency pada suatu
pustaka yang saat ini telah cukup kuno dan
versi tersebut sudah tidak digunakan lagi.
Lakukan instalasi lokal per user, yang
dapat dijalankan sebagai user biasa dengan
memanggil file setup.sh di CD-ROM Kylix.
Instalasi ini tidak akan mengotori sistem
karena file-file akan di-copy-kan begitu saja
ke direktori yang Anda tentukan. Sistem akan
tetap bersih, walau, Anda harus berkorban
400 MB untuk setiap user.
Ketika setup.sh dijalankan, Anda akan
menjumpai layar persetujuan lisensi, kemu-
dian diikuti oleh pemilihan paket dan setelah
melewati proses instalasi, Anda pun selesai.
Instalasinya akan meng-copy-kan semua
file yang dibutuhkan ke ~/kylix3 secara de-
fault akan akan melakukan symlink berbagai
script ke home directory (link path). Untuk
SUSE, penulis lebih suka untuk melakukan
symlink berbagai script ke direktori bin relatif
terhadap home directory.
Apabila Anda ingin mendapatkan fungsi-
onalitas Delphi, maka jalankanlah file
startdelphi. Untuk fungsionalitas C++,
jalankanlah startbcb.
Pada SUSE 9.1, kernel 2.6.4 dan glibc 2.3.3,
berikut ini adalah apa yang akan muncul ketika
Anda menjalankan startdelphi misalnya:
nop@linux:~/bin> ./startdelphi
/home/nop/kylix3/bin/delphi:
relocation error: /home/nop/
kylix3/bin/libwine.borland.so:
symbol errno, version GLIBC_2.0
not defined in file libc.so.6
with link time reference
Sekilas, terlihat seperti kita tidak meng-
gunakan GLIBC 2.0, padahal versi yang
digunakan adalah 2.3.3. Kesalahan tersebut
bukanlah karena tidak adanya GLIBC 2.0,
namun karena cara pemrograman yang tidak
kompatibel dengan teknologi baru yang
digunakan Linux saat ini.
Untuk itu, paksa agar menggunakan libc
alternatif dengan mengeset variabel sistem
LD_ASSUME_KERNEL berikut ini:
LD_ASSUME_KERNEL=2.4.21 ./
startdelphi
atau, bukalah file startdelphi, dan tambahkan
baris berikut ini di awal script:
export LD_ASSUME_KERNEL=2.4.21
dan tambahkan baris berikut di akhir script:
unset LD_ASSUME_KERNEL
Pertama-tama, font matrix akan dibuat
setelah itu, Anda akan menjumpai layar
registrasi. Siapkan serial number dan akti-
vasinya, kemudian masukkanlah apabila
diminta. Untuk registrasi lebih lanjut, apabila
Anda tidak terhubung ke internet, pilihlah
untuk menggunakan email. Setelah semua-
nya beres, maka Kylix pun dapat dijalankan
dengan mulus.
Kita akan melaju ke permasalahan beri-
kutnya :)
Menggunakan KylixAnda telah selesai melakukan instalasi dan
registrasi. Kita akan melanjutkan dengan
menjalankan Kylix/Delphi sekali lagi, dan
kemudian berhadapan dengan RAD Delphi
yang populer tersebut.
Lakukanlah hal sederhana, tarik beberapa
button ke dalam form, kemudian simpan
semua project Anda beserta unitnya dengan
nama file default, dan build-lah project
Anda. Anda tidak perlu menulis satu baris
kode pun untuk menghasilkan sebuah win-
dow dengan segala tombol close, minimize,
dan maximize yang bekerja. Anda juga dapat
mencoba menjalankan project Anda dengan
menekan tombol F9. Project akan dijalankan
dengan sukses. Beres, Project1 telah Anda
buat dengan sangat mudah. Keluarlah dari
Kylix.
Sekarang, kita masuk ke permasalahan-
nya. Anda telah melihat bahwa aplikasi Anda
dapat dijalankan dengan sukses ketika Anda
menekan tombol F9. Sekarang, bukalah
xterm, dan masuklah ke direktori project
Anda. Dan jalankanlah Project1 Anda:
nop@linux:~/Project/Project1>
./Project1
./Project1: error while loading
shared libraries: ./Project1:
Kylix
http://www.distrolinux.net
Sedia CD Distro Linux & BSD
Murah, Bergaransi (10Rb/CD)
Email : [email protected]
HP/SMS : 0812 1876 981
www.infolinux.web.id76 InfoLINUX 09/2004
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
undefined symbol:
initPAnsiStrings
Terlihat bahwa Project1 seolah gagal
menemukan pustaka yang dibutuhkan.
Mencoba memperbaiki masalah, kita akan
coba melihat pustaka apa saja yang sebenar-
nya dibutuhkan oleh Project1 dan apakah
telah tersedia di sistem:
nop@linux:~/Project/Project1>
ldd Project1
/lib/libNoVersion.so.1
=> /lib/libNoVersion.so.1
(0x40018000)
linux-gate.so.1 =>
(0xffffe000)
libX11.so.6 => /usr/
X11R6/lib/libX11.so.6
(0x4002a000)
libpthread.so.0 => /
lib/tls/libpthread.so.0
(0x40127000)
libdl.so.2 => /lib/
libdl.so.2 (0x40137000)
libc.so.6 => /lib/tls/
libc.so.6 (0x4013a000)
/lib/ld-linux.so.2 => /
lib/ld-linux.so.2 (0x40000000)
Sekali lagi, keajaiban terjadi. Semua
pustaka yang dibutuhkan telah ditemukan,
namun Project1 masih beranggapan bahwa
ada pustaka yang kurang. Padahal, ketika di
dalam IDE Delphi, Project1 dapat dijalankan
dengan mulus.
Permasalahan tersebut disebabkan ada
beberapa pustaka runtime yang masih
dibutuhkan oleh Project1 dan lokasinya tidak
didaftarkan. Bahwa ketika berada di dalam
IDE dapat dijalankan dengan mulus karena
lokasi tersebut terdaftar di konfigurasi IDE.
Lokasi ajaib tersebut adalah direktori
kylix3/bin.
Ada beberapa cara untuk mendaftarkan
lokasi tersebut:
1. Masukkan entri path lengkap kylix3/bin
Anda, misal /home/nop/kylix3 ke /etc/
ld.so.conf. Anda akan membutuhkan
privilege root. Setelah itu, jalankan
ldconfig sebagai root. Cara ini akan
mempengaruhi sistem.
2. Gunakan variabel sistem dan tambahkan
path lengkap ke kylix3/bin. Kita akan
menggunakan cara kedua ini.
Untuk cara kedua, berikan perintah
berikut ini di xterm:
export LD_LIBRARY_PATH=/home/
nop/kylix3/bin:$LD_LIBRARY_PATH
Anda juga bisa memasukkan perintah ini
di ~/.profile ataupun di ~/.bash_profile.
Kini, aplikasi Anda dapat dijalankan
dengan mulus. Namun, harap perhatikan
bahwa deployment aplikasi adalah isu yang
berbeda dan tidak sesederhana masalah de-
pendency library. Kita akan membahas de-
ployment aplikasi Kylix di edisi-edisi
berikutnya.
Kita akan melanjutkan berbagai masalah
lain berikutnya :)
Masalah header C++Apabila Anda menggunakan fungsionalitas
C++, Anda akan menjumpai bahwa kom-
pilasi tidak akan berhasil karena beberapa
header tidak kompatibel. Untuk urusan yang
satu ini, download-lah patch (unofficial!) di
alamat berikut ini:
<ALAMAT>
Setelah itu, ikuti langkah instalasinya
untuk memperbarui header. Setelah itu,
diharapkan Anda akan dapat melakukan
kompilasi dengan mulus.
Masalah pustaka lainnyaKylix rupanya menganut aliran bersusah-susah
dahulu, bersenang-senang kemudian. Setelah
melakukan instalasi, banyak hal yang harus
diatur ulang agar kita bisa menikmati kylix.
Anda akan merasa lebih terkejut lagi
manakala mencoba melakukan koneksi da-
tabase. Sebagai contoh, koneksi ke database
PostgreSQL. Koneksi ini membutuhkan dua
pustaka besar, dan hanya satu yang diserta-
kan. Pustaka konektivitas ke PostgreSQL/Cli-
ent PostgreSQL harus Anda usahakan sendiri.
Apabila memiliki PostgreSQL, maka Anda
sangat beruntung. Apabila tidak, Anda perlu
mencari ke teman-teman Anda atau ke
Internet benda ajaib dengan nama libpq.so.
Ajaibnya lagi, umumnya Anda akan
mendapatkan libpq.so.3. Dan yang dibutuh-
kan adalah libpq.so.2! Maka, lakukan symlink
dan masalah dependency pun selesai untuk
kasus tersebut.
Di masa depan, apabila Borland belum
memperbaiki Kylix dalam waktu 6 bulan atau
1 tahun, maka dirasa masalah ini akan
bertambah.
Kylix
Persetujuan lisensi pada saat instalasi. Memilih paket yang akan diinstal.
77InfoLINUX 09/2004www.infolinux.web.id
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Yang penting, kita perlu mengetahui betul
cara memperbaiki masalah ketergantungan
ini. Memang sedikit repot, namun rasanya
tidak masalah dan tidak sebanding dengan
fasilitas yang diberikan oleh Kylix untuk
pengembangan aplikasi.
IDE akan memberikan pesan-pesan yang
sedikit aneh untuk masalah pustaka. Umum-
nya, apabila Anda menjumpai masalah Un-
able to Load libxxx, maka Anda harus
menelusuri berbagai ketergantungan, mulai
dari pustaka itu sampai pustaka lain yang
dibutuhkan.
Beberapa mitos yang perludiperhatikanSebagai suatu produk besar yang telah dua
tahun tidak diurus, Kylix mirip-mirip dengan
rumah besar yang kosong yang telah di-
tinggalkan selama dua tahun. Banyak mitos!
Bahkan, lahirnya Kylix saja sudah menim-
bulkan mitos. Kita akan membahas beberapa
mitos yang sebenarnya kurang tepat atau
sudah kurang tepat untuk saat ini.
1. Kylix dibangun dengan memanfaatkan
Qt, maka saya harus membayar Kylix dan
Qt! Sebenarnya tidak. Sekali Anda mem-
beli Kylix, maka hanya sekali itulah Anda
membayar untuk dapat menggunakan
Kylix.
2. Kylix dibangun dengan bantuan Winelib,
maka aplikasi yang dibangun dengan kylix
juga bukan aplikasi Linux natif! Tidak.
Mitos ini salah sama sekali. Urusan
winelib hanya selesai ketika Borland
membangun Kylix. Aplikasi yang di-
bangun dengan Kylix adalah aplikasi natif
Kylix
Proses instalasi. Instalasi selesai.
Linux dan tidak memerlukan emulator
atau layar kompatibilitas apa pun juga
untuk dapat berjalan di Linux.
3. Aplikasi yang dibangun dengan Kylix
hanya berjalan di Linux! Ini salah besar.
Memang tidak ada Kylix for Windows
(kalau ada, akan terdengar lucu sekali,
karena justru kylix ada karena Delphi),
namun Anda dapat mengunakan Delphi
6/7 untuk melakukan kompilasi ulang di
Windows.
4. File hasil kompilasi sangat besar. Ini benar
dan ini adalah ciri khas Borland. Penulis
ingat ketika pertama kali menggunakan
Delphi 2 dan 3. Perbedaan binary hasil
kompilasi, walaupun cukup mengagetkan,
masih bisa diterima karena peningkatan
berbagai fitur. Tapi, ketika dari 3 ke 4 atau
5, ukurannya bertambah besar padahal
seolah-olah tidak banyak penambahan
pada bagian komponen GUI. Tapi itulah
produk Borland. Untungnya, aplikasi
Anda dapat dijalankan dengan cukup
cepat walaupun berukuran cukup besar.
Anda akan lebih terkaget-kaget lagi ketika
membangun aplikasi database dengan
grid. Ukuran akan menembus di atas 1
MB! Menggunakan objcopy untuk men-
strip semua informasi juga tidak akan
membantu.
5. Aplikasi yang dibangun dengan Kylix akan
membutuhkan pustaka Qt! Salah. Ini di
Kylix 2. Aplikasi standar di Kylix 2 akan
membutuhkan sekitar 14 pustaka, ter-
masuk interface Qt. Saat ini, sudah tidak
perlu lagi.
6. Kylix adalah aplikasi yang tidak matang,
kata berbagai forum di Internet. Ini juga
belum tentu. Orang boleh saja bicara,
karena itu adalah hal masing-masing,
secara bertanggung jawab. Namun, rasa-
rasanya permasalahan utama adalah up-
date. Kylix justru matang setelah Borland
berhasil merilis 7 Delphi dan sibuk sekali
dengan Delphi.NET ataupun BuilderX.
Pengalaman Borland telah dibuktikan
lebih dari 20 tahun dalam membangun
tool pemrograman.
7. Kylix Enterprise tidak dapat digunakan
untuk membangun aplikasi GPL! Ini
salah besar. Yang ada adalah, Kylix Open
Edition tidak dapat digunakan untuk
membangun aplikasi proprietary. Sekali
Anda telah membeli Kylix Enterprise,
Anda berhak melakukan apa saja untuk
produk yang dihasilkan dari kylix ter-
sebut, selama masuk akal. GPL adalah
sesuatu yang masuk akal, jadi boleh-
boleh saja.
Hal terakhir, cobalah easter egg (telur
paskah) Kylix dengan membuka IDE Delphi
| Help | About dan mengetikkan DEVELOP-
ERS sambil menekan tombol ALT. Bisa juga
dengan mengetikkan TEAMS sambil me-
nekan tombol ALT.
Demikianlah beberapa serba-serbi dan isu
tentang Kylix. Masih banyak isu lagi se-
hubungan dengan penggunaan Kylix. Di
beberapa edisi ke depan, kita akan membahas
beberapa hal seputar penggunaan Kylix dan
deployment aplikasi. Selamat mencoba, dan
sukses!�Noprianto ([email protected])