DNS Tool

Cari tahu IP publik dan lakukan query DNS langsung dari browser

Lihat Artikel

Meningkatkan Kinerja Disk I/O Di Ubuntu

Saat 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?

Kategori: OS Tags: Ubuntu

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:

Mengoptimalkan MySQL untuk integration testing

Pada saat pertama kali bekerja di dunia IT dan mempelajari Oracle Database, saya mendapatkan nasehat: “Tidak ada satu database tunggal yang bekerja dengan baik di semua jenis aplikasi. Untuk itu, database perlu dioptimalkan oleh database administrator.” Sekarang, setelah lebih banyak bekerja di startup, saya jarang sekali menemukan peran database administrator lagi! Hal ini karena startup lebih berfokus pada membuat sebuah aplikasi seminimal mungkin (minimum viable product) dan segala sesuatu yang berada di cloud membuat programmer memiliki pola pikir ‘tinggal pakai saja’.

Kategori: DevOps Tags: MySQL

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 Docker Compose Untuk AppEngine

Pada suatu hari, saya menulis README.md berisi panduan bagi programmer untuk menjalankan aplikasi yang saya deploy di Google Cloud Platform. Seperti layaknya aplikasi microservices, aplikasi tersebut terdiri atas proyek App Engine dan beberapa modul Cloud Functions. Komunikasi antar service dilakukan melalui Cloud Pub/Sub. Database yang dipakai adalah MySQL dan Cloud Datastore. Terdengar rumit, bukan? Saya perlu memutar otak untuk menulis lebih dari dua paragraf guna menjelaskan langkah-langkah yang dibutuhkan untuk menjalankan aplikasi dari awal. Ini masih belum termasuk peringatan seperti masalah emulator lokal Cloud Functions yang tidak mendukung Node 8 sementara Angular CLI terbaru mewajibkan minimal Node 8. Apakah ada cara yang lebih singkat bagi programmer lain untuk menjalankan aplikasi ini di laptop barunya?

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

Apa Itu OpenVPN?

Virtual Private Network (VPN) adalah sesuatu yang menghubungkan dua jaringan berbeda melalui jaringan publik (public network) sehingga pengguna seolah-olah berada dalam jaringan yang sama (virtual). Karena data yang dikirim atau diterima dari dua jaringan yang dihubungan harus dikirim melalui public network, VPN memiliki mekanisme untuk mengamankan data. Kini, berkat fitur keamanan tersebut, VPN sering dipakai untuk mencegah penyadapan dan sensor dari pihak ketiga (serangan man in the middle).

Kategori: Network Tags: OpenVPN

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 DNSCrypt-proxy 2 Di Ubuntu 18

Untuk mencegah penyadapan dan perubahan isi website oleh pihak yang tidak diinginkan, saya bisa menggunakan HTTPS yang melakukan enkripsi data yang dikirim. Pihak ketiga seperti hacker dan/atau ISP, tidak akan melihat langsung teks HTML, melainkan data HTML yang sudah di-enkripsi. Lalu bagaimana dengan DNS? Teknologi serupa yang paling mendekati adalah DNSSEC, namun sayangnya, belum semua TLD dan DNS resolver mendukung DNSSEC! Banyak pengguna DNS masih mengirim DNS request tanpa DNSSEC. Lalu apa salahnya? Pihak ketiga (termasuk ISP) bisa mengubah IP address hasil kembalian dari DNS resolver menjadi nilai yang berbeda. Tanpa DNSSEC atau enkripsi, pengguna tidak pernah yakin 100% bahwa hasil IP address yang diterima adalah benar yang dikembalikan DNS resolver.

Kategori: OS Tags: Ubuntu DNS

Cara Kerja DNS

Mengapa sebuah website memiliki alamat seperti www.latihan.com? Apa artinya www dan com? Untuk menjawab pertanyaan ini, saya harus memahami terlebih dahulu cara kerja Domain Name System (DNS). DNS adalah sebuah sistem yang terdiri atas banyak server berbeda dengan tujuan utama menerjemahkan nama seperti www.google.com menjadi IP address.

Kategori: Network Tags: 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.

Tombol Scroll Lock Di Ubuntu

Keyboard yang saya pakai memiliki backlit (pencahayaan) yang dapat dinyalakan dan dimatikan melalui tombol Scroll Lock. Sama sekali tidak ada masalah pada saat saya mencobanya di Windows. Akan tetapi, saat menggunakan keyboard yang sama di Ubuntu, tombol Scroll Lock seolah-olah tidak bekerja. Saya segera melakukan pencarian di Google; ternyata bukan hanya saya, masalah ini sudah dialami banyak pengguna Ubuntu lainnya.

Kategori: OS Tags: Ubuntu