Saturday, February 21, 2009

GNet: GLib base network library

GNet adalah library network yang ditulis dengan C berbasis GLib, fitur-fitur GNet adalah sebagai berikut:

- TCP "client" and "server" sockets
- UDP and IP Multicast sockets
- High-level TCP connection and server objects
- Asynchronous socket IO
- Internet address abstraction
- Asynchronous DNS lookup
- IPv4 and IPv6 support
- Byte packing and unpacking
- URI parsing
- SHA and MD5 hashes
- Base64 encoding and decoding
- SOCKS support

GNet telah di porting ke banyak sistem: Linux, BSD, Solaris, HP dan Windows. Dengan lisensi LGPL.

Pertama kali memakai library ini ketika mengakses data kamera IP untuk proyek Jagorawi. Vendor kamera ini memakai Microsoft ActiveX untuk streaming melalui browser, tentu saja dengan Internet Explorer atau browser lain yang mempunyai dukungan ActiveX. Karena ActiveX ini produk Microsoft, tidak ada cara untuk menjalankan aplikasi embedded browser di Linux (saya tahu dengan Wine). Untungnya kamera ini mempunyai aplikasi server side CGI agar request bisa dilakukan sebagai perintah, misalnya untuk mengambil gambar dan kontrol-kontrol kamera lainnya. Cara streaming disini dengan mengambil gambar per-interval waktu dengan http library GNet. Bukankah ini adalah prinsip streaming? ;p.

Thursday, February 12, 2009

POSIX Thread: Mutual Exclusion Locks (mutex)

Race Condition adalah kondisi dimana program mengakses memory dan melakukan perubahan secara bersamaan, sehingga tidak ada konsistensi data, karena satu proses bisa terdiri dari beberapa eksekusi thread. Bagaimana jika kode di bawah ini kita jalankan dengan menghilangkan pthread_mutex_lock (&mutex) dan pthread_mutex_unlock (&mutex)?, kita kemungkinan besar akan mendapatkan urutan nomor thread yang berurutan tapi tidak selamanya. Beban atau load thread ini sangat sederhana, tidak ada beban sistem yang berarti untuk delay. Jika beban masing-masing thread lebih variatif, kita tidak akan lagi mendapatkan nomor urut thread yang berurutan. POSIX Thread menyediakan Mutual Exclusion (mutex) untuk menghadapi Race Condition. Dengan mutex, thread akan di "antri" untuk dijalankan setelah thread lainnya selesai atau lock dihilangkan, thread yang masuk dalam antrian berada dalam kondisi block atau diam menunggu thread sebelumnya selesai lalu dijalankan secara berurutan.

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static int id = 0;

static void* my_thread (void *data)
{
pthread_mutex_lock (&mutex);
usleep (500000);
printf ("i'm thread: %i\n", ++id);
pthread_mutex_unlock (&mutex);
return NULL;
}

int main (void)
{
pthread_t thread[5];
int i = 5;

while (i--)
{
pthread_create (&thread[i], NULL, my_thread, NULL);
}
pause ();

return 0;
}

IVS Problem

Sudah cek auto-sensing pada kamera OBS, kamera sudah tidak mem-blank cahaya putih ketika ditutup dalam jangka waktu lama pada malam hari. Pada siang hari, ceritanya lain lagi, cahaya itu akan ada sepersekian detik sebelum menangkap obyek yang masih ada. Coding dengan melakukan pengecekan garis setelah blank bisa, tapi OBS tidak bisa menangkap obyek dengan cepat. Bottleneck. Sementara ini dengan mencari kamera yang tidak mempunyai DSP, memakai lensa sun guard, dan LED dengan gelombang infra-merah diatas cahaya infra-merah matahari. Saat ini dengan Dwi, dua hari kepala pusing, hehe kambuh lagi penyakitku.

Tuesday, February 10, 2009

Auto Sensing

