-
-
Notifications
You must be signed in to change notification settings - Fork 12
开源软件供应链点亮计划 暑期2021 | Summer 2021 of Open Source Promotion Plan
今年,中科院软件所与华为 openEuler 项目共同举办了 “开源软件供应链点亮计划——暑期2021” 项目。该项目与 Google Summer of Code 形式类似:开源社区提供项目需求并提供导师(mentor),在校学生利用暑期时间进行开发,主办方为顺利完成的项目提供一定额度的奖金。无论 GSoC 还是这次的“点亮计划”,都是一种非常好的开源实践范式,能够有效地增进高校学生对开源的理解、增加与真实社区的接触,并积累宝贵的经验。
感谢上方来自 TUNA 的文案
讨论区: https://github.com/EduOJ/backend/discussions/80
项目编号:210110012
现在OJ注册时输入的邮箱仅用于登录,缺失邮件验证/邮件通知/邮件重置密码等功能。 请调研并比较邮件相关库/HTML模板库,实现一个注册时邮件验证/邮件通知/邮件重置密码功能。
参考: https://github.com/go-gomail/gomail https://github.com/go-mail/mail
- 用户注册时(管理员可配置是否要求)需要邮箱认证
- 通过邮件重置密码
- 基于现有的Event/Hook系统,实现邮件通知接口。
- 后端代码DIFF测试覆盖率100%,符合社区命名、代码风格规范
项目导师:Leo 联系方式:[email protected]
项目编号:210110275
现在OJ的前端编辑器和后端/评测机均只支持单文件评测。对于C++工程(如要求学生自己实现Vector/List/Map)只能粘贴到同一个文件中,对于Java工程的评测也不方便。请你设计/实现多文件(项目)评测支持。
- 实现多文件提交/评测
- 给出C++/Java的评测脚本
- 后续可拓展别的语言
- 后端代码DIFF测试覆盖率100%,符合社区命名、代码风格规范
项目导师:Leo 联系方式:[email protected]
项目编号: 210110278
现在同学在题目列表能看到有关题目的信息只有名称。需要实现一个题目标签(如选择结构/分支结构/循环结构/递归等语言结构,链表/顺序表等算法结构)系统,并可高效的按照标签查找题目(如查找有链表、图论的题目)。 需要实现一个题目讨论区。可以在讨论区内发言,用#id的方式来提到另一道题目,用@username的方式来@用户。可以评论讨论区内的讨论。可选支持任意级评论。 需要实现一个题目/讨论区的赞/踩功能,可参考github的issue里评论赞/火箭等emoji的实现方式。
- 实现题目tag系统
- 实现题目讨论区系统
- 实现题目赞/踩系统
- 后端代码DIFF测试覆盖率100%,符合社区命名、代码风格规范
项目导师:Leo 联系方式:[email protected]
-
项目主导师:Sun123t2
-
项目联合导师:Leo
-
项目描述:
目前的EduOJ缺乏一个通知系统。我们期望实现一个可由用户配置渠道偏好的通知系统,具体需求如下: 1.实现通知渠道偏好设置。用户可设置其偏好的通知渠道。 2.设计通知接口,该接口每次调用时,给指定用户,按其偏好渠道发送一条通知。本接口需在通知系统中实现,供通知发送者调用。 3.设计通知渠道接口,该接口每次调用时,给指定用户,从特点渠道发送一条通知。本接口由他人实现,在通知系统中调用。
注:接口请在proposal中完成设计,在项目开始后开会讨论修改,并决定使用的最终版本
-
难度:中
-
项目标签:Go、Database、Notification System
-
领域标签:Web、Notification System
-
项目产出要求:
- 实现通知形式偏好设置
- 设计并实现通知接口、设计通知渠道接口
- 实现与讨论区、email通知联动
- 基于现有的Event/Hook系统
-
项目技术要求:
- 后端代码测试覆盖率70%以上
- 命名/文档/注释复合社区规范
-
语言:仅中文
-
项目名称:重构任务系统
-
项目主导师:Sun123t2
-
项目联合导师:Leo
-
项目描述:
目前的EduOJ评测机仅接收评测提交一种任务,每次任务对应一个Run(一个提交中一个测试点的测试任务)。这种结构约束了评测机的功能。我们期望评测机可以同时完成代码查重、输出对比等更多功能,因此需要重构任务系统。 1.当前任务队列以Run为元素,创建类Task以及元素为Task的任务队列,代替Run的任务队列 2.任务队列使用数据库实现,保证程序中断不会丢失任务数据 3.修改现评测机和后端交流的API及两端相关代码,以适配不同种类的任务(不仅是Run) 4.整体操作是对于原有评测任务的一次重构,在支持其他种任务的同时,不应改变原有评测任务的功能
-
难度:高
-
项目标签:Go、Database
-
领域标签:Web
-
项目产出要求:
- 新建类Task,并使用数据库实现以Task为元素的任务队列
- 修改评测机与后端交流的API及相关功能,支持多种任务
- 保证原有评测任务的功能不变
-
项目技术要求:
- 后端代码测试覆盖率70%以上
- 命名/文档/注释复合社区规范
项目ID: 210110782
本项目的终极目标是实现一个可以运行c/c++程序的“在线ide”。 需要提供编译/运行代码功能,支持输入输出。 鉴于项目难度较高,给出部分实现方案:
- 基于 https://github.com/binji/wasm-clang 实现在前端把c/c++代码编译为WebAssembly代码
- 基于项目联合导师的PR https://github.com/binji/wasm-clang/pull/6 提供的输入支持,封装成一个可以直接调用的库
- 和当前的代码编辑器整合,提供运行代码、获取输出功能。
- (可选)基于asyncify实现用户实时交互的输入。(当前只能在运行程序前处理好输入)
- 封装wasm-clang,提供一个单独的编译/运行 c/c++的 npm 包
- 整合npm包到当前的代码编辑器中