Bodhi Linux


keseimbangan yang nyaris sempurna antara kecepatan dan kemudahan

Pertemuan dengannya sungguh suatu kebetulan. Saat itu saya sedang mencari sesuatu yang nggak ada hubungannya dengan Linux. Salah satu link hasil pencarian Google membawa saya ke sebuah blog yang saya lupa namanya. Salah satu artikel yang terdapat pada blog itu adalah review mengenai sebuah distro baru. Bodhi Linux.

Saya membaca review itu, dan tampaknya cukup menarik. Akhirnya saya memutuskan untuk mendownloadnya. Filenya cukup kecil, hanya sekitar 300-ab mb. Saya burn ke CD, dan mencoba live session-nya. Dan saya shock......

Bodhi Live session berjalan jauh lebih ringan ketimbang Maverick yang terinstall di netbook saya. Memang di Bodhi tidak ada berbagai aplikasi yang biasa kita temukan di distro lainnya. Tidak ada Office, web browser hanya Midori, text editor standar (leafpad), file manager (pcmanfm) dan synaptic. Ya, isinya cuma itu. Tapi setelah saya coba-coba, akhirnya saya memutuskan untuk menginstalnya.

Proses instalasi berjalan lancar. Dan yang terpenting, Wifi langsung dikenali, jadi saya tidak perlu repot2 berurusan dengan driver.

Bodhi Linux mengambil pendekatan yang berbeda dari Linux lainnya. Dia sangat kurus. Seperti halnya Windows, setelah kita menginstall nyaris tak ada yang bisa kita lakukan disana kecuali kita menginstall program2 yang kita butuhkan. Tapi Bodhi membawanya ke level yang lebih lanjut lagi. Dia bener2 kurus sampai serasa kurang makan. Sharing ga ada, masih bisa dimaklumi karena nggak semua orang pake samba. Printing ga ada??? Hah???

Akhirnya saya menghabiskan waktu agak banyak dari biasanya untuk melengkapi Bodhi Linux saya hingga ia mencapai kondisi dimana ia layak untuk digunakan bagi keperluan sehari-hari.

Berikut tips dan info bagi anda yang berniat mencoba Bodhi Linux

website utama Bodhi Linux adalah http://www.bodhilinux.com/
Disana anda bisa men-download file iso untuk menginstall. Metode installasi yang dianjurkan adalah dengan menggunakan Flashdisk (USB) dan Unetbootin.

Bodhi Linux kekurangna sangat banyak hal yang biasa kita pakai untuk keperluan sehari-hari.
Untuk itu saya menggunakan synaptic dan meng-install

printing : cups dan system-config-printer-gnome
share : samba dan system-config-samba
office : Libreoffice
browser : Firefox dan Chrome
flash : flashplugin-installer
chatting : Pidgin
media player : Vlc, Mplayer
audio player : Audacious
pdf reader : epdfreader
chm reader : xchm
bluetooth : Blueman
image viewer : geeqie
desain : GIMP dan Inkscape
DVD burner : K3B
Task Manager : qps

Yang tertulis diatas adalah program pilihan saya untuk diinstall di Bodhi Linux. Anda tentunya punya pilihan sendiri beserta pertimbangannya. Silahkan disesuaikan saja menurut selera :)

O ya, Bodhi Linux menyediakan .bod file untuk melakukan installasi paket-paket secara offline, yang bisa di download di AppCenter

Tapi sepanjang pengalaman saya, saya menemukan beberapa kali .bod file tidak bekerja dengan sempurna. Itulah sebabnya mengapa hingga sekarang saya masih memilih synaptic dan apt-get sebagai metode instalasi.

Kalau anda bertanya-tanya mengapa saya bersedia melakukan semua hal merepotkan diatas demi memakai Bodhi Linux, itu karena Bodhi memberikan satu hal yang tidak pernah saya dapatkan di distro lain. Itu adalah keseimbangan yang nyaris sempurna antara kecepatan dan kemudahan.

Ubuntu (sebelum unity) mungkin adalah distro paling mudah untuk digunakan dan di setting bagi pengguna awam. Dan walaupun saya tidak awam-awam bener, saya menyukai kemudahan. Sayangnya ubuntu sangat berat. Dan sejujurnya Maverick yang sudah cukup bagus pun masih terbilang berat dibandingkan... katakanlah Fedora.

Dilain pihak, Fedora menyediakan kecepatan dan kestabilan, namun aplikasi yang tersedia tidak sebanyak Ubuntu, dan update aplikasi agak lambat. Selain itu Fedora juga lebih susah di setting (gara2 selinux sableng)

Bodhi berada tepat ditengah-tengah. Dia berbasis Ubuntu 10.04 yang stabil. Dia ringan karena menggunakan Enlightenment sebagai window manager, dan membuang semua aplikasi yang tidak anda gunakan ( dan yang anda gunakan :p ) dan menyerahkan pilihan aplikasi pada pengguna. Begitu ringannya sehingga program berat seperti Gimp dan LibreOffice bisa startup dengan waktu separuh dari yang dibutuhkan Ubuntu.

