一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在线编程实验与开源项目贡献转化方法和装置与流程

2022-07-02 07:48:59 来源:中国专利 TAG:


1.本技术涉及软件工程领域,特别是涉及一种在线编程实验与开源项目贡献转化方法和装置。


背景技术:

2.自20世纪90年代以来,国际开源运动蓬勃兴起,诞生了一大批如linux、git等改变世界的优秀开源项目,为软件产业发展注入了新的活力和带来了巨大的发展机遇。我国的开源运动起源较晚,虽然近年来开源产业发展迅速,涌现出了一批优秀开源项目如spring cloud alibaba,但发展水平和发展规模与国际开源产业还存在一定差距。开源社区作为开源运动赖以生存的土壤,其维持是依靠开源软件开发人员参与并做出贡献。我国虽已成为软件开发人员数量大国,但其中了解开源、具备开源开发技能、熟悉开源开发流程、参与开源项目的人才还相对较少。据2020年github数据统计,github学生用户中有32%为美国学生,而中国学生仅占2%。因此要促进我国开源项目的发展,就需要吸引大规模具备专业技能的开发者参与到开源项目中。
3.编程实践项目类课程在计算机相关专业中非常重要。随着计算机科学技术的发展与“硬件软化”技术在计算机领域的应用,基于在线项目的实践学习方式逐渐大众化。目前,诸多实践教学平台都采用了“理论课程—项目实践”一体化教学体系,提供了实践项目环节,例如educoder、牛客网等。这类实践教学平台吸引了大批学生的参与并产生了大量项目成果,然而这些项目通常与实际项目有较大差异,这些课程项目产生的代码难以产生其他实际效益,无法有效利用这些成果;除此之外,学生参与完课程项目实践后缺乏机会进一步学习实践,导致学习难以深入和难以应用于实际开发中,不利于我国培养具备工程能力的科技人才。我国开源项目参与度不高及开源人才不足的问题和实践教学平台实践项目参与度高但项目“不接地气”和难以利用的问题,如何将在线编程实验与开源项目代码贡献衔接和转化,充分利用实践教学平台中学生的能力与技术,吸引大规模学生参与并提交代码贡献,成为了一个亟待解决的技术问题。
4.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

