Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

2019 Masih Debat Database Transaction?

Beberapa waktu yang lalu, salah satu seleb programmer di Yutub bikin video yang menyatakan bahwa pengetahuan tentang database transactional itu wajib bagi senior programmer.

<grammar-police> Well, sebelumnya saya koreksi dulu, yang tepat adalah database transaction, bukan transactional. Kalopun mau pakai akhiran al, maka yang pas itu transactional database. </grammar-police>

Netijen pun bereaksi keras Maklumlah namanya juga netijen, bebas aja. Di antara komentar netijen, ada satu yang tertangkap mata saya. Itupun karena ditag. Berikut komentarnya,

Yaa kenapa gitu? Ada aja kok senior software developer gatahu dependency injection, github repo, sama continous integration tapi bikin programnya jago dan enak dibaca. Jangan main nge judge gitu lah statement nya

Sebetulnya saya tidak mau menanggapinya. Sudah pernah saya tulis masalah ini 8 tahun yang lalu di blog ini juga. Silahkan dibaca.

Tapi apa boleh buat, saya sudah ditag, dan sebagai sesama netijen jaman now sudah sepantasnya kalau kita bersikap julid, FOMO, dan YOLO.

Dan lagipula, ini blog sudah lama gak diupdate, jadi mumpung ada bahan, here we go.

Lanjut membaca ...


Hapus Partisi dengan Command Line

Meneruskan kebiasaan pada waktu menggunakan Ubuntu, kadang saya masih melakukan format ulang terhadap laptop, yang sudah 4 tahun ini menggunakan MacOS. Cara format ulangnya mirip, yaitu:

  • Unduh image installer sistem operasi. Untuk MacOs, kita harus membuatnya sendiri menggunakan laptop/komputer Mac juga :D. Caranya bisa di-google, tidak akan saya tulis karena tiap rilis perintahnya agak berbeda. Lagipula, biasanya ada yang sudah membuatkan scriptnya.

  • Tulis image tersebut ke flashdisk. Biasanya saya pakai perintah dd saja di commandline. dd if=/file/image.iso of=/dev/diskN bs=1m. Ganti nama device diskN sesuai yang terdeteksi di sistem operasi.

  • Booting dari flashdisk dengan cara menekan tombol Option (⌥) sambil menyalakan komputer.

  • Next .. next .. selesai.

Nah masalahnya adalah, flashdisk bekas menginstal tersebut agak susah dibersihkan partisinya. Sudah dihapus menggunakan aplikasi Disk Utility, diskutil command line, tetap menyisakan partisi boot.

Ini terutama disebabkan karena filesystem Mac tidak lazim ditemui di Windows dan Linux, sehingga untuk menghapusnya tidak bisa menggunakan aplikasi GUI biasa. Hal ini juga berlaku untuk filesystem yang aneh, seperti misalnya ZFS.

Untuk itu, google dan stack overflow tidak kekurangan jawaban. Ternyata kita cukup menghapus 3 blok pertama di flashdisk tersebut, karena tabel partisinya ada di situ. Bila partisi kita banyak (misalnya 10), yang harus dihapus 5 blok.

Perintahnya sebagai berikut

dd if=/dev/zero of=/dev/diskN bs=512 count=3

Demikianlah ini menjadi catatan buat saya pribadi, supaya kalau besok-besok instal ulang, tidak perlu repot lagi mencari command untuk membersihkan flashdisk. Semoga bermanfaat untuk pembaca sekalian.


Live Streaming dengan Nginx RTMP Module

Di era milenial seperti sekarang ini, segala kegiatan harus dipublish supaya eksis. Gak cukup dengan posting foto dan rekaman video, harus instan real time live show. Para raksasa sosmed berlomba-lomba menyediakan fasilitas tayangan langsung seperti Instagram Stories, Facebook Live, Youtube Live, dan masih banyak yang lainnya.

Karena banyak platform berbeda, tapi tujuannya sama, maka sayapun mencari aplikasi untuk membantu publikasi untuk melakukan tayangan langsung. Pengennya satu kali pasang kamera, langsung live di berbagai sosmed. Cari punya cari, ada beberapa alternatif untuk mengabstraksi tayangan langsung multi platform ini:

Pada artikel kali ini, kita akan membahas setup Nginx RTMP Module dengan Raspberry Pi.

Raspi Resource Usage

Lanjut membaca ...


Implementasi Single Sign On dengan Google

Jaman sekarang eranya integrasi antar aplikasi. Aplikasi A ingin mengakses data di Aplikasi B. Apalagi dengan mewabahnya arsitektur microservice, bahkan sesama aplikasi yang kita buat juga ingin berkomunikasi antar aplikasi.

Dengan sekian banyak aplikasi, tentunya akan sangat mengganggu user kalau dia harus login berkali-kali di tiap aplikasi tersebut. Untuk itu kita harus membuat semacam login server, di mana semua user akan login di sana dan semua aplikasi akan mengecek di sana apakah user tersebut sudah login atau belum.

Biasanya, hal ini kita menggunakan standar protokol OAuth 2.0 dan atau OpenID Connect. Lebih detail tentang protokol ini bisa ditonton di video saya di Youtube.

Dalam Spring Security 4 dan Spring Boot 1, kita mendapatkan fitur untuk membuat Authorization Server, Resource Server, dan Client Application. Akan tetapi, di Spring Security 5, mereka berencana untuk melakukan perombakan besar-besaran. Di Spring Security versi 5.0, para pengembang Spring sudah menyediakan dukungan Client Application yang baru. Ini sudah masuk dalam Spring Boot 2.0.

Dukungan terhadap Resource Server yang baru direncanakan akan launching di Spring Security versi 5.1 dan dibundel dalam Spring Boot 2.1. Pada saat artikel ini ditulis, Spring Security 5.1 dan Spring Boot 2.1 belum dirilis.

Pada artikel kali ini, kita akan mengimplementasikan Client Application (atau Relying Party dalam istilah OpenID Connect) dengan fitur login dengan Google. Kita juga akan membuat tabel di aplikasi kita yang memuat setting permission. Kita akan mapping username dari Google dengan permission yang kita kelola di aplikasi kita sendiri.

Lanjut membaca ...


Deployment Microservice Kere Hore Bagian 6

Pada artikel terdahulu, kita menggunakan Nginx sebagai reverse proxy. Semua request diterima Nginx dalam bentuk terenkripsi (SSL/TLS), didekripsi, kemudian diteruskan ke masing-masing backend.

Sebetulnya, selain Nginx masih banyak alternatif lain yang bisa dipakai sebagai reverse proxy, diantaranya:

Selain reverse proxy biasa, jaman sekarang banyak juga yang menawarkan fitur-fitur lain seperti rate limiting, caching, logging, routing, authentication, dan sebagainya. Beberapa produk yang tersedia diantaranya:

Pada artikel ini, kita akan bahas alternatif tradisional dulu, yaitu HAProxy. Seringkali kita hanya membutuhkan solusi sederhana, ringan, dan cepat. Tidak perlu aksesoris macam-macam.

HAProxy adalah aplikasi yang mengkhususkan diri menjadi reverse proxy. Dia bukan webserver seperti Nginx atau Apache HTTPD. Dengan demikian, ukurannya lebih kecil dan ringan. Dia juga memiliki mode tcp atau Layer 4 buat aplikasi lain yang tidak menggunakan protokol http.

Kali ini, kita hanya akan menggunakan fitur berikut dari HAProxy:

  • Reverse Proxy
  • SSL Termination

Lanjut membaca ...