Enlightenment boleh dibilang window manager paling ringan yang paling cantik di dunia Linux. Kalo nggak percaya silahkan lihat parade Desktop of the Week

Karena berbasis Ubuntu 10.04, kita bisa menggunakan pilihan software yang tersedia luas di repo Ubuntu. Tidak hanya itu, Bodhi juga menyediakan repo-nya sendiri yang berisi software2 terbaru yang tidak tersedia di repo Ubuntu, serta mirror untuk repo getdeb yang sering down belakangan ini.

Bodhi tidak memaksakan upgrade kernel. Sehingga anda tidak akan menemukan sebuah upgrade membuat hardware anda tidak berfungsi (semoga).

Bonus terakhir, komunitas di forum Bodhi Linux merupakan komunitas terbaik yang pernah saya temui. Disana tidak ada orang yang menyuruh anda membaca manual kecuali halaman wiki yang memang berisi info yang anda butuhkan, dan thread lain yang berisi diskusi mengenai permasalahan yang sama. Hampir semua pertanyaan dijawab dengan serius namun santai, bahkan pertanyaan seperti "bagaimana cara melafalkan Bodhi?"

Saya mulai memakai Bodhi Linux ketika masih versi 1.0.0 dan sekarang Bodhi sudah mencapai versi 1.2.1. Saya tidak menemukan alasan untuk berganti distro karena pada dasarnya Bodhi menyediakan segala yang saya inginkan.

OS yang cepat dan responsif, indah, menjalankan aplikasi dengan lebih cepat, dan komunitas yang hangat dan saling membantu :)

Ternyata sudah 9 bulan blog ini nggak diurusin. Kasian dech. Dalam rentang waktu itu sudah banyak yang berubah. Saya pindah kerja, laptop Acer saya sudah diwariskan ke orang lain, ganti Netbook Axioo, sekarang pake Ubuntu 10.10 Maverick, browser saya kembali ke Firefox, MP3 player ganti ke Qmmp, dan banyak lainnya. Tapi banyak juga yang tidak berubah. Saya masih tetap pakai Linux, masih tetap pakai Ruby, dan masih punya waktu luang untuk melakukan hal-hal selain pekerjaan saya, seperti misalnya nulis di blog ini. Secara garis besar segalanya bertambah baik. Walaupun kondisi negara lagi pusing gara2 kasus Ahmadiyah.

Sekarang saya sudah jarang melakukan berbagai percobaan dengan Linux, karena selain malas rasanya saat ini Linux sudah mampu melakukan berbagai hal yang saya butuhkan. Untuk itu saya harus berterima kasih pada Maverick. Kenapa?

Karena Maverick, begitu diinstall di Netbook, langsung mengenali semua device saya. Termasuk WIFI dan WEBCAM, kecuali build in Mic, yang sebenarnya cukup menolong kalau ingin Voice Chat. Tapi berhubung kayaknya belum ada messenger yahoo yang 'beres' dan 'menyenangkan' untuk dipakai Voice Chat, sementara kebutuhan itu dikesampingkan dulu. Lagian juga nggak ada teman yang bisa diajak Voice Chat.

Netbook agak underpower, jadi saya berharap menemukan program2 ringan utk kebutuhan sehari2. Dan diantara semua kebutuhan sehari2, yang paling penting adalah mendengarkan koleksi MP3. Di windows, WINAMP masih tak tertandingi. Di Ubuntu? Saya coba semua yang berlabel Audio Player. Amarok? Terlalu ribet. Rythmbox? Mumet. Xmms2, rada nggak beres. MPD? Mabok. Akhirnya pilihan jatuh pada Qmmp. Tapi itu kan Qt? Peduli amat. Selama di klik langsung jalan, ringan, bisa random lagu dan bisa dipasangi global shortcut, berarti dia baik2 saja.

Ruby + Geany masih tetap jadi kombinasi programming dan editor andalan. Cukup ringkas dan handal untuk melakukan tugas-tugas gila seperti mendownload komik dari www.mangareader.net.

Saya drop Gnome-shell, tinggalkan Unity, kembali ke Gnome karena itu yang memberi saya keseimbangan antara respon cepat dan fungsionalitas tinggi. Dan berkat kewarasan+kehandalan programmer linux saat ini, semua program jadi hemat window indicator di panel, sehingga sekarang saya sudah jarang menggunakan desktop kedua dst.

