MariaDB + Galera Cluster + HAProxy untuk Basisdata Lebih Handal

MariaDB + Galera Cluster + HAProxy untuk Basisdata Lebih Handal

HA Proxy Galera

HA Proxy encapsulate a Galera cluster for High-Availability solution.

Ada banyak aplikasi PHP di luar sana yang secara naas belum bisa pindah dari MySQL ke PostgreSQL. Aplikasi seperti WordPress dan Magento. Untuk aplikasi-aplikasi kritikal tersebut, diperlukan adanya redundansi untuk menjamin data. Untungnya, sekarang sudah ada produk Galera Cluster yang bisa mencapai itu. Produk ini menjadikan serangkaian MySQL Server untuk memiliki replikasi data yang sama.

Eh, tapi kayaknya kalau nanti PHP7 sudah resmi, mereka bakal dipaksa menggunakan ADODB, deh. Abstraksi ADODB memungkinkan SQL yang portabel. Hmm… sepertinya alasan ini nantinya bakal tidak ada.

Atau, mungkin Anda tertarik mengetahui bagaimana layanan MySQL Object (DBaaS) pada AWS dibuat? Atau, bagaimana layanan DBaaS pada OpenStack dibuat?

Ah, sudahlah, apa pun alasan supaya artikel ini ditulis supaya menjaga semangat ngeblog. Sejujurnya, saya menulis tutorial ini karena mood lagi naik akibat mendapatkan banyak Pokémon unik tadi siang di Perpustakaan Pusat UI.

Konfigurasi Peladen

Supaya tidak pusing, saya jelaskan dalam contoh kali ini ada 4 peladen. Satu peladen untuk HAProxy (harusnya dua, tapi saya malas). Lalu, tiga peladen menjadi peladen MySQL. Saya memilih untuk menggunakan MariaDB karena gratis dan mudah konfigurasi Galera-nya.

Peladen HAPROXY (selanjutnya dalam artikel akan saya sebut HAProxy)

  • IP 1: 192.168.1.12
  • IP 2: 192.168.101.1

IP 1 adalah IP eksternal yang digunakan untuk berhubungan dengan aplikasi. IP 2 adalah IP internal dalam jaringan lokal basisdata. Perhatikan baik-baik! Implementasi pusat data yang baik seharusnya memisahkan antara jaringan aplikasi, jaringan basisdata, jaringan administrasi, dan jaringan lainnya. Walau pun keempat peladen ini dijalankan pada VirtualBox sekalipun, tetap saya pisahkan untuk menunjukkan arsitektur yang benar.

Ada tiga peladen yang akan digunakan sebagai peladen basisdata. Saya akan namakan MariaDB1 (192.168.101.10), MariaDB2 (192.168.101.11), dan MariaDB3 (192.168.101.12). Walau pun nantinya setiap peladen bisa ditulisi, saya akan menggunakan peladen MariaDB1 sebagai awalan.

Berhubung saya malas, saya akan kurang detail menjelaskan. Silakan tinggalkan komentar bila kurang jelas. Saya menggunakan Debian Jessie sebagai sistem operasi dasar. Lalu, saya memilih menggunakan MariaDB 10.1 karena dia sudah mendukung langsung Galera Cluster.

Memasang MariaDB

Lakukan ini pada setiap peladen MariaDB: MariaDB1, MariaDB2, dan MariaDB3. Pokoknya, identik!

Memasang Peladen MariaDB

Aktifkan repositori MariaDB. Sebagai contoh dengan menggunakan Perkakas Konfigurasi Repositori kali ini saya ambil cermin Biznet karena yang sebelumnya Kartolo. Buatlah berkas /etc/apt/sources.list.d/mariadb.list yang berisi:

Atau cara lainnya:

Setelah itu, impor kunci publik repositori MariaDB:

MariaDB versi 10.1 sudah memasang Galera secara baku. Jadi, perintah pemasangan menjadi lebih mudah, cukup:

Setelah itu, matikan layanan MariaDB:

Atau, kalau Anda nyentrik atau punya alasan idealisme lainnya sehingga tidak menggunakan SystemD:

Setelah ini, konfigurasi Galera.

Berkas yang Identik

Debian Jessie menggunakan konfigurasi /etc/mysql/debian.cnf untuk menyediakan pengguna internalnya. Pengguna internal ini yang digunakan oleh Debian dalam mengonfigurasi peladen MySQL. Salin berkas tersebut dari MariaDB1 ke MariaDB2 dan MariaDB3 sehingga ketiganya memiliki /etc/mysql/debian.cnf yang identik.

Hanya berkas ini yang tidak identik karena dibuat secara otomatis oleh Debian pada saat pemasangan. Tetapi, kita perlu ketiga peladen memiliki konfigurasi yang identik. Itu sebabnya, satu berkas yang berbeda ini yang perlu disamakan.

Buat Konfigurasi untuk Kluster Galera

Pada ketiga peladen (MariaDB1, MariaDB2, MariaDB3) buat konfigurasi /etc/mysql/conf.d/galera.cnf

Silakan ganti nama berkas galera.cnf dengan nama lain kalau Anda mau. Silakan ganti “apakek_cluster” sesuai selera Anda untuk mendapatkan nama kluster yang jauh lebih baik.

Aktifkan Salah Satu Peladen Terlebih Dahulu

Lakukan langkah ini di salah satu peladen yang akan dimulai pertama kali. Bisa jadi karena pemasangan baru seperti saat ini. Atau, bisa jadi ada mati lampu sehingga menyebabkan seluruh kluster mati. Atau, laptop Anda baru dinyalakan kembali. Intinya, lakukan langkah ini pada saat tidak ada satu pun peladen yang menyala dan kluster ini baru mau dinyalakan dulu.

Bila pada kasus mati lampu atau peladen mati mendadak (crash), periksa berkas /var/lib/mysql/grastate.dat pada masing-masing peladen untuk memilih mana peladen dengan data terbaru. Sehingga, peladen tersebutlah yang dimulai pertama kali.

Bila Anda menggunakan SystemD, gunakan skrip ini:

Atau, demi alasan idealisme atau apa pun sehingga Anda membuang SystemD dan menggunakan sistem init lainnya:

Pada saat ini seharusnya sudah berjalan:

Kalau 0, berarti Anda ada salah konfigurasi di suatu tempat.

Jalankan Peladen MariaDB Sisanya

Pada dua peladen sisanya, MariaDB dijalankan dengan cara normal:

Atau

Seharusnya, apabila tidak ada kerusakan, pada akhirnya akan ada tiga peladen.

Sampai saat ini, Galera sudah selesai dibuat. Anda lakukan operasi SQL pada salah satu peladen mana pun hasilnya akan sama.

BONUS TUGAS

Terakhir, untuk tugas. Silakan buat satu pengguna Admin Super yang bisa membuat basis data dan penggunanya. Pengguna ini harus bisa mengakses dari luar.

Konfigurasi HAProxy

Pada salah satu peladen MariaDB (MariaDB1/MariaDB2/MariaDB3), buat sebuah pengguna HAProxy di basisdata. Pengguna ini akan mengkueri basisdata untuk mengecek keberlangsungan masing-masing peladen.

Ganti nama pengguna haproxy dengan sesuatu yang lebih kreatif. Demi keamanan, jangan cuma copas saja di sini!

Lalu, masuk pada peladen HAProxy dan pasang HAProxy di sana:

Lalu, buat konfigurasi HAProxy. Caranya, tambahkan baris-baris ini pada berkas konfigurasi /etc/haproxy/haproxy.cfg

Ganti nama pengguna haproxy dengan sesuatu yang lebih kreatif. Demi keamanan, jangan cuma copas saja di sini!

Lalu, jalankan ulang HAProxy. (Pada titik ini saya sudah malas membuat dua versi)

Selesai.

Optimasi

Bonus untuk landasan pemikiran. Berikut arsitektur-arsitektur alternatif yang bisa dibuat untuk memenuhi kebutuhan.

  1. Ganti HAProxy dengan perangkat keras router atau load-balancer.
  2. Pasang HAProxy pada setiap peladen aplikasi agar menghilangkan bottleneck jaringan. Jadi, hubungan antara aplikasi dan basisdata menjadi M:N. Kalau pakai ini, HAProxy lebih baik bind ke localhost jangan ke IP. Jadi, akses per aplikasi langsung ke localhost. Ini pondasi arsitektur layanan mikro (microservice architecture).
    HAProxy per apps

    HAProxy per apps

  3. Partisi peladen-peladen aplikasi untuk mengakses hanya salah peladen dalam kluster.
  4. Tambah jumlah peladen dalam kluster.

Jumlah kluster 3 itu adalah demi memenuhi konsep kuorum.

Optimasi Lebih Lanjut yang Belum Sempat Ditulis Karena Saya Ingin Mencari Pokémon Lagi Riset Lebih Lanjut

Ada riset lanjutan yang dapat membuat arsitektur aplikasi lebih terskalakan. Yakni, membuat sebuah peladen obyek penyimpan (storage object) semacam Amazon S3 dengan menggunakan OpenStack Swift dengan menggunakan CEPH. Atau, implementasi sederhana dengan GlusterFS atau NFS. Silakan kembangkan lebih lanjut agar aplikasi Anda lebih terskalakan.

Gunakan Puppet, Ansible, Chef, atau konfigurator apa pun yang lebih baik. Kalau arsitektur sudah skala besar seperti ini, mengubah peladen satu persatu itu sudah mustahil bila tanpa ada kesalahan. Buat tutorial ini menjadi cookbook/rule yang bisa secara dinamis di-deploy.

Semoga bermanfaat.

Bacaan Lebih Lanjut

Pokémon GO

Pokémon GO

Pokémon GO adalah sebuah permainan baru yang memiliki fitur AR (Augmented Reality). Teknologi AR ini memberikan efek bahwa lingkungan sekitar kita ada hal-hal yang lain. Dalam hal ini, ada Pokémon yang sedang bermain di atas meja contohnya.

Setidaknya di UI banyak orang berkumpul bermain permainan ini. Tempat yang paling sering dikunjungi adalah Perpustakaan UI, terutama yang mendekati danau. Kalau waktu malam, Parkiran FIB, Halte Sepeda Fasilkom, dan Perpustakaan UI.

Pokémon GO dikembangkan oleh Niantic, perusahaan yang mengembangkan permainan serupa, INGRESS. Data spasial Pokémon GO ini memang diambil dari INGRESS. Jangan heran oleh sebab itu di Indonesia banyak situs yang bisa dikunjungi untuk mendapatkan Pokémon langka. Bahkan, kalau mau lebih lanjut, kita bisa menebak Pokémon langka dari permainan INGRESS.

