Membuat Unit Test Yang Melibatkan Waktu
14 December 2020Pada suatu hari, saya ingin membuat unit test untuk menguji kode program yang menggunakan setInterval()
. Bagaimana caranya
memastikan bahwa kode program sudah benar melakukan sebuah operasi secara berulang kali, tanpa harus menunggu? Contoh lain yang
berkaitan dengan waktu adalah menguji kode program yang akan mengirim notifikasi kegagalan bila tidak ada respon yang diterima selama
30 menit. Bagaimana cara memastikan bahwa kode program tersebut telah benar tanpa harus menunggu 30 menit?
Kategori: Pemograman Tags: Node
Event Loop Di Node.js
03 December 2020Walaupun Node.js tidak mendukung multi-threading, ia memiliki implementasi event loop untuk mengerjakan kode program secara
asynchronous. Sebenarnya kemampuan mengerjakan kode program secara asynchronous tidak ada kaitannya dengan threading, tetapi
dalam banyak hal, saya tidak perlu tahu lebih detail. Selama kode program bisa dijalankan secara asynchronous (misalnya melalui
Promise
dan timer), saya tidak pernah harus mengetahui implementasi detail event loop di Node.js. Akan tetapi, saat saya mencoba
menerapkan konsep worker (yang umum dipakai di bahasa multi-threading) dengan menggunakan Promise
, saya mulai menemukan banyak masalah.
Sebagai contoh, saya membuat kode program seperti berikut ini:
Kategori: Pemograman Tags: Node
Menggunakan Array Di Google BigQuery
11 July 2020Salah satu cara untuk mendapatkan hasil query lebih cepat di BigQuery adalah dengan melakukan denormalisasi dengan menggunakan tipe data ARRAY
.
Sebagai contoh, saya akan membuat sebuah tabel baru bernama faktur
dengan struktur seperti berikut ini:
Kategori: Pemograman Tags: BigQuery GoogleCloudPlatform
Menangkap Kesalahan Saat Menggunakan EventEmitter
13 May 2020EventEmitter
merupakan salah satu class penting di Node.js untuk pekerjaan asynchronous berbasis event. Salah satu contoh penggunaannya yang paling
populer adalah sebagai Stream
seperti pada fs.ReadStream
, http2.ServerHttp2Stream
, dan sebagainya. Tentu saja saya juga bisa membuat class turunan
dari EventEmitter
untuk keperluan pribadi, misalnya pada contoh kode program berikut ini:
Kategori: Pemograman Tags: Node TypeScript
Mengkompilasi TWRP Dari Kode Program Untuk Perangkat Yang Tidak Resmi Didukung
17 April 2020Pada tulisan sebelumnya, saya men-build AOSP dari kode program. Fokus
utama tulisan tersebut adalah boot.img
dan system.img
. Kali ini, saya akan mencoba bermain dengan recovery image (recovery.img
). Ini adalah sebuah sistem operasi kedua
yang benar-benar terpisah dari sistem operasi utama. Untuk memasuki sistem operasi recovery, pengguna harus menggunakan kombinasi
tombol tertentu pada saat perangkat pertama kali dinyalakan. Sistem operasi recovery bawaan biasanya menyediakan fasilitas yang sangat sederhana seperti menghapus
seluruh data pengguna atau mengatur ulang perangkat agar kembali seperti semula.
Memahami Proses Bootstrap Pada Sistem Operasi Android
05 March 2020Sistem operasi Android, sama seperti turunan Linux lainnya, adalah sistem operasi open-source. Setiap sistem operasi juga dibuat dari kode program. Proses mengubah kode program menjadi hasil akhir (artifact) yang dapat dijalankan disebut sebagai building. Bila hasil build program biasa dapat dijalankan melalui shortcut atau mengetikkan perintah di CLI, lalu bagaimana dengan sistem operasi? Seperti apa caranya menjalankan sistem operasi Android dari kode program? Saya akan mencari jawaban pertanyaan tersebut dalam tulisan ini.
Memakai Python Dalam Docker Di PyCharm
05 February 2020Hari ini saya perlu bekerja kembali dengan tool CLI Python yang sudah lama tidak saya sentuh. Saya bahkan sudah tidak memiliki instalasi Python lagi di sistem operasi yang saya pakai. Apakah ada cara cepat untuk menjalankan script tersebut tanpa harus meng-install Python dan dependency-nya di sistem operasi saya? Walaupun Python memiliki Virtualenv untuk membatasi instalasi dependency ke proyek yang aktif, akan lebih menyenangkan bila saya menjalankannya di container. Tentu saja, saya membutuhkan IDE yang bisa memakai Python di dalam container Docker dan tetap bisa mendeteksi dependency yang ter-install di dalam container tersebut. Salah satu IDE dengan fasilitas tersebut adalah PyCharm.
Meningkatkan Kinerja Disk I/O Di Ubuntu
06 May 2019Saat menggunakan external HDD untuk bekerja, saya menemukan bahwa Ubuntu bekerja jauh lebih lambat dibandingkan saat menggunakan internal HDD. Hal ini terutama sangat terasa bila saya menjalankan beberapa IDE sekaligus seperti Webstorm dan IntelliJ IDEA secara bersamaan. Pada kasus tertentu, sistem operasi menjadi crash karena saking sibuknya external HDD bekerja. Hal ini terjadi walaupun saya sudah menggunakan konektor USB 3.0 yang menawarkan kecepatan maksimal hingga 5 Gbit/s. Mungkin ini disebabkan oleh USB controller yang memang tidak dioptimalkan untuk HDD (bila dibandingkan dengan SATA). Lalu apa yang bisa saya lakukan untuk mendapatkan kinerja I/O yang lebih baik?