• Database

    Kecewa Dengan data.go.id

    Saya suka bermain dengan data, parsing-parsing html untuk ambil data, utak-atik data di web orang untuk disajikan di web sendiri, dll. Terakhir beberapa hari lalu nyedot data Badan Pengawas Obat dan Makanan (BPOM).

    Semangat saya bangkit lagi waktu ngeliat kumpulan data di Satu Data Indonesia, yang dari halaman aboutnya disebut sebagai “Portal resmi data terbuka Indonesia sebagai wujud operasionalisasi inisiatif Satu Data”.

    Bayangkan betapa angan-angan saya melambung melihat begitu banyak data untuk diparse dan dibuat interfacenya. Tapi ternyata begitu saya lihat detailnya, sungguh mengecewakan. Datanya data lama semua, gak ada yang up to date.

    Karena penasaran, akhirnya saya urutkan data berdasarkan update terakhir, yang paling terakhir diupdate datanya dimunculkan duluan. Ini 9 data terakhir (data dilihat tanggal 26 Oktober 2018):

    JudulData TahunTanggal Update
    Data Sebaran Bangunan di Kota Palu dan Kabupaten Donggala2015-201714 hari yang lalu
    Peta Lingkungan Pantai Indonesia Skala 1:25.000 Wilayah Palu2010-201423 hari yang lalu
    Peta Lingkungan Pantai Indonesia Skala 1:50.000 Wilayah Palu201523 hari yang lalu
    Peta Rupabumi Indonesia Skala 1:5000 Kawasan Industri Sebagian Wilayah Kota Palu201723 hari yang lalu
    Peta Rupabumi Indonesia Skala 1:10.000 Wilayah Palu Dan Kendari201323 hari yang lalu
    Data Fasilitas Kesehatan di Kota Pontianak2016-2017Lebih dari 1 tahun yang lalu
    Data RW di Kecamatan Pontianak Utara2017Lebih dari 1 tahun yang lalu
    Data Tanda daftar Perusahaan 
    yang diterbitkan oleh DPMTK PTSP Kota Pontianak
    Jan-Maret 2017Lebih dari 1 tahun yang lalu
    Data RW di Kecamatan Pontianak Timur2017Lebih dari 1 tahun yang lalu

    Bayangkan, data yang diupdate tahun ini cuma ada 5, itupun berkaitan dengan wilayah Palu yang baru saja terkena musibah. Kalau Palu tidak kena gempa dan tsunami mungkin tahun ini tidak ada update data.

    Memang ada data-data seperti APBD DKI sudah disediakan oleh Portal data Pemda DKI (dengan software yang sama), tapi ada baiknya kalau data.go.id juga punya datanya, minimal tautan menuju data aslinya sehingga data.go.id bisa benar-benar menjadi pusat data nasional. Semua orang bisa mencari data ke data.go.id.

  • Programming

    Tentang sedjat1.dx.am

    Awalnya, saya cuma punya 1 blog di sedjat1.zz.mu, pada suatu saat saya gak bisa akses web itu sama sekali. Sesudah beberapa jam saya gak bisa akses akhirnya saya putuskan untuk bikin blog lagi di hosting gratis yang lain. Dengan berbekal backup database yang ada di notebook, akhirnya saya bisa menduplikasi sedjat1.zz.mu ke blog.sedjat1.dx.am.

    Di tempat baru saya sengaja bikin sub domain sendiri untuk blog karena niatnya, saya bikin blog yang aneh bin ajaib, beda dari yang lain. Blog yang bentuknya seperti terminal console, yang kalo mau liat isinya, harus ngetik perintah dulu, biar kaya jaman DOS.

    Penampilan sedjat1.dx.am, bar putih yang paling bawah itu ngedip kaya kursor terminal.

    Rencananya kalo ngasih perintah dir baru muncul list entri blognya, terus ada perintah open untuk baca entry blog. Dan rencananya juga, engine blog nyimpen berkas blognya bukan di database. Karena ini buatan jaman dulu banget, jadi scriptnya juga masih cupu (klik READ MORE untuk source codenya).

    Tapi ternyata, sesudah blog baru selesai diinstall, ternyata hosting lama saya masih bisa di akses, akhirnya jadi punya 2 blog. Dan yang ini jadi blog ketiga. Uhuy.

  • Database

    Bank Data

    Saya mau bagi-bagi data hasil crawling di internet. Untuk sementara baru satu dulu, nanti kalo ada data yang lumayan bagus untuk di-share pasti saya update lagi.


    Kamus Besar Bahasa Indonesia

    Konon pada jaman dahulu kala, website resmi KBBI Daring masih gampang di ambil datanya, kalo yang sekarang udah susah, harus jadi member kalo mau agak bebas, itupun tetap dibatasi. Dulu saya nge-grab data pake Delphi disimpan dalam format cds binary (client data set), tapi sesudah kenal SQLite saya convert ke SQLite biar gampang diakses sama program apapun.

    Dulu saya punya website apasih.lupa-nama-domain-gratisnya.com yang isinya hasil grabbing data KBBI Daring, saya bikin sendiri karena website KBBI jaman dulu gak bisa ngasih rujukan (tautan) ke entri tertentu karena gak nyediain pencarian lewat HTTP GET.

    Databasenya terakhir udah campur isinya, ada KBBI Daring, KBBI dan TBI. Yang KBBI dan TBI saya lupa sumbernya dari mana, tapi yang pasti TBI itu singkatan dari Tesaurus Bahasa Indonesia.

    Berikut ini struktur table apasih:

    FieldKeterangan
    idInteger, sequential
    katakata dasar
    artiarti kata, dalam format html
    sumbersumber data

    Download Data

    Link download ada di halaman Bank Data SQLite.

  • Programming

    Data Harvest: POM.GO.ID

    Awalnya sederhana aja, abis baca “Kolom” di detik.com langsung inget, di Indonesia ada BPOM (Badan Pengawas Obat dan Makanan) dan dari websitenya kita bisa tau apakah sebuah produk obat dan makanan benar-benar aman untuk dikonsumsi. Entri pertama dari penelusuran Google dengan keyword “bpom” langsung tepat, dan disana ada sub-result menuju web yang saya mau: Cek Produk BPOM.

    Saya langsung cari nama produk berdasarkan kata kunci air kemasan yang ada di meja saya: Pristine. Hasilnya ada 9 data dan semuanya gak ada sangkut pautnya sama air mineral keluaran grup sinarmas. Saya coba ulang dengan nomor registrasinya: MD 265210006138, baru deh nongol datanya. Ternyata “Pristine” itu merk, sedangkan nama produknya sendiri adalah “Air Minum pH Tinggi”.

    Abis baca keterangan sekilas, langsung aja reflek: klik-kanan – View Source. Keliatan deh raw html-nya, ternyata halaman pencarian dibuat dengan table standar, data diload oleh script php (tidak pakai ajax) dan paging sederhana. Semua parameter ada di address bar browser, dan diantara parameter yang ada, si programmer nyisipin session php. Mungkin niatnya supaya datanya gak bisa di lihat tanpa melalui browser, tapi downside-nya orang gak bisa ngasih tautan referensi ke entri tertentu. Oh iya, satu lagi, baris data hasil pencarian bisa di klik untuk menampilkan detail entrinya, dan ini diload dengan ajax.

    Data detail muncul setelah row di-klik.

    Karena liat langsung raw html agak susah, jadi Ctrl+Shift+I untuk ngeluarin DevTools dari browser. Jaman dulu yg begini susah banget, satu2nya tools yang lumayan mumpuni addon dari Firefox yang namanya Firebug, tapi berhubung browser2 modern udah meng-embed fungsi ini jadi Firebug di-mati-in deh.

    Inspeksi raw html tabel hasil pencarian

    Dari inspeksi elemen, bisa dilihat dalam tiap <tr> produk ada custom attribute bernama urldetil yang digunakan untuk me-load data detail dari produk dengan ajax call.

    Request AJAX untuk mengambil data detail.
    Response berupa halaman html yang siap ditampilkan.

    Nah, sebenernya data detail ini yang harusnya di harvest, dan data dari table hasil search dibutuhkan untuk mendapatkan ID dari itemnya. Jadi ini langkah-langkah untuk harvest datanya:

    • Buka https://cekbpom.pom.go.id dan simpan cookie, ambil session_id php.
    • Request ke url untuk search https://cekbpom.pom.go.id/index.php/home/produk/ {PHP_SESSION_ID}/all/row/{ROW_PER_PAGE}/page/{PAGE_NUMBER}/order/4/DESC/search/{KATEGORI}/{KATA-KUNCI-PENCARIAN}
    • Parse response html-nya, ambil tiap urldetil dan request lagi ke
      https://cekbpom.pom.go.id/index.php/home/detil/{PHP_SESSION_ID}/produk/{URLDETIL}
    • Parse lagi response-nya untuk mendapatkan data detail.

    Cara paling gampang dan cepat yang terpikir oleh saya adalah dengan menggunakan PHP. Script yang saya gunakan bukan untuk dibuka oleh browser, tapi script php dipanggil lewat terminal php -f namafile.php [parameter]. Setelah beberapa kali mencoba, saya dapat draft kasarnya, beberapa parameter masih di hardcode dan hasil berupa json disimpan ke dalam satu file (klik READ MORE untuk source-code php-nya).

  • Hiburan

    Winamp

    Siapa gak kenal Winamp? Pemutar musik paling keren yang pernah ada. Dan seperti software sukses yang lain, Winamp berevolusi dari sederhana menjadi gendut (seperti ACDSee). Versi awal Winamp cuma punya Player, Equalizer, Playlist dan ada Plugin. Plugin ada dua macem: Audio dan Visualization. Bentuknya sederhana tapi ada begitu banyak user yang bikin begitu banyak skin untuk dipakai.

    Classic skin yang masih ada di Winamp versi terakhir.

    Pada jaman dahulu kala, waktu harga storage masih mahal dan USB Flashdisk belum lahir, file audio (wav) untuk satu lagu berdurasi 4 sampai 5 menit berkisar 60MB sampai 120MB tergantung kualitas audionya. Lalu datanglah MP3, sebuah kompresi audio yang bisa menghemat begitu banyak storage, 1 lagu bisa disimpan dalam 3MB sampai 6MB. Dan pada saat itu, mengompres lagu ke format MP3 butuh waktu 30 menit hingga 1 jam per lagu (lupa ini pake 486 atau Pentium II).

    Winamp skin versi modern, posisi tombol dan besar window bisa berubah.

    Winamp adalah MP3 player pertama yang saya kenal dan dukungan skin adalah feature paling keren saat itu. Terus piye kabare? Setelah saya telusuri, Winamp terakhir mempunyai versi 5.666 dirilis tanggal 12 Desember 2013 dan hingga saat ini tidak ada rilis baru.

    Di forum resminya, rencana rilis terbaru diposting tanggal 19 Oktober 2016, dalam posting itu diberitakan bahwa program sudah stabil digunakan dan akan menempuh fase final testing. Sesudah itu tidak ada berita resmi lagi di forum tersebut sampai postingan terakhir.

    Frameless Winamp Skin

    Baru-baru ini techcrunch.com mengabarkan Winamp akan terlahir kembali tahun depan (versi 6), namun sebelum itu pada tanggal 18 Oktober tahun ini akan ada rilis versi 5.8. Kaya’ apa yah winamp tahun depan?