TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
Calc: Search and Highlight Pencarian data di Calc akan lebih menarik apabila dilengkapi dengan penggunaan highlight warna-warna menarik.
S
tarOffice menawarkan berbagai fungsionalitas yang dapat membantu kita mengelola dokumen, data, presentasi, dan lain sebagainya dalam lingkungan kerja yang terintegrasi. Dengan mudah, kita dapat membuat data penjualan barang di Calc, kemudian memasukkannya ke dalam laporan bulanan, serta akhirnya memasukkan sebagian di antaranya dalam presentasi. Kali ini, kita akan memfokuskan diri untuk menyelam lebih dalam ke dalam lautan StarOffice Calc. Aplikasi yang kompatibel dengan Excel ini menyimpan banyak fungsionalitas. Sebagai contoh, data kontak rekan kerja. Tentu saja, menyimpan kartu nama rekanan kita dalam bentuk hardcopy adalah pekerjaan yang umum kita lakukan. Tapi, pernahkah Anda membayangkan betapa repotnya ketika harus melakukan pencarian? Apabila Anda aktif menggunakan paket office, Anda dapat membuat tabel sederhana di Calc, kemudian melengkapi penggunaan dengan fungsi spesifik yang diinginkan. Tabel data tersebut dengan mudah kita urutkan. Dengan mudah juga kita saring ketika membutuhkan data dengan kriteria tertentu. Dan hebatnya, kita bahkan bisa membangun macro sendiri untuk melengkapi apa yang tidak tersedia di fungsi standar. Salah satu permasalahan yang penulis jumpai adalah pencarian di dalam tabel data tersebut. Tentu saja, terdapat fungsi standar untuk mencari teks tertentu di dalam tabel. Namun sayangnya, pencarian dilakukan satu persatu. Apa yang lebih penulis butuhkan adalah pencarian sekali dan seluruh hasil akan ditampilkan secara serentak. Menggunakan filter? Sah-sah saja, karena itulah fungsinya. Tapi bagi penulis, hal ini cukup repot. Klik sana klik sini, lantas menggunakan advanced filter apabila diperlukan. Banyak berhubungan dengan dialog. Repot sekali. Lantas, penulis berpikir alangkah enaknya apabila memiliki fungsi pencarian sekali
50
INFOLINUX 10/2004
cari, yang akan membaca kriteria dan akan meng-highlight teks yang bersangkutan di dalam tabel, dan semua hal tersebut dilakukan dengan sekali menekan tombol. Ya, dan teks yang di-highlight juga dapat diatur sesuai keinginan. Highlight juga dapat dilakukan pada beberapa kriteria sekaligus dengan beberapa warna yang berbeda. Kita akan membuat fungsionalitas serupa dengan fasilitas macro yang dimiliki oleh StarOffice.
Menganalisis kebutuhan Fungsionalitas pencarian yang kita ingin buat memungkinkan kita untuk memasukkan teks yang ingin dicari, kemudian melakukan highlight teks yang bersesuaian pada seluruh isi tabel. Selain itu, pencarian dapat pula dilakukan dengan warna highlight lain sehingga memungkinkan beberapa highlight dengan beberapa warna berbeda. Selanjutnya, semua highlight tersebut dapat dibersihkan dengan sekali menekan tombol. Kebutuhan selanjutnya adalah warna highlight yang dapat dikonfigurasi dan di-preview. Tentu saja, semua fungsionalitas ini harus mudah untuk diinstal, tabel data harus dapat berkembang sesuai kebutuhan dan macro memungkinkan untuk dikembangkan lebih lanjut di masa depan. Semua macro yang dibuat akan disimpan dalam dokumen sehingga dapat digunakan di manapun dokumen tersebut berada.
Perancangan macro Secara kasar, kita akan membagi user interface menjadi tiga sheet. Sheet pertama adalah sheet data. Sheet ini menampung data sesungguhnya dalam bentuk tabel. Sheet kedua kita beri nama sheet conf. Fungsi dari sheet kedua ini adalah sheet konfigurasi warna highlight. User dapat mengkonfigurasi komponen warna Red, Green, dan Blue dari warna highlight. Selanjutnya, untuk mendukung usability setinggi
www.infolinux.web.id
mungkin, komponen warna yang dipilih dapat di-preview dengan menekan sebuah tombol. Sheet yang ketiga adalah sheet yang bersifat informatif. Sheet ini diberi nama help, dan berisikan informasi copyright, cara instalasi, dan cara penggunaan. Selesai dengan user interface, kita akan memasuki perancangan macro terlebih dahulu. Yang pertama, tentunya macro akan dibuat semodular mungkin. Kemudian, kita akan membagi macro dalam dua bagian secara logikal. Bagian pertama adalah macro untuk sheet conf dan macro kedua, yang paling banyak adalah macro untuk kebutuhan utama program. Macro-macro tersebut dikelompokkan hanya secara logikal, dan semuanya disimpan dalam satu modul: Module1. Sekali lagi, macro disimpan ikut dengan dokumen. Pada sheet conf, kita akan menggambar satu button yang selanjutnya akan berfungsi untuk mem-preview pengaturan warna yang dilakukan oleh user. Pada sheet data, yang digambarkan hanyalah data. Segala query dan aksi dilakukan menggunakan dialog terpisah ataupun hanya menggunakan shortcut. Hal ini kita lakukan untuk mendukung interface yang bersih, agar pada sheet ini pengguna dengan mudah melakukan pengaturan data. Berikut ini adalah kemampuan yang akan dimiliki oleh macro ini: Dapat menentukan batas tabel. Penulis tidak mengetahui apakah terdapat cara untuk menentukan batas sebuah tabel. Oleh karena itu, kita akan membuatnya secara manual. Karena dapat menentukan batasan tabel secara otomatis, maka penambahan field dan record dapat dilakukan dengan mudah dan tanpa masalah berarti. Dapat melakukan highlight multiwarna. Artinya, pada suatu saat user ingin mencari kata StarOffice dan mewarnai selnya dengan latar belakang hijau muda. Namun, ingin pula mencari OpenOffice
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
dan mewarnai selnya dengan latar belakang merah. Hal ini dimungkinkan. Pengguna hanya perlu mengatur warna hijau terlebih dahulu, mencari string, mengubah warna, dan mencari lagi. Pencarian dapat dilakukan untuk seluruh isi tabel. Urutan sheet tidak harus kaku. Program dapat membaca sheet berdasarkan nama sheet. Berikut ini adalah keterbatasan yang dimiliki oleh macro ini: Terutama untuk sheet conf, user TIDAK BOLEH memindahkan sel sesuai keinginan. Sebagai contoh, pengisian komponen warna untuk Red akan diletakkan di sel B5, dan pengguna tidak boleh mengubahnya ke tempat lain. Karena, program akan membaca B5 dan mengambil pengaturan Red dari isi sel ini. Sebenarnya, pembacaan dinamis bisa saja dilakukan, namun mengingat karena ini adalah layar konfigurasi, yang peletakan selnya tidak perlu diatur-atur, nama kita hanya membuatnya membaca secara absolut. Sementara, masih di soal pembacaan statis, untuk sheet data, header tabel harus berada pada baris 1, karena awal baris tabel selalu diasumsikan pada baris tersebut. Dan, kolom pertama juga harus
selalu pada kolom A. Hal ini seharusnya tidak menjadi masalah besar, selama isi tabel bisa berkembang sesuai kebutuhan. Selama tabel rata kiri atas, maka ukuran tabel tidak akan menjadi masalah. Penghapusan highlight. Penghapusan ini dilakukan dengan sangat bar-bar. Penghapusan hanya dilakukan dengan mengubah warna latar keseluruhan isi tabel dengan warna putih. Hal ini sebenarnya berbahaya karena warna latar tidak selalu putih dan sangat tidak adil apabila satu highlight memerlukan pengaturan latar 100 sel (pada tabel 10x10). Penulis belum mengetahui cara yang lebih baik pada saat ini.
Pembuatan Macro Perancangan user interface Kita akan memulai dengan pembuatan user interface terlebih dahulu. Pastikan Anda memiliki tiga sheet sebaiknya dalam urutan berikut ini: data, conf, dan help. Ketikkan seperti pada contoh data 1 dimulai dari A1 pada sheet data. Selanjutnya, ketikkan seperti pada contoh data 2 untuk sheet conf, dan, sekali lagi, perhatikan sel yang digunakan, karena pembacaan data di sheet ini dilakukan dengan absolut. Untuk menggambar button, kliklah tombol Show Form Functions di toolbar kiri
StarOffice Anda. Tahan agak lama sampai sebuah floating toolbar ditampilkan. Kemudian, gambarlah button (tombol kedua dari kiri) dan gambarlah di E7. Pilih button, dan klik kanan, kemudian pilihlah Control.... Sebuah dialog properti objek akan ditampilkan, ubahlah nilai pada Label menjadi Preview. Anda hampir selesai. Objek form memiliki dua status, design dan preview. Pada tahap design, button tidak dapat diklik, hanya dapat dipilih. Kita sedang berada pada status ini. Untuk pindah ke modus preview, tampilkan kembali toolbar Show Form Functions. Klik tombol dengan hint Design Mode On/Off. Tombol tersebut terletak di baris kedua, dengan posisi tombol keempat dari kanan. Kini, Anda dapat klik tombol Preview yang Anda buat, namun tidak akan muncul reaksi apa-apa karena kita belum memberikan kode yang bersesuaian. Kita akan pindah ke sheet help terlebih dahulu. Tabel 1 adalah isi sheet help. Anda, tentu saja, tidak harus mengetikkan isi sheet ini secara lengkap. Kini, kita telah memiliki tiga sheet. Semua sheet sudah dilengkapi dengan semua yang dibutuhkan untuk bekerja. Kita akan melanjutkan dengan pengaturan macro.
Pengaturan macro Simpanlah dokumen Anda, misalnya de-
Contoh Data 1
1 2 3 4 5 6 7 8 9 10
A
B
C
D
E
F
Name Bruce McOpen Dale scoson Robin Hud Suse redhatson Mono dotNet Windows Virusmaker Secure Hola Debina Freesov Andrex Tinanium
Address Open Source Street Dreaming street Dark Forest Linux distro street Big Framework Network Clinic Street Hacker Street Community Circle Undersea Street
Phone 123456 100000 999991 222333 999999 333332 123321 234232 111000
Email
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Website Www.mcopen.com/bruce Www.kickme.com/sdale Www.huntme.com/robin Www.redsuse.com/rsuse Www.framework.net/mono Www.killme.com/virusmaker Www.fixme.com/securehola Www.freesov.net/debina Www.tinanium.com
Note Open Source Advocate, very active Popular person Nice person Cool distro Future Framework Security Expert Security Consultant Nice person Wah!
Contoh Data 2
A 1 2 3 4 5 6 7 8
B
C
D
E
F
CONFIGURATIONplease do not move cell content
Highlight color RGB Red Part RGB Green Part RGB Blue Part
255 127 0
Preview Click the button below to preview Test test
www.infolinux.web.id
INFOLINUX 10/2004
51
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
Sheet data.
ngan nama data-kontak.sxc. Kemudian, akseslah Tools|Macros|Macro. Simpanlah semua macro yang kita buat dalam datakontak.sxc|Standard|Module1. Kemudian, editlah modul tersebut.
Macro-macro Berikut ini adalah keseluruhan isi Module1. Penjelasan akan dibahas setelahnya. REM ***** BASIC ***** ‘Search and Highlight v0.1a ‘(c) Noprianto ‘July 5, 2004, the election day ‘Globals Option Explicit Dim HR, HG, HB as Integer Dim YRangeStart as Integer Dim YRangeEnd as Integer Dim XRangeStart as Integer Dim XRangeEnd as Integer Sub DoSearchHighlight ConfPreview GetBoundary SearchHighlight End Sub Sub DoClearHighlight GetBoundary ClearHighlight End Sub ‘GetBoudary ‘Return Table Boundaries Sub GetBoundary Dim i,j as Integer
52
INFOLINUX 10/2004
Sheet conf.
Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop. CurrentComponent Sheet = Doc.Sheets. getByName(“data”) YRangeStart = 1 YRangeEnd = YRangeStart For i=YRangeStart to YRangeEnd Cell = Sheet. getCellByPosition(0,i) if Cell.Type = com.sun.star. table.CellContentType.EMPTY then Exit For else YRangeEnd = YRangeEnd + 1 end if Next i XRangeStart = 0
XRangeEnd = YRangeStart For i=XRangeStart to XRangeEnd Cell = Sheet. getCellByPosition(i,0) if Cell.Type = com.sun.star. table.CellContentType.EMPTY then Exit For else XRangeEnd = XRangeEnd + 1 end if Next i End Sub ‘ConfPreview ‘Configuration Preview Sub ConfPreview Dim Doc As Object Dim Sheet As Object Dim Cell As Object Dim ShadowFormat As New com.sun. star.table.ShadowFormat Doc = StarDesktop.
Tabel 1
A 1 2 3 4 5 6 7 8 9 10 11
Usage Default: Press F3 to Search, or Press Shift-F3 to clear all highlights You always can configure highlight color in conf sheet Install Assign DoSearchHighlight() and DoClearHighlights() with your favourite shortcuts About © Noprianto, July 5 2004 The Election Day
www.infolinux.web.id
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
CurrentComponent Sheet = Doc.Sheets. getByName(“conf”) Cell = Sheet. getCellByPosition(5,6) HR = Sheet. getCellByPosition(1,4).Value HG = Sheet. getCellByPosition(1,5).Value HB = Sheet. getCellByPosition(1,6).Value Cell.CellBackColor = RGB(HR, HG, HB) End Sub ‘SearchHighlight ‘Search and highlight Sub SearchHighlight Dim Doc As Object Dim ShadowFormat As New com.sun. star.table.ShadowFormat Dim Sheet As Object Dim CellRange as Object Dim Cell as Object Dim ResultIndex as Integer Dim Search as String Dim i,j as integer Search = InputBox(“Enter name”,”Search Data”) If Len(Trim(Search)) < 1 then Exit Sub Doc = StarDesktop. CurrentComponent
Sheet help.
Sheet = Doc.Sheets. getByName(“data”) For j=XRangeStart to XRangeEnd -1 For i=YRangeStart to YRangeEnd - 1 Cell = Sheet. getCellByPosition(j,i) ResultIndex = InStr(Cell. String, Search) if ResultIndex then Cell.CellBackColor = RGB(HR, HG, HB) End if Next i Next j End Sub ‘ClearHighlight ‘Clear all highlights Sub ClearHighlight Dim i,j as Integer Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop. CurrentComponent Sheet = Doc.Sheets. getByName(“data”) For j=XRangeStart to XRangeEnd -1 For i=YRangeStart to YRangeEnd - 1
Cell = Sheet. getCellByPosition(j,i) Cell.CellBackColor = RGB(255, 255, 255) Next i Next j End Sub
Penjelasan macro Macro ini memiliki opsi deklarasi variabel secara eksplisit, sehingga setiap variabel yang digunakan perlu dideklarasikan terlebih dahulu. Kita memiliki beberapa variabel berikut ini yang diatur secara public: HR, HG, HB untuk komponen warna R, G, dan B highlights YrangeStart, YrangeEnd, XrangeStart, XrangeEnd, masing-masing untuk awal dan akhir range horizontal dan vertikal. Dengan cara ini, kita akan menentukan batas sebuah tabel. Macro yang kita buat terdiri dari 6 subrutin. Berikut ini adalah penjelasan subrutin yang digunakan, beserta fungsi dan cara kerjanya: 1. Sub GetBoudary Subrutin ini berfungsi untuk mendapatkan nilai YrangeEnd dan XrangeEnd. Dengan mendapatkan kedua nilai tersebut, tentu saja kita bisa mengetahui batas sebuah tabel. Secara prinsip, tabel akan terdiri dari data yang kontinyu. Sehingga, tabel belum berakhir apabila sel berikutnya yang kita periksa belum kosong. Pemeriksaan akan
IDE StarOffice.
www.infolinux.web.id
INFOLINUX 10/2004
53
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
Contoh inputbox.
dilakukan ke bawah dulu, dan pencarian akan berlangsung terus sebelum content type sel adalah com.sun.star.table.CellContentType.EMPTY. Pemeriksaan selanjutnya akan dilakukan ke samping, dan hanya akan berhenti apabila content type sel yang diperiksa adalah com.sun.star.table.CellContentType.EMPTY. Pencarian ini menggunakan perulangan dengan batas yang dinamis. Artinya, batas perulangan diatur di dalam perulangan itu sendiri. Dan apabila suatu sel adalah sel kosong, maka perulangan akan keluar dan meninggalkan batas akhir yang diinginkan, baik batas bawah ataupun batas kanan. Contoh pencarian batas bawah: YRangeStart = 1 YRangeEnd = YRangeStart For i=YRangeStart to YRangeEnd Cell = Sheet. getCellByPosition(0,i) if Cell.Type = com.sun.star. table.CellContentType.EMPTY then Exit For else YRangeEnd = YRangeEnd + 1 end if Next i
Pertama-tama, YrangeStart diset menjadi 1. Harap diingat bahwa nomor range dimulai dari 0. Kita memulai dengan 1 karena terdapat header tabel yang tidak perlu diikutsertakan dalam pencarian. Setelah itu, akhir range (YrangeEnd) kita samakan dengan YrangeStart.
54
INFOLINUX 10/2004
Contoh Highlight.
Perulangan pun dilakukan dari YrangeStart sampai YrangeEnd. Selanjutnya, kita akan mengevaluasi tipe isi setiap sel (content type) yang kita jumpai dalam kolom tersebut. Kemudian, apabila tidak kosong, maka kita akan mengubah YrangeEnd sehingga perulangan akan dilanjutkan dengan YrangeEnd yang berbeda. Apabila kosong, maka perulangan akan dihentikan.
Pertama-tama, kita akan menentukan sel F7 (5,6) sebagai sel preview. Selanjutnya, kita membaca B5, B6, dan B7 untuk mendapatkan R, G, dan B untuk highlight. Setelah mendapatkannya, kita segera mengaplikasikannya pada sel F7 tersebut. Sebagai catatan, untuk getCellByPosition, kita menggunakan notasi (kolom, baris) dengan kolom dan baris dimulai dari 0.
2. Sub ConfPreview Subrutin ini berfungsi untuk melakukan preview pengaturan komponen warna yang dilakukan oleh user. Selain melakukan preview, subrutin ini juga mengemban fungsi penting: mendapatkan nilai dari HR, HG, dan HB. Fungsi ini sedianya dipanggil sebagai event handler button Preview untuk event Mouse Button Released.
3. Sub SearchHighlight Subrutin ini adalah subrutin yang berfungsi melakukan highlight. Tentu saja, pertamatama subrutin ini harus mengetahui dulu batas tabel dan warna highlight. Namun, kedua keperluan tersebut bisa didapatkan oleh subrutin GetBoudary dan subrutin ConfPreview. Subrutin ini tidak mengurusi kedua hal tersebut. Pertama-tama, sebuah inputbox akan ditampilkan untuk meminta user memasukkan string yang ingin dicari. Apabila panjang string kurang dari 1, maka secara otomatis akan keluar dari subrutin ini.
Doc = StarDesktop. CurrentComponent Sheet = Doc.Sheets. getByName(“conf”) Cell = Sheet. getCellByPosition(5,6)
HR = Sheet. getCellByPosition(1,4).Value HG = Sheet. getCellByPosition(1,5).Value HB = Sheet. getCellByPosition(1,6).Value Cell.CellBackColor = RGB(HR, HG, HB)
www.infolinux.web.id
Search = InputBox(“Enter name”,”Search Data”) If Len(Trim(Search)) < 1 then Exit Sub
Selanjutnya, sheet data akan didapatkan, dan pencarian dalam perulangan akan dilakukan: For j=XRangeStart to XRangeEnd -1 For i=YRangeStart to YRangeEnd - 1 Cell = Sheet.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Calc
getCellByPosition(j,i) ResultIndex = InStr(Cell. String, Search) if ResultIndex then Cell.CellBackColor = RGB(HR, HG, HB) End if Next i Next j
Untuk pencarian, fungsi InStr() digunakan. Apabila pencarian berhasil, maka pemberian warna latar sesuai konfigurasi akan dilakukan pada sel bersangkutan. Pencarian akan dilakukan pada keseluruhan isi tabel. 4. Sub ClearHighlight Sesuai dengan namanya, subrutin ini akan membersihkan semua highlight yang ada dalam tabel. Subrutin ini masih jauh dari sempurna. Secara kasar, yang dilakukan oleh ClearHighlight adalah mengeset semua warna latar menjadi putih untuk keseluruhan isi tabel. Seperti dibahas pada awal tulisan, cara ini setidaknya memiliki dua kekurangan: warna latar yang asli bisa saja bukan putih. Sebenarnya bisa saja untuk mengambil warna latar aktif dari tabel tersebut (atau berupa snapshot keseluruhan sebelum dihighlight), namun macro akan menjadi cukup kompleks. Tidak adil untuk membersihkan satu tabel, terutama kalau tabelnya besar, apabila hanya satu sel yang di-highlight.
Highlight multiwarna.
Subrutin ini memiliki cara kerja yang relatif sama dengan SearchHighlight, hanya tidak ada pemeriksaan kondisi. For j=XRangeStart to XRangeEnd -1 For i=YRangeStart to YRangeEnd - 1 Cell = Sheet. getCellByPosition(j,i) Cell.CellBackColor = RGB(255, 255, 255) Next i Next j
5. Sub DoSearchHighlight Subrutin ini akan memanggil ConfPreview, GetBoudary, dan akhirnya SearchHighlight. Asosiasikan fungsi ini dengan shortcut yang diinginkan untuk memulai Search and Highlight. 6. Sub DoClearHighlight Subrutin ini akan memanggil GetBoudary dan ClearHighlight. Asosiasikan fungsi ini dengan shortcut yang diinginkan untuk membersihkan keseluruhan tabel dari highlight.
Asosiasi macro untuk button Preview Kita akan meminta StarOffice untuk menjalankan ConfPreview begitu tombol mouse dilepas pada tombol Preview di sheet conf. Kembalilah ke modus design, pilih button, klik kanan, dan pilih Control. Sebuah object properties ditampilkan, pindahlah ke
tab Events dan pilihlah macro ConfPreview untuk event Mouse Button Released.
Penggunaan Kini, pengembangan telah selesai. Anda bisa mencoba untuk menjalankan DoSearchHighlight, DoClearHighlight, ataupun ConfPreview. Untuk lebih mudahnya, kita akan mengasosiasikan shortcut untuk DoSearchHighlight dan DoClearHighlight. Penulis menggunakan F3 untuk DoSearchHighlight dan Shift-F3 untuk DoClearHighlight. ConfPreview tidak diasosiasikan dengan shortcut karena diasumsikan cukup dengan penggunaan button. Akseslah Tools|Configure dan pada sebuah dialog yang terbuka, aktiflah pada tab Keyboard. Pilihlah F3 dan carilah macro DoSearchHighlight. Dalam kondisi F3 dan DoSearchHighlight terpilih, kliklah tombol Modify. Lakukan pula cara yang sama untuk DoClearHighlight. Sebagai tambahan, apabila Anda lebih suka untuk menggunakan menu, Anda dapat berpindah ke tab sebelumnya dan mengasosiasikan menu yang diinginkan untuk menjalankan macro yang kita buat. Setelah itu, Anda bisa menikmati macro ini untuk memudahkan pencarian data pada tabel. Sampai jumpa dalam artikel lain tentang pemanfaatan paket office secara optimal, sebagai pembuktian bahwa Linux adalah sistem operasi pilihan bagi pengguna komputer. Selamat mencoba! Noprianto (
[email protected])
Asosiasi shortcut.
www.infolinux.web.id
INFOLINUX 10/2004
55
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
JDS
Bekerja dengan Printer di JDS Pencetakan adalah salah satu tugas datang yang paling banyak ditemukan dalam kegiatan sehari-hari. Kita akan membahas dari ujung ke ujung penggunaan printer di JDS.
P
rinter, sampai saat ini merupakan salah satu hardware yang bermasalah di Linux. Dulu VGA atau sound, namun sekarang ini keduanya sudah bukan masalah lagi. Sebenarnya, untuk printer yang umum dipasarkan di Indonesia sebagian besar di antaranya sudah didukung oleh Linux. Printer yang dapat dikatakan bekerja di Linux umumnya adalah printer yang dapat digunakan untuk mencetak. Hanya fungsi dasarnya saja. Jarang sekali terdapat printer baru yang didukung semua fiturnya dan dapat digunakan secara sempurna di Linux. Oleh karena itu, artikel ini menggunakan pendekatan dapat mencetak sebagai ukuran printer tersebut kompatibel dengan Linux. Beberapa distro seperti JDS dan SUSE melengkapi dirinya dengan tool khusus atau kemampuan khusus untuk bekerja lebih baik dengan printer. Di artikel ini, penulis menggunakan JDS Release 2 beta. JDS datang dengan kemudahan dalam mengonfigurasi printer. Dengan mudah, kita bisa menggunakan printer di jaringan untuk mencetak. Selain itu, untuk printer lokal, JDS juga dapat melakukan auto-detection dengan cukup baik.
Memilih printer.
56
INFOLINUX 10/2004
Di JDS, dengan kemampuan auto-detection yang cukup baik, Anda bisa menggunakan printer lama Anda yang dihubungkan ke paralel port ataupun menggunakan printer yang baru dibeli, yang menggunakan interface USB. Pada akhir artikel, kita akan melihat beberapa printer yang umum di pasaran, yang kompatibel dengan Linux secara umum. Untuk melakukan konfigurasi printer, akseslah Preferences|Printer. Atau, ketika Anda sedang menjalankan Nautilus, akseslah alamat berikut ini: printers:///
Secara default, ketika Anda belum memiliki printer, sebuah icon New Printer akan ditampilkan. Apabila diperhatikan, ketika baru saja membuka Printers:///, kursor mouse Anda akan sejenak terlihat berganti status menjadi busy. Hal ini disebabkan karena JDS sedang melakukan update status printer terbaru.
Menambahkan printer lokal Untuk menambahkan printer baru, klik gandalah pada icon New Printer. Sebuah dialog akan ditampilkan. Dialog ini akan
Detail printer.
www.infolinux.web.id
meminta password root. Masukkanlah password root untuk melanjutkan penambahan printer. Dialog baru akan ditampilkan. Anda diminta untuk memberikan informasi apakah printer yang ingin ditambahkan adalah printer lokal atau printer jaringan. Pilihlah printer lokal. Klik tombol Forward. Dialog baru dengan tajuk step 1 of 4 akan ditampilkan. JDS akan berusaha mendeteksi printer yang terpasang di komputer Anda. Apabila terdeteksi, maka secara otomatis akan terlihat di daftar printer terdeteksi. Pilihlah Use a detected printer apabila printer terdeteksi dengan benar. Apabila tidak, pilihah Use another printer by specifying a port dan pilihlah port yang benar. Di langkah ini, printer Anda seharusnya akan terdeteksi dengan baik. Klik tombol Forward untuk melanjutkan ke langkah berikutnya. Dialog dengan tajuk step 2 of 4 akan ditampilkan. Di langkah kedua ini, Anda akan diminta untuk memberikan detail printer. Pilihlah pertama-tama Manufacturer-nya dulu, kemudian pilihlah Model printer-nya. Setelah itu, Anda akan melihat driver-driver apa saja yang cocok digunakan untuk prin-
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL JDS
Nama dan deskripsi printer.
ter tersebut. Anda bisa mencoba-coba driver mana saja yang memberikan hasil paling optimal. Beberapa driver sangat sempurna, namun sangat memakan resource. Beberapa hemat waktu misalnya, namun hasilnya kurang memuaskan. Klik tombol Forward untuk melanjutkan. Dialog step 3 of 4 akan ditampilkan. Anda akan diminta untuk memasukkan nama printer dan deskripsi printer (opsional). Masukanlah nama yang masuk akal seperti hp_3650 atau epson_lx300. Usahakan, jangan memberikan nama yang umum seperti printer karena akan membingungkan di masa depannya apabila Anda memiliki lebih dari satu printer. Klik tombol Forward untuk melanjutkan. Dialog terakhir akan tampil. Dialog ini akan menampilkan beberapa informasi terakhir. Anda bisa kembali ke langkah-langkah sebelumnya dengan menekan tombol Back, atau menekan tombol Apply begitu semua informasi dimasukkan dengan benar. Tunggulah sebentar dan Anda akan melihat icon untuk printer baru Anda, lengkap dengan status dan jumlah job yang harus dikerjakan. Umumnya, Anda akan melihat status Ready dan 0 jobs. Apabila menambahkan lebih dari satu printer, maka Anda perlu menentukan satu printer sebagai printer default. Klik kanan pada icon printer dan pilih Make default un-
tuk menjadikannya printer default. Sebuah tanda centang biru akan menandai printer default.
Menambahkan printer jaringan Menambahkan printer jaringan dapat dilakukan semudah menambahkan printer lokal. Ketika Anda memilih printer jaringan pada dialog awal, maka Anda akan dibawa menuju langkah pertama berupa pemilihan printer. Linux memiliki beberapa implementasi untuk pencetakan melewati jaringan. Linux, tentunya juga bisa bekerja sama dengan printer yang di-share di server Windows atau Server Linux dengan share printer dengan protokol SMB. Apabila Anda berada di jaringan besar, tanyakanlah kepada administrator jaringan Anda tentang metode share printer. Apabila server-nya adalah server Windows, tipe printer yang harus Anda pilih adalah Windows Printer (SMB). Apabila servernya adalah server Linux, maka Anda harus menanyakan dengan lengkap. JDS datang dengan dukungan tipe UNIX Printer (LPD), Common Unix Printing System (CUPS IPP), atau bahkan Windows Printer (SMB). Umumnya, tipe yang digunakan adalah CUPS dan SMB. JDS juga datang dengan dukungan metode pencetakan ala HP, yaitu HP Jet-
www.infolinux.web.id
INFOLINUX 10/2004
57
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
JDS
Summary printer.
Direct. Penggunaan tipe yang satu ini tidak sebanyak penggunaan CUPS ataupun SMB. Setelah mendapatkan informasi, pilihlah tipe printer dan masukkanlah alamat IP Server atau Hostname Server. Selanjutnya, langkah berikutnya akan sama saja seperti penambahan printer lokal. Printer jaringan dapat dibedakan dengan printer lokal dari icon yang digunakan.
Menggunakan printer Berikut ini adalah beberapa hal yang umumnya ditemukan ketika bekerja dengan printer. Kita akan membahasnya secara kasus demi kasus. Untuk melihat job printer, klik gandalah icon printer tersebut. Sebuah window kecil, mirip seperti yang ditemukan pada MS Windows akan ditampilkan. Selanjutnya, Anda dapat memilih menu Edit di window kecil tersebut untuk membatalkan, menghentikan sementara, atau melanjutkan pencetakan. Untuk mencetak test page, klik ganda pada printer dan pilihlah Printer | Print Test Page pada window kecil yang tampil. Untuk menghapus suatu printer, klik kanan pada icon printer tersebut dan pilihlah Delete. Anda akan diminta untuk memasukkan password root. Untuk mengatur properti printer, klik kanan pada icon printer dan pilihlah properties. Anda akan menjumpai sebuah dialog kecil dengan tiga tab: General, Paper, dan Advanced. Di tab General, Anda dapat mengubah deskripsi, lokasi, dan resolusi printer. Pengubahan akan mem-
58
INFOLINUX 10/2004
Properti printer.
butuhkan password root. Di tab Paper, Anda dapat mengubah ukuran kertas dan layout. Sementara, di tab Advanced, Anda dapat mengubah region kertas. Sangat berguna untuk kertas-kertas ukuran kecil. Terkadang, bisa saja pencetakan mengalami masalah dan printer menjadi tidak dapat mencetak. Walaupun secara teori kasus ini seharusnya sangat jarang terjadi, Anda dapat melakukan beberapa hal berikut ini untuk memperbaikinya: Coba untuk mencetak dan lihatlah jobs printer tersebut. Apabila tugas cetak terdaftar di job list dan printer tetap tidak dapat mencetak, maka Anda dapat melakukan hal berikut ini untuk printer lokal: hapus printer dan tambahkan lagi. Apabila tugas cetak tidak terdaftar, maka restart-lah servis printer Anda. Pada CUPS, caranya adalah sebagai berikut (sebagai root): /etc/init.d/cups restart
Apabila Anda mengunakan StarOffice dan printer yang ditambahkan tidak terdaftar pada daftar printer di StarOffice, maka keluarlah dahulu dari StarOffice dan jalankanlah kembali StarOffice. Printer Anda akan segera terdaftar pada daftar printer di StarOffice.
Printer-printer yang didukung Demikianlah penggunaan printer di JDS. Perkembangan printer di Linux sangat
www.infolinux.web.id
menghangat dalam beberapa waktu terakhir. Untuk saat ini, kita harus puas ketika printer yang baru kita beli hanya dapat mencetak tanpa dapat menunjukkan berbagai fasilitas canggihnya. Berikut ini adalah beberapa daftar printer yang didukung oleh Linux. Informasi selengkapnya bisa didapatkan di linuxprinting.org. Hewlet Packard: 200c, 2500C, 2500CM, 2563, seri-eri business inkjet, Color Laserjet (kecuali seri 3500), seri designjet (kecuali seri 5500), seri-seri deskjet (beberapa diantaranya tidak bekerja dengan sempurna), seri Laserjet (kecuali 1010, 1012, 1015, 3100, 3150), seri-seri officejet, dan lain sebagainya. Canon: BJ 5, BJ 10, BJ 20, BJ 100, BJ 200, BJ 300, BJ 600, BJC 610, BJC 620, dan seri-seri lain. S200 yang sering ditemukan di pasaran tidak didukung. Beberapa waktu ke depan, kita harapkan perkembangan dunia pencetakan akan semakin maju di Linux. Sebagai pengguna, kita perlu optimis. Pada tahun 2000 yang lalu, penulis ingat bahwa VGA dan sound card adalah dua hardware yang cukup mengkhawatirkan. Namun untuk saat ini, Anda bisa melihat betapa tingginya dukungan Linux pada kedua hardware tersebut. Secara besar-besaran, perkembangan printer telah dimulai satu atau dua tahun terakhir. Kita harapkan, satu atau dua tahun ke depan pencetakan bukanlah masalah di Linux! Noprianto (
[email protected])
WORKSHOP Instructur: Firdaus Cahyadi 3 WEBHOSTING DI LINUX ● Reviewer server DNS ● Reviewer server Mail ● Setup & konfigurasi server WEB ● Studi Kasus Tanggal : Sabtu, 2 Oktober 2004 Tempat : Labkom P2M MESIN FT UI - Salemba, Kampus Universitas Indonesia - Salemba. Tel : 314 9720 Waktu : 9.00 - 16.30 WIB Kontak : Wilda (FTUI, Tel : 314 9720), Lely Ch. Musar (InfoLinux, Tel 315 3731 ext. 16)
1 MIGRASI WINDOWS KE LINUX MANDRAKE 10 ● Instalasi Linux Mandrake 10 ● Konfigurasi System (hardware & software) ● Koneksi ke Jaringan LAN ● Aplikasi desktop (KDE) ● Perintah - perintah di konsole Tanggal : Senin, 4 Oktober Tempat : Sekolah Web Indonesia, Jl. Pluit Permai Raya No. 25, Jakarta Utara. Tel : 668 3971 Waktu : 9.00 - 16.30 WIB 2 NETWORKING DI LINUX (Membangun Intranet) Konfigurasi Jaringan TCP/IP di Linux ● Internet sharing dengan iptables ● Proxy dengan Squid ● Setup client Linux dan Windows untuk Internet ● File sharing dengan client Windows (Samba)
Tanggal Tempat Waktu
Tanggal : Selasa, 5 Oktober 2004 Tempat : Sekolah Web Indonesia, Jl. Pluit Permai Raya No. 25, Jakarta Utara. Tel : 668 3971 Waktu : 9.00 - 16.30 WIB Kontak : Irfan (SWI, Tel : 668 3971), Lely Ch. Musar (InfoLinux, Tel : 315 3731 ext. 16)
4 MEMBANGUN MAIL SERVER DENGAN ● Overview jaringan di Linux ● Konfigurasi DNS server Bind
●
Kontak
● ● ● ●
●
Sertifikat Makan siang & snack Majalah InfoLinux
●
Buku InfoLinux
● ●
Peserta yang telah mengikuti workshop ini akan mampu mengimplementasikan qmail sebagai email server plus anti spam & anti virus, serta webmail
QMAIL
Konfigurasi qmail sebagai smtp dan pop3 server Konfigurasi sqwebmail sebagai webmail Konfigurasi spamasasain Uji coba mail server
Tanggal Tempat Waktu
Biaya permodul Rp. 350.000,- (Umum) Rp. 270.000(Mahasiswa) Sudah termasuk :
: Rabu, 6 Oktober 2004 : Sekolah Web Indonesia, : 9.00 - 16.30 WIB Jl. Pluit Permai Raya No. 25, Jakarta Utara. Tel : 668 3971 : Irfan (SWI, Tel : 668 3971), Lely Ch. Musar (InfoLinux, Tel : 315 3731 ext. 16)
Kontak Tanggal Tempat Tel Kontak
: Rabu, 6 Oktober 2004 : Labkom P2M MESIN FT UI - Salemba, : 9.00 - 16.30 WIB Kampus Universitas Indonesia - Salemba. Tel : 314 9720 : Wilda (FTUI, Tel : 314 9720), Lely Ch. Musar (InfoLinux, Tel 315 3731 ext. 16) : Kamis, 7 Oktober 2004 : Sekolah Web Indonesia, Waktu : 9.00 - 16.30 WIB Jl. Pluit Permai Raya No. 25, Jakarta Utara. : 668 3971 : Irfan (SWI, Tel : 668 3971), Lely Ch. Musar (InfoLinux, Tel : 315 3731 ext. 16)
Formulir Pendaftaran Workshop
1/
2/
3/
4
Nama
:
...................................................................................................................................................................
Alamat
:
................................................................................................................................................................... ................................................................................................................................................................... ...................................................................................................................................................................
Pekerjaan
:
...................................................................................................................................................................
No. Telp/HP :
...................................................................................................................................................................
E-mail
...................................................................................................................................................................
:
NB: Pilih salah satu Centang
Pembayaran via transfer: Fax Formulir dan bukti transfer PT Infolinux Media Utama ke 021-3914703,3153732 BCA Cab. Raden Saleh TTD, No Rek. 634.0046763
(____________________)
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Renderman
Animasi 3D Berbasis Renderman Bagian 1 dari 2 tulisan Linux tidak hanya untuk server jaringan dan database. Telah terbukti banyak film terkenal dibuat di atas Linux dengan teknik rendering, seperti “Shrek 2”. Anda dapat mempelajari rendering dengan paket free software dan open source, misalnya Aqsis yang berbasis Renderman.
A
nimasi dan visual effect merupakan sajian yang tidak mungkin terlewat dalam sebuah film. Dalam proses post production dari pembuatan film, tentunya membutuhkan polesan di sana-sini agar film yang akan ditonton nantinya dapat membawa suasana yang sesungguhnya. Dari jatuhan meteor sampai dengan suasana musim salju pun dapat dengan mudah dibuat dengan teknologi digital. Terlebih lagi bila film tersebut adalah film animasi seperti “Toy Story”, “Shrek 2”, “Lord of The Ring”, dan “Spiderman 2”. Anda tentunya terkagum-kagum dengan film-film tersebut, seakan apa yang dilihat dalam film adalah nyata. Untuk menghasilkan objek tersebut, bagi para 3D modeler adalah hal yang mudah, karena kini aplikasi 3D Modeling yang digunakan untuk membuat objek-objek tersebut sudah banyak tersedia. Dan lagi, asal-muasal aplikasi tersebut lahir di dunia Unix khususnya SGI IRIX, karena pada saat itu Unix adalah satu-satunya sistem operasi yang andal, tangguh, dan memiliki manajemen memory yang bagus. Sebut saja Maya, Lightwave, XSI, dan Haudini. Aplikasi-aplikasi tersebut merupakan para pionir di dunia grafis dan visual effect di Unix. Kini seiring perkembangan teknologi, mereka akhirnya mem-porting aplikasinya untuk jalan di beberapa sistem operasi seperti Linux dan Windows bahkan MacOS. Lalu bagaimana setelah tahap modeling dibuat hingga selesai? Tentu saja hasil dari objek tersebut perlu di-render untuk menghasilkan visualisasi seperti yang diinginkan. Penggunaan renderer juga perlu diperhatikan dalam melakukan rendering
60
INFOLINUX 10/2004
objek, karena teknik yang dipakai tiap-tiap renderer berbeda dan memiliki kelebihan dan kekurangan masing-masing. Pada ulasan kali ini, penulis membahas pemrograman rendering berbasis Renderman. Mengapa berbasis Renderman dan mengapa pula tidak yang lain? Di dunia grafis, aplikasi rendering sudahlah banyak, baik yang bersifat propietary maupun yang free dan open source. Povray, Pixar Renderman, dan MentalRay adalah beberapa renderer yang sudah cukup terkenal di kalangan perfilman dunia. Povray yang baru saja merilis versi terbarunya 3.6 mulai menambahkan beberapa fitur. Perlu diketahui pula bahwa Povray merupakan rendering berbasis Raytracer dan tentu saja free dan open source. Rendering berbasis Raytracer lebih menguntungkan bila digunakan dalam me-render gambar yang diam. Raytracer menggunakan teknik jumlah cahaya yang mengenai permukan objek beserta menghitung pantulan masing-masing cahaya yang menimpa lingkungan. Sedang Renderman sendiri sangat bagus untuk objek yang selalu bergerak seperti dalam pembuatan film yang objeknya selalu mengalami motion ke sana-sini. Itulah sebabnya Renderman banyak digunakan di dunia perfilman.
Apa itu Renderman? Renderman adalah spesifikasi teknis yang menjembatani antara Modeling dan Rendering. Renderman sendiri merupakan produk dari Pixar Studios. Pixar menerbitkan spesifikasi teknis Renderman sampai saat ini sudah mencapai versi 3.2. Tentu sudah dapat ditebak bahwa Pixar juga punya ap-
www.infolinux.web.id
likasi untuk me-render sendiri dan bersifat propietary. Pixar mengeluarkan produknya dalam dua bagian, yaitu Pixar Renderman Artist Tool yang berguna untuk mendesain shader dan tool lainnya, dan Pixar Renderman Pro Server yang merupakan engine dari Renderman. Semua produk Pixar tersedia untuk Linux dan Windows. Sebuah aplikasi rendering dikatakan compliant terhadap Renderman apabila memenuhi standar yang ada di dalam spesifikasi teknis. Spesifikasi teknis Renderman versi 3.2 dapat di-download di http://www.renderman.org atau di http://renderman.pixar.com. Dengan adanya spesifikasi teknis yang dikeluarkan oleh Pixar, maka kini banyak aplikasi rendering yang compliant terhadap Renderman, sebut saja antara lain BMRT (Blue Moon Rendering Tool), Aqsis, 3Delight, Pixie, dan Entropy. Semua aplikasi rendering yang baru saja disebutkan adalah free dan open source (kecuali 3Delight yang tidak open source), dan tersedia di hampir semua platform mulai IRIX, Linux, Mac OSX, Windows, dan FreeBSD. Anda tidak perlu membeli produk Pixar Renderman dengan harga ribuan dollar untuk membuat film atau gambar yang bagus bak para sutradara Hollywood. Renderman memiliki dua aspek pemrograman, yaitu RIB dan RSL. Agar dapat di-render dengan rendering berbasis Renderman, maka suatu file scene harus memiliki format RIB (Renderman Interface Bytestream). Untuk membuat suatu shader atau bisa disebut pemberian textur atau warna pada permukaan model, digunakan RSL (Renderman Shading Language).
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Renderman
RIB sendiri merupakan format file yang digunakan untuk memberikan informasi dari gambar atau scene seperti data model, cahaya, kamera, shader, dan attribute agar dapat dikontrol oleh Renderer berbasis Renderman.
Renderer Aqsis Pada pembahasan kali ini, penulis hanya akan mengulas dasar pemrograman RIB. Untuk dasar RSL penulis akan mengulasnya pada kesempatan yang lain. Langkah pertama untuk mencoba membuat RIB dan me-render-nya diperlukan sebuah aplikasi renderer yang berbasis Renderman. Penulis di sini menggunakan Aqsis sebagai renderer-nya, yang dapat di-download dari http://www.aqsis.com. Versi terakhir Aqsis saat artikel ini ditulis adalah 0.9.1. Anda dapat pula menggunakan renderer yang lain seperti yang telah disebutkan di atas dengan mengganti perintahnya saja dalam proses me-render.
Instalasi Aqsis Aqsis versi 0.91 tidak lagi memerlukan paket log4cpp yang terpisah karena sudah menjadi satu di dalamnya. Berikut adalah proses ekstrak, configure, serta instalasi (perhatikan bahwa untuk lambang $ untuk memakai user Anda dan untuk lambang # untuk root). ~$ tar xvfz aqsis-0.9.1.tar.gz ~$ cd aqsis-0.9.1 ~$ ./configure --prefix=/usr/lo cal/aqsis ~$ make ~$ su root
Gambar 1. Hasil rendering test 1.
password : ***** ~# make install
Setelah instalasi Aqsis selesai, selanjutkan memasukkan library Aqsis ke dalam daftar pencarian library dengan cara sebagai berikut: # echo “/usr/local/aqsis/lib” >> /etc/ld.so.conf # ldconfig -v Gambar 2. Struktur blok file RIB.
Selanjutnya adalah melakukan setup environment AQSIS_BASE_PATH dan AQSIS_SHADERS_PATH untuk account user Anda. Proses ini (export PATH atau memasukkan perintah-perintah aqsis ke dalam direktori yang biasa untuk menjalankan program) akan memudahkan Anda menjalankan program tanpa harus menulis lengkap nama direktorinya. ~$ export AQSIS_BASE_PATH=/usr/ local/aqsis ~$ export AQSIS_SHADERS_PATH=/ usr/local/aqsis/share/aqsis/ shaders
Atau Anda dapat memasukkan perintah di atas ke dalam file /etc/bash.bashrc, /home/user_anda/.bashrc, atau /home/user/.bash_profile. Agar Anda tidak kesulitan untuk memanggil aplikasi aqsis, dapat pula dibuatkan soft link di dalam direktori /usr/ bin atau /usr/local/bin. ~# cd /usr/local/bin ~# ln -s /usr/local/aqsis/bin/ aqsis ~# ln -s /usr/local/aqsis/bin/ aqsl ~# ln -s /usr/local/aqsis/bin/ aqsis_framebuffer_glut_z ~# ln -s /usr/local/aqsis/bin/ aqsltell ~# ln -s /usr/local/aqsis/bin/ shadowmap ~# ln -s /usr/local/aqsis/bin/ aqsis_framebuffer_glut ~# ln -s /usr/local/aqsis/bin/ filebuffer ~# ln -s /usr/local/aqsis/bin/ teqser
Ketikkan baris perintah di bawah dengan menggunakan editor teks favorit Anda, dan simpan hasilnya dengan nama test1.rib. Per-
www.infolinux.web.id
hatikan pula huruf besar dan kecil, karena file RIB merupakan Case sensitive. Display “test1.tif” “framebuf fer” “rgba” Format 400 400 1 Projection “perspective” “fov” [40] WorldBegin LightSource “ambientlight” 1 “intensity” [0.2] “lightcolor” [1 1 1] LightSource “spotlight” 2 “intensity” [3] “from” [-1 1 0] “to” [0 0 3] Translate 0 0 3 Color [1 1 0] Sphere 1 -1 1 360 WorldEnd
Kemudian render file test1.rib di atas dengan perintah: ~$ aqsis test1.rib
Setelah beberapa saat aqsis me-render file tersebut, Anda akan mendapatkan hasil seperti pada Gambar 1. Kecepatan me-render sebuah scene tergantung kecepatan Processor dan memory komputer Anda. Penjelasan umum file RIB di atas (test1. rib) adalah sebagai berikut: Perintah Display untuk mendefinisikan nama format file yang akan dihasilkan. Perintah Format untuk memberikan resolusi image yang dihasilkan. Projection adalah untuk mendefinisikan proyeksi Camera dalam scene. Blok WorldBegin untuk memulai deskripsi scene dalam bentuk single image dan diakhiri dengan WorldEnd.
INFOLINUX 10/2004
61
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Renderman
Gambar 3. Hasil rendering test2.
Definisi Color untuk setting warna dari geometric primitives. Parameter warna menggunakan array yang bernilai floating point atau angka pecahan yang secara berurut memberikan warna Red, Green, dan Blue yang merupakan komponen dari warna. Perintah LightSource untuk membuat sumber cahaya. Perintah Sphere untuk membuat objek Bola dalam bentuk bola penuh ataupun tidak. Secara umum struktur blok file RIB adalah seperti Gambar 2. Dapat dilihat dari struktur blok file RIB, bahwa Opsi Global hanya didefinisikan sekali dalam File RIB. Sedangkan bila ingin membuat animasi, tentu file animasi tersebut terdiri dari frame sequence yang berurutan, blok Frame mendefinisikan jumlah frame yang akan dihasilkan dari rendering nantinya. Di dalam blok frame anda dapat menempatkan definisi umum mengenai file apa saja yang akan dihasilkan, warna apa yang akan diterapkan pada objek, dan sebagainya, opsi camera dapat juga diterapkan di sini sebelum World block. Dalam tiap-tiap blok frame dapat memiliki world blok lebih dari satu, dan di dalam world block ini Anda mendefinisikan attribute, lights, dan objek yang akan hasilkan. Baiklah sekarang mari kita coba mengganti beberapa opsi pada file test1.rib yang telah dibuat. pada opsi Color [red green blue] coba ganti nilainya dengan Color [1 0 0] dan coba simpan file tersebut, kemudian render dengan perintah aqsis test1.rib. Ooppss...objek bola tersebut menjadi warna merah terang, bukan? Apabila dirasa image yang dihasilkan terlalu besar, Anda dapat sedikit mem-
62
INFOLINUX 10/2004
perkecil resolusi scene dengan mengubah pada baris Format x_resolution y_resolution pixelaspectratio dengan nilai Format 300 300 1. Nilai terakhir pada baris Format adalah mendefinisikan Pixel aspect ratio pada kebanyakan monitor komputer, nilai ini adalah 1 dan 0.9 untuk layar televisi. Bila Anda sudah banyak berkecimpung di dunia pemrograman komputer, tentu saja pemrograman renderman ini cukuplah mudah dimengerti, dan bisa Anda bayangkan bagaimana bila ingin membuat seratus buah objek Sphere. Pasti Anda berpikir untuk melakukan action copy dan paste sebanyak seratus kali, bukan? Karena Pixar sendiri sudah memikirkan hal ini, agar lebih memudahkan Anda untuk melakukan hal-hal yang extrem seperti yang telah dijelaskan sebelumnya, renderman dapat dibinding dengan bahasa C. Jadi bila ingin membuat 100 buah objek Sphere yang sama, Anda tinggal menggunakan fungsi for () atau while () pada bahasa pemrograman C. Mengenai binding dengan bahasa C, di sini penulis tidak akan mengulasnya terlebih dahulu, karena pengetahuan dasar merupakan lebih utama. Lebih jelas mengenai penggunaan Renderman ini, baik yang dibinding dengan C atau tidak, dapat Anda baca pada RiSpech 3.2 dan bisa didownload di http://www.renderman.org/.
memindahkan objek pada posisi X sejauh 0, Y sejauh 0 dan Z sejauh 3 menjauhi layar. Untuk memindahkan kelompok dari objek, dapat digunakan perintah TransformBegin dan TransformEnd. Jadi apabila di dalam blok Transform didefinisikan perintah Translate, maka semua objek di dalam blok Transform juga dipindahkan sejauh yang dituliskan dengan perintah Translate tersebut. Apabila blok Transform telah berakhir, maka posisi kembali pada saat awal sebelum blok Transform didefinisikan. Perhatikan contoh berikut dan simpan dengan nama test2.rib. #test2.rib - tanda pagar adalah komentar Display “test2.tif” “framebuffer” “rgba” Format 450 300 1 Projection “perspective” “fov” [40] Translate 0.5 0 0 WorldBegin Translate 0 0 3 TransformBegin Translate -1 0 0 Sphere 1 -1 1 360 TransformEnd Color [1 0 0] Sphere 1 -1 1 360 WorldEnd
Posisi objek Pada scene, terdapat suatu koordinat yang didefinisikan dengan sumbu X, Y, dan Z, di mana untuk mempermudahnya kita dapat menggunakan kaidah tangan kiri sebagai patokan arah masing-masing sumbu. Nilai positif X berada di sebelah kanan, nilai positif Y mengarah ke atas dan Z menjauh dari layar. Perintah Translate 0 0 3 berarti
Gambar 4. Hasil rendering objek primitives.
www.infolinux.web.id
Render file tersebut dengan perintah ~$aqsis test2.rib. Hasil render akan terlihat dua buah bola yang saling overlap, namun yang satu berwarna merah (Gambar 3.). Dapat dijelaskan bahwa seluruh koordinat akan digeser 0.5 searah sumbu X, saat memasuki Blok WorldBegin. Kemudian seluruh objek akan dipindah sejauh 3 searah
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL Renderman
sumbu Z, lalu pada saat memasuki blok TransformBegin objek akan dipindah sejauh -1 searah sumbu X. Objek bola dibuat pada posisi terakhir tersebut. Setelah blok TransformBegin berakhir pada perintah TransformEnd, maka seluruh obyek akan kembali ke posisi Translate 0 0 3. Tidak lagi mereferensi letak terakhir pada Translate -1 0 0, karena telah dijelaskan di atas bahwa TransformBegin untuk mengelompokkan objek yang akan dipindahkan secara bersama. Coba saja untuk membuang perintah TransformBegin dan TransformEnd saja dan render kembali, hasilnya kedua bola tersebut akan tampak menjadi satu. Pada intinya, dalam file RIB sebelum objek di layar dibuat, maka seluruh atributnya perlu didefinisikan terlebih dahulu. Misal, perintah Color [1 0 0] di atas dipanggil terlebih dahulu sebelum objek bola ditampilkan. Sekali lagi, Anda coba untuk membalik posisi Color dan Sphere, dan lihat hasil akhir setelah di-render. Perintah yang berkaitan dengan Transform objek adalah: Scalex y z (contoh. Scale 0.5 0.5 0.5) Rotatesudut x y z (contoh. Rotate 30 0 1 0)
Cylinder radius z_min z_max sweep
Perintah Cylinder memang sama dengan Sphere karena Cylinder juga memiliki pusat pada koordinat x=0, y=0 dan z=0. Jadi tinggi Cylinder tergantung pada nilai z_min dan z_max. Torus major_rad min_rad phi_min phi_max sweep
Marilah kita coba ketik baris program di bawah dan simpan dengan nama file obyek_ primitives.rib. Setelah di-render, Anda akan mendapatkan hasilnya seperti Gambar 4. Display “obyek_primitives.tif” “framebuffer” “rgba” Projection “perspective” “fov” [30] Format 600 300 1 Translate 0 0 4 WorldBegin TransformBegin Translate -1.5 -0.5 0 Rotate -90 1 0 0
Color [1 0 0] Cone 1.5 0.5 360 TransformEnd TransformBegin Translate 0 0 0 Color [0 1 0] Sphere 0.75 -0.75 0.75 360 TransformEnd TransformBegin Translate 1.5 0 0 Rotate -90 1 0 0 Color [0 0 1] Cylinder 0.5 -0.75 0.75 360 TransformEnd WorldEnd
Dalam artikel lanjutan di edisi depan, kita akan membahas atribut-atribut seperti opacity dan color, serta efek pencahayaan. Pada bagian dua tersebut kita juga mengulas utiliti renderman, yaitu Cutter untuk mengedit file RIB dan SL, serta RIB Converter untuk mengubah scene yang dihasilkan Blender atau Maya menjadi file RIB agar dapat di-render dengan renderman. Teddy Widhi L. (
[email protected])
Objek Primitives Objek primitives adalah objek dasar yang sering digunakan pada scene, misalnya Sphere, Cone, Torus, dan Cylinder. Pendefinisian masing-masing objek tersebut dalam file RIB adalah sebagai berikut: Sphere radius z_min z_max sweep
z_min dan z_max adalah panjangnya bidang searah sumbu Z. Jadi bila Anda mendefinisikan nilai z_min dan z_max berbeda maka Anda akan menghasilkan bentuk bola yang terpotong pada bagian atas dan bawah. Untuk sweep adalah nilai putaran dari sudut bola atau Sphere, apabila ingin membentuk obyek Sphere penuh maka nilai yang diberikan adalah 360 derajat. Cone height radius sweep
Cone adalah objek kerucut. Dari sintak di atas dapat diketahui bahwa dalam pendefinisian objek Cone, tinggi dan radius objek tersebut harus diberikan nilai. Begitu juga sweep yang berfungsi sama dengan sweep pada objek sphere.
www.infolinux.web.id
INFOLINUX 10/2004
63
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
3D
Berpindah-pindah Virtual Desktop dengan Tampilan 3D Berpindah-pindah virtual desktop tidak lagi hanya mengklik pilihan desktop yang ada di bar menu, tetapi Anda bisa pindah virtual desktop dengan tampilan manis berbentuk tiga dimensi.
B
agi Anda yang pemula mungkin kurang paham dengan maksud judul di atas. Apaan sih maksudnya berpindah-pindah virtual desktop? Ganti tampilan desktop maksudnya? Atau ganti wallpaper? Dan mungkin banyak pertanyaan lain, tapi tenang saja. Semuanya akan dibahas. Ketika Anda sudah di tampilan X Window Linux, misalnya KDE, Anda akan melihat kotak-kotak dengan angka-angka di tengah-tengahnya (lihat gambar 1). Kotakkotak itulah pilihan-pilihan virtual dekstop Anda. Anda bisa memilih virtual desktop yang mana saja, dari 1 sampai 4, dan apabila ini masih kurang banyak, Anda bisa menambahnya hingga 8 virtual desktop atau lebih! Fitur virtual desktop ini tidak akan Anda temui pada Windows, produk dari Microsoft.
Apa sih virtual desktop? Tapi, apa sebenarnya fungsi virtual desktop ini? Penjelasan sederhananya, misalnya Anda sedang mengerjakan tugas dengan OpenOffice Writer disertai OpenOffice Calc untuk membuat grafik, selain itu Anda juga mendengarkan musik dengan XMMS, memainkan game-game kecil Linux, serta melakukan browsing Internet dengan Mozilla. Kalau semua itu Anda lakukan pada satu desktop, maka akan banyak sekali pilihan aplikasi yang sedang berjalan pada taskbar Anda! Tidakkah Anda merasa pusing? Para developer desktop Linux sudah memikirkan hal ini sejak dahulu, oleh karena ini dibuat pilihan untuk pindah virtual desktop. Sehingga aplikasi-aplikasi yang Anda kerjakan tadi bisa dipisah-pisahkan. Misalnya aplika-
64
INFOLINUX 10/2004
si OpenOffice Writer dan Calc dikerjakan pada virtual desktop 1, browsing Internet dikerjakan pada virtual desktop 2, memainkan aplikasi game di virtual desktop 3, dan aplikasi XMMS pada virtual desktop 4. Dan walaupun Anda memainkan XMMS di virtual desktop 4, saat Anda kembali ke virtual desktop 1 untuk mengetikkan tugas, suara musik tidak akan hilang sehingga Anda masih tetap terhibur, dan apabila butuh refreshing sebentar dari kerjaan mengetik tugas, Anda tinggal ke virtual desktop 3 untuk bermain game. Asyik sekali, bukan? Anda tidak bingung lagi dengan banyak pilihan aplikasi yang sedang berjalan pada taskbar Anda.
xorg-x11-devel jika Anda menggunakan distro Fedora Core 2. Selain itu, agar 3d-Desktop dapat berjalan pada X Window KDE, maka kde-libs-devel juga harus terinstal. Maka pastikan pada Linux Anda programprogram tersebut harus sudah terinstalasi. Bagaimana cara mengetahuinya? Buka aplikasi terminal dari X Window, kemudian jalankan perintah, $ rpm -qa | grep devel
kemudian perhatikan keluarannya (contoh pada gambar 2), apakah program-program tersebut termasuk dalam daftar keluaran. Jika salah satu atau keduanya ada pada keluaran berarti sudah terinstalasi, jika belum
Persiapan Kalau tadi Anda berpindah-pindah virtual desktop dengan mengklik kotak-kotak pilihan virtual dekstop, sekarang akan diperlihatkan Anda berpindah-pindah virtual desktop dengan tampilan tiga dimensi. Sebelumnya, ada beberapa hal yang harus dipersiapkan. Pastikan video card Anda memiliki hardware accelerator. Selanjutnya, Anda harus menginstalasi driver video card Anda agar fitur 3D dapat berfungsi di Linux. Driver untuk video card dari nVidia dan ATI dapat ditemui pada CD InfoLINUX. Jika driver video card sudah terinstalasi pada sistem Linux Anda dan berfungsi dengan baik, maka saatnya untuk menginstalasi program untuk berpindah-pindah virtual desktop dengan tiga dimensi. Program yang digunakan adalah 3d-Desktop ciptaan Brad Watson. Program ini membutuhkan dependency program imlib2-devel dan XFree86-devel jika Anda menggunakan distro Mandrake, SUSE, dan Red Hat atau
www.infolinux.web.id
Gambar 1. Kotak-kotak pilihan virtual dekstop.
Gambar 2. Hasil keluaran perintah ‘rpm -qa | grep devel’.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
3D
Gambar 3. Hasil keluaran jika imlib2-devel berhasil terinstalasi.
Gambar 4. Hasil keluaran mengekstrak file 3ddesktop-0.2.7.tar.gz.
Anda harus menginstalasi program tersebut agar program 3d-Desktop bisa terinstalasi. Program XFree86-devel atau xorg-x11devel biasanya sudah terinstalasi secara default, tapi jika ternyata belum, Anda dapat menginstalasinya dari CD instalasi distro Linux Anda, demikian juga dengan program kde-libs-devel. Untuk program imlib2-devel, Anda dapat memperolehnya di dalam CD InfoLINUX di dalam direktori ‘PENTING/imlib2-1.1.0’. Langkah-langkah untuk menginstalasinya: Pertama, ubah status user anda menjadi superuser,
Pertama, ekstraklah file tarball ke direktori yang Anda inginkan (pada contoh di ekstrak ke direktori ‘/home/dummy’),
$ su
masukkan password root. Instalasi program tersebut dengan perintah, # rpm -Uvh imlib2-devel-1.1.01.i386.rpm imlib2-1.1.0-1.i386. rpm imlib2-loader_jpeg-1.1.01.i386.rpm imlib2-loader_png1.1.0-1.i386.rpm imlib2-loader_ argb-1.1.0-1.i386.rpm
# tar xzvf 3ddesktop-0.2.7.tar. gz -C /home/dummy/
Kedua, masuklah ke direktori tempat ekstrak barusan, # cd /home/dummy/3ddesktop0.2.7/
Ketiga, jalankan perintah instalasi, # ./configure # make # make install
Akhirnya kita selesai menginstalasi program 3d-Desktop. Anda dapat mencobanya dengan menjalankan perintah: $ 3ddesk
Gambar 5. Hasil keluaran instalasi.
update dan tidak kosong, Anda harus menjalankan perintah:
Menginstalasi 3d-Desktop
dengan menggunakan klik kanan dan klik kiri untuk memutar pilihan vitual dekstop dan klik tengah atau klik kanan dan kiri sekaligus untuk memilih, atau jika mouse Anda dilengkapi dengan scroll akan lebih mudah lagi, karena Anda tinggal memutar scroll Anda untuk memutar pilihan virtual desktop dan klik scroll untuk memilih. Mudah sekali, bukan? Agar tampilan gambar masing-masing virtual desktop pada 3d-Desktop selalu
Untuk lebih menarik lagi, ganti jumlah virtual desktop Anda menjadi lebih banyak, sehingga tampilan program 3d-Desktop menjadi lebih ramai. Buatkan shortcut program ini di X Window Anda, agar memudahkan untuk menjalankan program 3d-Desktop ini. Selamat mencoba! Wiryadi (
[email protected])
Sekarang saatnya untuk menginstalasi program 3d-Desktop. Untuk Anda yang memakai video card dari nVIDIA dan menggunakan distro SUSE 9.1 dan Red Hat 9 serta menggunakan desktop Gnome, Anda bisa menginstalasinya langsung dari paket rpm yang ada di dalam CD InfoLINUX. Untuk yang lain, jangan sedih, penulis akan memandu Anda menginstalasi dengan menggunakan paket tarball yang juga disediakan di dalam CD InfoLINUX.
Gambar 6. Tampilan program 3d-Desktop.
Gambar 7. Tampilan 3d-Desktop dengan lebih banyak virtual desktop.
apabila tidak terdapat masalah, berarti Anda sudah selesai menginstalasi program imlib2-devel (contohnya bisa dilihat pada gambar 3).
www.infolinux.web.id
$ 3ddesk --acquire
INFOLINUX 10/2004
65
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Konqueror
Mengenal Konqueror Lebih Lanjut Konqueror adalah aplikasi yang cukup kompleks. Artikel ini akan membahas beberapa pengenalan lebih lanjut dengan Konqueror.
S
alah satu daya tarik Windows adalah Windows Explorer-nya. Program file manager tersebut dapat berubah bak bunglon menjadi web browser. Bisa pula berubah menjadi picture viewer dan lain sebagainya. Boleh dikatakan, aplikasi tersebut sangatlah serba guna. Bahkan, Windows Explorer adalah core dari desktop Windows. Pengguna Windows yang mencoba-coba Linux di era tahun 2000 yang lalu pasti akan mencemooh file manager di Linux. Memang ada MC, tapi masalahnya adalah, tidak ada Windows Explorer. Karena, banyak pengguna yang mengharuskan adanya Windows Explorer. File manager yang ada saat itu tidaklah terlalu bisa membanggakan. Kalaupun ada, mungkin terlalu sederhana atau lambatnya luar biasa. Tahun 2000 yang lalu, Konqueror mungkin termasuk salah satu file manager yang dicemooh, karena baru berusia begitu muda dan belum matang. Namun hari ini, bicara sejujur-jujurnya, Konqueror, menurut penulis, bahkan telah mengalahkan Windows Explorer. Apabila Windows Explorer dapat dijalankan dengan cepat, begitu pula konqueror. Apabila Windows Explorer bisa berubah-ubah dari file manager ke web browser, dan lain sebagainya, begitupun juga Konqueror, bahkan lebih mengesankan. Sebagai file manager, Konqueror juga canggih dan dapat melakukan apa yang dilakukan oleh Windows Explorer. Tampilan tree view milik Konqueror pun terlihat begitu menarik. Bahkan, sebagai file manager, Konqueror sangat luar biasa dalam melakukan preview. Sistem caching untuk preview juga begitu cakap sehingga waktu preview dapat ditekan seminimal mungkin. Dan, dengan IO Slave milik KDE yang luar biasa, Konqueror menjadi lebih sempurna. Kian hari, kian sempurna. Apalagi jika menggunakan KDE 3.2 di kernel 2.6.x. IO Slave yang digunakan di KDE adalah IO
66
INFOLINUX 10/2004
Slave yang asinkron dan transparan terhadap jaringan. Pada akhir artikel, sebuah contoh penggunaan IO slave untuk ssh akan diberikan. Sebenarnya, Anda bisa memanfaatkan IO slave ini untuk kepentingan apa saja. Mulai dari penanganan arsip file lokal sampai web DAV. Semuanya komplit. Pendek kata, Konqueror adalah software yang sungguh luar biasa. Dengan menggunakan Konqueror, pengguna Linux bisa
mengambil banyak keuntungan untuk menjadi lebih produktif.
Shortcut Menggunakan mouse memang mempermudah banyak hal. Namun, penggunaan mouse juga memiliki kekurangan, salah satunya adalah tidak terlalu fleksibel. Untuk itu, kita masih bisa menggunakan shortcut. Konqueror menyediakan berbagai shortcut, yang beberapa di antaranya sudah sangat
Tabel 1. Beberapa shortcut yang berguna.
Shortcut
Deskripsi
CTRL-T atau CTRL-SHIFT-N CTRL-W CTRL-D CTRL-Q CTRL-O
Membuka tab baru. Menggunakan tab ketika berselancar di Internet akan membuat desktop terlihat lebih rapi. Menutup tab aktif. Menduplikasi window aktif. Keluar dari Konqueror. Menampilkan inputbox untuk lokasi yang diinginkan. Anda juga bisa menekan ALT-O untuk menuju ke location bar dan mengetikkan alamatnya langsung di sana. Anda juga bisa menekan F6 apabila diinginkan. Memilih file berdasarkan kriteria tertentu. Fasilitas ini umumnya kita dapatkan di Midnight Commander. Sangat berguna dalam pemilihan banyak file sekaligus. Deselect file berdasarkan kriteria tertentu. Pasangan untuk CTRL-+. Membalik pilihan. Yang terpilih menjadi tidak terpilih dan sebaliknya. Mengubah nama file. Meng-copy file terpilih. Kembali ke home URL. Kembali ke URL sebelumnya. Menuju ke URL setelahnya. Kembali ke direktori orang tua. Mem-bookmark URL aktif Membuka Konsole untuk direktori aktif di Konqueror. Menjalankan perintah shell. Perintah ini hanya berguna untuk perintah sekali jalan (command line), seperti ls, cp, cat dan lain sebagainya. Tidak berguna untuk program dengan user interface canggih (TUI) seperti mc, vi, dan lain sebagainya. Menampilkan menu bar (toggle). Menampilkan dalam modus full screen. Sangat berguna ketika berselancar di Internet. Membagi area kerja menjadi dua bagian kanan dan kiri. Sangat mirip dengan Midnight Commander. Menutup area kerja aktif (yang dibuka dengan CTRL-SHIFT-L). Mendetach tab aktif. Membuat direktori baru.
CTRL-+ CTRL-CTRL-* F2 F7 CTRL-HOME ALT-PANAH KIRI ALT-PANAH KANAN ALT-UP ALT-B F4 CTRL-E
CTRL-M CTRL-SHIFT-F CTRL-SHIFT-L CTRL-SHIFT-R CTRL-SHIFT-B F10
www.infolinux.web.id
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL Konqueror
Konqueror ala MC.
umum. Beberapa shortcut yang berguna dapat Anda lihat pada Tabel 1.
View mode Ketika bekerja dengan banyak file sekaligus, view mode sangat menentukan kenyamanan penggunaan. Ada kalanya, kita lebih senang dengan tampilan yang besar-besar lengkap dengan preview-nya atau lebih senang dengan tampilan kecil-kecil yang detil. Konqueror bahkan dapat dimiripkan dengan mc apabila Ada menginginkannya. Berikut adalah beberapa contoh pemanfaatan view mode. Sebagai catatan, view mode dapat diubah dari menu View|View mode. Icon view. Sangat berguna untuk file yang sedikit dan membutuhkan preview yang jelas. Tidak bisa diandalkan ketika ingin melihat detil file langsung. Detail file bisa didapatkan dengan mengarahkan mouse di icon yang diinginkan. Multicolumn view. Masih menampilkan dalam bentuk icon-icon, namun dalam beberapa kolom. Kompromi yang cukup baik untuk melihat banyak file dalam bentuk icon. Detail file tidak dapat diamati langsung. Tree view. Apabila Anda termasuk orang yang menyukai segala sesuatu dapat terlihat atau terkontrol, mungkin view mode ini cocok bagi Anda. Segala file ditampilkan dalam tree, lengkap dengan segala informasi detail file. Segala sesuatu dalam kontrol. Info List View. Mirip dengan tampilan keluaran program ls. Apabila Anda begitu menyukai ls, mode ini mungkin cocok.
Menggunakan tab di Konqueror.
Detailed List view. Mirip dengan tampilan mc. Digabungkan dengan CTRLSHIFT-L dan jadilah Konqueror sebagai mc. Sangat menyenangkan apabila Anda adalah big fan dari mc. Text view. Ada-ada saja pengembang Konqueror. Tampilannya sangat mirip ketika Anda mem-browse file di web yang ditampilkan oleh Apache. Mirip pula dengan detailed list view. FSViewPart. Ini benar-benar menunjukkan kemampuan tim KDE dalam mengelola file. Dapat menampilkan file-file dalam bentuk kapling-kapling. Lambat namun mengesankan. Tidak disarankan ketika sedang bekerja.
Preview Konqueror dapat mem-preview sangat banyak tipe file sehingga Anda tidak perlu membuka aplikasi tertentu apabila hanya ingin menampilkan file tertentu. Namun, bagi Anda yang tidak memiliki komputer cukup cepat atau Anda yang tidak menyukainya, Anda bisa menonaktifkannya di menu View|Preview|Show Previews. Anda juga bisa meminta Konqueror untuk hanya menampilkan preview untuk beberapa tipe file tertentu. Atur saja semuanya di View|Preview tersebut.
Tool berguna Konqueror bukanlah sekadar file manager atau web browser biasa. Ketika berfungsi sebagai file manager misalnya, Konqueror adalah file manager luar biasa. Dengan dukungan KDE IO Slave yang luar biasa,
www.infolinux.web.id
Anda dapat masuk ke dalam arsip bzip2, gzip, zip. Anda juga bisa melakukan navigasi file dalam protokol SSH ke komputer lain. Cobalah untuk menggunakan alamat fish:// ke komputer Anda sendiri (misalnya fish://192.168.0.1:/home/nop/) yang telah menyalakan servis SSH. Contoh lain pemanfaatan IO slave adalah ketika Anda ingin meng-copy-kan file dari host B ke host C, padahal Anda sedang berada pada host A. Cukup aktif di host B dengan fish ataupun implementasi protokol lainnya. Buka tab atau window baru, kemudian aktiflah di host C pada tab atau window baru tersebut. Anda bisa segera mulai mengopikan antar window. Click and drag juga bisa dimanfaatkan. Luar biasa sekali, bukan? Saat ini, belasan atau bahkan puluhan Io slave tersedia. Dan hari demi hari, akan terus bertambah. Selain itu, Konqueror bahkan dilengkapi dengan spell check. Anda bisa memanfaatkannya ketika sedang menggunakan web mail misalnya. Contoh lain yang sangat berguna adalah fasilitas untuk membuat Image Gallery dengan Konqueror. Tool yang satu ini sangat berguna bagi Anda yang ingin mem-publish kumpulan gambar Anda ke internet dengan cara yang sangat mudah dan nyaman. Di edisi-edisi berikutnya, kita akan membahas tutorial penggunaan tool ini. Apa yang kita bahas kali ini hanyalah sedikit dari kemampuan Konqueror. Software yang satu ini, adalah karya besar komunitas KDE yang pantas mendapatkan penghargaan yang luar biasa. Salut kepada tim KDE! Noprianto (
[email protected])
INFOLINUX 10/2004
67
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Sistem
Sistem yang Bersih Setelah setiap hari digunakan dan diutak-utik, sistem bisa menjadi kotor. Penuh broken link, paket yang konflik dan lain sebagainya. Sistem yang kotor tersebut, harus kita bersihkan agar tetap prima.
K
omputer adalah seperti manusia. Butuh mandi. Tentu saja kita tidak bisa membayangkan bagaimana kalau tidak mandi selama satu bulan. Setiap hari beraktivitas, dan menjadikan kita keringatan. Terkadang ada makanan tumpah di baju ketika ceroboh pada saat makan. Bisa dibayangkan bagaimana kita bisa tampil prima ketika satu bulan ke depan kita tidak juga membersihkan badan. Sama juga dengan komputer. Setiap hari kita bekerja dengan komputer. Kita mungkin meninggalkan banyak sampah sistem seperti file temporary yang tidak dihapus oleh programnya. Ada kalanya kita menginstal program, dan membiarkan terkatung-katung tersebar di berbagai direktori sistem. Pada sistem berbasis RPM (Red Hat/Fedora dan SUSE misalnya), kita mungkin pernah menginstal paket dengan opsi –force, yang mungkin menyebabkan inkonsistensi paket sistem, dan lain sebagainya. Hal-hal lain juga bisa mengotori sistem. Terkadang kita membuat variabel sistem/ shell tertentu, dan menjalankannya setiap kali login, namun tidak pernah ingat untuk melakukan unset variabel tersebut. Atau, kita mungkin menyimpan data kita secara tersebar dan karena sudah terlalu kacau, maka tidak berani sama sekali menghapus salah satu file di suatu partisi atau direktori karena takut ada data penting yang akan terhapus. Gambar-gambar yang kita download pun tersebar di mana-mana dan kita menjadi tak berdaya untuk membereskannya. Setiap hari merasa tak berdaya, dan hal tersebut dijalankan dalam waktu yang lama. Niscaya, sistem kita dapat menjadi kotor sekali. Cara yang termudah tentu saja instal ulang. Tapi, hal tersebut bisa dilakukan apabila kita telah mengorganisasi data secara baik. Selain
68
INFOLINUX 10/2004
itu, instal ulang tidak akan melatih kita untuk menjaga sistem. Dan yang penting, instal ulang bukan selalu merupakan solusi yang tepat. Sama seperti membeli server branded padahal tidak membutuhkannya. Kalau sistem bisa ngomong, mungkin kita tidak akan berani mendengar keluhannya. Bisa-bisa terlalu banyak. Apabila sistem Anda kacau berantakan, mari bersama-sama untuk membereskannya. Bersama-sama membahas cara memperlakukan sistem agar tetap bersih. Agar sistem dapat kembali tampil prima, seprima manusia yang baru mandi ketika tidak mandi selama satu bulan.
Paket yang konflik Dengan ribuan program yang tersebar di dunia free software, bukan salah kita apabila kita selalu tergoda untuk menginstal program-program baru. Apalagi ketika sang developer menjadi sangat aktif untuk menghasilkan aplikasi kelas satu. Syukur apabila maintainer atau developer-nya memaketkan software yang mereka buat ke dalam paket yang bisa diterima distro kita. Kita bisa dengan mudah mengambil dan kemudian menginstalnya. Di satu sisi, hal ini membuat kita tidak perlu memaksakan instalasi dengan paket untuk distro lain misalnya. Atau mengompilasi sendiri dari source code yang menempatkan prefix default yang akan menjadikan banyak file tanpa induk tersebar di sistem. Atau bahkan dengan cara-cara lain yang lebih aneh lagi, misalnya dengan mengekstrak isi paket RPM, kemudian mencomot library dari distro lain dan kemudian membuat link file, yang akhirnya lupa dihapus sehingga menjadi broken link. Ada beberapa pendekatan yang bisa dilakukan agar sistem tetap bersih. Kita bagi dua besar menjadi sistem kuno dan sistem modern. Ini hanyalah istilah penulis.
www.infolinux.web.id
Pada sistem kuno, instalasi paket benarbenar hanya dilakukan apabila penting. Setiap kali melakukan instalasi paket, atau setiap jangka waktu tertentu, kita mencatat paket-paket apa saja yang sudah diinstal. Kalau perlu, instalasi dilakukan tidak secara system wide, namun dengan membuat sebuah root palsu dimana program eksperimental diinstal ke dalamnya. Sistem kuno ini berhati-hati dalam instalasi paket. Hanya menginstal paket untuk distro yang digunakan. Pantang dalam mencomot paket yang bukan untuk distronya. Pantang sekali melakukan konversi paket (dengan alien misalnya). Apabila kompilasi dari source code harus dilakukan, maka prefix harus diatur ke direktori root palsu tersebut (jangan ke /usr/local) dan instal semua file yang dibutuhkan dalam satu direktori. Apabila hal ini memicu banyak file yang berganda, biarkan saja. Yang penting, satu program beserta semua file pendukungnya dalam satu direktori. Tidak menyebar ke mana-mana. Apabila ingin dihapus, direktori yang bersangkutan tinggal dihapus saja. Sistem kuno sangat menolak instalasi hibrid. Mencomot satu hal dari sistem lain, dan mencomot hal lain dari sistem lain. Pada hakikatnya, sistem kuno ini berusaha sebisa mungkin melakukan kompromi terbaik di satu sistem. Audit akan dilakukan secara berkala untuk memastikan tidak ada paket yang konflik atau broken (pada SUSE, apabila ada paket yang bermasalah, pada saat menjalankan YaST untuk instalasi program, sebuah pesan akan ditampilkan, lengkap dengan informasi paketnya). Kelemahan dari sistem ini adalah sangat membutuhkan orang yang rajin untuk mengawasi sistem. Atau, sangat membutuhkan perhatian. Namun, cara ini cocok digunakan apabila Anda termasuk orang yang senang sistem yang sederhana, yang konservatif, dan terjaga penuh oleh Anda.
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Sistem
Sistem modern lain lagi. Dan biasanya, sistem ini membutuhkan pengorbanan. Umumnya, di sistem ini, pengguna menginstal satu sistem yang benar-benar bersih, kemudian menggunakan cara lain dalam menginstal program. Ada yang menggunakan VMWare untuk menginstal distro di atas distro yang berjalan, kemudian mengizinkan untuk saling mengakses file sistem. Sistem ini banyak kekurangan, walaupun ada yang melakukannya. Ada yang menggunakan User Mode Linux. Cara ini dipertimbangkan sebagai cara yang modern dan canggih, dengan pengorbanan tidak sebesar penggunaan VMWare. Pada penggunaan UML, semuanya dilakukan dalam image. Kali pertama, image master yang bersih dibuat. Kemudian image lain dibuat berdasarkan image master ini. Apabila suatu image menjadi kotor, maka image baru tinggal dibuat dari image master. Dan hebatnya, sistem ini memungkinkan adanya sistem multi distro. Pada hakikatnya, sistem modern tidak mengizinkan adanya sentuhan pada sistem dasar. Semua perubahan dilakukan pada sistem di atasnya. Cara yang satu ini setidaknya memiliki satu kekurangan, yaitu resource yang dibutuhkan lebih besar. Lebih rakus. Seiring dengan perkembangan zaman, sistem modern yang satu ini lebih banyak dilirik daripada sistem kuno. Perhatikan sistem yang ingin Anda ikuti. Anda bisa mengawinkan kedua sistem tersebut. Yang penting, kontrol mengontrol paket sistem tidak memakan terlalu banyak waktu Anda. Apabila bisa diotomatisasi dengan script, lakukanlah. Selalu jaga sistem agar tetap bersih. Masalah dependency adalah masalah yang menyebalkan. Jangan biarkan ini terjadi pada Anda.
Permasalahan /tmp Direktori /tmp adalah direktori paling baik hati di sistem Linux. Proses mana saja yang ingin curhat, silahkan. Proses mana saja yang ingin meminjam space, silakan. Proses yang meminjam space lantas tidak mengembalikan space, juga silakan. Karena terlalu baik hati, maka /tmp seringkali menjadi korban. Coba periksa / tmp Anda dengan perintah berikut ini: du -sh /tmp
Apabila Anda hanya menjalankan KDE atau GNOME dan menggunakan komputer dalam pengertian penggunaan desktop, maka angka 1 atau 2 MB masih normal. Tapi kalau sudah di atas 2 MB, maka harus dipertanyakan. Distro Debian boleh mendapatkan acungan jempol dalam hal ini. Setiap kali booting, /tmp akan dibersihkan. Oleh karena itu, jangan coba-coba untuk menyimpan file sementara di /tmp dan melakukan rebooting, karena bisa dihapus. Distro lain memiliki mekanisme tersendiri. Namun, apabila Anda ingin cara barbar dalam membersihkan /tmp, lakukanlah langkah-langkah berikut ini: Tutup semua aplikasi. Reboot. Matikan sebanyak mungkin proses. Hapus semua isi /tmp. Reboot.
Penulis menyebut ini sebagai broken link syndrome. Walau tidak separah syndrome lainnya, hal ini cukup merepotkan sistem. Karena, walaupun tidak banyak memakan space banyak, symlink tetaplah sebuah file. Distro yang populer sekalipun, tidak terlepas dari masalah ini. Terkadang bukan sengaja ingin membuat symlink lantas tidak bertanggungjawab, namun mungkin karena lepas dari sistem QC. Penulis membuat sebuah script kecil yang dapat melaporkan symlink-symlink mana saja yang broken di sistem Anda. Pencarian bisa dilakukan secara rekursif. Berikut ini adalah isi script tersebut:
Apabila Anda membenci reboot, maka cukup tutup semua aplikasi dan matikan sebanyak mungkin proses, kemudian hapus isi di /tmp. Kenapa /tmp menjadi penting? Tidak ada sentimen negatif tertentu untuk direktori yang baik hati seperti /tmp. Yang menjadi permasalahan adalah kemungkinan DoS dengan memenuhi isi /tmp. Sebuah proses terkadang harus menulis ke /tmp. Dan bisa Anda bayangkan kalau /tmp menjadi penuh gara-gara ada proses nakal yang terus mengisi /tmp dengan file sampah? Untuk minimasi risiko, apabila mengelola server yang melayani banyak orang iseng, pastikan memisahkan /tmp pada partisi tersendiri.
[ $# -lt 1 ] && echo `basename $0` \
[-v] && exit 1 test ! -d $1 && echo “$1 is not a directory” && exit 2
Broken link Namanya mirip dengan broken home. Dan, akibatnya juga mirip-mirip. Terkadang, untuk memudahkan akses atau dengan alasan lainnya, beberapa proses membuat symlink. Pengguna pun terkadang menggunakan symlink untuk mempermudah akses file atau sekadar menjadikan suatu program tampak lebih umum. Masalahnya adalah ketika suatu proses atau pengguna tidak bertanggung jawab. Bisa Anda bayangkan kalau terdapat banyak link yang tidak mengacu kepada file manapun juga di sistem Anda?
www.infolinux.web.id
#!/bin/sh #find broken link on specified directory #(c) Noprianto, August 18 2004 #GPL
REPORT=REPORT echo “please wait...” echo “start scanning: `date`” > $REPORT echo “-- start of broken link in $1 --” >> $REPORT for link in `find $1 -type l 2>/dev/null` do test ! -z $2 && test $2 = -v && echo “scanning $link...” file $link 2>/dev/null | grep broken\ symbolic\ link\ to >> $REPORT done echo “-- end of broken link in $1 --” >> $REPORT echo “end scanning: `date`” >> $REPORT echo “COUNT: `cat $REPORT | grep broken\ symbolic\ link\ to | wc -l` broken links” >> $REPORT echo “done.”
INFOLINUX 10/2004
69
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Sistem
Berikut ini adalah contoh laporannya: start scanning: Wed Aug 18 23:23:15 WIT 2004 -- start of broken link in /opt/ kde3/ -/opt/kde3/share/doc/HTML/da/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/de/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/de/ digikam/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/de/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/es/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/es/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/et/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/et/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/fi/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/fr/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/fr/ digikam/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/fr/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/it/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/pt/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/ru/k3b/ common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/ru/ knights/common: broken symbolic link to `../common’ /opt/kde3/share/doc/HTML/sv/k3b/
70
INFOLINUX 10/2004
common: broken symbolic link to `../common’ -- end of broken link in /opt/ kde3/ -end scanning: Wed Aug 18 23:23:34 WIT 2004 COUNT: 17 broken links
Script tersebut dapat dijalankan dengan cara berikut: ./find-broken-link.sh [-v]
Apabila ditentukan, maka pemeriksaan akan dilakukan secara rekursif. Apabila -v diberikan, maka tampilan akan dibuat verbose. Isi laporan dalam file REPORT tersebut kemudian bisa di tampilkan dan dilewatkan ke program rm untuk dihapus. Dengan demikian, sistem Anda akan terbebas dari symlink yang kehilangan induk. Prinsip kerja program ini sebenarnya sederhana. Program akan mencari file dengan tipe symlink dan kemudian memeriksa file acuannya. Apabila tidak ditemukan, maka dianggap sebagai broken link. Program ini bekerja memanfaatkan program find dan file.
Home directory yang kacau balau Ini sedikit berbeda dengan rumah tangga yang kacau balau, walaupun bisa dimiripmiripkan. Hal ini bisa menimbulkan masalah yang serius. Periksalah file-file di dalam homedir Anda, dan periksa jugalah space yang dimakan oleh homedir Anda tersebut. Terkadang, Anda ingin mencoba program-program yang terinstal di sistem. Program-program tersebut lantas menyimpan konfigurasi di dalam homedir Anda dalam file atau direktori berawalan titik sehingga luput dari perintah ls. Apabila dibiarkan, homedir Anda akan menjadi begitu berantakan dan menjadikan rumah Anda tidak seru untuk ditinggali. Apabila Anda senang mencoba-coba program, lakukan trik berikut untuk menjaga agar homedir Anda tetap bersih walaupun Anda mencoba puluhan software setiap hari: Buat template yang bersih, lengkap dengan segala konfigurasi desktop. Apabila dirasa perlu, buat beberapa template.
www.infolinux.web.id
Cobalah setiap software yang Anda inginkan. Restore secara berkala dengan template yang paling Anda senangi. Jangan sampai suatu hari Anda menjadi bingung untuk membersihkan rumah Anda sendiri karena terlalu banyak file di dalamnya.
Variabel shell/sistem Dari ribuan free software yang bisa kita temukan, sebagian diantaranya dapat bertingkah laku berbeda apabila terdapat variabel shell yang diharapkan. Beberapa di antaranya bahkan dengan nakalnya mengubah ~/.profile dan menambahkan berbagai variabel shell sesuai keinginannya. Kenapa hal ini bisa menjadi masalah di masa depan? Perhatikan skenario berikut. Ada sebuah program yang kita sukai, namun program tersebut sudah cukup kuno. Ia membutuhkan pustaka-pustaka yang kuno. Dan untuk mendukung agar kebutuhannya terpenuhi, kita mengatur variabel LD_LIBRARY_PATH yang mengacu kepada lokasi pustaka yang dibutuhkan. Suatu saat, kita menginstal program baru yang secara kebetulan membutuhkan pustaka yang sama, hanya beda versi. Sayangnya, tidak ada pemeriksaan versi pustaka terlebih dahulu oleh program baru tersebut. Begitu ditemukan pustaka dengan nama yang diharapkan, pustaka kuno tersebut, langsung dibuka. Dan rupanya, hasilnya tidak sesuai harapan karena ada saja yang fungsi yang tidak ditemukan. Padahal, sebenarnya, pustaka versi barunya duduk manis di lokasi lain. Hal tersebut adalah bisa berujung pada debugging yang tidak perlu. Padahal, semua terjadi karena kita lupa membersihkan satu variabel saja. Selalu periksa ~/.profile atau /etc/profile untuk berbagai variabel buatan sendiri yang sebenarnya tidak diperlukan lagi.
Simpan data Anda! Ada pepatah yang mengatakan jangan simpan semua telur dalam satu keranjang. Namun, ada pepatah lain yang mengatakan sebaliknya. Simpan semua dalam satu keranjang agar kamu dapat mengawasinya dengan konsentrasi.
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
TUTORIAL Sistem
Apapun yang Anda anut, Anda perlu memperhatikan lokasi penyimpanan data Anda. Terutama kalau Anda termasuk orang yang senang kebersihan sistem. Atau, Anda senang menghancurkan sistem untuk kemudian melakukan instalasi ulang. Penulis selalu membiasakan untuk menyimpan semua data dalam partisi terpisah. Kalau terjadi apa-apa dengan sistem, risiko dapat diminimasi. Tentunya, back-up teratur juga harus dilakukan. Ada kalanya, penulis menyimpan data dalam format image ISO 9660, yang siap diburn ke CDROM. Terdengar aneh? Mungkin. Tapi, penulis senang dengan data yang tidak tersebar-sebar sehingga memudahkan back-up. Apabila disimpan dalam kompresi, penulis anggap merepotkan ketika ingin mengakses isinya karena butuh dekompresi yang memakan waktu dan space harddisk. Dengan menyimpannya dalam format image ISO 9660, selain tidak tersebar, dapat di-mount loopback dengan mudah dan cepat.
Untuk mount loopback sebuah image, berikan perintah berikut sebagai root: mount -o loop <MOUNT_ POINT>
Apapun cara yang Anda pilih, sekali lagi, jagalah data Anda.
Pastikan Anda memeriksa keamanan sistem dengan program yang terpercaya. Gunakan Intrusion Detection System yang andal, dan sesekali, apabila Anda sering menjalankan daemon eksperimental, jalankanlah port scanning dengan nmap.
Menjadi pengguna yang paranoid? Security Security adalah hal yang jelas membutuhkan banyak perhatian dari sisi manusia. Seaman-amannya sistem, apabila manusianya tidak memiliki pandangan yang tinggi soal keamanan—setidaknya peduli terhadap keamanan—maka keamanan sudah sekali untuk diwujudkan. Lantas, apa hubungannya dengan kebersihan sistem? Apabila Anda seorang admin jaringan atau developer, seberapa sering Anda menjalankan daemon yang eksperimental? Atau seberapa sering Anda membuka port tertentu untuk melakukan eksperimen? Kegiatan-kegiatan tersebut dapat memicu masalah lain yang lebih serius, jauh lebih serius dibanding sistem kotor.
www.infolinux.web.id
Menjadi orang yang serba takut tentu bukan hal yang membahagiakan. Sedikit tidak beres, lantas ketakutan. Sedikit kacau, bisabisa kalang kabut. Tulisan ini tidak bermaksud mempengaruhi Anda agar menjadi pengguna yang serba resik dan paranoid. Hanya, sistem yang lebih bersih akan menjadikan waktu maintenance lebih sedikit (cost cutting) dan Anda dapat mempercayakan sistem untuk melayani Anda tanpa harus memendam rasa khawatir. Dan, bukanlah sistem yang bersih akan mampu melayani Anda lebih prima? Demikian pembahasan kita soal sistem yang bersih. Terapkan sesuai cara yang Anda senangi untuk menjaga sistem Anda! Noprianto ([email protected])
INFOLINUX 10/2004
71
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Distro Minimalis
Membangun Sendiri Distro Minimalis Artikel ini menyajikan cara untuk membuat distro Linux seminimal mungkin. Minimal di sini berarti ukuran dan kemampuan distro sangat minim. Namun, distro ini dapat menjadi dasar bagi Anda yang berminat untuk mengembangkan embedded distro (misalnya distro untuk router).
U
ntuk membuat distro yang ukurannya sangat kecil ini, Anda dapat menggunakan partisi kosong harddisk Anda, atau harddisk komputer lama yang akan dibuat menjadi sistem embedded ataupun USB Flash Card Anda. PERINGATAN: jangan buat distro ini di partisi Linux Anda yang terpakai. Apapun media yang Anda pilih, pastikan motherboard Anda men-support booting dari media tersebut. Sedikit catatan tambahan, floppy disk mungkin tidak bisa digunakan (karena ukuran terkecil distro yang pernah penulis buat adalah 1,7 MB). Untuk membuat distro ini, penulis menggunakan dua buah komputer. Komputer pertama (host) digunakan untuk men-download source code, meng-compile dan menyusun distro. Komputer kedua (target) digunakan sebagai komputer aplikasi dan testing. Komputer target inilah yang nantinya berperan sebagai sistem embedded, setelah distro selesai dibangun. Komputer host penulis adalah AMD Athlon 1800XP dengan Mandrake 9.2, sedangkan untuk komputer target menggunakan Cyrix C3 800 MHz. Model host-target ini memudahkan penulis untuk melakukan compiling dan testing distro. Untuk media distro, penulis menggunakan SanDisk CardFlash 128 MB. CardFlash yang penulis gunakan dihubungkan ke komputer target dengan IDE-CF adapter. Dengan demikian, komputer target akan menganggap CardFlash ini sebagai harddisk (/dev/hda). Untuk menulis ke CardFlash, penulis menggunakan komputer host yang dilengkapi dengan 6-in-1 card reader adapter. 6-in-1 card reader di komputer host terhubung di SCSI pertama (/dev/sda).
74
INFOLINUX 10/2004
Sebelum proses pembuatan distro dimulai terlebih dahulu kita pelajari proses booting yang terjadi di Linux.
Proses Booting Linux BIOS (Basic Input Output System) Ketika komputer dinyalakan, komputer akan memanggil BIOS dari flash ROM motherboard. BIOS berisi program (routine) untuk menginisialisasi komputer dan menyediakan interface software-hardware melalui basic interrupt. Inisialisasi yang kali pertama dilakukan BIOS adalah POST (Power On Self Test). POST bertujuan untuk memastikan agar semua devais komputer berjalan dengan semestinya. Jika hasil POST baik, BIOS akan menjalankan rutin bootstrap loader. Bootstrap loader bertugas untuk me-load boot sector yang bootable ke alamat memory 0x7C00. Bootable boot sector adalah boot sector pertama devais yang ditandai dengan angka khusus 0xAA55 di byte ke-510 (0x1FE, dua byte terakhir dari sektor). Selain rutin untuk meload boot sector, bootstrap loader juga berisi tabel devais yang diperkirakan mempunyai boot sector. Oleh karena itu, bootstrap loader menentukan jenis devais mana yang dapat di-booting di komputer Anda.
kernel yang dapat digunakan untuk booting. Setelah itu, boot loader umumnya akan menanyakan pengguna sistem operasi (kernel) mana yang dikehendaki untuk dijalankan. Kernel sistem operasi yang dipilih oleh pengguna kemudian di-load ke memory.
Inisialisasi kernel Inisialisasi default Fungsi utama kernel adalah memanajemen sumber daya komputer. Pada kernel Linux, setelah kernel di-load ke memory, kernel akan menginisialisasi driver (yang di-compile built-in dalam kernel) dan struktur data internalnya (contohnya struktur data virtual memory). Kemudian, kernel akan mencari dan memount root filesistem dengan hak akses read-only. Root filesistem berisi programprogram utama sistem. Program /sbin/init (atau program lain yang didefinisikan di parameter kernel init=namaProgram) di root filesistem kemudian dijalankan oleh kernel.
Inisialisasi Alternatif
Boot Loader
Driver built-in kernel diperlukan agar kernel dapat mengakses hardware. Pada saat inisialisasi kernel, driver yang dibutuhkan kernel adalah driver jenis filesistem (contoh: ext2, ext3, raiserfs, vfat, dan seterusnya) dan driver untuk interface hardware (contoh: SCSI, IDE/ATA, USB). Jika jenis root filesistem
Bootable boot sector dapat berisi kernel image ataupun boot loader. Jika kernel image ditemukan di boot sector, kernel tersebut akan ditaruh di alamat 0x7C00 dan dijalankan. Proses booting akan berlanjut dengan inisialisasi kernel. Jika boot loader yang ditemukan, boot loader akan meload tabel sistem operasi/
Gambar 1. IDE-CF Adapter.
www.infolinux.web.id
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Distro Minimalis
adalah filesistem yang drivernya tidak builtin dalam kernel ataupun root filesistem terletak di media hardware yang driver-nya tidak built-in dalam kernel, kernel akan hang dan memunculkan pesan error: kernel panic : VFS : Unable to mount root fs at XX:YY. Untuk mengatasinya, driver filesistem dan interface hardware untuk root filesistem harus di-compile built-in kernel. Cara lainnya adalah dengan membuat sebuah root filesistem yang memuat semua driver yang dibutuhkan di dalam ramdisk. Ramdisk adalah RAM komputer yang diperlakukan seolah-olah sebuah filesistem oleh kernel. Kernel akan mengakses ramdisk melalui /dev/ramdisk. Metode ini umum dipergunakan untuk driver-driver yang tidak dapat di-compile built-in kernel (hanya dapat dikompile sebagai modul—umumnya driver yang proprietary atau source code-nya tidak diberikan). Root filesistem ini dikenal dengan nama initrd dan dibuat dengan software tool mkinitrd. Initrd umumnya bertipe cram fs (atau dapat juga bertipe ext2 atau ext3 yang dikompresi dengan gunzip). Jika initrd ditemukan, kernel akan memount initrd ke dalam RAM dengan hak akses read-only. Kernel kemudian memanfaatkan driver-driver yang terdapat di initrd untuk mencari dan memount root filesistem sesungguhnya. Kemudian, program /sbin/init (ataupun program lain yang didefinisikan di parameter kernel init=namaProgram) di root filesistem dijalankan oleh kernel.
SysVInit (/sbin/init) Init (/sbin/init) adalah program pertama yang secara default akan dijalankan oleh kernel. Tugas utama program ini adalah menginisialisasi sistem. Program init yang umum dipakai di UNIX/Linux adalah SysVInit. Selain SysVInit, banyak program lain yang menawarkan program init, contohnya BusyBox.
Loading Program init/SysVInit bergantung kepada fungsi-fungsi yang disediakan oleh library glibc. Langkah pertama yang dilakukan oleh program init adalah meminta kernel untuk meload library glibc ke memory. Library glibc umumnya terletak di /lib, dengan nama libc-versi.so
/etc/inittab Program init kemudian akan membaca file /etc/inittab. File ini berisi nama script yang harus dilaksanakan untuk inisialisasi sistem dan daftar nama script yang harus dilaksanakan untuk tiap runlevel. Script adalah file yang berisi kumpulan perintah yang akan dilaksanakan oleh shell. Runlevel adalah mode operasi Linux. Umumnya, terdapat enam runlevel Linux, yaitu: 0 : Halt 1 : Single-user 2 : Multi-user (Without NFS) 3 : Multi-user 4 : Unused 5 : Multi-user with graphical login 6 : Reboot Script inisialisasi sistem umumnya berisi perintah untuk me-mount seluruh filesistem yang ada di sistem (dengan menggunakan data yang tersimpan di /etc/fstab). Root filesistem yang semula di-mount read-only oleh kernel akan di-mount lagi sesuai keterangan di /etc/fstab. Selain itu, script inisialisasi juga mengaktifkan berbagai program daemon. Contohnya adalah klogd (kernel log daemon, untuk mencatat pesan error kernel) dan syslogd (system log daemon, untuk mencatat pesan error sistem).
Getty dan Login Setelah menjalankan script inisialisasi dan berbagai script inisialisasi runevel, init akan menjalankan program getty dengan mode respawn. Artinya, jika program ini mati, program ini akan dijalankan kembali oleh init. Getty digunakan untuk menampilkan pesan selamat datang di sistem (pesan yang ditampilkan berdasarkan file /etc/issue) dan mengambil input nama user dan password dari terminal. Input yang diterima getty kemudian diteruskan ke program login. Login kemudian memverifikasi nama user dan password. Jika valid, user akan masuk ke sistem dan menjalankan shell. Sampai di sini, Linux dapat digunakan secara normal.
Pembuatan distro minimalis Software yang dibutuhkan Untuk membuat distro minimalis ini, Anda membutuhkan source code BusyBox dan Linux kernel. BusyBox adalah paket yang dapat menyediakan semua kebutuhan dasar
www.infolinux.web.id
sistem Unix/Linux dengan sebuah file executable. Perintah-perintah seperti cat, echo, ls, chmod, su, dan sebagainya dapat digunakan dengan melakukan soft link perintah tersebut ke BusyBox.
Mempersiapkan media Harddisk Jika Anda telah memiliki sebuah harddisk atau partisi kosong, format dengan perintah berik ut: $ mke2fs /dev/hdb1 (sesuaikan dengan lokasi harddisk Anda)
Partisi Harddisk Jika mempunyai banyak space kosong di harddisk, Anda dapat menggunakannya untuk partisi baru. Gunakan program cfdisk ataupun fdisk (atau diskDrake jika Anda menggunakan Mandrake). Berhati-hatilah dengan program-program partisi ini. Backup data Anda sebelum Anda melakukan partisi harddisk Anda. Setelah Anda mempartisinya, format partisi baru tersebut: $ mke2fs /dev/hda6 (sesuaikan dengan nama partisi baru Anda).
USB Disk ataupun CardFlash Umumnya jenis disk ini telah diformat dengan tipe VFAT (untuk DOS/Windows). Agar dapat digunakan untuk Linux, format ulang ke ext2: $ mke2fs /dev/sda1 (sesuaikan dengan letak media Anda)
Bila ternyata USB disk / CardFlash belum diformat sama sekali (mke2fs akan menolak memformat USB disk / CardFlash ini), siapkan dulu USB disk/ CardFlash: $ dd if=/dev/zero of=/dev/sda bs=1k count=ukuran_CardFlash_ Anda,
Contoh : $ dd if=/dev/zero of=/dev/sda bs=1k count=128000
(128000 sebenarnya bukan angka yang tepat untuk 128MB, tetapi bukan masalah).
Membuat struktur direktori Linux mempunyai banyak direktori (/bin, /boot, /etc, /dev, dll). Tiap direktori ini
INFOLINUX 10/2004
75
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Distro Minimalis
mempunyai fungsi tersendiri (contohnya direktori /etc digunakan untuk menyimpan file-file konfigurasi). Fungsi direktori ini diatur oleh kebijakan pembuat distro. Bila Anda ingin mengetahui bagaimana contoh kebijakan penggunaan direktori ini, silahkan lihat ke http://www.debian.org/doc/debian-policy. Akan tetapi, struktur direktori linux / UNIX sebenarnya telah distandardisasi dengan FHS (File Hierarchy Structure). Kita akan mengikuti struktur FHS. Mount media yang Anda gunakan: $ mount -t ext2 /dev/sda1 /mnt/cf (sesuaikan dengan letak media Anda)
Petunjuk penulis: semakin banyak fungsi yang Anda tambahkan, semakin besar ukuran busybox. Program-program wajib yang harus Anda compile adalah init (support reading an inittab file), mount (support for a real /etc/mtab) , dan shell (ash / hush / lash / msh). Bila Anda memerlukan network, kompile juga ifconfig dan route (serta udhcpc --dhcp client-- ataupun udhcpd -dhcp server-- untuk koneksi dhcp). Setelah selesai menentukan fungsi yang Anda perlukan, kompile busybox tersebut: $ make
Setelah di-compile, instal dengan : $ make PREFIX=/direktori/ media/anda install
di /lib, jadi Anda tidak perlu membuat direktori /lib/i686.
Menginstal kernel Untuk menginstal kernel, Anda membutuhkan source code kernel (bisa Anda dapatkan dari CD distro Anda). Unpack / ekstrak source code kernel: $ rpm -i kernel-version.rpm
atau $ tar -xvjf kernel-version. tar.bz2
atau $ tar -xzvf kernel-version. tar.gz
Buat struktur direktori : $ cd /mnt/cf $ mkdir bin boot dev etc home lib mnt root proc sbin tmp usr var $ mkdir var/lock var/log var/ run var/spool $ mkdir usr/bin usr/include usr/lib usr/local usr/sbin usr/ share usr/src $ mkdir usr/share/man $ mkdir usr/share/man/ man{1,2,3,4,5,6,7,8,9} $ ln -s usr/share/man usr/man
Menginstal BusyBox Sebagaimana telah dijelaskan di atas, busybox adalah sebuah file executable yang dapat melakukan apa saja. Untuk melakukan berbagai fungsi yang berbeda, Anda hanya perlu mengubah parameter busybox atau meng-softlink-kan fungsi dengan BusyBox (contoh : ln -s /bin/BusyBox /bin/ls). Akan tetapi hal ini akan dilakukan secara otomatis dengan make instal. Untuk menginstal busybox, Anda memerlukan source code-nya. Jika telah mendapatkannya, ekstrak source code tersebut. $ tar -xvjf busybox-version. tar.bz2 atau $ tar -xzvf busybox-version. tar.gz
Setelah itu, Anda harus menentukan fungsi apa yang diperlukan dalam distro Anda. $ cd busybox-version $ make menuconfig
76
INFOLINUX 10/2004
Contoh :
Atur konfigurasi kernel:
$ make PREFIX=/mnt/cf install
$ cd /path/ke/lokasi/kernel $ make menuconfig
Menginstal Library untuk BusyBox BusyBox, seperti layaknya program lain, membutuhkan rutin program tambahan yang didapat dari library (kecuali Anda mengkompile BusyBox secara static). Untuk mengetahui library apa saja yang dipakai oleh BusyBox, ketikkan: ldd /path/to/busybox, contoh : $ ldd /mnt/cf/bin/busybox libcrypt.so.1 => /lib/ libcrypt.so.1 (0x40023000) libc.so.6 => /lib/i686/ libc.so.6 (0x40050000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Busybox akan mencari library yang diperlukan di /lib. Untuk itu, kopi semua library yang tertera di atas ke direktori /lib di media tempat distro Anda. $ cp /lib/libcrypt.so.1 /mnt/ cf/lib $ cp /lib/libc.so.6 /mnt/cf/lib $ cp /lib/ld-linux.so.2 /mnt/ cf/lib
Sedikit catatan, di komputer penulis terdapat dua libc.so.6 (sebenarnya hanya ada satu buah libc.so.6, yang satunya lagi merupakan soft link). Maksud libc.so.6 => /lib/ i686/libc.so.6 adalah busybox menggunakan libc.so.6 yang terdapat di /lib/i686/libc.so.6. Namun, secara default libc.so.6 akan dicari
www.infolinux.web.id
Sedikit catatan penulis, pastikan kernel Anda di-compile untuk arsitektur yang tepat (jangan kompile ke i586 bila komputer Anda hanya 486). Pastikan juga modul interface di komputer target Anda (IDE / SCSI / USB) dan filesistem (proc dan ext2) ter-compile built-in kernel. Bila Anda menggunakan USB disk, pastikan juga driver untuk USB mass storage support terkompile built-in kernel. Setelah selesai mengonfigurasi kernel, save dan keluar dari menuconfig, lalu ketik $ make dep $ make clean $ make bzImage
Kernel hasil kompile akan terdapat di /path/to/kernel/source/arch/i386/boot/ bzImage. Copy kernel ini beserta file System. map (di /path/to/kernel/source) ke direktori /boot media. $ cp arch/i386/boot/bzImage /mnt/cf/boot/vmlinuz $ cp System.map /mnt/cf/boot
Bila Anda mengkonfigurasi beberapa device driver sebagai modul, edit, dan save Makefile utama kernel. $ vim Makefile
Lalu cari baris export INSTALL_MOD_ PATH. Tambahkan INSTALL_MOD_ PATH=/tempat/media/Anda, contoh:
TUTORIAL
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Distro Minimalis
export INSTALL_MOD_PATH=/mnt/ cf
Setelah itu, kompile dan install modul $ make modules $ make modules_install
Membuat file-file device File device yang terletak di /dev adalah jenis file yang merepresentasikan hardware di linux. Beberapa file device yang Anda butuhkan adalah: /dev/console—merupakan device yang digunakan kernel untuk menampilkan output /dev/ttyx (x=0,1,2,dst)—virtual terminal, diperlukan shell untuk job control Selain file device di atas, Anda harus menginstall beberapa file device untuk menngakses media Anda di host dan di target (/dev/sda, /dev/hdb, /dev/hdb5, dll.). Bila Anda ingin menggunakan dhcp, pastikan /dev/urandom juga ada di /dev media Anda. Untuk membuat file device, anda membutuhkan mknod. Berikut contoh penggunaannya : $ cd /mnt/cf/dev $ ls -l /dev/hda brw------1 root root 3, 0 Jan 1 1970 /dev/hda $ mknod hda b 3 0 (lihat dari output ls)
Atau dapat menggunakan cara mudah: $ cp -dpR /dev/hda /mnt/cf/dev
Menginstal Boot Loader Boot loader yang digunakan dalam distro ini adalah LiLo (Linux Loader). Untuk menginstall lilo, diperlukan file lilo.conf yang terletak di /etc media. Berikut adalah isi lilo.conf penulis : boot=/dev/sda #Tempat media Anda terpasang di Host, pastikan /dev/sda ada di /dev media Anda disk=/dev/sda # Tempat media Anda terpasang di Host bios=0x80 default=bfelLinux image=/boot/vmlinuz
label=bfelLinux root=/dev/hda #Tempat media Anda terpasang di target, pas tikan /dev/hda ada di /dev media Anda read-only
Setelah itu, install ke MBR media Anda dengan $ lilo -r /mnt/cf -C etc/lilo. conf
Membuat file konfigurasi /etc/inittab Inittab diperlukan untuk mengarahkan init ke script inisialisasi yang kita butuhkan. Satu hal yang perlu diperhatikan, init versi busybox tidak mendukung multiple runlevel. Karena itu, kita tidak membutuhkan script inisialisasi untuk tiap level. Inittab yang digunakan penulis adalah sebagai berikut: ::sysinit:/etc/rc.sysinit ::respawn:/bin/ash
/etc/rc.sysinit /etc/rc.sysinit akan digunakan sebagai script untuk menginisialisasi sistem (lihat inittab). Penulis menggunakan rc.sysinit berikut: #! /bin/sh # Echo harus dikompile di busyBox agar perintah ini dapat berfungsi echo “Welcome to Minimum Distro” echo “Remount root filesistem as read-write” mount -n -o rw,remount / echo “Memount semua filesistem di /etc/fstab mount -a echo “Mengaktifkan loopback” /sbin/ifconfig lo 127.0.0.1 up # Bagian ini optional. Khusus bila Anda ingin mengaktifkan network interface di mesin tar get Anda # Bila anda meggunakan stat ic IP, ganti $IP_address dan $IP_mask di bawah /sbin/ifconfig eth0 inet $IP_Address netmask $IP_Mask up # Setting gateway # ganti $gateway_address
www.infolinux.web.id
dengan IP gateway Anda /sbin/route add default gw $gateway_address # Setting DNS yang Anda pakai # ganti $domain dengan domain tempat komputer target berada echo “search $domain” >> /etc/ resolv.conf # ganti $DNS_IP dengan IP DNS Anda echo “nameserver $DNS_IP” >> /etc/resolv.conf # Bila anda menggunakan dhcp, pastikan udhcpc terkompile dalam busybox # dan packet socket option terkompile di kernel # Uncomment bagian ini untuk mengaktifkan dhcp # /sbin/udhcpc -n -i eth0 -s /etc/udhcp.script
Tambahan: /etc/udhcp.script didapat dari source busybox. Anda hanya perlu mengkopinya dan menambahkan hak akses executable. $ cp /home/kunil/busybox/ examples/udhcp/simple.script /mnt/cf/etc/udhcp.script $ chmod +x /mnt/cf/etc/udhcp. sctipt /etc/mstab atau /etc/fstab
Perintah mount akan melihat file /etc/ mtab ataupun /etc/fstab, tergantung konfigurasi Anda di busybox. Bila Anda tidak mengonfigurasikan ini, secara umum mount akan memount filesistem yang terdapat di /proc/mounts. /etc/fstabminimum yang digunakan penulis: /dev/hda / default 1 1 proc /proc proc 1 0
Banyak proses busybox yang bergantung pada /proc. Karena itu pastikan filesistem proc ter-compile di kernel Anda.
Testing Nah, selesailah sudah pembuatan distro minimalis. Silakan reboot komputer dan coba jalankan! Daniel Widyanto
INFOLINUX 10/2004
77