Mengkoneksikan WIFI dari CLI

Meski umumnya sehari-hari kita memakai komputer menggunakan antarmuka grafis (GUI), karena suatu alasan tertentu kadang kala kita perlu melakukan sesuatu dari antarmuka perintah baris (CLI). Misalnya untuk urusan mengkoneksikan laptop ke jaringan nirkabel (wireless), sistem operasi Fedora telah dilengkapi dengan NetworkManager yang berfungsi dengan sangat baik dan dapat dioperasikan dengan sangat mudah oleh orang awam sekalipun. Bagaimana kalau kita ingin mengkoneksikan laptop kita ke  Access Point (AP) yang menggunakan protokol keamanan WPA-PSK melalui antarmuka perintah baris?

Sederhana kok prosesnya, yang perlu diingat, perintah iwconfig hanya mendukung protokol keamanan WEP, sehingga bila kita ingin terhubung ke AP menggunakan WPA-PSK maka kita memerlukan paket wpa_supplicant.

Pastikan perintah wpa_passphrase dan wpa_supplicant tersedia di laptop Anda. Kalau kedua perintah tersebut tidak ada, silakan instal paket wpa_supplicant.


yum install wpa_supplicant 

Kemudian kita perlu membuat berkas konfigurasi wpa_supplicant, tentunya Anda sebelumnya sudah harus mengetahui nama SSID AP dan passphrase/password-nya.

wpa_passphrase [NAMA-SSID-WIFIMU] [PASSPHRASE-WIFIMU] > /etc/wpaku.conf

Perintah di atas akan menghasilkan suatu berkas /etc/wpaku.conf yang isinya kurang lebih seperti ini:

network={
ssid="NAMA-SSID-WIFIMU"
#psk="PASSPHRASE-WIFIMU"
psk=487daf2e66e889c24b8fdf6d01877d5549f6f63fa45b58cd2950d30c16b96dad
}

Selanjutnya jalankan wpa_supplicant dengan opsi-opsi berikut:
-D (diikuti dengan nama driver kartu nirkabel laptop Anda), -i (diikuti dengan nama interface kartu jaringan nirkabel), -c (diikuti dengan nama berkas yang baru saja Anda buat tadi) dan -B (agar perintah ini berjalan di background). Untuk melihat penjelasan tentang opsi lain yang tersedia, kita bisa membacanya di manual page wpa_supplicant.

Ok, ini contoh baris perintah yang saya jalankan di laptop saya


wpa_supplicant -Dwext -iwlp3s0 -c /etc/wpaku.conf -B 

Langkah terakhir, jalankan dhcp client untuk mendapatkan konfigurasi IP

dhclient wlp3s0

Thats it. Selamat berselancar sebagai preman terminal :)

 

Memilih Ukuran Ponsel

Beberapa waktu belakangan ini ponsel berevolusi dengan sangat cepat. Tak hanya dari sisi teknologi yang diusungnya tapi juga dari dimensinya.
Lahirnya Android jelas menjadi salah satu motor yang menyebabkan proses evolusi tersebut menjadi sangat cepat.
Para vendor mengeluarkan produk dengan beragam ukuran. Di satu sisi, beragamnya dimensi ponsel menjadi satu momok bagi para pengembang aplikasi, tapi di sisi lain terutama bagi pengguna akhir jelas memberikan keuntungan tersendiri.
Kita memiliki banyak pilihan.

Berapa ukuran ponsel yang ideal? Tak ada rumus pastinya. Setiap orang memiliki preferensinya sendiri-sendiri.
Saya pribadi memiliki beberapa pertimbangan untuk menentukan ukuran ideal. Yang pertama, harus memiliki layar yang cukup luas, semakin luas makin bagus. Yang kedua, harus masih cukup nyaman di bawa ke mana-mana dalam saku celana. Terakhir, masih cukup nyaman dioperasikan menggunakan satu tangan.
Kalau dari dimensi, cuma 3 itu saja yang jadi pertimbangan.
Meski Anda memiliki kriteria yang sama, belum tentu dimensi yang Anda pilih akan sama dengan ukuran ponsel yang menjadi pilihan saya. Mengapa?
Karena kita secara fisik pun belum tentu memiliki ukuran yang sama.
Ukuran 7″ bagi saya jelas terlalu besar, 6″ agaknya menjadi batas maksimal. Ya, ini berarti masuk dalam range pablet.

