Scriptnya Tidak Sama dengan Rencana

Pada awalnya aku yakin banget dengan rancana yang aku tulis pada waktu situs pidgin.im down. Rencana yang sepertinya simple dan tidak rumit.

Setelah situs pidgin.im hidup lagi dan berjalan normal serta mood untuk coding yang udah balik. Aku memulai membuat script pidgin yang sesuai dengan rencana itu.

Tahap prototyping script berjalan sesuai dengan rencana, tentu setelah dengan beberapa fixing. Dilanjutkan dengan implementasi fitur utama yaitu daemon mode. Dan dilanjutkan dengan finalisasi struktur dan fitur-fitur penghibur. Jadilah sebuah script untuk pidgin yang sesuai dengan yang sudah aku rencanakan (ada beberapa yang kurang, tapi fitur utama sudah ok).

Karena semua sudah oke, aku coba untuk cross check dengan tulisan rencana aku. Dan apa yang aku dapat ternyata sunggu diluar dugaan, rencana yang sudah aku anggap sesuai itu ternyata melenceng dari yang sudah aku rencanakan.

Baca entri selengkapnya »

UDP Tunnel via SSH

Dari: Tunnelling UDP Traffic Through An SSH Connection

Untuk cerita lengkap silahkan lihat dilink di atas. Sedang untuk asal bisa, berikut langkah-langkahnya

Buat TCP tunnel ke mesin tujuan

azhar@logos:~$ ssh 192.168.1.2 -L 8999:127.0.0.1:8999

Buat jembatan TCP ke UDP dengan “nc” di server

[azhar@logos-devel ~]$ mkfifo /tmp/fifo
[azhar@logos-devel ~]$ nc -l 8999 < /tmp/fifo | nc -u 192.168.0.1 9999 > /tmp/fifo

Buat juga jembatan tersebut dilokal

azhar@logos:~$ mkfifo /tmp/fifo
azhar@logos:~$ nc -l -u 9999 < /tmp/fifo | nc localhost 8999 > /tmp/fifo

dan selesai, semua koneksi UDP ke localhost:9999 akan diforward ke 192.168.0.1:9999

Catatan Kecil Oracle “rownum” #2

Limit query dengan menggunakan rownum memang sukses untuk membatasi berapa banyak record yang ingin dikembalikan, tapi hari ini aku perlu limit untuk membatasi result setelah record XX dan sampai record XX.

Aku kira dengan menambahkan batasan bawah rownum yang ingin dikembalikan menjadi:

SELECT rownum row2, b.row1, b.k_agama, b.content
FROM
(
  SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
) b
WHERE 5 <= rownum AND rownum <= 10;

bisa digunakan, akan tetapi hal itu tidak sesuai dengan yang aku inginkan. Query tersebut gagal. Tidak ada record yang dikembalikan.

Quick workaround adalah dengan mengubahnya menjadi seperti ini:

SELECT c.row2, c.row1, c.k_agama, c.content
FROM
(
  SELECT rownum row2, b.row1, b.k_agama, b.content
  FROM
  (
    SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
  ) b
) c
WHERE 5 <= rownum AND rownum <= 10;

Aku tahu workaround ini payah, tapi aku butuh query ini berjalan secepatnya.

developer.pidgin.im is currently down!

Sayang sekali, padahal lagi ingin bereksperimen untuk membuat plugin, tepatnya daemon yang menyediakan fungsi tambahan untuk pidgin.

Rencananya seh simpel, dapet ide dari Forum Ubuntu. Jadi dengan menggunakan python dan dbus aku berencana untuk membuat script yang berjalan dibackground yang memonitor teks yang aku ketik. Jika teks itu sesuai dengan keyword, say it – as example, /mixcase maka otomatis setiap teks yang aku kirim akan dibuat mix case, itu loh seperti chatingan abg-abg yang gaul-gaul yang suka nyampur aduk huruf kecil ama huruf besar.

Tapi ya itu, sayang sekali masih down. Moga-moga aja cepet balik normal.

Catatan Kecil Oracle “rownum”

-- rownum menunjukkan urutan fisik dari record
-- dalam database
SELECT rownum row1, a.k_agama, a.content FROM m_agama a;

-- jika kita order hasil query maka rownum tidak lagi akan urut
-- karena rownum menunjukkan posisi asli dari record
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content;

-- jika query model ini diterapkan limit hasil query (emulasi LIMIT)
-- maka akan dihasilkan hasil yang salah
SELECT rownum row1, a.k_agama, a.content FROM m_agama a WHERE rownum <= 5 ORDER BY a.content;

-- dengan multi select maka bisa didapatkan urutan dari query
-- yang menggunakan order
SELECT rownum row2, b.row1, b.k_agama, b.content
FROM
(
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
) b;

-- dengan menggunakan model query terakhir maka bisa diperoleh record yang
-- dibutuhkan (implementasi query LIMIT seperti di mysql)
SELECT rownum row2, b.row1, b.k_agama, b.content
FROM
(
SELECT rownum row1, a.k_agama, a.content FROM m_agama a ORDER BY a.content
) b
WHERE rownum <= 5;