Blog
Catatan teknis seputar web development, DevOps, dan integrasi AI.
503 artikel
- 03.19testing
Kategori CRUD Sudah Jadi, Test-nya Nol
Fitur kategori bertingkat udah hidup tanpa satu pun test: env boot ternyata kontrak, dan edge constraint cuma bisa divalidasi lawan MySQL beneran.
TL;DR: Awalnya fitur kategori bertingkat udah jadi tapi belum ada test sama sekali jadi kelihatan hijau palsu. Terus gue benerin TestHealthEndpoint yang gagal boot karena env belum di-set pakai Setenv plus nambah tiga test integrasi buat cek constraint hapus parent/child di MySQL asli. Testnya dikunci tag integration dan harus jalan pakai -p 1 biar nggak rebutan database barengan.
#golang#testing#mysql - 03.09devops
Arah DB Dibalik, Semua Asumsi Safety Ikut Terbalik
Membalik arah db-push jadi db-pull bukan cuma menukar panah: backup lokal dulu, dump divalidasi sebelum dipercaya, aturan backtick berubah di SSH.
TL;DR: Bikin script db-pull tuh ngeri karena yang ketimpa database lokal, bukan staging lagi. Makanya urutannya dibalik, wajib backup lokal dulu, terus dump staging dicek ukuran sama tanda Dump completed baru di-replace. Terus verifikasinya ketat banget, hitung baris tiap tabel harus sama persis, backtick juga diakalin biar aman di SSH.
#mysql#bash#docker - 02.35devops
Satu perintah cek status gate
Cek status gate Plane yang dulu butuh empat round trip MCP dan payload 86KB, sekarang cukup satu skrip read-only dengan exit code semantik.
TL;DR: Dulu cek status ribet banget harus empat kali panggilan MCP cuma buat baca data 86KB yang loadingnya lama. Sempat kepikiran pakai cache tapi malah bikin pusing, akhirnya bikin skrip plane status yang baca langsung tanpa cache dan ngecek empat bagian secara paralel. Sekarang cukup satu perintah udah ketahuan beres atau nggak lewat kode exit-nya, jadi nggak males lagi ngecek gate.
#python#plane#devops - 23.38tooling
Desain v3.1: identitas halaman tanpa marker
Spesifikasi desain v3.1 memindahkan identitas halaman dari marker HTML tersembunyi ke page_id di config, dengan verifikasi baca-kembali.
TL;DR: Desain v3-1 mindahin identitas halaman dari marker HTML ngumpet ke page_id eksplisit biar nggak gampang hilang pas sanitasi. Sekarang verifikasinya pakai retrieve-after-write dengan bandingin hash yang udah dinormalisasi dan fail-loud kalau ada bentuk aneh. Ini masih sebatas desain, belum di-ship, tapi bikin pemisahan data jadi lebih rapi.
#plane#python#markdown - 23.38testing
Tes paritas tanpa validator bersama
Dua gerbang validasi tetap terpisah, tapi tabel uji parametrik mengikat keduanya pada kontrak accept/reject yang sama dan presedensi error yang sama.
TL;DR: Awalnya mau bikin validator bareng buat plane-init sama plane-doc-sync biar error-nya sama persis, tapi ternyata import silang pas runtime dilarang. Akhirnya parity-nya dibuktiin lewat tabel pytest parametrize yang ngelempar input jahat yang sama ke dua modul itu. Aturannya traversal error harus menang duluan daripada error bentuk file, jadi path aman dicek dulu baru isi filenya.
#python#testing#plane - 21.20tooling
Preflight sadar versi untuk membuka jalan konfigurasi v3
Preflight v3 perlu jalur validasi sendiri tanpa mengubah validator v2 yang dibekukan.
TL;DR: Preflight v2 sama v3 tuh dipisah biar nggak tabrakan, jadi script sync cuma buat v2 dan script pagesync khusus v3 plus Pages. Validator Pages yang dobel di dua skill dites bareng pake tabel kasus jahat biar hasilnya sama-sama nolak atau nerima. Buat sinkronisasi halaman sekarang ngandelin page id sama verifikasi abis retrieve, bukan marker HTML yang gampang hilang.
#plane#python#testing - 17.55tooling
Konflik sync tanpa leluhur: alarm, bukan merge
Classifier status mirror Plane pakai hash sha256 sebagai hakim tunggal, dan konflik dua sisi di jalur satu arah runtuh jadi alarm.
TL;DR: Gue kira sinkronisasi bakal auto gabungin perubahan, ternyata pagesync sengaja nolak pintar-pintaran. Kalau di jalur satu arah dua sisi sama-sama berubah, dia langsung kasih alarm plane-changed dan git yang menang jadi harus push ulang. Semua keputusan cuma ngandelin hash SHA256 sama data last_sync biar nggak nebak-nebak dan data nggak hilang diam-diam.
#git#sync#python - 17.14tooling
Identitas halaman mirror: marker tersembunyi, bukan nama
Pengikatan halaman mirror lewat nama itu rapuh; modul pagesync memindahkan otoritas ke marker HTML tersembunyi plus sha256 konten yang dinormalisasi.
TL;DR: Alat pagesync v3 mirror file markdown ke Plane Pages pakai komen HTML tersembunyi sebagai identitas, bukan nama halaman yang gampang diubah editor. Aturannya ketat, kalau marker hilang langsung diblok, file twoway menang lawan oneway, dan oneway cuma bisa publish aja. Drift dicek pakai sha256 tanpa frontmatter plus validasi config yang galak biar nggak kena path traversal.
#plane#python#markdown - 17.01tooling
Unit Test Hijau Semua, Tapi Konverter Tetap Rusak
Tiga bug pull-side lolos dari unit test tiap sisi yang hijau semua; cuma property test round-trip yang menangkap kontrak dua sisi yang tak sinkron.
TL;DR: Gw kira bug-nya cuma satu fungsi pas round-trip markdown ancur padahal unit test ijo semua, ternyata kontrak push dan pull beda. Masalahnya ada tiga, bold nge-wrap link ditolak parser, token code span bocor karena regex cuma jalan sekali, sama baris quote doang di-drop. Jadi unit test ijo nggak jamin aman, cuma tes lintas komponen yang bongkar kontrak nggak sinkron.
#plane#python#markdown