README.md
CSDN 技能森林
本仓库是技能树森林的 RFC(Request for Comments) 仓库。提议请在 rfc/ 目录下创建文档,例如 rfc_001.md
如何参与贡献
- 贡献方式
- 仓库说明
- 技能森林分为
技能树开放编辑仓库
和CSDN技能树线上社区
- 其中
技能树开放编辑仓库
采用 MIT 或者 CC4 开源协议,是开源项目仓库部分 - 其中
CSDN技能树线上社区
为CSDN产品
- 其中
- 贡献者基于
技能树开放编辑仓库
图谱数据之上的进一步延伸开发,应遵循对应协议要求
- 技能森林分为
技能树仓库和技能树社区
- 一个技能树仓库的章节结构和习题就绪时,则上线初版的技能树社区
开放编辑仓库 | 上线的技能树社区 | 状态 | |
---|---|---|---|
1 | 每日一题技能树编辑仓库 | 每日一练 | ✓ |
2 | CS入门技能树仓库 | CS入门技能树社区 | ✓ |
3 | Python技能树编辑仓库 | Python技能树社区 | ✓ |
4 | C语言技能树编辑仓库 | C语言技能树社区 | ✓ |
5 | Java技能树编辑仓库 | Java技能树社区 | ✓ |
6 | 算法(algorithm)技能树编辑仓库 | 算法技能树社区 | ✓ |
7 | PostgreSQL技能树编辑仓库 | PostgreSQL技能树社区 | ✓ |
8 | OpenCV技能树编辑仓库 | OpenCV技能树社区 | ✓ |
9 | Neo4j技能树编辑仓库 | Neo4j技能树社区 | ✓ |
10 | 云原生入门技能树 | 云原生入门技能树 | ✓ |
11 | 网络技能树 | 网络技能树社区 | ✓ |
12 | CUDA入门技能树 | CUDA入门技能树社区 | ✓初/中阶已上线 |
13 | Vue入门技能树 | Vue入门技能树社区 | ✓初/中阶已上线 |
14 | MySQL入门技能树(初/中阶段) | MySQL入门技能树社区 | ✓ |
15 | MySQL进阶技能树(中/高阶) | MySQL进阶技能树社区 | ✓ |
16 | Go语言技能树 | Go技能树社区 | ✓ |
17 | 游戏开发入门技能树 | ||
18 | Scheme语言技能树 | ||
19 | Scala技能树 | ||
20 | Spark技能树 | ||
21 | .NET技能树 | . | |
22 | Rust技能树 | . | |
23 | Web开发入门技能树 | ||
24 | Web实战技能树 | ||
25 | AI技能树 | ||
26 | 面向对象程序设计技能树 | ||
27 | 开源软件开发技能树 | ||
28 | OceanBase技能树 | ||
29 | DevOps运维技能树 | ||
30 | 搜索技能树 | ||
31 | 小程序技能树 | 小程序技能树社区 | ✓ |
32 | Oracle技能树 | ||
33 | 云开发设计模式技能树 |
技能树服务构建项目
技能树数据处理的流水线如下:
技能树开放编辑仓库
--> 技能树命令行工具
--> 技能树服务
其中不同环节的仓库如下:
-
技能树开放编辑仓库
就是每个领域的编辑仓库。 - 而
技能树命令行工具
和技能树服务
会分别创建两个独立的仓库 - 实现上,
技能树命令行工具
和技能树服务
都会有一些对技能树编辑仓库数据的结构解析、校验、转换需求,这些解析器的实现托管在一个独立的技能树解析
仓库里。
管道仓库状态
仓库 | 状态 |
---|---|
技能树命令行工具(skill_tree_cli) | 内部状态,TODO:开放仓库,参考下一节,期待开源贡献 |
技能树服务(skill_tree_server) | 内部状态,TODO:开放仓库,期待开源贡献 |
技能树解析(skill_tree_parser) | 已创建并在三个环节使用 |
技能树命令行设计(草稿)
技能树仓库编辑命令 最终应该和 技能树管道处理命令组合在一起,类似 git 一样提供一个 skill_tree 命令,该命令包含如下 actions
-
init
命令:初始化一个技能树仓库,该过程会交互式询问,输入技能树仓库相关的 meta 信息,用来自动完成技能树仓库- 原始数据编辑目录:data/
- 处理脚本目录:src/
- 管道数据处理目录:pipeline/
- 保持结构并规格化处理输出目录:pipeline/spec
- 链接合成目录:pipeline/link
-
tree
命令:在data/ 目录下通过该命令为每个节点和习题分配id,自动化生成必要的元数据 -
spec
命令:在pipeline/spec 目录下输出严格规格化的中间数据格式 -
link
命令:链接节点数据,包含- 生成节社区(抽象意义上)
- 生成节频道(抽象意义上)
- 生成习题交流贴(抽象意义上)
-
deploy
命令:将link后的产生的数据发布到抽象技能树服务 -
server
命令:启动抽象技能树服务,用户可以开始使用。
技能树概述
内容生产者, 内容消费者,学习者: 他们有不同的需求。
从一个“产品设计” 的角度,一个领域 (Python) 有一个技能树。 这个技能树上面有很多 知识点,这些知识点有 {初中高} 的特性。 每个知识点有 相关的 {博客, 问答, 代码, 视频,... } 集合。 用户如何证明自己掌握了某个知识点? 考虑:
- 每个知识点有相关的 “测试”,通过了这个 “测试”.
- 成为这个知识点的回答采纳目标。
- 写原创博客获得一定的赞。
- 通过某种考试。
痛点的解决
- 我怎么能证明我自己懂了这个领域? 解决:显示用户花了时间,通过了测试,写了博客。
- 光看博客就能证明自己懂了么? 解决:不行,必须通过测试了
- 我看了程序,但是只有程序片段,我怎么运行在我的电脑呢? CSDN 的程序是完整的,但是拷贝到我的电脑上,怎么不行啊? 解决:让用户能执行完整的可运行的程序。
- 回答者的痛点:我不断地回答相似的问题,一遍一遍给他们源代码。 解决:把完整的解决代码放在 Code 平台上,以后让提问者来这里看。 (这个和 ‘问答’ 业务很相关)
对于技能树上的一个问题,我们应该有完整的解决方案,让用户非常满意:
- 问题(怎么做归并排序?)
- 解答(原理是这样的)
- 代码:这个代码是要能在 Code-China 上可以运行的 (归并排序的代码在 JupyterNotebook 之类的平台运行)
- 解释通过代码的评论来完成:用户会说:我不大懂第十行, 为何要这样写? 专家就会解释。
技能树社区核心设计
- 构建结构化信息,通过难度等级、章/节+子树,使用算法匹配学习知识
- 每个知识点节点是一个微社区
- 每个微社区内包含3个重要元素:
- 参考资料(学习,使用算法匹配+推荐给出最优质内容)
- 习题(验证学习,是否掌握了知识点?习题做完可以去Notebook运行)
- 交流讨论区(同主题交流,通过输出进一步强化学习)
基于技能树的知识图谱
基于技能树的层次结构,构建复合的知识图谱结构,仓库: skill_tree_level
不同技能树构成了职业路线学习包
data/pacakage 目录下定义了由不同的技能树组合构成的学习包 例如:
贡献者列表
顾问
开发者
已发布技能树贡献者
- CS入门技能树
- Python技能树
- C语言技能树
- Java技能树
- 算法技能树
- PostgreSQL技能树
- OpenCV技能树
- Neo4j 技能树
- 云原生入门技能树
- 网络技能树
- Vue技能树
- CUDA技能树
未发布技能树贡献者
- Rust 技能树
- .NET 技能树
- Go 技能树