OnlineJudge 2.0發布
Github: https://github.com/QingdaoU/OnlineJudge
Docs: http://docs.onlinejudge.me
Demo: http://v2.qduoj.com
經過3個多月的開發, 600多次的commit,我們今天終於可以說一句: OnlineJudge 2.0版本正式發布了。新的OJ可能是現在最簡潔、漂亮、強大、易用且最易搭建的的了。
新特性一睹為快:
- 基於Docker,真正的一鍵部署
- 現代化的設計架構,前後端分離,模塊化編程
- ACM/OI 兩種比賽模式,實時/非實時評判 任意選擇
- 更細緻合理的許可權劃分,超級管理員和普通管理員各司其職
- 基於
vue
構建的 SPA, 友好易用 - 豐富的可視化圖表,一圖勝千言
- 支持使用 Markdown 創建題目
- JudgeServer 心跳檢測、狀態檢查
- 支持導入用戶,生成用戶
- 支持選取公開題目作為比賽題目
- 更多的語言支持:
C
,C++
,Java
,Python2
,Python3
- ...
主要模塊均已開源:
- 後端(Django): https://github.com/QingdaoU/OnlineJudge
- 前端(Vue): https://github.com/QingdaoU/OnlineJudgeFE
- 判題沙箱(Seccomp): https://github.com/QingdaoU/Judger
- 判題伺服器(Judger的封裝): https://github.com/QingdaoU/JudgeServer
一次從內到外的完全重構
2.0版的規劃從去年就有了,只是大家忙於工作學習,開發進度緩慢。今年年初@李大佬基本完成了新OJ的admin部分,後台框架也有了。我今年4月底加入了開發團隊,中間不少事基本沒怎麼做,從今年8月初開始專心開發新版。
從去年開始,我們逐漸感覺到傳統的 MVC
, MVVM
等開發模式在寫這種交互繁多、 動態Dom占多數的頁面越來越吃力,同時前端各種框架層出不窮,在這些框架的幫助下,前端的開發門檻在逐漸降低。於是我們適時的分離了前後端,後端專註於邏輯處理, 前端專註於數據展現,用戶體驗大大提升。
與此同時,後端也經歷了一次脫胎換骨,之前不合理的地方被統統重寫了一遍。首先是統一了語言配置規則,題目可以自行選擇使用的語言;然後是引入了多時區,後台統一使用UTC,在前端做時間轉換;再就是重新定義了管理員和普通管理員的許可權,使得許可權的劃分更加細緻合理;當然,判題伺服器這塊也做了巨大改動,我們將判題服務從OJ中抽離出來單獨作為了一個模塊,這樣不僅添加判題伺服器其更加簡單,維護起來也更加方便。
一些截圖
推薦直接去體驗下 Demo, 新功能較多,無法一一截圖
感謝
可以說2.0版就是我和李同學兩人一起做的, 開源不易,希望大家且用且珍惜。如果您覺得還不錯就star一下吧,您的star可能是我們持續更新下去的動力。如果您有什麼好的想法,歡迎PR,真的好久沒有PR啦!
在此感謝所有為OJ提供建議和反饋問題的小夥伴們,你們的幫助讓OJ變得越來越好用。
推薦閱讀:
※爬蟲帶你逛知乎(下篇)
※10min手寫(一):伺服器內存監控系統
※為什麼 x in range(1000000000000001) 的執行速度這麼快
※如何看待將Python代碼轉換成Go代碼並進一步編譯的 Grumpy 項目?
TAG:OnlineJudge | Python | Vuejs |