Kategori: Pemograman

Semua artikel yang berhubungan dengan pemograman seperti Java, TypeScript, C, dan sebagainya. Pemograman bukan hanya aktifitas menulis kode program, tapi juga termasuk proses pemikiran dalam menciptakan kode program. Sebelum mulai menulis kode program melalui keyboard, programmer juga memikirkan aspek seperti kemudahan maintenance, keamanan, dan sebagainya. Oleh sebab itu, teknik pengembangan sistem informasi seperti arsitektur dan design pattern juga termasuk dalam kategori ini.

Memakai Google BigQuery Untuk Laporan Inventory FIFO

Menghitung data untuk laporan inventory berbasis FIFO sebenarnya tidak kompleks. Saya hanya perlu mengetahui jumlah item yang tersisa, lalu mencari transaksi pembelian dan retur terbaru hingga mencapai nilai jumlah item tersisa. Sama sekali tidak perlu menghitung penjualan dan transaksi lainnya dari awal. Sebagai contoh, karena pada awalnya saya menggunakan Firestore, saya bisa membuat sebuah function seperti berikut ini untuk mendapatkan pembelian dan retur hingga jumlah item tersisa:

Membuat Laporan Berbasis Web Dengan JasperReports Server

Pada suatu hari, saya perlu membuat fasilitas untuk menampilkan dan mencetak laporan. Lebih spesifiknya, saya perlu menampilkan laporan finansial dengan jumlah data yang besar. Pengguna harus bisa men-filter laporan, berpindah halaman dan mencetak seluruh halaman laporan dalam bentuk dokumen PDF. Ini adalah sebuah filter yang umum, bukan? Google Cloud Platform menyediakan sebuah layanan laporan yang bernama Google Data Studio. Sayangnya, saat mencoba produk tersebut, saya menemukan bahwa ia hanya bisa menampilkan tabel sederhana. Saat mencoba mencetak dan meng-export laporan ke dalam PDF, Google Data Studio hanya mau mencetak halaman yang sedang aktif, bukannya seluruh halaman yang ada. Sepertinya produk tersebut lebih tepat dipakai untuk menampilkan rangkuman atau laporan yang dilihat di layar (bukan untuk di-cetak). Padahal, di Indonesia, masih banyak pengguna yang memilih membaca laporan yang sudah dicetak.

Kategori: Pemograman Tags: JasperReports

Mengatasi Publish Yang Lambat Di GooglePub/Sub Node.js

Google Pub/Sub adalah layanan messaging atau apa yang sering dikenal sebagai message queue seperti Apache ActiveMQ, Apache Kafka, dan sebagainya. Salah satu perbedaan utamanya adalah Google Pub/Sub merupakan bagian dari Google Cloud Platform dan memiliki peran penting dalam komunikasi layanan Google Cloud Platform lainnya. Saya sering menggunakannya sebagai trigger untuk Cloud Firestore dan juga komunikasi asynchronous dari satu service ke service lainnya pada aplikasi yang menerapkan arsitektur microservices.

Memakai Import di TypeScript

Pada saat saya mempelajari bahasa pemograman baru, fokus utama saya adalah bagaimana caranya semudah mungkin menjalankan kode program dan melihat hasilnya. Saya cenderung menulis kode program dalam satu function besar. Ini bertentangan dengan fokus saya setelah mahir: bagaimana mengetahui cara kerja aplikasi tanpa membaca seluruh kode program dan bagaimana memperbaiki bagian tertentu yang bermasalah tanpa merusak yang lain. Untuk mencapai tujuan tersebut, saya perlu menerapkan konsep module. Saya bisa mengetahui cara kerja aplikasi secara garis besar dengan melihat komunikasi antar module. Untuk memperbaiki kesalahan atau mengembangkan fitur baru, saya bisa hanya fokus ke kode program di module yang bersangkutan.

Kategori: Pemograman Tags: JavaScript TypeScript

Membuat Online Unit Test Pada TypeScript Firebase

