27/05/09

Mengecek nomor seri MacBook

Kalau dari Mac OS X, katanya tinggal buka About This Mac. Kalau dari Ubuntu (atau distro Linux lainnya), bisa pake dmidecode.

$ sudo dmidecode
....
Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: Apple Computer, Inc.
        Product Name: MacBook1,1
        Version: 1.0
        Serial Number: ........
        UUID: ....................................
        Wake-up Type: Power Switch
        SKU Number: System SKUNumber
        Family: Napa Mac
....

Kalau tau nomor seri, bisa coba cek http://www.appleserialnumberinfo.com/ tuk ngeliat informasi lebih lanjut :-)

tiga tahun

20/05/09

Lua + SunSPOT = LuaSPOT

If you are looking for English version of this post, check the project page directly. I put a lot of documentations there and all are in English :)

Setelah hampir dua bulan tertunda (sambil nunggu restu dr pembimbing juga sih), akhirnya saya merilis seluruh kode dan dokumentasi proyek yang saya dan rekan saya kerjakan. Kerjaan ini merupakan tugas kuliah Network Programming di Universiteit van Amsterdam yang dikerjakan di bawah bimbingan Rudolf Strijkers.

Jadi, apakah LuaSPOT ini?

Ada sebuah alat kecil namun cukup canggih yang dikenal sebagai sensor network, atau lebih tepatnya wireless sensor network (WSN) karena menggunakan media komunikasi nirkabel. Salah satu produk WSN adalah Sun SPOT yang tentu saja dibuat oleh Sun Microsystems.

Sun SPOT ini bisa dibilang sebuah komputer kecil yang dapat menjalankan aplikasi Java (Java ME). Aplikasi ini lalu akan dapat menggunakan fasilitas yang disediakan oleh Sun SPOT seperti fasilitas komunikasi nirkabel, mengakses data dari sensor yang ada, dan membaca data masukan yang dikirimkan ke alat ini. Cek halaman Flickr saya dan artikel di Wikipedia tuk pendahuluan lebih lanjut.

Proyek yang saya kerjakan untuk tugas kuliah ini adalah menjadikan Sun SPOT ini bisa menjalankan skrip! Setelah melihat beberapa pilihan yang ada, akhirnya saya memilih Lua sebagai bahasa skrip yang didukung. Salah satu alasannya adalah karena ada Lua Virtual Machine, yang bernama Kahlua, yang dapat berjalan di atas Java ME (dan tentunya Sun SPOT) hehe..

Tidak hanya sekedar menjalankan skrip, Sun SPOT yang sudah dipasangi aplikasi yang saya dan rekan buat ini juga dapat menjalankan lebih dari satu skrip secara bersamaan. Selain itu, skrip dapat dipasang ke dalam Sun SPOT on-the-fly! Tidak perlu mendatangi setiap Sun SPOT yang ada untuk menginstal skrip tambahan, cukup kirim perintah (yang menyertakan skrip di dalamnya) ke setiap Sun SPOT yang ada (broadcast atau point to point, baik langsung maupun tak langsung alias dg perantara), wirelessly.

Setiap skrip akan menyediakan satu atau lebih fungsi yang dapat dipanggil dengan teknik Remote Procedural Call (RPC). Sebuah base station atau Sun SPOT lainnya, dapat mengirim sebuah paket data yang berisi perintah untuk menjalankan fungsi yang terkandung dalam skrip yang sudah terpasang dalam Sun SPOT tujuan.

Gambar di atas menunjukkan arsitektur aplikasi yang dibuat. Di paling bawah, tentu saja, ada Sun SPOT itu sendiri. Aplikasi inti yang kami buat ada di bagian tengah, yaitu Lua SPOT. Kahlua yang kami pakai bisa dibilang juga ada di lapisan tengah. Pada lapisan atas, terdapat aplikasi-aplikasi yang fungsi2nya dapat dipanggil melalui mekanisme RPC.

Bagian dari Lua SPOT yang bertugas menangani instalasi skrip secara fungsional juga berada pada lapisan atas. Dengan kata lain, instalasi skrip dilakukan dengan perintah RPC yang sama!

Sun SPOT tidak memiliki fasilitas komunikasi yang canggih. Tidak ada mekanisme routing yang dapat digunakan untuk mengirim data ke Sun SPOT lain melalui beberapa Sun SPOT perantara. Oleh karena itu, perlu dibuat sebuah fungsi routing agar jaringan Sun SPOT yang dibuat dapat menjadi lebih canggih. Kami juga mengimplementasikan fungsi routing yang dapat melakukan penerusan pesan dari satu Sun SPOT ke Sun SPOT lain. Kami mengimplementasikannya dalam bentuk aplikasi lain =D Jadi, pengiriman pesan juga dilakukan dengan RPC!

Aplikasi Manager yang bertugas untuk mengatur instalasi aplikasi ditulis dalam bahasa Java. Sedangkan, aplikasi router yang menjadi aplikasi standar pada Lua SPOT ditulis dalam bahasa Lua! Konsekuensinya, andai fungsi routing yang ada tidak dapat memenuhi kebutuhan, silakan buat fungsi routing yang baru yang ditempatkan menjadi aplikasi baru atau bahkan mengantikan yang ada.

Konsep sederhana namun sangat canggih ini saya adaptasi dari cara komunikasi yang digunakan oleh Smartcard. Kebetulan dulu saya juga pernah mengerjakan proyek Smartcard di UI :)

