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

項目地址 http://code.google.com/p/vakuum-oj/

簡介

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的開發者,歡迎有意者加入開發

相關日誌