快速建立屬於你的 online judge

前言

在北科大二下時我擔任了資財-資料結構的助教,負責設計考卷,看了先前的考古題後發現老師都是讓大家手寫程式,我認為這樣沒有辦法讓大家學到資料結構的知識,因此這邊做一個小創新,讓大家都學習如何使用 online judge

透過大家使用 online judge 就可以讓大家在有限的時間內寫出程式,感受壓力,並也在感受壓力的過程中將資料結構成功記住!

就因為這樣,我稍微去學習如何快速建立 online judge,透過中國青島大學開源的 online judge,在這邊很感謝中國青島大學,讓我可以快速的建立起 online judge QQ。

QDUOJ

中國青島大學開源的 online judge,建立容易,且有很直觀的後台管理、使用者使用環境,在這三大優點下,使用此開源 online judge。

QDUOJ 佈署連結,如果看不太懂我的寫法,建議直接去看 QDUOJ 的XD。

建議不要使用 windows 安裝,只使用 linux,windows 有太多地雷了…,沒有的話可以在 windows 裡面開虛擬機。
我在 windows 環境下用虛擬機再用 docker,虛擬在虛擬,這難道是幻覺嗎RRRRRR

環境設定

在 docker 中建立 online judge,docker 將作業系統虛擬化,可以讓 online judge 更快速的被執行與建立,因為只有服務 online judge 嘛。
還有一個好處是如果 online judge 爛掉,不至於會讓整個作業系統爛掉,只會讓 docker 爛掉而已XD。

建議先輸入這三行,檢查是否所有需要的環境設定是否有安裝

1
2
3
4
sudo apt-get update && sudo apt-get install -y vim python3-pip curl git
pip3 install --upgrade pip
pip install docker-compose
sudo curl -sSL get.docker.com | sh

開始安裝

不多說,repo 拉下來就對了。

1
git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy

建立 docker 服務

1
sudo docker-compose up -d

這裡要等一段時間,大約半小時左右就會建立成功。

享受 docker 服務

輸入 sudo docker ps -a,如果正確則應該會出現類似此畫面

來整理我們的 online judge 八!

如果對於我的講解認為不夠好的,可以查看QDUOJ 教學說明

到 browser 打 localhost:80,應該能夠順利出現網頁,畫面如下

進入後台

我們先進入管理者的權限,查看後台配置

  • 管理者帳號 root
  • 管理者密碼 rootroot

如果怕其他人也知道管理者的密碼時,建議大家將 root 密碼改掉XD。

再來點選 root -> management,進入管理頁面

讓我們來看看有那些功能,我們先看有關於使用者的功能,點擊 General

依序功能如下:

  • user 所有使用者的資訊,帳號密碼
  • announcement 可以發布公告,有就是在 home 的畫面在那邊會有新的留言公告
  • 後面三個我們不會用到,因此先忽略

註冊 user

進入 user 頁面後,會發現只有 root 這個用戶QQ,

進來這個頁面後,import user 提供 csv 輸入會員資料,格式如下

1
2
memberA,passwordA,email
memberB,passwordB,email

下方的 Generate User 可以快速的生成 user,參數如下

  • prefix 帳號的前綴字元
  • suffix 帳號的後綴字元
  • start number 帳號中間要塞入的數字起點
  • ````end number``` 帳號中間要塞入的數字終點
  • password length 密碼長度,會是高強度密碼(簡稱亂碼)

因此假如 prefix = a, suffix = v, start number=2, end number = 4, password length = 4,就會產生以下的會員

1
2
3
a2v,xxxx,xx@gmail.com
a3v,xxxx,xx@gmail.com
a4v,xxxx,xx@gmail.com

如此的概念,其中 xxxx 是高強度密碼(亂碼)

發布公告

點入 general 在點擊 announcement,就可發布公告

加入題目

這是最重要的部分,如果沒有的話怎麼讓大家寫題目嘛

點擊 problem 後可以點 problem list 看到現在所有的題目,而其中的 create problem 則可以建立題目,點擊他

相信上面大家都會使用,需要注意的是 sampleX,X 為數字,則是顯示在題目上的範例測資中,實際的官方測資則是要從這裡加入

圖中的 Choose File 中加入,特別需要值得一提的是

  • filename.in 是程式輸入的題目資料
  • filename.out 則是程式輸出的正確資料

而旁邊的 type 有

  • ACM 全對才給分
  • OI 對測資就給分,有部分給分。

建立競賽

點擊左邊的資訊欄中的 contest,再點擊 creat contest,過程相信大家都懂不需要我在說,create contest 完畢後,在點擊資訊欄中的 contest list,

點擊此按鈕就可以加入題目,開始放入題目八!不管是公開的題目還是私有的題目都可以,而加入題目的方式就跟我們前面說的加入題目一樣啦。

現在來到最後一個問題,如何讓外網連到我的 judge 呢?

這裡我們使用 ngrok 來幫我們代理伺服器,提供我們網址。

教學如下 透過 ngrok 來讓自己的電腦成為 server by 大衛的筆記

port 可以隨意設定,之後產生的網址我們就可以對外發布,讓他人連線了!

參考連結

QDUOJ 佈署 by 中國青島大學
QDUOJ 教學說明 by 中國青島大學
自己架一個 Online Judge 系統 by TechBrige

心得

QDUOJ 真的是很方便,讓我可以在短短幾個小時內學會並且運用此軟體,真的是太感動了QQ,希望我以後也有一天可以將自己所學到的技術分享給他人。

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: