# 專題名稱 Only Object Programming Juicy Orange Juice Only Juice ## 參與人員 :::success - Professor - Sun, Chin-Yu (NTUT CSIE) - Consultant - Huang, Han-Xuan (109 NTUT CSIE, 113 NYCU Cybersecurity) - Huang, Zheng (110 NTUT CSIE) - Member - Chang, Yi-Chang (111 NTUT CSIE) - Zhang, Rui-En (111 NTUT CSIE) - Lin, Pin-Wei (111 NTUT CSIE) - Wu, Yoa-Dong (111 NTUT CSIE) ::: ## 簡介 :::info 初步階段為,建立一個適用於NTUT OOP課程的Online Judge,目標為取代掉jenkins(同樣可以接git server),新增一些實際上課會應用到的功能,例如:讓未來的助教免於用手key成績的痛苦,可以匯出Excel表單。 ::: ## 任務概述 :::info 基於物件導向課程為基礎,針對大學生以下學生所遇到之程式設計題目,開發一個簡易Online Judge,並且模擬有心人士針對Online Judge的任何攻擊手段,進行系統強化與伺服器建設,修改伺服器。 ::: ## 預期工作內容 :::spoiler 基礎 - [ ] 架設一個OJ(前後端,能run git的code,以現有開源做開發) - [ ] 程式上傳功能 - [ ] 程式評測功能 - [ ] 結果回傳 - [ ] 結果顯示在網站上,自己可以決定是否要公開給大家 - [ ] 建立管理員介面,用來增刪改查題目 - [ ] 在上傳時建立自動化建置程序,省去作業時間 - [ ] 新增測試員角色,負責所有題目做為測試的帳號 - [ ] 基礎防禦功能 - [ ] 避免測資被偷出 (偷檔案或是其他奇怪的方法) - [ ] 考慮某些奇怪的STL或function避免Judger被打爆 - [ ] 即時記分板,顯示上機考、作業成績 - [ ] 簡單記分板 - [ ] 使用者可以自己關掉,不給別人看 - [ ] 效能必須扛下一切在考試時所上傳的程式碼 - [ ] 多repo,可以同時出多份題目 - 2023f的OOP課程,同一份Repo同時有很多份作業,在整理的時候會很困難,要使用者手動備份。這裡的概念是指建立不同的Repo,一份Repo代表一次作業的上傳處,方便使用者整理。 ::: :::spoiler 進階 - [ ] 把成績輸出成 excel(方便期末上傳成績) - [ ] 自己設計插件功能(插件商店,可以上傳並下載) - [ ] 擴大Scale(到競賽等級),當發生未預期攻擊事件,可以再來解決 ~~- [ ] 可以撐住C10K問題(後期在處理,畢竟100多人效能問題不大)~~ - [ ] OJ的測試沙盒可以自己魔改其他測試功能。 - [ ] 文本比對功能(防止有人作弊) - 這似乎要NLP or 其他Data Science理論基礎,偏困難 - [ ] 讓林品為跳舞,這是最後的警告,再不做出專題,林品為就會跳舞 ::: ## 參考 :::info [C10K 問題](https://en.wikipedia.org/wiki/C10k_problem) [zero judge](https://zerojudge.tw/) [Kotlin架設 OJ](https://ithelp.ithome.com.tw/articles/10233368) * 一些OJ的開源專案&使用說明 [Dom Judge](https://contest.cc.ntu.edu.tw/npsc2023/teamclient/NPSC_DOMjudge_userGuide.pdf) [DMOJ](https://github.com/DMOJ/online-judge) [NOJ](https://github.com/ZsgsDesign/NOJ) [Qing OJ](https://github.com/QingdaoU/OnlineJudge) ::: # 專題工作進度
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up