Ada satu konsep baru dalam dunia jaringan komputer, yaitu active network. Hal ini didefinisikan sebagai sebuah jaringan yang dapat diubah perilakunya dengan memasang sebuah aplikasi ke jaringan tersebut. Sebagai contoh, kita bisa mengirim sebuah paket data yang berisi program kecil. Router yang menerima paket data ini akan membaca program tersebut dan mengeksekusinya. Lua SPOT yang dibuat ini dapat dijadikan sebagai dasar untuk membangun active network tersebut :)

Jadi, bisa dibilang pada dasarnya Lua SPOT adalah sebuah RPC server yang menerima pesan dan meneruskannya ke aplikasi/fungsi yang ada. Aplikasi yang ada ditulis dalam bahasa skrip Lua dan dapat dipasang secara dinamis melalu jaringan nirkabel yang ada.

Yap, sekian saja penjelasan (yang tidak bisa dibilang) singkat atas proyek tugas kuliah yang saya kerjakan dua bulan lalu. Tuk informasi lebih lanjut, silakan cek dokumentasi yang sudah saya letakkan di halaman proyek: http://github.com/fajran/luaspot/tree/master :-)

14/05/09

Membuat Jigdo dari berkas ISO yang sudah ada

Kira-kira begini caranya..

$ mkdir mnt
$ sudo mount -o loop berkas.iso mnt
$ jigdo-file mt -i berkas.iso -j berkas.jigdo -t berkas.template mnt/pool/

Setelah itu, edit lagi berkas.jigdo agar isinya benar.

...
[Servers]
A=file://blahblah
...
[Parts]
irQ7jzfZ8x6Fr6I5WxzU0Q=A:mnt/pool/
...

Menjadi

...
[Servers]
Debian=http://blahblah/
...
[Parts]
irQ7jzfZ8x6Fr6I5WxzU0Q=Debian:pool/
...

Pengubahan A menjadi Debian sebenarnya tidak penting. Yang penting adalah menyesuaikan path dari mnt/pool/ menjadi pool/. Direktori pool/ di sini hanyalah contoh "daftar berkas" yang ingin dipisahkan dari berkas template. mnt/ dihapus karena sebenarnya direktori tsb tidak ada di dalam berkas.iso.

13/05/09

Membuat sendiri sumber data untuk MRTG

Biasanya data yang digunakan oleh MRTG berasal dari SNMP server. Namun ternyata kita juga bisa menyiapkan sendiri data yang kemudian akan digunakan oleh MRTG.

Grafik MRTG di atas adalah jumlah rata-rata koneksi HTTP yang terbangun ke Kambing. MRTG mengambil data ini setiap lima menit dari skrip yang saya siapkan sendiri. Bagaimana cara menghubungkannya?

Pertama2, siapkan skrip yang akan menghasilkan dua buah data. Dua data ini akan menjadi data input dan output bagi MRTG. Keluaran harus ditulis dalam format berikut.

input
output

komentar

Baris pertama dan kedua masing-masing berisi sebuah angka yang menggambarkan besar masukan dan keluaran data yang ingin dipantau. Baris ketiga adalah sebuah baris kosong dan baris terakhir berisi komentar.

Tuk mendapatkan jumlah koneksi HTTP dimana Kambing menggunakan nginx sebagai HTTP servernya, saya hanya menggunakan informasi yang diberikan oleh aplikasi netstat. Saya ambil seluruh baris yang menyatakan koneksi terhubung ke port 80 dan hitung jumlah baris tersebut. Kira2 skripnya adalah sebagai berikut.

#!/bin/sh

NUM=`netstat -ant | grep :80 | grep ESTABLISHED | wc -l`

echo $NUM
echo $NUM
echo
echo Established HTTP Connections

Sebenarnya saya hanya butuh sebuah angka yang menggambarkan jumlah koneksi. Berhubung MRTG meminta dua angka, ya sudah saya tuliskan angka yang sama saja.

Lalu untuk konfigurasi MRTGnya sendiri, tuliskan path skrip tadi dalam isian Target. Path ditulis di dalam sepasang backtick. Contoh:

Target[kambing.http]: `/path/ke/mrtg-num-http.sh`

Simpan konfigurasi MRTG dan tunggu beberapa waktu sampai MRTG mendapatkan data yang cukup untuk mulai membuat grafik. Oh iya, jangan lupa mengatur agar skrip tadi bisa dieksekusi.

Catatan tambahan: Saya tidak membedakan jumlah koneksi masuk dan keluar dalam skrip di atas. Agar data yang ditampilkan lebih menggambarkan kondisi asli, tentu saja perlu dibuat skrip yang lebih canggih, yang bisa mengeluarkan dua angka berbeda, yaitu jumlah koneksi masuk dan keluar. Ada yang mau membuat? =D

Referensi: http://lena.franken.de/mrtg/

03/05/09

Kambing Kesetrum

Peristiwa yg terjadi hari minggu kemarin dan seminggu terakhir:

  • mdadm melakukan consistency check
  • skrip mematikan services lain selama mdadm kerja tidak berjalan =D
  • ubuntu jaunty rilis

kerjaan si mdadm itu akan membuat I/O load tinggi. andai mdadm ngerjain ini dan data terus disedot, maka biasanya services lain akan mogok karena semua operasi nyangkut di I/O. namun pada 1 hari belakangan ini, transmisi data tetap terlihat banyak walau terjadi penurunan sekitar 50%. tapi ini kan hari minggu dmana biasanya memang turun.

Terakhir dicek, kerjaan mdadm akan selesai sekitar 1 jam lagi. artinya mdadm akan kerja selama sekitar 25 jam. kalau services lain mati, maka mdadm cukup butuh waktu sekitar 14 jam.

kesimpulan sementara: services gak perlu dimatiin selama pemeliharaan rutin bulanan =D \รถ/

namun kok itu cpu load tingginya teratur tiap jam ya? wah ada sesuatu yg lain kayanya..