Menerapkan Event Sourcing Di BigQuery

Event sourcing adalah sebuah pola dimana aplikasi menyimpan setiap perubahan yang dilakukan terhadap sebuah entitas (biasanya dalam bentuk event). Sebagai contoh, aplikasi bisa saja memiliki event seperti PelangganBaruDaftar, DataPelangganBerubah, dan PelangganDihapus. Setiap kali terjadi aksi di aplikasi, event tersebut akan tersimpan di dalam event store. Pola event sourcing seperti ini biasanya dipadukan bersama event driven design dan CQRS.

Membuat Unit Test Yang Melibatkan Waktu

Pada 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: JavaScript

Event Loop Di Node.js

Walaupun 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: JavaScript

Menggunakan Array Di Google BigQuery

Salah 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:

Menangkap Kesalahan Saat Menggunakan EventEmitter

EventEmitter 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: JavaScript TypeScript

Mengkompilasi TWRP Dari Kode Program Untuk Perangkat Yang Tidak Resmi Didukung

Pada 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.

Kategori: OS Tags: Android

Memahami Proses Bootstrap Pada Sistem Operasi Android

Sistem 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.

Kategori: OS Tags: Android

Memakai Python Dalam Docker Di PyCharm

Hari 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.

Kategori: DevOps Tags: Python Docker PyCharm