5.本发明的主要目的在于提供了一种在线编程实验与开源项目贡献转化方法和装置,旨在解决现有技术无法将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展的技术问题。
6.为实现上述目的,本发明提供了一种在线编程实验与开源项目贡献转化方法,所述方法包括:
7.获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
8.新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关
联;
9.提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务;
10.将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
11.在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库;
12.在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息。
13.可选地,所述获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库的步骤,包括:
14.获取目标开源项目并根据所述目标开源项目创建在线编程实验,为所述在线编程实验配置对应的指导和说明;
15.根据所述在线编程实验创建在线编程实验代码仓库。
16.可选地,所述提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务的步骤,包括:
17.提取所述目标开源项目issue信息;
18.根据所述issue信息构建训练数据集;
19.根据所述训练数据集获取元组数据列表l,并根据所述元组数据列表l结合逻辑回归算法构建预测模型m;
20.将所述issue输入至所述预测模型m中以进行难度预测;
21.根据所述难度预测结果创建在线编程实验关卡任务。
22.可选地,所述提取所述目标开源项目issue信息的步骤,包括:
23.根据目标开源项目中的主题筛选github中开源项目,并提取star r≥10的项目,通过github rest api获取项目中的issue;
24.使用github api提取并处理issue信息,其中issue属性信息包括:issue所属的项目信息:repository_url,full_name,owner,description,languages,events、issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart以及issue内容信息包括:title,events,comments,body,title,reactions;
25.将每条issue的信息组织成一个属性元组ta。
26.可选地,所述根据所述issue信息构建训练数据集的步骤,包括:
27.根据所述issue属性信息以及issue内容信息判断当前issue难度;
28.若issue中reactions_confused数量超过预设阈值,则判定难度高并用1表示;
29.若否,则判定难度低并用0表示;
30.根据判定结果整合元组和标签以获得训练数据集。
31.可选地,所述在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库的步骤之前,还包括:
32.在接收到在线编程实验代码仓库中的pr之后,触发对应的自动测试工作流;
33.判断是否通过自动测试;
34.若通过,则执行在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库的步骤。
35.可选地,所述在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息的步骤,包括:
36.在检测到学习者发送的学习完成指令时,获取当前学习者的学习结果;
37.根据所述学习结果判断所述当前学习者是否合格;
38.若否,则推送所述目标开源项目issue信息并提示是否需要进一步学习。
39.此外,为实现上述目的,本发明还提出一种在线编程实验与开源项目贡献转化装置,所述装置包括:
40.项目获取模块,用于获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;
41.项目关联模块,用于新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;
42.信息提取模块,用于提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务;
43.关卡推送模块,用于将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;
44.pr提交模块,用于在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库;
45.学习结果模块,用于在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息。
46.此外,为实现上述目的,本发明还提出一种介质,所述介质上存储有在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序被处理器执行时实现如上文所述的在线编程实验与开源项目贡献转化方法的步骤。
47.本发明通过获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务;将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库;在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息,实现了将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展。
附图说明
48.图1是本发明实施例方案涉及的硬件运行环境的在线编程实验与开源项目贡献转化设备的结构示意图;
49.图2为本发明在线编程实验与开源项目贡献转化方法第一实施例的流程示意图。
具体实施方式
50.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
51.参照图1,图1为本发明实施例方案涉及的硬件运行环境的在线编程实验与开源项目贡献转化设备结构示意图。
52.如图1所示,该在线编程实验与开源项目贡献转化设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
53.本领域技术人员可以理解,图1中示出的结构并不构成对在线编程实验与开源项目贡献转化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
54.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及在线编程实验与开源项目贡献转化程序。
55.在图1所示的在线编程实验与开源项目贡献转化设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明在线编程实验与开源项目贡献转化设备中的处理器1001、存储器1005可以设置在在线编程实验与开源项目贡献转化设备中,所述在线编程实验与开源项目贡献转化设备通过处理器1001调用存储器1005中存储的在线编程实验与开源项目贡献转化程序,并执行本发明实施例提供的在线编程实验与开源项目贡献转化方法。
56.本发明实施例提供了一种在线编程实验与开源项目贡献转化方法,参照图2,图2为本发明在线编程实验与开源项目贡献转化方法第一实施例的流程示意图。
57.本实施例中,所述在线编程实验与开源项目贡献转化方法包括以下步骤:
58.步骤s10:获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库。
59.需要说明的是,本实施例的技术方案包括以下步骤:步骤1、基于已有开源项目创建在线编程实验代码仓库;步骤2、关联开源项目仓库与在线编程实验代码仓库;步骤3、提取开源项目issue信息,根据issue属性信息及内容信息构建issue难度分类模型,进而根据issue的难度关联在线编程实验关卡任务;步骤4、推送学习者关卡任务代码至在线编程实验代码仓库;步骤5、在在线编程实验代码仓库自动创建pr并提交至开源项目;步骤6、完成在线编程实验后推送学习者相关的开源项目issue。
60.可以理解的是,步骤1中所述的具体执行以下步骤:步骤11、根据已有的开源项目创建相关在线编程实验,该在线编程实验应提供相应的指导与说明;步骤12、为步骤11中的在线编程实验创建代码版本仓库。
61.需要说明的是,步骤3中所述的具体执行以下步骤:步骤31、训练数据采集:搜集及整理issue相关因素;步骤32、训练数据标注;基于步骤31中的数据构建训练数据集;步骤33、模型训练:基于步骤32得到的元组数据列表l,结合逻辑回归算法构建预测模型m;步骤34、结果预测:根据步骤32得到的预测模型m,搜集待预测issue信息,进行难度预测;步骤35、根据issue难度的不同,关联开源项目issue与在线编程实验关卡任务,有两种在线编程
实验关卡任务的组织形式:对于难度较低,学生有预备知识或技术的issue,在线编程实验关卡任务的内容为关联的开源项目issue;对于难度较高,学生无相关预备知识或技术的issue,在线编程实验关卡任务的内容完成该issue所需的相关知识及技术的学习。
62.在具体实施中,步骤311、选择训练所需issue。根据待发布编程实验的主题筛选github中开源项目,提取其中star≥10的项目,通过github rest api获取项目中的issue;步骤312、搜集issue相关信息:使用github api提取并处理issue的相关信息。本专利考虑了issue属性信息及issue内容信息。issue属性信息包括:issue所属的项目信息:repository_url,full_name,owner,description,languages,events;issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart。issue内容信息包括:title,events,comments,body,title,reactions。步骤313、整合信息。将每条issue的信息组织成一个属性元组ta;步骤321、根据步骤31中issue属性信息及issue内容信息,通过人工标注将issue进行难度分类。将难度较低(如reactions_confused数量少)或issue及项目文档完整详实的项目划分为低难度issue类别,用0表示;将难度较高(如reactions_confused数量多)或issue及项目文档简略的项目划分为高难度issue类别,用1表示;
63.可以理解的是,步骤322、整合信息。将步骤31中得到的元组与标签整合成新的元组l,构成训练数据。
64.在具体实施中,步骤331、模型训练。根据步骤32得到的训练数据,结合逻辑回归算法构建预测模型m[https://www.jianshu.com/p/ed084d1f7241]。步骤341、获取预测数据,根据github api获取当前issue的各类信息;步骤342、根据步骤31,整合该issue的属性,形成预测所需数据元组ti;步骤343、模型预测:将数据元组ti输入步骤33得到的预测模型m,输出预测结果(当前issue的内容是否可以直接作为实验关卡内容)。
[0065]
需要说明的是,步骤4中所述的具体执行以下步骤:步骤41、学习者完成任务关卡后,提交任务关卡代码至实践教学平台;步骤42、使用webhook等技术自动推送学习者关卡任务代码至在线编程实验代码仓库。
[0066]
需要说明的是,步骤5中所述的具体执行以下步骤:步骤51、针对步骤31中直接关联开源项目issue的在线编程使用关卡任务,当任务关卡代码被提交至在线编程实验代码仓库后,触发对应的自动测试工作流;步骤52、若通过自动化测试工作流,在在线编程实验代码仓库自动创建pr并提交至相关联的开源项目。
[0067]
在具体实施中,步骤6中所述的具体执行以下步骤:步骤61、针对步骤31中在线编程实验关卡任务的学习内容为完成开源项目issue所需的相关知识及技术,学生完成该关卡任务后,实践教学平台推送相关联的开源项目issue给学生,学生可根据兴趣和需要选择是否进一步为该开源项目做贡献。
[0068]
进一步地,获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库的步骤,包括:获取目标开源项目并根据所述目标开源项目创建在线编程实验,为所述在线编程实验配置对应的指导和说明;根据所述在线编程实验创建在线编程实验代码仓库。
[0069]
步骤s20:新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联。
[0070]
步骤s30:提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实
验关卡任务。
[0071]
进一步地,所述提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务的步骤,包括:提取所述目标开源项目issue信息;根据所述issue信息构建训练数据集;根据所述训练数据集获取元组数据列表l,并根据所述元组数据列表l结合逻辑回归算法构建预测模型m;将所述issue输入至所述预测模型m中以进行难度预测;根据所述难度预测结果创建在线编程实验关卡任务。
[0072]
进一步地,所述提取所述目标开源项目issue信息的步骤,包括:根据目标开源项目中的主题筛选github中开源项目,并提取star r≥10的项目,通过github rest api获取项目中的issue;使用github api提取并处理issue信息,其中issue属性信息包括:issue所属的项目信息:repository_url,full_name,owner,description,languages,events、issue元信息:user_id,state,locked,milestone,created_at,update_at,closed_at,reactions_count,reactions_confused,reactions_eyes,reactions_heart以及issue内容信息包括:title,events,comments,body,title,reactions;将每条issue的信息组织成一个属性元组ta。
[0073]
进一步地,所述根据所述issue信息构建训练数据集的步骤,包括:根据所述issue属性信息以及issue内容信息判断当前issue难度;若issue中reactions_confused数量超过预设阈值,则判定难度高并用1表示;若否,则判定难度低并用0表示;根据判定结果整合元组和标签以获得训练数据集。
[0074]
步骤s40:将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中。
[0075]
步骤s50:在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库。
[0076]
进一步地,所述在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库的步骤之前,还包括:在接收到在线编程实验代码仓库中的pr之后,触发对应的自动测试工作流;判断是否通过自动测试;若通过,则执行在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库的步骤。
[0077]
步骤s60:在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息。
[0078]
进一步地,所述在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息的步骤,包括:在检测到学习者发送的学习完成指令时,获取当前学习者的学习结果;根据所述学习结果判断所述当前学习者是否合格;若否,则推送所述目标开源项目issue信息并提示是否需要进一步学习。
[0079]
本实施例通过获取目标开源项目并根据所述目标开源项目创建在线编程实验代码仓库;新建开源项目仓库并将所述开源项目仓库与所述在线编程实验代码仓库进行关联;提取所述目标开源项目issue信息,根据所述issue信息创建在线编程实验关卡任务;将所述在线编程实验关卡任务推送至所述在线编程实验代码仓库中;在所述在线编程实验代码仓库中获取pr并提交至所述开源项目仓库;在检测到学习者发送的学习完成指令时,推送所述目标开源项目issue信息,实现了将复杂的开源项目开发任务转换为在线编程实验任务,从而吸引大规模学生参与并提交代码贡献,促进开源项目的发展。
[0080]
此外,本发明实施例还提出一种介质,所述介质上存储有在线编程实验与开源项目贡献转化程序,所述在线编程实验与开源项目贡献转化程序被处理器执行时实现如上文
所述的在线编程实验与开源项目贡献转化方法的步骤。
[0081]
本发明在线编程实验与开源项目贡献转化装置的实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
[0082]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0083]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0084]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0085]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献