README.md 4.1 KB
Newer Older
幻灰龙's avatar
幻灰龙 已提交
1 2
# skill_tree_toolchains

CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
全栈工具链


## 初始化

```
pip install -r requirements.txt
```


## 目录结构说明

* 技能树`骨架文件`
    * 位置:`data/tree.json` 
    * 说明:该文件是执行 `python main.py` 生成的,请勿人工编辑
* 技能树`根节点`配置文件:
    * 位置:`data/config.json`
    * 说明:可编辑配置关键词等字段,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`难度节点`
    * 位置:`data/xxx`,例如: `data/1.toolchains初阶`
    * 说明:
        * 每个技能树有 3 个等级,目录前的序号是必要的,用来保持文件夹目录的顺序
        * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`章节点`
    * 位置:`data/xxx/xxx`,例如:`data/1.toolchains初阶/1.git`
    * 说明:
        * 每个技能树的每个难度等级有 n 个章节,目录前的序号是必要的,用来保持文件夹目录的顺序
        * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`知识节点`
    * 位置:`data/xxx/xxx/xxx`,例如:`data/1.toolchains初阶/1.git/3.push修改到远程创库`
    * 说明:
        * 每个技能树的每章有 `n` 个知识节点,目录前的序号是必要的,用来保持文件夹目录的顺序
        * 每个目录下有一个 `config.json`
            * 其中 `node_id` 字段是生成的,请勿编辑
            * 其中 `keywords` 可配置关键字字段
            * 其中 `children` 可配置该`知识节点`下的子树结构信息,参考后面描述
            * 其中 `export` 可配置该`知识节点`下的导出习题信息,参考后面描述


## `知识节点` 子树信息结构

例如 `data/1.toolchains初阶/1.git/4.push修改到远程创库/config.json` 里配置对该知识节点子树信息结构:
```json
{
    // ...

    "children": [
        // TODO ...
    ],
}
```



## `知识节点` 的导出习题编辑

例如 `data/1.toolchains初阶/1.git/4.push修改到远程创库/config.json` 里配置对该知识节点导出的习题

```json
{
    // ...
    "export": [
M
Mars Liu 已提交
65
        "hello.sh"
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
66 67 68 69 70 71 72 73 74 75 76
    ]
}
```

格式说明:
* `file`: 指定该目录下的习题源文件
* `variants`: 指定习题同名的json选项配置文件,参考下一节
* `depends`: 如果习题依赖同目录下的其他习题源代码,则在此字段里配置依赖的其他习题源文件名

## `知识节点` 的导出习题选项配置编辑

M
Mars Liu 已提交
77
如前内容,我们在知识节点下增加一个习题定义,例如在 `data/1.toolchains初阶/1.git/4.push修改到远程创库` 下增加一个`hello.json`代码:
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
78 79 80 81 82

```json
{
    "type": "code_options",
    "author": "刘鑫",
M
Mars Liu 已提交
83 84
    "source": "hello.md",
    "notebook_enable": false
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
85 86
}
```
M
Mars Liu 已提交
87
其中 type 字段目前都固定是 `code_options`。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为:
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

````markdown
# Hello World


以下 `Hello World` 代码中,能够正确提交代码到远程maste仓库的是:

## 答案

```console
$ git add README.txt
$ git commit -m "first modify README.txt"
$ git push origin master
```

## 选项

M
Mars Liu 已提交
105
### add 子命令错误
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
106 107 108 109 110 111 112 113

```console
// HelloWord.1.sh
$ git put README.txt
$ git commit -a "first modify README.txt"
$ git push origin master
```

M
Mars Liu 已提交
114
### commit 子命令错误
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
115 116 117 118 119 120 121

```console
$ git add README.txt
$ git base -m "first modify README.txt"
$ git pull origin master
```

M
Mars Liu 已提交
122 123 124 125 126 127 128
### push 子命令错误

```console
$ git add README.txt
$ git commit -m "first modify README.txt"
$ git pull origin master
```
CSDN-Ada助手's avatar
CSDN-Ada助手 已提交
129 130 131 132 133 134 135

````

这是一个最基本的习题结构,它包含标题、答案、选项,注意这几个一级和二级标题必须填写正确,解释器会读取这几个标题。而选项的标题会被直接忽略掉,在
最终生成的习题中不包含选项的三级标题,所以这个标题可以用来标注一些编辑信息,例如“此选项没有关闭文件连接”,“类型错误”等等。