Kalau sampeyan sendiri lebih suka ponsel berdimensi berapa?

Hampir 2 Tahun Usia Keke

Tak terasa sudah hampir 2 tahun Keke menemani kami, setelah penantian panjang selama 7 tahun itu. Di  usia emasnya ini, semakin banyak kemampuan baru dan tingkah-polahnya yang membuat kami tersenyum dan tertawa tapi kadang juga membuat ibu dan abahnya harus lebih banyak belajar bersabar.

Setahun yang lalu, kami memutuskan meminta Synergy Edu Learning untuk membantu mengasuh Keke saat kami harus beraktivitas di kantor dan kampus. Dan saya yakin ini keputusan tepat, dibandingkan kalau saya harus mempekerjakan pengasuh di rumah yang belum tentu memahami psikologi anak dan belum tentu pula memahami bagaimana membimbing seorang anak.

Berikut daftar kemampuan Keke di usianya yang hampir dua tahun ini:

– Mengenal huruf A,B,I,O,U. Ini sih sebenarnya cuma iseng saja, saya hanya mengenalkan Keke dengan huruf yang bentuknya mudah diingat.

– Berhitung dari 1 sampai 10. Meski belum mengenal angka, tapi Keke sudah bisa berhitung dari satu sampai sepuluh tanpa dipandu.

– Mengenal nama anggota tubuh, antara lain: mata, hidung, kuping, mulut, tangan, kaki, perut, pipi, alis, kumis, jenggot.

– Mengenal nama orang yang sering berada di sekitarnya: abah, ibu, Ani (Arlene), Hana, Fahri, tante, uncle, uwal (Aufar), Popo, tante Ayik, opik, uci (bu Lusi), wawa, nenek dan panggilan generik untuk orang-orang yang belum dikenalnya seperti om, tante, mas, mbak, bapak

– Mengenal berbagai jenis hewan: penguin (yes, ini jelas hewan yang pertama kali saya kenalkan karena saya punya banyak koleksi boneka penguin. Iya, boneka itu saya yang mengoleksi, bukan punya ibu nya Keke hehehehe), ikan, ayam, gajah, sapi, kucing, guguk, burung, kupu-kupu, embek, bebek

– Mengenal beberapa tokoh kartun: kimos (mickey mouse), pikachu, thomas, pororo, tayo, chiro, nemo

– Mengenal beberapa jenis kendaraan: sepeda motor, mobil, bus, trek, ambulan, sepeda, kereta api, pesawat

– Mengenal dan dapat menggunakan secara mandiri peralatan makan seperti piring, gelas, sendok, garpu. Bahkan sudah lama bisa mengambil sendiri air putih di dispenser. Kadang lebih suka makan sendiri.

– Aktivitas motorik kasarnya juga sudah mulai banyak: berlari, memanjat, perosotan, naik turun tangga (ada tangga kecil di rumah, hanya terdiri dai dua anak tangga), melempar dan menendang bola, bermain ayunan, bermain mobil-mobilan yang didorong menggunakan kaki, memindahkan barang-barang/mainannya

– Aktivitas motorik halus seperti menggambar, menyusun balok dan karpet puzzle, bermain ipad

– Berjoget dan menyanyikan beberapa lagu anak (hanya sepotong-potong sih nyanyinya, masih harus dipandu)

– Mengikuti gerakan shalat dan berdoa. Doa yang paling dihapal adalah doa sebelum makanan, hehehehe. Satu suap berdoa satu suap berdoa :p mengetahui suara adzan (meski semua suara yang keluar dari mesjid dan berbahasa arab masih dianggap adzan semua)

– Mengenali suara kembang api

– Memahami fungsi remote tv.

– Memahami kalimat sederhana, bisa merespon pertanyaan sederhana dan sudah bisa dimintai tolong mengambilkan/mengerjakan sesuatu

