金鵬
摘要:近年來,編程教育已經(jīng)被眾多國家重視。目前,國內(nèi)也出現(xiàn)了如OJ,POJ等在線編程測試平臺,但是通過調(diào)研以及實際的應(yīng)用發(fā)現(xiàn)了一些不足的地方:交互界面簡陋,部署方面困難以及客戶人群的范圍局限,因此,為了同時適應(yīng)各階段、各層次人群進(jìn)行編程學(xué)習(xí),集個人學(xué)習(xí)模塊、集體學(xué)習(xí)模塊、競賽模塊、在線題庫同時滿足易于部署的集成閱卷系統(tǒng)等功能為一體的編程輔助教學(xué)平臺將具有廣闊的市場前景。本系統(tǒng)具有Eagle-OJ,中央題庫,判卷集群,以及碼上網(wǎng)。在線編程輔助教學(xué)平臺具有研發(fā)成本低,技術(shù)先進(jìn),有好的交互體驗,快捷部署等優(yōu)勢,本平臺將會彌補之前的一些國內(nèi)欠缺不足的地方,從而創(chuàng)造一個更新型更完善的在線編程教學(xué)平臺。
Abstract: In recent years, programming education has been attached importance by many countries. At present, there are online programming test platforms such as Oj and POJ in China, but through investigation and practical application, we found some deficiencies: the interface is simple, deployment is difficult and the scope of the customer is limited, in order to adapt to all stages, all levels of the population at the same time to learn programming, the programming assistant teaching platform, which integrates individual learning module, collective learning module, competition module and online test database and meets the needs of integrated marking system, will have a broad market prospect. This system has Eagle-OJ, central test bank, grading cluster, as well as code on the Internet. The online programming assistant teaching platform has the advantages of low research and development cost, advanced technology, good interactive experience, quick deployment, etc.. This platform will make up for some deficiencies in China before, thus creates a newer and more perfect on-line programming teaching platform.
關(guān)鍵詞:在線編程教學(xué)平臺;競賽;中央題庫;交互性
Key words: online programming teaching platform;competition;central question bank;good interactivity
中圖分類號:TP302 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1006-4311(2020)08-0209-02
0 ?引言
近年來,編程教育已經(jīng)被眾多國家重視,“編程是通往未來世界的語言”,人工智能的發(fā)展是大勢所趨,未來所有行業(yè)都將隨著人工智能帶來升級與變革。ACM/ICPC是目前大學(xué)生競賽中難度最高、影響力最大的頂級賽事。但是國內(nèi)相關(guān)訓(xùn)練系統(tǒng)界面設(shè)計并不友好,目標(biāo)用戶單一;系統(tǒng)的可移植性差,服務(wù)器環(huán)境配置復(fù)雜、程序安裝步驟繁瑣,這樣無疑提高了用戶使用的門檻。因此很有必要開發(fā)以ACM競賽培訓(xùn)為主的,集個人學(xué)習(xí)模塊、集體學(xué)習(xí)模塊、競賽模塊、在線題庫、基于Docker的易于部署的集成閱卷系統(tǒng)等為一體的編程輔助教學(xué)平臺。
1 ?平臺概述
本系統(tǒng)所要求的軟硬件以及開發(fā)環(huán)境大多都是我們已經(jīng)具備的,因此不需要大多的資金,除了個別必需品需要花費。并且團(tuán)隊有較強的技術(shù)作為支持,能夠熟練運用JAVA、C等編程語言作為技術(shù)支持,并且在多個平臺系統(tǒng)都具有相應(yīng)的開發(fā)經(jīng)驗。技術(shù)層面并不存在大的問題。而且這方面的開發(fā)的雖然不少,但是能夠全面的,在原先基礎(chǔ)上再一次升華的卻并不多。
項目定位:集在線測評、綜合題庫、集成閱卷于一體的優(yōu)質(zhì)在線編程輔助教學(xué)平臺。
項目內(nèi)容:本項目是以ACM競賽訓(xùn)練為切入點進(jìn)行設(shè)計開發(fā),旨在提供快速便捷的編程訓(xùn)練平臺。本項目是服務(wù)與應(yīng)用相結(jié)合的綜合性在線編程輔助教學(xué)平臺,由Eagle-OJ系統(tǒng)和碼上網(wǎng)兩個平臺構(gòu)成。
Eagle-OJ是一個基于Docker技術(shù)開發(fā)的在線編程訓(xùn)練系統(tǒng),系統(tǒng)實現(xiàn)了做題、比賽、分組管理等功能。使用者可以基于本系統(tǒng)自行開設(shè)比賽,組建小隊,編輯題庫,進(jìn)行編程訓(xùn)練。其中比賽又細(xì)分為ACM比賽和OJ比賽,這樣可以讓用戶在日常訓(xùn)練中模擬正規(guī)比賽。管理員可以查看用戶提交的源碼,查看用戶近期數(shù)據(jù),統(tǒng)計做題情況等,這樣無疑方便了對用戶的管理,施行針對性的訓(xùn)練。另外,本系統(tǒng)提供了基于Docker技術(shù)的在線閱卷系統(tǒng),可以方便快捷的對用戶的答案進(jìn)行判斷,減輕了人工閱卷的壓力。碼上網(wǎng)是一個主要面向大眾的編程學(xué)習(xí)平臺,不同階段的用戶都可以在網(wǎng)站中學(xué)習(xí)編程類相關(guān)知識;網(wǎng)站提供各類編程類教學(xué)視頻;提供練習(xí)和測試功能,使用戶在學(xué)習(xí)之余可以通過測試來驗證學(xué)習(xí)成果;本網(wǎng)站還為高階學(xué)習(xí)人員提供算法學(xué)習(xí)的功能,開放論壇和交流功能,提供用戶通過討論學(xué)習(xí)提升編程能力等等。網(wǎng)站還會不定期的舉辦編程類比賽,并把比賽成績優(yōu)秀的人推薦給相關(guān)軟件企業(yè)。另外,相關(guān)企業(yè)也可以在本網(wǎng)站上開設(shè)比賽,以程序設(shè)計競賽的形式來選拔適合企業(yè)的編程人才。
2 ?平臺總體設(shè)計
整個平臺主要分為五大功能模塊,分別為開源編程教學(xué)系統(tǒng)Eagle-OJ,中央題庫,判卷集群,碼上網(wǎng),系統(tǒng)部署、運維。
2.1 Eagle-OJ
Eagle-OJ系統(tǒng)有小組功能、比賽功能、排行榜、個人界面、題庫等功能。小組功能主要用于課程學(xué)習(xí)等一些方面。每位用戶可以創(chuàng)建自己的小組并且開展只有小組成員可以加入的比賽,這個就和日常班級相類似,比賽也可以設(shè)置小組是否開放。比賽創(chuàng)建還可以設(shè)置這個比賽的模式。比如ACM模式,普通比賽模式等一些模式。排行榜功能真是根據(jù)本網(wǎng)站所有用戶解決題目數(shù)目的來作為排行指標(biāo)的,排行榜的前三名又會給他們一個單獨的展示區(qū)域,就如同體育競技當(dāng)中的排行類似。題庫功能的話是作為整個網(wǎng)站的題庫中心,普通用戶在都可做題,并且結(jié)果加入到排行榜當(dāng)中。題庫又可以作為創(chuàng)建比賽的時候加入到比賽當(dāng)中,如果沒有合適的題目,用戶還可以創(chuàng)建自己的題目。在用戶個人界面,可以收到和自己相關(guān)的最近通知以及查看公告欄信息。個人設(shè)置頁面可以設(shè)置自己的資料信息,創(chuàng)建題目加入小組等功能。
2.2 中央題庫
中央題庫能夠解決用戶初次搭建完系統(tǒng)內(nèi)容相對匱乏,并提供大量高質(zhì)量的題目供用戶進(jìn)行選擇。中央題庫里面包含歷年NOIP全國聯(lián)賽普及組、藍(lán)橋杯、ACM等大型比賽題目。道題目有相應(yīng)的難度系數(shù)和知識點說明,選題可以根據(jù)信息選擇自己需要的題目,然后生成題目列表文件,最后可以一鍵導(dǎo)入到Eagle-OJ系統(tǒng)中。一些高質(zhì)量題目需要支付一定的費用購買,用戶可以免費查看題目內(nèi)容,自己編寫代碼進(jìn)行測試,但只有付費購買才可以獲得此題的測試用例和標(biāo)準(zhǔn)答案。如果用戶有好的題目,可以選擇上傳并且自行定價,當(dāng)有其他用戶購買,上傳題目的人可以獲得相應(yīng)的分成。為保證題庫的質(zhì)量,項目組會對用戶上傳的每道題進(jìn)行審核,如發(fā)現(xiàn)題目無解,測試用例不完整、雷同等問題,會拒絕題目的上架,由用戶重新編輯后方可進(jìn)行再次審核。
2.3 判卷集群
判卷模塊用于判斷用戶的代碼是否正確,用戶編寫完相應(yīng)的程序代碼,將代碼按照Restful標(biāo)準(zhǔn)發(fā)送到判卷模塊,我們的判卷模塊會把用戶的代碼進(jìn)行編譯運行,然后判卷用戶的程序是否編寫正確,最后也會按照Restful標(biāo)準(zhǔn)返回判卷結(jié)果。判卷模塊基于Ubuntu進(jìn)行開發(fā),使用Linux嚴(yán)格的權(quán)限控制,有效防止惡意代碼對系統(tǒng)的正常運行產(chǎn)生影響。與判卷模塊的通訊統(tǒng)一參照Restful標(biāo)準(zhǔn),第三方開發(fā)者可以輕易的將自己的系統(tǒng)與我們的判卷模塊集成。后臺接收的請求會通過基于Flask+Gevent+GUnicorn開發(fā)的控制器。判卷模塊支持運行在Docker中,這樣能大大簡化環(huán)境配置并增強系統(tǒng)的兼容性。判卷模塊可以運行在所有支持Docker的操作系統(tǒng)上,并會在GitHub上面進(jìn)行開源,允許并鼓勵第三方開發(fā)者進(jìn)行集成或改進(jìn)。程序判定結(jié)果有如下7種:
①Accepted.——通過?。ˋC);
②Wrong Answer.——答案錯。(WA);
③RunTime Error.——程序運行出錯,意外終止等。(RTE);
④Time Limit Exceeded.——超時。程序沒在規(guī)定時間內(nèi)出答案。(TLE);
⑤Presentation Error.——格式錯。程序沒按規(guī)定的格式輸出答案。(PE);
⑥Memory Limit Exceeded.——超內(nèi)存。程序沒在規(guī)定空間內(nèi)出答案。(MLE);
⑦Compile Error.——編譯錯。程序編譯不過。(CE)。
2.4 系統(tǒng)部署、運維
系統(tǒng)部署一直都是最復(fù)雜最核心的一部分,因為硬件、操作系統(tǒng)的不同,會導(dǎo)致安裝的時候會出現(xiàn)各種難以預(yù)測的錯誤。為此,我們的系統(tǒng)基于Docker開發(fā),讓代碼編寫一次,就可以在不同環(huán)境下運行。假如當(dāng)客戶在部署、運維方面遇到問題,我們會給予用戶相關(guān)的指導(dǎo),并提供相關(guān)的優(yōu)化建議,免去用戶的煩惱而專注于網(wǎng)站的本身。
該系統(tǒng)運用到了很多的技術(shù),例如java、Vue、SpringBoot、Mysql、Docker、Python、Tomcat以及Nginx。所有系統(tǒng)最終都將部署在Docker容器里面,并且使用Docker的Swarm功能實現(xiàn)分布式。因為Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口因此它部署速度很快,而且Docker相比KVM之類最明顯的特點就是啟動快,資源占用小。
3 ?平臺的實現(xiàn)
①前期:先完善產(chǎn)品功能,推廣產(chǎn)品,逐步占領(lǐng)市場為主。首先本項目組將已研發(fā)出的產(chǎn)品——Eagle-OJ系統(tǒng)在本校與相關(guān)專業(yè)達(dá)成業(yè)務(wù)協(xié)議,進(jìn)行免費試用在教學(xué)和比賽訓(xùn)練方面,在試用階段不斷進(jìn)行功能測試并改進(jìn)。
②中期則是如果Eagle-OJ項目發(fā)展良好,項目組會開始著手碼上網(wǎng)和中央題庫的開發(fā)。
③后期本項目若能發(fā)展良好,并且有一定的資金積累。本系統(tǒng)將涉足編程教育行業(yè),緊密結(jié)合本項目現(xiàn)有的平臺資源,為中小學(xué)、各類高校、培訓(xùn)機構(gòu)實現(xiàn)教學(xué)的實時互動。將會推出移動端,方便用戶使用碎片化的時間學(xué)習(xí)編程。
4 ?結(jié)論
本文借鑒并結(jié)合現(xiàn)有編程平臺的實際需求,設(shè)計并實現(xiàn)了基于Docker技術(shù)開發(fā)的在線編程輔助教學(xué)平臺。系統(tǒng)具有Eagle-OJ、中央題庫、判卷集群等功能,具有研發(fā)成本低、技術(shù)先進(jìn)、有好的交互體驗、快捷部署等優(yōu)勢,本平臺將會彌補之前的一些國內(nèi)欠缺不足的地方,從而創(chuàng)造一個更新型更完善的在線編程教學(xué)平臺。
參考文獻(xiàn):
[1]李順.基于Docker的輕量化容器云平臺設(shè)計與實踐[J].金融科技時代,2019,10:38-40.
[2]伍陽.基于Docker的虛擬化技術(shù)研究[J].信息技術(shù),2016,01:121-123.
[3]曹郁.基于Docker容器的微服務(wù)研究與實現(xiàn)[J].科學(xué)技術(shù)創(chuàng)新,2019,28:97-98.