Layar Netbook yang kecil dan pendek sedikit menghambat soal pemilihan browser. Saya harus men-drop Chrome karena pluginnya kurang sakti. Jadi saya kembali ke Firefox. Masalahnya Firefox terlalu makan space sehingga bagian render (bagian yang 'menggambar' web yg lagi dibuka) agak kecil Akhirnya masalah ini teratasi dengan Firefox 4.0 Beta 10 yang menubar dan bar-bar nggak penting lainnya bisa di hide. Jadinya tampilan firefoxnya ramping banget, dan kesaktian pluginnya walaupun banyak yg hilang gara2 blum kompatible, bisa dipertahankan. Kurangnya ya... agak berat sih. Dibanding Chrome atau Opera tentunya

Masalah utama tinggal di OpenOffice.Org yang memberi kita tampilan windows beserta menu dan icon bar yang tebelnya se.... yah tebel pokoknya, ditambah dengan statusbar yang seolah nggak mau kalah dalam lomba tebel-tebelan, payah deh. Jadinya bagian utk nulisnya sempit banget. Moga2 yg bikin LibreOffice mikirin nasib kita2 yang pake Netbook ini.

Singkatnya, dari kata ideal, netbook saya ini sudah 90%. Dan semua ini berkat para pejuang OpenSource di seluruh dunia.

Thank you ALL

Baru-baru ini saya menemukan sebuah teknik programming yang bernama noSql. Kelihatannya orang-orang IT yang jenuh sama proses maintenance server (terutama reindex) berusaha mencari jalan keluar bagi masalah ini, dan hasilnya adalah sesuatu yang bernama nama NoSql.

Pada dasarnya noSql menyimpan data dalam format teks seperti JSON (Javascript Object Notation) ke dalam database engine. Ada berbagai macam noSql engine di luaran sana seperti MongoDb. Hanya saja saya agak malas menginstall db engine baru. Ketika browsing2, saya menemukan Friendly, sebuah library ruby yang menggunakan MySql sebagai tempat penyimpanan data NoSql. Iseng-iseng saya coba.


require 'rubygems'
require 'friendly'

Friendly.configure :adapter => "mysql",
:host => "localhost",
:user => "root",
:password => "root",
:database => "beruang"

class BlogPost
include Friendly::Document

attribute :author, String
attribute :title, String
attribute :body, String

indexes :author
indexes :created_at
end

Friendly.create_tables!

BlogPost.create :author => "Hendra",
:title => "Mencoba friendly nosql lagi",
:body => "Akhirnya bisa juga"


all = BlogPost.all(:author => "Hendra")
all.each do |d|
puts "#{d.author} : #{d.title} : #{d.body}"
end


Membutuhkan waktu agak sedikit lebih lama dari dugaan saya untuk memahaminya, terutama sekali memahami bagaimana caranya menampilkan datanya. Tapi melihat hasilnya saya cukup terkesan. Codenya bersih sekali, dan sangat friendly untuk dibaca. Sayangnya feature2-nya belum lengkap. Mungkin bisa dijadikan alternatif untuk penyimpanan data yang tidak membutuhkan query yang rumit

Perintah sakti ini sangat bermanfaat untuk membantu kita bekerja dengan object yang tidak dikenal, seperti object-object yang dihasilkan oleh library yang bertebaran di internet, misalnya Friendly.


obj = Class.new
puts obj.methods


Perintah .methods akan menghasilkan daftar method yang tersedia dalam satu object.

Ketika memainkan game dengan zSnes, jika suaranya aneh (kadang bagus kadang jelek), lakukan langkah-langkah berikut ini

1. Edit file configurasi znes (zsnesl.cfg)

$ gedit ~/.zsnes/zsnesl.cfg

2. Rubah baris berikut
libAoDriver="auto"

menjadi
libAoDriver="sdl"

3. Simpan file

Sekarang coba mainkan game dengan zSnes, seharusnya suaranya akan berjalan baik. Sekalian saja di set ke 48000Hz dengan High Quality low pass filtering

Suaranya jadi mantap deh

Di Windows, saya mengandalkan winamp untuk tugas ini. Dengan winamp, saya bisa mengeblok seluruh file pada ipod, lalu klik kanan dan pilih menu copy to local media.


Di Linux, setelah berkeliling mencari, akhirnya saya menemukan kalau ternyata setelah membuka ipod dengan rhythmbox, kita dapat memblok seluruh file kemudian men-drag-nya ke folder yang saya inginkan. Minusnya adalah, nama filenya jadi berantakan.

Ketika mencoba samba bawaan Ubuntu 9.10, saya tidak bisa men-share folder. Setelah di google, saya menemukan banyak orang yang mengalami hal yang sama. Akhirnya ada seseorang yang memberikan solusi, yaitu dengan mengupgrade paket samba-common-bin.

$ sudo apt-get upgrade samba-common-bin
Setelah itu samba dapat bekerja dengan baik. Sip deh :)

Untuk menginstall wxRuby di Ubuntu 9.10,

Ikuti langkah-langkah di bawah ini