– untuk urusan baju, Keke paling senang kalau dia memilih bajunya sendiri dan sering memakai baju sendiri juga meski kadang masih suka terbalik

– Sudah mengerti konsep kata “terbalik”. Biasanya kalau dia sedang memakai sepatu sendiri, kemudian saya bilang terbalik, dia langsung menukar sepatu di kakinya.

– Keke suka bermain keyboard dan gitar serta mendengarkan musik

– Kalau ingin pup (buang air besar), keke sudah bisa bilang terlebih dahulu. Hanya kalau mau pipis biasanya dia pipis dulu baru ngomong :)

– Kosa kata yang dikuasai juga sudah cukup banyak, di luar kata benda yang sudah saya sebut di atas, masih ada kata kerja dan kata sifat semacam bobo, mimik, maem, pergi, pulang, saur, ke luar, tutup, buka, ambil, pakai, lepas, gendong, jatuh, naik, matikan, enak, lompat, dingin, panas, anget, berenang, mandi, dsb. Jadi kalau cuma standar 50 kata aja sih udah lewat lah.

– Mampu merangkai 2-3 kata

Keke masih belum bisa melompat. Masih belum mengenal warna.

Selamat betumbuh ya nak.

Fedora Activity Day

Di proyek Fedora ada sebuah kegiatan spesial yang disebut Fedora Activity Day atau biasa disingkat FAD. Karena sifatnya yang spesial, sampai-sampai kegiatan ini memiliki alokasi dana tersendiri di luar alokasi dana yang telah disiapkan untuk keperluan promosi, marketingdan sebagai dana pendukung bagi para aktivis fedora yang memerlukan bantuan dana saat memperkenalkan dan menyebarkan Fedora ke masyarakat umum. Selain FAD ada satu lagi sih kegiatan spesial di fedora yang disebut FUDCon (Fedora Users and Developers Conference). Kedua kegiatan ini (FAD dan FUDCon) dikatagorikan sebagai kegiatan utama.

Masing-masing regional (terutama di regional Asia Pasifik) telah mengajukan rencana kegiatan untuk setahun. Beragam kegiatan sepertirelease party, mempromosikan penggunaan fedora ke berbagai kalangan (institusi pendidikan, pemerintahan, bisnis dan masyarakat umum).Release party dikatagorikan sebagai kegiatan sekunder.

Biasanya dukungan dana ini dipakai untuk membantu memproduksi CD/DVD, stiker, spanduk, kaos dan pernak-pernik fedora lainnya. Kadang bantuan dana ini juga dipakai untuk menyewa tempat/peralatan, membantu membiayai dana perjalanan/transportasi dan akomodasi para aktivis Fedora yang telah menyisihkan waktu dan tenaganya untuk menghadiri kegiatan di luar kota (atau bahkan luar negeri).

Berbeda dengan kegiatan-kegiatan di atas, FAD lebih ditujukan untuk memfasilitasi para kontributor Fedora. Dari FAD diharapkan ada timbal balik langsung yang bisa dikontribusikan ke dalam proyek Fedora.

Sebagai contoh begini, misal saya ingin membuat suatu kegiatan dimana dalam kegiatan tersebut banyak aktivitas yang berkaitan dengan Fedora, memperkenalkan fitur-fitur distro Fedora, pelatihan atau lokakarya/workshop penggunaan Fedora, kegiatan ini tidak bisa dikatagorikan sebagai FAD.

Berbeda bila saya membuat suatu kegiatan seperti ini:

1. Kegiatan yang dihadiri oleh para duta (ambassador) Fedora, kemudian di acara tersebut kita mendiskusikan rencana yang akan kita lakukan untuk beberapa waktu ke depan dan mengevaluasi kegiatan-kegiatan terdahulu. Memandu para calon ambassador baru agar dapat melaksanakan tugasnya dengan baik. Ini bisa disebut FAD Ambassador

2. Kita mengumpulkan para pengalihbahasa dan mengerjakan pengalihbahasaan/pelokalaan distro baik di bagian aplikasi, dokumentasi maupun situs. Ini bisa disebut FAD L10N.

