TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Bekerja dengan CVS
Bekerja dengan CVS Dalam proyek software skala besar, kerja sama tim yang baik sangatlah diperlukan. Untuk membantu mengelola source code yang dikerjakan oleh tim, kita dapat menggunakan CVS.
50
Menambahkan repository.
INFOLINUX MEI 2004
sistem uji (testing). Ada kalanya, ketika suatu software dirilis, tim telah menyiapkan versi berikutnya untuk diuji. Agar tidak mengganggu source code stabil, branch baru dapat dibuat dan dikembangkan. CVS sendiri dapat merekam history setiap file dan menyimpan perbedaan setiap versi. CVS juga menyimpan catatan tentang siapa yang melakukan perubahan, kapan dan alasan perubahan serta hal-hal lainnya. Walaupun CVS dibangun di atas RCS, CVS memiliki beberapa kelebihan dibandingkan RCS. Kelebihan-kelebihan tersebut di antaranya adalah CVS termasuk sistem desentralisasi sehingga setiap anggota tim dapat memeriksa server dan mendapatkan versinya masing-masing secara lokal. Selain itu, CVS juga memungkinkan kita untuk melakukan editing file secara concurent. Dan, ketika suatu software ingin dirilis, CVS dapat menandai satu tree proyek secara keseluruhan sebagai software rilis. Melihat ke masa lalu, CVS adalah sistem yang rumit dan kompleks. Software CVS adalah software tingkat tinggi dan telah dikembangkan dalam kurun waktu
S
atu programer tentu saja tidak bisa menyelesaikan proyek besar sendirian sesuai target waktu, sepandai apapun orangnya, karena proyek software besar tidak hanya melibatkan logika, melainkan juga melibatkan analisis, pengujian, pembuatan dokumentasi, dan lainnya. Oleh karena itu, sebuah tim yang solid harus dibangun. Dalam sebuah tim, nantinya delegasi tugas dapat dilakukan sesuai kompetensi. Apabila terdapat lebih dari satu orang di tim yang bekerja dengan source code program, maka ada baiknya sebuah sistem kontrol dan revisi source code harus diterapkan. Penerapan sistem kontrol tersebut umumnya dilakukan dengan CVS, Concurent Versioning System. Dengan menggunakan CVS, tim developer dapat mengambil manfaat yang besar. Sebagai contoh, tim dapat melacak setiap perubahan yang dilakukan. Perubahan juga dapat dilakukan oleh setiap anggota dan dapat digabungkan dengan anggota tim lain. Selain itu, dengan mudah branch baru dapat diterapkan. Dalam software besar, terkadang kita perlu menerapkan sistem rilis stabil dan
yang sangat lama. Butuh waktu 20 sampai 30 tahun untuk menentukan algoritma terbaik dan diterapkan ke dalam aplikasi. Walaupun telah dikembangkan puluhan tahun, sampai saat ini CVS masih mengalami evolusi. Tercatat pada bulan Desember 1986, Dick Grune mengimplementasikan algoritma CVS ke dalam kumpulan shell script dan melepaskannya ke newsgroup comp.sources.unix. Walaupun sampai saat ini shell script tersebut mungkin tidak terdapat lagi dalam source code CVS, banyak algoritma, khususnya untuk resolusi konflik masih berdasarkan algoritma yang digunakan waktu itu. Pada bulan April 1989, Brian Berliner melakukan desain ulang dan menerapkannya sebagai aplikasi. Komunitas segera membantu Brian untuk menerapkan yang terbaik. Seperti yang dikatakan sebelumnya bahwa CVS terus mengalami perkembangan, tercatat telah dikembangkan proyek dengan nama Subversion, yang merupakan penyempurnaan lebih lanjut dari
Menambahkan proyek baru.
www.infolinux.web.id
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Melakukan CVS checkout.
CVS. Walau demikian, CVS sendiri masih sangat umum dan digunakan secara meluas di dunia ini. Dalam bentuk free software ataupun proprietary. Pada kenyataannya, CVS dapat memenuhi kebutuhan software besar saat ini. Dalam artikel ini, kita akan membahas bagaimana membangun sebuah repository lokal, di mana anggota tim dapat menyimpan proyek software-nya semudah melakukan revisi dan membuat rilis baru. Sebisa mungkin, kita akan menghindari command line interface. Oleh karena itu, untuk front end, kita akan menggunakan Cervisia, front end CVS yang sangat layak digunakan. Sebelum kita memulai, periksalah terlebih dahulu sistem Anda. Untuk membangun CVS repository, kita membutuhkan aplikasi CVS, yang dapat didownload di http://www.cvshome.org. Namun umumnya, setiap distro telah memaketkan CVS dan menginstalnya secara otomatis. Kemudian, untuk front end CVS, kita akan membutuhkan Cervisia, yang dapat di-download di http:// cervisia.sf.net. Cervisia juga umumnya akan terinstal otomatis ketika Anda menginstal paket kdesdk.
Membangun repository lokal Untuk membangun repository lokal, siapkan sebuah direktori yang dapat diakses baca tulis oleh setiap anggota tim Anda. Sebagai contoh, penulis akan membuat sebuah repository di /home/nop/cvsroot. Sesuaikan
Bekerja dengan CVS
Membuka Sandbox baru.
dengan konfigurasi Anda. Berikan perintah berikut ini untuk membangun repository tersebut: cvs -d /home/nop/cvsroot/ init Sesederhana itu, Anda telah membangun sebuah repository CVS. Selanjutnya, setiap anggota tim Anda dapat mengakses repository tersebut. Berbagai metode dapat digunakan untuk otentikasi. Mulai dari penggunaan password sampai penggunaan ssh. Gunakan Konqueror, Naulitus, atau file manager kesayangan Anda untuk melakukan browsing ke cvsroot tersebut. Anda akan melihat sebuah direktori dengan nama CVSROOT, yang mengandung berbagai file. Sebagai catatan, terkadang proyekproyek besar juga menerapkan anonymous cvs. Dengan demikian, siapa saja dapat masuk ke dalam repository dan mengambil yang tersedia. Untuk bekerja dengan local repository tersebut, kita perlu menambahkannya terlebih dahulu di Cervisia. Bukalah Cervisia, dan akseslah menu Repository| Repositories. Sebuah dialog akan ditampilkan. Kliklah tombol Add, dan sebuah dialog lain akan ditampilkan. Isilah field repository dengan alamat repository lokal kita, /home/nop/cvsroot. Kembali ke dialog sebelumnya, dan Anda akan melihat bahwa sebuah repository telah terdaftar. Anda bisa menambahkan repository lain apabila diinginkan. Setelah selesai, tutuplah dialog tersebut.
www.infolinux.web.id
Working directory dan proyek sederhana Kita mengasumsikan CVS repository kita belum terisi proyek apapun. Dalam hal ini, kita akan memasukkan satu proyek baru ke dalamnya. Sebelum melakukan hal tersebut, buatlah terlebih dahulu sebuah working directory. Working directory adalah istilah di mana Anda akan menyimpan setiap local copy untuk proyek yang Anda ambil dari CVS repository. Di artikel ini, penulis mendefinisikan working directory di /home/nop/temp/mycvs. Sesuaikan dengan konfigurasi Anda. Selanjutnya, bukalah Cervisia, dan kita akan mendaftarkan proyek baru kita di CVS repository. Untuk menambahkan suatu proyek, kita menyebutnya sebagai import. Bukalah menu Repository|Import. Sebuah dialog akan ditampilkan. Pada field repository, pilihlah repository lokal kita sebelumnya. Untuk module, isilah dengan nama proyek kita, misalnya test1. Untuk working directory, masukkan working directory kita yang telah dibuat sebelumnya, yaitu /home/nop/temp/mycvs. Sekali lagi, sesuaikan dengan konfigurasi Anda. Pada vendor tag, masukkanlah nilai berikut ini: TEST1_DIST. Pada release tag, masukkanlah informasi rilis seperti TEST1_0_1_0. Anda dapat mengisikan komentar di field comment. Kliklah tombol OK, dan Anda baru saja mendaftarkan sebuah proyek dengan nama test1. Lihatlah ke bagian bawah window Cervisia, dan pastikan tidak ada pesan kesalahan yang tertulis di sana.
INFOLINUX MEI 2004
51
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Daftar file Sandbox.
Selanjutnya, setelah kita mendaftar proyek baru di repository lokal kita sebelumnya, kita mungkin ingin mendapatkan perubahan terbarunya. Memeriksa CVS disebut juga dengan istilah checkout. Untuk melakukan checkout, pilihlah menu Repository| checkout. Sebuah dialog akan ditampilkan, masukkan nama module yang ingin diperiksa, yaitu test1. Pastikan working directory Anda diisi dengan benar. Kliklah tombol OK, dan lihatlah log di bagian bawah Cervisia. Pastikan tidak terjadi kesalahan. Apabila sukses, maka kita telah mendapatkan satu copy lokal dari modul test1 tersebut. Periksalah working directory Anda, dan Anda akan menemukan sebuah direktori dengan nama test1, yang mengandung direktori CVS di dalamnya. Untuk bekerja dengan file-file kita, kita perlu membuka sebuah sandbox terlebih dahulu dengan mengakses menu File| Open Sandbox. Pilihlah direktori test1 yang terletak di dalam working directory. Apabila sukses, maka Anda akan melihat direktori Anda di area kerja utama Cervisia. Saat ini, proyek kita belum memiliki satu source code pun. Kita akan membuatnya terlebih dahulu agar bisa bekerja dengan CVS nantinya. Buatlah test1/test1.c di working directory kita, dan isilah dengan source code berikut: #include <stdio.h> int main() {
52
Bekerja dengan CVS
INFOLINUX MEI 2004
Menambahkan file ke repository.
return 0; }
Menambahkan dan menghapus file Kita telah membuka sebuah sandbox, dan kita telah memiliki sebuah source code dengan nama file test1.c. Kita akan mengupload file tersebut ke repository lokal kita. Namun, sebelum itu, karena kita baru saja mengubah direktori test1 kita, perbarui dahulu sandbox kita dengan memilih File| Update. Perhatikan perubahan di area kerja kita. Kini, kita telah memiliki test1.c. Perhatikan status dari file tersebut, yaitu Not in CVS. Hal ini wajar karena file tersebut masih kita miliki secara lokal, dan belum disimpan ke repository. Pilihlah test1.c tersebut dan akseslah menu File|Add to Repository. Sebuah dialog akan tampil, dan pastikan Anda telah memilih test1.c. Kembalilah perhatikan status dari file test1.c tersebut, yaitu Locally Added. Perhatikan juga Revisionnya, yaitu 0. Sampai di sini, kita masih belum benarbenar menyimpan dan mendaftarkan file kita di CVS. Untuk benar-benar melakukannya, kita akan melakukan CVS commit. Pilihlah File|Commit. Sebuah dialog akan tampil. Isilah Log message sesuai keinginan. Dan kliklah tombol OK. Perhatikan status file test1.c tersebut. Kini statusnya telah berubah menjadi Up to Date. Perhatikan juga revision-nya, yang kini berubah menjadi 1.1. Kita telah menambahkan file ke dalam repository CVS kita.
www.infolinux.web.id
Untuk menghapus file, pilihlah File| Remove from Repository. Sebuah dialog akan tampil untuk konfirmasi. Harap diperhatikan, apabila Anda menghapus file, maka file lokal Anda juga akan dihapus. Bagaimana? Sampai di sini, kita telah mempelajari bagaimana menambahkan dan menghapus file. Berikut kita akan melihat bagaimana untuk mengirimkan file test1.c yang kita modifikasi ke repository.
Melakukan perubahan Modifikasilah file test1.c. Kini, file test1.c berikan source code berikut: #include <stdio.h> int main() { printf(“hello world!!!”); return 0; } Karena kita telah mengubah file test1.c, maka kita perlu meng-update sandbox kita. Sekali lagi, akseslah perintah File|Update. Perhatikan kembali status file test1.c, yang berubah menjadi Locally Modified. Selanjutnya, perubahan tersebut akan kita kirimkan ke repository. Cukup lakukan saja cvs commit dengan mengakses File| Commit. Isikan komentar Anda, dan perhatikan kembali status file test1.c, yang kini berubah menjadi Up to Date. Perhatikan juga revision-nya yang berubah menjadi 1.2. Semua hal tersebut menunjukkan Anda telah melakukan perubahan.
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Dialog Browse Log.
Berikutnya, kita akan melihat bagaimana Cervisia dapat menampilkan perubahan yang terjadi diantara dua revisi dengan tampilan yang memukau.
Mengamati perubahan Untuk mengamati perubahan antara revisi, akseslah menu View|Browse Log. Sebuah dialog akan tampil. Di dialog ini, Cervisia menyajikan dua modus untuk mengamati revisi-revisi yang ada. Pertama adalah modus Tree. Pada modus tree ini, setiap perubahan akan berusaha ditampilkan dalam hirarki pohon secara mendetail. Sementara, pada modus list, setiap revisi akan ditampilkan secara mendetail. Masuk ke hal yang paling menyenangkan. Semisal, kita akan melihat apa saja yang berubah dari revisi 1.1 dan 1.2. Pilihlah 1.1 untuk Revision A dan 1.2 untuk Revision B. Untuk memilih revision A, gunakan tombol kiri mouse. Sementara, untuk memilih revision B, gunakan tombol tengah mouse Anda. Kemudian, kliklah tombol Diff. Sebuah dialog akan ditampilkan untuk kita. Di dialog ini, Anda dapat melihat perubahan di antara dua revisi. Perubahan disajikan dengan sangat mendetail. Penggunaan warna-warni indah dan atribut teks lainnya benar-benar luar biasa. Di dialog ini, kita juga akan melihat informasi berapa saja perbedaan yang ada. Aktifkan Synchronize scroll bars untuk mengunci scroll bar. Anda dapat melakukan navigasi dengan mudah dan cepat
Bekerja dengan CVS
Mengamati perubahan yang terjadi.
untuk melihat perubahan-perubahan yang ada. Pada dialog Browse Log sebelumnya, apabila Anda hanya ingin melihat isi dari suatu revisi, Anda dapat menekan tombol Annotate. Demikianlah perkenalan kita dengan CVS. Tentu saja, perkenalan ini tidak mampu mencakup setiap aspek dari CVS
yang sangat kompleks tersebut. Namun, paling tidak, Anda bisa segera memulai proyek yang lebih besar, yang melibatkan berbagai pihak, untuk hasil yang lebih baik. Segeralah buat repository baru, dan marilah sama-sama mengembangkan sesuatu yang besar dan berguna bagi semua pihak. Noprianto (
[email protected])
IKLAN
www.infolinux.web.id
INFOLINUX MEI 2004
53
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
StarOffice BASIC
Membangun Aplikasi dengan StarOffice BASIC Bagian 1 dari 2 Artikel StarOffice adalah paket Office yang luar biasa. Selain dapat digunakan untuk memenuhi kebutuhan Office sehari-hari, kita juga bisa mengembangkan aplikasi di atasnya.
S
aat ini, terdapat banyak aplikasi office yang siap digunakan di pasar. Microsoft Office masih menjadi office nomor satu di dunia ini. Sayangnya, aplikasi ini terlalu mahal dan tidak dapat dijalankan di Linux. Contoh aplikasi office yang jauh lebih murah dibandingkan dengan Microsoft Office, berjalan di berbagai platform dan dapat digunakan untuk memenuhi kebutuhan sehari-hari adalah StarOffice. Aplikasi yang dibangun oleh Sun Microsystems dan berbasiskan OpenOffice.org ini sangat layak digunakan. Sama seperti Microsoft Office, aplikasi ini juga datang dengan berbagai komponen seperti pengolah kata, spreadsheet, aplikasi presentasi, pembuat halaman web, dukungan database, dan lain sebagainya. Bahkan, sama seperti Microsoft Office, StarOffice juga dapat dikembangkan lebih lanjut untuk memenuhi kebutuhan personal kita. Dukungan bahasa pemrograman yang dapat digunakan untuk memperluas fungsi StarOffice juga lebih banyak, yaitu mencakup C++, Java dan StarOffice BASIC. Di artikel ini, kita akan membahas dasardasar StarOffice BASIC, kompatibilitas dengan VBA, berbagai runtime BASIC yang menarik untuk digunakan dan berbagai contoh. Di edisi depan, kita akan membahas tentang StarOffice API, mengakses dokumen serta pembuatan Form dan dialog.
Pengenalan StarOffice BASIC StarOffice BASIC adalah bahasa BASIC yang terintegrasi dengan paket StarOffice dan dapat digunakan untuk memperluas StarOffice itu sendiri. StarOffice dapat mengakses StarOffice API dan dengan
54
INFOLINUX MEI 2004
demikian, secara teori kita dapat melakukan apa saja dengan StarOffice dan dokumen StarOffice itu sendiri. StarOffice BASIC dapat dibagi lagi menjadi empat komponen besar: Yang pertama adalah bahasa BASIC itu sendiri. Sebagai contoh dari bagian ini adalah deklarasi variabel, perulangan, fungsi, dan lain sebagainya. Bagi Anda yang pernah menggunakan bahasa BASIC sebelumnya, bagian ini tentunya dapat Anda lewati dengan mudah. Selanjutnya, kita mengenal BASIC runtime. BASIC runtime adalah fungsifungsi yang siap digunakan, namun tidak memiliki hubungan langsung dengan StarOffice itu sendiri. Sebagai contoh adalah fungsi-fungsi untuk menangani bilangan dan string, fungsifungsi tanggal dan waktu, dan fungsifungsi file sistem. Berikutnya adalah StarOffice API. StarOffice API mengijinkan kita untuk mengakses internal StarOffice dan dokumennya. Dengan menguasai bagian yang satu ini, kita benar-benar dapat membangun berbagai aplikasi atau fungsi di atas StarOffice itu sendiri. Dokumentasinya sendiri cukup lengkap. Yang terakhir, kita mengenal Dialog Editor. Dengan menggunakan Dialog Editor, kita dapat membangun dialogdialog (form) yang kita inginkan, lengkap dengan berbagai kontrol dan event yang menyertainya. Kombinasi antara penggunaan StarOffice API dan pembangunan user interface dengan Dialog Editor dapat menghasilkan aplikasi yang luar biasa. Mudah, cepat, terintegrasi dengan StarOffice, dan berbagai keunggulan lainnya.
www.infolinux.web.id
Untuk menggunakan StarOffice BASIC, Anda tidak perlu melakukan instalasi komponen tambahan. Bahkan di dalam instalasi standarnya saja, Anda telah mendapatkan berbagai hal yang siap digunakan untuk membantu Anda bekerja dengan StarOffice BASIC itu sendiri. Dalam instalasi standar, Anda akan mendapatkan IDE yang menyediakan editor untuk membuat dan menguji macro. Kemudian, Anda juga akan mendapatkan interpreter untuk menjalankan macro-macro yang Anda bangun. Dan yang terakhir, instalasi standar telah datang bersama berbagai API yang siap digunakan. Kompatibilitas antara Macro StarOffice dan Microsoft Office hanya berada pada level bahasa BASIC dan Runtime bahasa itu sendiri. Selanjutnya macro hanya dapat dibaca, namun tidak dapat dikonversi. Artinya, apabila Anda memiliki macro dokumen Word yang hanya berisikan perulangan dan kondisi, maka macro dokumen tersebut kompatibel dengan StarOffice. Atau, jika dokumen Word Anda dilengkapi dengan macro game sederhana yang tidak berhubungan dengan dokumen Microsoft Office, maka macro tersebut juga kompatibel. Sayangnya, apabila dokumen Word Anda mengandung macro yang mengakses dokumen Microsoft Office seperti mengambil area yang terpilih, menghitung jumlah tabel dan lain sebagainya, maka macro tersebut tidak kompatibel dengan StarOffice. Sama halnya apabila Anda membuat form sendiri di dalam dokumen Microsoft Office. Semua macro tersebut tidak akan kompatibel dengan StarOffice. StarOffice API dan Dialog Editor tidaklah kompatibel
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Pengaturan macro.
dengan VBA. Usaha untuk membuat keduanya kompatibel dengan VBA hanya akan membuat banyak konsep di dalam StarOffice menjadi tidak mungkin. Sebagai contoh, StarOffice memiliki konsep di mana semua aplikasi memiliki satu orang tua, sehingga memungkinkan kita untuk membuka spreadsheet ketika kita sedang aktif di Writer. Konsep tersebut tidak dimiliki oleh Microsoft Office. Contoh lainnya adalah unifikasi cara StarOffice dalam mengenali dokumen yang sedang aktif. Di dalam Microsoft Office, cara untuk mendapatkan dokumen aktif Word dan Excel sangatlah berbeda. Sementara, di StarOffice, karena memiliki konsep satu orang tua, maka cara untuk mengenali dokumen aktif di setiap komponennya adalah sama. Berbagai konsep StarOffice membuat programer menjadi lebih mudah bekerja.
Dasar-dasar BASIC Berikut ini, kita akan membahas aturanaturan dasar StarOffice BASIC. Sebagian besar dari bahasa ini sangatlah kompatibel dengan Microsoft VBA ataupun Visual Basic. Bagi Anda yang pernah mempelajari bahasa tersebut, berpindah ke StarOffice BASIC tentunya dapat dengan mudah dilakukan. Namun, bagi yang terbiasa dengan kontrol seperti GoTo dan GoSub, kedua kontrol tersebut sudah tidak digunakan lagi oleh StarOffice BASIC. Penerapan kedua kontrol tersebut sudah tidak relevan di dalam konsep StarOffice BASIC. StarOffice
StarOffice BASIC
Pembuatan menu item untuk menjalankan macro.
BASIC adalah bahasa prosedural, namun, Anda dapat menggunakan konsep pemrograman berbasis objek, berdasarkan API StarOffice. Sama seperti VBA, StarOffice BASIC adalah interpreter. Dengan demikian, tidak ada executable yang akan dihasilkan. Kodekode kali pertama akan diperiksa untuk berbagai kesalahan, dan selanjutnya, kodekode tersebut akan dijalankan baris demi baris. Kita akan membahas beberapa aturan dasar, mulai dari cara penulisan source code, berbagai tipe data, berbagai operator, perulangan dan kondisi, serta fungsi dan prosedur.
Penulisan baris source code Apabila satu baris kode terlalu panjang, maka baris kode tersebut dipisahkan menjadi beberapa baris, dengan pemisah berupa karakter underscore (_). Sebagai contoh: LongExpression = (Expression1 * Expression2) + _ (Expression3 * Expression4) + _ (Expression5 * Expression6) + _ (Expression7 * Expression8) Sebaliknya, apabila beberapa baris ingin digabungkan, karakter titik dua (:) digunakan. Sebagai contoh: a=1 a=a+1 a=a+1 Dapat dituliskan menjadi: a = 1 : a = a + 1 :
a = a + 1
www.infolinux.web.id
Berbeda dengan Java ataupun C++, baris kode tidak perlu diakhiri dengan karakter titik koma (;).
Komentar Komentar dapat dituliskan dalam dua cara. Yang pertama, adalah diawali dengan sebuah kutip satu. Semua karakter setelah tanda kutip satu dianggap sebagai komentar. Sebagai contoh: Dim A ‘ This is a comment for variable A Cara kedua adalah dengan menggunakan kata kunci rem. Semua karakter setelah kata kunci ini dianggap sebagai komentar. Sebagai contoh: Rem This comment is introduced by the keyword Rem.
Tipe data StarOffice BASIC mengenal berbagai tipe data. Berikut ini adalah beberapa contoh tipe data beserta cara deklarasinya: variant. Tipe ini dapat digunakan untuk menampung berbagai nilai. Contoh deklarasi: Dim A integer dan keluarganya. Tipe ini digunakan untuk menampung bilangan bulat. Contoh deklarasi: Dim I as Integer Dim L as Long Floating point dan keluarganya. Tipe ini digunakan untuk menampung floating point. Contoh deklarasi:
INFOLINUX MEI 2004
55
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
StarOffice BASIC
Dim F as Float Dim F2 as Single Dim F3 as Double string. Tipe ini digunakan untuk menampung rangkaian karakter. Contoh deklarasi: Dim S as String Currency. Tipe ini digunakan untuk menampung mata uang. Contoh deklarasi: Dim C as Currency Boolean. Tipe digunakan untuk menampung nilai benar atau salah. Contoh deklarasi: Dim B as Boolean Date. Tipe ini digunakan untuk menampung nilai tanggal dan waktu. Contoh deklarasi: Dim D as Date
logikal dan perbandingan. Berikut ini adalah table masing-masing oprator.
Operator Matematik
Deskripsi
+ / \ * ^ MOD
Penjumlahan Pengurangan Pembagian Pembagian (pembulatan) Perkalian Pemangkatan Modulus
Operator Logikal
Deskripsi
AND OR XOR NOT EQV IMP
AND OR Exclusive OR Negasi Ekivalensi Implikasi (jika ekspresi pertama benar, maka ekspresi kedua juga harus benar).
Array StarOffice BASIC mendukung array satu dan multi dimensi. Berikut ini adalah contoh deklarasi array satu dimensi: Dim X(3) as Integer Perintah tersebut akan meminta alokasi array integer X sebanyak 4 elemen, mulai dari X(0) sampai X(3). Dim Y(5 to 10) as Integer Perintah tersebut akan meminta alokasi array integer Y sebanyak 6 elemen, mulai dari Y(5) sampai Y(10). Dim Z(-10 to -5) as Integer Perintah tersebut akan meminta alokasi array integer Z sebanyak 6 elemen, mulai dari Z(-10) sampai Z (-5). StarOffice BASIC mendukung array dengan indeks negatif.
Konstanta Konstanta dapat dituliskan seperti contoh berikut ini: Const A = 10 atau Const D as Double = 10
Operator StarOffice mengenal operator matematik,
56
INFOLINUX MEI 2004
Operator Deskripsi Perbandingan (berlaku untuk tanggal, bilangan, dan string)
= <> > < >= <=
Sama dengan Tidak sama dengan Lebih besar Lebih kecil Lebih besar sama dengan Lebih kecil sama dengan
Sebagai catatan, StarOffice BASIC tidak mendukung operator Like seperti halnya VBA.
Perulangan Perulangan dapat dilakukan dengan dua cara, yaitu For/Next dan Do/Loop. For Each/Next seperti yang ditemukan di VBA tidak didukung di StarOffice BASIC. Berikut ini adalah contoh pengunaan masingmasing cara perulangan: For/next Dim I For I = 1 To 10 ‘ ... Inner part of loop Next I Dim I For I = 10 To 1 Step -1
www.infolinux.web.id
‘ ... Inner part of loop Next I Do/Loop Do While A > 10 ‘ ... loop body Loop Do Until A > 10 ‘ ... loop body Loop Do ‘ ... loop body Loop While A > 10 Do ‘ ... loop body Loop Until A > 10
Seleksi Terdapat dua cara untuk melakukan seleksi, yaitu IF dan SELECT/CASE. Berikut ini adalah contoh-contohnya: IF If A > 3 Then B=2 End If If A > 3 Then B=2 Else B=0 End If If A = 0 Then B=0 ElseIf A < 3 Then B=1 Else B=2 End If SELECT/CASE Select Case DayOfWeek Case 1: NameOfWeekday = “Sunday” Case 2: NameOfWeekday = “Monday” Case 3: NameOfWeekday = “Tuesday” Case 4: NameOfWeekday = “Wednesday” Case 5:
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
StarOffice BASIC
NameOfWeekday = “Thursday” Case 6: NameOfWeekday = “Friday” Case 7: NameOfWeekday = “Saturday” End Select Select Case Var Case 1 To 5 ‘ ... Var is between the numbers 1 and 5 Case 6, 7, 8 ‘ ... Var is 6, 7 or 8 Case Var > 8 And Var < 11 ‘ ... Var is greater than 8 and less than 11 Case Else ‘ ... all other instances End Select
Prosedur Untuk mendefinisikan sebuah prosedur, kata kunci sub digunakan untuk membuka, dan kata kunci end sub digunakan utnuk menutup. Prosedur di StarOffice BASIC, sama seperti pada bahasa-bahasa lain, mengizinkan pengunaan parameter. Pemanggilan prosedur tanpa parameter dilakukan dengan langsung memanggil nama prosedurnya, sementara pemanggilan prosedur dengan parameter dilakukan dengan memanggil nama prosedurnya diikuti dengan parameter di dalam kurung. Berikut ini adalah beberapa contoh definisi prosedur: Sub Test ‘ ... here is the actual code of the procedure End Sub Sub ChangeValue(TheValue As Integer) TheValue = 20 End Sub Sebagai catatan, parameter secara default akan dilewatkan secara reference. Untuk melewatkan parameter secara value, gunakan kata kunci ByVal. Kata kunci ByRef yang ditemukan di VBA tidak didukung oleh StarOffice BASIC karena parameter—secara default—telah dilewatkan secara ByRef.
Fungsi Untuk mendefinisikan sebuah fungsi, kata
Tabel 1. Daftar fungsi StarOffice BASIC.
Fungsi konversi
Deskripsi
Cstr(val) Cint(val) Clng(val) Csng(val) Cdbl(val) Cbool(val) Cdate(val)
Mengubah Mengubah Mengubah Mengubah Mengubah Mengubah Mengubah
ke ke ke ke ke ke ke
tipe data string tipe data integer tipe data Long Integer tipe data Single tipe data Double tipe data Boolean tipe data Date
Fungsi pemeriksaan isi variable
Deskripsi
IsNumeric(val) IsDate(val) IsArray(val)
Memeriksa apakah val merupakan bilangan Memeriksa apakah val merupakan tanggal Memeriksa apakah val merupakan array
Fungsi penanganan string
Deskripsi
ASC(val) CHR(val) Left(MyString, Length)
Mendapatkan nilai ASCII dari val Mendapatkan karakter ASCII dari val Mengembalikan karakter-karakter paling kiri dari sebuah string sebanyak Length Mengembalikan karakter-karakter paling kanan dari sebuah string sebanyak Length Mengembalikan karakter-karakter dari MyString dimulai dari Start sebanyak Length. Mengembalikan panjang MyString
Right(MyString, Length) Mid(MyString, Start, Length)
Len(MyString)
Fungsi penanganan tanggal danwaktu
Deskripsi
DateSerial() TimeSerial() Day(MyDate) Month(MyDate) Year(MyDate) Weekday(MyDate) Hour(MyTime) Minute(MyTime) Second(MyTime) Date Time Now
Membuat Date Serial Membuat Time Serial Mengembalikan tanggal dari MyDate Mengembalikan bulan dari MyDate Mengembalikan tahun dari MyDate Mengembalikan weekday dari MyDate Mengembalikan jam dari MyTime Mengembalikan menit dari MyTime Mengembalikan detik dari MyTime Mengembalikan tanggal saat ini Mengembalikan waktu saat ini Mengembalikan kombinasi tanggal dan waktu saat ini
Penanganan file dan directory
Deskripsi
Dir(dir)
Mengembalikan file-file dalam suatu direktori Membuat direktori Menghapus direktori Meng-copy file Mengubah nama file Menghapus file Memeriksa keberadaan suatu file Mengembalikan tanggal dan waktu file Mengembalikan ukuran suatu file
MkDir(dir) RmDir(dir) FileCopy (source, destination) Name oldname as newname Kill(file) FileExists(file) FileDateTime(file) FileLen(file)
www.infolinux.web.id
INFOLINUX MEI 2004
57
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
StarOffice BASIC
kunci Function digunakan untuk membuka, dan kata kunci end function digunakan untuk menutup. Untuk mengembalikan nilai, lakukan assignment sebuah nilai untuk variabel sesuai nama fungsi. Untuk mendeklarasikan tipe sebuah fungsi, cara serupa deklarasi variabel dapat digunakan. Fungsi, seperti halnya prosedur, juga mendukung pemberian parameter. Berikut ini adalah beberapa contoh definisi fungsi: Function Test ‘ ... here is the actual code of the function Test = 123 End Function Function Test As Integer ‘ ... here is the actual code of the function Test = 123 End Function
Berbagai runtime StarOffice BASIC StarOffice BASIC datang dengan berbagai fungsi yang siap digunakan. Daftar fungsi StarOffice BASIC dapat dilihat pada tabel 1. Berikut ini beberapa runtime lain:
Message box
Konstanta button Deskripsi
58
msgbox “Mau melanjutkan?”, 4, “Pertanyaan” Perintah ini akan menampilkan sebuah message box bertuliskan Mau melanjutkan? Dan dua buah button masingmasing Yes dan No. Judul message box juga telah berubah menjadi Pertanyaan. Berikut ini, kita akan melihat bagaimana menentukan button default dari suatu message box. Button default adalah button yang otomatis akan ditekan apabila kita menekan tombol Enter ataupun spasi. Berikut ini adalah konstanta yang bisa Anda gunakan untuk membuat button tertentu menjadi default:
Konstanta Deskripsi button default 0
Message box dapat digunakan untuk menampilkan informasi, memberikan pesan kesalahan ataupun informasi, serta meminta konfirmasi. StarOffice BASIC menyediakan message box yang komplit, yang dapat digunakan sesuai kebutuhan. Untuk menampilkan message box, kita menggunakan fungsi msgbox(). Tampilan message box dapat diubah dengan memberikan parameter yang bersesuaian. Perubahan tampilan yang pertama adalah jenis button yang akan ditampilkan. StarOffice BASIC menyediakan beberapa konstanta yang dapat digunakan untuk menampilkan kombinasi tombol yang diinginkan. Berikut ini adalah daftar konstantanya:
0 1 2 3 4 5
Berikut ini adalah beberapa contoh penggunaan msgbox(): msgbox “halo apa kabar” Perintah ini akan menampilkan sebuah message box bertuliskan halo apa kabar dan sebuah button dengan caption OK. Secara default message box diberi judul soffice.
OK OK dan Cancel Cancel dan Retry Yes, No, dan Cancel Yes dan No Retry dan Cancel
INFOLINUX MEI 2004
256 512
Tombol tombol Tombol tombol Tombol tombol
pertama adalah default kedua adalah default ketiga adalah default
Berikut ini adalah contoh pengunaannya. Kita akan menggunakan message box sebelumnya, namun bedanya, tombol No akan menjadi tombol default: msgbox “Mau melanjutkan?”, 260, “Pertanyaan” Perintah tersebut akan menampilkan sebuah message box berjudul Pertanyaan yang bertuliskan pesan Mau melanjutkan? Message box tersebut menampilkan 2 button Yes dan No, dengan tombol No adalah tombol default. Angka 260 didapat dari 4 ditambah 256. Angka 4 untuk tombol Yes dan No, sementara angka 256 untuk menandakan tombol kedua adalah tombol default. Sampai di sini, kita telah mampu untuk menentukan button apa saja dan button
www.infolinux.web.id
mana saja yang menjadi default di message box kita. Sebenarnya, masih ada satu lagi yang sangat penting. Umumnya, di suatu message box, ada lambang-lambang tertentu yang menunjukkan maksud dari message box. Bisa informasi, peringatan ataupun pertanyaan. Berikut ini, kita akan melihat konstanta-konstanta yang bisa digunakan untuk memberikan lambanglambang tersebut:
Konstanta jenis message box
Deskripsi
16 32 48 64
Tanda Stop Tanda tanya Tanda seru Tip
Berikut ini, kita akan melengkapi message box sebelumnya dengan sebuah tanda tanya, untuk mengukuhkan maksud dari message box tersebut: msgbox “Mau melanjutkan?”, 292, “Pertanyaan” Angka 292 didapat dari 4 ditambah 256 ditambah 32. Masih ada yang kurang? Masih. Sampai saat ini, kita tidak bisa mengetahui tombol apa saja yang telah ditekan oleh user. Berikut ini, terdapat beberapa konstanta yang dapat digunakan untuk mengetahui tombol apa saja yang ditekan oleh user. Lazimnya, kita menggunakannya bersama dengan IF.
Konstanta tombol ditekan
Deskripsi
1 2 4 5 6 7
OK Cancel Retry Ignore Yes No
Berikut ini adalah contoh pengunaannya. Kita akan menggunakan message box terakhir. Apabila user menekan tombol Yes, maka kita akan menampilkan message box bertuliskan Selamat melanjutkan. Apabila user menekan tombol No, maka kita akan menampilkan message box bertuliskan Selamat tinggal. if msgbox (“Mau melanjutkan?”, 292,
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
StarOffice BASIC
“Pertanyaan”) = 6 then Msgbox “Selamat melanjutkan” else Msgbox “Selamat tinggal” end if
Anda. Buatlah modul baru (module1) di dalam pustaka Standard di dokumen Anda, dan editlah modul tersebut. Ketikkanlah baris kode berikut di dalam prosedur Main: Msgbox “Selamat menggunakan StarOffice”
Kini Anda akan memiliki menu group My Macros, yang mengandung sebuah menu item dengan nama Main. Apabila Main di klik, maka kode-kode di dalam prosedur Main akan dijalankan.
Input box
Selanjutnya, kembalilah ke dokumen. Kita akan mengasosiasikan shortcut tertentu untuk menjalankan prosedur Main di dalam Module1 kita. Sebagai contoh, kita akan menggunakan kombinasi tombol Shift-F4. Akseslah menu Tools|Configure. Sebuah dialog akan ditampilkan, aktiflah di tab Keyboard. Aktiflah di bagian function di bagian bawah dialog ini. Pada bagian Category, pilihlah dokumen Anda| Standard|Module1. Di bagian Function, akan tampil sebuah fungsi, yaitu Main. Pilihlah Main tersebut. Kemudian, aktiflah di bagian Shortcut Keys, dan pilihlah Shift-F4. Dalam kondisi Shift-F4 terpilih dan Main terpilih, tekanlah tombol Modify. Di bagian Keys seharusnya akan tertera tulisan Shift-F4. Klik tombol OK untuk menutup dialog. Kini, setiap kali Anda menekan kombinasi tombol Shift-F4, maka baris kode di dalam prosedur Main, yaitu pembuatan message box tersebut, akan dijalankan. Sampai di sini, kita telah belajar bagaimana cara menjalankan macro dengan shortcut keyboard. Berikut ini, kita akan membahas bagaimana cara membuat menu item baru, yang apabila diklik akan menjalankan macro yang kita buat. Bukalah kembali Tools|Configure. Aktiflah di tab Menu. Sebagai contoh, kita akan membuat menu group dengan nama My Macros di bawah menu Help. Carilah menu Help dan pilihlah. Kemudian, kliklah New Menu. Sebuah menu group dengan nama menu akan tampil, diikuti oleh separator. Aktiflah di menu dan tekanlah tombol F2 untuk mengubah menu menjadi My Macros. Aktiflah di My Macros tersebut. Carilah fungsi main di bagian Function seperti cara sebelumnya. Aktiflah di Main. Dalam kondisi My Macros dan Main terpilih, kliklah tombol New. Sebuah menu item dengan nama Main akan dibuat. Anda bisa mengubah namanya apabila diinginkan. Tutuplah dialog tersebut dengan menekan tombol OK. Lihatlah menu Help.
Contoh-contoh
Input box berguna untuk meminta input dari user. Bagi Anda yang pernah menggunakan Delphi, inputbox di StarOffice BASIC memiliki fungsi serupa. Berikut ini adalah contoh penggunaan input box: nama = InputBox(“Masukkan nama Anda”,”Meminta Informasi”,”infolinux”) if len(trim(nama)) > 0 then msgbox “Halo apa kabar, “ + nama end if Parameter pertama inputbox adalah isi dari input box. Parameter kedua adalah judul input box. Dan parameter ketiga adalah nilai default. Masih banyak fungsi siap pakai yang ditawarkan oleh StarOffice BASIC. Dokumentasi resmi StarOffice menjelaskan fungsi-fungsi tersebut.
Membuat macro sederhana Macro dapat disimpan di dalam dua tempat. Di dalam pengaturan StarOffice kita (umumnya tersimpan di ~/staroffice7) dan di dalam dokumen kita. Apabila macro disimpan di dalam home directory kita, maka macro tersebut akan selalu tersedia. Apabila macro di simpan di dalam dokumen, maka macro hanya tersedia bersama dokumen. Untuk membuat macro, akseslah menu Tools|Macros|Macro. Sebuah dialog akan tampil. Lihatlah ke bagian Macro from. Kita akan menemukan dua bagian besar, soffice dan nama dokumen kita. Masing-masing memiliki bagian Standard. Di dalam Standard inilah, umumnya kita menyimpan macro-macro kita. Pustaka Standard bisa mengandung banyak modul. Dan setiap modul, bisa mengandung banyak fungsi dan prosedur. Untuk mengatur modul-modul dan dialogdialog, Anda bisa menekan tombol Organize. Untuk mengedit modul yang telah ada, Anda bisa menekan tombol Edit. Artikel ini mengasumsikan Anda menyimpan macro di dalam dokumen
www.infolinux.web.id
Contoh pertama adalah menampilkan bilangan ganjil antara 0 sampai n. Batas n dimasukkan oleh user. Bilangan-bilangan ganjil tersebut nantinya akan ditampilkan dalam suatu message box. Sub Ganjil Dim Ganjil as String dim batas as integer dim i as integer batas = Cint(InputBox(“Batas bilangan ganjil”, “batas bilangan”,100) Ganjil = “” for i=1 to batas step 2 Ganjil = Ganjil + “ “ + CStr(i) + “ “ next i MsgBox Ganjil, 64, “Bilangan ganjil antara 0 sampai “ + batas end sub Contoh kedua adalah membuat ramalan jodoh sederhana, di mana nama cowok dan nama cewek akan diinput oleh user. Apabila panjang nama cowok sama dengan panjang nama cewek, maka hasil ramalan adalah cocok. Selebihnya, tidak cocok. Ramalan ini berguna sebagai latihan input box dan seleksi. Tentu saja hasilnya tidak dapat diandalkan. Sub Ramal dim cowok as string, cewek as string cowok = Inputbox(“Nama cowok”, “Masukkan nama”, “”) cewek = Inputbox(“Nama cewek”, “Masukkan nama”, “”) if len(cowok) = len(cewek) then MsgBox “Cocok”, 48, “Hasil” else MsgBox “Tidak cocok”, 16, “Hasil” end if end sub Di edisi depan, kita akan membahas bagaimana mengakses internal StarOffice dan dokumennya. Tak lupa, kita juga akan membahas pembuatan form dan dialog. Sampai jumpa di edisi berikutnya. Noprianto (
[email protected])
INFOLINUX MEI 2004
59
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Pemrograman Modul Python
Pemrograman Modul Python Dalam pemrograman, terkadang kita perlu menggunakan ulang kode-kode program yang pernah kita tulis sebelumnya. Hal tersebut tentu akan sangat merepotkan apabila setiap ingin menggunakan fungsi yang telah dibuat, Anda harus menulis ulang. Oleh karena itulah, diperlukan modul.
Apa itu modul? Di dalam Python, fungsi-fungsi built-in atau fungsi yang kita import disimpan dalam file eksternal yang disebut modul. Sebuah modul adalah sebuah file yang berisi kumpulan fungsi-fungsi dan instruksiinstruksi program Python. Modul ini biasa disimpan dalam extension .py. Selanjutnya, modul-modul ini dapat kita pakai berulangulang dalam pembuatan aplikasi dengan memanggil fungsi import nama_modul. Dengan demikian, Anda akan menghemat waktu dalam pembuatan aplikasi tanpa harus menulis ulang fungsi-fungsi yang telah Anda buat sebelumnya. Pada saat Anda memanggil interpreter Python, sebenarnya Python sendiri telah meng-import modul __builtins__. Anda dapat melihatnya dengan perintah dir(). Perintah dir(objek) akan menampilkan semua atribut dan fungsi yang terdapat dalam sebuah objek (dalam hal ini objek modul). >>> dir() [‘__builtins__’, ‘__doc__’, ‘__name__’] >>> dir(__builtins__) ... ... >>> import sys >>> dir(sys) ... ... >>> Modul-modul Python selain dapat ditulis dengan bahasa Python sendiri, juga dapat ditulis memakai bahasa C/C++ ataupun
60
INFOLINUX MEI 2004
Java untuk Jython. Pembuatan modul dengan bahasa C/C++ maupun Java tidak akan dibahas mengingat materi ini termasuk rumit. Kita hanya akan membahas pembuatan dan pendistribusian modul Python murni. Akan tetapi ada satu hal yang perlu Anda ingat sebelum membuat suatu modul, mungkin secara tidak sengaja, Anda sering membuat fungsi sendiri yang sebenarnya telah disediakan Python. Hal ini tentunya akan memakan waktu dan kemungkinan besar kode-kode yang kita buat tidak seoptimal yang dibuat oleh para pengembang Python. Oleh karenanya, pergunakanlah sumber daya yang telah disediakan oleh Python. Jika modul yang akan diinginkan tidak tersedia, barulah Anda membuat modulnya. Modul yang akan kita buat di bawah ini merupakan contoh sederhana saja untuk menunjukkan bagaimana membuat suatu modul, Anda bisa memodifikasinya lebih
B
agi Anda yang bekerja di lingkungan interpreter Python, semua fungsi yang ditulis akan hilang begitu saja sewaktu Anda keluar dari interpreter. Untuk menghindarinya, sebaiknya Anda menyimpan fungsi-fungsi yang telah Anda buat dalam sebuah file modul.
Menampilkan isi modul dengan dir().
www.infolinux.web.id
lanjut. Berikut kita akan membuat sebuah modul untuk menghitung luas bangun sebagai berikut: #Luas.py “Modul ‘tuk menghitung luas bangun” print ‘Loading module luas...’ #pendeklarasian variabel PHI=3.14 def L_lingkaran(r): return PHI*(r*r) def L_persegi(s): return s*s def L_persegipanjang(p,l): return (p*l)
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Pemrograman Modul Python
def L_trapesium(a,b,t): return (a+b)/2*t print ‘Module loaded.’ Python selalu mencari file modul yang diimport berdasarkan isi variabel shell PYTHONPATH dan di direktori aktif. Misalkan modul Anda disimpan di direktori aktif dan Anda memanggil interpreter Python, Anda tidak perlu melakukan apaapa. Akan tetapi jika modul Anda berada di direktori lain, Anda perlu mengubah isi variabel shell PYTHONPATH atau kita juga dapat memanggil modul yang kita buat dengan cara berikut. Misalkan modul yang penulis buat disimpan di /home/eric/modul maka hal yang pertama yang harus dilakukan adalah meng-import modul sys. Kemudian kita menambahkan path di mana modul yang kita buat berada dengan fungsi sys.path.append(‘/home/eric/modul’). Untuk lebih jelasnya, lihat contoh berikut: $ pwd /home/eric/modul $ ls luas.py $ python >>> import luas Loading module luas... Module loaded. >>> dir(luas) [‘L_lingkaran’, ‘L_persegi’, ‘L_persegipanjang’, ‘L_segitiga’, ‘L_trapesium’, ‘PHI’, ‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’] >>> $ cd .. $ pwd /home/eric $ python >>> import luas Traceback (most recent call last): File “<stdin>”, line 1, in ? ImportError: No module named luas >>> import sys >>> sys.path.append(‘/home/eric’) >>> import luas Loading module luas... Module loaded.
>>> print luas.L_persegi(4) 16 Untuk selanjutnya, dianggap modul yang sementara kita buat ini disimpan di direktori aktif (dalam hal ini /home/eric/modul). Sebelum membahas lebih lanjut tentang pembuatan modul ini, kita akan membahas beberapa cara pemanggilan modul. 1. Bentuk import nama_modul Melakukan import suatu modul sebagai satu kesatuan. Bentuk ini memungkinkan kita menggunakan semua atribut maupun fungsi yang dideklarasikan dalam nama_module.py, dengan syarat kita harus menyebutkan nama modulnya. Berikut contohnya: >>> import luas Loading module... Module loaded. >>> luas.L_persegi(5) 25 2. Bentuk from nama_modul import * Melakukan impor semua fungsi maupun atribut dari modul. Bentuk ini menjadikan fungsi dalam modul kita menjadi global, sehingga Anda dapat memanggil langsung fungsinya tanpa harus menyertakan nama modulnya. Untuk meng-import hanya satu atau beberapa fungsi, gantilah * dengan nama fungsi/ atribut yang hendak diimpor. Berikut cara penggunaannya:
def L_segitiga(a,t): return 0.5*(a*t)
$ python >>> from luas import L_segitiga Loading module... Module loaded. >>> L_segitiga(4,5) 10.0 >>>L_persegi(4) Traceback (most recent call last): File “<stdin>”, line 1, in ? NameError: name ‘L_persegi’ is not defined >>> $ python >>> from luas import * Loading module luas ... Module loaded. >>> L_persegi(4) 16 >>> L_lingkaran(10) 314.0 3. Bentuk reload(nama_modul) Kita dapat melihat bahwa penggunaan modul hanya akan dilakukan sekali dalam setiap proses. Beberapa modul mungkin membutuhkan pengubahan nilai atributnya, yang akan dipakai oleh proses selanjutnya. Sekali kita melakukan import, maka nilai yang didapat dari hasil import tersebutlah yang akan dipakai selanjutnya. Pengubahan pada atribut modul ataupun melakukan import ulang tidak akan memberikan efek yang kita inginkan. Untuk menyesuaikan perubahan atribut modul, kita bisa menggunakan bentuk reload(nama_module). Untuk jelasnya, lihat contoh berikut:
Contoh penggunaan modul.
www.infolinux.web.id
INFOLINUX MEI 2004
61
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Pemrograman Modul Python
$ cat > a.py versi=”versi pertama” def cetak(): print versi $ python >>> import a >>> a.cetak() versi pertama Biarkan interpreter Python tetap aktif, sementara Anda membuka sebuah terminal baru dan edit file a.py dengan editor vi. $ vi a.py $ cat a.py versi=”versi pertama, dengan revisi.”
Sesudah itu, Anda kembali ke interpreter python yang masih aktif. >>> a.cetak() versi pertama >>> import a >>> a.cetak() versi pertama >>> reload(a) >>> a.cetak() versi pertama, dengan revisi. Walaupun pengubahan atribut yang demikian tidak disarankan, mungkin ada kalanya Anda memerlukannya. Penggunaan bentuk ini berguna dalam sistem yang besar, di mana me-restart suatu aplikasi akan berakibat fatal. Misalnya suatu sistem yang terhubung ke server melalui jaringan. Bila kita menghentikan sistem tersebut, tentu akan berakibat fatal di mana semua koneksi dalam jaringan akan terputus. Jadi penggunaan reload(nama_modul) akan diperlukan dalam hal ini. 4. Bentuk import nama_module as alias Nama modul yang kita impor dapat digantikan nama alias dengan perintah di atas. >>> import luas as L Loading module luas... Module loaded. >>> L.L_persegi(6) 36
62
INFOLINUX MEI 2004
def cetak(): print versi Penggunaan modul dengan IDLE.
5. Bentuk import nama_paket.nama_modul atau from nama_paket.nama_modul import * Jumlah modul yang kita buat mungkin saja berjumlah banyak. Alangkah baiknya jika kita mengelompokkannya dalam sebuah direktori yang lazim disebut package. Secara umum, package dan modul di dalamnya diwakili dengan direktori(nama package) dan file-file di dalamnya (modul). Berikut contohnya jika Anda pernah memakai wxPython. >>> from wxPython.wx import * >>> from wxPython.grid import * >>> from distutils.core import setup Untuk penjelasan lebih tentang package ini , kita akan membahas lebih lanjut dalam pembuatan package di bawah. Setelah memahami cara pemanggilan modul di atas, kita kembali membahas tentang pembuatan modul. Modul yang telah Anda buat bisa kita distribusikan ke teman Anda ataupun lewat Internet. Akan tetapi, mungkin timbul berbagai kendala yang dihadapi seperti masalah perbedaan OS dan konfigurasi sistem ataupun path tiap user yang berbeda. Hal tersebut jelas menjadi kendala berarti yang harus diatasi. Tidak praktis dan merepotkan tepatnya jika setiap orang yang menggunakan modul Anda harus mengubah variabel shell
www.infolinux.web.id
PYTHONPATH ataupun memanggil sys.path.append() setiap ingin menggunakan modul yang Anda buat. Di sisi lain, kita tahu bahwa konfigurasi OS dan path tiap user berbeda. Hal tersebut tentu sangat merepotkan sehingga bisa-bisa aja user tidak ingin lagi menggunakan modul Anda. Mungkin Anda pernah memakai thirdparty modules dalam bentuk RPM ataupun source codes, di mana modul tersebut dapat diinstal di sistem Anda dalam sekejap dan dapat berjalan hampir di semua OS. Beberapa distribusi modul yang terkenal antara lain seperti NumPy, PyXML, PIL(Python Imaging Library), MySQLdb, dan lain-lain. Dalam hal ini, Python sendiri telah menyediakan suatu modul bernama distutils yang merupakan singkatan dari Distribution Utils yang berperan dalam membuat file distribusi. Pembuatan utilitas distutils ini sebenarnya diilhami oleh Perl’s MakeMaker System. Dengan menggunakan distutils, kini kendala di atas tidak berarti apapun lagi. Perbedaan OS bukanlah masalah lagi. Cara kerja distutils adalah dengan membuat sebuah file bernama setup.py yang akan dapat dijalankan secara multi-platform. Untuk menjalankannya, Anda hanya perlu mengetik perintah python setup.py install. Dengan demikian, modul-modul tersebut akan terinstal dalam direktori Python Anda dan modul tersebut siap pakai. Bagi Anda
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Pemrograman Modul Python
yang pernah menggunakan Perl, distutils ini sama halnya dengan Perl’s MakeMaker System (ExtUtils::MakeMaker adalah modul yang dipakai dalam Makefile.PL). File Makefile.PL pada Perl sama dengan file setup.py pada Python. Dengan adanya modul distutils pada Python, pendistribusian modul kini menjadi lebih praktis. Sebenarnya pendistribusian modul terdiri atas dua macam, yakni pendistribusian per modul dan pendistribusian per package. Kita akan membahas keduanya di bawah ini.
Pendistribusian per modul Berikut struktur direktori modul luas yang kita buat. <modul>/ setup.py luas.py #setup.py from distutils.core import setup setup(name=”luas”, version=”1.0”, description=”Modul penghitung luas”, author=”Eric”, author_email=”
[email protected]”, url=”http://www.geocities.com/eric/”, py_modules=[“luas”]) Selanjutnya adalah membuat file distribusinya sebagai berikut: 1. File distribusi bentuk *.tar.gz Untuk membuat file distribusi ini, kita cukup memanggil perintah Python setup.py sdist. Berikut contohnya: $ python setup.py sdist running sdist reading manifest file ‘MANIFEST’ creating luas-1.0 making hard links in luas-1.0... hard linking luas.py -> luas-1.0 hard linking setup.py -> luas-1.0 tar -cf dist/luas-1.0.tar luas-1.0 gzip -f9 dist/luas-1.0.tar removing ‘luas-1.0’ (and everything under it) $ ls dist/ luas.py* MANIFEST setup.py setup.py~ $ cd dist $ ls luas-1.0.tar.gz
Kini modul yang kita buat telah siap didistribusikan. Untuk menginstal modul yang kita buat, pertama kita mengekstrak file-nya, kemudian menjalankan perintah python setup.py install. Semuanya akan langsung terinstal dan dapat dijalankan dengan memanggil interpreter Python. Untuk menginstall modul ini di OS lain, caranya sama yakni dengan memanggil perintah python setup.py install. $ tar -xzvf luas-1.0.tar.gz $ cd luas-1.0/ $ ls luas.py* PKG-INFO setup.py $ su # python setup.py install running install running build running build_py running install_lib copying build/lib/luas.py -> /usr/lib/ python2.3/site-packages byte-compiling /usr/lib/python2.3/sitepackages/luas.py to luas.pyc # cd / # python >>> import luas Loading module... Module loaded. >>>
IKLAN
2. File distribusi bentuk RPM Untuk membuat file distribusi dalam bentuk RPM, perintah yang dibutuhkan adalah python setup.py bdist_rpm Berikut contohnya: $ python setup.py bdist_rpm ... ... $ cd dist $ ls luas-1.0-1.noarch.rpm luas-1.01.src.rpm $ su # rpm -ivh luas-1.0-1.noarch.rpm Preparing... ############## [100%] 1:luas ############## [100%]
Pendistribusian per package Modul yang Anda buat mungkin akan bertambah banyak. Sebaiknya modul-modul tersebut dikategorikan sendiri dalam bentuk package yang telah disinggung di atas.
www.infolinux.web.id
INFOLINUX MEI 2004
63
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Pemrograman Modul Python
Berikut langkah-langkah pembuatan package: Pertama-pertama kita harus membuat direktori-direktori yang akan dijadikan nama package. Setelah itu masuk ke direktori tersebut dan buatlah file __init__.py, di mana isinya dapat berupa keterangan ataupun variabel yang penting. Python memerlukan file __init__.py sebagai penanda sebuah package. Anda dapat aja membuat file __init__.py tanpa mempedulikan isinya. Buatlah modul-modul dalam direktori tersebut.
#volume.py “Modul ‘tuk menghitung volume bangun”
Struktur package yang akan kita buat akan tampak sebagai berikut: <modul>/ setup.py bangun/ __init__.py luas.py volume.py deret/ __init__.py bilangan.py
def V_kerucut(r,t): return (PHI*r*r*t)/3
Di direktori modul kita buat direktori yang akan kita jadikan nama package, yakni direktori bangun dan direktori deret. Terus kita buat file __init__.py dan modul-modul di dalam direktori tersebut. File setup.py harus dibuat di dalam direktori modul atau di direktori atasnya direktori yang kita buat tadi. Isi file setup.py tidak jauh berbeda dengan yang di atas, hanya perlu ditambahkan paramater packages pada fungsi setup(). #setup.py from distutils.core import setup setup(name=”package1”, version=”1.0”, author=”Eric”, author_email=”
[email protected]”, url=”http://www.geocities.com/eric/”, packages=[“bangun”,”deret”]) #__init__.py untuk paket bangun ‘Paket bangun’ print ‘Loading package bangun ...’ print ‘Package loaded.’ Untuk file luas.py, sama dengan yang di atas.
64
INFOLINUX MEI 2004
print ‘Loading module volume...’ #Pendeklarasian variabel PHI=3.14 def V_bola(r): return 4/3*PHI*(r*r*r) def V_kubus(r): return (r*r*r) def V_balok(p,l,t): return (p*l*t)
print ‘Module loaded.’ #__init__.py untuk paket deret ‘Paket deret’ print ‘Loading package deret ...’ print ‘Package loaded.’ #bilangan.py “Modul ‘tuk mencetak deret bilangan” print ‘Loading module bilangan’ def genap(a,b): if(a%2==1): a=a+1 for i in range(a,b+1,2): print i, def ganjil(a,b): if(a%2==0): a=a+1 for i in range(a,b+1,2): print i, print ‘Module loaded.’ Setelah semua file dibuat, tiba saatnya untuk membuat file distribusinya. Pembuatan file untuk distribusi caranya sama dengan yang di atas. $ python setup.py sdist $ cd dist $ tar -xvzf package1-1.0.tar.gz $ cd package1-1.0/ $ su # python setup.py install # python >>> import bangun
www.infolinux.web.id
Loading package bangun Package loaded. >>> dir(bangun) [‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’, ‘__path__’] >>> import bangun.luas Loading module luas... Module loaded. >>> dir(bangun.luas) [‘L_lingkaran’, ‘L_persegi’, ‘L_persegipanjang’, ‘L_segitiga’, ‘L_trapesium’, ‘PHI’, ‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’] >>> bangun.luas.L_lingkaran(10) 314.0 >>> import bangun.volume Loading module volume Module loaded. >>> dir(bangun.volume) [‘PHI’, ‘V_balok’, ‘V_bola’, ‘V_kerucut’, ‘V_kubus’, ‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’] >>> bangun.volume.V_kubus(3) 27 >>> bangun.volume.V_balok(2,3,7) 42 >>> import deret Loading package deret ... Package loaded. >>> from deret.bilangan import genap Loading module bilangan Module loaded. >>> genap(3,10) 4 6 8 10 >>>from deret.bilangan import * >>>ganjil(5,11) 5 7 9 11 Untuk file distribusi bentuk RPM, caranya sama dengan yang di atas. Kini untuk membuat modul dan mendistribusikannya tidak menjadi kendala lagi. Dengan distutils, semua terasa begitu sederhananya. Distutils juga bisa menangani pendistribusian modul dalam bahasa C/C++ maupun Java (untuk Jython). Akan tetapi, kita takkan membahas materi ini sekarang disebabkan materi ini termasuk rumit. Dengan adanya modul, tentunya Anda bisa menghemat waktu dalam pekerjaan Anda. Ditambah lagi dengan distutils, kini modul Anda siap disebarluaskan ke seluruh dunia. Makin praktis, bukan? Eric (
[email protected])
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Setup Xandros Versi 2 Deluxe
Setup Xandros Versi 2 Deluxe Posisi Linux sebagai solusi server sudah kita kenal ketangguhan kinerjanya. Selain itu, sangat efisien dan ekonomis, baik dari sisi penggunaan atau pemeliharannya. Namun untuk solusi desktop, meski beberapa distro ternama telah mencoba “bermain” dalam segmen ini, ternyata belum dikenal luas.
T
ersedianya beragam distro Linux dekstop merupakan satu fenomena menarik. Dari sisi ini, Anda dapat kaji lebih jauh eksistensi dan peranan Linux yang sangat fleksibel. Meski dominasi Microsoft masih cukup signifikan, namun hal tersebut cenderung memberikan ruang dinamis bagi perkembangan ragam Linux desktop. Xandros, Inc. (http:// www.xandros.com) sebagai perusahaan yang tergolong muda, tampil ke segmen Linux dekstop dengan antispasi dan strategi yang boleh dibilang cukup tepat. Xandros yang berpusat di Kanada ini berupaya gigih dalam memberi kontribusi positif bagi perkembangan segmen Linux desktop. Setidaknya demikian penilaian dari para analis independen, di mana mereka banyak memberikan pujian maupun saran konstruktif atas produk ini. Bila distro Linux lainnya lebih berfokus pada aplikasi server atau aplikasi spesifik berbasis Linux, maka Xandros memiliki fokus pada pengembangan distro untuk pemakaian di lingkungan desktop. Pengertian Linux desktop di sini, hendaknya tidak dipahami bahwa Xandros tidak dapat berfungsi sebagai server. Hanya saja fokus konfigurasi serta aplikasi standar maupun pelengkapnya telah dirancang khusus untuk keperluan sebuah PC desktop. Rilis Xandros versi 2 dibedakan pada Standard dan Deluxe. Harga eceran adalah US$39,95 untuk Standard dan US$99,00 untuk Deluxe (tidak termasuk ongkos kirim). Perbedaan harga Deluxe adalah karena turut disertakan bonus CodeWeavers Crossover Office dan Crossover Plugins. Kedua produk CodeWeavers, jika secara dijual terpisah, harga ecerannya adalah US$69,95 untuk CodeWeavers Crossover Office dan US$39,95 untuk Crossover Plugins (ini juga tidak termasuk ongkos kirim). Dengan kata lain, jika Anda memerlukan fungsi produk
CodeWeavers tersebut, ada penghematan yang cukup lumayan. Produk Xandros versi 2 Deluxe, juga dilengkapi dengan buku petunjuk (User Guide) 318 halaman, 10 halaman berwarna Getting Started Guide dan 2 keping CD. CD pertama berisi paket instalasi. Sedangkan keping CD kedua memuat berbagai jenis aplikasi seperti: NeTraverse Win4Lin (versi evaluasi), Citrix Linux ICA client, rdesktop, Ximian Evolution, Binary Editor, Emacs, GIMP, C/ C++ Development Tools, Common Development Tools, TCL/TK Development Tools, kamus spellchecker, Adobe Acrobat Reader, RealONE Player. Paket server seperti Proftpd, MySQL dan Apache juga telah disertakan. Distro Xandros merupakan turunan dari Debian yang memiliki reputasi sangat baik atas kestabilannya. Xandros versi 2 Deluxe berbasis dari Debian 4.0 (Sarge), kernel 2.4.22, KDE 3.1.4 ala Xandros dan XFree 4.3. Beberapa aplikasi standar penunjang produktivitas seperti OpenOffice.org Office Suite 1.1, Mozilla 1.4, Palm Pilot Utility, Organizer maupun aplikasi Fax Anda dapat temui dalam versi ini. Xandros yang memiliki tampilan GUI menawan ini merupakan pengembangan dari Corel LINUX OS. Para pengembangnya secara optimal memadukan keluwesan Linux dengan beberapa fitur lainnya, seperti kompatibilitas Microsoft Office, multi workspace, multi user, login access terbatas, instant messaging, partisi disk otomatis, dukungan multimedia, dukungan kamera digital, remote dekstop sharing, dukungan USB, pembakar CD, kompatibilitas paket instalasi Debian (DEB) dan RedHat Pakcage Manager (RPM). Tidak ketinggalan, kompatibilitas dengan berbasis Sun JDK, Borland Kylix, Borland JBuilder juga bisa ditemukan di sini.
www.infolinux.web.id
Secara umum, setelah menggunakan produk ini dalam beberapa minggu, dapat dikatakan bahwa karakteristik distro Xandros adalah relatif sangat mudah digunakan, memiliki kompatibilitas tinggi, dan berkualitas prima. Elegan mungkin lebih cocok sebagai deskripsi singkat, selain unjuk kinerjanya yang cukup tangguh.
Instalasi Kebutuhan sistem minimum: Processor Minimum: Intel Pentium atau Celeron AMD K6/II/III, Duron, Athlon, Athlon XP/ MP. Disarankan: Minimum Pentium II 450 MHz atau AMD K6/II 450 MHz. RAM Minimum: 64 MB. Disarankan: 128 MB. Harddisk Minimum: 1,5 GB. Disarankan: 3 GB. CD-ROM Minimum: Ya. Disarankan: Ya. Floppy drive Minimum: Jika sistem tidak dapat melakukan boot dari CD-ROM. Disarankan: Jika sistem tidak dapat melakukan boot dari CD-ROM. Dalam proses instalasi, Xandros memiliki filosofi dasar yang berbeda dengan kebanyakan distro Linux pada umumnya. Instalasi dan konfigurasi adalah dua hal terpisah, banyak konfigurasi yang secara otomatis dilakukan dalam proses instalasi tanpa perlu intervensi oleh pemakainya. Tampilan GUI yang ramah, juga akan Anda temui dalam proses instalasi ini. Hebatnya, Anda bahkan dapat melakukan proses instalasi secara sederhana ini hanya melalui empat langkah saja!
INFOLINUX MEI 2004
65
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Setup Xandros Versi 2 Deluxe
66
First Run Wizard.
INFOLINUX MEI 2004
Jangan lupa sediakan sebuah disket kosong sebagai rescue disk. Sedangkan jika Anda memilih Custom Install, maka Anda akan diberi pilihan untuk: 1. Menyetujui end user license agreement. 2. Memilih Custom Path. 3. Menentukan Minimal, Standard, Complete atau Custom Installation dan memilih aplikasi yang adan inginkan. 4. Jika komputer Anda telah tersedia sistem operasi lainnya, kemudian pilihan Xandros memberikan opsi, apakah akan menghapus atau berdampingan dengan sistem operasi yang telah eksis sebelumnya. 5. Menentukan password sistem administrator dan nama komputer. 6. Menentukan user ID tambahan dan password (jika komputer Anda akan digunakan oleh beberapa orang). 7. Menentukan konfigurasi jaringan. 8. Menentukan partisi harddisk, baik secara manual atau semi otomatis. 9. Menentukan apakah folder user akan bersifat privat. 10. Menentukan apakah strong password akan digunakan. Jangan lupa sediakan sebuah disket kosong sebagai rescue disk.
sistem operasi yang telah eksis sebelumnya. 4. Menentukan password sistem administrator dan nama komputer. 5. Menentukan user ID dan password.
Xandros Installation Wizard akan memberikan opsi berupa Express dan Custom Install. Tidak ada kesukaran yang berarti dalam proses intalasi, bahkan bagi para pengguna Linux pemula sekalipun. Xandros juga mampu melakukan instalasi yang non desktruktif pada alokasi tempat yang sebelumnya menggunakan NT File System (NTFS ). Mungkin, baru akan menjadi masalah serius, jika Anda tidak dapat membedakan antara Macintosh dan PC. Mengingat Xandros tidak dapat diinstal pada komputer berbasis Macintosh. Jika Anda belum pernah melakukan instalasi Linux sebelumnya, umumnya distro Linux akan menanyakan Anda sebuah daftar pertanyaan panjang mengenai sistem apa yang Anda gunakan. Katakanlah, misalnya jenis mouse, video card, keyboard, tipe kartu LAN, model monitor, dan sebagainya. Pada proses instalasi, Xandros mengandalkan pada kemampuan deteksi otomatis yang sangat memuaskan. Namun bila Anda masih belum puas dengan konfigurasi default, Anda dapat memodifikasinya melalui Control Centre segera setelah instalasi sistem berhasil dilaksanakan. Pilihan Express Install hanya perlu beberapa langkah, seperti: 1. Menyetujui end user license agreement. 2. Memilih Express Path. 3. Jika komputer Anda telah tersedia sistem operasi lainnya, kemudian pilihan Xandros memberikan opsi, apakah akan menghapus atau berdampingan dengan
Boot Manager.
Secara umum, jika dibandingkan disto Mandrake, RedHat dan SuSE dapat dikatakan bahwa Xandros tampil dengan prosedur instalasi yang jauh lebih sederhana, lebih mudah dan disertai tampilan GUI yang tidak kalah indah.
Xandros 2 Desktop Setelah melewati proses intalasi, sebuah layar grafis boot manager akan menampilkan setidaknya tiga opsi sebagai pilihan. Anda dapat memilih Xandros Desktop 2.0 atau sistem operasi lainnya, tersedia juga opsi jika memerlukan troubleshooting. Bagi yang telah terbiasa dengan distro Linux lainnya, maka Anda akan mendapatkan tampilan layar tidak dipenuhi oleh pesan status atau peringatan dari berbagai komponen sistem. Hanya ada tampilan singkat atas pesan status. Bila Anda ingin melihat apa yang terjadi saat proses dimulainya sistem bekerja, silakan pilih opsi Configure (Expert) pada menu boot.
Tampilan standar desktop Xandros.
www.infolinux.web.id
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL
Kemudian Anda akan disuguhkan “First Run Wizard”, di mana beberapa pilihan dasar setting tanggal, jam, region, dan tampilan resolusi layar maupun setting printer yang dapat Anda pilih atau ubah sesuai dengan keinginan. Dalam sebuah laporan, instalasi printer HewlettPakcard LaserJet (dalam jaringan terkoneksi melalui TCP/IP JetDirect) juga dapat terdeteksi dan terpasang dengan mudah. Di mana fungsi ini kadang cukup merepotkan pada distro lainnya. Begitu pula standar USB Pen Drive, kamera digital Olympus C-720UZ dengan mudah dapat dikenali dan dapat di-mount dengan instan. Dalam percobaan saya, sebuah printer HP Deskjet 3420 sebagai local printer terhubung melalui USB port, dikenali dengan mudah. Tampilan desktop Xandros dirancang seefisien mungkin dengan tidak melupakan unsur “kebiasaan” dari para pengguna nonLinux. Panel dekstop dirancang hampir serupa Microsoft Windows Toolbar. Di mana faktor ini merupakan antisipasi dan strategi jitu yang ditujukan bagi segmen pengguna non-Linux menuju Linux. Sangat mungkin, perancangan ini bertujuan agar proses transisi dari salah satu sistem operasi ke sistem operasi berbasis Linux diharapkan dapat dilalui dengan efektif. Kategorisasi maupun pemilahan kelompok aplikasi telah disusun prima. Di mana dalam instalasi distro Debian secara konvensional, kadang kala kita perlu menyusun ulang agar selaras dengan selera kita.
Jelajah Internet Mozilla 1.4 beserta plug-ins seperti Macromedia Flash dan Sun Java Support yang sudah dapat dijalankan dengan baik, di mana fitur sederhana ini tampaknya banyak diabaikan oleh pengembang distro Linux lainnya. Xandros versi 2 Deluxe yang telah memuat CodeWeavers Crossoffice Plugin (versi 2.1), sehingga sangat memudahkan jika Anda akan melakukan instalasi berbagai plugins Windows seperti Apple Quicktime, IPIX Viewer, Macromedia Shockwave dan Authorware, Avanstar Quickview Plus atau jenis plugins lainnya. Anda dengan mudah juga dapat menggunakan fasilitas chatting dan instant messaging, News Ticker,
Setup Xandros Versi 2 Deluxe
Xandros networks.
memonitor cuaca, ataupun mendengar radio streaming.
Aplikasi dasar OpenOffice.1 yang disertakan sudah memadai untuk aplikasi standar perkantoran. Namun jika diperlukan, Anda dapat melakukan instalasi KOffice, StarOffice atau Gnumeric baik melalui aptget secara konvensional atau melalui fasilitas Xandros Networks. Saya lakukan uji kemudahan CodeWeavers Crossover Office ketika melakukan instalasi aplikasi Formulir Digital Registrasi Domain IDNIC. Aplikasi tersebut Saya rancang menggunakan basis Microsoft Windows beberapa waktu lampau. Proses instalasi aplikasi ini terasa sangat mudah, hingga kemudian dapat dijalankan dengan muaskan tanpa hambatan apapun. Percobaan lainnya, ialah melakukan instalasi Internet Explorer 6.0 Service Pack (SP) 1. Sebuah produk freeware Microsoft untuk kategori WinXP, di mana proses instalasi via Internet. Pada akhirnya, juga dapat dijalankan dengan mudah. CodeWeavers (http://www. codeweavers.com) adalah pengembangan produk komersial dari Wine Project. Crossover Office merupakan produk cukup populer dan telah terintegrasi baik dalam
www.infolinux.web.id
rilis Xandros ini. Bila dalam penggunaan sehari-hari membutuhkan Microsoft Office, Anda bisa menggunakannya dengan leluasa. Tentunya dengan asumsi dasar, bahwa Microsoft Office yang Anda gunakan adalah bersumber dari produk berlisensi resmi, bukan bajakan. Dalam konteks ini, tampaknya OpenOffice 1.1 telah memberikan fasilitas sangat memadai sebagai pilihan alternatif.
Xandros Networks Sebagai tradisi kemudahan update distro Debian, fitur Xandros Networks merupakan tampilan GUI yang prima dari APT (Advanced Package Tool) konvensional. Kinerjanya pun tampak lebih baik jika dibanding Synaptic. Tersedia banyak pilihan seperti system update, system patches, maupun beberapa paket aplikasi lainnya. Selain itu, Anda dapat temui berita terakhir yang terjadi di sekitar Xandros atau aplikasi komersial yang dikembangkan oleh pihak ketiga. Xandros Networks diakses melalui internet, dimana Xandros telah menyediakan pilihan aplikasi yang terbagi dalam beberapa kategori, sebagai berikut: Shop: untuk pilihan aplikasi komersial. New Application: untuk aplikasi berbasis open source dan driver yang telah terseleksi dan berfungsi baik.
INFOLINUX MEI 2004
67
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Setup Xandros Versi 2 Deluxe
Sedangkan bila Anda memerlukan instalasi dari CD, pilihlah Set Application Sources lalu arahkan ke CD. Opsi ini juga memberikan pilihan apakah Anda akan gunakan situs Xandros distribution sites atau Debian unsupported distribution sites. Anda bisa menambahkan sendiri path sesuai pilihan Anda, misalnya deb http:// semut.cbn.net.id/debian-security/ atau deb http://kambing.vlsm.org/debian/ dengan kriteria kategori yang dapat Anda tentukan sendiri. Ada pengamat yang memuji bahwa fitur ini sangat mudah digunakan dan tidak bersifat komersil. Tidak layaknya fasilitas serupa dalam LindowsOS Click-N-Run yang terbilang sangat komersial, Xandros Networks disediakan gratis bagi para penggunanya.
Manajemen berkas
Dalam setting sebagai sebuah Workgroup begitu mudah dilakukan seperti sharing, network sharing, remote sharing pada mesin yang berbasis Windows atau lainnya. File dan Folder sharing juga dapat dilakukan secara mudah. Jelajah antara beberapa Folder dalam jaringan menjadi lebih nyaman melalui “Windows Network” dalam
68
Xandros file manager.
INFOLINUX MEI 2004
direktori “My Linux”. Satu fitur istimewa lain, adalah tersedianya Xandros File Manager. Di mana berbagai jenis media device telah didukung dan di mount secara otomatis, termasuk harddrive, CD-ROM, disket, ZIP drive, DVD dan USB Flash Memory, atau yang sejenisnya. Semua pengelolaan berkas dalam media tersebut dapat dilakukan melalui drag and drop dari berbagai sumber. Tidak peduli apakah itu sebuah dari sebuah sumber lokal, partisi DOS/Windows, Windows Network Share atau UNIX Network File System (NFS), ataupun melalui sumber FTP.
Beberapa catatan Sebagai pengguna Xandros dari versi 1.x, saya lihat cukup banyak inovasi maupun fasilitas baru yang disediakan dalam produk ini. Baik melalui optimalisasi kemampuan dasar KDE 3.1.4 maupun pada peningkatan fungsionalitas Xandros Networks yang nampak lebih mapan. Bagi para penggemar Gnome, sayang sekali tampilan desktop tidak memiliki opsi pilihan Gnome. Xandros hanya mengacu pada satu jenis dekstop, yaitu KDE. Namun jika berminat mengutak-atik, Anda juga bisa menampilkan Gnome sebagai desktop, meski beberapa fungsi dasar File Manager atau yang lainnya, yang mungkin tidak berfungsi optimal. Untuk memperindah tampilan, Anda bisa gunakan SuperKaramba. Gunakan
Application Updates: untuk melakukan update sistem. Installed Application: untuk melakukan cek pada semua aplikasi yang telah terpasang dalam sistem Anda.
Fitur xandros update.
www.infolinux.web.id
SuperKaramba untuk Debian dengan versi: superkaramba_0.32b-1_i386.deb yang dapat di-download melalui: http:// ftp.debian.org/debian/pool/main/s/ superkaramba/superkaramba_0.32b1_i386.deb. Perlu diingat, sebelumnya Anda instal terlebih dahulu minimal Phyton2.2 untuk Debian Sarge. Kemudian lakukan instalasi bisa melalui Xandros Networks (pilih install Debian Package) atau melalui modus Administrator pada console dengan perintah: dpkg –i superkaramba_0.32b-1_i386.deb. Lalu berbagai jenis Karamba yang tersedia di: http://www.kde-look.org dapat Anda jalankan dengan mulus. Carilah Karamba yang mendukung versi SuperKaramba 0.32b. Perlu diperhatikan, karena SuperKaramba yang digunakan adalah versi beta, beberapa script kadang tidak berjalan baik. Jika diperlukan, sesuaikanlah konfigurasi Theme maupun Script dari Karamba yang Anda gunakan. Dalam kesempatan lain, implementasi LAMP (Linux, Apache, MySQL, dan PHP) juga telah dicoba dan dapat dijalankan tanpa kesulitan berarti. Cuma, Anda perlu perhatikan untuk sedini mungkin memasang atau melakukan konfigurasi Firewall. Terutama jika Anda berniat membuka port sensitif yang ditujukan bagi akses publik. Meski beragam kemudahan dan keandalan berbagai fasilitas tersebut, saya
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Setup Xandros Versi 2 Deluxe
dukungan garansi apapun. Jika masih ada masalah lain, kirimkanlah e-mail pertanyaan Anda pada tim support Xandros. Mereka siap membantu Anda. Bagi para pengguna terdaftar, layanan dukungan pelanggan ini dapat Anda gunakan untuk periode 60 hari. Sayangnya, layanan ini hanya memprioritaskan masalah diseputar kesulitan proses instalasi saja.
Konklusi
Mozilla bersanding dengan Internet Explorer.
catat beberapa kekurangan distro ini. Saya temukan bug pada konfigurasi Exim. Di mana dalam kondisi default Exim ini, masih mengacu ke localhost Xandros di Kanada. Kendati bagi pengguna umum, yang biasanya menggunakan smtp dan pop3 mengacu pada setting ISP terhubung, dampaknya memang tidak ada. Sedangkan bila Anda gunakan Sendmail, nampaknya bug ini cukup mengganggu. Tapi, Anda dapat dengan mudah merekonfigurasi Exim melalui perintah eximconfig dari console melalui modus Administrator. Atas temuan bug ini, Saya telah berikan notifikasi pada tim pengembang Xandros yang kemudian direspon dengan baik. Dari para pengguna lainnya, didapati laporan dimana fitur Windows PDC Support yang berfungsi baik pada versi 1.x tetapi pada rilis ini tidak tersedia lagi. Namun, fitur tersebut akan disediakan pada versi Business Edition yang rencananya akan dirilis sekitar akhir Maret mendatang. Forum pengguna (http://forums. xandros.com) juga dapat Anda akses jika Anda menemukan kesulitan dalam konfigurasi baik dalam hardware atau software. Dalam komunitas pengguna, dapat ditemui semangat gotong royong dan saling membantu. Jika dalam Xandros versi 1.x Anda dapat temukan fitur Xandros
Update, maka dalam produk ini fitur tersebut sudah ditiadakan dan diintegrasikan dalam Xandros Networks. Uniknya, fitur Xandros Update dapat Anda peroleh dalam salah satu link yang termuat dalam salah satu forum. Meski berupa sebuah versi tidak resmi (unofficial). Sehingga risiko penggunaan atau cara update melalui fitur ini, praktis tanpa
Bagi Anda yang masih mencari jenis distro Linux untuk kali pertama, sangat disarankan untuk mencoba Xandros. Sedangkan jika Anda menggunakan distro lainnya, tetapi masih merasa agak kesulitan, tidak ada salahnya untuk mencoba. Distro ini sangat memahami kebutuhan umum penggunanya. Sebuah Linux desktop yang relatif sangat mudah dalam proses instalasi, konfigurasi dan perawatannya. Selain itu, tersedia dukungan ribuan aplikasi berkualitas tinggi baik berbasis Debian atau bentuk paket RPM via Internet, juga dapat Anda gunakan sebagai penunjang produktivitas sehari-hari. Bagi kalangan pemakai Linux yang sudah “kawakan”, ada baiknya bila produk ini ditinjau dari faktor inovatif dan kejelian para pengembang distro. Kendati Anda mungkin merasa agak risih menemui istilah
IKLAN
www.infolinux.web.id
INFOLINUX MEI 2004
69
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Xandros ala Mac OS.
Administrator dibandingkan root, modem berada dalam COM1 dibandingkan ttyS0, istilah drive C:, bahkan mounting yang bersifat instan. Sangat mungkin, Anda sudah terbiasa secara manual melakukan konfigurasi CUPS dalam Samba (untuk melakukan instalasi printer dalam jaringan). Di mana fitur semacam ini sudah disediakan Xandros dalam bentuk otomatis. Cobalah simak sebuah referensi cukup menarik dalam sebuah artikel “Can a Geek Love Xandros?” (http://www.distrowatch.com/ dwres.php?resource=review-xandros).
70
Xandros dengan SuperKaramba 1.
INFOLINUX MEI 2004
Dalam produk ini dapat ditemui perpaduan harmonis antara keluwesan dan ketangguhan kinerja Linux. Di mana antara kedua faktor tersebut diramu sedemikian menarik bagi segmen kalangan awam Linux. Tampaknya, variabel psikologis serta kemudahan melalui klik mouse menjadi priotitas penting. Xandros sangat memahami hal tersebut. Hingga rasanya tidak terlampau berlebihan bila MadPenguin memberi gelar “King of Linux Desktop” dalam sebuah artikelnya yang dimuat dalam http://www. madpenguin.org/Article811.html. Sedang-
Setup Xandros Versi 2 Deluxe
kan kabar terakhir dari eksebisi LinuxWorld, (New York, 20-23 Januari 2004), Xandros berhasil meraih Product Excellence Award untuk kategori “Best Front Office Solution” (http://www. linuxworldexpo.com/ linuxworldny/V40/index.cvn?ID=10240). Meski dominasi pangsa pasar segmen ini tidak otomatis akan diraih, namun cepat atau lambat, secara alamiah Xandros sangat potensial mencapai posisi strategis. Baik dari kalangan pengguna non-Linux, maupun dari kalangan yang beralih dari distro Linux desktop lainnya. Jika ditinjau dari pola bisnis sebuah produk yang berbasis open source, tidak selalu unsur “gratis murni” memberi kesinambungan pada para pemainnya. Tinjau saja pengalaman Red Hat yang telah “go” komersial. Menurut hemat saya, tidak ada salahnya jika produk Xandros mendapat dukungan finansial dari khalayak pemakainya. Walaupun sarana ftp gratis juga tersedia, namun bukan berarti Anda dapat melakukan download ISO image secara cuma-cuma. Memang Anda akan merogoh kocek, namun hal ini menjadi sepadan jika Anda ingin mendapat produk Linux desktop berkualitas tinggi. Sedangkan jika digunakan sebagai solusi Linux desktop untuk segmen korporasi atau perkantoran, harga yang ditawarkan masih terbilang sangat kompetitif. Lebih jauh, ini berarti bahwa besaran aset untuk software dapat direduksi secara signifikan. Anda berminat mencoba? Indra K. Hartono (
[email protected])
Xandros dengan SuperKaramba 2.
www.infolinux.web.id
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Berkomunikasi dengan Aman
Berkomunikasi dengan Aman Bekerja di jaringan besar berarti terjadi pengiriman data. Berhati-hatilah dan gunakan protokol yang aman atau data pribadi Anda menjadi konsumsi publik.
Opsi capture Ethereal.
yang saat ini terbukti aman. Apabila Anda selalu menggunakan telnet, segeralah ganti. Apabila masih menggunakan ftp, gunakan protokol lain. Kami akan tunjukkan kepada Anda betapa beberapa protokol sangat rentan untuk disadap. Dan proses penyadapan pun dapat dilakukan oleh siapa saja, karena program untuk itu telah tersedia. Bukan cracker saja yang bisa menyadap informasi yang Anda kirimkan lewat telnet. Asalkan bisa mengoperasikan tool untuk menyadap, siapa saja bisa melakukan penyadapan tersebut. Ini bukan basa basi.
Sadap! Sadap! Sadap! Berikut ini kita akan melihat betapa penyadapan informasi sangatlah mudah dilakukan. Untuk mengujinya, jalankanlah telnet server di komputer Anda. Telnet adalah protokol yang sangat rentan, karena semua informasi ditransmisikan dalam bentuk clear text. Untuk melakukan penyadapan, kita akan menggunakan program Ethereal, yang dapat di-download di http://www. ethereal.com. Namun, cobalah cek terlebih
P
erkembangan suatu teknologi untuk kebaikan selalu disertai dengan perkembangan teknologi tersebut untuk kejahatan. Hal tersebut lumrah adanya. Menolak perkembangan jelas tidak mungkin. Mengharapkan teknologi yang semata-mata untuk kebaikan saja juga jelas tidak mungkin. Komputer terhubung ke Internet dan data kemudian dicuri. Komputer dapat digunakan untuk memodifikasi gambar dan gambar baik-baik kemudian dimodifikasi untuk tujuan pencemaran nama baik. Komputer semakin mudah digunakan dan virus pun dikembangkan oleh berbagai kalangan. Bagi Anda yang setiap harinya bekerja mengirimkan data lewat jaringan, data Anda memiliki risiko untuk disadap. Anda membuka webmail dan kemudian mengisikan password. Anda login ke server untuk melakukan administrasi sederhana dan berbagai contoh lainnya. Cara terbaik untuk kompromi adalah dengan mencegah. Tentunya bukan mencegah perkembangan suatu teknologi atau mencegah penggunaan. Namun, usahakan untuk menggunakan sesuatu
dahulu paket-paket distro Anda, karena Ethereal termasuk program yang sangat umum dipaketkan bersama suatu distro. Ethereal berbasis GUI dan sangat mudah digunakan. Fiturnya pun sangat lengkap. Jalankan telnet server. Telnet server umumnya dijalankan oleh inetd atau xinetd. Sebagai root, jalankan pula ethereal, dan segeralah akses menu Capture|Start. Sebuah dialog akan ditampilkan dan pastikan pada field interface, Anda memilih any. Klik OK untuk segera memulai penyadapan. Sebuah dialog statistik akan ditampilkan. Bukalah emulasi terminal dan lakukan koneksi ke telnet server. Anda akan menjumpai tampilan khas prompt login, dan lakukanlah otentikasi. Setelah itu, berikanlah beberapa perintah seperti: ls whoami logout
Sesi telnet sedang di-capture Ethereal.
www.infolinux.web.id
INFOLINUX MEI 2004
71
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Hasil capture ditampilkan terstruktur.
Amatilah layar statistik penyadapan. Pastilah di bagian TCP akan menunjukkan angka lebih besar dari nol, yang menunjukkan paket yang tertangkap. Tutup emulasi terminal Anda dan telnet server boleh dinonaktifkan. Klik pula tombol Stop di dialog statistik Ethereal karena penyadapan telah selesai. Di layar utama Ethereal Anda, akan tampil berbagai teks yang menunjukkan hasil penyadapan. Seperti yang kita janjikan bahwa penyadapan dapat dilakukan dengan mudah, lupakanlah teks-teks dan angkaangka tersebut. Klik kananlah pada salah satu entri, dan pilihlah Follow TCP Stream. Sebuah window baru akan terbuka dan seperti melihat sejarah, Anda akan melihat keseluruhan sesi telnet Anda sebelumnya, termasuk password-nya. Jelas. Siap dicuri. Siap disalah gunakan. Hal ini menunjukkan bahwa menggunakan sesuatu yang tidak aman sangatlah berisiko. Jangan pernah lagi menggunakan telnet. Kalau Anda terpaksa harus melakukan remote shell connection, gunakanlah ssh. Lakukan penyadapan yang sama pada ssh dan Anda hanya akan melihat karakter-karakter tak berarti ketika Anda melakukan Follow TCP Stream. Berikut ini, kita akan membahas beberapa tool pengganti untuk tool-tool yang tidak aman. Tool-tool yang akan kita bahas tersebut tentu saja tidak menjanjikan keamanan 100%, namun, untuk saat ini, lebih aman untuk digunakan.
72
INFOLINUX MEI 2004
Berkomunikasi dengan Aman
Hasil capture sesi telnet.
Telnet dan ssh Pada bagian sebelumnya, kita telah belajar menyadap suatu sesi telnet. Dengan Ethereal, penyadapan tersebut dapat dilakukan dengan sangat mudah. Telnet sendiri telah digunakan sejak awalawal jaman unix. Fleksibilitasnya diakui memang pantas diberikan acungan jempol. Namun, Anda melihat sendiri betapa mudahnya melakukan penyadapan terhadap sesi telnet. Apabila masih menggunakan telnet, segeralah hentikan dan berpindahlah ke ssh. Apabila administrator jaringan Anda masih menerapkan telnet server, segeralah meminta untuk mengaktifkan ssh daemon. Fungsionalitasnya sama dan ssh jelas jauh lebih aman. Berikut ini adalah beberapa hal seputar penggunaan ssh: Pertama. Jangan kaget apabila pertama kali ssh menanyakan soal fingerprint RSA dan lain sebagainya. Host key verification seperti ini hanya dilakukan sekali dan selanjutnya, benar-benar akan menyerupai sesi telnet. Tersedia beberapa front end untuk ssh. Apabila Anda mengunakan KDE, cobalah KSSH. Tidak terlalu bagus memang, namun paling tidak, Anda tidak perlu mengingat berbagai opsi ssh karena sebagian opsi ssh dapat dipilih di KSSH. Ada dua protokol SSH. Apabila memiliki waktu luang, bacalah manual ssh, di mana Anda akan mendapatkan
www.infolinux.web.id
penjelasan panjang lebar mengenai kedua protokol ini. SSH dapat menampilkan berbagai hal dalam bentuk yang rinci. Berikan saja opsi -v, dan Anda akan menjumpai tampilan verbose. Semakin banyak opsi -v yang diberikan, semakin rinci informasi yang Anda peroleh. Kompresi didukung untuk memperkecil ukuran data yang ditransfer. Dengan demikian, apabila Anda melakukan remote shell ke Internet dan koneksinya cukup lambat, diharapkan dengan mengaktifkan kompresi, transfer data dapat dilakukan lebih cepat.
Secure copy: scp Anda ingin meng-copy suatu file dari komputer lain di dalam jaringan Anda. Kebetulan, komputer tidak mengaktifkan file sharing apapun juga. FTP server juga tidak diaktifkan. Yang diaktifkan hanyalah ssh daemon. Dalam skenario tersebut, Anda dapat menggunakan scp untuk meng-copy suatu file dari komputer lain selama Anda memiliki hak atau account dan mengetahui lokasi filenya. Apabila Anda memiliki account, maka lokasi file tentu saja dapat dilihat ketika Anda membuka sesi ssh ke komputer tersebut. Dengan menggunakan scp, Anda dapat melakukan peng-copy-an baik satu file ataupun direktori secara rekursif. Dengan demikian, Anda tidak perlu repot-repot mengaktifkan file sharing ataupun
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL
Berkomunikasi dengan Aman
Sesi ssh sedang di-capture Ethereal.
membuka sesi FTP. Selain itu, dengan scp, Anda dapat meng-copy file dari suatu komputer ataupun meng-copy-kan file ke suatu komputer. Sebagian besar opsi scp mirip dengan opsi program cp. Bedanya, dengan scp, peng-copy-an dapat dilakukan secara aman melewati jaringan. Sebagai bonus, scp pun menampilkan progress bar yang menarik sehingga lebih informatif karena pengopian melewati Internet, misalnya, dapat memakan waktu yang cukup lama. Berikut ini adalah beberapa contoh penggunaan scp: $ scp a
[email protected]:~/a_copy Perintah ini akan meng-copy-kan file a ke home directory nop di komputer 192.168.1.2. File a tersebut akan dikopikan menjadi file a_copy. $ scp a*
[email protected]:/tmp Perintah ini akan meng-copy-kan file-file yang namanya diawali dengan karakter a ke direktori /tmp di komputer 192.168.1.2. $ scp -r lagu
[email protected]:/tmp Perintah ini akan mengopikan directory lagu secara rekursif ke direktori /tmp di komputer 192.168.1.2. $ scp
[email protected]:/boot/vmlinuz2.4.21-192-default ~/ Perintah ini akan meng-copy file /boot/ vmlinuz-2.4.21-192-default dari
Hasil capture sesi ssh.
komputer 192.168.1.2 ke home directory user aktif. Berikut ini adalah beberapa hal seputar penggunaan scp: Tidak seperti saudara sepupunya, rcp, yang sama-sama melakukan kopi mengcopy file, scp akan meminta password apabila diperlukan. Scp menggunakan ssh untuk transfer data dan menggunakan kemampuan yang sama untuk menjamin keamanan data. Pada saat kita sedang berada di komputer A, kita dapat meng-copy-kan file dari komputer B ke komputer C. Jadi, pengopian di antara dua remote host dimungkinkan. Luar biasa sekali. Apa yang Anda perlukan hanyalah informasi login dan file. Scp ternyata cukup memahami keterbatasan bandwidth. Oleh karena itu, Anda juga dapat membatasi bandwidth yang digunakan oleh scp dalam satuan Kbit/s. Sama seperti ssh, scp juga mendukung kompresi. Dalam peng-copy-an file, kompresi dapat meningkatkan kecepatan transfer, walaupun Anda akan mengorbankan waktu untuk melakukan kompresi/dekompresi.
FTP dan SFTP Pada bagian sebelumnya, kita telah melihat penggunaan ssh dan scp, masing-masing untuk remote shell dan peng-copy-an file
www.infolinux.web.id
antar-host. Dengan kedua tools tersebut, Anda dapat melakukan aksi administratif sekaligus melakukan transfer file. Bagi Anda yang sering bekerja dalam dunia kirim mengirim file dan terbiasa dengan FTP, Anda masih dapat menggunakan tool serupa, namun dalam cara yang lebih aman. Gunakan SFTP! Perintahperintahnya mirip! Berikut ini adalah beberapa hal seputar penggunaan sftp: Sama seperti scp, sftp juga dapat memanfaatkan kemampuan ssh seperti enkripsi dan kompresi. Sftp memungkinkan proses batching, sehingga perintah dapat diberikan dalam suatu file batch, alih-alih mengetikkan berbagai perintah secara manual. Fitur ini sangat berguna. Untuk kebutuhan remote shell connection dan file transfer, mulai saat ini, bagi Anda yang masih menggunakan telnet dan ftp, segeralah lupakan kedua tool tersebut. Mulailah gunakan ssh, scp, ataupun sftp. Pengaturan server untuk semua tool tersebut pun sangatlah sederhana. Anda hanya membutuhkan ssh daemon. Keamanan data adalah isu yang sangat penting. Jangan pernah sesekali meremehkan hal sekecil apapun dalam keamanan data. Karena, banyak pihak di luar sana yang siap untuk menyalahgunakan data yang didapatnya. Sesekali bertindak paraniod, bolehlah. Noprianto (
[email protected])
INFOLINUX MEI 2004
73
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Menjadikan XMMS Lebih Menarik
Menjadikan XMMS Lebih Menarik XMMS adalah audio player terkemuka di Linux. Dengan penambahan berbagai plug-in dan visualisasi, XMMS akan tampil lebih menarik dan menghibur.
P
engguna Linux pasti mengenal XMMS. X Multi Media System adalah audio player terkemuka yang hadir sejak awal-awal penggunaan GUI telah meluas dan dukungan suara di Linux mulai meningkat. Dengan interface dan shortcut yang sangat mirip dengan WinAMP, pengguna Windows yang berpindah ke Linux seperti mendapatkan program yang sama. Untunglah ada XMMS. Di dunia Windows, WinAMP telah berkembang sampai versi 5. Tak terhitung lagi perkembangannya sejak WinAMP awal-awal yang dirilis lebih dari lima tahun lalu. Perkembangannya meliputi berbagai aspek. Mulai dari fungsionalitas sampai interface. XMMS berkembang lebih lambat, terutama dari sisi user interface. Sejak beberapa tahun yang lalu, user interfacenya sama saja. Apabila menggunakan skin default, tampilannya tetap hitam sejak awal-awalnya. Versinya pun tidak berkembang dengan pesat. Walau untungnya, perkembangan berbagai pustaka lain telah memperkaya fungsionalitas dari XMMS itu sendiri. Dari sisi tampilan dan keindahan XMMS, sebenarnya kita bisa melakukan satu atau dua hal, sehingga XMMS tampil lebih menarik. Walau mungkin apa yang akan kita lakukan sudah tertinggal beberapa tahun dibandingkan WinAMP, yang penting XMMS kita menjadi lebih menarik.
Dapatkan berbagai skin XMMS dari http://www.xmms.org, dan copy-kanlah skin-skin tersebut ke dalam direktori ~/ .xmms/Skins. Selanjutnya, Anda bisa memilih skin dengan menekan kombinasi tombol Alt-S pada main window XMMS. Skin yang baru Anda copy-kan akan terdaftar dan bisa segera digunakan.
Berbagai visualisasi Penggunaan berbagai visualisasi akan menjadikan XMMS sendiri memiliki nilai tambah. Sama seperti tersedianya visualisasi pada perangkat multimedia yang akan menambah harga jual perangkat tersebut. Umumnya, setiap plug-in visualisasi mengambil informasi dari file audio itu sendiri. Dengan demikian, Anda benarbenar memiliki visualisasi dari audio yang didengar. Dalam bentuk yang sederhana,
Sama seperti WinAMP, XMMS pun dapat menggunakan berbagai skin agar tampilan menjadi menarik. XMMS juga dapat menggunakan skin WinAMP beberapa saat yang lalu, walaupun tampilan XMMS Anda akan benar-benar terlihat seperti WinAMP.
74
INFOLINUX MEI 2004
Penggunaan skin
Boneka-boneka tux sedang berdisko di layar.
www.infolinux.web.id
visualisasi akan menampilkan spektrum audio Anda. Dalam bentuk yang lebih kreatif, Anda bahkan akan menjumpai ikanikan yang berenang ataupun boneka tux yang sedang berdisko mengikuti irama lagu. Berikutnya, kita akan membahas beberapa visualisasi yang bisa memperkaya tampilan XMMS Anda. Berbagai visualisasi menarik bisa di-download di http:// www.xmms.org. Tempatkan plug-in tersebut ke dalam direktori /usr/lib/xmms/ Visualization atau direktori sesuai konfigurasi distro Anda. Selanjutnya, visualisasi bisa dipilih dengan membuka menu Preferences|Visualization Plugins. Tekanlah kombinasi tombol CTRL-P untuk membuka menu Preferences. Aktifkan visualisasi dengan mengaktifkan pilihan enable plug-in untuk setiap plug-in yang tersedia. Setiap visualisasi umumnya dapat
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Menjadikan XMMS Lebih Menarik
Blur Scope MAX 1.3 (
[email protected]) Visualisasi yang satu ini adalah hasil karya keroyokan berbagai pihak. Termasuk pembuat XMMS itu sendiri. Berbeda dengan Blur scope yang sederhana, versi MAX-nya menawarkan berbagai kelebihan. Salah satunya adalah kemampuan untuk dikonfigurasi lebih lanjut. Anda dapat mengatur efek foreground dan background. Tersedia banyak efek yang bisa dipilih. Anda juga bisa mengatur bagaimana blur akan dilakukan. Konfigurasi warna dan preset juga bisa dilakukan. Cobalah untuk mengatur efek lighning dan efek background Ring Wave. Atur juga efek blur Horizontal Smoke. Apabila Anda adalah penggemar visualisasi dengan banyak efek warna dan efek blur, maka visualisasi yang satu ini pantas dicoba. Fine Spectrum Analyzer 1.0.0 Berbeda dengan Spectrum Analyzer lain, yang satu ini menawarkan analyzer yang sangat halus. Sayangnya, konfigurasi lebih lanjut tidak diinginkan. Sesekali, cobalah memadamkan lampu kamar Anda sambil mengaktifkan visualisasi ini. Visualisasi kecil ini pantas dinikmati. Gdancer 0.4.5 (http://www.figz.com) Yang satu ini benar-benar menarik, kreatif, lucu, dan luar biasa. Sambil mengikuti irama lagu yang dimainkan, boneka tux akan berdisko. Bonekanya pun bukan boneka biasa, melainkan boneka tux berkatamata secara default. Visualisasi ini bahkan dapat dikonfigurasi lebih lanjut. Salah satunya adalah pengubahan theme. Luar biasa, bukan? Untuk melakukan konfigurasi pada visualisasi ini, klik kananlah pada boneka tux yang sedang bergoyang tersebut. Anda bisa melakukan kloning pada boneka-boneka tersebut sehingga terdapat banyak tux berdisko di layar. Cukup pilih
dikonfigurasi lebih lanjut. Walau, visualisasi yang datang bersama XMMS biasanya sangat sederhana dan tidak dapat dikonfigurasi lagi. Berikut ini adalah beberapa visualisasi yang menarik:
Ikan-ikan berenang mengikuti irama lagu.
New Dancer dari menu popup yang muncul. Pilihlah menu Dancer Config dari menu popup untuk mengatur Gdancer lebih lanjut. Di sebuah dialog yang tampil, Anda bisa memilih theme, mengatur frame yang ingin dilewati, atau mengatur agar boneka tux tersebut berdisko sambil berpindah tempat. Apabila Anda meminta Gdancer untuk berdisko sambil berpindah tempat, maka tux akan berjalan-jalan di layar Anda. Bayangkanlah apabila Anda memiliki 10 tux yang berdisko dan berjalan-jalan di layar monitor Anda. K-Jofol Interface 0.95 (http://www. csse.monash.edu.au/~timf/) Masih ingat akan K-Jofol, salah satu audio player populer? Visualisasi ini akan menampilkan interface K-Jofol untuk Anda. Dengan mengaktifkannya, Anda seolaholah memiliki dua interface utama untuk XMMS. Atau, ketika window utama XMMS di-minimize, Anda seolah-olah menggunakan K-Jofol untuk mendengarkan lagu. Bahkan, visualisasi ini juga dapat menghentikan XMMS apabila window utama K-Jofol ditutup. Satu lagi, cobalah mengaktifkan playlist dari K-Jofol. Plug-in ini bahkan datang dengan playlist sendiri!
www.infolinux.web.id
OpenGL Fishmatic Plugin 0.0.1 Programer yang menciptakan plug-in ini pasti benar-benar menyukai ikan. Bayangkan saja, dengan mengaktifkan visualisasi ini, Anda akan mendapatkan ikan-ikan yang bergerak mengikuti irama lagu. Hebatnya, pergerakan ikan dibuat tetap alami. Anda juga bisa mengatur sendiri kecepatan dan jumlah ikannya. Lagi stress? Cobalah membuka visualisasi ini secara full screen. Dan nikmatilah ikan-ikan yang bergerak tersebut.
What a GOOM 1.9.2 Visualisasi GOOM bisa Anda nikmati di Windows Media Player, Totem Media Player, Kaffeine Media Player, ataupun berbagai player populer lain. Dan, dengan plug-in ini, Anda bisa menikmatinya pula di XMMS. Sayangnya, plug-in ini tidak dapat dikonfigurasi lebih lanjut. Berbagai visualisasi seru lainnya bisa Anda dapatkan di http://www.xmms.org. Apabila Anda bisa melakukan pemrograman dengan bahasa C, maka Anda pun dapat membuat plug-in sendiri. Paling tidak, Anda bisa memodifikasi berbagai plug-in yang ada terlebih dahulu, sebelum mencoba menciptakan plug-in sendiri. Noprianto (
[email protected])
INFOLINUX MEI 2004
75
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Tuning Kernel
Meningkatkan Kinerja Multimedia dengan Tuning Kernel Sering pada kombinasi multitasking tertentu, kernel Linux seperti “kedodoran” padahal dari spesifikasi hardware masih mencukupi. Hal ini terutama terjadi pada pengguna rumahan yang mania multimedia. Lalu, bagaimana cara tuning-nya?
A
nda punya komputer bagus, Athlon 3 GHz, memori 512 MB, video card GeForceFX 5900, harddisk SCSI. Welah-welah, mestinya Anda bisa jadi lupa waktu (asal jangan lupa kerja...hehehe. “Bejibun” game, “selongsong” MP3, VCD Matrix Reloaded, cobacoba konversi MP3 ke OGG, render gambar, dan seabrek rencana lain udah membayang. Lalu ada boot Linux Anda di komputer baru. Tapi setelah beberapa job tadi dijalankan (mungkin lebih tepat disebut “bom nuklir”) anda berpikir “baru 5 task multimedia, kok udah keok, gimana nih? Saya kan maunya sambil render gambar, dengar MP3, plus compile program”. Tipe orang begini (dan saya juga) mungkin tipe benchmarker sejati. Inginnya benchmark dan benchmark dan tidak pernah puas dengan tweaking. Kira-kira dengan asal usul yang sama plus karena sedang mulai coba-coba memprogram di kernel, saya mulai eksplorasi mengenai cara meningkatkan kinerja kernel. Dasar pemikirannya begini. Kernel adalah jantung dari sistem operasi. Bisa juga dikatakan sebagai pengatur utama interaksi pengguna dan hardware komputer. Kernel yang diprogram secara baik akan menghasilkan kinerja sistem yang baik pula. Jadi biarpun hardware bagusnya selangit, kalau kernelnya sedang-sedang, sistem tidak akan bekerja optimal. Berbicara mengenai optimasi sistem, sebenarnya banyak aspek yang terlibat. Kalau kita persempit pada aspek multimedia, saya simpulkan faktor-faktor yang terlibat adalah waktu respons interupt, kecepatan kerja scheduler, dan kecepatan akses I/O. Faktor-faktor ini akan dijelaskan satu per satu. Hardware komputer bekerja dengan cara menerima instruksi berupa interrupt. Bagi
76
INFOLINUX MEI 2004
yang pernah sedikit belajar assembly, Anda akan tahu bahwa interrupt ini ada banyak jumlahnya. Salah satunya, interupt 10h (hexa) berkaitan dengan manipulasi display ke monitor. Pada sistem operasi multitasking seperti Linux, pengiriman interrupt akan masuk ke dalam antrian (queue). Ini disebabkan mungkin saja dalam waktu yang sama, ada permintaan interrupt lain (misal event keyboard pada interrupt 16h). Antrian interrupt ini akan dikerjakan satu per satu berdasar urutan masuk (First In First Out) kecuali pada program real time. Jika program yang meminta akses interrupt tidak segera dilayani, maka program tersebut akan dihentikan sementara (sleep) dan dibangunkan lagi (wake up) jika interrupt telah dilayani. Dari paragraf di atas, terlihat ada kaitan antara waktu pelayanan interrupt dengan mekanisme scheduler. Secara umum, scheduler bisa dianalogikan seperti polisi lalu lintas yang bertugas pada perempatan jalan. Polisi (scheduler) akan menyetop mobil dari 3 ruas (ruas A,B,C) dan memperbolehkan mobil-mobil dari 1 ruas sisa (ruas D) berjalan. Setelah (anggap saja) 1 menit, giliran ruas A diperbolehkan berjalan, dan ruas B C D berhenti. Demikian seterusnya. Kecerdikan dan kecekatan polisi (scheduler) akan menentukan apakah antrian mobil bisa segera dikosongkan dengan segera sambil melihat antrian baru dari segala ruas. Bisa saja ruas C terus menerus mendapat antrian, tapi ruas A B dan D cukup sepi. Faktor lain yang bermain adalah kecepatan akses I/O. I/O disini bisa bermacam-macam, bisa ke arah disk (floppy, harddisk, USB storage, CD-ROM drive, dan sebagainya), video card, memory, bahkan network card. Pada saat CPU meminta akses ke (misalkan) harddisk, maka perintah
www.infolinux.web.id
CPU akan melewati “bus” (bukan bus yang mampir di halte) dengan kecepatan tertentu menuju harddisk melewati controller EIDE (jika harddisk Anda IDE). Tapi jangan lupa, perintah akses I/O ini (lagi-lagi) melewati lapisan sistem operasi. Jadi selain kecepatan bus, seberapa cepat sistem operasi melayani akses I/O ini juga sangat berpengaruh pada kecepatan akses. Terlihat dari penjelasan singkat di atas, keterlambatan (delay atau latency) adalah sesuatu yang tidak terelakkan. Benar, sekali lagi, tidak terelakkan. Bahkan pada sistem yang mengklaim dirinya real time sekalipun. Yang bisa kita lakukan adalah mereduksi latency ini di bawah suatu batasan sehingga kita mengganggap sistem sudah responsif. Soal kata “responsif” ini, sangat relatif. Sebuah server dengan CPU 200 MHz mungkin cukup untuk mail server dengan 100 account, tapi tidak cukup untuk mengolah video sekaligus streaming ke Internet. Jadi tergantung kita sendiri, bagaimana yang kita anggap cukup. Sekarang pertanyaannya, “OK, sekarang saya mulai paham letak keterlambatan OS saya, lalu bagaimana cara tuning-nya?” Karena konteks pembicaraan kita pada OS, maka ada beberapa patch yang bisa membantu yaitu: 1. Low latency patch buatan Andrew Morton. 2. Preemptible kernel patch buatan Robert M Love. 3. Variable HZ patch buatan Robert M Love. Untuk tiga patch di atas, Anda membutuhkan source kernel “vanilla”. Maksud “vanilla” di sini bukan seperti rasa es krim, tapi istilah untuk menyatakan source yang asli belum ditambah patch apapun. Penulis sarankan Anda memakai kernel 2.4.22 dari
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Gambar 1. Code maturity level options.
www.kernel.org. Patch nomor satu bisa anda ambil dari http://www.zip.com.au/ ~akpm/linux/schedlat.html. Patch nomor dua dan tiga bisa Anda download dari http:// www.tech9.net/rml/linux/. Untuk kernel 2.4.22 ambil patch sebagai berikut: http://www.zip.com.au/~akpm/linux/ 2.4.22-low-latency.patch.gz http://www.kernel.org/pub/linux/kernel/ people/rml/preempt-kernel/v2.4/ preempt-kernel-rml-2.4.22-1.patch http://www.kernel.org/pub/linux/kernel/ people/rml/variable-HZ/v2.4/ Sebenarnya bagaimana cara kerja tiga patch tadi? Berikut ringkasannya: Low latency patch memodifikasi kode kode kernel yang memakan waktu lama agar dalam bagian tersebut kernel OS selama beberapa kali membreak task dan memanggil scheduler sehingga kernel mempunyai waktu menjalankan tugas yang lain. Untuk ini, Andrew Morton (dan Ingo Molnar, maintainer sebelumnya) melengkapi diri dengan sistem pelacak untuk mengukur waktu di mana saja tepatnya kernel paling sibuk. Lalu secara bertahap ditambahkan kode-kode untuk rescheduling sambil tetap mempertahankan konsistensi task. Preemption patch melakukan modifikasi pada kernel sehinga scheduler bekerja secara lebih “rajin dan efisien”. Ini dilakukan dengan cara menambah kesempatan melakukan rescheduling jika task yang sekarang dikerjakan kernel bukan merupakan interupt handler dan tidak task tidak memegang spin lock (suatu jenis variabel sistem untuk mengamankan akses ke suatu area memory terhadap kemungkinan korupsi data).
Tuning Kernel
Gambar 2. Processor type - Low latency.
Logikanya, saat kernel mengerjakan interrupt, tidak boleh terjadi perpindahan ke task lain. Kalau ini terjadi, sistem akan bingung karena di satu sisi interrupt sedang dikerjakan, tapi karena tidak sampai selesai, bisa jadi ada akses ke interrupt yang sama sehingga saling menumpuk. Demikian juga saat ada program yang akan mencoba mengambil atau melepas lock. Bayangkan seperti ini. Ada dua orang A dan B. Mereka akan mengambil sebuah gembok (lock). Pada saat tangan A terjulur mengambil gembok, tiba tiba ada keajaiban alam dan waktu untuk A berhenti (sudah nonton Matrix kan? Bayangkan saja seperti Bullet Time, beres). Si B dibangunkan dan juga bergerak mengambil gembok. Sampai dengan B sukses memegang gembok, si A masih “mati suri”, lalu giliran si B di-”stop”. Si A dibangunkan dan melanjutkan “gerakan” mengambil gembok. Tapi apa daya, gembok sudah di tangan B. Dalam kamus komputer, keadaan seperti ini dinamakan race condition alias berebut. Mengambil dan melepas lock adalah mekanisme atomic (artinya tidak boleh dihentikan oleh proses lain). Jadi disimpulkan oleh Robert Love, setelah kembali dari interrupt handler atau lock dalam keadaan bebas, re-scheduling dijadwalkan kembali. Dengan demikian diharapkan respons sistem lebih tinggi. Variable HZ adalah patch untuk memodifikasi frekuensi dari timer pada kernel. Gambarannya begini, scheduler sistem melakukan proses preemption (perpindahan satu task ke task lain) saat ada interrupt trap dari timer hardware (ya, motherboard Anda mempunyai timer). Pada saat inisialiasi kernel, “ditanam” suatu
www.infolinux.web.id
handler untuk timer yang dipanggil pada interval tertentu. Misalkan timer diset tiap 0.01 mikro second, makan tiap 0.01 mikro second scheduler akan berpindah ke task lain (kecuali ada keadaan seperti nomer 2). Mulai paham idenya? Jadi akalnya, kita perkecil interval ini. Kernel Linux biasanya mengambil suatu nilai yang “aman” untuk semua hardware, jadi bisa saja nilai ini terlalu rendah untuk PC Anda. Patch variable HZ mengijinkan Anda mengubah nilai ini saat konfigurasi kernel ke sembarang nilai. OK, sudah mulai penasaran? Segera download kernel plus patch dan ikuti langkah-langkah berikut: 1. ”Su” menjadi root 2. Unpack source kernel yang baru, misal di /usr/src # cp linux-2.4.22.tar.bz2 /usr/src/ # cd /usr/src # bunzip2 linux-2.4.22.tar.bz2 && tar xvf linux-2.4.22.tar Akan tercipta direktori linux-2.4.22 di bawah /usr/src 3. Kumpulkan patch di /usr/src/ # cp 2.4.22-low-latency.patch.gz / usr/src # cp vhz-j64-2.4.22.patch /usr/src # cd /usr/src && gunzip 2.4.22-lowlatency.patch.gz 4. Apply patch ke kernel # cd /usr/src/linux-2.4.22 # patch -p1 < ../preempt-kernel-rml2.4.22-1.patch # patch -p1 < ../2.4.22-lowlatency.patch # patch -p1 < ../vhz-j64-2.4.22.patch
INFOLINUX MEI 2004
77
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Gambar 3. Processor type - Preemptible Kernel.
Pastikan tidak ada kata-kata rejected saat patching. Jika ada, ada kemungkinan source kernel atau patch yang anda download tidak sesuai. Cek ulang versi patch dan kernel yang sesuai. 5. Mulai persiapan kompilasi kernel # make mrproper # make menuconfig (Penulis biasa memakai menu curses) atau “make config” (text based) atau make xconfig (X based). 6. Pada bagian “code maturity level options” aktifkan “Prompt for development and/or incomplete code/drivers” (lihat Gambar-1). 7. Pada bagian “processor type and features” aktifkan “Low Latency scheduling”, “Control low latency with sysctl”, “Preemptible kernel”. Sesuaikan juga entry “Processor family” dengan jenis CPU Anda. (Gambar 2 dan 3). 8. Pada bagian “general setup”, isikan angka 500 pada “Timer frequncy”. Cukup sorot bagian “Timer Frequency”, tekan Enter, ketik angka yang Anda inginkan, lalu tekan Enter lagi. Bisa juga dicoba nilai 1000 (Gambar 4). 9. Pada bagian “Character Devices” aktifkan pilihan ‘Enhanced Real Time Clock Support”. Anda bisa pilih sebagai internal kernel <*> atau module <M>. Saya sarankan sebagai internal kernel. (Gambar 5). 10. Pada bagian “Processor type and features”, non aktifkan pilihan “Symmetric Multi processing support”. (Gambar 6) Untuk diketahui, jika Anda aktifkan dukungan SMP pada kernel namun
78
INFOLINUX MEI 2004
Tuning Kernel
Gambar 4. General setup - Timer frequency.
Anda hanya memiliki satu processor, maka kernel akan tidak efektif karena pada sistem SMP ada tambahan mekanisme locking untuk mencegah race condition antar-processor dalam mengakses suatu resource (misal memory) maupun sinkronisasi lock. Opsi-opsi lain bisa Anda sesuaikan sendiri misal untuk dukungan APM. Penulis sendiri memilih mengaktifkan opsi “Magic SysRq key” pada bagian “Kernel Hacking” (gambar 7). Dengan opsi ini, akan di-enable suatu “tombol backdoor” yang memungkinkan kita melakukan aksi tertentu pada OS. Ini sangat berguna dalam keadaan darurat. Sebagai contoh untuk mendump isi register lakukan sebagai berikut (setelah kernel baru Anda build). # echo “1” > /proc/sys/kernel/sysrq Tekan Alt-Print Screen-P (huruf P) (note: coba “O” untuk shutdown). Setelah selesai pilih “Exit”. Pada pertanyaan “Do you wish to save your new kernel configuration” jawab “Yes”. Pada direktori kernel source Anda dibuat file .config, simpan baik-baik file ini. Sekarang saatnya kompilasi kernel. cd /usr/src/linux-2.4.22 make dep && make bzImage make modules Sebelum Anda menginstal module, ada baiknya Anda back-up dulu modulmodul kernel Anda sekarang, apalagi jika versi kernel yang digunakan sama-sama 2.4.22, caranya: 1. Pindah ke direktori /lib/modules/ 2. tar -f ./2.4.18-backup.tar —preserve
www.infolinux.web.id
-c —exclude build ./2.4.18-3/ && gzip ./2.4.18-backup.tar (Ganti argument pada opsi -f dengan sembarang nama file yang diinginkan. Argumen terakhir pada tar adalah direktori yang akan di-backup, jadi arahkan ke direktori
. Opsi —exclude untuk mengabaikan direktori build karena ini adalah symbolic link). cd /usr/src/linux-2.4.22 && make modules_install cp arch/i386/boot/bzImage /boot/linux2.4.22-varhz cp System.map /boot/System.map2.4.22-varhz Edit loader Anda, di sini dicontohkan untuk LILO tambahkan entry sebagai berikut: image=/boot/linux-2.4.22-varhz label=linux-varhz read-only root=/dev/hda2 (Ganti /dev/hda2 dengan partisi tempat root file system Anda). Ketikkan “lilo” untuk me-load entry baru. Sampai disini kompilasi sudah sukses. Tapi tunggu, sebelum kompilasi ada baiknya anda lakukan benchmark sehingga Anda yakin ada peningkatan perfomance system. Perlu diingat, Anda akan mengukur sesuatu yang satuannya menggunakan milisecond bahkan microsecond, jadi sangat sulit diukur secara kasat mata. Tambahkan juga baris-baris berikut di file /etc/rc.d/rc.local.
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Gambar 5. Character devices.
[[Listing 1]] # ——begin——# untuk secara otomatis mendeteksi patch low latency dan mengaktifkan fungsi low latency [ -x /proc/sys/kernel/lowlatency ] && echo 1 > /proc/sys/kernel/lowlatency /sbin/hdparm -W0 -m8 -d1 -u1 -c1 -X66 / dev/hda #gunakan hdparm -t -T untuk benchmark I/ O hard disk # ——end——Mungkin anda penasaran, “Buat apa pake hdparm?” Singkat saja, untuk meningkatkan performance I/O harddisk. Sebagai catatan, kernel Linux bisa saja tidak optimal dalam menggunakan harddisk Anda dan ini akan berakibat tidak efektifnya harddisk bekerja. Perintah hdparm di atas mengerjakan sebagai berikut: W0—untuk menon aktifkan write caching. Ini akan mempercepat proses penulisan sekaligus mencegah data korup. m8—untuk mengeset sector count menjadi 8 sector. d1—untuk mengaktifkan penggunaan DMA. u1—untuk mengaktifkan penggunaan interrupt mask. c1—untuk mengaktifkan penggunaan EIDE 32 bit I/O. X66—untuk mengaktfkan mode Ultra DMA 2 pada harddisk. Ketik ‘man hdparm’ untuk mempelajari penggunaan hdparm lebih lanjut. Parameter
Tuning Kernel
Gambar 6. Processor type - Unsynced TSC.
di atas bisa saja tidak cocok untuk harddisk Anda, jadi Anda harus rajin berekperimen. Oh ya... jalankan dulu perintah ‘hdparm’ di atas untuk segera mengoptimasikan harddisk Anda karena setelah ini Anda akan memasuki tahap benchmark. Tambahan tip: gunakan hdparm -t -T untuk benchmark I/O hard disk anda. Cek selalu nilai-nilai yang didapat dan ambil parameter yang memberikan nilai paling optimal. Untungnya untuk benchmark ini sudah ada paket open source yang berguna dan siap pakai. Salah satunya adalah Cerberus Suite (http://people.redhat.com/bbrock/ stress-kernel/stress-kernel-1.2.1516.3.src.rpm) untuk pembebanan sistem. Dan untuk pengukur latency digunakan Amlat (http://www.zip.com.au/~akpm/ linux/amlat.tar.gz). Download kedua package ini dan kompilasi dengan cara sebagai berikut: 1. Untuk Cerberus suite, langsung lakukan rebuild untuk membuat paket rpm-nya: rpm —rebuild ./stress-kernel-1.2.1516.3.src.rpm rpm —Uvh ./stress-kernel-1.2.1516.3.i386.rpm 2. Untuk Amlat lakukan ekstrak dan kompilasi sebagai berikut: cp ./amlat.tar.gz /usr/src/ cd /usr/src && tar —xvzf ./ amlat.tar.gz cd amlat && make Cerberus Suite tersedia juga dalam versi package binary jika Anda ingin langsung mencoba. Catatan lainnya, Cerberus Suite membutuhkan beberapa paket RPM yang
www.infolinux.web.id
biasanya pada kategori “devel” semisal binutils, glibc, kernel-source, kernel-headers, gcc, g++. Jadi jika Anda menemui pesan error tidak ditemukannya suatu file saat kompilasi Cerberus Suite, Anda perlu menginstal paket-paket devel terlebih dahulu. Gunakan command berikut untuk membantu Anda mencari paket yang sesuai. # rpm —filesbypkg —qlp /path/ke/ direktori/RPM_Anda | grep –I nama_file_yang _diperlukan Nah, sebelum anda boot kernel baru, kita benchmark dulu sistem Anda yang lama. Caranya mudah, ikuti langkah berikut (ini sekadar ide, Anda tidak harus mengikuti alur ini). 1. Jalankan X Window (bisa KDE, Gnome atau yang lain). Matikan service-service yang tidak dibutuhkan semisal Apache, MySQL, dan seterusnya. 2. Jalankan XMMS (atau media player lain yang bisa play file mp3). Lalu putar beberapa lagu secara looping. Jalankan juga visual plug-in semisal openGL visualization untuk menambah beban CPU. 3. Jalankan Cerberus Suite, caranya pindah ke direktori /usr/bin/ctcs, lalu jalankan skrip hell-hound.sh. Untuk pertanyaan “How much extra memory (in MB) beyond the defaults do you want to reserve? “ jawab dengan ‘0’. Pilih “yes” cukup di bagian “Crash me Test”dan jawab “No” di bagian lain. Jawab pertanyaan “Proceed?” dengan “yes” (Gambar 8). 4. Sambil Cerberus Suite berjalan, buka console lain dan jalankan realfeel2.
INFOLINUX MEI 2004
79
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Gambar 7. Kernel hacking.
cd /usr/src/amlat && ./realfeel2 — samples 1000000 ./normal.hist Tunggu sampai selesai seluruh iterasi, lalu pindah ke console berisi task Cerberus dan tekan “Ctrl-C” Untuk sementara simpan dahulu file ini dan reboot ulang Linux anda dan pilih kernel yang baru Anda buat. Jangan lupa sertakan driver-driver suara untuk nantinya persiapan memutar MP3 (jika Anda akan benchmark lagi menggunakan XMMS). Ok, sudah boot kernel baru? Sekarang jalankan langkah 1 - 4 seperti di atas, tapi kali ini simpan file hasil benchmark realfeel2 dengan nama lain, misal namakan “lowlat.hist”. Sekarang saatnya membuat report dari kedua file ini sekaligus mengecek peningkatan perfoma Anda bisa gunakan script Perl berikut untuk membuat report. [[Listing 2. Script pengolah hasil realfeel]] #————————begin————————— #!/usr/bin/perl sub find_percent { my $limit = shift(@_); my $result = 0; for ($i=0;($i<$n) && ($val[$i]<=$limit);$i++) { $result += $freq[$i]; } $result = $result/$sum_of_freq; print “Percentage below and equal to $limit milisecond is = $result\n”; } $sum_of_freq=0;
80
INFOLINUX MEI 2004
Tuning Kernel
Gambar 8. Cerberus suite.
$n=0; $temp = 0; $average= 0; while (<STDIN>) { #print $_; $max = 0; $freq_mul_val = 0; @this_array=split(/\s+/,$_, 2); #print “detik : $this_array[0] frekuensi : $this_array[1] \n”; $sum_of_freq += $this_array[1]; #cari nilai maximal if ($max<$this_array[0]) { $max=$this_array[0]; } #hitung frequency * nilai $freq_mul_val[$n]= $this_array[0] * $this_array[1]; $val[$n] =$this_array[0]; $freq[$n]=$this_array[1]; $n++; } #jumlahkan untuk mencari rata-rata for ($i=0;$i<$n;$i++) { $temp += $freq_mul_val[$i] } $average = $temp / $sum_of_freq; #mencari nilai standar deviasi $temp=0; $stddev_node=0; for ($i=0;$i<$n;$i++) { $mean_sub_val=$average-$val[$i]; $stddev_node += $mean_sub_val *
www.infolinux.web.id
$mean_sub_val * $freq[$i]; } $stddev_all=sqrt($stddev_node/ $sum_of_freq); print “max value is : $max\n”; print “total sample is : $sum_of_freq\n”; print “average is : $average\n”; print “standart deviation : $stddev_all\n”; find_percent(0.1); find_percent(0.2); find_percent(0.5); find_percent(0.7); find_percent(1); find_percent(5); find_percent(10); #—————end——————— Gunakan editor teks semisal vi atau Kwrite untuk menyalin script di atas dan simpan ini misal dengan nama “hitung.pl”. Lalu jalankan masing-masing dengan input file hasil output realfeel2: # chmod a+x ./hitung.pl # ./hitung.pl < ./normal.hist > ./reportnormal.txt # ./hitung.pl < ./lowlat.hist > ./reportlowlat.txt Sebagai contoh, pada komputer penulis (AMD Athlon XP 1800+, 256 MB RAM), hasil parsing script di atas sebagai berikut: (Untuk file normal hist) max value is : 946.5 total sample is : 999997 average is : 0.192800978402935 standart deviation : 4.20864151148962
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Tuning Kernel
Percentage below and equal to 0.1 milisecond is = 0.900977702933109 Percentage below and equal to 0.2 milisecond is = 0.921836765510297 Percentage below and equal to 0.5 milisecond is = 0.948988846966541 Percentage below and equal to 0.7 milisecond is = 0.962427887283662 Percentage below and equal to 1 milisecond is = 0.974251922755768 Percentage below and equal to 5 milisecond is = 0.996058988176964 Percentage below and equal to 10 milisecond is = 0.998402995208986 (Untuk file lowlat.hist) max value is : 16.4 total sample is : 1000000 average is : 0.0343402 standart deviation : 0.18507212287095 Percentage below and equal to 0.1 milisecond is = 0.940067 Percentage below and equal to 0.2 milisecond is = 0.954387 Percentage below and equal to 0.5
milisecond is = 0.985009 Percentage below and equal to 0.7 milisecond is = 0.989392 Percentage below and equal to 1 milisecond is = 0.995667 Percentage below and equal to 5 milisecond is = 0.999869 Percentage below and equal to 10 milisecond is = 0.999983 Bagaimana kita membaca report ini? Pertama, kita lihat nilai “max value”. Terlihat pada kernel normal, latency maksimal adalah 946,5 ms (milisecond). Pada kernel + patch, turun menjadi 16,4 ms. Lumayan kan? Indikator sebenarnya terlihat pada average (rata-rata) dan standart deviation (nilai yang menyatakan besarnya perbedaan nilai-nilai sampel terhadap nilai rata-rata). Pada kernel normal, rata-rata latency 0.192800978402935 ms dengan standart deviation 4.20864151148962 ms. Pada kernel + patch menjadi rata-rata 0.0343402 ms dengan standart deviation 0.18507212287095 ms. Perhatikan baik-
baik kedua nilai ini. Sistem bisa dikatakan semakin membaik jika nilai rata-rata latency mengecil, juga nilai standart deviation. Kenapa begitu? Katakan saja nilai rata-rata mengecil sampai 50%, tapi standart deviation malah membesar 40%. Ini artinya dalam saat saat tertentu, nilai latency anda sangat berbeda jauh ketimbang nilai ratarata. Jadi yang ideal, jika didapat penurunan nilai rata-rata latency dan standart deviation. Sistem Anda membaik? Syukurlah kalau begitu, berarti tidak sia-sia anda mengikuti artikel ini. Atau sistem Anda malah memburuk? Jangan keburu kecewa atau malah memboikot artikel saya. Cobalah bereksperimen lagi, misal dengan nilai timer HZ yang lebih kecil atau lebih besar. Sebenarnya masih banyak teknik penurunan latency, dan karena ini ada kaitannya dengan optimasi sistem operasi maka banyak hal yang perlu dilakukan. Semoga ulasan pada artikel ini bisa membantu Anda men-tuning system sekaligus menambah pengetahuan akan mekanisme kernel Linux. Mulyadi Santosa ([email protected])
IKLAN
www.infolinux.web.id
INFOLINUX MEI 2004
81