Blog
Catatan teknis seputar web development, DevOps, dan integrasi AI.
500 artikel
- 23.53devops
Pindah Folder Besar ke Block Storage dengan Symlink
Folder cadangan 14G memenuhi root disk. Pola pindah ke block storage dengan symlink menyelesaikan tekanan disk tanpa menghapus data cadangan.
TL;DR: Disk root bengkak 95 persen gara-gara folder backup plugin gambar WordPress segede 14GB. Jangan dihapus, cukup dipindah ke block storage pakai rsync, verifikasi dulu jumlah filenya, terus foldernya ditukar symlink path absolut. Jangan lupa set mount otomatis di fstab atau systemd, soalnya kalau reboot tanpa itu, symlinknya jadi dangling link.
#linux#rsync#symlink - 23.04devops
Disk WordPress Penuh: Audit Folder Backup EWWW Image Optimizer
Folder cadangan EWWW IO membengkak saat disk penuh. Kenali mekanisme backup gambar, opsi pemangkasan resmi, dan kriteria aman sebelum menghapusnya.
TL;DR: Disk penuh gara-gara folder backup plugin EWWW Image Optimizer, isinya 14 GB. Ternyata bukan duplikat, tapi cadangan gambar asli, salinan hasil scaling 2560px, plus file WebP. Jangan asal hapus folder itu — pastiin backup independen udah aman, baru pakai remove_originals atau pembersih WebP.
#wordpress#backup#wp-cli - 04.42backend
IP Klien yang Bisa Dipercaya di Balik Proxy
Header X-Forwarded-For bisa diisi sembarang oleh klien. Begini cara memilih alamat yang benar-benar bisa dipercaya di balik Cloudflare dan nginx.
TL;DR: Gara-gara serangan tebak password, endpoint login dikasih rate limiter, tapi awalnya salah baca IP dari entri pertama X-Forwarded-For yang gampang dipalsuin penyerang. Sekarang urutan resolusinya diubah: CF-Connecting-IP dulu, lanjut entri terakhir XFF, X-Real-IP, lalu RemoteAddr. Rate limitnya juga per akun (IP plus email), bales 429 dengan Retry-After, plus ada pembersihan memori biar nggak bocor.
#go#security#nginx - 03.35devops
Commit Tanpa Diff: Menghapus Integrasi Pihak Ketiga
Commit penghapusan integrasi berakhir tanpa satu baris kode berubah. Di sinilah letak asimetri antara memasang dan membongkar layanan pihak ketiga.
TL;DR: Commit hapus integrasi Plane tuh unik banget, nggak ada satu baris kode pun yang diubah. Soalnya bersihin integration tuh bukan cuma urusan kode: kredensial dicabut di dasbor vendor, cache mcp-remote dibersihin, entitlement billing dicek, sisa config dibenerin biar circuit breaker nggak error mulu. Jadi mulai sekarang, rencana copot integration harus disiapin sejak mau pasang, ya.
#plane#api#mcp - 01.57security
Sertifikat TLS adalah Dokumen Publik
Log Certificate Transparency membuat setiap penerbitan sertifikat TLS jadi catatan publik, lengkap dengan daftar hostname di SAN.
TL;DR: Sertifikat TLS tuh bocorin banget nama host yang nggak keliatan di DNS, soalnya semua nama di SAN wajib nyatet ke log Certificate Transparency yang publik. Buat tim keamanan ini gratis banget, bisa jadi alarm dini kalau ada sertifikat mencurigakan diterbitkan. Tapi attacker juga bisa manfaatin buat pemetaan aset, walau nama di log belum tentu layanannya udah live.
#security#pki#certificate-transparency - 01.03security
Membaca Tech Stack dari Sinyal Publik
Recon pasif: peta tech stack dari subdomain, URL arsip, rekaman TXT, MX, nameserver, dan secret scan, tanpa satu paket pun ke target.
TL;DR: Jadi ini cerita soal recon pasif, cuma modal data publik tanpa nyentuh server target, udah bisa ketebakan tech stack suatu domain. Tapi hati-hati, banyak jebakan interpretasi, kayak rekaman TXT verifikasi Anthropic yang ternyata cuma bukti kepemilikan domain, bukan tanda pakai Claude. Intinya sinyal publik itu murah, disiplin bacanya yang penting, dan jangan pernah validasi secret atau nyentuh sistem.
#security#dns#tooling - 20.10backend
Tiga Celah Mapper yang Hanya Terlihat di Data Asli
Fixture hijau bukan jaminan: nested object, camelCase, dan datetime penuh baru ketahuan saat 5330 baris asli masuk ke ingest.
TL;DR: Dump JSON 5330 baris masuk mulus tanpa error, tapi kolom nama perusahaan sama tanggalnya kosong semua, ternyata mapper salah asumsi bentuk data. Field penyedia ternyata objek bersarang, kuncinya camelCase, plus tanggalnya datetime penuh yang ditolak date.fromisoformat. Setelah dibenerin, semua baris kebaca dan idempotensi jalan, pelajarannya mulai dari data asli, bukan asumsi.
#python#data-engineering#schema - 18.58backend
Kolom event_date yang Selalu NULL dan Tabel Bulan 13 Entri
Data tanggal berbahasa Indonesia membuat kolom event_date kosong terus. Parser locale stdlib bukan jawabannya; tabel bulan eksplisit iya.
TL;DR: Tanggal dari feed dateng dalam bentuk teks kayak Senin, 08 Jun. 2026, tapi mapper cuma coba fromisoformat, jadinya gagal diam-diam dan event_date kosong semua. Ide pake locale Python ketolak soalnya nggak thread-safe plus bug-nya numpuk sejak 2010.
#python#locale#data-engineering - 18.57database
Satu Aturan, Satu Tempat: Identitas Email dalam Skema Basis Data
Dua constraint menjaga satu aturan identitas email. Menghapus yang redundan ternyata bukan kosmetik, melainkan menutup celah spesifikasi ganda.
TL;DR: Migrasi ini cuma ngehapus constraint komposit tenant-email dan ganti email jadi unique, intinya satu aturan mending ditulis sekali aja. Soalnya dua spesifikasi buat aturan yang sama itu bahaya—pas aturan berubah, yang lama bisa balik nyala diam-diam. Verifikasinya aman: roundtrip migrasi bersih, autogenerate nggak nemu drift, dan insert duplikat lintas tenant tetap ditolak database.
#postgresql#alembic#sqlalchemy