Dua Tahun Bekerja di Nusanet

Monday, September 17th, 2007

Tak terasa sudah dua tahun aku bekerja di Nusanet. Padahal rasanya baru kemarin aku mengirimkan lamaran. Dan masih jelas di ingatanku saat mengikuti beberapa tes dan wawancara disini. Tapi ternyata dua tahun sudah berlalu.

Di sini aku bekerja sesuai dengan bidang yang aku tekuni sewaktu kuliah dulu yaitu coding dan ngoprek linux. Dan itu sudah menjadi hobbiku selama beberapa tahun belakangan ini. Bayangkan saja, di luar sana orang berani membayar mahal untuk menyalurkan hobbinya. Tapi kondisi ini terbalik bagiku, aku dibayar untuk menyalurkan hobbyku (walaupun gak dibayar terlalu mahal, hihihi).

Sampai saat ini aku masih betah disini. Mungkin hal ini di dukung juga oleh kondisi kantor yang masih nyaman dan internetnya yang kencang :)

Beli Kaos Geek Dari Baliwae

Monday, September 10th, 2007

Bagi anda yang sehari - hari berkecimpung di dunia IT, memakai kaos geek tentunya memiliki kesan tersendiri. Setidaknya orang yang melihat anda memakai kaos ini, tahu kalau anda itu orang IT ataupun orang yang cukup geek.

Untuk itu tanggal 3 Agustus kemarin aku memesan kaos geek dari Baliwae. Sebenarnya dari dua tahun yang lalu aku ingin memesan kaos ini, cuma selalu ada saja halangannya. Kaos yang kupesan kali ini sampai pada hari Jum’at 7 Agustus 2007, karena memang lama pengiriman dari Bali ke Medan memakan waktu 3 sampai 4 hari. Orderan ini terdiri dari 5 buah kaos. Aku sendiri memesan 3 buah kaos yaitu kaos PHP, Debian, dan kaos Ubuntu. Sedangkan sisanya lagi adalah punya teman, lumayan untuk menghemat ongkos kirim :)

Koq beli kaos PHP?

Kaos PHPAwalnya sih aku gak niat untuk membeli kaos ini, karena di bagian belakang ada tulisan “People Hate Perl” plesetan dari PHP. Karena aku sendiri tidak membenci perl, dan bisa - bisa aku digebukin sama pencinta perl jika memakai kaos ini :)
Cuma karena aku pencinta PHP, dan selama 2 tahun belakangan ini aku makan dari keahlianku menggunakan bahasa ini, ya tidak ada salahnya aku beli kaos ini. Kaos ini cukup bagus dan bahannya lumayan tebal. Kalo ratingnya pake bintang, 4 bintang deh untuk kaos ini.

Koq beli kaos Ubuntu?

T-Shirt UbuntuSebenarnya kaos ini adalah kaos pengganti. Sebelumnya aku memilih kaos python, cuma karena stok kaos ini untuk ukuran badanku sudah habis, jadinya aku memilih kaos Ubuntu. Masih nyambung juga sih kaos Ubuntu ini dengan kehidupanku, soalnya di kantor aku menggunakan Ubuntu. Kaos ini sangat bagus dan bahannya lumayan tebal, sesuai dengan harganya yang lebih mahal diantara kaos - kaos yang lain. Lima bintang deh untuk kaos ini.

Koq beli kaos Debian?

Kaos DebianAlasanku kenapa membeli kaos ini adalah, karena dua bulan terakhir aku menggunakan sistem operasi ini untuk ngoprek di rumah. Yang mana sebelumnya aku menggunakan Ubuntu. Kaos ini bahannya agak tipis, sehingga kelihatannya kurang bagus. Tiga bintang deh untuk kaos ini.

Sementara ini tiga kaos geek sudah cukup untuk dipakai ngoprek maupun jalan - jalan. Untuk menambah koleksi kaos geek lagi, aku masih menunggu ide - ide kreatif dari tim Baliwae untuk membuat kaos geek yang lebih keren lagi.

Optimasi Left Join Dengan Subquery di MySQL

Monday, September 3rd, 2007

Left Join adalah salah satu dari beberapa tipe join yang terdapat di SQL untuk mengkombinasikan lebih dari satu tabel. Mengkombinasikan lebih dari satu tabel akan mempengaruhi kecepatan suatu query dalam berinteraksi dengan database. Hal ini akan mengakibatkan aplikasi lebih lambat menampilkan informasi. Pada tulisan kali ini saya akan mengambil contoh penggunaan Left Join dengan 2 tabel, yaitu tabel berita dan tabel komentar dengan key berita_id.

Tabel berita memiliki attribut berita_id, tanggal, judul dan berita. Tabel komentar memiliki attribut komentar_id, pengirim, email, komentar dan berita_id. Kedua tabel ini hanya merupakan sampel yang kondisinya memenuhi syarat untuk menggunakan LEFT JOIN. Kalaupun ada kesamaan tokoh, karakter dan lain sebagainya bukanlah disengaja (koq kayak filem ya? hihihihi)

Untuk menampilkan informasi dari berita dengan jumlah komentar pada setiap berita, dapat menggunakan query berikut :

SELECT A.berita_id, A.judul, A.berita, COALESCE(COUNT(B.komentar_id), 0)
AS total_komentar FROM berita A LEFT JOIN komentar B
USING(berita_id) GROUP BY A.berita_id ORDER BY berita_id DESC

Kenapa query di atas bisa menjadi lambat dengan data dalam jumlah besar?

Karena query tersebut menghitung jumlah key pada tabel sebelah kanan (komentar) sebanyak key pada tabel sebelah kiri (berita). Maka jika tabel berita berisi 4000 data dan tabel komentar berisi 8000 data, maka query diatas akan melakukan pengecekan jumlah komentar sebanyak 4000 kali terhadap 8000 data komentar.

Bagaimana cara mengoptimasinya?

Query diatas dapat dioptimasi dengan membuat tabel di sebelah kanan (komentar) jumlah datanya lebih kecil atau sama dengan jumlah data pada tabel sebelah kiri (berita), dan tidak menghitung key pada tabel sebelah kanan sebanyak jumlah key pada tabel sebelah kiri (berita). Untuk melakukan hal ini bisa dengan menggunakan subquery.

SELECT A.berita_id, A.judul, A.berita, COALESCE(B.total_komentar, 0)
AS total_komentar FROM berita A LEFT JOIN
(SELECT berita_id, COUNT(komentar_id) AS total_komentar
FROM komentar GROUP BY berita_id) B
USING(berita_id) GROUP BY A.berita_id ORDER BY berita_id DESC

Dari query diatas, dapat dilihat tabel sebelah kanan (komentar) berisi subquery yang menghasilkan attribut berita_id dan total_komentar dengan jumlah data yang lebih kecil atau sama dengan jumlah data pada tabel sebelah kiri (berita). Kemudian dengan tabel sebelah kiri dan kanan dikombinasikan tanpa ada penghitungan key pada tabel sebelah kanan sebanyak key pada tabel sebelah kiri. Query ini jika dieksekusi akan memakan waktu sebesar 0.01 detik jauh lebih kecil dari query yang sebelumnya.

Sejauh ini saya masih menggunakan subquery untuk mengoptimasi LEFT JOIN pada contoh kasus seperti di atas. Pada contoh kasus di atas penggunaan subquery meningkatkan waktu eksekusi sebesar 90%.