3. Kita berkumpul dan melakukan hackaton, membuat aplikasi yang akan kita sumbangkan hasilnya ke proyek fedora. Ini juga bisa disebut FAD.

4. Berkumpul dan mengadakan pelatihan cara membuat paket rpm, kemudian di akhir acara masing-masing peserta memilih paket yang belum ada di repositori fedora untuk dibuatkan paket rpm-nya. Ini juga bisa dikatagorikan FAD.

Kelihatan kan bedanya FAD dengan kegiatan release party atau kegiatan marketing yang lain ?

Membatasi Bandwidth Menggunakan Trickle

Kalau kita tergolong fakir bandwidth ada baiknya kita benar-benar mengelola pemakaian bandwidth agar aktivitas kita yang lain tidak terganggu ketika kita sedang mengunduh/mengunggah sesuatu.

Misal kita ingin mentransfer data menggunakan rsync, sambil menunggu proses sinkronisasi selesai kita ingin berselancar di internet. Nah kalau proses sinkronisasi data ini tidak dibatasi, ini akan mempengaruhi kecepatan akses kita saat berselancar di internet karena sebagian besar bandwidth akan dikonsumsi oleh si rsync.

Rsync sebenarnya punya opsi “–bwlimit” untuk membatasi pemakaian bandwidth, tapi opsi ini akan bekerja efektif untuk berkas-berkas yang berukuran besar, karena ia tidak benar-benar membatasi konsumsi bandwidth, tapi hanya men-delay proses pengiriman suatu blok data bila dianggapnya proses pengirimannya terlalu cepat. Mungkin ini mirip dengan fitur delay pool di squid.

Kalau mau pembatasan bandwidth yang lebih yahud dan gak ribet, coba pasang aplikasi yang bernama trickle. Kita bisa mengelola pemakaian bandwidth per aplikasi yang kita jalankan. Trickle sudah tersedia di repositori resmi Fedora dan EPEL, jadi gak usah pusing, tinggal yum install trickle

Contoh untuk kasus rsync tadi, kita bisa menjalankan rsync dengan opsi seperti ini: rsync -avz --progress -e "trickle -d 8 ssh" server.remote.ku:/path/ke/direktori/asal /path/ke/direktori/tujuan Ini berarti kita membatasi rsync agar hanya boleh mengkonsumsibandwidth pengunduhan sebesar 8 KB/s atau 64Kbps. Kalau mau membatasi bandwidth pengunggahan, kita bisa pakai opsi “-u

Lebih jelasnya, silakan baca man trickle

Selamat cekek-mencekek bandwidth :)

Big Mac Tanpa Daging

Ini bukan cerita tentang vegetarian yang lagi ngidam makan burger. Alkisah tadi pulang kantor udah hampir tengah malam, dengan perut sedikit keroncongan chatting-lah saya dengan si ibuk di rumah.

Ternyata di rumah juga gak ada makanan, akhirnya kita sepakat pesan McDonal’s.

Sambil menunggu pesanan datang, saya nerusin kerjaan sebentar. Gak berapa lama si ibuk kasih kabar kalau pesenan udah sampai. Ok, saya langsung beberes. Laptop saya tinggal aja ah, lagi males bawa-bawa backpack.

Sampai di rumah, say hello bentar ama Keke yang masih terlelap. Habis itu langsung buka bungkusan dari McD. Gak sampai lima menit ludeslah chicken snack wrap yang berukuran mini itu.

Si ibuk yang baru mulai bongkar-bongkar bungkusan McD nyeletuk, “Ternyata gak gede-gede amat ya Big Mac-nya”. Dalam hati saya menimpali “Iya, kok jadi kecil gitu ya?”

Setelah dibongkar ternyata si Big Mac gak ada dagingnya. Haiss, langsung deh komplain ke McD.

Tanpa banyak tanya dikirimlah satu Big Mac pengganti. Si mas yang nganter nyerahin paket pengganti sambil bilang “Maaf ya mas, mungkin tadi yang nyiapin sedang buru-buru”.

“Iya mas gak papa, makasih ya”.