Cloud Functions For Firebase dapat dipakai untuk banyak hal di Firebase, mulai dari trigger untuk Firestore, Cloud Storage, Cloud Pub/Sub hingga melayani request HTTP langsung dari pengguna (HTTP trigger). Pada saat tulisan ini dibuat, secara default, eksekusi Cloud Functions akan dikerjakan oleh Node.js 6. Karena saya adalah penggemar TypeScript dan pada dasarnya TypeScript kompatibel dengan JavaScript, saya selalu berusaha sebisa mungkin menggunakan TypeScript sebagai bahasa untuk Cloud Functions. Untuk membuat proyek Cloud Functions For Firebase yang menggunakan TypeScript, saya bisa mengikuti contoh di GitHub TypeScript getting-started.

Hal Yang Perlu Diketahui Sebelum Memakai Google Cloud Firestore

Salah satu alasan utama saya melirik database serverless seperti Firestore adalah biaya. Harga sebuah droplet di Digital Ocean paling murah adalah $5 per bulan. Sementara dengan Firestore, pada proyek prototype dan sederhana, saya tidak perlu membayar bila aplikasi tidak digunakan. Setelah puas menerapkan Firestore pada aplikasi sederhana, saya pun mencoba menggunakannya untuk sesuatu yang lebih serius seperti aplikasi bisnis. Seperti biasa, semua tidak pernah semulus apa yang saya bayangkan. Berikut ini adalah beberapa hal yang saya berharap sudah saya ketahui sebelum memutuskan untuk menggunakan Firestore pada sesuatu yang lebih serius:

Kategori: Pemograman Tags: Firebase Firestore

Memakai Promise.all() atau await?

Dengan TypeScript, saya tidak ragu lagi menggunakan fasilitas async/await tanpa perlu khawatir masalah kompatibilitas JavaScript. Kode program terasa lebih singkat dan lebih mudah dipahami tanpa membuat banyak Promise. Walaupun demikian, dalam kasus tertentu, saya tetap menggunakan Promise.all() yang memiliki efek samping berbeda bila digantikan dengan async/await.

Kategori: Pemograman Tags: JavaScript TypeScript

Dari MySQL Ke Algolia Melalui Python

Hari ini saya harus melakukan operasi indexing di Algolia berdasarkan data dari database MySQL yang sudah ada. Saya hanya memiliki akses ke database tersebut tanpa kode program. Saya tidak menemukan tools otomatis untuk melakukan hal ini seperti layaknya Logstash di ELK (Elasticsearch, Logstash, Kibana). Beruntungnya, tidak sulit untuk menulis kode program yang membaca dari database MySQL dan mengirimkannya ke Algolia karena Algolia telah menyediakan libray pendukung di beberapa bahasa pemograman populer. Pertanyaannya adalah saya harus menulis dalam bahasa pemograman apa? Ini pastinya adalah sebuah script CLI dan bukannya aplikasi web; oleh sebab itu saya tidak akan menggunakan bahasa favorit saya: Java. Setelah berpikir sejenak, saya menyadari bahwa satu-satunya bahasa pemograman yang saya kuasai dan tepat untuk CLI adalah Python.

Membatasi Pengguna Yang Mendaftar Melalui Firebase Authentication

Pada sebuah proyek Angular, saya menggunakan Firebase Authentication, tepatnya FirebaseUI, sebagai halaman sign-in dan sign-up. Fitur ini mirip seperti Universal Login di Auth0, hanya saja FirebaseUI di-host pada aplikasi yang sama sementara Universal Login di Auth0 membutuhkan biaya tambahan untuk custom domain. Dengan FirebaseUI, saya mendapatkan halaman berikut ini tanpa banyak menulis kode program:

Tidak Ada Cara Yang Selalu Benar Dalam Membuat Software?

Apakah benar tidak ada cara yang selalu benar dalam membuat aplikasi perangkat lunak? Menghasilkan software yang bekerja bukanlah hal yang susah. Tetapi, tidak mudah untuk mencapai hasil yang ‘benar’: pengguna puas dan ingin merekomendasikannya pada orang lain, developer bahagia dan termotivasi, saham investor terus meningkat! Mungkinkah software yang sukses terjadi karena faktor keberuntungan (selain karena permainan politik dan intimidasi pengguna yang tidak patut ditiru)?

