Archive for March, 2006

Arogansi? Kurang PD? Ataukah Iri?

Dapet email dari salah satu mailing list, cuman pengen ngomentari aja,

Subject: [FM] Gerombolan Harley Davidson Makin
Memuakkan dan Menjijikkan !

Dear para netters yang budiman….

Cerita tentang kearoganan gerombolan Harley Davidson
(HD) di jalanan
mungkin sudah kelewat basi. Sudah berkali-kali
menjadi keluhan para
pengguna jalan selama ini. (ingat seorang Bapak yang
ditabokin
gerombolan itu hanya karena mobilnya menghalangi
arus HD?). Saya
sendiri baru saja mengalami kejengkelan luar biasa
terhadap para
cecunguk itu, Minggu sore (5/2) kemarin di Jalan
Cinere Raya.

Sore itu, Jalan Cinere Raya yang rusak itu macet
seperti biasanya,
baik ke arah Sawangan/Parung, apalagi ke arah
Jakarta. Sendirian,
saya mengendarai mobil dari arah Jakarta ke arah
Sawangan. Arus mobil
hanya dapat merambat pelan, demikian juga dengan
arus kendaraan ke
arah Jakarta, yang malah lebih padat.

Ketika tiba di depan perumahan di dekat Polsek
Cinere, terdengar
bunyi sirine melengking dan deru suara motor yang
sangat gaduh. Tak
lama kemudian gerombolan cecunguk pengendara Harley
Davidson, yang
jumlahnya sekitar dua puluhan, tampak dari arah
berlawanan (dari arah
Sawangan kea rah Jkt).

Ketika itu saya sempat berpikir positif, “Ah, kalau
lagi macet begini
mungkin mereka akan lebih sabar dan sopan, berderet
rapi mengikuti
arus yang memang sedang merambat pelan”. Tapi
rupanya tidak ! Saya
memperlambat kendaraan karena khawatir tersenggol
motor2 mahal
mereka, yang mulai menyelip, memasuki ruang di sisi
kanan mobil saya.
Ketika mobil di depan saya sudah lebih maju, arus
motor Harley dari
arah berlawanan semakin banyak dan dengan arogannya
mengambil kira2
sepertiga lajur di depan saya.
Para pengendara itu dengan tangannya menyuruh
saya lebih
minggir ke kiri, padahal sisi jalan sebelah kiri
juga sudah mentok.
Ketika itu mobil saya sudah hampir sampai bagian
jalan yang bottle-
neck. Sementara, di sisi kanan mobil saya sudah
diisi dengan motor2
besar mereka. Jelas, saya enggak mau memaksakan diri
lebih mepet ke
kiri, wong saya bergerak di lajur yang semestinya !!
Karena saya
enggak mau ngalah, para cecunguk itu pun gondok dan
meraung2kan
gasnya. Saya lalu balas mengedip2kan lampu jauh
mobil saya kpd motor2
di depan saya itu. Mereka gak terima. Salah seorang
begundal HD lalu
menggebrak kap mobil saya.

Mungkin, karena saya perempuan, dipikirnya saya
takut. Saya
buka jendela mobil sampai habis, dan saya teriak:
"Hey, jangan norak
lu, gebrak2 ! Elu yang minggir !!"

Begundal itu kayaknya tambah panas, dan ngegebrak
lagi. Jelas saya
enggak terima. Dengan kepala melongok ke luar
jendela, saya pun
mendampratnya lagi dengan desibel suara makin tinggi
(baca:teriak).
Terpaksa deh, jadi tontonan para pengendara mobil
lain.
Tiba-tiba, mungkin karena marah didamprat perempuan
(kecil pula),
salah seorang pengendara lain yang bertubuh gempal
banget melayangkan
tangannya yang kekar ke arah saya yang masih
melongokkan kepala ke
luar jendela sambil mendamprat. Saya pikir dia
belagak ngancam mau
nempeleng, rupanya spion mobil saya digamparnya
dengan kuat sampai
terlipat ke arah dalam.

Saya benar2 panas, akhirnya saya maki dia dengan
sumpah
serapah kasar (yang pertama kali keluar dari mulut
saya di tahun 2006
ini), tentu dengan teriakan. Saya sebenarnya jarang
memaki sekasar
itu, paling banter semacam “brengsek atau setan”.
Tapi magrib yang
hampir azan itu, mulut saya seperti kesurupan dan
menyemburkan segala
makian2 ekstrim.

Ego pun makin nekat. Suara makian saya makin kencang
dan dengan
segenap kekuatan mengumpulkan ludah di mulut dan
menyemburkannya ke…

=== message truncated ===

