Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_network
提交
d6526c0d
S
skill_tree_network
项目概览
CSDN 技术社区
/
skill_tree_network
通知
18
Star
5
Fork
8
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
3
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_network
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d6526c0d
编写于
12月 30, 2021
作者:
L
luxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add keywords_must and keywords_forbid
上级
98856bfb
变更
69
展开全部
隐藏空白更改
内联
并排
Showing
69 changed file
with
605 addition
and
180 deletion
+605
-180
data/1.网络初阶/1.认识身边的计算机网络/1.网络中的数据是如何传递的/config.json
data/1.网络初阶/1.认识身边的计算机网络/1.网络中的数据是如何传递的/config.json
+13
-4
data/1.网络初阶/1.认识身边的计算机网络/2.常见的网络设备/config.json
data/1.网络初阶/1.认识身边的计算机网络/2.常见的网络设备/config.json
+31
-10
data/1.网络初阶/1.认识身边的计算机网络/3.网络拓扑的分类/config.json
data/1.网络初阶/1.认识身边的计算机网络/3.网络拓扑的分类/config.json
+4
-1
data/1.网络初阶/1.认识身边的计算机网络/config.json
data/1.网络初阶/1.认识身边的计算机网络/config.json
+4
-1
data/1.网络初阶/2.认识网络模型/1.网络模型概述/config.json
data/1.网络初阶/2.认识网络模型/1.网络模型概述/config.json
+4
-1
data/1.网络初阶/2.认识网络模型/2.OSI模型/config.json
data/1.网络初阶/2.认识网络模型/2.OSI模型/config.json
+4
-1
data/1.网络初阶/2.认识网络模型/3.TCPIP模型/config.json
data/1.网络初阶/2.认识网络模型/3.TCPIP模型/config.json
+4
-1
data/1.网络初阶/2.认识网络模型/4.数据的封装和解封装/config.json
data/1.网络初阶/2.认识网络模型/4.数据的封装和解封装/config.json
+4
-1
data/1.网络初阶/2.认识网络模型/config.json
data/1.网络初阶/2.认识网络模型/config.json
+4
-1
data/1.网络初阶/3.认识传输介质/1.物理层概述/config.json
data/1.网络初阶/3.认识传输介质/1.物理层概述/config.json
+4
-1
data/1.网络初阶/3.认识传输介质/2.通信方式/config.json
data/1.网络初阶/3.认识传输介质/2.通信方式/config.json
+4
-1
data/1.网络初阶/3.认识传输介质/3.网络通信的介质/config.json
data/1.网络初阶/3.认识传输介质/3.网络通信的介质/config.json
+4
-1
data/1.网络初阶/3.认识传输介质/config.json
data/1.网络初阶/3.认识传输介质/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/1.数据链路层的作用/config.json
data/1.网络初阶/4.认识中小型局域网/1.数据链路层的作用/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/2.MAC地址及分类/config.json
data/1.网络初阶/4.认识中小型局域网/2.MAC地址及分类/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/3.交换机的作用/config.json
data/1.网络初阶/4.认识中小型局域网/3.交换机的作用/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/4.交换机的工作原理/config.json
data/1.网络初阶/4.认识中小型局域网/4.交换机的工作原理/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/5.ARP协议的工作原理/config.json
data/1.网络初阶/4.认识中小型局域网/5.ARP协议的工作原理/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/6.VLAN/config.json
data/1.网络初阶/4.认识中小型局域网/6.VLAN/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/7.WLAN/config.json
data/1.网络初阶/4.认识中小型局域网/7.WLAN/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/8.PPP/config.json
data/1.网络初阶/4.认识中小型局域网/8.PPP/config.json
+4
-1
data/1.网络初阶/4.认识中小型局域网/config.json
data/1.网络初阶/4.认识中小型局域网/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/1.网络层的作用/config.json
data/1.网络初阶/5.跨区域网络的通信学习/1.网络层的作用/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/2.IP协议的特点/config.json
data/1.网络初阶/5.跨区域网络的通信学习/2.IP协议的特点/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/3.IPv4地址的分类和计算/config.json
data/1.网络初阶/5.跨区域网络的通信学习/3.IPv4地址的分类和计算/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/4.路由器的作用/config.json
data/1.网络初阶/5.跨区域网络的通信学习/4.路由器的作用/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/5.路由表的工作原理/config.json
data/1.网络初阶/5.跨区域网络的通信学习/5.路由表的工作原理/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/6.静态路由/config.json
data/1.网络初阶/5.跨区域网络的通信学习/6.静态路由/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/7.动态路由/config.json
data/1.网络初阶/5.跨区域网络的通信学习/7.动态路由/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/8.IPv6地址介绍/config.json
data/1.网络初阶/5.跨区域网络的通信学习/8.IPv6地址介绍/config.json
+4
-1
data/1.网络初阶/5.跨区域网络的通信学习/config.json
data/1.网络初阶/5.跨区域网络的通信学习/config.json
+4
-1
data/1.网络初阶/6.应用程序间的数据传输/1.传输层的作用/config.json
data/1.网络初阶/6.应用程序间的数据传输/1.传输层的作用/config.json
+4
-1
data/1.网络初阶/6.应用程序间的数据传输/2.端口号的分类、作用/config.json
data/1.网络初阶/6.应用程序间的数据传输/2.端口号的分类、作用/config.json
+4
-1
data/1.网络初阶/6.应用程序间的数据传输/3.TCP协议的特点及应用/config.json
data/1.网络初阶/6.应用程序间的数据传输/3.TCP协议的特点及应用/config.json
+4
-1
data/1.网络初阶/6.应用程序间的数据传输/4.UDP协议的特点及应用/config.json
data/1.网络初阶/6.应用程序间的数据传输/4.UDP协议的特点及应用/config.json
+4
-1
data/1.网络初阶/6.应用程序间的数据传输/config.json
data/1.网络初阶/6.应用程序间的数据传输/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/1.应用层的作用/config.json
data/1.网络初阶/7.支撑应用程序的协议/1.应用层的作用/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/2.HTTP协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/2.HTTP协议/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/3.FTP协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/3.FTP协议/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/4.DNS协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/4.DNS协议/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/5.DHCP协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/5.DHCP协议/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/6.邮件协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/6.邮件协议/config.json
+4
-1
data/1.网络初阶/7.支撑应用程序的协议/config.json
data/1.网络初阶/7.支撑应用程序的协议/config.json
+4
-1
data/1.网络初阶/config.json
data/1.网络初阶/config.json
+4
-1
data/2.网络中阶/1.交换/1.VLAN/config.json
data/2.网络中阶/1.交换/1.VLAN/config.json
+4
-1
data/2.网络中阶/1.交换/2.链路聚合/config.json
data/2.网络中阶/1.交换/2.链路聚合/config.json
+4
-1
data/2.网络中阶/1.交换/3.STP/config.json
data/2.网络中阶/1.交换/3.STP/config.json
+4
-1
data/2.网络中阶/1.交换/config.json
data/2.网络中阶/1.交换/config.json
+4
-1
data/2.网络中阶/2.路由/1.RIP/config.json
data/2.网络中阶/2.路由/1.RIP/config.json
+4
-1
data/2.网络中阶/2.路由/2.OSPF/config.json
data/2.网络中阶/2.路由/2.OSPF/config.json
+4
-1
data/2.网络中阶/2.路由/3.ISIS/config.json
data/2.网络中阶/2.路由/3.ISIS/config.json
+4
-1
data/2.网络中阶/2.路由/4.BGP/config.json
data/2.网络中阶/2.路由/4.BGP/config.json
+4
-1
data/2.网络中阶/2.路由/5.路由策略/config.json
data/2.网络中阶/2.路由/5.路由策略/config.json
+4
-1
data/2.网络中阶/2.路由/config.json
data/2.网络中阶/2.路由/config.json
+4
-1
data/2.网络中阶/config.json
data/2.网络中阶/config.json
+4
-1
data/3.网络高阶/1.PPP/1.PPP概述/config.json
data/3.网络高阶/1.PPP/1.PPP概述/config.json
+4
-1
data/3.网络高阶/1.PPP/2.PPP协议内容/config.json
data/3.网络高阶/1.PPP/2.PPP协议内容/config.json
+4
-1
data/3.网络高阶/1.PPP/config.json
data/3.网络高阶/1.PPP/config.json
+4
-1
data/3.网络高阶/2.VRRP/1.VRRP概述/config.json
data/3.网络高阶/2.VRRP/1.VRRP概述/config.json
+4
-1
data/3.网络高阶/2.VRRP/2.VRRP作用/config.json
data/3.网络高阶/2.VRRP/2.VRRP作用/config.json
+4
-1
data/3.网络高阶/2.VRRP/3.VRRP配置/config.json
data/3.网络高阶/2.VRRP/3.VRRP配置/config.json
+4
-1
data/3.网络高阶/2.VRRP/config.json
data/3.网络高阶/2.VRRP/config.json
+4
-1
data/3.网络高阶/3.QoS/1.QoS概述/config.json
data/3.网络高阶/3.QoS/1.QoS概述/config.json
+4
-1
data/3.网络高阶/3.QoS/2.QoS分类/config.json
data/3.网络高阶/3.QoS/2.QoS分类/config.json
+4
-1
data/3.网络高阶/3.QoS/config.json
data/3.网络高阶/3.QoS/config.json
+4
-1
data/3.网络高阶/config.json
data/3.网络高阶/config.json
+4
-1
data/config.json
data/config.json
+3
-1
data/tree.json
data/tree.json
+234
-78
src/tree.py
src/tree.py
+68
-23
未找到文件。
data/1.网络初阶/1.认识身边的计算机网络/1.网络中的数据是如何传递的/config.json
浏览文件 @
d6526c0d
...
...
@@ -6,7 +6,9 @@
"访问网页数据的传递过程"
],
"children"
:
[],
"node_id"
:
"network-90eb249a1a944545bec9375caa09b7ee"
"node_id"
:
"network-90eb249a1a944545bec9375caa09b7ee"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
...
...
@@ -15,7 +17,9 @@
"我国网络的发展的发展"
],
"children"
:
[],
"node_id"
:
"network-f5d2f2b5a7624f7a95ff3e1ab2fa4fc5"
"node_id"
:
"network-f5d2f2b5a7624f7a95ff3e1ab2fa4fc5"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
...
...
@@ -27,9 +31,13 @@
"资源共享"
],
"children"
:
[],
"node_id"
:
"network-8a6a24c32e154eb396619dbbfbdab0e7"
"node_id"
:
"network-8a6a24c32e154eb396619dbbfbdab0e7"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
}
],
"node_id"
:
"network-e0ad5915797348a88f55399a18ca858d"
"node_id"
:
"network-e0ad5915797348a88f55399a18ca858d"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/1.认识身边的计算机网络/2.常见的网络设备/config.json
浏览文件 @
d6526c0d
{
"keywords"
:[
"网络设备"
],
"keywords"
:
[
"网络设备"
],
"children"
:
[
{
"常见的网络设备"
:
{
...
...
@@ -18,7 +20,9 @@
"智能家居"
],
"children"
:
[],
"node_id"
:
"network-2aacb5a4f5a64677ace490d4373d7628"
"node_id"
:
"network-2aacb5a4f5a64677ace490d4373d7628"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
...
...
@@ -30,11 +34,15 @@
"无线路由器"
],
"children"
:
[],
"node_id"
:
"network-42e9982de4334db79ea829662e90ea2f"
"node_id"
:
"network-42e9982de4334db79ea829662e90ea2f"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
}
],
"node_id"
:
"network-c83783f42f4d4fdcb71dd55d3087b7f0"
"node_id"
:
"network-c83783f42f4d4fdcb71dd55d3087b7f0"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
},
"常见的网络介质"
:
{
"keywords"
:
[
...
...
@@ -46,30 +54,42 @@
"children"
:
[
{
"双绞线"
:
{
"children"
:
[]
"children"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
"光纤"
:
{
"children"
:
[]
"children"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
"同轴电缆"
:
{
"children"
:
[]
"children"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
},
{
"无线电波"
:
{
"children"
:
[]
"children"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
}
]
],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
}
],
"export"
:
[
"01.json"
],
"node_id"
:
"network-16b1ac6767d947f4b9cf1be248239823"
"node_id"
:
"network-16b1ac6767d947f4b9cf1be248239823"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/1.认识身边的计算机网络/3.网络拓扑的分类/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-05cf5084bf4b4f8dbb7040d4d53efbfa"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/1.认识身边的计算机网络/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-21e72df6dd5b40dcb57d2daabf9d87b2"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/2.认识网络模型/1.网络模型概述/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-8afe66fc4e1e4f539061de800a0a23bf"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/2.认识网络模型/2.OSI模型/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-bac5e201cd3f471aa09aef6f6bd9dd6a"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/2.认识网络模型/3.TCPIP模型/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-e7861382d8474d99b6c81866b3480346"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/2.认识网络模型/4.数据的封装和解封装/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-9ca6243f54a446089eaf3a8f18dbdf5f"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/2.认识网络模型/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-903c0a65059e41a88036c457f48d9351"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/3.认识传输介质/1.物理层概述/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-93a232d0cf754e6b87dcdd6f43f8cbc8"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/3.认识传输介质/2.通信方式/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-f5b3ff50904c4fed949e58640a143cfe"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/3.认识传输介质/3.网络通信的介质/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-1ed5189882a04d6da48dc84617427b65"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/3.认识传输介质/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-59a5b62a972247948a07ffcf892b56c9"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/1.数据链路层的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-ec7441d074c1439285eab85cd1d35425"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/2.MAC地址及分类/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-45e9640d996c42d685c497fa6604a764"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/3.交换机的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-770fb1807a7e4ef59c9f78e06685dd67"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/4.交换机的工作原理/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-e7f2ac802a3e4ac785b5f94d4935dcae"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/5.ARP协议的工作原理/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-44c32ade1eb24e328d84b0970a82c874"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/6.VLAN/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-da956c02f676454e8bcaa50e3cfa8e06"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/7.WLAN/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-5dd420ebd67146afa5219a44cd614a47"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/8.PPP/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-dd30314697c84cc1b696d77dd11aced9"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/4.认识中小型局域网/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-60f0ba128ba74fa89c79e36884305783"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/1.网络层的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-8d8288ccd2b64a109c4f557efe592ac3"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/2.IP协议的特点/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-ab6bfd85ec3440dd89fea166da0be00c"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/3.IPv4地址的分类和计算/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-772cd2af7db94508840e1441a7574877"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/4.路由器的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-cbc2f413286e40fcad470f79d0da9f1d"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/5.路由表的工作原理/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-9d424643d20e4d6a8e563debaad8f21a"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/6.静态路由/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-edb91111e5ff435cbcf23f5537866369"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/7.动态路由/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-8dd155538a954267abe06242248a083e"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/8.IPv6地址介绍/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-1f93a31002cf4fe2924a8c513c4a4a5c"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/5.跨区域网络的通信学习/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-d32c188136234d198a3d27aaf251434f"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/6.应用程序间的数据传输/1.传输层的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-74e3d2800f35424a8e98ce089f7c27c6"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/6.应用程序间的数据传输/2.端口号的分类、作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-b9246efd155b47799dc02eb00175bd3d"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/6.应用程序间的数据传输/3.TCP协议的特点及应用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-85712193cdfa4d82bafaa0f4cd30e266"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/6.应用程序间的数据传输/4.UDP协议的特点及应用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-4a3481cb7b03425582b40d1e0d2e0d51"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/6.应用程序间的数据传输/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-5e7027e23eec4c67a7de74e9ab2caba8"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/1.应用层的作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-ae82cb15ba26426a91e8a1cb474328ae"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/2.HTTP协议/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-bd22073e575c4d4ea1325760a3912954"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/3.FTP协议/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-14c66687e6e84ea68668d40b4cacd873"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/4.DNS协议/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-656828c7f31c4f72ad230b9e3191161d"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/5.DHCP协议/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-66b95999ea2147c4945a1456eb3baaee"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/6.邮件协议/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-c554312da0e0433c974d1e489be231e2"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/7.支撑应用程序的协议/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-94a13c6c52614895b92d569cb38b3c87"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/1.网络初阶/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-d41a109241504ac689c4180793d237fe"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/1.交换/1.VLAN/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-ae056a3111bf495687aad5e94fc72b6b"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/1.交换/2.链路聚合/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-9f63af019f97456bbf2da57a02268d26"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/1.交换/3.STP/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-47c1720cca854491a63065893b444aa0"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/1.交换/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-1c08cbe277804c9aa7d86a7cea45bb2b"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/1.RIP/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-86a74a86c4634c7f991963d8c39c8200"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/2.OSPF/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-460e4f45b1dc4746a5e6d53df073d8f3"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/3.ISIS/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-872fb874602d49aeaf479aa555f768f7"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/4.BGP/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-d6e6178da70c4c488b4e6137a6f4f039"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/5.路由策略/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-bfec537cc4e74fc0bde6968570bb0bda"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/2.路由/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-2bdf012b3e71446da96b483fb9b9cdc4"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/2.网络中阶/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-c2ad656b2d434cf2bddae5b67a54a30e"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/1.PPP/1.PPP概述/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-a4dd1c4a69364d6dba624adaeafbafcb"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/1.PPP/2.PPP协议内容/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-aa317ed09bf14c20bb86a1a08d5ec006"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/1.PPP/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-08302221308e40b38de8cf131dad13ad"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/2.VRRP/1.VRRP概述/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-5d740cb0d9a8459f88543a83b6c7c5e8"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/2.VRRP/2.VRRP作用/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-ca8d4d21ad474dfd83573e883cd821d5"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/2.VRRP/3.VRRP配置/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-f8fb04c24a4e4d4dad049a963e1acdba"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/2.VRRP/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-8ef0493e96804c9aa6696c9c8c1ae3ca"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/3.QoS/1.QoS概述/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-40f0e24cb89b479c82163e686b1271c4"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/3.QoS/2.QoS分类/config.json
浏览文件 @
d6526c0d
...
...
@@ -2,5 +2,7 @@
"node_id"
:
"network-c0196e2fe2e846bc8a4c9bb338221528"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/3.QoS/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-c52d5bcef40f45c5bc8a3941c73d2750"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/3.网络高阶/config.json
浏览文件 @
d6526c0d
{
"node_id"
:
"network-fd72367657724abd93fd0e6c1b1584fc"
,
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/config.json
浏览文件 @
d6526c0d
{
"tree_name"
:
"network"
,
"keywords"
:
[],
"node_id"
:
"network-7d5f6fdfd0b04e68aeebfb18474e4c4f"
"node_id"
:
"network-7d5f6fdfd0b04e68aeebfb18474e4c4f"
,
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
\ No newline at end of file
data/tree.json
浏览文件 @
d6526c0d
此差异已折叠。
点击以展开。
src/tree.py
浏览文件 @
d6526c0d
...
...
@@ -2,10 +2,10 @@ import json
import
logging
import
os
import
re
import
subprocess
import
sys
import
uuid
import
re
import
git
id_set
=
set
()
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -14,15 +14,31 @@ handler = logging.StreamHandler(sys.stdout)
formatter
=
logging
.
Formatter
(
'%(asctime)s - %(levelname)s - %(message)s'
)
handler
.
setFormatter
(
formatter
)
logger
.
addHandler
(
handler
)
repo
=
git
.
Repo
(
"."
)
def
user_name
():
return
repo
.
config_reader
().
get_value
(
"user"
,
"name"
)
def
search_author
(
author_dict
,
username
):
for
key
in
author_dict
:
names
=
author_dict
[
key
]
if
username
in
names
:
return
key
return
username
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
])
author_nick_name
=
author_lines
[
-
1
]
return
search_author
(
author_dict
,
author_nick_name
)
def
load_json
(
p
):
with
open
(
p
,
'r'
)
as
f
:
with
open
(
p
,
'r'
,
encoding
=
"utf-8"
)
as
f
:
return
json
.
loads
(
f
.
read
())
...
...
@@ -77,7 +93,18 @@ def check_export(base, cfg):
class
TreeWalker
:
def
__init__
(
self
,
root
,
tree_name
,
title
=
None
,
log
=
None
):
def
__init__
(
self
,
root
,
tree_name
,
title
=
None
,
log
=
None
,
authors
=
None
,
enable_notebook
=
None
,
ignore_keywords
=
False
):
self
.
ignore_keywords
=
ignore_keywords
self
.
authors
=
authors
if
authors
else
{}
self
.
enable_notebook
=
enable_notebook
self
.
name
=
tree_name
self
.
root
=
root
self
.
title
=
tree_name
if
title
is
None
else
title
...
...
@@ -89,7 +116,9 @@ class TreeWalker:
root_node
=
{
"node_id"
:
root
[
"node_id"
],
"keywords"
:
root
[
"keywords"
],
"children"
:
[]
"children"
:
[],
"keywords_must"
:
root
[
"keywords_must"
],
"keywords_forbid"
:
root
[
"keywords_forbid"
]
}
self
.
tree
[
root
[
"tree_name"
]]
=
root_node
self
.
load_levels
(
root_node
)
...
...
@@ -144,6 +173,8 @@ class TreeWalker:
"node_id"
:
config
[
"node_id"
],
"keywords"
:
config
[
"keywords"
],
"children"
:
[],
"keywords_must"
:
config
[
"keywords_must"
],
"keywords_forbid"
:
config
[
"keywords_forbid"
]
}
}
...
...
@@ -195,6 +226,8 @@ class TreeWalker:
"tree_name"
:
self
.
name
,
"keywords"
:
[],
"node_id"
:
self
.
gen_node_id
(),
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
dump_json
(
config_path
,
config
,
exist_ok
=
True
,
override
=
True
)
else
:
...
...
@@ -224,7 +257,9 @@ class TreeWalker:
if
not
os
.
path
.
exists
(
config_path
):
config
=
{
"node_id"
:
self
.
gen_node_id
(),
"keywords"
:
[]
"keywords"
:
[],
"keywords_must"
:
[],
"keywords_forbid"
:
[]
}
dump_json
(
config_path
,
config
,
exist_ok
=
True
,
override
=
True
)
else
:
...
...
@@ -290,6 +325,8 @@ class TreeWalker:
"node_id"
:
config
[
"node_id"
],
"keywords"
:
config
[
"keywords"
],
"children"
:
[],
"keywords_must"
:
config
[
"keywords_must"
],
"keywords_forbid"
:
config
[
"keywords_forbid"
]
}
}
return
num
,
result
...
...
@@ -301,7 +338,9 @@ class TreeWalker:
name
:
{
"node_id"
:
config
[
"node_id"
],
"keywords"
:
config
.
get
(
"keywords"
,
[]),
"children"
:
config
.
get
(
"children"
,
[])
"children"
:
config
.
get
(
"children"
,
[]),
"keywords_must"
:
config
[
"keywords_must"
],
"keywords_forbid"
:
config
[
"keywords_forbid"
]
}
}
# if "children" in config:
...
...
@@ -318,7 +357,8 @@ class TreeWalker:
continue
mfile
=
base
+
".json"
meta_path
=
os
.
path
.
join
(
section_path
,
mfile
)
self
.
ensure_exercises_meta
(
meta_path
,
source
)
md_file
=
os
.
path
.
join
(
section_path
,
e
)
self
.
ensure_exercises_meta
(
meta_path
,
source
,
md_file
)
export
=
config
.
get
(
"export"
,
[])
if
mfile
not
in
export
and
self
.
name
!=
"algorithm"
:
export
.
append
(
mfile
)
...
...
@@ -339,7 +379,7 @@ class TreeWalker:
else
:
id_set
.
add
(
exercise
[
"exercise_id"
])
def
ensure_exercises_meta
(
self
,
meta_path
,
source
):
def
ensure_exercises_meta
(
self
,
meta_path
,
source
,
md_file
):
_
,
mfile
=
os
.
path
.
split
(
meta_path
)
meta
=
None
if
os
.
path
.
exists
(
meta_path
):
...
...
@@ -354,27 +394,32 @@ class TreeWalker:
if
"source"
not
in
meta
:
meta
[
"source"
]
=
source
if
"author"
not
in
meta
:
meta
[
"author"
]
=
user_name
()
meta
[
"author"
]
=
user_name
(
md_file
,
self
.
authors
)
if
"type"
not
in
meta
:
meta
[
"type"
]
=
"code_options"
if
meta
is
None
:
meta
=
{
"type"
:
"code_options"
,
"author"
:
user_name
(),
"source"
:
source
,
"notebook_enable"
:
self
.
default_notebook
(),
"exercise_id"
:
uuid
.
uuid4
().
hex
}
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
}
dump_json
(
meta_path
,
meta
,
True
,
True
)
def
default_notebook
(
self
):
if
self
.
enable_notebook
is
not
None
:
return
self
.
enable_notebook
if
self
.
name
in
[
"python"
,
"java"
,
"c"
]:
return
True
else
:
return
False
def
check_section_keywords
(
self
,
full_path
):
if
self
.
ignore_keywords
:
return
config
=
self
.
ensure_section_config
(
full_path
)
#
if not config.get("keywords", []):
#
self.logger.error(f"节点 [{full_path}] 的关键字为空,请修改配置文件写入关键字")
#
sys.exit(1)
if
not
config
.
get
(
"keywords"
,
[]):
self
.
logger
.
error
(
f
"节点 [
{
full_path
}
] 的关键字为空,请修改配置文件写入关键字"
)
sys
.
exit
(
1
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录