Memakai Mailgun Untuk Custom Domain Email Pribadi

Saya sudah sering menggunakan Mailgun dan Sendgrid untuk mengirim notifikasi email melalui kode program dan menerima reply email dari pengguna untuk diproses aplikasi web yang sedang saya kerjakan. Kali ini, saya tidak akan melakukan hal ‘biasa’ tersebut dengan Mailgun. Kasus kali ini adalah masalah pribadi: saya ingin punya akun email seperti owner@jocki.me yang dibuka melalui Gmail tanpa harus membayar $5 per user per bulan (langganan G Suite).

Kategori: Pemograman Tags: Email

Pengalaman Pertama Kali Memakai Visual Studio Code

Walaupun namanya mengandung Visual Studio, Visual Studio Code (VSC) adalah sebuah produk yang berbeda dari Visual Studio. Microsoft Visual Studio adalah sebuah integrated development environment (IDE) populer buatan Microsoft sejak tahun 1997 hingga sekarang. Versi gratis dari Visual Studio adalah Visual Studio Community Edition. Sebelum Community Edition, terdapat juga versi gratis dengan kemampuan terbatas yang disebut Visual Studio Express yang kini sudah tidak dilanjutkan lagi. Lalu, apa itu Visual Studio Code (VSC)?

Kategori: Pemograman Tags: VisualStudioCode

Membuat Web App Manifest

Salah satu ciri website PWA adalah sudah dilengkapi dengan web app manifest. Setelah memiliki web app manifest, pengguna bisa men-install website di Android tanpa harus melalui Google Play Store. Web site tetap bisa bekerja bila dijalankan dari shortcut hasil instalasi karena sudah menggunakan service worker. Untuk merasakan pengalaman install website, saya akan menambahkan web app manifest pada situs blog ini.

Kategori: Pemograman Tags: JavaScript PWA

Melakukan Query DNS Lewat HTTPS

Salah satu hal menarik dari DNS Resolver Cloudflare yang diluncurkan 1 April 2018 kemarin adalah ia bisa dipanggil melalui HTTPS. Ini adalah apa yang disebut sebagai DNS over HTTPS (DoH). Selain Cloudflare, DNS Resolver dari Google juga mendukung DoH. Bukan hanya itu, juga sudah tersedia website untuk pencarian hasil query DNS di https://dns.google.com.

Kategori: Pemograman Tags: JavaScript DNS

Memakai Service Worker Agar Website Berfungsi Saat Offline

Walaupun situs ini adalah sebuah situs statis, saat mencobanya secara offline, saya menemukan sebuah masalah. Setelah cache kadaluarsa, browser berusaha menarik file dari CDN seperti Bootstrap, Highcharts dan sebagainya. Alangkah baiknya bila saya menyimpan file yang dibutuhkan secara permanen untuk dipakai secara offline. Salah satu solusinya adalah dengan menggunakan Service Worker API yang biasanya identik dengan Progressive Web Apps.

Kategori: Pemograman Tags: JavaScript PWA Jekyll

Memakai Algolia Untuk Fitur Pencarian Di Jekyll

Salah satu fitur yang tidak saya jumpai setelah beralih dari Wordpress ke Jekyll adalah pencarian. Cukup masuk akal karena Jekyll menghasilkan halaman HTML statis tanpa menggunakan fasilitas di sisi server seperti database. Oleh sebab itu, bila ingin memiliki fitur pencarian, saya perlu menggunakan search engine terpisah yang akan meng-index setiap post di blog ini. Biasanya saya akan men-install ElasticSearch yang men-ekspos fasilitas pencariannya dalam bentuk REST API ‘siap saji’ bagi klien. Sebagai latihan, kali ini saya akan menggunakan Algolia yang merupakan layanan hosted tanpa perlu instalasi. Salah satu nilai tambah Algolia adalah memiliki Search UI yang menyediakan widget siap pakai untuk ditempelkan ke website. Karena ini adalah situs pribadi yang sederhana, saya mendaftar pada plan gratis Algolia yang memiliki batas 10.000 records dan 100.000 operasi pencarian per bulan.