1. wget http://www.trilake.net/wxRuby/wxruby-2.0.1-x86-linux.gem
2. sudo gem install --local wxruby-2.0.1-x86-linux.gem
3. sudo apt-get install libwxgtk2.8-0 libwxbase2.8-0

Ubuntu 9.10 baru saja dirilis. Sebenarnya saya tidak mau mencoba karena menurut yang saya baca dari internet tidak ada apapun yang menurut saya cukup keren untuk membuat saya menghapus 9.04 yang saya sukai. Namun akhirnya saya memutuskan untuk tetap mendownloadnya. Dan setelah di download... biasa lah. Ada dorongan alami untuk menginstallnya. Jadi deh diinstall.

Begitu menginstall, yang nampak jelas adalah layar loading yang berbeda. Kesannya lebih misterius gitu. Pertama booting butuh waktu 1 menit lebih dikit. Lebih lambat ketimbang 9.04 yang cuma sekitar 40 detik. Tapi kalo kecepatannya segitu sih masih ga ngefek. Kenceng.

Begitu selesai login, saya dapat kejutan.System Monitor menunjukkan kalau processor terpakai 100%. Padahal belum buka program apapun. Penasaran saya tekan kombinasi Ctrl+Alt+F1 untuk masuk ke mode cli. Ternyata penuh dengan pesan error yang intinya prosesor saya overheat. Dengan agak panik saya booting ulang dan masuk ke bios untuk mengecek suhu processor. 40 derajat celcius. What the....

Setelah puter2 di bios, saya melihat kalau settingan shut down ketika suhu melebihi ambang batas ternyata pada kondisi disable. Saya ganti menjadi 60 derajat celcius, kemudian booting ulang dan masuk lagi ke Linux. Viola. Sekarang processor saya terpakai 0%.

Di lihat-lihat, kecuali panel jam di sudut kanan atas, tidak banyak perubahan berarti. Panel jam di kanan atas semakin fungsional, kayaknya. Theme default berubah semakin keren. Icon2 juga berubah, terlihat bagus, clean dan modern. Overall, penampakannya bagus deh.

Begitu digunakan, praktis tidak ada perubahan berarti selain add / remove software yang tambah keren dan synaptic yang kini solid rock. Tidak lagi ditemukan layar terminal synaptic yang hitam kosong tidak menampilkan pesan apapun.

Rada bosan, saya memutuskan menginstall gnome-shell. Sebuah preview bagaimana gnome versi 3.x nantinya bekerja. Hasilnya... waw. Keren.



Panel bawah menghilang. Panel atas berubah menjadi tombol start, program yang sedang aktif, jam, tray dan nama user yang bisa di klik untuk menu tambahan.

Start menu keren banget. Begitu tekan tombol Super_L (tombol windows), workspace mengecil dengan semua window yang terbuka disusun agar kita dapat memilih dengan mouse. Di sisi kiri ada side panel. Tinggal ketik nama program yang ingin dipanggil, nantinya akan dimunculkan daftar2 program yang sesuai dengan ketikan kita. Mirip gnome-do atau launcher gitu. Kalo lupa, ada tombol more untuk menampilkan menu yang mirip dengan start menu yang lama. Lalu dibawahnya ada tempat yang kita bookmark seperti Home, Documents dll. Dibawahnya lagi ada recently open document.

Kalau workspace kurang, di bagian bawah kanan ada tombol + untuk menambah jumlah workspace.

Akhirnya saya memutuskan untuk mencoba memakai gnome-shell ini sebagai desktop default dengan mengesetnya di startup application. Hingga sekarang saya menulis artikel ini saya masih menggunakan gnome-shell. Walaupun beberapa bug sudah mulai muncul, tapi saya senang menggunakannya.

Mungkin anda juga berniat mencoba?

Entah mengapa, Firefox menjadi sangat lambat di Ubuntu 9.04. Saya mencoba mengupdatenya menjadi FF 3.5, tapi hasilnya makin parah. Akhirnya saya memutuskan mencoba Google Chrome versi Linux.

Saya mendownloadnya di http://www.google.com/chrome/intl/en/linux.html dan menginstallnya. Kesan pertama? Google chrome versi Linux ini cukup stabil dan cepat. Lebih cepat daripada FF. Namun ada beberapa hal yang masih kurang.

Maka saya memutuskan untuk mengatasi kekurangan tersebut

1. Menginstall Flash Plugin
Saya mengikuti tutorialnya disini : http://www.ghacks.net/2009/09/02/enable-flash-and-use-themes-in-google-chrome-linux/
Pada dasarnya, yang dilakukan hanyalah membuat directory bernama plugins di /opt/google/chrome dan copy file libflashplayer.so

2. Menambahkan plugin2 lainnya
Di Firefox, saya punya beberapa plugin andalan yang kalau tidak ada rasanya kurang afdol, yaitu Adblock, Flash Block, dan Flash Got