Terindikasi ini bukan kejadian pertama, kata si ibuk (yang emang doyan jajan) udah beberapa kali kalau pesen untuk dibawa pulang ada aja pesenan yang kurang. Sampeyan pernah ngalami juga ?

 

Ruby di Fedora dan CentOS

Ruby adalah salah satu bahasa pemrograman yang beberapa tahun belakangan ini sedang naik daun. Seiring dengan berjalannya waktu, semakin banyak aplikasi/tools keren yang dibuat menggunakan bahasa ini.

Sayangnya ketersediaan paket-paket rpm ruby di CentOS atau pun di Fedora masih sangat minim. Untuk itulah komunitas Fedora membuatRuby SIG (Special Interest Group) yang bertujuan untuk meningkatkan dukungan terhadap aplikasi-aplikasi ruby, pustaka pendukungnya serta mengeluarkan standar untuk para pemaket ruby. Salah satu yang dihasilkan oleh SIG ini adalah panduan untuk para pemaket ruby rpm.

Kondisi di CentOS jauh lebih parah, versi ruby yang disertakan jauh tertinggal dari versi terbaru (CentOS 5 dan 6 menyediakan ruby versi 1.8.7). Padahal beberapa aplikasi mensyaratkan hanya bisa dipakai menggunakan ruby versi baru.

Ada 2 aplikasi yang ingin saya paketkan menjadi rpm, yaitu Redmine dan GitLab. Untuk redmine sebenarnya dia tidak butuh ruby versi terbaru, cukup dengan memasang ruby versi 1.8.7 (sudah tersedia di repositori). Hanya beberapa paket rubygem pendukungnya yang belum tersedia. Sementara gitlab mensyaratkan ruby versi 1.9.x.

Sebenarnya, untuk kedua aplikasi itu bisa saja dipasang di CentOS dengan mudah jika kita mengikuti panduan dari masing-masing pengembangnya. Tapi sebagai mantan sysadmin, saya berpendapat kalau masing-masing aplikasi yang akan dipasang di server memiliki standarnya sendiri-sendiri tentu akan merepotkan untuk proses deployment dan perawatannya. FYI, saya punya prinsip untuk tidak memasang tools development (semacam gcc, autoconf, dkk) di server production. Dan prinsip saya yang lain, proses deployment harus semudah mungkin dan harus dapat dijalankan ulang oleh siapa pun di mesin mana pun dengan hasil yang sama. Ini akan berguna kalau kita ingin membuat replika dari suatu sistem, atau ingin melakukan proses otomasi, dan sebagainya dan sebagainya (banyak sekali alasannya)

Ok, kembali ke masalah pemaketan ruby. Untung sudah tersedia paket rubygem-gem2rpm yang sangat membantu untuk proses pembuatan paket-paket rubygem. Setidaknya 90% berkas spec yang dihasilkan bisa langsung dieksekusi, paling cuma perlu melakukan sedikit penyesuaian. Oh iya, kali ini yang ingin saya coba adalah menyediakan paket-paket ruby 1.9.3 di CentOS, jadi saya mengikuti panduan dan konvensi dari Fedora dan membuild ulang semua paket ruby yang sudah ada di repositori untuk CentOS 6. Saya siapkan satu repositori yum khusus untuk ruby 1.9.3 ini (nanti ya saya unggah kalau sudah selesai semua).

Git, Gitolite, Gitorious dan Gitlab

Salah satu tools yang dipakai di tempat kerja saya adalah versioning system. Selama ini kita pakai subversion, dengan workflow dan modeldevelopment yang kita anut sebenarnya ini sudah mencukupi. Meski di beberapa kesempatan kita pun juga memanfaatkan git.

Ada rencana iseng untuk menggantikan subversion dengan git. Kenapa harus diganti? Ada 1001 alasan, terlepas dari kenyataan teknis bahwa git jauh lebih superior dibandingkan dengan subversion.

Saya perlu menyiapkan sebuah git server (semacam github.com) yang nantinya akan dipakai untuk mempermudah kolaborasi. Kehadiran git server ini sebenarnya tidak wajib, karena git mengusung konsep sistem versioning yang terdistribusi, artinya setiap orang yang ingin berkolaborasi bisa langsung mengakses ke repositori lokal masing-masing developer. Tapi tentunya ini akan merepotkan, karena komputer sideveloper belum tentu hidup 24/7.

