debugging
Catatan teknis seputar web development, DevOps, dan integrasi AI.
19 artikel
- 09.04frontend
Empat Commit Mengejar Satu Garis yang Menghilang
Border kartu lenyap di atas latar muted karena dua warna abu-abu kembar. Pelajaran soal token, kontras, dan asumsi latar.
TL;DR: Border kartunya nggak hilang, cuma warnanya kembaran sama latar muted jadi kayak ngumpet. Perbaikannya satu baris doang: ganti ke border-primary/15 plus bg-card/40, sekalian benerin kontras biar lolos WCAG. Pelajarannya, token warna itu asumsi, komponen multi-surface mending dites di semua surface dulu.
#css#tailwind#accessibility - 03.10frontend
Peta Kantor Abu-Abu: Worker MapLibre yang Tak Pernah Minta Tile
Ganti peta statis dengan MapLibre di Next.js 16, tile-nya nggak muncul dan console diam saja. Ternyata worker-nya yang tak pernah jalan.
TL;DR: Peta MapLibre abu-abu kosong di Next.js 16 padahal console bersih, ternyata Turbopack gagal emit file worker-nya jadi tile nggak pernah diminta. Solusi cepatnya: load MapLibre 4.7.1 dari CDN karena build itu inline worker sebagai blob URL. Pelajarannya, kalau komponen hidup setengah tanpa error, cek tab Network duluan.
#maplibre#openfreemap#nextjs - 20.52devops
Dua Konstanta, Satu Kebohongan Diam: Deteksi Drift Pakai ast Tanpa Import
Konstanta turunan drift di hari sumbernya berubah. ast.parse membandingkannya tanpa mengeksekusi satu baris pun.
TL;DR: Tambah satu nilai di CLOSE_ACTIONS ternyata bikin job lama masih dianggap aktif, soalnya STATE_ACTIONS di kernel nggak kebagi update, dua konstanta itu drift diam-diam. Solusinya skrip check-close-actions-drift.sh yang baca dua file sebagai teks pakai ast Python, tanpa import. Skrip ngitung proyeksi STATE_ACTIONS minus EXTRACT_TIME dan NONSTATE, lalu bandingin sebagai set; beda dikit aja langsung exit 1.
#python#testing#debugging - 20.39devops
Launcher Dua Kali Bayar: Tiga Lapis Penjaga Sebelum Skrip Delegasi Menyala
Skrip delegasi yang diluncurkan dua kali menghabiskan budget dua kali. Guard flock, cek artefak, dan pgrep menolak sebelum mulai.
TL;DR: Ceritanya session Claude Code kelihatan macet padahal lagi mikir, jadi gue jalankan ulang dan dua proses makan budget bareng. Solusinya flock -n via file descriptor, plus cek result JSON lama dan pgrep -f buat deteksi proses kembar. Alasan penolakan dibedain lewat exit code 42, 43, 44 biar gampang debug.
#bash#devops#automation - 13.11tooling
Scraper Chat AI: Saat Kata 'Sumber' Menipu Gate Selesai
Gate selesai scraper chat AI lolos di jawaban setengah jadi karena satu kata. Empat perbaikan dari satu audit loop polling, dari regex heading sampai clipboard.
TL;DR: Scraper riset sempat ngira jawaban tuntas padahal cuma setengah ditulis, gara-gara gate kegagalan lolos dari kata "Sumber" di tengah prosa. Empat perbaikan lahir dari satu audit: pola kegagalan cuma dicek sebelum jawaban ada, gate tuntas wajib heading "## Sumber" dijangkar, plus diagnostik clipboard. Intinya, kontrak eksplisit lebih tahan banting daripada heuristik longgar.
#python#regex#debugging - 00.29devops
Publish Port Loopback di Compose Ternyata Nggak Cukup
Port di-publish loopback tapi klien di host yang sama tetap ditolak. Ternyata Docker nyekip pintu per alamat tujuan, bukan per proses.
#docker#llm#security - 18.37devops
Container Healthy, Browser Mati: Jebakan Migrasi Docker Compose
Status healthy lima jam padahal browser di dalam kontainer mati sejak awal. Pelajaran soal user default, HOME, dan healthcheck dari satu migrasi compose.
#docker#playwright#debugging - 19.09devops
Fallback Tanpa Diagnosa Cuma Nutup Akar Masalah
Generate qwen exit 1 ditangani fallback router9 tanpa diagnosa, padahal penyebabnya cuma probe clipboard 410 yang bisa diperbaiki.
TL;DR: Generate qwen gagal dengan exit 1, fallback ke router9 langsung jalan dan menelan diagnosis sebenarnya. Setelah dicek lewat camofox-doctor, penyebabnya cuma probe clipboard HTTP 410 di level L4, bukan qwen mati. Sekarang fallback hanya sah kalau doctor L0-L4 clear, plus exit code dipecah biar tiap kegagalan ditangani sesuai penyebabnya.
#automation#debugging#docker - 10.31devops
Situs Dibilang Kena DDoS, Log Nginx Bilang Lain
Laporan DDoS berakhir di log: 80 persen request 504 persis tiap jam, limit_req tak pernah terpicu, pelakunya PHP-FPM kehabisan worker.
TL;DR: Laporan dugaan DDoS ternyata gelombang 504 periodik tiap jam akibat antrean PHP-FPM yang macet, bukan serangan. Rate limit tak pernah terpicu karena $binary_remote_addr menangkap IP Cloudflare, bukan IP asli pengunjung. Solusinya: aktifkan cache Cloudflare, sesuaikan pool PHP-FPM, dan atur logrotate untuk log dalam container.
#nginx#docker#cloudflare