• Programming,  Software

    A little new project

    Seperti program-program saya yang lain, saya biasanya remake program yang pernah saya buat sebelumnya dengan versi yang lebih baik lagi. Kali ini yang saya sedang remake adalah PaKe atawa Password Keeper. Versi sebelumnya dibuat dengan php tanpa ada javascript 1 baris pun.

    Bentuknya lebih mirip dengan encrypted note taking app dengan konsep struktur folder dan file, jadi bikin folder nanti foldernya bisa diisi file atau folder lain, jadi  infinite folder depth, maksudnya bisa bikin folder di dalam folder di dalam folder, dst.

    Kemarin waktu nyari semut dapet gajah, saya dapet Joplin yang editornya enak banget. Akhirnya saya mau bikin Note-Taking App yang benar-benar fleksibel dan agak unik. Featurnya kurang-lebih begini:

    1. Seperti Joplin, note terdiri dari struktur Notebook -> Notes (Caption) -> Content.
    2. Data disimpan dalam variabel JSON.
    3. Data disimpan di local storage (jadi bisa offline) unencrypted.
    4. Data bisa di-eksport ke file text dengan keadaan terenkripsi.
    5. Bisa import data dari file text.
    6. Bisa upload ke cloud (next release).

    Tiga poin pertama sudah selesai. Poin 4 dan 5 harusnya bisa selesai cepat, dan selanjutnya tinggal poin ke-6. Untuk project ini saya pake beberapa 3rd party: Pen, Alertify, Stanford Javascript Crypto Library. Untuk project ini saya coba menghindari penggunaan JQuery.

    Dan seperti project lainnya, selalu diselingi saya nyari-nyari program penunjang. Dan saya akhirnya dapet teks editor reliable yang cukup kecil dan ringan: CudaText. Btw, nama projectnya NoteJS.

  • Software

    Mau Semut Dapat Gajah

    Awalnya seperti biasa, iseng-iseng aja, nyari-nyari informasi text editor yang ringan tapi powerful. Niatnya untuk pendamping teks editor utama saya: Notepad++. Pendamping maksudnya kalo yang Notepad++ udah buka 1 project, terus mau buka project lain yang unrelated baru saya pake teks editor kedua. Sebenernya udah ada beberapa yang saya install, saya udah punya keluarganya Joe Editor: joe, jstar, jpico, jmacs, cjoe. Ada juga Visual Studio Code, Atom, Komodo Edit, PSPad, Aptana Studio, dll.

    Berbagai macam IDE atau text editor udah pernah saya coba, tapi yang bener-bener ringan dan cukup powerfull cuma Notepad++. Dalam pencarian, saya nemu yang namanya ICEcoder, text editor dalam browser. Kerennya, teks editor ini bisa dipasang di web hosting, biar bisa edit text file langsung di server.

    Nemu cloud text editor, saya jadi inget program pencatat yang biasa saya pakai, yang menurut saya program pencatat paling mantap. Karena semua fasilitas yang saya bayangkan ada di program itu, namanya: cherrytree. Program pencatat yang menyimpan tree (hirarki), bisa nyimpen data richtext, code snippet, pokoknya macem-macem deh. Nah saya mau program pencatat seperti cherrytree, tapi versi cloud.

    Saya coba install program php yang seperti Pastebin, dapet namanya Stikked. Programnya bagus dan solid, tapi sayangnya program pencatat ini memang bukan dibuat untuk koleksi catatan, tapi lebih ke sharing” catatan. Lanjut pencarian dapet lagi namanya Joplin, yang di potongan deskripsinya ada kata-kata: “The notes can be synchronised with various cloud services“.

    Begitu saya buka homepagenya Joplin disitu ada keterangan bahwa catatan bisa disinkronisasi antara desktop dan android melalui cloud service seperti Nextcloud, Dropbox, OneDrive, WebDav, atau file system (share network). Saya tau Dropbox, saya juga tau OneDrive dari Microsoft, WebDav juga pernah masang di hosting sendiri. Diantara service yang disebutin, yang ada linknya cuma Nextcloud.

    Saya klik link Nextcloud, hover ke menu “Get Nextcloud” ada pilihan: Download for self-hosting on your server. Ini dia yang pengen saya coba. Langsung masuk control panel hostinger, bikin sub-domain baru, install ssh dari letsencrypt, buka putty, login ssh, download Nextcloud langsung di server pake wget, exrtact, baru deh baca-baca manual instalasinya.

    Nextcloud pake PHP versi 7, sementara di hosting saya cuma pakai yang versi 5.6, coba ganti versi ke 7.0 berhasil, sesudah itu cek semua ekstension php yang dibutuhkan dan gagal di satu ekstension: pdo_mysql. Padahal hampir semua program php saya yang pake database mysql menggunakan ekstensi ini. Yang saya langsung cek adalah blog yang pake wordpress, ternyata masih bisa jalan normal, ya udah, karena Nextcloud bisa pake database SQLite, saya lanjut tanpa masang ekstensi pdo_mysql.

    Berhasil masang Nextcloud, yang ternyata mirip OwnCloud yang sebelumnya pernah saya pasang di notebook. Bagi yang gak tau, program ini mirip Google Drive atau yang sejenis (cloud storage). Sesudah itu saya download Joplin untuk desktop dan pasang juga di handphone android saya.

    Joplin mendukung format markdown yang sederhana, catatan disimpan dalam “folder” yang disebut Notebook, jadi pertama bikin Notebook, sesudah itu di dalam notebook bisa bikin entri banyak. Joplin versi desktop berhasil melakukan sinkronisasi melalui https dengan mengaktifkan opsi “Bypass SSL authentication” yang sayangnya tidak tersedia di versi android. Jadi versi android sinkronisasi lewat http aja. Saya harus cari tahu kenapa sertifikat ssl pakai letsencrypt selalu bermasalah (download pake wget juga error).

    Nah, sampai di ujung entri blog baru saya mau ngasih tau, sebenernya catetan yang mau saya simpen itu adalah web-novel, buatan orang lain ataupun buatan sendiri (lagi proses, banyak ide tapi miskin waktu). Jadi untuk sesuatu yang sederhana dan kecil, saya masang program jumbo. Yaaah… itung-itung pengalaman.

  • Omong Kosong

    Perspektif

    Dalam beberapa bencana terakhir yang menimpa Indonesia, ada kelompok masyarakat yang menyuarakan pendapat dalam situs berita (karena saya hampir tidak ber-media sosial, jadi informasi tanggapan masyarakat saya dapat dari komentar di situs berita nasional) yang seolah-olah menyalahkan para korban atas bencana yang mereka alami, yang jadi persoalan adalah, bencana yang terjadi adalah bencana alam.

    Saya tau, dalam Al Qur’an ada riwayat tentang umat Nabi-Nabi terdahulu yang ditimpakan bencana oleh Allah. Sebut saja bencana banjir besar pada zaman Nabi Nuh yang diakui bukan hanya oleh umat Muslim. Saya yakin dan percaya 100% bahwa Allah pernah menghukum umat manusia dengan menimpakan bencana alam.

    Dan sekarang ada sekelompok manusia yang menghakimi (meng-klaim) bahwa bencana alam yang terjadi di Lombok dan Palu adalah hukuman dari Allah atas dosa-dosa yang masyarakat Lombok dan Palu lakukan di dunia. Membaca komentar mereka,  terus terang saya kaget terus langsung terucap dalam hati: kalau mau mengikuti logika mereka, mengapa di negeri-negeri yang mayoritasnya bukan muslim tidak terjadi bencana, padahal disana “pusat”nya maksiat dan dosa.

    Ternyata ada pembaca lain yang berpikiran sama dengan saya dan mengutarakan persis seperti apa yang saya pikirkan, dalam komentar berita terkait, yang lalu dijawab oleh para “hakim”: karena kebaikan mereka di dunia dibalas di dunia, dan dosa-dosa mereka baru akan dibalas di akhirat. Saat membaca komentar balasan ini saya nepok jidat sambil ngomong: “aduh” (yg ini bukan cuma dalam hati).

    Dan kelompok para “hakim” ini ternyata bukan cuma berkomentar di situs berita atau menyebar opini lewat media sosial, mereka bahkan berani “menyerang” persiapan acara kebudayaan dengan dalih apa yang akan diselenggarakan adalah musyrik, dosa paling tinggi sejagad.

    Coba kita geser perspektif, kalau saja kita yang manusia, yang menghakimi bahwa bencana alam tersebut adalah azab, ternyata salah (toh manusia itu tempatnya salah dan lupa). Itu bukan azab melainkan cobaan dari Allah, yang jika para korban tetap tabah dan tawwakal Insya Allah dosa-dosanya digugurkan satu-persatu. Mereka mendapat bencana untuk menebus kesalahan mereka di dunia, dan dosa para manusia yang menghakimi manusia lain dibalas oleh Allah di akhirat nanti. Ini dia yang bikin saya nepok jidat tadi.

    Cobalah untuk berempati, coba berfikir dalam konteks si korban bencana alam. Kalau kita sebagai korban di daerah, terus ada orang dari tempat yang memang aman bencana alam bilang: lu yang salah sih, coba jangan maksiat terus, ibadah yang bener biar gak di-azab sama Allah. Kira-kira kalau kita sebagai korban, sakit hati gak yah? Coba yang menjadi para “hakim” itu ngomong langsung di tempat bencana, kira-kira yang ngomong dikeroyok massa gak yah?

    Sebagai manusia, berhentilah memainkan peran Tuhan, berhenti menjadi Tuhan atas manusia lain, bukankah menghakimi dosa makhluk terhadap Khalik adalah hak Sang Khalik dan melanggar itu merupakan syirik terbesar karena secara esensi berarti menuhankan diri sendiri (menganggap diri sendiri sebagai Tuhan karena sudah memposisikan diri sendiri sebagai Tuhan bagi makhluk lain).

    Memvonis sebuah bencana alam sebagai azab adalah mutlak hak Allah karena memang cuma Dia saja yang tahu apakah sebuah bencana itu sebagai azab atau bukan. Apa kalau saat ini Anda mati, Anda yakin 100% akan masuk surga? Tidak ada yang pasti, karena hanya Allah yang paling tahu. Dan tidak ada yang bisa menjamin, kecuali nama-nama orang yang pernah disebut oleh Rasulullah sebagai penghuni surga (berdasarkan wahyu dari Allah), tidak ada yang bisa memastikan seseorang itu masuk surga atau tidak.

    Lebih baik merasa diri hina karena punya dosa melebihi gunung dan meratap minta ampun daripada merasa ibadah sudah paling benar dan pasti masuk surga. Sebagaimana lebih baik merasa bodoh dan menimba ilmu terus menerus daripada menganggap diri pintar dan berhenti belajar.

  • Database,  Programming

    Mengolah data APBD DKI

    Berawal kekecewaan terhadap data.go.id, saya nyari-nyari data tentang DKI, khususnya tentang APBD, ketemu  di Portal Data Pemda DKI. Dan langsung saya download: 21,5 MB CSV tanpa kompresi.

    Langkah pertama: buka dengan text viewer. LTF Viewer adalah program andalan saya untuk melihat data text besar, jangankan yang puluhan MB, data text ratusan MB aja dengan cepat bisa dibuka. Setelah dibuka terlihat bahwa data csv terdiri dari 55.467 baris (termasuk header di baris pertama).

    LTF Viewer. Open big text file in less than one second.

    Langkah kedua: coba lihat dengan pivot viewer. Dengan berbekal mesin pencari google, saya dapat program pivot viewer bernama Tad. Gampang banget makenya, langsung buka file csv, abis itu tinggal klik-klik aja nentuin urutan field pivotnya.

    Pivot view dengan Tad.

    Langkah ketiga: convert menjadi SQLite. Saya menggunakan program sqlite3 di Ubuntu yang jalan di Windows 10 (WSL: Windows Subsystem for Linux). Cepet banget konversinya.

    Ubuntu @ Windows Subsystem for Linux

    Data format csv bisa dibilang format universal untuk sharing data, selain csv ada json dan xml, tapi untuk kemudahan dan kepraktisan, gak ada yang ngalahin csv. Format csv memang mudah untuk dishare (portable) tetapi susah untuk diolah, jadi lebih baik untuk diconvert ke SQLite. 

    Langkah keempat: normalisasi. Memang data hasil convert dari csv sudah bisa langsung diolah, tapi saya mau data terstruktur biar gampang buat user interfacenya. Tabel hasil konversi otomatis nanti berubah, tapi kita bisa membuat view untuk kebutuhan pivot table. Untuk mengolah database SQLite saya pakai: SQLiteStudio (Free and OpenSource).

    Program favorit untuk mengolah data SQLite.

    Mudahnya menggunakan SQLite, karena struktur table di SQLite tidak mengenal tipe data, jadi pada saat import kita tidak perlu buat tabel dengan struktur data yang pas. Kalau pake MySQL atau yang lainnya, tiap field harus pas tipe datanya, bahkan untuk varchar harus didefinisikan berapa panjang maksimal datanya. Kalau panjang maksimalnya kurang dari data yang mau diinput akan menimbulkan error dan data gagal diinsert.

    This is a long journey, brace yourself and click “Read More”

    — Blog writer —