开源软件第二次作业

这个作业的要求是: https://bbs.csdn.net/topics/608215808

我提问的开源项目是:CSDN 技术社区 / skill_tree_opensource · GitCode

在提供的几个项目中,Python会比较熟悉,就选择了技能树来 fork 使用学习。

文章目录

    • 问题1
    • 问题2
    • 问题3
    • 问题4
    • 问题5

问题1

其实刚开始有点雾,没看太懂这个项目能在做什么,和技能树有什么关系,完成了什么内容。我觉得 README.md 中可以加一段话(可能写的不是很好)来讲明这个项目:

要快速对项目进行了解,我们或许需要通过直观先来看看技能树做了什么。这里有一个具体的技能树项目:入门技能树 (csdn.net),使用后,我们可以发现:技能树提供了一个高效的学习环境,通过题目来对知识点进行熟悉。

而我们的项目( skill_tree_opensource · GitCode )在这里做些什么?我们可以用Markdown文件来编写不同章节、不同难度、不同知识点的题目并自动的生成 json 文件,从而方便了我们创造自己的题目。

对于Markdown的修改已经PR。

问题2

我创建了一些题目,发现生成的 json 文件中,还留有一个author自动为 null,我们是否可以在 Markdown 编写时就加入作者信息?对此我进行了源码的阅读,在ensure_exercises_meta函数中找的了meta的初始化,最终定位到了一个 user_name 的函数。

{
  "author": null,
   ……
}

def ensure_exercises_meta(self, meta_path, source, md_file){
    ……
        if meta is None:
            meta = {
                "type": "code_options",
                "author": user_name(md_file, self.authors),
                "source": source,
                "notebook_enable": self.default_notebook(),
                "exercise_id": uuid.uuid4().hex
            }
    ……
}


def user_name(md_file, author_dict):
    ret = subprocess.Popen([
        "git", "log", md_file
    ], stdout=subprocess.PIPE)
    lines = list(map(lambda l: l.decode(), ret.stdout.readlines()))
    author_lines = []
    for line in lines:
        if line.startswith('Author'):
            author_lines.append(line.split(' ')[1])
    print(author_lines)
    if len(author_lines) == 0:
        return None
    author_nick_name = author_lines[-1]
    return search_author(author_dict, author_nick_name)

user_name函数中,我发现了一个 Author,好像是有添加作者的方法的,但是多次尝试后,没有成功,发现lines拿到的输出一直是空,受限于能力,没有更改相关的内容,希望后续可以得到解答(其实也不太能确定是这里)。

问题3

题目的难度如何评定?而且题目可以由众多用户自发提起,我们是如何对题目的难度、题目的类别进行审核呢?是会使用人工审核的方式吗,评审的尺度又如何去把握?我觉得这是技能树在后续想要 “散叶” 的一个重要问题。

合理的分类是技能树发展的必要考虑。

问题4

现在只能表明正确的选项,后续是否考虑添加:题目解答?可以由问题提供者自由选择是否为题目添加详细解答。我们可以查看现有的技能树入门技能树 (csdn.net),虽然有讨论区,但是每个问题都要返回讨论区,还要在众多的帖子中挑选,这并不是一个方便的途径。

我觉得可以考虑添加 解答功能,由题目提供者自由选择 是否提供解答。

问题5

现在添加题目后,删除题目很麻烦。

情形是如下的:我们新建一个题目,test.md,在第一次运行后,生成了一个 test.json。此时,若我们想删除这个题目,我们是要删除test.mdtest.json的,但是此时就需要我们手动删除 config.json 中的test.json

开源软件第二次作业_第1张图片

config.json
{
  "keywords": [],
  "children": [],
  "export": [
    "test.json"
  ],
  "keywords_must": [],
  "keywords_forbid": [],
  "group": 0,
  "node_id": "opensource-7906cf0502ee44d0a36474485d4ff6b6"
}

否则程序就会无法正常运行。我觉得可以考虑在删除文件后如何自动的修改config.json

你可能感兴趣的:(开源软件,python,开发语言)