Goto post entries

JavaScript is disabled or you're using old browser, please turn on your JavaScript or upgrade your browser to see fancy looking.

Newer Entries  Older Entries 

World University Names Database

I’ve been searching for university names database, but i didn’t find complete database that covers at least universities in 240 countries. I decide to crawl university names in LinkedIn and Webometric, since both give university names based on country code. If you are in hurry to get university names database, you can download them here. If you are interested to know how to crawl the LinkedIn and Webometric university names data and build the database, then hang on with me.

I used Python to crawl LinkedIn and Webometric. It was accidental, when i edit my profile on my LinkedIn, firebug shows ajax get request to populate university names on select element. So here is my python code to get LinkedIn university names based on country code:
Read the rest of this entry »

Seminar Go Open Source di SMA Sudirman Bekasi

Alhamdulillah telah selesai juga acara seminar Go Open Source di SMA Sudirman Bekasi. Saya sangat beruntung dapat diberi kesempatan sebagai pembicara di acara ini. Basically, para peserta yang notabene adalah siswa/siswi pangsud sangat antusias mengikuti acara, terlebih saat seksi tanya jawab. Mereka melontarkan banyak pertanyaan tentang “apa itu sih Linux?” dan “seperti apa itu sih open source?”. Saya harap mereka akan terus terpacu untuk mengetahui “apa itu Linux dan apa itu open source”. Terima kasih untuk rekan-rekan di pangsud atas kerja samanya, komunitas BELL atas jerih payahnya dan IGOS Center Bekasi atas usahanya untuk memasyaratkan open source. Well, a picture is worth a thousand words, tapi sayangnya saya tidak mengkopi satu photo pun, mungkin akan menyusul.

Saatnya Tembak dan Maju

He.. sudah lama tidak menulis di blog ini. What’s wrong? Well, kalau dibilang sibuk banget, sebenarnya juga tidak. Tapi kerjaan, alhamdulillah, ada terus dan waktu luang yang ada sulit dialokasikan untuk menulis ataupun mengoprek. Hehe.. itu sama saja sibuk ya. Sebenarnya juga tidak, karena dalam sehari pasti ada waktu luang yang “masih” bisa dimanfaatkan untuk menulis dan mengoprek. Berarti disini ada faktor lain yang menyebabkan si waktu luang tidak teralokasikan dengan baik. Ya, tepat sekali, karena apa? Benar sekali tebakan Anda, malas telah menurunkan produktifitas. Apakah saya malas selalu? Tentu tidak, saya juga mempunyai semangat untuk mempelajari teknologi terbaru dan saya senang mengoprek apa yang saya ingin ketahui. Dalam hal ini kondisi saya sedang tidak in.

Saya teringat oleh tulisan Joel Spolsky yang berjudul Fire and Motion. Ada saat dimana programmer berada dalam fase tidak produktif dan tidak tahu kapan dapat kembali ke masa produktifnya. Seperti halnya orang diet, yang hanya dapat sementara dan kembali ke pola makan biasanya. Dia tidak tahu fase itu. Memang benar apa kata si Joel, seperti ada batu besar di otak kita yang sulit untuk menggulirkannya atau malah menunggu batu itu bergulir dengan sendirinya. Batu diam akan cenderung diam. Namun jika telah berada dalam pergerakan itu, sebaiknya yang perlu dipertahankan adalah pergerakannya, bahkan lebih dipercepat akan sangat bagus. Seperti dibilang Joel, dalam strategi perang apalagi kita hanya diam, maka musuh akan membrondongi kita. Well, saatnya saya mulai tembak Anda dan bergerak maju (Cover me! I’ll move to that bridge and shoot that bastard).

Contoh Penerapan Event Delegation

Pada tulisan sebelumnya saya menjelaskan secara singkat event delegation dengan jQuery, maka kali ini akan saya berikan contoh penerapannya dalam aplikasi nyata yang pernah saya kerjakan. Pada contoh ini, saya menggunakan jQuery 1.3.2, jQuery UI (ui.core, ui.dialog, ui.draggable dan ui.resizeable). Dalam contoh ini terdapat ratusan div yang berfungsi sebagai cell, dimana setiap cell ini terasosiasi dialog div yang berisi informasi yang di load secara ajax. Div yang berperan sebagai dialog terinisialisasi dari event click setiap cell. Jadi ini akan menghemat jumlah elemen di dalam dokumen HTML.

Untuk melihat demonya silahkan klik disini. Sumber kodenya bisa di unduh di sini. Penerapan event delegasi terdapat di berkas box.js. Cukup perhatikan bagian kode menjelang baris akhir, khususnya dalam event handler click :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.click(function(e) {
        $target = $(e.target);
 
        if ( $target.hasClass('cell') ) {
            var offset = $target.offset();
 
            var targetID = $target.attr('id');
            var targetBlock = $target.attr('cellblock');
            var targetRow = $target.attr('cellrow');
            var targetCol = $target.attr('cellcol');
            var dialogID = 'dialog_' + targetID;
 
            $("body").prepend('<div class="cellPopup" id="' + dialogID + '" title="Cell Information">Loading...</div>');
 
             $("#" + dialogID).load("box_ajax.php?block=" + targetBlock  + "&row=" + targetRow + "&col=" + targetCol, {}, function(data){
                 if ( data ) {
                    $(this).html( data );
                 }
            });
 
            // set as UI dialog
            $("#" + dialogID).dialog({
                position: [offset.left, offset.top],
                bgiframe: true,
                modal: true,
                stack: false		
            });
 
        }
});

Properti e.target dari objek event merupakan element yang sedang ditangani oleh event handler click ini. Saya menjadikannya objek jQuery dengan $target = $(e.target); agar dapat menggunakan method dari jQuery. Kemudian saya memastikan bahwa target element tersebut memiliki class cell. Jika target yang diklik ini memiliki class cell, saya akan membuatkannya sebuah div dialog yang bisa didrag dan diresize dimana offset dialog akan berdekatan dengan posisi div.cell tersebut dan isi dari dialog tersebut merupakan respon dari ajax.

Delegasi Event dan Event Bubbling di Jquery

Suatu saat saya sedang bekerja dengan proyek yang banyak melibatkan binding event ke banyak element dinamis. Maksud saya adalah element yang tercipta dari interaksi user seperti dari penggunaan appendChild. Seperti diketahui bahwa saat dokumen HTML dan JavaScript nya selesai terunduh dari server, peraba dari pengguna akan membind event handler hanya ke element yang ada saat itu, yaitu element yang terdapat pada saat dokumen terunduh. Jadi event handler hanya akan dibind sekali pada satu waktu. Jika tercipta elemen baru hasil manipulasi DOM dari interaksi pengguna maka jangan heran jika elemen baru dengan class sama tidak ditangani oleh event handler yang sudah Anda tulis. Untuk lebih jelasnya mari lihat kode JavaScript (dengan jQuery) berikut:
Read the rest of this entry »

Newer Entries  Older Entries