Siang tadi test IVS di atas gedung kantor, sudah memakai 2 baris LED infra-merah, sekarang pencahayaan sudah lebih baik. Masih sulit mendapatkan sinar infra-merah yang bersih, tapi dengan setelan kamera hal ini diatasi. Pada malam hari, cahaya putih bisa didapatkan begitu saja karena kamera harus menyesuaikan intesitas cahaya di sekitarnya, kami kira masalah ini berat. Setelah membaca sedikit manual, dengan mencoba me-nonaktifkan setting Auto Sensing pada kamera, kamera tidak lagi menyesuaikan dengan cahaya sekitar dan langsung menangkap cahaya infra-merah. Siang besok akan kami coba lagi efek me-nonaktifkan fitur Auto Sensing ini.

Masih seperti kemarin, saya, Dwi dan Ali. Trus telpon-telpon ama Feby dan Dessy, dapat nomor Verda dari Dessy. Btw Feby, selamat ulang tahun Februari ini, benar kan? kamu lahir bulan ini ;), ok di Bandung nanti!.

Monday, February 09, 2009

Monday Work

Here we go again, tidur semalam ama Dwi di kantor trus masuk kantor lagi jam seperti biasa, semalam chat dengan Anita teman SMP dulu ;). Anita adalah cewek yang membenci saya waktu SMP dulu, tapi saat ini... saat kita udah gede-gede, ga ada lagi seperti masa itu yang saling benci-bencian hahah. Anita dan saya sekarang seperti kayak orang pacaran saja, Trus sama Feby, hi Feby!, udah di Bandung lagi the girl city, saya janji akhir Februari traktir dia di Bandung, ohh... namamu Feby, mungkin artinya kamu lahir bulan ini?. Malam ini ama Dwi, Ali, Gunarto dan Charmin buat bandrek, kacang rebus, dan ubi rebus. Sempat tadi jogging di Kayu Putih karena takut timbangan naik coy, dikit coding gBilling, dengar album Guns n' Roses, Appetite For Destruction untuk inspirasi. Saya sangat menikmati malam ini dengan makanan yang sederhana ini, ini sehat 12x daripada makanan di Mall sana, saya cinta kesederhanaan, saya suka orang yang sederhana seperti mereka.

Sunday, February 08, 2009

Saturday Office

Hari ini lumayan rese, pagi software IVS. Saya benar-benar tidak tahu kalau cahaya infra-merah (IR Beam) yang digunakan oleh OBS sangat dipengaruhi oleh sinar matahari (ultra-violet). Seperti hukum fisika yang menjelaskan ini, software IVS yang saya tulis menjadi sangat kritis, karena bisa saja sinar infra-red itu terganggu oleh sinar matahari pada sinag hari, distribusi cahaya pada LED infra-merah sangat minim, jauh berbeda pada malam hari. Pada siang hari, sangat susah untuk mendapatkan cahaya infra-merah yang "bersih". Untuk sementara kami akan menambah intensitas cahaya dengan menambah LED menjadi 2 kali lebih banyak, dengan harapan cahaya menjadi lebih kuat dan memperlebar cahaya pada siang hari. Kemungkinan metode deteksi software IVS juga akan dirubah untuk faktor-faktor gangguan ini. Tapi itu tricky, perbaikan secara hardware akan jauh lebih reliable.

Sementara ini saya bersama Dwi dari sabtu malam (abis main futsal) hingga saat ini masih di kantor, mutar-mutar sekitar Pulo Gebang ke rumah Pak Agus Sofyan (thanks balado-nya) trus ke rumah Gunarto, di tempat Gunarto yang tidak jauh dari rumah Pak Agus kita kerjain dengan membuat koneksi internet untuk adik Gunarto ;), To... adik lo boleh juga!. Kalo jadi malam ini balik ama Dwi ke Senen, ngambil baju dan gitar. Suntuk... It's time to rock...