Hi, Saya Rohim Muhamad

Blog ini membahas seputar pengalaman dan dokumen teknikal penulis sebagai seorang software engineer.

Setup Formatter Odoo

Standarisasi Code Formatting Python dengan Black, isort, dan Flake8 Setup lengkap untuk VSCode dan PyCharm pada project Odoo v17 Overview Ketika tim developer bekerja pada codebase yang sama, perbedaan gaya penulisan kode antar individu dapat menjadi sumber noise yang tidak perlu — mulai dari perbedaan indentasi, urutan import, hingga panjang baris kode. Hal ini membuat code review menjadi lebih sulit dan git diff menjadi lebih berisik. Solusinya adalah menggunakan code formatter dan linter yang dijalankan secara konsisten di semua environment developer....

March 26, 2026 · 6 min

Postgresql Async Replication Concept

Replikasi database adalah salah satu pilar utama dalam membangun sistem yang memiliki ketersediaan tinggi (High Availability). Artikel ini akan membahas secara konseptual bagaimana Streaming Replication dengan mode Asynchronous bekerja, terutama dalam lingkungan yang menggunakan Docker. 1. Arsitektur Replikasi Asynchronous Dalam model asynchronous, kita memprioritaskan performa tulis (write performance) pada server utama agar aplikasi tetap responsif. Primary (Master): Server utama untuk operasi tulis dan baca. Ketika terjadi transaksi, server akan langsung melakukan commit sukses tanpa menunggu konfirmasi dari server replika....

March 24, 2026 · 3 min

Strategi Backup Restore Postgresql Docker

Pernahkah Anda membayangkan terbangun di pagi hari dan mendapati database utama Anda corrupt atau data penting sebulan lalu terhapus tanpa sengaja? Di sinilah peran Daily Backup menjadi penyelamat nyawa. Artikel ini akan membahas cara melakukan backup database PostgreSQL yang berjalan di dalam Docker Container secara manual, namun dengan pendekatan yang terstruktur untuk kebutuhan jangka panjang. Mengapa Kita Butuh Backup Manual? Meskipun sistem otomatis mungkin sudah berjalan, terkadang kita butuh melakukan backup manual untuk:...

March 24, 2026 · 3 min

Implementasi CI/CD menggunakan GitLab & GitLab Runner Untuk Project Odoo

Membangun CI/CD Pipeline untuk Odoo dengan GitLab dan Shell Executor Panduan konseptual membangun pipeline deployment otomatis yang aman, ringan, dan efisien untuk aplikasi Odoo berbasis Docker. Pendahuluan: Masalah yang Diselesaikan Dalam lingkungan pengembangan yang aktif, proses deployment manual adalah sumber masalah yang konsisten. Developer harus masuk ke server, menarik kode terbaru, lalu merestart container secara manual — sebuah rutinitas yang memakan waktu, rawan human error, dan tidak terdokumentasi dengan baik....

March 7, 2026 · 7 min

PostgreSQL Replication

PostgreSQL Replication Kalo kamu membaca artikel ini, artinya kamu sudah menganggap replikasi database adalah sesuatu yang krusial. Beruntung, PostgreSQL secara default mendukung replikasi dengan streaming data Asynchronous dan Synchronous. Asynchronous & Synchronous PostgreSQL mendukung 2 jenis streaming data pada proses replikasi. Async dan Sync. Asynchronous Replication Pada replikasi Asinkron, commit transaksi di server Primary dikonfirmasi berhasil ke klien segera setelah data Write-Ahead Log (WAL) ditulis ke disk Primary. Server Primary TIDAK menunggu konfirmasi apa pun dari server Standby bahwa mereka telah menerima atau memproses WAL tersebut....

November 14, 2025 · 2 min

Git Stash - Part 2

Git Stash Pro Tips Artikel ini adalah lanjutan dari artikel Git Stash - Part 1. Pada artikel ini, kita akan coba menggunakan Stash seperti seorang pro. Menyimpan Stash Dengan Pesan git stash push -m "pesan_commit_untuk_stash" yang nantinya bisa dijadikan referensi task yang belum selesai. Lalu ketika kita cek list index stash maka akan muncul sebagai berikut, Menampilkan Konten Stash Jikalau kita ingin melihat konten dari stash, kita bisa gunakan command git stash show -p <index_stash>....

July 6, 2025 · 2 min

Git Stash - Part 1

Latar Belakang Ketika seorang developer sedang mengerjakan sebuah fitur lalu ditengah-tengah pekerjaan yang belum selesai, developer terpaksa atau dipaksa untuk meninggalkan pekerjaan yang belum selesai di branch tersebut, untuk pindah ke branch lain. Biasanya dikarenakan ada pekerjaan lain yang lebih urgent untuk diselesaikan yang menuntut developer untuk checkout atau pindah dari branch yang sedang di develop. Pada waktu tersebut, biasanya developer malas atau enggan untuk membuat commit dari pekerjaan yang belum selesai....

July 6, 2025 · 2 min

Shell Script Untuk Backup Otomatis

Latar Belakang Masalah Sebagai seorang programmer Odoo, kita wajib untuk melakukan backup rutin aplikasi. Aplikasi Odoo bisa di backup melalui frontend. Namun, ketika harus dilakukan rutin, adakalanya saya lupa untuk melakukan backup. Dikarenakan load pekerjaan yang sedang banyak, atau memang lupa saja :) Maka dari itu, diperlukan suatu mekanisme backup otomatis. Dan ketika proses backup selesai, entah itu berhasil atau gagal, maka akan mengirimkan notifikasi melalui webhook discord. Namun, kali ini, saya hanya akan melakukan backup terhadap database-nya saja....

March 28, 2025 · 3 min

Cara Koneksi SSH Tanpa Password

Latar Belakang Masalah Akan datang saatnya ketika kita perlu membuat koneksi dari server A ke server B menggunakan SSH. Namun, kita sebal atau memang mengganggu proses otamasi karena harus selalu input password ketika login menggunakan SSH. Tujuan Kita akan coba melakukan login menggunakan SSH ke server lain tanpa harus input password. Store SSH pada Authorized Keys Intinya, di server A itu harus punya kartu pass milik server B! Analoginya, misal kita ingin memasuki sebuah ruangan yang punya level keamanan tinggi....

March 7, 2025 · 1 min

Konfigurasi Dasar CI/CD Gitlab

Persyaratan Saya menggunakan Gilab self-hosted dan gitlab-runner yang di install menggunakan docker. Jika belum dan ingin install GitLab self-hosted bisa lihat caranya disini. Jika ingin install GitLab Runner menggunakan docker bisa lihat caranya disini. Buat job sederhana Sekarang kita akan coba membuat job sederhana. Job yang dijalankan akan seperti ini: Job akan ke trigger jika ada perubahan di branch main. Job akan menjalankan stages build dan deploy. Job akan dijalankan di dalam docker....

February 20, 2025 · 2 min