Demikian. Mengenai isu privasi dan dampak sosial, saya akan tuliskan lebih lanjut apabila kemalasan menghilang. Sekian.

KDE5: GIT dan GIT_ASKPASS

KDE5: GIT dan GIT_ASKPASS

Pada KDE5, para pengguna GIT akan selalu disedihkan dengan pertanyaan seperti ini:

Mengapa hanya KDE5? Karena GIT menyediakan integrasi dengan GNOME Keyring. Ya, bisa saja memasang GNOME Keyring. Tapi, itu bukanlah KDE5 yang kita cintai! ;-(

Untungnya, ada integrasi dengan mekanisme SSHASKPASS.

Pertama-tama, pasang implementasi KDE5 untuk SSHASKPASS.

Buat ksshaskpass sebagai penyimpan sandi.

Selanjutnya, Anda harus membuat keputusan.

Memasukkan Login per Repositori GIT

Kalau Anda hanyalah pengguna dari sebuah repositori tunggal, Anda cukup menyimpan login di lokal saja. Ini dilakukan di setiap direktori GIT.

Kemungkinan besar, Anda adalah seorang leecher seperti saya pengembang yang mengakses lebih dari satu repositori dalam sebuah situs GIT. Untuk itu, bisa dibuatkan repositorinya.

Sampai sini, Anda sudah selesai.

Terakhir

Apa yang terjadi?

Bacaan Lebih Lanjut

Membuat Aplikasi Berbasis Akonadi (KMail2) Keren Lagi
Wily Broke The Window

Membuat Aplikasi Berbasis Akonadi (KMail2) Keren Lagi

Saya punya problema KMail2 yang saya pasang di KDE semenjak KDE SC 4 sering crash. Bahkan, saya terpaksa menghapus ulang seluruh konfigurasi KDE demi bisa memasang ulang KMail2. Memang, saya bisa saja memasang Thunderbird. Tapi, saya jatuh cinta dengan cara pakai di KMail2.

Setelah pemasangan KDE Neon, distro baru berdasarkan Kubuntu LTS 16.04, saya menemukan bahwa saya tidak bisa menggunakan KMail2! Usut punya usut, ternyata karena sistem saya menggunakan Oracle MySQL 5.7. Ada sintaks SQL yang tidak lagi cocok dengan versi teranyar itu. Saya pun harus memilih pindah ke MariaDB 10.x.

Saya temukan lebih lanjut, ternyata pustaka Akonadi yang dipakai oleh KMail2 menggunakan abstraksi Qt SQL. Lah, ‘kan, Qt SQL mendukung banyak basisdata! Saya pun memilih untuk dari pada pindah ke MariaDB, pindah ke PostgreSQL.

Sedikit Noktah dalam Pemasangan

Saya memasang PostgreSQL seperti yang saya telah tulis sebelumnya. Oh, iya, bakal ada pesan kesalahan pada saat pemasangan paket Debian PostgreSQL pada Kubuntu 16.04 dan turunannya kalau menggunakan cara tersebut. Hal ini karena versi BASH yang disediakan memiliki aturan yang lebih ketat untuk mode ketat.

Solusinya adalah mengganti setiap “$1” menjadi “${1:-}” pada berkas /usr/share/postgresql-common/supported-versions. Pada ViM, regex yang dipakai:

Baru, ulangi kembali pemasangan PostgreSQL.

Mungkin Anda akan lebih beruntung dari saya dengan memasang paket dari Kubuntu. Tapi, setahu saya, sih, tidak bisa.

Kalau Anda tidak menggunakan PostgreSQL pada sistem Anda, matikan saja instan PostgreSQL yang berjalan di sistem.

Lumayan menghemat beberapa mega memori dan proses CPU.

Konfigurasi Akonadi Sebelum Dipasang

Pertama-tama, mari buat direktori konfigurasi Akonadi:

Lalu, buat berkas konfigurasi untuk Akonadi menggunakan PostgreSQL:

Ganti 9.5 dengan versi PostgreSQL yang Anda pakai.

Pemasangan KMail2

Selanjutnya, tinggal pasang saja:

Bila sudah sampai sini, seharusnya pemasangan lancar. Begitu menjalankan KMail2, Akonadi akan mengonfigurasi dirinya untuk menjalankan instan PostgreSQL khusus.

Terakhir

Saya sering memakai laptop sampai baterai kosong. Komputer saya kadang kena mati lampu. Sampai detik ini, keduanya masih stabil dan saya sampai detik ini belum pernah menghapus ulang KMail2.

Semoga beruntung, silakan bertanya.

Memasang Steam pada Ubuntu Xenial 16.04 dan Turunannya
Steam

Memasang Steam pada Ubuntu Xenial 16.04 dan Turunannya

Ubuntu akhirnya memasukkan Steam ke repositori Multiverse-nya. Hal ini yang menyebabkan paket Debian Steam dari situs Steam Valve tidak lagi kompatibel dengan Ubuntu teranyar ini. Paket Steam pada repositori Ubuntu disebut steam. Sedangkan versi Valve nama yang dipakai adalah steam-launcher.

Kalau Anda menggunakan turunan Ubuntu, bukan Ubuntu asli — saya sendiri KDE Neon 5.6 — Anda mungkin harus memasang software-properties-common agar ada perintah add-apt-repository yang akan dipakai untuk memasang repositori. Supaya kita ada di satu halaman yang sama, maka mari pasang perkakas itu.

Sekarang kita bisa lanjut.

Pemasangan Mula-mula

Seperti biasa, aktifkan arsitektur 32-bita.

Buang pustaka S3 Texture Compression baku. INGAT! Ini mungkin ilegal di negara lain, terutama negara dengan paten perangkat lunak, uhuk AS uhuk.

Unduh libtxc-dxtn0 dari repositori xorg-edger. INGAT! Bukan dari Debian Multimedia seperti pada Tambora.

Anehnya, Steam akan menjadi cerewet kalau versi 64-bita tidak dipasang. Makanya, kedua paket dipasang bersamaan.

Selanjutnya, aktifkan repositori Multiverse.

Pasang Steam!

Kalau Anda jalankan perintah steam, kemungkinan Steam akan gagal dijalankan. Hal ini karena Steam memaketkan pustaka C++ dan versi GCC-nya sendiri!

Matikan Steam yang gagal berjalan sempurna itu. Lalu, hapus semua pustaka C++ dan GCC bawaan Steam.

Beberapa orang, termasuk tadinya saya, menyarankan untuk menghapus pustaka dinamis saja. Namun, setelah berjibaku, saya menemukan bahwa Steam menggunakan pustaka statik juga untuk pustaka C++ dan GCC.

Selesai.

Akhir Kata

Mengapa saya menyarankan untuk menggunakan Steam versi Ubuntu, bukan yang dari Valve? Sebenarnya, sih, bisa saja. Asalkan Anda mau menerima pesan kesalahan bahwa paket Steam usang. Saya, sih, tidak mau.

false alarm about outdated version

Steam warns us that our version is outdated

Bacaan Lebih Lanjut

Dao Modularitas: Contoh Kasus Penggunaan Modul Untuk Decoupling Dengan Gradle

Dao Modularitas: Contoh Kasus Penggunaan Modul Untuk Decoupling Dengan Gradle

Mari gunakan hasil karya terdahulu yang sudah modular.

Saat ini saya akan menggunakan metode decoupling berdasarkan tujuan (goal-based) versi yang telah disederhanakan. Tentu tidak akan serumit reverse engineering pada tulisan saya. Tulisan (Yu et al., 2005, 363--372) yang saya bahas itu rasanya terlalu rumit untuk dikembangkan di tulisan ini. Oke, sejujurnya saya juga sedang malas menggambar diagram.

Saya mengambil teknik Extract Method dari (Martin Fowler, 1999, 89--91) yang digunakan di awal metodologi itu. Agar sederhana, saya modifikasi metodologi agar menerjemahkan menjadi cerita (user story), bukan notasi ilmiah.

Contoh Metodologi Reverse Engineering Goal Based of JP, Abridge Version

Mari lihat kembali kelas yang telah dibuat sebelumnya.

Apa yang dilakukan? Mari kita ceritakan dalam kalimat cerita:

Program ini mencetak ke terminal tulisan “Hello, world!”.

Dari cerita ini, ternyata ada dua tujuan yang terlihat jelas:

  1. Mencetak ke terminal.
  2. Tulisan “Hello, world!”.

Mencetak ke terminal (1) adalah sebuah tujuan yang bisa dibuat umum. Ada banyak hal yang bisa dilakukan dengan fungsi (1) ini. Fungsi ini bisa diekstraksi dan dijadikan sebuah fungsi terpisah agar bisa dimanfaatkan yang lainnya. Maka direkomendasikan agar (1) dijadikan fungsi terpisah.

Tulisan “Hello, world!” (2) adalah sebuah tujuan yang spesifik. Dia tidak bisa dipakai untuk yang lain. Maka, direkomendasikan untuk tetap untuk di sana.

Wow, Kisanak mungkin berpikir. Gampang juga, yah. Ternyata hanya begitu saja!

Kisanak salah! Ilmu ini masih versi disederhanakan (abridge version). Mari saya bukakan sedikit tentang tujuan tersirat (soft goal). Pada metodologi Reverse Engineering Goal Based of JP, salah satu yang diperhitungkan adalah tujuan tersirat (soft goal)!

Ada banyak tujuan tersirat yang kalau pada bahasa SDLC disebut sebagai non-functional requirement. Seandainya proyek ini ditentukan tujuannya (bahasa lainnya: Scrum Goal, non-functional requirement pada Waterfall, dan lain sebagainya tergantung paguyuban tempat Kisanak berguru). Pada iterasi selanjutnya, (2) dapat dikembangkan lebih lanjut, misalnya dengan menambahkan tujuan tersirat:

  1. Ingin menyapa bukan hanya dunia. Nama yang hendak disapa dapat diperoleh melalui STDIN (nama kerennya terminal). Rekomendasi: dibuatkan sebuah variabel dengan nilai baku “Hello, %s!”. Lalu, tangkap nama melalui STDIN. Masukkan nama ke senarai yang telah dibuat itu. Terakhir, cetak.
  2. Ingin agar ini dapat dimengerti hampir semua orang. Rekomendasi: dibuatkan variabel berisi “Hello” yang dianotasi dengan i18n. Gunakan framework lokalisasi.

Jangan lupa, bahwa bahkan pengumpulan kebutuhan dapat diiterasikan agar lebih jelas. Contohnya untuk tujuan tersirat (1). Diiterasikan kembali bahwa keamanan merupakan fitur utama. Tujuan tersirat (1), ditambahkan fungsi pengecekan Regex sebagai validasi sebelum memroses (1.1). Agar menarik, maka dibuatkan pemformat yang dapat menghasilkan keluaran yang cantik ke terminal (1.2).

Kisanak tentu bertanya, bagaimana cara menentukan tujuan tersirat ini? Sampai sedalam mana iterasi ini? Bisa jadi aplikasi menjadi besar dan bahkan untuk fungsi sederhana menjadi sulit. Itu sebabnya, biasanya tujuan tersirat biasanya dibuat di awal proyek dan berlaku global atau setidaknya dalam sebuah cakupan submodul. Beberapa perguruan silat membuat itu menjadi standar baku. Inilah yang dimaksud dengan Design Pattern bukan hanya berbicara kode, tetapi standar baku di sebuah perusahaan.

Astaga, sampai mana saya tadi?

Oh, iya, intinya, sudah saya jelaskan bahwa fungsi menulis ke terminal bisa diekstraksi ke fungsi lainnya. Karena dia bisa dipakai untuk yang lain, maka dia bisa dijadikan sebuah modul tersendiri. Pada proses penentuan modul, Kisanak dapat bisa mengenali apakah fungsi cetak ke terminal ini dijadikan proyek tersendiri sehingga bisa dimanfaatkan oleh proyek-proyek yang lainnya. Apalagi, dia tidak sesuai dengan tujuan proyek ini, membuat aplikasi percuma/sia-sia. Dia sudah sangat berguna sehingga tidak masuk lagi hitungan. Ha… ha… ha….

Mari Implementasikan ke Gradle

Setelah makanan bagi jiwa, sekarang saatnya ke Gradle. Pada direktori dasar proyek, mari buat submodul:

Seperti biasa, masukkan percuma-libs ke proyek utama.

Kalau benar, maka akan muncul sebagai submodul proyek percuma.

Buat konfigurasi untuk mengompilasi percuma-libs.

Sekarang, mari buat sebuah kelas Java.

Setelah membuat submodul ini, mari tambahkan submodul percuma-libs sebagai salah satu pustaka yang dibutuhkan oleh percuma-apps.

Mari ubah kelas TestMain untuk menggunakan pustaka yang sudah kita masukkan. Ubah baris:

menjadi:

Atau kalau dari terminal:

Selesai sudah.

Judul Cuma untuk Pembatas Saja dan Saya Bingung Apa Namanya Karena Artikel Ini Bukan Artikel Terakhir Karena Entah Mengapa Kalau Saya Beri Nama Penutup Artikel Selanjutnya Tidak Pernah Jadi

Sampai sini, Kisanak bisa langsung menjalankan “./gradlew run” seperti biasa. Seharusnya, sih, keluarannya sama.

Sampai sini saya juga berpikir, apakah saya perlu mengubah gaya menulis saya? Saya biasanya menggunakan frasa, “silakan gunakan penyunting kesukaan Anda.” Kali ini saya paksakan semua kita menggunakan penyunting saya, terminal GNU/Linux.

Semuanya bisa langsung dicobakan di terminal pada sistem operasi GNU/Linux. Mohon beritahu saya kalau ada yang tidak jalan.

Selanjutnya

Kisanak berpikir setelah menguasai modularitas dengan Gradle dan metodologi cetek Reverse Engineering of JP, Abridge Version, Kisanak merasa sudah elit?

Sayang sekali, Kisanak. Kalau Kisanak sadar, cara penamaan paket saya kacau! Mana benar itu penulisan “aja.jp.percuma”? Seharusnya “edu.ui.jp.percuma” sesuai dengan organisasi yang jam kerjanya saya ambil untuk menulis ini atau “jp.percuma” karena “aja” bukanlah top level domain yang lazim. Pokoknya, konvensi penamaan ini penting.

Ah, Pak JP, apakah ada yang perlu saya pelajari? Mohon ajari, bila berkenan.

Saya suka sikap Kisanak! Nama paket akan sangat berpengaruh terhadap Artifak. Artifak adalah obyek-obyek hasil kultivasi yang banyak dipakai orang. Misalnya, menggunakan Maven dalam POM yang ada di JCenter atau Maven Repository.

Tergantung mood saya, saya akan membahas cara membuat peladen artifak lokal (bonus kalau saya lagi mood) dan  membuat artifak dengan Gradle dan mengimpor artifak dengan Gradle. Atau, mungkin hanya di sekitar artifak saja. Entahlah…. Film apa yang bagus untuk mood saya, ya?

Daftar Pustaka

Martin Fowler (1999). Refactoring: Improving the Design of Existing Code. Boston: Addison-Wesley Professional. doi: 0201485672 9780201485677. Retrieved from Addison-Wesley Professional: www.worldcat.org/isbn/0201485672.^
Yu, Yijun and Wang, Yiqiao and Mylopoulos, J. and Liaskos, S. and Lapouchnian, A. and Leite (2005, August). Reverse engineering goal models from legacy code 13th IEEE International Conference on Requirements Engineering (RE'05), [NO VOLUME]([NO ISSUE]), 363--372. doi: 10.1109/RE.2005.61.^
Membuat Sub Modul pada Gradle Sebagai Lanjutan Tulisan Iseng Kemarin Karena Mood Saya Enak Setelah Puas Menonton Warcraft Kemarin

Membuat Sub Modul pada Gradle Sebagai Lanjutan Tulisan Iseng Kemarin Karena Mood Saya Enak Setelah Puas Menonton Warcraft Kemarin

Kisanak pikir setelah mengerti jurus Kunyuk Melempar Pisang, Kisanak sudah bisa menguasai dunia persilatan? Kisanak harus mawas diri dan mengerti bahwa di atas langit masih ada langit lagi. Jurus itu mungkin bisa membuat Anda selamat di dunia persilatan. Camkan ini:

Di atas langit masih ada langit; ilmu yang dikuasai hanyalah setitik dari samudera.

Ketika aplikasi yang dibuat hanya sederhana, ilmu jurus Kunyuk Melempar Pisang sudah cukup. Masalah baru ketahuan setelah Kisanak naik level dengan aplikasi yang besar dan kompleksitas tinggi. Niscaya Kisanak akan menemukan bahwa Kisanak hanyalah jawara kampung.

Untuk dapat merajai dunia persilatan, ada konsep lain yang Kisanak mesti pahami: modularitas.

Kisanak harus bisa memilah. Mana yang kekhususannya untuk menghadapi basisdata. Mana yang kekhususannya menampilkan dan memroses laman web. Mana kekhususannya mengurusi logaritma. Dan berbagai kekhususan lainnya. Dengan memahami kekhususan ini, Kisanak bisa melakukan dua konsep ini: reuse dan melacak ketergantungan.

Reuse, adalah konsep sakral pemrograman. Seperti pemeo berkata, “do not invent the wheels.” Kode yang baik adalah yang bisa memisahkan dengan baik fungsi-fungsi dalam berkas/proyek terpisah sehingga dapat dimanfaatkan oleh banyak pihak. Proses untuk mengubah dari kode yang kompleks dan rumit menjadi terpecah-pecah dan modular ini disebut proses decoupling.

Decoupling adalah sebuah Dao yang mendalam. Banyak yang berusaha menemukan misteri dibaliknya. Sedikit yang dapat menguasai Dao ini. Mereka yang telah mencapai pencerahan, merekalah sesungguhnya yang merajai dunia persilatan!

Di dunia persilatan, ada beberapa ilmu kanuragan untuk decoupling. Ada yang memiliki karma tinggi sehingga bisa mampu menguasai level tinggi menggunakan ilmu Pemrograman Dinamis (Dynamic Programming), ilmu Kalkulus Lambda (Lambda Programming), dan lain-lain. Banyak juga orang yang tergabung dalam sekte-sekte yang memiliki repositori Dao mendalam. Mereka ini banyak mengkultivasi ilmu Design Pattern. Pernah ada legenda bahwa sebuah ilmu ilmu legendaris yang sepertinya hilang ditelan bumi seperti KAOS bisa menguasai penuh Dao ini.

Sayangnya, untuk orang-orang biasa, yang paling banyak dikultivasi orang adalah variasi ilmu Tebak-tebak Berhadiah. Ilmu ini mudah dikuasai, namun ia takkan mampu memberikan pencerahan sampai menguasai seluruh Dao. Itu sebabnya, bagi orang-orang kebanyakan, mukadimah ini semua tidak berguna.

Mereka akan mengira bahwa apa yang ditulis ini hanyalah mengisi luang supaya entri ini banyak. Camkanlah satu rahasia langit ini, Kisanak: tutorial ini hanyalah gerbang menuju Dao decoupling. Yang perlu dipahami selanjutnya adalah melatih pikiran.

Melatih jiwa, melatih raga. Melatih roh, melatih kode. Lepas dari Samsara, lepas dari debug tak berakhir.

Pindah ke Gradle Modular

Mari dapatkan proyek yang telah dibuat sebelumnya:

Setelah masuk ke direktori proyek terdahulu, mari ubah menjadi modular.

Buat direktori untuk menjadi sebuah submodul dan pindahkan berkas build.gradle dan seluruh kode sumber.

Ingat, build.gradle adalah seperti Makefile. Isinya adalah aturan yang diperlukan untuk mengompilasi.

Selanjutnya, beritahu percuma bahwa dia memiliki submodul percuma-app.

Terakhir, tambahkan modul percuma-app sebagai syarat yang dibutuhkan oleh percuma.

Karena kita mau mengompilasi proyek ini, maka jangan lupa tambahkan plugin java pada aturan Gradle. Secara otomatis Gradle akan menjalankan perintah-perintah yang dijalankan pada proyek utama pada submodulnya nanti. Kalau tidak percaya, silakan saja coba:

Hasilnya harusnya sama, sih.

Cara Membuat Proyek Gradle secara Manual yang Sebenarnya Bisa Dengan Mudah Dilakukan dengan “New Project” pada IntelliJ atau Eclipse

Cara Membuat Proyek Gradle secara Manual yang Sebenarnya Bisa Dengan Mudah Dilakukan dengan “New Project” pada IntelliJ atau Eclipse

Seperti judul blog ini, yang saya tuliskan ini adalah sesuatu yang sia-sia. Anda bisa langsung menggunakan aplikasi seperti IntelliJ atau Eclipse. Dengan penyunting itu, Anda tinggal membuat “New Project” dan semuanya sudah terkonfigurasi.

Tapi, mungkin Anda salah satu elitis yang lebih suka menggunakan terminal. Atau, Anda ingin tahu cara kerja Gradle sehingga Anda dapat setidaknya sedikit paham kalau ada masalah. Kalau saya, saya hanya sedang iseng sebelum menunggu waktunya tiba untuk menonton Warcraft di bioskop.

Proyek hanya Sejauh Direktori Kosong

Mari buat proyek baru. Caranya, buat direktori kosong dan dua buah berkas Gradle: build.gradle dan settings.gradle.

Mari namakan proyek kita ini “proyekPercuma”.

Secara umum, ini sudah siap. Tapi tunggu dulu, Kisanak! Kisanak tidak akan pernah lengkap ilmu bila tanpa jurus Monyet Membungkus Pisang!

Proyek hanya Sejauh Pembungkus

Java adalah sebuah pustaka yang sering kali berdiri sendiri. Hal ini karena sering kali distribusi menggunakan versi yang lawas. Bayangkan, Kisanak! Ini sudah 2016, namun Kubuntu Xenial (16.04) yang saya pakai masih menggunakan Gradle versi 2.10.

Hasilnya:

Astaga! Padahal, versi terbaru sudah ada lama sebelum Xenial. Belum lagi, beberapa pustaka terbaru memanfaatkan Gradle versi terbaru.

Supaya kita menggunakan Gradle terbaru, mari buat skrip pembungkus Gradle. Saat penulisan Gradle terbaru versi 2.13.

Anda bisa lakukan ini untuk memperbaharui Gradle pada proyek yang lama ke versi yang terbaru. Sekarang lihat versinya:

Selesai, deh.

Tunggu Dulu, Kisanak!

Mari buat sebuah proyek Java sederhana.

Lalu buat struktur direktori Java (kode sumber dan sumber daya):

Sebagai pemrogram Java yang baik, seharusnya kita menaruh berkas Java pada paket-paket. Mari buat direktori paket Java.

Buat sebuah kelas sederhana.

Tambahkan berkas Java ini sebagai kelas utama dalam proyek percuma.

Sekarang tinggal dicoba jalankan:

Saya sengaja tambahkan “-q” agar keluaran dari Gradle tidak keluar. Sehingga, hasilnya langsung keluaran dari aplikasi, yakni:

Kalau tanpa “-q” dia akan berisik seperti ini:

Bersih-bersih

Kadang kalau proyek sudah besar dan kompleks, kita perlu membersihkan hasil kompilasi secara manual:

Mau buat distribusi supaya keren?

Sehingga, kita jalankan dengan:

Ada .bat juga di situ untuk menjalankan di sistem terlarang.

Mau publikasikan hasil pekerjaan?

Berkasnya ada di ./build/distributions/percuma.zip

Mau tahu perintah Gradle yang lain?

Selebihnya terserah Anda. Gampang, ‘kan?

Bacaan Lebih Lanjut

Memasang Kubuntu 16.04 UEFI dengan Debootstrap
Wily Broke The Window

Memasang Kubuntu 16.04 UEFI dengan Debootstrap

Mengenai skema partisi yang Anda pilih, semuanya bebas. Yang penting, sisakan 100 s.d. 200MB diska untuk partisi UEFI dengan format FAT32 atau FAT16.

UEFI mandates on GPT partition.

UEFI mandates on GPT partition.

Karena Windoze dan beberapa vendor lama, UEFI masih memungkinkan untuk membuat format partisi BIOS (4 partisi utama maksimal). Namun, karena saya memasang ini di laptop saya sendiri, saya membeli kosong sehingga memformat seluruh diska dengan format partisi GPT. Saya membuat satu partisi di awal dengan besar 200MB dan format FAT16 untuk partisi UEFI.

My laptop partition as an example

My laptop partition as an example

Saya tidak menyatakan proses pemformatan karena sudah pernah dibahas di blog ini berulang kali. Lagi pula, saya memformat menggunakan Manajer Partisi KDE yang ada di CD Pemasang Kubuntu. Tak perlu menyusahkan diri dengan terminal.

Oh, iya, supaya tidak bingung, saya mengasumsikan ini semua dilakukan dari CD/USB Live Pemasang Kubuntu 16.04 Xenial.

Persiapan

Sebelum mulai, saya mengubah /etc/apt/sources.list CD/USB sehingga berisi:

Ini biar proses pemasangan menggunakan repo terdekat.

Lalu, seperti biasa saya pasang debootstrap:

Sampai sini saya mengasumsikan bahwa Anda telah memformat diska Anda dengan benar sebelum lanjut dengan Manajer Partisi KDE atau pun cara lainnya.

Pasang Sistem Dasar

Lakukan stanza yang biasa dilakukan:

Baru setelah itu, pasang KDE:

Konfigurasi zona waktu dan lokalisasi:

Tambahkan pengguna:

Pasang kernel dan GRUB EFI:

Konfigurasikan dan pasang GRUB EFI. Ingat! Dua langkah ini perlu dilakukan agar sistem dapat dinyalakan ulang.

Sisanya terserah Anda karena langkah-langkah ini sudah membuat sistem Anda berjalan.

TAMAT.

WordPress JP: Installing MariaDB

WordPress JP: Installing MariaDB

THERE WAS A BUG IN THE SERVER THAT MADE ME LOST THIS POST. THIS IS THE RETRIEVED VERSION THAT I BACK UP.

It’s obvious that I speed write and take everything from guide. As I said before, writing this in Bahasa Indonesia kind of hard for me. So, I write this as I do in parallel.

Setup Filesystem

Disable ZFS file-level prefetch as in the guide:

That would be last on the next reboot, but for now disable:

Create the dataset and the optimizations:

It is optimized to use cache for metadata only if we are going to use INNODB. Its chunk is 16k, so we set it also in ZFS. In the guide we are told that MariaDB log is a 128k chunk — default chunk in ZFS.

Remember that ZFSOnLinux Bug early on? Yeah, we should regenerate Ramdisk everytime we’ve done something to /etc/zfs/zpool.cache. To be honest, I don’t know if any of the operation we did earlier warrant such action. But, just do that for precaution.

And now, we go with installing MariaDB server.

Installing Database Server

According to MariaDB Repository configuration page, let’s set MariaDB:

Import its key and update our list:

Install MariaDB server:

Disable MariaDB server double buffer by add a line (mine, vanilla at line 142) with:

And restart MariaDB server:

From this onward, we are ready to install WordPress, NGINX and such.

Bacaan Lebih Lanjut

WordPress JP: Installing LAMP Stack with ZFS

WordPress JP: Installing LAMP Stack with ZFS

A REVISION WAS LOST! PLEASE TAKE A LOOK AT THE BOTTOM PAGE FOR GRUB SETTING BEFORE REBOOT.

I’m in fast writing mode as this is probably won’t intended to be understood by most people. I’m writing in this blog as I moving forward installing. To keep writing  and translating from my tacit into Bahasa Indonesia is kind of laboring. Perhaps, if you want, I would reiterate what I do here with better Bahasa Indonesia. But, now, let’s live speed writing.

Preparations

I’ve got Ubuntu 14.04 Live USB on my arsenal. Boot it up and setup some trivial like IP, DNS and stuff. I modify APT sources.list to match my nearest server.

Do the update and install SSH and VIM.

I need SSH because I can’t stand on server room too long. I’m not going to go on religious war on ViM vs Emacs. Last, change ubuntu user password.

And now the show live from my comfy SSH terminal laptop.

Install Ubuntu ZFS for Ubuntu Live Session

Straight from the doc.

You may wondering why I’m not upgrading first. Upgrading a temporary system is wasting time, especially one with GUI installed. Okay, now we get to the formatting.

Create A ZFS Pool

I have 2 SATA and 1 SSD. The best for server should be two SSDs. But, hey, beggar can’t choose.

ZFS config: 2 Disks + 1 SSD.

ZFS config: 2 Disks + 1 SSD.

Using GParted, I turned SSD into GPT with 3 partitions:

  • The first 200MB for /boot partition. Some twisted soul refused to use separated partition for /boot, well, good for you! I go with the conservative.
  • 8GB used for ZIL (ZFS Intent Log) drive. ZFS usually use 8GB max for journaling.
  • The rest used for ZFS Cache (ZARC).

But, hey, where is the EFI partition?

I’ve just recently found out that when you give your whole disk to ZFS, it would format the disk into two partitions. One big partition (sX1) for the use of ZFS and one 8MB partition (sdX9) for EFI partition (FAT). Yeah, ZFS automatically turn the disk into GPT partitioning scheme. After adding the two disks into a ZFS pool, the partitions will be like this:

I’m doing mirroring for sda and sdb. I wish I have one more SSD. I would mirror two partitions on separated SSDs for ZIL. If you are luckier than me, do it! It is for safety measure. But, don’t mirror the cache because it’s wasting space.

Here’s the reality:

If I may have a dream with two SSDs:

Disable access time, enable relative time and enable LZ4 compression on tanks.

If nothing is wrong, we would got:

Next, the partitioning. After this, I’m doing things from Crossroad’s tutorial with some tweaks.

Create Partition

As Debian configuration:

What? Yes, I’m installing Debian not Ubuntu.

Last, export the pool we’ve created for later import. We do this so that the ZFS config would read from disk by ID instead of common UDEV naming. Believe me, you don’t want to use UDEV naming (sda, sdb, etc.) on ZFS.

Now, we can start installing Debian system.

Install Debian

Reimport ZFS pool and create a ZFS configuration cache file.

REMEMBER: (Straight from the ZFS FAQ)

Run update-initramfs -c -k all after any /sbin/zpool command changes the /etc/zfs/zpool.cache file.

This is the reason of random failures from mounting ZFS root partition.

Install the system and mount all the basic system partitions.

And now, configure.

Configure Debian

Hostname.

Create configuration for network interfaces. In the spirit of new configuration scheme, I put two files in /etc/network/interfaces.d/

and

Mount all the system filesystems.

Chroot there

In Debian Configuration

Locales.

Timezone.

Remember when I said I’m going to put /boot on different partition? Now is the time.

Remember also what I said about using the ninth partition of the first disk? Now is the time.

Install ZFS packages with Debian style. ZFS needs lsb-release package.

Last, add a login.

Setup GRUB For ZFS Boot

There is a bug in Debian’s GRUB that makes the system unbootable. First, let’s reconfigure GRUB Default command line:

Change Linux default command line (second screen after Linux command line) from

to

After this, update grub and we are done.

Booting to New System

After all preparations, unmount all the filesystems

Reboot.

Final Thought

Well, you might find some faults here and there. If not, everything after this is straightforward.

Bacaan Lebih Lanjut

RE: Komika; A Jester Certainly Not A Clown

Pandji P. dalam tulisannya “Mengapa Kami Menyinggung” menyebutkan bahwa seyogyanya Komika harus memiliki swa-sensor. Dia menyebutkan bahwa sering kali materi kontroversial digunakan oleh Komika dalam mop hanya sebuah kejutan. Kejutan itu sebenarnya demi memelintir pengharapan penonton.

Benarkah hanya demikian?

Kalau dilihat dari sejarah, mop modern berasal dari Amerika Serikat. Di sana, generasi dari Seinfield sampai Chris Rock berkembang. Semuanya sama, mereka mengisi dengan konten kritik sosial. Bahkan, tak lupa mereka memasukkan konten-konten yang menyakitkan.

Di negara Paman Sam sana, komedian dapat berkembang dengan baik. Amandemen UUD mereka menjamin seorang komedian takkan dihukum oleh perkataannya yang bebas. Mereka bahkan memiliki Comedy Central sebagai pusat produksi mereka.

Indonesia nampaknya tidak memiliki hukum tertinggi seperti itu. Mungkin, seperti yang dimengerti Pandji, mereka masih menganggap komika bisa memasukkan hal-hal kontroversial merupakan sebuah hal yang keren. Padahal, setiap mop yang terjadi mungkin sebenarnya memiliki agenda baik politik mau pun sosial, tapi terutama isu sosial. Sayangnya, saat ini konsekuensinya di Indonesia terlalu menakutkan.

Kalau saya boleh tarik lebih lanjut, sejarah mop berasal jauh dari zaman dahulu kala jauh di zaman kerajaan. Mereka biasanya berpakaian badut dan melucu untuk Raja atau pun para bangsawan. Mereka disebut sebagai Jester.

Mereka memiliki tugas untuk menghibur. Seorang jester mengolok tuannya dengan kritik. Hiburan dan kritik ini adalah bagian dari seorang jester. Mereka sering mengolok juga orang-orang lain.

Anehnya, banyak kerajaan di dunia menaruh posisi jester sebagai penasihat. Bahkan, di India bagian Selatan seorang raja takkan lengkap tanpa jester-nya. Mahabrata takkan lengkap tanpa punakawan.

En Folastrant Sagement

Ada kasus Ratu Elisabeth memecat jester-nya karena kurang kontroversial terhadap dirinya. Di lain pihak, banyak jester yang bercanda keterlaluan sehingga menghadapi dari hukuman cambuk bahkan sampai hukuman mati. Selalu ada resiko untuk menjadi pihak yang menghibur dengan kontroversial.

Namun, mengapa profesi tetap saja ada?

Seorang ayah yang terlalu posesif kepada anak perempuannya membuat anaknya tak bisa menikah. Seorang kaya mewarisi anaknya dengan kebodohan sehingga hartanya terkuras. Seorang raja terlalu angkuh menyediakan kepalanya di nampan pada hari tuanya. Seorang yang berdiri tinggi tanpa ada yang mengkritik cenderung mengarah kepada kehancuran.

Untuk orang-orang yang terlalu tinggi inilah seorang jester diperlukan. Seorang jester perlu menampar seseorang tanpa membuat dia kehilangan harga dirinya. Sifat ini yang menjadikan seorang jester yang baik adalah seorang yang begitu bijak sehingga ia bisa menjadi si bodoh. Menemukan formulasi yang tepat untuk memulai diskusi adalah sebuah tugas dari seorang jester. Inilah tugas dan tantangan yang harus dihadapi oleh seorang jester modern, komika a.k.a komedian.

Peter Russels mengolok-olok ras-ras dengan menyebutkan stereotipe-stereotipe ras tersebut. Pertama-tama, ia memulai dengan mengangkat ras tersebut. Lalu, ia masuk ke olokan ras tersebut. Terakhir, ia tak lupa mengangkat kembali ras yang telah dioloknya. Ia selalu menyediakan jalan keluar untuk mengangkat harkat ras tersebut sehingga ras tersebut pada akhirnya tidak tersinggung.

Untuk yang suka level keras, ada juga komedian di Comedy Central yang langsung ke subyek yang sensitif. Namun, kalau saya amati, sepertinya hidupnya seperti lelucon. Ada saja fitur dari tubuhnya yang dapat menjadi tertawaan. Memang, dosis komedi seperti ini bukan untuk khalayak ramai.

Kalau saya baca argumen yang dibilang oleh Pandji, saya teringat argumen yang berusaha diungkap oleh John Oliver kepada jurnalis. John Oliver merupakan komedian yang mengangkat tema-tema sulit di Amerika dan membawakan berita tersebut dengan gaya lelucon. Para jurnalis menyebutnya sebagai jurnalis, tetapi Beliau menyebut dirinya sebagai komedian yang berusaha membuat orang tertawa. Menurut dia, dia dan timnya memformulasikan bahwa lelucon kehilangan kelucuannya bila data yang dipaparkan tidak akurat.

Kalau menurut saya, John Oliver dan timnya telah sukses memasukkan berita yang kontroversial dengan kelucuan. Mereka berhasil menaikkan isu penting kepada publik Amerika Serikat tanpa mengaktifkan pertahanan. Pertahanan itu seperti penolakan (denial), pengacuhan, dan bahkan sensor. Alarm pertahanan tak aktif karena lelucon-lelucon yang dipaparkan membuat penonton tak merasa frustrasi, bahkan sebaliknya, mereka merasa diperkuat.

Kembali ke Pandji

Ada banyak isu yang menjadi api dalam sekam di negara ini. Isu antar umat agama. Toleransi dengan kaum minoritas. Isu jurang ekonomi yang semakin jauh dan munculnya generasi kelas menengah yang acuh. Bahkan, sampai isu sensitif seperti paham-paham komunisme dan liberalisme.

Bangsa ini terlalu takut untuk membahas isu-isu penting itu. Kami butuh jester untuk membuat kami nyaman untuk memulai diskusi itu. Kami perlu Pandji dan kawan-kawan untuk secara cerdas memasukkan isu-isu tersebut dengan lelucon, bukan swa-sensor.

Dari pada menunggu hukum yang melindungi mereka, saya hanya bisa berharap agar rekan-rekan daring melindungi mereka dari cyber-bullying. Lindungi perkataan mereka walaupun seperti menyakitkan. Saya rasa, mereka orang-orang jenius yang bukan sekedar lelucon belaka. Kita perlu melindungi mereka dari niatan jahat yang berusaha menjatuhkan mereka.

Sifat bangsa Indonesia yang sekarang semakin tak bisa dikritik menurut saya sudah pembodohan lebih dari zaman dahulu. Padahal, adalah budaya Nusantara untuk pantun-pantun jenaka. Adalah budaya Nusantara untuk majas-majas ironi dan satir. Adalah bagian dari budaya kita untuk bersilat lidah.

Saya harap, mop-mop Indonesia bisa mengembalikan budaya kita yang mau terima kritik dan mengkritik dengan elegan; mengkritik dengan lelucon. Jangan sampai api dalam sekam itu membakar lumbung padi kita. Biarlah ia terkuak dengan lelucon sehingga dapat dipadamkan.

Bacaan Lebih Lanjut

Komentar: Panama Papers dan Standar Keamanan Perusahaan

Forbes melaporkan bahwa perusahaan Mossack Fonseca memberikan akses data portal kepada penggunanya dengan menggunakan Portal yang menggunakan versi Drupal tua yang memiliki lubang keamanan. Wordfence pun menyebutkan bahwa situs MF menggunakan WordPress dengan plugin Revolution Slider versi bermasalah. Wordfence menyebutkan lebih lanjut bahwa WordPress tersebut juga menggunakan plugin yang memiliki akses ke dalam peladen surel.

Sewaktu membaca tulisan tersebut, saya merasa bangga bahwa UI menggunakan teknologi yang sama dengan mereka. Hanya saja, mengapa mereka lambat dalam memperbaharui situs WordPress mereka? Setahu saya, kelemahan Revolution Slider terkuak pada tahun 2014! Saya saja sudah agak lupa kelemahannya yang mana.

Dalam dunia keamanan, sebenarnya ada beberapa sumber bolong keamanan. Namun, Karyawan yang kecewa adalah sumber bolong terbesar dalam keamanan. Itu makanya, di dunia TIK ada segregasi tripartid yang memisahkan fungsi-fungsi dan orang yang menjabat. Dengan tiga fungsi yang dibedakan ini, diharapkan setiap pihak bisa saling mengawasi. Juga, penerapan pertukaran posisi agar karyawan tidak terlalu menguasai. Beberapa korporasi menerapkan kebijakan akses sistem dan komputer.

Kembali ke WordPress.

Setahu saya, asalkan rajin memperbaharui WordPress, situs ini relatif aman. Apalagi, WordPress dan plugin-plugin-nya rajin memperbaharui produknya. WordPress memiliki repositori saluran keamanan yang hanya sejauh klik. Masalah yang terjadi adalah justru pada plugin berbayar yang memiliki repositori sendiri. Itu sebabnya, saya pribadi lebih suka menggunakan plugin gratisan dari WordPress. Revolution Slider itu adalah plugin berbayar dan harus diperbaharui secara manual.

Saya lihat yang sering terlewati dari pembuatan kontrak dengan kontraktor pengembang adalah kontrak pemeliharaan. Kontrak pemeliharaan adalah kontrak yang paling krusial dalam sebuah organisasi. Salah satu fungsi dari perencanaan IT Roadmap dalam sebuah perusahaan adalah penentuan sampai kapan sebuah sistem perangkat lunak dikatakan usang. Keusangan itu menentukan seberapa usaha sebuah organisasi dalam memelihara sistem tersebut. MF mungkin adalah sebuah organisasi  yang tidak memiliki IT Roadmap.

Melihat horor yang terjadi bahwa penjebolan sistem dapat menyebabkan sistem lain terjebol, saya tidak habis pikir. Yang pasti, mereka tidak memiliki kebijakan TIK yang komprehensif. Mereka seharusnya memiliki segmentasi jaringan sesuai dengan prinsip-prinsip yang telah ada bertahun-tahun. Setidaknya, mereka memisahkan jaringan DMZ dan jaringan internal. Memisahkan sistem-sistem berdasarkan peruntukan. Misalnya, portal dan situs web harusnya dipisahkan dan data yang digunakan seharusnya berbeda, termasuk sandi masuk mereka!

Tentunya, pemisahan ini memerlukan biaya lebih. Faktor apakah keamanan perusahaan sebanding dengan biaya yang diperlukan, hal ini termasuk dalam Risk Assessment Analysis (Analisis Ancaman) yang mana saya malas membahas untuk saat ini.

 

NGINX dan Situs Siap HTTP/2

NGINX dan Situs Siap HTTP/2

Semenjak versi 1.9.5, NGINX sudah menggantikan modul SPDY dengan HTTP/2. Protokol tersebut telah resmi dan banyak peramban modern memanfaatkannya pada versi anyar. Salah satu yang paling gencar adalah Chromium dan turunannya (Google Chrome).

Ajaibnya, mengaktifkan HTTP/2 dapat menyebabkan galat berikut pada Chromium:

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

Berikut penyebab mengapa demikian:

  • Menggunakan enkripsi lawas yang dilarang oleh HTTP/2, misalnya masih SHA-1, RC4, atau lebih rendah.
  • Menggunakan sertifikat SSL yang tidak ditandatangani oleh CA yang terpercaya/diakui oleh peramban.
  • Masih ada penggunaan protokol tak terenkripsi sehingga isi situs tercampur antara yang terenkripsi atau tidak.

Lalu apa yang harus kita lakukan untuk dapat sesuai dengan HTTP/2?

  • Untuk situs yang melayani HTTP dan HTTPS, sebaiknya penulisan URI tidak mencantumkan skema. Misalnya, daripada menulis “http://alamat.sesuatu/res/1.jpg” atau “https://alamat.sesuatu/res/1.jpg”, lebih baik ditulis dengan “/res/1.jpg”.
  • Solusi yang paling betul, tulis semua dengan menggunakan protokol HTTPS.
  • Solusi lain, tulis semua dengan menggunakan HTTP non-enkripsi dan lupakan HTTP/2.

Pada zaman dahulu, penggunaan protokol HTTPS berat dan cenderung dilewati. Namun, protokol HTTP/2 memiliki mekanisme saluran aman sehingga dapat mengirim sumber daya dengan lebih cepat dan efisien. Apalagi, prosesor zaman sekarang sudah dilengkapi oleh ekstensi AES-NI yang melakukan enkripsi secara perangkat keras. Dengan kedua alasan itu, menyalakan HTTP/2 justru mempercepat situs.

Sayangnya, dunia tak seindah itu. Harga tanda tangan sertifikat per domain itu mahal! Kalau Anda memiliki situs dengan banyak domain, Anda tentunya harus berstrategi. Salah satunya Anda bisa saja membeli sertifikat wildcard (*) sehingga bisa dipakai oleh sub domain.

Tetap saja, untuk UI yang memiliki lembaga tingkat 2 (misalnya lembaga di bawah fakultas), sertifikat wildcard tidak bisa dipakai. UI harus membeli sertifikat wildcard per fakultas juga. Atau, UI bisa saja membeli sertifikat untuk menjadi CA sekunder.

Keduanya adalah solusi yang mahal. Apalagi, setiap sertifikat hanya berlaku setahun atau dua tahun saja dan harus diperpanjang. Kalau sudah sampai seperti itu, kita harus berstrategi.

Dalam kasus UI, situs-situs yang membutuhkan keamanan tinggi harus menggunakan HTTP/2 dan sertifikat SHA2. Sedangkan untuk situs-situs kurang penting seperti Blog Staff ini, penggunaan sertifikat sekenanya saja. Misalnya, masih ditandatangani sendiri (self-signed) atau sertifikat SHA1 sisa-sisa dana tahun lalu.

Untuk peladen yang menggunakan WordPress Multisite dan Drupal multisite sayangnya harus secara manual menulis konfigurasi HTTP/2 pada NGINX. Bisa, sih, ditulis skripnya. Tetapi, saya terlalu malas untuk saat ini. Terlalu banyak kasus anomali (edge cases) yang harus dipertimbangkan.

Bagaimana dengan Anda, sudah siapkah situs Anda?

Komentar: Ekonomi Borongan vs Ekonomi Berbagi
Photo: Andre Tampubolon

Komentar: Ekonomi Borongan vs Ekonomi Berbagi

Kemarin ada demo para pengendara angkutan darat di DKI Jakarta terhadap maraknya bisnis transportasi daring. Di tengah-tengah demo besar-besaran kemarin terdengar istilah ekonomi berbagi (sharing economy). Saya pernah bahas ketika menjelaskan prinsip-prinsipnya dari video Yochai Benkler. Semakin semangat saya membahas ini karena awalnya ekonomi ini terpengaruh gerakan Perangkat Lunak Bebas dan Terbuka (Free/Open Source Software, FOSS).

Ide dasar dari ekonomi berbagi adalah semangat saling berbagi antar tetangga. Pribadi pemilik aset dapat meminjamkan asetnya kepada orang lain. Pihak ketiga menyediakan pasar (marketplace/platform) untuk menyediakan pemilik aset dan calon penyewa fasilitas makcomblang di Internet. Agar dapat bekerja, sistem ini memanfaatkan rasa percaya satu sama lain. (Danielle Sacks, 2011)

Sistem yang Telah Ada

Forum Jual-Beli (FJB) Kaskus menyediakan sarana antara satu pengguna Kaskus dengan pengguna lainnya. FJB menerapkan rasa percaya dengan Bata dan Cendol untuk reputasi. Reputasi inilah yang menentukan penjual dapat dipercaya atau tidak. Hal ini membuat FJB menjadi forum yang cukup terpercaya. (Amru Sahmono Boang Manalu, 2008)

Selain itu, tanpa tersadar setiap orang yang menggunakan teknologi perbincangan daring pun sering kali menanyakan ke grup-grup yang berbeda untuk menanyakan apakah ada orang yang memenuhi kebutuhannya. Dari perbincangan, orang kemudian bisa menawarkan jasa atau apa pun. Ada pekerjaan, kendaraan, pakaian, bahkan orang hilang.

Untuk sarana berbagi transportasi, ada yang menciptakan nebeng.com sebagai sarana berbagi kendaraan (ride sharing).

Kalau di Indonesia sudah ada, mengapa masuknya Gojek, Grab, dan Uber menjadi masalah?

Pergeseran Nilai

TL;DR: Mereka bukan ekonomi berbagi, setidaknya bukan artian semangat berbagi seperti di awal mula terbentuknya ekonomi itu.

Ketika ide baik seperti ekonomi berbagi dijalankan, ada kesulitan dalam membuat pegiat ekonomi ini dapat bertahan. Ketika melihat daftar harga, orang merasa lebih baik membeli sendiri peralatan yang ingin digunakan dari pada meminjam dari suatu tempat dengan harga yang kurang kompetitif. Cara satu-satunya untuk bisa selamat adalah dengan menerapkan standar yang ujung-ujungnya sama seperti sistem komersial. Perlahan, ide ekonomi berbagi bergeser dari ide yang semula. (Sarah Kessler, 2015)

Perusahaan yang menyediakan pasar bagi pemberi jasa dan penjual tidak lagi sebagai pihak penyedia sarana bertemu. Ia mulai menerapkan standar. Harga yang diberikan harus seragam. Pemilik aset diharuskan memberikan standar layanan yang sama dengan ketentuan. Bahkan, sang pemilik aset harus berseragam sesuai dengan ketentuan perusahaan. Pemilik aset pun harus menandatangani kontrak untuk dapat memenuhi standar yang telah diberikan perusahaan. Artinya, sang pemilik aset harus tunduk kepada ketentuan yang diberikan oleh perusahaan kalau mau ikut terlibat di dalam pasar itu.

Menurut (Imam Hadi Wibowo, 2015), pemilik aset tidak memiliki hubungan kerja dengan perusahaan menurut UU No. 13 Tahun 2013 tentang Ketenagakerjaan. Apalagi, dalam perjanjian, pemilik aset membagi hasil dengan pihak perusahaan. Tidak ada pemaksaan apakah sang pemilik aset mau mengambil atau tidak suatu pesanan.

Dalam (KBBI III, 2015), pemilik aset terdefinisikan sebagai orang yang memborong atau kontraktor. Hal ini karena dia menyelesaikan pesanan, yakni mengantarkan orang/barang ke tujuan, dengan menyediakan aset/peralatan sendiri untuk mencapai itu.

Berhubung saya tidak memiliki pemahaman hukum yang kuat, saya belum bisa memastikan apakah status pemilik aset adalah subkontraktor atau kontraktor. Yang dapat saya simpulkan adalah para pemilik aset terikat perjanjian kemitraan antara pihak perusahaan penyedia layanan daring dengan diri mereka masing-masing. Mereka terikat terhadap Pasal 1320 KUHPerdata yang mengatur syarat-syarat sahnya suatu perjanjian.

Definisi Stallman (Bapak Free Software/Perangkat Lunak Bebas)

Dengan adanya intervensi perusahaan yang mengatur para pemilik aset dengan berbagai standar, sulit rasanya kalau ini masih disebut ekonomi berbagi. (Richard Stallman, 2014) menyebut sistem aplikasi transportasi daring sebagai piecework subcontractor economy, bukan sharing economy (ekonomi berbagi). Lemahnya posisi pemilik aset karena isi perjanjian kemitraan dapat membuat mereka pada posisi dan kondisi bayaran yang sulit. (Megan Rose Dickey, 2014) pun mengamini praktik tersebut pada salah satu penyedia layanan transportasi daring. Di Indonesia, merek lokal pun tidak luput dari praktik pengubahan sistem bagi hasil yang diprotes oleh pemilik aset. (Kompas TV, 2015)

Poin lain yang diserukan oleh Stallman adalah penerapan tarif rendah dan kehilangan uang demi menghancurkan kompetitornya. Praktik dumping harga ini menyebabkan layanan yang disediakan oleh perusahaan serupa (misalnya perusahaan transportasi umum) tidak dapat menyaingi. Seyogyanya, praktik tersebut dapat terjerat pasal praktik monopoli.

Namun, apa benar mereka melakukan dumping?

Salah satu situs penyedia layanan transportasi daring menyebutkan bahwa Penyedia Layanan adalah pemilik aset dan perusahaan tersebut adalah perusahaan penyedia teknologi yang mempertemukan pemilik aset selaku Penyedia Layanan ke pelanggan. Sepemahaman saya, itu artinya pelanggan membayar ke Penyedia Layanan dengan potongan komisi bagi hasil untuk perusahaan yang mempertemukan mereka. Pihak perusahaan membayarkan dengan jumlah tetap sesuai jarak kepada Penyedia Layanan namun pelanggan hanya membayar tarif datar. Artinya, pihak perusahaan mentraktir pelanggan dengan membayarkan ke Penyedia Layanan.

Secara etika, ini ada di daerah abu-abu dan terlihat sekilas sebagai dumping. Namun, saya takkan berspekulasi di dalam ranah hukum lebih lanjut karena saya bukan profesional di bidang itu.

Hal berikutnya yang menjadi titik protes Stallman adalah seringkali perusahaan penyedia layanan transportasi daring membuat sangkalan yang membuat mereka tidak berkewajiban mengganti rugi. Ini perlu diwaspadai. Jangan sampai perusahaan-perusahaan yang ada di Indonesia juga berlaku demikian.

Pembelaan Terhadap Layanan Transportasi Daring

Kendati ada potensi perlakuan yang tidak adil yang menyebabkan layanan transportasi tradisional dalam keadaan tidak diuntungkan, agak sulit rasanya untuk memiliki empati kepada mereka. Kondisi transportasi umum DKI Jakarta yang sering kali tidak layak dan kurang menyebabkan nilai mereka kurang. Setidaknya saya sendiri merasa sulit empati kepada mereka yang menaikkan ongkos tiga kali akibat bensin naik, namun tidak ikut turun saat bensin turun tiga kali. Hal ini yang menyebabkan inflasi pada barang dan jasa.

Ketika ada surat Menteri Perhubungan yang melarang Layanan Transportasi Daring, ada beberapa hal yang saya catat:[1]

  1. Kementerian Perhubungan mencoreng Bahasa Indonesia dengan menulis “diatas”, bukan “di atas” dan penulisan referensi seperti itu pun bukanlah sesuatu yang baku dalam menulis tulisan resmi. Sebaiknya tulisan resmi kementerian dilihat dahulu oleh ahli bahasa. Jangan sampai saya menduga pemerintahan saat ini sudah tidak lagi menjunjung tinggi Sumpah Pemuda sebagai dasar negara.
  2. Layanan Transportasi Daring juga menyediakan asuransi bagi pengguna.
  3. UU Transportasi bilamana diterapkan hanya menyisakan taksi dan Trans Jakarta.
  4. Dengan jumlah bus Trans Jakarta sekarang, seharusnya sudah ada bagian dari konsorsium yang dihukum karena tidak memenuhi kontrak pemenuhan bus.

Separah itulah kondisi transportasi umum DKI Jakarta. Jangan lupa, bahwa pengelolaan transportasi umum adalah kewajiban pemerintah. Alasan utama mengapa pemerintah menyerahkan penyediaan transportasi umum adalah karena ketidakmampuan pemerintah dalam mengelola.

Artinya, pengelolaan transportasi publik pada dasarnya mengacu kepada pemenuhan kebutuhan moda transportasi penduduk. Pasar berbicara, kami butuh transportasi yang layak. Ketika ada layanan yang memberikan layanan bermartabat kepada penduduk DKI Jakarta, mengapa harus dicegah saat alternatifnya tidak bisa menyediakan kualitas layanan yang sama?

Beberapa Catatan

Setelah menulis panjang lebar, saya menemukan catatan yang perlu dilakukan:

Dengan adanya standar yang diberikan oleh perusahaan penyedia pasar yang sampai ke detail pelayanan dan harga, tidak pantas rasanya ini disebut lagi ekonomi berbagi. Yang saya lihat, pemilik aset adalah seorang pemborong yang memenuhi sejumlah ketentuan dari perusahaan penyedia pasar. Apalagi, dengan penyediaan seragam, maka pemilik aset tidak lagi memiliki kebebasan untuk mendefinisikan layanan mereka sendiri. Jika demikian, bukankah ini namanya lebih cocok disebut ekonomi borongan?[2]

Tidak ada yang salah dengan ekonomi borongan. Apalagi, pemborong adalah individu-individu pemilik aset. Hanya saja, ada beberapa yang perlu dilakukan pemerintah untuk melindungi mereka dan perusahaan agar adil.

Perlunya aturan hukum yang melindungi individu pemilik aset. Dari awal saya tidak pernah menyebut mereka pengemudi. Layanan yang mereka sediakan bagi pelanggan adalah aset mereka. Nama mereka, nomor telepon, cara melayani, tampang, dan motor yang mereka punya merupakan brand pribadi mereka. Perusahaan mitra mereka mungkin menerapkan standar, tetapi setiap mereka memiliki nilai tambah yang berbeda.

Mungkin di masa depan ada praktik peminjaman motor atau apa pun. Atau ada perusahaan/individu yang akan meminjamkan hal-hal lainnya kepada pengemudi. Seyogyanya, yang dipandang sebagai Penyedia Layanan adalah individu yang menyediakan layanan tersebut, bukan lembaga atau individu lain yang memegang beberapa aset seperti motor, telepon, dan jaket.

Perlunya aturan hukum yang melindungi individu terhadap perusahaan dalam pembuatan perjanjian. Jangan sampai ada individu yang karena lemah dan ketidaktahuan hukum dimanfaatkan oleh perusahaan untuk keuntungan sebesar-besarnya. Sedihnya, ini bukan saja diperlukan bagi pengemudi sebagai pemilik aset, tetapi juga orang-orang lain dalam berbagai bidang usaha.

Ada PR besar bagi perusahaan penyedia layanan daring di Indonesia untuk memenuhi aspek humanisme. Jangan sampai mereka menjadi diktator selanjutnya. Perlu adanya nilai inti dalam perusahaan yang memasukkan hal tersebut dalam salah satu butir.

Adanya disrupsi terhadap angkutan umum yang ada sekarang ini hendaknya menjadikan moda transportasi tradisional berkaca. Hal ini demi kebaikan mereka karena supir-supir sudah mengeluh turunnya jumlah penumpang. Sebenarnya ancaman moda transportasi baru ini adalah stimulus bagi mereka agar bisa berubah dan meningkatkan kualitas layanan.

Setelah kita dewasa dari semua itu, ada satu PR terakhir agar pemerintah/lembaga yang berkuasa tidak menggunakan sarana pelacakan untuk menindas whistleblower, aktivis HAM, lawan politik, atau minoritas.


  1. Berdasarkan naskah surat Menteri dan surat terbuka yang saya dapatkan dari http://kask.us/iaCiS ^
  2. Paragraf tambahan untuk menjelaskan maksud judul dan paragraf perantara. ^

Bacaan Lebih Lanjut

Daftar Pustaka

Amru Sahmono Boang Manalu (2008). Analisis Kepuasan Pelanggan Online pada Situs Forum Komunitas Online Sub Forum Jual Beli www.kaskus.us. Bogor: Institut Pertanian Bogor.^
Danielle Sacks (2011, April 18). The Sharing Economy. The Fast Company. Retrieved March 23, 2016 from The Fast Company: http://www.fastcompany.com/1747551/sharing-economy.^
Imam Hadi Wibowo (2015, August 25). Status Hubungan Pengojek dan Perusahaan Aplikasi Layanan Ojek. PT Justika Siar Publika. Retrieved March 23, 2016 from PT Justika Siar Publika: http://www.hukumonline.com/klinik/detail/lt50924dbf2ad1f/status-hubungan-pengojek-dan-perusahaan-aplikasi-layanan-ojek.^
KBBI III (2015, March 23). Memborong. Kateglo. Retrieved March 23, 2016 from Kateglo: http://www.kateglo.com/?mod=dict&action=view&phrase=memborong.^
Kompas TV (2015, November 16). Demo Go-Jek Tolak Pemotongan Bagi Hasil [Video file]. Retrieved March 23, 2016 from Youtube: https://www.youtube.com/watch?v=ozrMUZuDLEo.^
Megan Rose Dickey (2014, June 28). Here s How Much Money You Can Really Earn As An Uber Driver. Business Insider Australia. Retrieved March 23, 2016 from Business Insider Australia: http://www.businessinsider.com.au/how-much-you-earn-as-an-uber-driver-2014-6.^
Richard Stallman (2014, 0 0). Reasons not to use Uber. Retrieved March 23, 2016 from https://stallman.org/uber.html.^
Sarah Kessler (2015, September 11). The Sharing Economy Is Dead, And We Killed It. The Fast Company. Retrieved March 23, 2016 from The Fast Company: http://www.fastcompany.com/3050775/the-sharing-economy-is-dead-and-we-killed-it.^
Komentar: FBI vs Apple

Komentar: FBI vs Apple

Saat ini sedang ada sebuah kasus di Amerika Serikat yang menginginkan Apple menyediakan perkakas untuk FBI dapat masuk ke iPhone untuk mendapatkan data. Dasar kasusnya adalah peristiwa terorisme tempo hari. Apple menolak. Namun, seperti yang diberitakan oleh ArsTechnica, FBI memberikan argumen bahwa Apple mendua; memberikan iData kepada pemerintah Cina sementara menolak FBI dalam melawan terorisme.

Ada dua perbedaan mendasar. Pemerintah Cina meminta Apple menaruh data khusus pengguna iPhone di Cina. Yang diminta oleh FBI adalah perkakas untuk mengakses iPhone mana pun.

Mengenai pemerintah Cina yang meminta data khusus pengguna iPhone di Cina, hal ini sebenarnya apa yang dahulu diminta untuk RIM lakukan terhadap data Blackberry di Indonesia. Ada beberapa hal yang menjadi pertimbangan:

  1. Pemerintah dapat melakukan sensor dan pengaturan terhadap semua yang ada di dalam negara.
  2. Pemerintah dapat melakukan perlindungan karena data yang terlibat masih dalam yuridiksi negara.
  3. Hukum yang berlaku di negara tersebut dapat diterapkan kepada entitas teknologi.

Poin (1) (2) dan (3) intinya kepada penjangkauan data dan perlindungan negara kepada warganya. Hal ini bisa berakibat buruk, dengan memakai kekuatan ini untuk membungkam lawan politik dan whistleblower. Bisa juga berakibat baik karena pemerintah dapat menindak sesuai dengan hukum yang berlaku di negara tersebut.

Ada hal yang baik dan buruk yang dilakukan oleh pemerintah Cina, yang diminta FBI adalah jelas kebutuhan spionase. Selama ini seperti yang sudah-sudah, FBI dengan izin pengadilan sudah dapat mengakses data-data tertentu. Dengan dibukanya algoritma pengacakan seperti yang diminta FBI, FBI dapat menjangkau semua pengguna iPhone! Masalahnya, tak semua pengguna iPhone merupakan warga negara Amerika Serikat.

Jelas sekali, bila Apple mengabulkan permintaan ini, maka dunia akan meninggalkan iPhone. Banyak negara yang akan mulai mengampanyekannya. Siapa juga yang mau warga negaranya diawasi asing? Apalagi warga negara tersebut memiliki potensi untuk menjadi pemimpin di masa depan.

Memang, tidak ada yang aman di dunia ini. Seperti konferensi enkripsi, mereka mengumumkan adanya algoritma baru, lalu sorenya sudah ada yang bisa membobol. Enkripsi Apple tidak sebegitu amannya. Dia bisa saja dibobol. Namun, perlu usaha ekstra dan insentif untuk itu.

Ibarat pintu yang terkunci yang bisa dibor untuk bisa masuk paksa. Tetap saja tidak ada maling yang menggunakan cara itu. Hal ini karena bor dapat menimbulkan suara keras sehingga membangunkan tetangga. Namun, yang diminta FBI adalah kunci serep sehingga dia dapat masuk tanpa perlu menimbulkan suara.

Bagaimana perasaan Anda untuk menitipkan kunci duplikat rumah Anda pada polisi? Saya, sih, sebagai seorang minoritas lebih suka kalau pemerintah tidak punya akses terlalu banyak. Jangan sampai sekelompok orang dari golongan mayoritas menggunakan fasilitas negara untuk bisa menindas minoritas. Sudah banyak kasus negara menutup mata ketika ada akses tak diinginkan. Bahkan, korporasi dapat menggunakan negara untuk membungkam banyak orang. Hal inilah juga yang ditakutkan banyak aktivis.

Apple sedang berada di persimpangan antara ditinggalkan banyak orang. Itu sebabnya, dia akan berjuang melawan FBI yang secara terang-terangan meminta itu. Siapa juga yang mau jadi dell hell berikutnya?

Memperbaharui Infinix X600 (Note 2) ke Android M (6.0)

Saya menulis ini karena banyak tulisan serupa yang berisi iklan. Masakkan banyak situs yang menulis versi yang sebenarnya hanya menyalin dari forum Infinix dan menautkan tautan unduhan ke Internet Archive. Sama sekali tidak modal! Karena saya pun tidak modal, saya tidak menggunakan tautan beriklan.

Saya memiliki masalah dengan Infinix Note 2 saya. Pada aplikasi Pembaharuan, saya menemukan ada versi terbaru X600-H533-B1-M-20160131 yang selalu gagal diunduh. Saya mengunduh lewat jaringan WiFi UI dan bahkan nekat menggunakan jaringan LTE langsung. Namun, proses pembaharuan selalu gagal.

Untungnya CardNeverEnds pada Kaskus yang memberi petuah agar menggunakan versi T-Card. Berikut cara saya:

  1. Versi X600-H533-B1-M-20160131 ternyata identik dengan H533-B1-Tcard_update_20160224.zip. Saya mengunduh itu dari Internet Archive.
  2. Taruh direktori download pada SD Card telepon. Ini direktori baku saat Anda mengunduh langsung dari telepon. Saya kebetulan mengunduh dari laptop jadi saya perlu menulis langkah ini untuk mengingat.
  3. Masuk ke dalam Pembaharuan ⇒ … ⇒ Update From Local ⇒ Pilih berkas ZIP pembaharuan dan pasang.
  4. Tunggu dan beres.

XUI versi Marsmallow dari Infinix ini jauh terasa enteng. Saya belum bisa bilang tentang ketahanan daya. Saya sedang melakukan uji stres dengan memasang aplikasi Path.

Memasang Steam Linux pada Tambora

Seperti janji saya, saya akan memaparkan cara saya memasang Steam Linux. Sebenarnya, cara yang saya ikuti sama seperti artikel Wiki Debian. Hanya saja, msohon maaf, kali ini akan ada penjelasan politis yang membuat permainan OpenGL (DoTA 2 misalnya) di Steam Linux dapat dimainkan dengan menggunakan penggerak terbuka (radeon) dari MESA.

Langkah Seperti pada Wiki Debian

Pastikan bahwa pengguna yang hendak memainkan DoTA 2 memilki akses ke akselerasi video dan audio:

Kalau mengikuti cara pemasangan sebelumnya, pasti user sudah tergabung ke kedua grup ini sehingga perintah ini tidak perlu dilakukan. Saya menulis ini hanya demi kelengkapan saja.

Kalau mengikuti cara pemasangan sebelumnya, paket-paket yang tidak bebas juga sudah terpasang. Demi kelengkapan, berikut isi /etc/apt/sources.list BlankOn Tambora saya:

Seharusnya sudah seperti ini bila Anda mengikuti cara pemasangan UEFI saya terdahulu.

Aktifkan repositori untuk arsitektur i386: (Intel 32-bita)

Nah, berikut ini penjelasan agak politis, supaya Anda tahu apa itu kebebasan.

Memasang Pustaka S3TC

Pustaka S3TC adalah sebuah pustaka yang mengimplementasi algoritma kompresi tekstur S3. Penggunaan algoritma ini secara de facto memasukkan algoritma ini sebagai salah satu standar OpenGL. Sayangnya, MESA secara baku menonaktifkan pustaka ini dan membuat algoritma kompresi dengan jalan memutar sehingga tidak melanggar paten bila digunakan di negara yang mematenkan algoritma ini. Namun, MESA juga menyediakan pustaka kompresi tekstur S3TC untuk negara-negara yang secara legal tidak memperbolehkan paten algoritma.

Bagaimana dengan Indonesia?

Untungnya, sebelum Indonesia mengikuti Trans-Pacific Partnership (TPP), Indonesia belum mengakui adanya paten algoritma. Sepengetahuan saya, Indonesia masih termasuk  negara-negara non-TPP seperti negara-negara di Eropa yang dapat menggunakan pustaka ini. Mudah-mudahan Pak Jokowi atau siapa pun yang berkuasa tidak secara cepat memutuskan untuk masuk ke dalam TPP kendati kaum tekstil mengatakan adanya insentif penghapusan tarif bagi peserta TPP. Hal ini mengingat anggota-anggota TPP yang lain juga penghasil tekstil.

Ada sisi lain yang dikorbankan apabila Indonesia masuk ke TPP. Yang paling penting buat saya adalah potensi hilangnya klausul pengecualian dari paten obat untuk penyakit-penyakit penting yang diatur oleh hukum Indonesia dan bermain DoTA 2 akan terasa lambat dengan penggerak bebas terbuka MESA. Sebelum TPP disahkan, mari bermain DoTA 2 lebih cepat dengan implementasi algoritma yang benar.

Ada dua cara untuk mencapainya, entah langsung memasukkan repositori Deb-Multimedia atau memasang paket-paket yang diperlukan saja. Cara yang baik dan benar adalah yang pertama. Namun, saya lebih memilih cara yang kedua karena algoritma itu tetap dan perubahan paket-paket pustaka S3TC hanya berisi cara pemaketan saja. Mari unduh:

Untuk lebih jelas, buang saja dahulu paket-paket kompresi tekstur yang memutar: (S2TC)

Pasang pustaka S3TC yang sebenarnya.

Saya membiasakan diri menggunakan gdebi daripada dpkg untuk memasang paket lepas Debian.

Terakhir, pasang langsung Steam Linux:

Selesai sampai sini. Anda bisa langsung menjalankan Steam Linux dan mengunduh DoTA 2.

Bonus

Saya sudah lama tidak mengikuti perkembangan MESA semenjak PC saya berubah dari Gentoo menjadi Kubuntu. Saya tidak tahu apakah beberapa variabel berikut secara baku sudah aktif di MESA. Namun, tidak ada salahnya saya mencantumkan tambahan parameter saya untuk aplikasi OpenGL. Saya taruh ini di /home/user/.bashrc (sesuaikan dengan home Anda).

Keluar dari sesi destop dan masuk kembali supaya sesi Anda mengaktifkan kelima baris ini.

Kali ini benar-benar selesai.

Memperlengkapi Tambora dengan Paket-paket Dasar

Tambora yang telah saya pasang masih belum lengkap. Terakhir laptop saya baru saja diisi:

  • Penggerak perangkat WiFi Realtek yang sudah dimodifikasi. Hasilnya luar biasa! saya jadikan hotspot sangat stabil.
  • Peluncur synapse untuk meluncurkan aplikasi.
  • Aplikasi blueman untuk menggantikan bluemoon yang tidak bisa mengakses perangkat HCI (bluetooth).

Mari modifikasi lebih lanjut.

Manajer Sesi

Untuk kali ini saya terpaksa melepas Manokwari karena tidak sesuai dengan alur kerja saya:

  • Pintasan papan ketik tidak ada. Saya harus menggunakan tetikus. Untuk trackpad kalau apa-apa pakai itu, sangat merepotkan.
  • Panel tidak dapat disembunyikan/dipindahkan. Bagi saya, kehilangan piksel horisontal sangat disayangkan untuk layar laptop yang lebar.
  • Pintasan kecerahan layar tidak berfungsi, saya tidak tahu aplikasi apa yang harus dipasang.
  • Perpindahan aplikasi (ALT+TAB) hanya terjadi antar dua aplikasi terakhir yang digunakan.

Tentu saja, saya masih menyerempet ke produk BlankOn! Saya menggunakan Cinnamon dengan citarasa BlankOn. Untuk memasang:

Saya mendapati destop ini sesuai dengan cara kerja saya. Tombol META (WIN) membuka menu mulai. Panel dapat disembunyikan. Yang paling penting, bisa dikonfigurasikan.

Paket Kerja

Memasang libreoffice untuk dokumen.

Memasang Dia (pembuat diagram) untuk membuat diagram-diagram.

Memasang paket-paket grafis (GIMP, Inkscape, dan MyPaint) untuk berkreasi.

GIMP untuk gambar raster, Inkscape untuk gambar vektor, dan MyPaint untuk gambar kuas.

Memasang OpenVPN untuk Network Manager untuk terhubung ke jaringan kantor. Apa? Anda pikir UI tidak canggih keamanannya seperti Big Four?

Selanjutnya memasang Slack untuk berlaku seperti DevOps. Yup, kami tidak hidup di zaman batu.

Saya menggunakan gdebi, bukan apt-get, agar paket-paket yang dibutuhkan juga dipasang.

Memasang Steam Linux Client

Salah satu kebutuhan saya adalah membutuhkan Steam untuk mengakses permainan yang saya beli atau pun secara legal dapat saya mainkan gratis (DoTa 2). Saya menggunakan instruksi dari Wiki Debian. Namun, ada sedikit perubahan yang membuat aplikasi berjalan dengan lancar. Ini akan saya bahas pada selanjutnya.

Paket Sisanya

Mohon maaf, sepertinya kemalasan menimpa saya. Selanjutnya, silakan lihat-lihat saja. Caranya, buka saja Synaptic Package Manager dan cari dengan kata kunci “blankon”. Nanti di sana cari saja yang kira-kira perlu. Kalau ada yang bertentangan, misalnya seperti blankon-panel yang membuang blankon-desktop, abaikan saja.