Hmm, pertama saya perlu koreksi, bukan hanya HD aja, banyak moge2 lain juga ngikut dalam “pack” semacam itu. Terus, mengapa mereka melakukan hal itu? Selain sebuah Arogansi dan Eksklusifitas—Karena emang yg mereka naiki beda, dan emang dibedakan oleh Pemerintah, menurut saya mereka juga sebenernya kurang PD. Mereka mungkin punya kekurangan di sana-sini yg memang ingin di tutup2 i dengan berbuat semacam itu, misalnya: Impoten, Istri-nya lari, Mamanya galak, dsb…

Yang kedua, pemerintah, seharusnya ngga membedakan. Jangan hanya karena emang pajaknya besar—terkadang juga ngga dibayar ama biker2 tsb, maka mereka di istimewakan. Tidak sesuai dengan Sila ke-5 Pancasila.

Yang terakhir, berkaitan dengan si ibu yg marah2 tadi, banyak juga kok yg lain yg marah2 Juga di Milis, komentarku sih: “Ngga Usah Iri”. Sori kalo emang keras, soalnya kita udah terbiasa banget dengan: Lihat arak2 an moge, iri, Liat mercy lewat Iri, liat Honda Jazz kilap, Iri, liat rumah guede, Iri. Dari iki akhirnya dengki, dan dari situ, muncul ketidakpuasan ini. Saran saya, udah biarin… Emang mereka kuat beli, biarin aja, kita harus bahagia dengan apa yg kita punya.

Last but not least, Menurutku, Eksklusivitas, Massa dan Iri Dengki adalah pokok2 dari permasalahan ini yg harus di Hindari.

Thursday, March 16th, 2006 | Tags: Weblog | 3 Comments

Gosip-Gosip

Kemaren sore, sempet aku dikejutkan dengan kabar burung bahwa aku akan resign dari XXX.com; Beberapa temen2 menanyakan hal tersebut. Aku sendiri bingung, napa yah kok tanya begitu? Eh ternyata setelah aku tanyakan se nara-sumbernya, dia jawab:

Kemaren Mr. Babe tanya ke saya, punya programmer java ngga? Aku pikir, semua programmer dah numplek-blek di KL, terus, ngapain cari programmer Java lagi? Wah, mesti ada apa2 dengan ndoweh.

Well, aku sih belum ada niatan untuk resign, masalahnya, bandwidth nya masih buanyak untuk dihabisin. Ntar kalo udah lemot lagi, baru aku mikir2 untuk resign :))

Wednesday, March 15th, 2006 | Tags: Weblog | 4 Comments

Daftar Kota dan Propinsi

Tepat 1 minggu yg lalu, saya bersama dengan Isdah, menyelesaikan website GrahaPromo.com—website iklan. Sempet muncul beberapa konsep baru yg emang pengen banget saya share ke pembaca semua. Salah satunya adalah options Propinsi dan Kota. Dua buah select input yg satu berisi daftar propinsi dan yg lain berisi daftar kota. Apabila select propinsi kita pilih “Jawa Timur” Maka select kota akan berisi daftar kota di Jawa Timur aja.

Pengennya sih mau langsung implementasi pakai XmlHttpRequest alias AJAX. Tetapi, ketika saya browsing2 di Aleto.ch, saya nemu sebuah cara untuk buat fungsi ini bekerja tanpa XmlHttpRequest. Alternatifnya kita pakai kemampuan DOM untuk memanipulasi tag <script> dan meng-edit atribut src nya mengarah kepada file PHP penghasil daftar kota kita.

Contoh Kode nya sbb:

// fungsi ini berguna untuk menambah tag html baru lewat
// dom. Ini saya ambil dari http://aleto.ch
function newEle(type, content, toNode, attrs, before) {
    if(type) {
        var ele=toNode.ownerDocument.createElement(type), i;
        if(attrs) for(i=0;i<attrs.length;i+=2) ele[attrs[i]]=attrs[i+1];
        if(content) {
            if(content=="empty") ele.appendChild(
                toNode.ownerDocument.createTextNode(" "));
            else ele.appendChild(toNode.ownerDocument.createTextNode(content));
        }
        if(before) toNode.parentNode.insertBefore(ele, toNode);
        else toNode.appendChild(ele);
        return ele;

    } else {
        toNode.appendChild(toNode.ownerDocument.createTextNode(content));
    }
}

Dengan fungsi di atas, kita bisa memanipulasi tag <script> untuk mengakses URL php kita, dimana file PHP mengoutputkan kode JavaScript yg akan mengisi select kita dengan data kota yg di-inginkan.

Kemudian kita buat fungsi Callback yang akan dipanggil oleh aplikasi server kita—dalam hal ini sebuah script PHP yang mengoutputkan kode2 javascript.