Hasil searching di internet saya mendapati website http://www.chromeextensions.org/.
Disana ada Adblock dan Flash Block. Bahkan Flash Block-nya punya feature yang selama ini tidak saya ketahui, yaitu mendownload file flash yang di block dengan ctrl+click kiri.

Hanya Flash Got yang belum saya dapatkan. Pada dasarnya saya menggunakan Flash Got untuk memindahkan proses download file dari browser ke download manager lain seperti D4X atau wget. Namun dari hasil percobaan sementara ini, download manager bawaan Chrome berfungsi cukup baik.

Saat ini Chrome saya berjalan dengan lancar. Walaupun masih versi beta, saya tidak pernah mengalami crash ataupun hang. Menurut saya ini browser yang bagus sekali dan saya tidak ragu untuk menggunakannya sebagai browser andalah saya

Untuk membulatkan bilangan

x #bilangan yang akan dibulatkan
y #bilangan pembulat :p

pembulat = 1.to_f / y.to_f
hasil = (x * pembulat).round.to_f / pembulat


Untuk membuat pembulatan keatas / kebawah
ganti round dengan ceil atau floor

pembulatan keatas
pembulat = 1.to_f / y.to_f
hasil = (x * pembulat).ceil.to_f / pembulat


pembulatan kebawah
pembulat = 1.to_f / y.to_f
hasil = (x * pembulat).floor.to_f / pembulat


lebih lengkapnya, beginilah isi dari modul yang saya pakai
hasil copy paste dari internet dan edit sana sini

module Utils
def get_float(val)
begin
tmp = Float(val)
return tmp
rescue
return 0.to_f
end
end

def get_integer(val)
begin
tmp = Integer(val)
return tmp
rescue
return 0
end
end

def round_to(x)
(self * 10**x).round.to_f / 10**x
end

def ceil_to(x)
(self * 10**x).ceil.to_f / 10**x
end

def floor_to(x)
(self * 10**x).floor.to_f / 10**x
end

def round_by(number,rounder)
round = 1.to_f / get_float(rounder)
calc = (number.to_f * round).round.to_f / round
return calc
end

def ceil_by(number,rounder)
round = 1.to_f / get_float(rounder)
calc = (number.to_f * round).ceil.to_f / round
return calc
end

def floor_by(number,rounder)
round = 1.to_f / get_float(rounder)
calc = (number.to_f * round).floor.to_f / round
return calc
end

Kemarin, memenuhi rasa penasaran saya, mencoba untuk sekali lagi menantang diri sendiri. Yah, setelah sekian lama laptop kesayangan saya Acer Aspire 5002 tidak bisa berkoneksi ria via wifi (karena driver bawaan Ubuntu ga manjur), saya memutuskan untuk mencoba menginstall driver wifi-nya menggunakan ndiswrapper + driver windows. Perjuangannya memang lumayan, sekitar 4 jam. Tapi saya mendapatkan banyak ilmu baru yang... tidak berguna jika anda tidak mengalami masalah dengan hardware.

lspci

list pci (mungkin???)
jalankan perintah ini di terminal dan anda akan menyaksikan keajaiban. Yah, terminal akan menampilkan *mungkin semua hardware yang dideteksi di komputer. Dengan cara ini saya mengkonfirmasi kalau hardware wifi saya terdeteksi di Ubuntu. Kalau anda pusing melihat tampilannya, jangan khawatir. Saya punya obatnya

lspci -v


Nah, sekarang tampilannya lebih rapi kan

Selanjutnya...

lshw

listen hardware
Perintah ini, saya ga tau sih apa bedanya dengan yang diatas. Tapi yang jelas infonya lebih detail. Terutama saat kemarin menginstall wifi, saya menjalankan perintah ini untuk mengkonfirmasi jika wifi adapter saya telah menggunakan module ndiswrapper, dan bukan yang lain. Caranya...

lshw -C Broadcom


Ya, perintah2 ini memang sakti. Tapi kita tidak akan pernah digunakan jika tidak mengalami masalah dengan hardware. Dan kalaupun punya masalah dengan hardware (seperti kasus wifi adapter saya), biasanya sekali masalah teratasi, perintah ini sudah tidak akan digunakan lagi.

Yah... minimal tambah2 pengetahuan lah. Ga rugi bersusah payah 4 jam

Beberapa waktu lalu, saya sempat menanyakan hal ini kepada rekan-rekan di milis id-ubuntu. Sebenarnya semenjak saya mendapatkan jawabannya, saya ingin langsung mempostingkannya di sini untuk berbagi ilmu. Tapi ternyata saya malas dan lupa :p

Alkisah kantor saya memiliki jaringan komputer dengan konfigurasi yang rada nyeleneh. Untuk intranet, kantor saya perlu mengakses server LAMP (Linux Apache Mysql PHP) pada IP 192.168.0.99. Sementara untuk konek ke internet, komputer harus berada di IP 192.168.1.*

