Kasa.
後端工程、系統設計,和中間踩過的坑。
最新工程 · 2026.10.25
muse.ai 寄信審批卡按不到:Chrome 擴充功能改讀 React 資料判斷
商店有人回報寄信的審批卡按不到。我把能觸發的卡全跑一遍,發現同一筆審批會以三種樣子出現,按鈕文字也隨動作和語言變。1.3.0 改成讀 muse 標在頁面上的屬性和 React 裡的審批資料,讀不到才退回認文字。
閱讀全文 →更多文章
-
發文要等兩分鐘:把 Astro 靜態部落格改成 Workers 即時渲染
部落格原本每次發文都要全站重 build,等 1 到 2 分鐘。改成 Cloudflare Workers 即時渲染加邊緣快取後,發文只清一次快取,約 5 秒上線,CPU 中位數 9ms,還留在免費方案。
-
回測結果可信嗎?TradingView 回撤低估、偷看未來等五個回測陷阱
回測跑出漂亮數字,不代表策略真的有用。整理我做策略研究時踩過的坑:TradingView 最大回撤低估、沒有隨機對照組、資料沒洗、樣本太短、偷看未來,以及各自怎麼避開。
-
TradingView webhook 串幣安自動下單:BTC 日線策略的 relay 與交易所端停損
一套 BTC 日線策略從回測調參做到幣安自動下單:只有日線樣本夠、調回測殼比調指標有用,relay 照目標部位對齊而不是照指令下單,停損掛在交易所端。
-
對帳告警響了兩次:Bitfinex 放貸部位換邊造成的漏算與重複計息
我用實際付息除以帳面應計的比值監控收益有沒有算錯,這個告警響過兩次,一次漏算、一次重複計息,根因都是 Bitfinex 把同一筆部位分在 credits 與 loans 兩側。
-
Claude Code 自動分診 Sentry 告警:用 --allowedTools 限定唯讀的設計與踩坑
告警響了先讓只有唯讀工具的 Claude session 查根因、把結論貼到 Discord,這篇講權限邊界怎麼畫,以及模型改寫指令路徑、Sentry 噪音這兩個踩過的坑。
-
Claude Code mods 做可點擊的 band:API 限制決定設計,leftovers 看不到的殘留
Claude Code mod 上線後把 band 改成能直接操作,設計多半被 Button 不能上色、hover 會點錯這些限制決定;leftovers 也補上絕對路徑與變數代入,並列出比對指令看不到的殘留。
-
React 數字輸入框的坑:清空存成 0、type=number 按 e 變空字串
放貸設定頁的保留額清空後會靜靜存成 0,等於把資金全部放出去。整理修這張表單時遇到的數字輸入框問題:草稿存字串、上下限分開擋、type=number 的 e 鍵,以及 jsdom 測不到的逐字輸入。
-
覆蓋率很高還是漏測?用 CRAP 指標找出最該補測試的函式
程式多半是 agent 寫的,行覆蓋率很高,卻看不出沒測到的地方是不是落在最複雜的函式。導入 CRAP 指標、門檻定在 8 之後,前後端清掉兩百多個超標函式,也修了 72 個讀程式時發現的問題。
-
抓 Rust 與 TypeScript 的循環依賴:自己寫模組依賴掃描器,分層規則放進 CI
後端 18 個 package 之間有好幾組循環依賴,只靠人記。我寫了一支不用編譯的掃描器,產出能點進程式碼的架構圖、把分層規則放進 CI,同一天清掉 23 條既有違規,只有 2 條需要注入。
-
Claude Code mods 實作:翻一個月 session log 做出五個 mod
讓 Claude 讀過一個月的 session log,找出自己一再重複的需求,做成 prompt 上方的 band、status line 和指令,其中最有用的是追蹤 Claude 留下哪些東西的 leftovers。
-
多個 AI agent 同時開 PR:GitHub required check 與部署預檢怎麼守住 main 和 PROD
好幾個 AI agent 同時開 PR,每次 merge 又多一個 release commit,只靠 GitHub branch protection 守不住。整理 required check 跟路徑過濾打架的修法,以及部署預檢和 merge script 怎麼補洞。
-
Bitfinex 放貸利率月報自動化:Claude Code routine 每月開 PR,等人審才合併
利率月報只用 Bitfinex 公開 K 線算,任何人都能重算;Claude Code 的雲端 routine 每月自動開 PR,但一定等人審過才合併。
-
Claude Code /code-review 審完整個前端:七十幾筆 finding 裡最有教訓的四類
用 Claude Code 的 /code-review max 審整個前端,確認七十幾筆問題,大多是操作送錯或狀態畫錯。挑出最有教訓的四類,加上測試要在未修正版上失敗的驗收規則,以及 Playwright 跨瀏覽器測試的結果。
-
JWT 到期邊界的 race、2FA 文案與密碼封裝:帳號安全上線後的三個修正
放貸平台碰得到使用者的交易所 API key,上線後又修了三件帳號安全的事:安全文案先對過後端,JWT 只解析一次避開到期 race,密碼在瀏覽器封裝後才送出。
-
Next.js 網站 Lighthouse 每次 timeout?主因是一個沒讀的 response body
首頁手機版 PageSpeed 只有 46 分,Lighthouse 每次都 timeout。主因是匿名訪客的 refresh 請求拿到 400 後沒讀 response body;修完再處理 WebGL、LCP 圖和字型,分數到 61。
-
新網域怎麼做 SEO:用自架 OpenSEO 查搜尋量,再照資料寫長尾教學文章
品牌詞被同名品牌佔走,新網域只能靠教學內容接長尾搜尋。用自架 OpenSEO 查搜尋量重排題目,每篇對一手來源查證,GA4 只裝在公開頁。
-
AI 生圖寫不好中文字:插畫交給生圖模型,有字的配圖用 HTML 加 Playwright 截圖
替 16 篇教學文章補圖:封面用生圖模型加合成腳本統一風格,有字的示意圖和圖表用 HTML 排版再用 Playwright 截圖,圖上的數字一律用公開資料重算。
-
SaaS 後台 Admin Console 設計:kill switch、廣播與 Telegram 通知的取捨
放貸平台長成有使用者與帳單的服務後補上的 admin console 與多通道通知:高風險開關要能在 runtime 調整、查得到權限、留下紀錄,每個通知通道各自失敗,點名和分群廣播的收件規則要分開。
-
GitHub Actions 加速 Rust 與 Next.js 的 CI:11 分半壓到 1 分半
後端換成 Rust 後,PR 的 backend job 從 11 分半壓到 1 分半,前端檢查從 81 秒壓到 30 秒。時間主要省在測試 DB、bcrypt 和幾個讓快取無聲失效的 bug。
-
量化交易虧損時該不該改策略?把檢討流程寫成程式,13 種降風險改法都沒過關
把「持續虧損就重新評估」事先寫成觸發條件和判定順序,第一次自動觸發先抓到檢討程式自己的兩個 bug,13 種降風險改法也沒有一個通過事先訂好的標準。
-
加密貨幣趨勢策略回測 240 倍,模擬交易兩天半虧 10.7%:標的池的倖存者偏差
用 1000 USDT 模擬交易挑戰 10 倍。回測 240 倍的趨勢策略上線兩天半虧 10.7%,原因是 35 檔標的是事後挑的,換成當時的成交額排名後,1 年內 10 倍只在 2020 年大牛市起點發生。
-
Chrome 擴充功能上架 Chrome Web Store:審核準備,加一支跨平台一行安裝腳本
Auto Approve for Muse 上架 Chrome 線上應用程式商店的準備與審核經驗,以及一支跨 macOS、Linux、Windows 的安裝腳本,在 Chrome 不讓程式裝擴充功能的限制下把步驟壓到最少。
-
muse.ai 審批卡自動允許:Chrome 擴充功能從全部允許改成信任清單
muse.ai 的 AI 助理遇到新網站就跳審批卡,排程任務常卡在半夜沒人按。我寫了 Chrome 擴充功能自動按允許,上架給別人用之後改成信任清單,並把發文這類收不回來的動作分開處理。
-
SaaS 從績效抽成改成年繳訂閱:方案上限、促銷與停權的帳單設計
自動放貸 SaaS 的收費從績效抽成改成固定價訂閱。方案上限比收費先落地,促銷加送在開票當下凍結在帳單上,30 天通知只擋被動收費,停權不碰使用者自己的放貸開關。
-
Java 搬到 Rust 後的 code review:15 條 finding,6 條是從 Java 照搬的 bug
後端從 Java 換成 Rust 之後做了一次完整 code review。這篇挑四條最有教訓價值的:照註解搬錯的交易語意、sqlx 對失敗交易回 Ok、client 斷線砍掉 handler,以及停權跟放貸開關共用旗標。
-
Java Spring Boot 遷移到 Rust 實測:記憶體 734 MiB 降到 32 MiB,一次切換
放貸平台的後端從 Java 21 整包改寫成 Rust,對外契約和資料都不動,一次切換。換完記憶體從 734 MiB 降到 32 MiB、啟動從 30 秒變成約 0.03 秒,API 回應時間則感覺不出差別。
-
用 LiveContainer 在 iPhone 雙開 LINE:免費 Apple ID 的三個坑
同一支 iPhone 想登第二個 LINE 帳號,我用 LiveContainer 加 SideStore 側載,整理免費帳號 App ID 不夠用、SideStore 登入失敗、捷徑續簽跳錯的原因與解法。
-
讓 GPT 當 Claude Code 的唯讀 reviewer:用 Pi 做對抗式 review
用 Pi 透過 API 接 GPT 模型,包成 Claude Code 叫得動的唯讀 reviewer,記錄為什麼權限規則擋不住寫檔,以及對抗式 review 怎麼收斂到沒有 finding。
-
QQQ 還是 SPY?我在 IBKR 定期定額全押 QQQ 的理由與回撤代價
研究完擇時策略後,我拿掉回撤 30% 的限制,改在 IBKR 每月定期定額 QQQ。這篇整理 QQQ 對 SPY 的歷史比較、要付出的回撤代價、跌的時候的規則,以及股利預扣和美國遺產稅這些長期成本。
-
擇時策略 vs 買入持有:台股、美股、期貨、幣圈回測,沒有一個贏過單純抱著
我把台股、美股、期貨、幣圈的擇時與量化策略回測了一輪,扣完成本、用每日淨值算回撤之後,沒有一個贏過同一檔標的單純抱著,真正能加速累積的是提高每月投入金額。
-
模擬盤永遠賺錢、實盤卻在虧:誠實模擬盤與 AI 交易模型命中率驗證
把永遠顯示獲利的模擬盤改成會付 gas、會被拒單,再用 24 小時取樣驗證 AI 模型的命中率,結果量不到方向優勢,照事先寫好的放棄條件收掉專案。
-
Design Token 全站改版:AI 評分當不了門檻,先換 token 值一支 PR 換掉九成畫面
官網、儀表板、後台和 email 一起從深色圓角卡片換成紙色底、方角墨線的工程藍圖風格。AI 評審的分數只適合當回歸清單;落地時先換 Design Token 的值,一支 PR 就換掉九成畫面。
-
Monad 鏈上 AI 交易 bot 實盤:每 300ms 重掛單,gas 比價差大十倍
把 Monad 上的 AI 交易展示專案拿去主網實盤,量到每個 block 重掛的 gas 比能賺的價差大十倍,也修掉一個讓 83% 到 95% 掛單被退回的保證金記帳 bug。
-
裸K交易法有用嗎?1026 檔台股規則回測,樣本外輸給隨機進場
把一位 YouTube 創作者的裸K交易法寫成規則,用一千多檔台股日線回測,跟只打散進場時點的隨機對照組比,樣本外輸給隨機 2.62 個標準差。
-
Next.js 靜態匯出,Google 只看到 spinner?多語系預渲染與 robots.txt 索引修正
Next.js 靜態匯出的官網,Google 爬到的 HTML 只有 spinner,多語系頁面只認得英文版。改成依網址決定語言、build 時把文案寫進 HTML,再修掉 robots.txt 造成的兩個索引問題。
-
預測 Bitfinex 放貸利率尖峰能多賺嗎?樣本外回測只剩 10bp,我決定不做
預測 Bitfinex 放貸利率尖峰、先留資金等高利值不值得?完美預知 3 小時的收益上限有 +54 到 +129bp,但只用當下資料的模型樣本外只剩約 10bp,空等的成本把猜對的收益吃掉。
-
Bitfinex 放貸天數怎麼選?2 天、30 天與 120 天的回測與鎖倉風險
Bitfinex 長天期放貸的利率看起來高很多,但大部分 30 天借款 40 分鐘就還。回測修掉兩個灌水錯誤後,只剩 2 天報價改掛 30 天這一種值得試,收益集中在少數事件;120 天要先看鎖倉風險。
-
Bitfinex 放貸的隱藏時鐘:每 20 分鐘一次的批次拍賣
Bitfinex 2 天期放貸其實是每 20 分鐘撮合一次的批次拍賣,這篇整理我怎麼從資料看出這個結構、新報價策略回測後真正賺在哪裡,以及分三步上線時踩到的坑。
-
從 FastAPI 腳本到 Spring Boot SaaS:我的 Bitfinex 自動放貸平台架構演進
Bitfinex 自動放貸 side project 從「能跑就好」的 FastAPI 單人腳本,重寫成 Spring Boot + Next.js 多模組平台:冪等、對帳、斷路器與監控怎麼設計。
這個分類還沒有其他文章。