Dari hasil jalan-jalan, akhirnya saya mencoba beberapa alternatif solusi ini:

1. Gitolite + cgit
2. Gitorious
3. Gitlab

Gitolite + cgit

Gitolite, yang merupakan penyempurnaan dari gitosis, sebenarnya cukup sederhana dan keren. Manajemen repositori git ditangani menggunakan git itu sendiri :)

Cgit merupakan antarmuka web untuk mengakses repositori git, alternatif lainnya ada gitweb. Cgit cukup kencang waktu diakses karena dia menerapkan sistem caching untuk mengakses objek git.

Protokol http dan git disiapkan untuk akses read-only, sementara untuk akses write ditangani memakai ssh. Proses pemasangan dan konfigurasinya sangat sederhana. Setiap developer nantinya harus mengirimkan kunci publik ssh-nya ke admin git, untuk kemudian didaftarkan ke sistem. Gitolite mendukung konsep berbagi repositori antar developer dan masing-masing user juga bisa ditentukan hak aksesnya terhadap suatu repositori.

Paket gitolite dan cgit tersedia di repositori epel, jadi proses instalasinya relatif mudah.

Gitorious

Percobaan kedua saya jajal pasang gitorious. Aplikasi yang dibangun menggunakan ruby ini requirement yang dibutuhkan gak neko-neko, bisa dijalankan menggunakan ruby versi 1.8.7 (versi ruby yang secara bawaan terpasang di CentOS). Sayangnya progress pengembangan perangkat lunak ini terkesan lambat. Saat saya coba pasang notifikasi email menggunakan activemailer dengan metode smtp+tls (kebetulan saya coba kirim notifikasi menggunakan akun gmail) ternyata modul notifikasinya tidak kompatibel dengan activemailer versi baru. Harus diubah beberapa baris kode supaya proses pengiriman bisa berhasil. Akses ke antarmuka webnya terkesan agak berat.

Setiap project yang dibuat di gitorious dapat memiliki lebih dari satu repositori. Kalau di gitolite dibutuhkan peran serta admin untuk mendaftarkan user beserta kunci publik ssh-nya, di gitorious setiap user bisa membuat project dan repositorinya secara mandiri.

Proses Instalasi gitorious sebenarnya cukup ribet. Untuk mempermudah, saya coba menggunakan gitorious chef recipe punyanyamakewhatis

WARNING: saya tidak terlalu suka dengan cara instalasi yg dilakukan oleh chef recipe ini, alih-alih mengikuti pakem instalasi di CentOS, script ini justru mengadopsi model/gaya debian.

Gitlab

Terakhir, ini yang saya coba. Komunitas pengembang gitlab terlihat sangat aktif. Sayangnya dia butuh versi ruby yang lebih baru. Artinya harus ada usaha lebih untuk menyiapkan paket-paket pendukungnya, karena saya agak males kalau harus memasang sesuatu di luar pakem di server.

Versi terdahulu gitlab ini memanfaat gitolite sebagai backendnya, tapi di versi yang baru ketergantungan terhadap gitolite tersebut sudah dilepas, sebagai gantinya gitlab memakai gitlab-shell.

Sama seperti gitorious, di gitlab setiap user juga dapat mendaftar dan membuat project secara mandiri. Bedanya, setiap project di gitlab hanya memiliki satu repositori.

Kita bisa buat tim, grup dalam suatu project. Kemudian ada fitur merge request (request merge antar branch dalam satu project/repositori).

Atarmuka webnya terlihat modern, agak mirip github. Fitur pull-request masih belum ada di versi yang saya coba, katanya bakal tersedia di versi 5.2 yang akan datang.

Saat instalasi saya menggunakan gitlab-installer. Ada beberapa step di script tersebut yg harus dijalankan secara manual (mulai dari baris ke 157).
Sepertinya gitlab yang akan saya pakai nantinya, sementara ini masih dicoba-coba dulu manfaatin gitlab dengan berbagai skenario.