APP下载

基于Docker技术开发的在线编程辅助教学平台

2020-04-22金鹏

价值工程 2020年8期
关键词:交互性竞赛

金鹏

摘要:近年来,编程教育已经被众多国家重视。目前,国内也出现了如OJ,POJ等在线编程测试平台,但是通过调研以及实际的应用发现了一些不足的地方:交互界面简陋,部署方面困难以及客户人群的范围局限,因此,为了同时适应各阶段、各层次人群进行编程学习,集个人学习模块、集体学习模块、竞赛模块、在线题库同时满足易于部署的集成阅卷系统等功能为一体的编程辅助教学平台将具有广阔的市场前景。本系统具有Eagle-OJ,中央题库,判卷集群,以及码上网。在线编程辅助教学平台具有研发成本低,技术先进,有好的交互体验,快捷部署等优势,本平台将会弥补之前的一些国内欠缺不足的地方,从而创造一个更新型更完善的在线编程教学平台。

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.

关键词:在线编程教学平台;竞赛;中央题库;交互性

Key words: online programming teaching platform;competition;central question bank;good interactivity

中圖分类号:TP302                                      文献标识码:A                                  文章编号:1006-4311(2020)08-0209-02

0  引言

近年来,编程教育已经被众多国家重视,“编程是通往未来世界的语言”,人工智能的发展是大势所趋,未来所有行业都将随着人工智能带来升级与变革。ACM/ICPC是目前大学生竞赛中难度最高、影响力最大的顶级赛事。但是国内相关训练系统界面设计并不友好,目标用户单一;系统的可移植性差,服务器环境配置复杂、程序安装步骤繁琐,这样无疑提高了用户使用的门槛。因此很有必要开发以ACM竞赛培训为主的,集个人学习模块、集体学习模块、竞赛模块、在线题库、基于Docker的易于部署的集成阅卷系统等为一体的编程辅助教学平台。

1  平台概述

本系统所要求的软硬件以及开发环境大多都是我们已经具备的,因此不需要大多的资金,除了个别必需品需要花费。并且团队有较强的技术作为支持,能够熟练运用JAVA、C等编程语言作为技术支持,并且在多个平台系统都具有相应的开发经验。技术层面并不存在大的问题。而且这方面的开发的虽然不少,但是能够全面的,在原先基础上再一次升华的却并不多。

项目定位:集在线测评、综合题库、集成阅卷于一体的优质在线编程辅助教学平台。

项目内容:本项目是以ACM竞赛训练为切入点进行设计开发,旨在提供快速便捷的编程训练平台。本项目是服务与应用相结合的综合性在线编程辅助教学平台,由Eagle-OJ系统和码上网两个平台构成。

Eagle-OJ是一个基于Docker技术开发的在线编程训练系统,系统实现了做题、比赛、分组管理等功能。使用者可以基于本系统自行开设比赛,组建小队,编辑题库,进行编程训练。其中比赛又细分为ACM比赛和OJ比赛,这样可以让用户在日常训练中模拟正规比赛。管理员可以查看用户提交的源码,查看用户近期数据,统计做题情况等,这样无疑方便了对用户的管理,施行针对性的训练。另外,本系统提供了基于Docker技术的在线阅卷系统,可以方便快捷的对用户的答案进行判断,减轻了人工阅卷的压力。码上网是一个主要面向大众的编程学习平台,不同阶段的用户都可以在网站中学习编程类相关知识;网站提供各类编程类教学视频;提供练习和测试功能,使用户在学习之余可以通过测试来验证学习成果;本网站还为高阶学习人员提供算法学习的功能,开放论坛和交流功能,提供用户通过讨论学习提升编程能力等等。网站还会不定期的举办编程类比赛,并把比赛成绩优秀的人推荐给相关软件企业。另外,相关企业也可以在本网站上开设比赛,以程序设计竞赛的形式来选拔适合企业的编程人才。

2  平台总体设计

整个平台主要分为五大功能模块,分别为开源编程教学系统Eagle-OJ,中央题库,判卷集群,码上网,系统部署、运维。

2.1 Eagle-OJ

Eagle-OJ系统有小组功能、比赛功能、排行榜、个人界面、题库等功能。小组功能主要用于课程学习等一些方面。每位用户可以创建自己的小组并且开展只有小组成员可以加入的比赛,这个就和日常班级相类似,比赛也可以设置小组是否开放。比赛创建还可以设置这个比赛的模式。比如ACM模式,普通比赛模式等一些模式。排行榜功能真是根據本网站所有用户解决题目数目的来作为排行指标的,排行榜的前三名又会给他们一个单独的展示区域,就如同体育竞技当中的排行类似。题库功能的话是作为整个网站的题库中心,普通用户在都可做题,并且结果加入到排行榜当中。题库又可以作为创建比赛的时候加入到比赛当中,如果没有合适的题目,用户还可以创建自己的题目。在用户个人界面,可以收到和自己相关的最近通知以及查看公告栏信息。个人设置页面可以设置自己的资料信息,创建题目加入小组等功能。