Hal ini sebenarnya dimaksudkan agar karyawan yang tidak berhak mengakses internet tidak bisa melakukannya sambil kerja (karena IP-nya beda). Sedangkan yang berhak mengakses internet kebetulan sekali tidak perlu bekerja dengan server LAMP. Sehingga konfigurasi ini menjadi ideal, kecuali bagi saya si administrator

Sebagai admin, saya harus bisa mengecek intranet sambil browsing2 internet. Pusing karena harus ganti2 IP terus, saya memutuskan untuk meng-google. Ternyata di Linux ada caranya. Semacam virtual Lancard gitu deh. Waktu di coba, gagal.

Akhirnya saya melempar pertanyaan ini ke milist id-ubuntu. Berbekal jawaban dari kawan2, saya coba2 menyesuaikan petunjuk mereka dengan kondisi di kantor saya.

Ternyata, yang perlu dilakukan hanyalah mengedit file /etc/network/interfaces dengan benar. Dan beginilah hasil editan saya

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.105
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
#kalo mau multi ip
auto eth0:1
iface eth0:1 inet static
address 192.168.0.105
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255


Dengan cara ini, saya tidak perlu pusing2 pindah2 IP lagi. Kini komputer saya bisa langsung mengakses keduanya, baik jaringan intranet maupun internet. Senangnya :D

Berikut adalah code snippet ruby yang berguna untuk meringankan beban hidup kita para programmer :)

Mengecek apakah sebuah string berupa bilangan bulat (integer)

num = Integer( variable_yang_dicek ) rescue raise 'error' end


Mengecek apakah sebuah string berupa bilangan pecahan (float)
num = Float( variable_yang_dicek ) rescue raise 'error' end


Mengubah String menjadi Tanggal
time = Time.parse( string_tanggal )

Ruby, Pembuka

Saya sudah banyak sekali mencicipi yang namanya bahasa programming. Ada Pascal, Foxpro Delphi, VB, VB.NET, PHP, Gambas, Python, Java, Ruby dan lainnya yang saya tidak ingat lagi. Berbagai bahasa program itu saya gunakan untuk keperluan yang berbeda pula. Ada yang sekedar untuk belajar, kuliah, sampai membuat aplikasi serius seperti Point of Sales dan Company Profile. Beberapa diantaranya sudah harus masuk museum, banyak lagi yang terabaikan karena kurang saya sukai sedangkan sedikit dari mereka benar2 masuk kategori bagus menurut saya. Dan diantara semuanya, Ruby benar2 berbeda.

Ruby adalah sebuah bahasa scripting. Mirip seperti PHP, hanya saja Ruby lebih general purpose. Mirip seperti Python, hanya saja Python lebih menyebalkan. Ruby mendukung Pemrograman Berorientasi Obyek dengan sangat baik, dengan syntax yang sangat bersih hingga sulit dipercaya, gaya programming yang fleksibel namun tertata baik, disertai modul2 dasar dengan fungsi2 yang bisa membuat programmer bahasa lain iri. Ruby praktis bisa digunakan untuk apa saja, membuat program CLI (Command line interface), Program Web, maupun Program Desktop. Dengan bantuan modul2 tambahan tentunya.

Untuk CLI, Ruby bisa langsung digunakan. Untuk web, belakangan ini di dunia gempar dengan kehadiran RubyOnRails, sebuah framework yang dapat membuat aplikasi web dalam waktu singkat. Konon janjinya apa yang bisa dikerjakan dengan Java Strut dalam waktu bulanan, dapat dikerjakan di Rails dalam hitungan minggu. Saya sendiri tidak mempelajari Ruby untuk web karena secara de facto PHP adalah penguasa daerah ini (baca : mencari hosting Ruby sulit sekali).

Sedangkan untuk Desktop, Ruby dapat memanfaatkan beberapa GUI Library ternama seperti GTK, QT, dan WxWidget. Hanya saja tidak mudah bagi programmer karena tidak tersedia Visual Editor seperti layaknya VB.NET atau Delphi. Namun saya sendiri menemukan cara untuk membuat program desktop dengan cara yang mudah dan cepat menggunakan Ruby dan WxWidget.

Saat ini saya sendiri sedang membuat program dengan menggunakan Ruby, WxWidget untuk GUI, dan Postgresql untuk database. Saya berharap saya akan punya waktu untuk memposting artikel2 mengenai bahasan ini, sekaligus berjaga2 siapa tahu kalau saya membutuhkannya lagi saya bisa membuka blog ini dan melihatnya :)

Hari ini akuntan kantor saya kembali dari seminar dengan membawa oleh2. Sebuah cd berisi dokumen2 pajak. Rekan saya ini meminta saya untuk mengeprintkan semua file ada di dalam cd tersebut. Saya membuka cd itu dan mulai melihat-lihat.

