ChillJudge 線上評測系統
超多臺灣學生在用
為 CPE 刷題打造的線上評測系統,用超酷的分散式判題架構大幅降低營運成本。

ChillJudge(冷靜程設)是一個線上評測系統,簡單說就是刷題網站:選一題、寫程式、按下提交,幾秒後它會告訴你對還是錯。主要是做給準備 CPE(大學程式能力檢定)的人用的,題庫跟 CPE 一樣是 UVa 的題目。
跟我以前的作品最不一樣的地方是,它不是做完拍個影片就收工的專題,而是一個掛在網路上、真的有人在用的服務。所以除了「做得出來」,還要顧「不能掛掉」跟「不能被玩壞」。下面就挑幾個我自己覺得最有料的地方來講。
刷題的地方

左邊看題目、右邊寫程式、下面看結果,三塊都可以自己拉大小。編輯器用的是跟 VS Code 同一顆的 Monaco,程式碼會自動存在瀏覽器裡,不小心關掉分頁也不用重寫。
不用登入就可以直接按「測試」跑範例測資,想留解題紀錄再登入就好。答錯的時候也不會只丟一句 Wrong Answer 給你,它會指出第一個跟答案不一樣的地方,還把空白、換行都顯示出來,因為很多時候錯的真的就只是多一個空白。目前支援 C++ 和 Python。
題目看不懂怎麼辦
UVa 的題目全英文,有些敘述又跟畢卡索一樣抽象,常常還沒開始寫就先卡在讀題。所以我在題目這邊做了三件事:
- 整題中文翻譯:一鍵切換,上面那張圖就是中文版。
- 點單字查翻譯:想順便練英文的話留在原文,哪個字不會就點哪個。
- 概念引導動畫:大部分題目都有一段可以一步一步播的動畫,用範例測資把題目到底在問什麼演一遍。動畫是用 AI 協助製作,驗收過才上架。


按下「提交」之後
這是整個系統我最喜歡的部分。線上評測系統說穿了就是「把陌生人寫的程式拿到我的主機上跑」,聽起來就超可怕,隨便一個無窮迴圈或是亂刪檔案的程式都可能讓整台機器陪葬。
所以每一份程式都會被關進一個用完就丟的 Docker 容器裡:沒有網路、只給 1 顆 CPU,C++ 最多 256 MB 記憶體跟 2 秒 CPU 時間,編譯跟執行還分成兩個容器。超時、吃爆記憶體、編譯失敗都會被抓出來,變成對應的評測結果。
2026 年初我把後端改成分散式架構:API 伺服器只負責收件,把工作丟進 Redis 佇列;真正跑程式的評測機在另一台主機上,兩邊只透過佇列講話。這樣就算評測機被操到很忙,網站本身還是活著的,之後人變多也只要多開幾台評測機就好。
另外也做了一些防呆:同一個人一次只能有一份程式在排隊、訪客的優先權比登入的使用者低、每分鐘能送幾次也有上限。

順便做了一個練習場
除了演算法題,我也想讓人可以練 Git、Docker、SQL 這些開發工具,所以又做了一個「開發工具練習場」(目前還掛著 BETA)。
在網頁裡的終端機打真的指令,畫面上的圖就會跟著變:git commit 會長出一個節點,git merge 會把兩條線接起來,遇到衝突也要自己解。重點是背後沒有真的 Git 或 Docker 在跑,三個模擬器都是用 TypeScript 從頭寫的,全部在瀏覽器裡執行,所以不用裝任何東西,也不怕打錯指令把什麼弄壞。




如果不知道從哪裡開始,可以跟著學習地圖一站一站走。每一站的教學是一張收據,畫面上方的印表機會把它印出來,照著上面的指令打,打對了就會自動打勾。

把它當產品在顧
上線之後有一堆不算功能、但是不做不行的事情:
- 推到
main會自動跑測試再部署到正式站,另外有一個測試站讓我先試新功能。 - 自己做了一個監控後台,可以即時看到請求紀錄、評測機還活著沒、流量從台灣哪個縣市來,有異常會發 Discord 通知我。
- 問題回報表單獨立放在 Cloudflare Worker 上,這樣就算主站掛了,使用者還是有地方跟我說「欸你網站掛了」。
- 介面有繁中、英、日、韓四種語言,有深色模式,用手機也能刷題。

現在
ChillJudge 從 2025 年 6 月做到現在,中間後端整個重構過一次,題庫跟功能也都還在繼續加。它是一個非營利的專案,如果你剛好也在準備 CPE,歡迎來刷個幾題,練習程式設計或許不用很瘋狂 👍