backend
Catatan teknis seputar web development, DevOps, dan integrasi AI.
47 artikel
- 23.25backend
Sync dokumen dua arah: yang layak dipercaya rajin menolak
Pull balikin isi yang beda dari yang saya push, tanpa error. Ternyata jawabannya bukan parser yang lebih pintar, tapi peta penolakan yang presisi.
TL;DR: Gue pull markdown terus formatnya hilang tanpa error, ternyata server Plane ngebersihin description_html pakai nh3 clean jadi rich-editor kebuang diam-diam. Akhirnya gue putar haluan, identitas dokumen dipindah ke description_stripped yang aman dan sistem milih nolak daripada maksa nebak. Makanya dibikin enam status jelas biar tau kapan harus abort daripada data ilang setengah tanpa jejak.
#plane#self-hosting#sync - 22.30devops
Live probe Plane: dua asumsi spesifikku tumbang dalam 27 menit
Spesifikasi 905 baris kehilangan dua asumsinya setelah live probe ke Plane CE: marker HTML lenyap disanitasi server, endpoint archive ternyata 404.
TL;DR: Gue udah bikin spek sinkronisasi panjang banget tapi pas di-probe langsung ketahuan dua asumsi ngaco. Komentar HTML buat marker ternyata kesapu sanitizer server jadi hilang, endpoint archive di CE juga zonk 404. Akhirnya marker dipindah ke teks polos dan config, cleanup cukup pindah status Done aja.
#plane#self-hosting#rest-api - 15.57backend
Saat Saya Berhenti Memisahkan Kode Berdasarkan Lapisan Teknis
Commit d7f02b2 memperkenalkan aturan wajib vertical slice architecture dan 4-tier testing: setiap fitur dibangun end-to-end dalam satu iterasi, bukan layer-by-layer horizontal. Hasilnya development lebih cepat, bug tertangkap di layer murah via Testcontainers, dan isolasi fitur bersih tanpa efek samping.
TL;DR: Awalnya gue kira pisah kode per layer itu rapi, eh pas fitur nambah malah pusing karena ubah DB dikit API bisa error. Sekarang pakai vertical slice jadi satu fitur ngumpul dari migrasi sampai frontend, lebih aman nggak merembet kemana-mana. Testingnya dibagi empat level pakai Testcontainers dan Playwright buat alur kritis, debuggingnya juga wajib urut biar nggak asal tebak.
#vertical-slice-architecture#testing#testcontainers - 17.22backend
Bukan Sekadar SQL: Saat API Fan-out Bikin Monitor Mati
Perbaikan N+1 di commitcheck: satu kali paginasi gantikan 250 request, timeout SSL hilang dan eksekusi turun ke 27,5 detik.
TL;DR: Awalnya dikira jaringan lemot, ternyata script nge-loop paginasi tiap kandidat jadi 250 request numpuk dan bikin timeout. Solusinya males tapi ngaruh, paginasi cukup sekali di awal terus dibikin kamus biar tinggal cek aja. Habis di-patch requestnya anjlok drastis dan waktu eksekusi turun dari dua menitan jadi cuma 27 detik.
#pagination#performance#api - 09.47backend
Ganti URL database WordPress pakai WP-CLI, bukan SQL mentah
WP_HOME cuma menipu halaman baru; URL lama menempel di database. WP-CLI search-replace dengan dry-run dan skip-columns=guid solusinya.
TL;DR: Pindahin dump WP produksi ke lokal ternyata nggak cukup cuma ganti WP_HOME dan WP_SITEURL, soal URL lama masih nempel di mana-mana, apalagi yang format serialized. Jangan asal REPLACE() via SQL, bisa merusak serialized dan kena limit panjang kolom. Paling aman pakai wp search-replace, dry-run dulu, dan skip kolom guid biar identitas postingan aman.
#wordpress#wp-cli#php - 09.43ai
Instruksi tersembunyi di file media tetap data, bukan perintah
Pipeline ingest media wajib membawa kalimat pembajakan verbatim sebagai data. Justru itulah bukti file tidak pernah bertindak jadi perintah.
TL;DR: Tengah malam penulis ngetes pipeline ingest media pake audio sintesis sendiri yang isinya perintah injeksi prompt. Alih-alih dibuang, kalimat berbahayanya justru wajib utuh di transkrip dan dilabel untrusted, soalnya bahayanya bukan teksnya, tapi waktu teks berubah jadi instruksi. Model transkripsinya dibikin stub aja, yang diuji kontrak datanya, dibuktikan lewat asersi.
#prompt-injection#llm-security#whisper - 08.56devops
Ganti Enum Tanpa Naikkan Versi Skema, Saya Kena
Checker bertemu status yang nggak ada di enum-nya. Ternyata kosakata status diubah tanpa bump versi skema. Pelajaran soal kontrak data.
TL;DR: File lama ternyata bawa nilai status baru gara-gara ada commit yang ganti kosakata tanpa naikin versi skema. Checker-nya sekarang misahin dua kasus: kalau pembacanya ketinggalan zaman tinggal dikejar, tapi kalau penulisnya nyelip, itu sejarah versi yang dipalsukan. Pelajarannya, ganti enum wajib dianggap ganti skema dan harus bump versi di commit yang sama, kayak aturan Kubernetes.
#python#schema#backward-compatibility - 03.53devops
Event Log Verifikasi Integritas Ala Git di Pipeline Ingest
Cara sidecar content-addressed, event log append-only, dan re-hash dari disk bikin state pipeline bisa diverifikasi dan dipulihkan tanpa perbaikan tangan.
TL;DR: File frame yang di-tamper nggak bikin planner crash, malah nge-emit action quarantine, soalnya state dibangun ulang dari event log. Caption disimpan sebagai sidecar yang namanya pakai prefix sha256, jadi teks sama dapet dedup gratis. Tapi hash chain cuma kasih tamper-evidence bukan authenticity, makanya verifikasi tetap baca ulang meta.json langsung dari disk.
#git#event-sourcing#automation - 02.54ai
MP4 valid yang nggak akan pernah tertranscribe
File video bisa saja valid tapi tak punya audio. Aksi skip nonstate membuat barisnya tetap kelihatan dan menahan pipeline sampai ada keputusan.
TL;DR: File MP4-nya valid, cuma isinya nggak ada track audio sama sekali, jadi asumsi video pasti punya suara itu salah. Sekarang ffprobe dicek duluan sebelum ekstraksi, hasil flag audio_track disimpan di meta.json, dan kalau nggak ada audio barisnya di-skip tapi tetap keliatan, bukan ditandai selesai. Frame video diekstrak pakai fps konstan plus timestamp, audionya jadi WAV mono 16kHz.
#ffmpeg#whisper#ffprobe