// dipanggil oleh file PHP yang kita akan request via tag <script>
// kerjanya cuman nge-reset isi select propinsi dan kota, kemudian
// mengisi dengan data baru
function setCity(selProp, selKota) {
    if (p = document.getElementById("propinsi")) {
        if (p.options.length == 0) {
            selIndex = -1;
            for(i=0;i<arrPropinsi.length;i++) {
                p.options[i] = new Option(arrPropinsi[i], arrPropinsi[i]);
                if (arrPropinsi[i] == selProp) selIndex = i;
            }
            p.selectedIndex = selIndex;
        }
    }

    if (k = document.getElementById("kota")) {
        k.options.length = 0;
        k.selectedIndex = -1;
        selIndex = -1;
        for(i=0;i<arrKota.length;i++) {
            k.options[i] = new Option(arrKota[i], arrKota[i]);
            if (arrKota[i] == selKota) selIndex = i;
        }
        k.selectedIndex = (selIndex == -1) ? 0 : selIndex;
    }
}

OK. JavaScript nya kita putus sebentar, kita buat kode PHP nya.

<?php
header("Content-Type: text/javascript");

$conn = mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($data) or die(mysql_error());

$p = isset($_GET["p"]) ? $_GET["p"] : "";
$k = isset($_GET["k"]) ? $_GET["k"] : "";

$arr_propinsi[] = "";
$arr_kota = array();

$rs = mysql_query("SELECT DISTINCT propinsi FROM kota", $conn)
    or die(mysql_error());
while($row = mysql_fetch_array($rs)) {
    $arr_propinsi[] = $row["propinsi"];
}
mysql_free_result($rs);

if ($p) {
    $rs = mysql_query("SELECT * FROM kota WHERE propinsi LIKE '$p'", $conn)
        or die(mysql_error());
    while($row = mysql_fetch_array($rs)) {
        $arr_kota[] = $row["kota"];
    }
}
?>

arr_propinsi = ['<?php echo implode("','", $arr_propinsi); ?>'];
arr_kota = ['<?php echo implode("','", $arr_kota); ?>'];

// pemanggilan fungsi setCity kita tulis di sini,
setCity('<?php echo $p; ?>', '<?php echo $k; ?>');

INGAT: kode diatas adalah kode PHP yang outputnya berupa JavaScript, bukan HTML, jadi jangan lupa, content-type header kita set ke javascript, bukan standard PHP yang text/html.

Kita lanjutkan ke JavaScript kita, sekarang tinggal kita sambungkan “missing-link” dari keduanya dengan menggunakan DOM.

function getCity() {
    propinsi = ((p=document.getElementById("propinsi")) && p.selectedIndex > -1)
        ? p.value
	: currProp;
    kota = ((k=document.getElementById("kota")) && k.selectedIndex > -1) ? k.value : currCity;
    if(server=document.getElementById("server")) server.parentNode.removeChild(server);
    newEle("script","",document.getElementsByTagName("head")[0],
        ["src","/getcity.php?p="+propinsi+"&k="+kota,"type","text/javascript","id","server"]);
}

currProp="";
currCity="";

window.onload = function() { getCity(); }

Fungsi diatas, akan kita sambung dengan event onClick select propinsi. Tugas utamanya cuman mengambil isi dari propinsi & kota yang kita pilih, kemudian mencari tag <script> dengan atribut id = server di bagian head html, dan mengganti atribut src nya dengan URL getCity.php?p=nilai_propinsi&k=nilai_kota
Untuk inisialisasi awal, hook event onLoad, dengan fungsi diatas, untuk inisialisasi select propinsi dan kota, dan variabel global inisialisasi.

Tinggal setting html nya

Propinsi: <select id="propinsi" name="state"
	onchange="getCity()"
	onkeyup="getCity()"></select><br />
Kota: <select id="kota"
	name="city"></select><br />

Pengen liat hasilnya? Silahkan coba Live Demo nya. Bila anda ingin men-download dan mencobanya sendiri, silahkan download attachment di bawah. Mungkin anda perlu database propinsi dan kota se-Indonesia untuk menjalankannya. Anda juga bisa lang meng-execute file insertkota.php yang saya generate dari wikipedia, untuk mengisi data propinsi dan kota anda.

Attachment:

Tuesday, March 14th, 2006 | Tags: Articles, Javascript, PHP | 8 Comments

Hello Again World

Setelah vakum beberapa saat, akhirnya saya blogging kembali. Keputusan ini begitu mendadak, karena komputer kantor saya sering ngadat, bluescreen terus. Akhirnya males banget ngerjain proyek2 yg seharusnya saya kerjakan secepatnya, terutama reporting.

Lantas, apa hubungannya dengan blogging kembali? Mumpung lagi males kerja, daripada brosing2 ngga keruan, mendingan aku blogging aja, sayang kan bayar duwit hosting tapi ngga dipake apa2

OK, back to blogging, same person, different flavor

Thursday, March 9th, 2006 | Tags: Weblog | 4 Comments