2.2 中央题库

中央题库能够解决用户初次搭建完系统内容相对匮乏,并提供大量高质量的题目供用户进行选择。中央题库里面包含历年NOIP全国联赛普及组、蓝桥杯、ACM等大型比赛题目。道题目有相应的难度系数和知识点说明,选题可以根据信息选择自己需要的题目,然后生成题目列表文件,最后可以一键导入到Eagle-OJ系统中。一些高质量题目需要支付一定的费用购买,用户可以免费查看题目内容,自己编写代码进行测试,但只有付费购买才可以获得此题的测试用例和标准答案。如果用户有好的题目,可以选择上传并且自行定价,当有其他用户购买,上传题目的人可以获得相应的分成。为保证题库的质量,项目组会对用户上传的每道题进行审核,如发现题目无解,测试用例不完整、雷同等问题,会拒绝题目的上架,由用户重新编辑后方可进行再次审核。

2.3 判卷集群

判卷模块用于判断用户的代码是否正确,用户编写完相应的程序代码,将代码按照Restful标准发送到判卷模块,我们的判卷模块会把用户的代码进行编译运行,然后判卷用户的程序是否编写正确,最后也会按照Restful标准返回判卷结果。判卷模块基于Ubuntu进行开发,使用Linux严格的权限控制,有效防止恶意代码对系统的正常运行产生影响。与判卷模块的通讯统一参照Restful标准,第三方开发者可以轻易的将自己的系统与我们的判卷模块集成。后台接收的请求会通过基于Flask+Gevent+GUnicorn开发的控制器。判卷模块支持运行在Docker中,这样能大大简化环境配置并增强系统的兼容性。判卷模块可以运行在所有支持Docker的操作系统上,并会在GitHub上面进行开源,允许并鼓励第三方开发者进行集成或改进。程序判定结果有如下7种:

①Accepted.——通过!(AC);

②Wrong Answer.——答案错。(WA);

③RunTime Error.——程序运行出错,意外终止等。(RTE);

④Time Limit Exceeded.——超时。程序没在规定时间内出答案。(TLE);

⑤Presentation Error.——格式错。程序没按规定的格式输出答案。(PE);

⑥Memory Limit Exceeded.——超内存。程序没在规定空间内出答案。(MLE);

⑦Compile Error.——编译错。程序编译不过。(CE)。

2.4 系统部署、运维

系统部署一直都是最复杂最核心的一部分,因为硬件、操作系统的不同,会导致安装的时候会出现各种难以预测的错误。为此,我们的系统基于Docker开发,让代码编写一次,就可以在不同环境下运行。假如当客户在部署、运维方面遇到问题,我们会给予用户相关的指导,并提供相关的优化建议,免去用户的烦恼而专注于网站的本身。

该系统运用到了很多的技术,例如java、Vue、SpringBoot、Mysql、Docker、Python、Tomcat以及Nginx。所有系统最终都将部署在Docker容器里面,并且使用Docker的Swarm功能实现分布式。因为Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口因此它部署速度很快,而且Docker相比KVM之类最明显的特点就是启动快,资源占用小。

3  平台的实现

①前期:先完善产品功能,推广产品,逐步占领市场为主。首先本项目组将已研发出的产品——Eagle-OJ系统在本校与相关专业达成业务协议,进行免费试用在教学和比赛训练方面,在试用阶段不断进行功能测试并改进。

②中期则是如果Eagle-OJ项目发展良好,项目组会开始着手码上网和中央题库的开发。

③后期本项目若能发展良好,并且有一定的资金积累。本系统将涉足编程教育行业,紧密结合本项目现有的平台资源,为中小学、各类高校、培训机构实现教学的实时互动。将会推出移动端,方便用户使用碎片化的时间学习编程。

4  结论

本文借鉴并结合现有编程平台的实际需求,设计并实现了基于Docker技术开发的在线编程辅助教学平台。系统具有Eagle-OJ、中央题库、判卷集群等功能,具有研发成本低、技术先进、有好的交互体验、快捷部署等优势,本平台将会弥补之前的一些国内欠缺不足的地方,从而创造一个更新型更完善的在线编程教学平台。

参考文献:

[1]李顺.基于Docker的轻量化容器云平台设计与实践[J].金融科技时代,2019,10:38-40.

[2]伍阳.基于Docker的虚拟化技术研究[J].信息技术,2016,01:121-123.

[3]曹郁.基于Docker容器的微服务研究与实现[J].科学技术创新,2019,28:97-98.

猜你喜欢

交互性竞赛
竞赛书目推荐
2020丝绸之路数学竞赛
我看竞赛
科普网站交互性对科普传播影响研究