從備考的痛苦到自己動手做:刷題神器的起點
iPAS 備考工具很難用——題庫是 PDF,刷完一回合不知道自己錯在哪,隔天全忘光。所以我們決定自己做一個。從整理 640 題 Excel 開始,到現在正式上線的 PWA。
備考 iPAS 資安工程師(中級)的人都知道那種感覺:題庫是一份 PDF,只能對著螢幕硬看,沒有即時回饋,做錯了不知道錯在哪,過兩天重頭來又全忘了。
我們就是那個備考的人。所以我們決定自己做一個工具。
從 Excel 開始
整個刷題神器的源頭,是一份 Excel 檔案。
iPAS 的題庫是公開的,但格式很不友善。我們把 640 道題手工整理成結構化的 Excel,每一列是一道題,欄位包括題目、選項 A~F、正確答案、解析說明、來源。
然後寫了一個轉換腳本(scripts/convert-xlsx.ts),把 Excel 轉成 data/{slug}/questions.json。這個步驟讓之後每次更新題庫變得很簡單:改 Excel,跑一次 npm run convert,搞定。
移除 Capacitor,重新出發
最早的版本其實有 Capacitor、RevenueCat、Cordova 的程式碼,是想走 App 方向。
後來發現這條路不對——維護成本太高,上架審核週期長,更新不靈活。在 Phase 1 我們把所有 Capacitor 相關的程式碼全部清掉,改走 PWA 路線:網頁就是 App,不需要上架,push 到 GitHub 之後幾分鐘就更新。
這個決定後來證明是對的。Android Chrome 可以加入主畫面、全螢幕執行;iOS Safari 也支援 PWA 安裝。Lighthouse PWA 評分達到 98 分。
刷題體驗的核心設計
題目狀態只有三種:
- 新題:第一次遇到,答對直接畢業
- 錯題:曾答錯,需要連續答對 3 次(
TARGET_STREAK = 3)才能畢業 - 熟練:已畢業,暫時不出現
TARGET_STREAK = 3 這個數字是刻意設定的。連續答對 1 次可能只是猜對,3 次才代表真的記住了。答完一批題之後,你清楚知道自己哪些真的會、哪些還需要再刷。
另外還有一個「猜對的」按鈕,讓用戶誠實面對自己:如果覺得是矇到的,主動退回 0 星重來。
進度存哪裡
進度同時存在 localStorage(立即讀寫)和 Supabase(登入後雲端備份)。答完題先寫本機,3 秒 debounce 後再同步到雲端,不會因為等 API 回應而感覺卡頓。
多裝置使用時,如果兩端的進度有衝突(updated_at 時間不同),會跳出對話框讓你選擇要保留哪一邊的版本。
現在的狀態
刷題神器目前完成了 Phase 1–2(本地刷題、PWA 上線),Phase 3–5 進行中(Google 登入、AdSense、藍新金流買斷)。
Lighthouse 實測分數:Performance 99 / Accessibility 93 / Best Practices 100 / SEO 100。
搭配的補充站 shaun945.kouwua.net 有備考重點整理,Facebook 社群 @shaun945 持續更新 iPAS 考試動態。
這工具是先為自己的備考需求做的。如果它也能幫到正在備考的你,那就值了。