1. 程式人生 > >開源的線上評測系統——Vakuum

開源的線上評測系統——Vakuum

https://github.com/BYVoid/vakuum                       

簡介

Vakuum是一個基於Linux+PHP的線上評測系統(Online Judge),主要面向資訊學競賽(OI)和ACM/ICPC。

功能

線上評測

使用者提交程式程式碼,線上編譯,執行測試資料,對其評判並返回結果。支援自定義檢查器(Speciel Judge)。支援特殊型別題目(程式碼檢查、互動式、庫式、提交答案式)。

比賽舉辦

兼顧OI和ACM,支援個人賽、團隊賽。比賽模式有線上賽(ACM),離線賽(OI),自由計時賽(USACO)。

晉級模式

根據現有題庫,由管理員設定或使用者推薦一組晉級路線,即做完一組題目後才能進入下一組,並獲得相應稱號。參加USACO和UVA。

問題討論

簡潔、高效、可控。

其他功能

題庫檢索,使用者排名,隊伍系統,許可權管理,程式碼備份,……

架構

Vakuum 系統分為vakuum-web和vakuum-judge兩大模組。vakuum-web是一個線上評測系統介面,需要PHP和MySQL支援,可以建立 在Linux或Windows平臺下。vakuum-judge是評測系統的核心模組,負責處理使用者評測請求,與vakuum-web進行通訊。通訊模組 為PHP,核心由C語言編寫,只能執行在Linux(Unix)平臺下。

vakuum-web是基 於PHP和MySQL的一個B/S應用程式,採用MVC(模型-檢視-控制器)架構設計,負責與使用者互動和與核心通訊。支援於評測機分離或和一,支援多評 測機協同作業,不需要daemon和底層許可權。使用者通過訪問vakuum-web檢視題目,提交程式碼,vakuum-web將請求派發給vakuum- judge終端。支援多評測機資料同步,支援測試資料分發管理。主要採用HTTP通道傳送命令,FTP通道傳送資料。

vakuum- judge通訊模組由PHP編寫,收到請求以後,使用C語言編寫的核心對程式碼進行編譯,並在執行器沙盒中執行,保證系統安全。執行器使用ptrace監控 使用者程式的系統呼叫和檔案呼叫,根據需求加以放行或禁止,同時支援記憶體峰值統計,記憶體限制,使用者時間統計,時間限制,輸出檔案大小限制。

現狀

正在開發,vakuum-judge核心部分基本完成,vakuum-web底層架構設計完成,正在完善功能。現需要對PHP熟悉的開發者,善於網頁設計和美化的開發者,精通Linux系統程式設計的開發者,有意將核心移植到Windows的開發者,歡迎有意者加入開發