Ternyata saya dapat kejutan besar disana. Pertama, ada virus. Ga tanggung, sality. Untung saya buka cd itu di Linux. Aman. Kejutan kedua, ternyata isinya buanyaaakkk!!! Sampai 190-an file.

Mendengar saya menyebut jumlah file-nya, rekan saya membatalkan niatnya mengeprint semua file. Sebagai gantinya, ia meminta saya mengeprint nama file2 agar dia bisa memilih file mana yang akan diprint.

Sekali lagi, untuk saya buka cd itu di Linux. Berbekal sedikit ilmu CLI, saya mengetikkan perintah berikut

$ ls > files.txt


dengan demikian saya punya file text berisi seluruh nama file itu. Kini tinggal mengeprint. Saya bisa saja langsung mengeprint file itu, namun demi menghemat kertas, saya membuka OpenOffice Writer, mengcopy seluruh isi files.txt, kemudian menyeting halamannya menjadi dua kolom. Hasilnya, dua lembar penuh berisi nama2 file yang akan diseleksi.

Untung ada Linux. Kalau di Windows, mungkin saya sedang berjibaku melawan virus saat ini. Dan lagian, saya tidak tahu bagaimana caranya mendapatkan seluruh nama file tersebut di Windows

Fuihhh, untung ada Linux

Ketika membongkar2 Ubuntu Tweak, saya menemukan bahwa di dalamnya terdapat beberapa Nautilus Script yang menurut saya bisa mempermudah saya dalam mengatur file. Terutama sekali file2 system. Kedua script itu adalah Browse as root dan Open in gedit(as root)

Dalam bayangan saya, Browse as root artinya saya membuka file manager dengan permission seorang root. Sedangkan Open in gedit(as root) berarti saya dapat membuka file2 system dan mengeditnya sesuka hati. Singkatnya, kedua script ini akan membuat saya punya kekuasaan penuh atas komputer saya, sehingga jika saya ingin menghancurkan seluruh system saya, hal ini bukanlah sebuah hal yang sangat sulit.

Ternyata, si pembuat script bahasa Inggrisnya cukup payah. Browse as root bukannya membuka file manager sebagai root, melainkan malah membuka file manager di folder /root. Sedangkan Open in gedit(as root) juga hanya membuka file di gedit sebagai user biasa, bukannya sebagai root. Capee deeeeh.

Sedikit gemes, saya memutuskan untuk menulis script saya sendiri, dan beginilah hasilnya

File : Browse as root


#!/bin/bash
gksu nautilus $NAUTILUS_SCRIPT_CURRENT_URI



File : Open in gedit(as root)


#!/bin/bash
gksu gedit $NAUTILUS_SCRIPT_SELECTED_URIS


sekarang tinggal mengcopy file2 ini ke folder /home/nama_user/.gnome2/nautilus-scripts
dan mengeset mereka menjadi executable melalui klik-kanan->properties->permission dan centang Allow executing file as program

Sekarang, saat saya perlu mengedit file sebagai root, saya tinggal klik-kanan->Scripts->Browse as root. Saya akan ditanya password saya, dan setelah itu, saya bisa mengobrak-abrik seluruh sistem saya. Hahaha

Setelah sekian lama menghilang dari peredaran, kemarin akhirnya saya memutuskan untuk membuka lagi messenger saya, melihat kalau2 ada pesan tak terbaca. Saya membuka Pidgin. Biasanya Pidgin bisa konek dengan mudah ke account Yahoo Messenger (YM) saya. Namun entah kenapa kali ini tidak begitu. Pidgin terus-menerus loading tanpa kejelasan kapan ia akan selesai.

Sambil menunggu, tiba2 saya teringat sesuatu. Email di milist linux yang saya ikuti belakangan ini begitu ramai dengan posting mengenai Pidgin yang tidak bisa konek. Saya memang tidak pernah membacanya karena saya belakangan ini tidak pernah menggunakan Pidgin.

Saya membuka email saya, saya klik salah satu email yang judulnya berbau "Pidgin tidak konek". Dan, Viola!!! Ternyata saya mengalami masalah yang sama dengan orang2 itu.

Setelah dicari2, ternyata pemecahannya mudah saja. Tampaknya server YM pindah alamat, sedangkan settingan defaultnya Pidgin masih menuju alamat yang lama.

Akhirnya saya buka Pidgin, klik menu Account -> Manage, saya tunjuk account saya dan klik Modify

Lalu klik tab Advance, dan pada textbox Pager Server, ganti isinya dengan cn.scs.msg.yahoo.com



Setelah itu Save, dan kini Pidgin saya bisa konek lagi ke YM

Yahoo!!! Kalau pindah rumah bilang2 dong. Bikin susah orang aja :p

