debugging
Catatan teknis seputar web development, DevOps, dan integrasi AI.
19 artikel
- 19.52backend
Footer Berubah, JSON-LD Tidak: Jebakan Boot Cache Settings API
Menulis baris settings langsung ke database tidak mengubah respons API yang menyimpan snapshot saat boot. Urutan debug tiga lapis dan aturan restart.
TL;DR: Update settings langsung lewat SQL memang masuk di database, tapi endpoint masih balikin nilai lama soalnya API cuma baca snapshot in-memory yang dibuat pas boot. Nulis SQL itu nggak lewat jalur yang bisa refresh snapshot, makanya datanya kelihatan aman tapi nggak pernah kepakai. Solusinya gampang: habis nulis langsung ke DB, tinggal restart API-nya.
#caching#cache-invalidation#debugging - 11.52frontend
Palet Kosong dari JSON yang Valid
Kunci backgroundColor dan pembaca yang mencari background-color, dua-duanya legal tapi tidak pernah bertemu. Palet kosong tanpa satu pun error.
TL;DR: Bug-nya sepele tapi siluman: capture nulis key JSON gaya camelCase, sedangkan consumer bacanya pakai kebab-case, jadi lookup-nya gagal total. Nilainya nggak error, cuma string kosong, makanya palette sama font tampil kosong padahal build sukses dan screenshot jelas berwarna. Solusinya satu arah: capture nulis kebab-case plus script validasi sebelum file ditulis.
#css#json#javascript - 18.49backend
Error 500 di Halaman Admin dan Count Query yang Kehilangan Join
Satu filter di WHERE bareng bikin halaman admin 500 padahal query list aman. Ternyata count query lupa bawa join yang sama.
TL;DR: Buka halaman moderasi di KotaPortal malah jadi error 500 padahal login sebagai superadmin. Ternyata query COUNT buat pagination nggak join tabel categories jadi filter c module bikin MySQL protes kolom nggak dikenal. Akhirnya beres setelah nambahin LEFT JOIN categories biar dua query punya join yang sama.
#mysql#go#sql - 13.18backend
Pengaduan Lahir Tanpa Jejak: Timeline yang Kosong Sejak Awal
Timeline pengaduan kosong bukan bug tampilan. Baris history pertamanya memang tidak pernah di-INSERT, karena fungsi kembar CreateRegistration dan CreateReport
TL;DR: Buka timeline pengaduan di dashboard admin kosong padahal laporan udah masuk, kirain query-nya error. Ternyata pas dicek DB emang baris awal history dari NULL ke pengajuan gak pernah dibikin, beda sama fitur pendaftaran yang udah bener. Akhirnya diperbaiki pakai transaksi biar laporan dan history kecreate barengan plus ditambahin test biar gak kejadian lagi.
#golang#mysql#audit-trail - 12.58backend
Save Tanpa Perubahan Kok 404? Kala RowsAffected Menipu
Simpan form tanpa perubahan kok dibalas 404? Ternyata RowsAffected MySQL menghitung baris berubah, bukan baris cocok. Fix: cek eksistensi saat nol.
TL;DR: QA nemu bug, pencet save tanpa ubah data malah 404 padahal datanya ada. Ternyata MySQL ngitung RowsAffected itu yang beneran berubah, bukan yang kecocok, jadi kalo nilainya sama hasilnya nol dan kekira nggak ketemu. Fix-nya sekarang kalo hasilnya nol dicek dulu pake SELECT biar tau beneran nggak ada atau cuma nggak ada yang berubah.
#mysql#go#debugging - 08.06backend
Satu Baris yang Terlupa: Mapper DTO yang Menghancurkan Frontend
Field Status ada di entitas tapi hilang di mapper: API membalas string kosong, halaman edit crash. Satu baris plus regresi test menutupnya.
TL;DR: Bug muncul karena field status lupa dipetakan di dto announcement jadi frontend dapet string kosong dan crash pas baca badge. Di backend ditambahin mapping yang hilang plus test regresi, di frontend dibikin helper toFormStatus yang cuma izinin published dan scheduled sisanya jadi draft. Sekalian navigasi diganti dari window location ke router push dan refresh biar toast nggak hilang.
#golang#react#typescript - 15.10tooling
Konverter Markdown yang bisa dipercaya justru pilih menolak
Parser Markdown dua arah di alat sync repo ke Plane Pages sengaja menolak sintaks di luar subset, biar mirror nggak rusak diam-diam.
TL;DR: Pull dokumen ke Plane gagal total cuma gara gara raw HTML di baris 57 langsung error. Parsernya emang dibikin strict cuma mau subset kecil kayak heading list tabel jadi sisanya ditolak pakai nomor baris. Galak di awal tapi enak banget soalnya mending error cepet daripada konten kepotong diam diam baru ketahuan belakangan.
#plane#python#markdown - 14.58ai
Aturan Proses Universal untuk AI Coding Agent
Tiga file aturan proses yang saya paksa agent ikuti: vertical slice, empat tingkat testing dengan database nyata, debugging sistematis.
TL;DR: Gue pernah lihat AI ngoding semua layer sekaligus eh hasilnya nggak ada yang jalan. Terus gue bikin aturan tegas biar kerja per irisan fitur vertikal yang bisa dites langsung. Ditambah testing berlapis dan debugging urut jadi agent nggak asal ngasal lagi.
#ai-agents#testing#debugging - 09.08frontend
Eksperimen Font yang Tamat dalam 22 Menit
Revert font heading cuma satu baris karena semua heading membaca satu token. Eksperimen selera jadi murah.
TL;DR: Coba ganti font heading pakai Source Serif 4, kok 22 menit udah di-revert karena kelebayan bookish. Untung semua heading baca dari satu CSS variable, jadi undo-nya cuma satu baris, nggak perlu edit belasan file. Yang gagal dibuang, yang menang kayak nav Inter tetep kepake, eksperimen murah emang enak.
#css#tailwind#accessibility