Bagi orang komputer, mungkin tidak ada peribahasa yang lebih tepat untuk menggambarkan fleksibilitas kemampuan programming dalam memecahkan persoalan. Kemarin malam, saat memberi les kepada satu-satunya murid les saya, ia mendemonstrasikan sebuah gaya berpikir baru yang betul-betul membuat saya terpana.

Semua orang yang pernah belajar programming mungkin pernah membuat program ini. Program untuk menampilkan segitiga siku2 yang terbuat dari karakter *. Misalnya input adalah angka 5, maka outputnya adalah


*
**
***
****
*****


Dalam tradisi belajar-mengajar programming, kita selalu diberi tahu kalau untuk mengerjakan soal di atas, dibutuhkan 2 buah For, yang pertama untuk membuat 5 baris ke bawah, yang kedua untuk menulis * ke samping.

Tapi pernahkah terpikir oleh anda bahwa soal tersebut sebenarnya bisa dipecahkan hanya dengan 1 for saja

Murid saya bisa. Beginilah cara dia mengerjakannya


a = to_integer(get_input())
b = '*'
c = ""
for i = 1 to a
  println b+c
  c=b+c
end


Source code-nya saya tulis dalam bentuk pseudocode, supaya dapat dimengerti dengan mudah

Bisa anda lihat, pendek dan efektif. Membuat saya terkagum-kagum padanya, hingga saya memutuskan untuk mengerjai dia sedikit.

Saya meminta dia untuk membalik output-nya, sehingga tampilannya jadi seperti di bawah ini


*****
****
***
**
*


Seperti dugaan saya, dia tidak bisa mengerjakannya. Bagi orang yang mengerti cara mengerjakan soal terdahulu dengan 2 for, mengubahnya menjadi seperti ini adalah kerjaan mudah. Namun tidak bagi orang yang tidak mengikuti cara pikir tersebut.

Karena itulah, saya sekalian menunjukkan padanya banyak jalan menuju Roma, tidak harus selalu mengikuti jalur berpikir 2 for yang melegenda itu.

Beginilah script yang saya buat


a = to_integer(get_input())
b = ""

for i = 1 to a
  b = b + '*'
end

repeat
  println b
  a = a-1
  b = left(b,a)
until a = 0


Tanggapannya ketika melihat code saya? Dia balik terkesan karena apa yang tadinya dia pikir begitu sulit ternyata dapat dikerjakan dengan mudah (anda yang bisa programming pasti setuju kalau apa yang saya lakukan ini jauh lebih mudah dibanding menggunakan 2 for).

Saya mendapat pelajaran yang sangat bermakna dari dia, dan saya balik memberikan pelajaran yang sama, yang ia berikan pada saya malam itu. Bagaimana dengan anda? Sudahkah anda menemukan jalan lain menuju Roma, yang pemandangan di sepanjang jalannya lebih indah untuk dinikmati? Kalau iya, berbagilah dengan yang lain

Terkadang, kita tidak bisa menghindar untuk menggunakan terminal di Linux, karena bagaimanapun juga terminal adalah bagian yang sangat vital dari system Linux.

Untuk itu saya ingin menuliskan sedikit perintah2 terminal menarik yang saya ketahui di sini, dengan tujuan kalau saya lupa saya bisa kembali ke blog ini untuk mencarinya :p

Selamat menyimak


man nama-program dapat digunakan untuk mengetahui opsi-opsi dari suatu program yang seringkali tidak kita ketahui. Namun bagaimana kalau yang tidak kita ketahui justru nama programnya? jawabannya adalah
$ man -k 'deskripsi'
perintah ini akan menampilkan semua nama program yang sesuai dengan deskripsi yang diberikan. Jadi jika ingin tahu program apa saja yang berhubungan dengan PDF, ketik saja $ man -k 'pdf'

Sering blusukan di terminal untuk pergi ke folder-folder system? Saya juga. Payahnya, setelah saya mendarat di folder yang cukup dalam, saya butuh untuk kembali ke folder home user saya. Dan mengetikkan perintah $ cd /home/nama_user cukup menyebalkan. Untungnya kok ya yang buat terminal juga ngerti penderitaan saya. Ia memberikan shortcut yang mudah. cukup jalankan
$ cd
maka terminal akan berpindah ke folder home/nama_user

Pernah kebingungan mencari dimana letak program anda? Misalnya anda ingin tahu dimana letak file firefox? Jalankan perintah
$ whereis firefox
Terminal akan menampilkan letak program yang anda cari

Lupa dimana anda berada sekarang karena terlalu semangat blusukan di directory? Ketik
$ pwd
Terminal akan menampilkan lokasi anda sekarang. Dan kalau anda kesulitan menyambungkan pwd dengan letak directory anda (karena secara reflek kita menyingkat password sebagai pwd), ingatlah bahwa pwd berarti print working directory. Sekarang jadi cukup nyambung khan?