From 028b556ff6d60eb9def9a41e22c3a956da5963a5 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Sun, 16 Jan 2022 00:29:08 +0800 Subject: [PATCH] uniform project structure --- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 2 +- .../config.json" | 8 - .../config.json" | 2 +- data/tree.json | 262 ++++++++--- main.py | 2 +- requirements.txt | 1 + src/tree.py | 425 ------------------ 52 files changed, 255 insertions(+), 537 deletions(-) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" (76%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" (76%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" (69%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" (74%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" (76%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" (72%) rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" (69%) delete mode 100644 "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" rename "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" => "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" (68%) delete mode 100644 src/tree.py diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" index 4551950..bc1814d 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/1.\345\210\233\345\273\272\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\346\240\271\347\233\256\345\275\225/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["web", "工作空间"], "title": "创建工作空间目录", "node_id": "toolchains-0c52dc8621ed42f6b587b99705ca744d", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" index dc26485..e719f31 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/2.\345\210\235\345\247\213\345\214\226git\344\273\223\345\272\223/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git"], "title": "初始化git仓库", "node_id": "toolchains-e5762965dec14f8a873428e4c04409d6", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" index bf7e837..20560d5 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/3.\345\210\233\345\273\272gitignore\346\226\207\344\273\266/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git", "gitignore"], "title": "使用gitignore文件在版本库中忽略文件", "node_id": "toolchains-02d8f669d1c745d599a2b321c6d15ca1", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" index b9b4d72..362fed3 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/4.\346\267\273\345\212\240\351\241\271\347\233\256README.md\346\226\207\346\241\243/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["readme"], "title": "为项目添加项目说明文档", "node_id": "toolchains-b10e540d16da4c6b9ce71128fe712750", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" index 0331993..5788e46 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/1.\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272/5.\345\256\214\346\210\220\347\254\254\344\270\200\346\254\241\346\234\254\345\234\260\344\273\223\345\272\223\346\217\220\344\272\244/config.json" @@ -1,5 +1,5 @@ { - "keywords": [], + "keywords": ["git", "commit"], "title": "在本地仓库完成第一次版本提交", "node_id": "toolchains-9c268abdef7e4712828235a4696329c5", "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" index 765864c..04bea20 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/1.\346\263\250\345\206\214codechina\350\264\246\346\210\267/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-1bfc87efcfe04179bba64f6874688ca5", - "keywords": [], + "keywords": ["codechina", "gitcode"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" index 028ada8..6d34a48 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/2.\345\210\233\345\273\272\351\241\271\347\233\256\347\273\204\347\273\207/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-4a090ef0913f41b9a25348b2a4c5498f", - "keywords": [], + "keywords": ["项目组织"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" index f7d9a39..729718d 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/3.\345\210\233\345\273\272\350\277\234\347\250\213\344\273\223\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d97f24c1f51e47e69e220e37975e49da", - "keywords": [], + "keywords": ["git", "remote"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" index 0ed54b4..3784eb6 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/4.\351\205\215\347\275\256\345\257\206\351\222\245/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-a7f5610f9a3242fa9ed3c9445b40d5a3", - "keywords": [], + "keywords": ["git", "key", "ssh"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" index 709d838..df33697 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/5.\347\256\241\347\220\206\344\273\223\345\272\223\346\235\203\351\231\220/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d110b9f5b6db482683cf117265eac2e0", - "keywords": [], + "keywords": ["git", "权限"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" index 77da085..eb6d5ff 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/6.\345\260\206\346\234\254\345\234\260\344\273\223\345\272\223\345\205\263\350\201\224\345\271\266\346\216\250\351\200\201\345\210\260\350\277\234\347\250\213\344\273\223\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-ffc3c659453a48d19673ac82965d05e8", - "keywords": [], + "keywords": ["git", "remote", "push"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" index e6ed4eb..f76af1b 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/2.\350\277\234\347\250\213\344\273\223\345\272\223\347\256\241\347\220\206/7.\351\241\271\347\233\256\346\210\220\345\221\230\345\222\214\346\235\203\351\231\220\347\256\241\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-3a1f4be17fcb4fc38907585dd297d48e", - "keywords": [], + "keywords": ["user", "permission"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" index f5a23af..6eb902c 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/1.\345\256\211\350\243\205nodejs\347\216\257\345\242\203/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-adb4004580bc476a85d513d0be3a5033", - "keywords": [], + "keywords": ["nodejs", "install"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" index 68c8ee5..52cc1ef 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/2.\350\247\243\345\206\263\345\233\275\345\244\226npm\346\272\220\344\270\213\350\275\275\351\200\237\345\272\246\344\270\216\350\256\277\351\227\256\351\231\220\345\210\266\351\227\256\351\242\230/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-9493364f64ac4e0abe44b544b90546a3", - "keywords": [], + "keywords": ["npm"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" index 9ce1ce0..05e7110 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/3.\345\234\250\351\241\271\347\233\256\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\211\215\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-720ff92db7e94d0db637f7f3329ed92a", - "keywords": [], + "keywords": ["npm", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" index 33f45bf..af1d9d0 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/3.\345\211\215\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272/4.\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(VUE\347\211\210)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e997d39c64ea47e381d0f7097866abdf", - "keywords": [], + "keywords": ["vue"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" index e365d30..85ba71e 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/1.\345\256\211\350\243\205anaconda/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-b3950355b1cc40dfb66e37eb0c6523c8", - "keywords": [], + "keywords": ["python", "anaconda"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" index 293d853..d783eb7 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/2.\345\234\250\345\267\245\344\275\234\347\251\272\351\227\264\344\270\255\345\210\233\345\273\272\345\220\216\347\253\257\351\241\271\347\233\256\347\233\256\345\275\225/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d117cf4df65c429cba528a1d9f3c3e27", - "keywords": [], + "keywords": ["python", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" index c36b351..8b46a32 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/3.\345\210\233\345\273\272\350\231\232\346\213\237\347\216\257\345\242\203/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-37e699a027764e44817f3432debd449c", - "keywords": [], + "keywords": ["python", "venv", "virtualenv"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" index 28efa82..465d828 100644 --- "a/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" +++ "b/data/1.Web\345\256\236\346\210\230\345\210\235\351\230\266/4.\345\220\216\347\253\257\351\241\271\347\233\256\345\210\233\345\273\272(python\347\211\210)/4.\351\241\271\347\233\256\345\274\200\345\217\221\345\211\215\345\207\206\345\244\207\345\267\245\344\275\234(flask\347\211\210)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-172e7ed9e81c4042bcb3e43de8712532", - "keywords": [], + "keywords": ["python", "flask"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" index 1c76572..4d6b815 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/1.\344\275\277\347\224\250vue\350\204\232\346\211\213\346\236\266\345\210\233\345\273\272\351\241\271\347\233\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-627cf848cba64a56b6b5a3cd550bfec7", - "keywords": [], + "keywords": ["vue"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" index 88cf1c1..f172659 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/10.\345\210\206\346\224\257\345\206\262\347\252\201\345\244\204\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-666893ee200a4d6db5435abd09d8f47a", - "keywords": [], + "keywords": ["git", "merge", "conflict", "resolve"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" index fdb4f57..52ee68a 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/11.\346\217\220\345\217\226\347\273\204\344\273\266\344\270\255\347\232\204\347\212\266\346\200\201\344\275\277\347\224\250vuex\350\277\233\350\241\214\347\212\266\346\200\201\347\256\241\347\220\206/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-f24bcb8bea6b45368070c9b9f508606c", - "keywords": [], + "keywords": ["vue", "state", "vuex"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" index 6532b5f..d1b0bfb 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/12.\346\250\241\346\213\237ajax\350\257\267\346\261\202/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-8b2b197bdbd944dea1918a4029343f0f", - "keywords": [], + "keywords": ["ajax", "http"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" index ee3243c..572bb26 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/2.\351\241\271\347\233\256\346\272\220\347\240\201\345\217\212\347\233\256\345\275\225\347\273\223\346\236\204\350\257\264\346\230\216/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-8b07ab0558ef451b9bdf111107034eba", - "keywords": [], + "keywords": ["vue", "project"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" index 3a3d846..08afce8 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/3.\345\210\233\345\273\272\347\254\254\344\270\200\344\270\252\351\241\265\351\235\242/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-5c9d4bcbe11942d3a869ab47df26c097", - "keywords": [], + "keywords": ["vue", "page"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" index bae638d..e8b50d3 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/4.\351\205\215\347\275\256\350\267\257\347\224\261/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e6cbb70c80394cda8c6b2abc0c779fc6", - "keywords": [], + "keywords": ["vue", "route"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" index 7b509c1..cfc9f92 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/5.\350\277\233\350\241\214\345\211\215\347\253\257\351\241\271\347\233\256\347\254\254\344\270\200\346\254\241\347\211\210\346\234\254\346\217\220\344\272\244/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-c7f2bf5d40ad4d0b955f7f107581223a", - "keywords": [], + "keywords": ["vue", "git", "commit"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" index 615d646..d7e30f8 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/6.\346\226\260\345\273\272\345\210\206\346\224\257/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-eb45a452a6a04511968ef5b15c657a1d", - "keywords": [], + "keywords": ["git", "branch"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" index 9140f12..59e74b3 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/7.\346\212\275\347\246\273\347\273\204\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-0f9e83a3974e4db0a7a4a125a2214e4e", - "keywords": [], + "keywords": ["vue", "component"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" index 5f3b0dc..1d524be 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/8.\345\220\210\345\271\266\345\210\206\346\224\257/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-772b173292fa46b3a5ce1209a22f076f", - "keywords": [], + "keywords": ["git", "merge"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" index 59ea728..289b21a 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/1.web\345\211\215\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(vue)/9.\350\277\233\344\270\200\346\255\245\346\212\275\347\246\273\347\273\204\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-7e6fd53fe3a84f31a8aed859e4e45083", - "keywords": [], + "keywords": ["vue", "component"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" index 6ef8201..90cd495 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/1.\345\210\233\345\273\272flask\351\241\271\347\233\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-e1e9c87df6c64d69b44946f6f8bd38f0", - "keywords": [], + "keywords": ["python", "flask"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" index 77598ca..f112a6f 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\350\256\276\347\275\256\350\256\277\351\227\256\350\267\257\347\224\261/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-9f6fdcbcafd3477897bf16d0dd2be262", - "keywords": [], + "keywords": ["python", "flask", "route"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" index be0b0c9..a533e27 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/11.\345\256\214\346\210\220\347\254\254\344\270\200\344\270\252\346\216\245\345\217\243\350\277\224\345\233\236json\346\240\274\345\274\217\346\225\260\346\215\256/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-286ed617cbac42a29dbd757361f1f0b3", - "keywords": [], + "keywords": ["python", "flask", "json"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" similarity index 69% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" index 3d98eda..ae29915 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/12.\350\216\267\345\217\226\350\241\250\345\215\225\346\225\260\346\215\256\345\271\266\345\260\206\346\225\260\346\215\256\344\277\235\345\255\230\345\210\260\346\225\260\346\215\256\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-93040f93301f41d080b62385eeb59d70", - "keywords": [], + "keywords": ["python", "flask", "form", "post", "database"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" similarity index 74% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" index 92639e4..a98c738 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/13.\344\275\277\347\224\250\350\243\205\351\245\260\345\231\250\350\256\276\347\275\256\344\270\255\351\227\264\344\273\266\346\213\246\346\210\252\350\257\267\346\261\202/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-3a33244e3ab6490e9819a30d8cae5612", - "keywords": [], + "keywords": ["python", "flask", "decorator"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" similarity index 76% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" index dcb56bb..0a0ef1a 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\350\277\236\346\216\245redis/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/14.\350\277\236\346\216\245redis/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-2f9cd0de2cc14dcb9ba4a1e76547b72b", - "keywords": [], + "keywords": ["python", "flask", "redis"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" similarity index 72% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" index 5d3d9d5..829cc57 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/16.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/15.\344\275\277\347\224\250\344\273\244\347\211\214\351\252\214\350\257\201\345\256\242\346\210\267\347\253\257\350\272\253\344\273\275/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d1a69b26dab3472ca23bab5cf4dfd40a", - "keywords": [], + "keywords": ["python", "flask", "auth", "token"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" index 51eb4d5..5c40d5c 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/2.\351\205\215\347\275\256\345\271\266\344\275\277\347\224\250IDE(pycharm)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-807a4d7ac2c543df8668d6be52dbdae3", - "keywords": [], + "keywords": ["python", "pycharm"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" index 9fdf311..5619d55 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/3.\345\210\233\345\273\272\351\241\271\347\233\256\351\205\215\347\275\256\346\226\207\344\273\266/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d2f1500609564ae8b7d9f33f1c03edf4", - "keywords": [], + "keywords": ["flask", "config", "settings"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" index 8827bf5..09a0680 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/4.\350\277\233\350\241\214\345\210\235\346\254\241\345\220\216\347\253\257\347\211\210\346\234\254\346\217\220\344\272\244/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-d34786cfe2d34f1ebbcc381f7234feeb", - "keywords": [], + "keywords": ["git", "commit"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" index df0e3be..255db1b 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/5.\350\256\276\347\275\256\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245(mysql)/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-238848692f9e479c928f1a003acb8ffe", - "keywords": [], + "keywords": ["python", "mysql", "dbapi"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" index da64500..5a54746 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/6.\344\275\277\347\224\250sqlalchemy/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-f3a77b9ee7cd4687b8fdfa1a7e9ee70d", - "keywords": [], + "keywords": ["python", "sqlalchemy"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" index b00bc79..837aee5 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/7.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-c17747cb6fb34e0782cd63103c26059f", - "keywords": [], + "keywords": ["flask", "python", "sqlalchemy", "model"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" similarity index 69% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" index 33f70c1..49479a0 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\344\275\277\347\224\250\346\225\260\346\215\256\350\277\201\347\247\273\345\210\235\345\247\213\345\214\226\346\225\260\346\215\256\345\272\223/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-64e0f059275740a6abc4808a35f3e2d2", - "keywords": [], + "keywords": ["python", "flask", "sqlalchemy", "migration"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" deleted file mode 100644 index 6857817..0000000 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/8.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213/config.json" +++ /dev/null @@ -1,8 +0,0 @@ -{ - "node_id": "toolchains-d96ecd596dba40ffbbca6d364a9bae6d", - "keywords": [], - "children": [], - "export": [], - "keywords_must": [], - "keywords_forbid": [] -} \ No newline at end of file diff --git "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" similarity index 68% rename from "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" rename to "data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" index 8a365bd..9adc89c 100644 --- "a/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/10.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" +++ "b/data/2.Web\345\256\236\346\210\230\344\270\255\351\230\266/2.web\345\220\216\347\253\257\351\241\271\347\233\256\345\256\236\346\210\230(flask)/9.\351\205\215\347\275\256\346\225\260\346\215\256\346\250\241\345\236\213\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/config.json" @@ -1,6 +1,6 @@ { "node_id": "toolchains-179bf9f789a24f83beccaecd621474e1", - "keywords": [], + "keywords": ["python", "flask", "sqlalchemy", "serialization"], "children": [], "export": [], "keywords_must": [], diff --git a/data/tree.json b/data/tree.json index cb3e735..706298e 100644 --- a/data/tree.json +++ b/data/tree.json @@ -16,7 +16,10 @@ { "创建项目工作空间根目录": { "node_id": "toolchains-0c52dc8621ed42f6b587b99705ca744d", - "keywords": [], + "keywords": [ + "web", + "工作空间" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -25,7 +28,9 @@ { "初始化git仓库": { "node_id": "toolchains-e5762965dec14f8a873428e4c04409d6", - "keywords": [], + "keywords": [ + "git" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -34,7 +39,10 @@ { "创建gitignore文件": { "node_id": "toolchains-02d8f669d1c745d599a2b321c6d15ca1", - "keywords": [], + "keywords": [ + "git", + "gitignore" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -43,7 +51,9 @@ { "添加项目README.md文档": { "node_id": "toolchains-b10e540d16da4c6b9ce71128fe712750", - "keywords": [], + "keywords": [ + "readme" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -52,7 +62,10 @@ { "完成第一次本地仓库提交": { "node_id": "toolchains-9c268abdef7e4712828235a4696329c5", - "keywords": [], + "keywords": [ + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -71,7 +84,10 @@ { "注册codechina账户": { "node_id": "toolchains-1bfc87efcfe04179bba64f6874688ca5", - "keywords": [], + "keywords": [ + "codechina", + "gitcode" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -80,7 +96,9 @@ { "创建项目组织": { "node_id": "toolchains-4a090ef0913f41b9a25348b2a4c5498f", - "keywords": [], + "keywords": [ + "项目组织" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -89,7 +107,10 @@ { "创建远程仓库": { "node_id": "toolchains-d97f24c1f51e47e69e220e37975e49da", - "keywords": [], + "keywords": [ + "git", + "remote" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -98,7 +119,11 @@ { "配置密钥": { "node_id": "toolchains-a7f5610f9a3242fa9ed3c9445b40d5a3", - "keywords": [], + "keywords": [ + "git", + "key", + "ssh" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -107,7 +132,10 @@ { "管理仓库权限": { "node_id": "toolchains-d110b9f5b6db482683cf117265eac2e0", - "keywords": [], + "keywords": [ + "git", + "权限" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -116,7 +144,11 @@ { "将本地仓库关联并推送到远程仓库": { "node_id": "toolchains-ffc3c659453a48d19673ac82965d05e8", - "keywords": [], + "keywords": [ + "git", + "remote", + "push" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -125,7 +157,10 @@ { "项目成员和权限管理": { "node_id": "toolchains-3a1f4be17fcb4fc38907585dd297d48e", - "keywords": [], + "keywords": [ + "user", + "permission" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -144,7 +179,10 @@ { "安装nodejs环境": { "node_id": "toolchains-adb4004580bc476a85d513d0be3a5033", - "keywords": [], + "keywords": [ + "nodejs", + "install" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -153,7 +191,9 @@ { "解决国外npm源下载速度与访问限制问题": { "node_id": "toolchains-9493364f64ac4e0abe44b544b90546a3", - "keywords": [], + "keywords": [ + "npm" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -162,7 +202,10 @@ { "在项目工作空间中创建前端项目目录": { "node_id": "toolchains-720ff92db7e94d0db637f7f3329ed92a", - "keywords": [], + "keywords": [ + "npm", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -171,7 +214,9 @@ { "开发前准备工作(VUE版)": { "node_id": "toolchains-e997d39c64ea47e381d0f7097866abdf", - "keywords": [], + "keywords": [ + "vue" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -190,7 +235,10 @@ { "安装anaconda": { "node_id": "toolchains-b3950355b1cc40dfb66e37eb0c6523c8", - "keywords": [], + "keywords": [ + "python", + "anaconda" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -199,7 +247,10 @@ { "在工作空间中创建后端项目目录": { "node_id": "toolchains-d117cf4df65c429cba528a1d9f3c3e27", - "keywords": [], + "keywords": [ + "python", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -208,7 +259,11 @@ { "创建虚拟环境": { "node_id": "toolchains-37e699a027764e44817f3432debd449c", - "keywords": [], + "keywords": [ + "python", + "venv", + "virtualenv" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -217,7 +272,10 @@ { "项目开发前准备工作(flask版)": { "node_id": "toolchains-172e7ed9e81c4042bcb3e43de8712532", - "keywords": [], + "keywords": [ + "python", + "flask" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -246,7 +304,9 @@ { "使用vue脚手架创建项目": { "node_id": "toolchains-627cf848cba64a56b6b5a3cd550bfec7", - "keywords": [], + "keywords": [ + "vue" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -255,7 +315,10 @@ { "项目源码及目录结构说明": { "node_id": "toolchains-8b07ab0558ef451b9bdf111107034eba", - "keywords": [], + "keywords": [ + "vue", + "project" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -264,7 +327,10 @@ { "创建第一个页面": { "node_id": "toolchains-5c9d4bcbe11942d3a869ab47df26c097", - "keywords": [], + "keywords": [ + "vue", + "page" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -273,7 +339,10 @@ { "配置路由": { "node_id": "toolchains-e6cbb70c80394cda8c6b2abc0c779fc6", - "keywords": [], + "keywords": [ + "vue", + "route" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -282,7 +351,11 @@ { "进行前端项目第一次版本提交": { "node_id": "toolchains-c7f2bf5d40ad4d0b955f7f107581223a", - "keywords": [], + "keywords": [ + "vue", + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -291,7 +364,10 @@ { "新建分支": { "node_id": "toolchains-eb45a452a6a04511968ef5b15c657a1d", - "keywords": [], + "keywords": [ + "git", + "branch" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -300,7 +376,10 @@ { "抽离组件": { "node_id": "toolchains-0f9e83a3974e4db0a7a4a125a2214e4e", - "keywords": [], + "keywords": [ + "vue", + "component" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -309,7 +388,10 @@ { "合并分支": { "node_id": "toolchains-772b173292fa46b3a5ce1209a22f076f", - "keywords": [], + "keywords": [ + "git", + "merge" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -318,7 +400,10 @@ { "进一步抽离组件": { "node_id": "toolchains-7e6fd53fe3a84f31a8aed859e4e45083", - "keywords": [], + "keywords": [ + "vue", + "component" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -327,7 +412,12 @@ { "分支冲突处理": { "node_id": "toolchains-666893ee200a4d6db5435abd09d8f47a", - "keywords": [], + "keywords": [ + "git", + "merge", + "conflict", + "resolve" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -336,7 +426,11 @@ { "提取组件中的状态使用vuex进行状态管理": { "node_id": "toolchains-f24bcb8bea6b45368070c9b9f508606c", - "keywords": [], + "keywords": [ + "vue", + "state", + "vuex" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -345,7 +439,10 @@ { "模拟ajax请求": { "node_id": "toolchains-8b2b197bdbd944dea1918a4029343f0f", - "keywords": [], + "keywords": [ + "ajax", + "http" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -364,7 +461,10 @@ { "创建flask项目": { "node_id": "toolchains-e1e9c87df6c64d69b44946f6f8bd38f0", - "keywords": [], + "keywords": [ + "python", + "flask" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -373,7 +473,10 @@ { "配置并使用IDE(pycharm)": { "node_id": "toolchains-807a4d7ac2c543df8668d6be52dbdae3", - "keywords": [], + "keywords": [ + "python", + "pycharm" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -382,7 +485,11 @@ { "创建项目配置文件": { "node_id": "toolchains-d2f1500609564ae8b7d9f33f1c03edf4", - "keywords": [], + "keywords": [ + "flask", + "config", + "settings" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -391,7 +498,10 @@ { "进行初次后端版本提交": { "node_id": "toolchains-d34786cfe2d34f1ebbcc381f7234feeb", - "keywords": [], + "keywords": [ + "git", + "commit" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -400,7 +510,11 @@ { "设置数据库连接(mysql)": { "node_id": "toolchains-238848692f9e479c928f1a003acb8ffe", - "keywords": [], + "keywords": [ + "python", + "mysql", + "dbapi" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -409,7 +523,10 @@ { "使用sqlalchemy": { "node_id": "toolchains-f3a77b9ee7cd4687b8fdfa1a7e9ee70d", - "keywords": [], + "keywords": [ + "python", + "sqlalchemy" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -418,16 +535,12 @@ { "配置数据模型": { "node_id": "toolchains-c17747cb6fb34e0782cd63103c26059f", - "keywords": [], - "children": [], - "keywords_must": [], - "keywords_forbid": [] - } - }, - { - "配置数据模型": { - "node_id": "toolchains-d96ecd596dba40ffbbca6d364a9bae6d", - "keywords": [], + "keywords": [ + "flask", + "python", + "sqlalchemy", + "model" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -436,7 +549,12 @@ { "使用数据迁移初始化数据库": { "node_id": "toolchains-64e0f059275740a6abc4808a35f3e2d2", - "keywords": [], + "keywords": [ + "python", + "flask", + "sqlalchemy", + "migration" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -445,7 +563,12 @@ { "配置数据模型序列化工具": { "node_id": "toolchains-179bf9f789a24f83beccaecd621474e1", - "keywords": [], + "keywords": [ + "python", + "flask", + "sqlalchemy", + "serialization" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -454,7 +577,11 @@ { "设置访问路由": { "node_id": "toolchains-9f6fdcbcafd3477897bf16d0dd2be262", - "keywords": [], + "keywords": [ + "python", + "flask", + "route" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -463,7 +590,11 @@ { "完成第一个接口返回json格式数据": { "node_id": "toolchains-286ed617cbac42a29dbd757361f1f0b3", - "keywords": [], + "keywords": [ + "python", + "flask", + "json" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -472,7 +603,13 @@ { "获取表单数据并将数据保存到数据库": { "node_id": "toolchains-93040f93301f41d080b62385eeb59d70", - "keywords": [], + "keywords": [ + "python", + "flask", + "form", + "post", + "database" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -481,7 +618,11 @@ { "使用装饰器设置中间件拦截请求": { "node_id": "toolchains-3a33244e3ab6490e9819a30d8cae5612", - "keywords": [], + "keywords": [ + "python", + "flask", + "decorator" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -490,7 +631,11 @@ { "连接redis": { "node_id": "toolchains-2f9cd0de2cc14dcb9ba4a1e76547b72b", - "keywords": [], + "keywords": [ + "python", + "flask", + "redis" + ], "children": [], "keywords_must": [], "keywords_forbid": [] @@ -499,7 +644,12 @@ { "使用令牌验证客户端身份": { "node_id": "toolchains-d1a69b26dab3472ca23bab5cf4dfd40a", - "keywords": [], + "keywords": [ + "python", + "flask", + "auth", + "token" + ], "children": [], "keywords_must": [], "keywords_forbid": [] diff --git a/main.py b/main.py index 101f6cb..a763a57 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -from src.tree import TreeWalker +from skill_tree.tree import TreeWalker if __name__ == '__main__': walker = TreeWalker("data", "toolchains", "toolchains") diff --git a/requirements.txt b/requirements.txt index e69de29..9305578 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1 @@ +skill-tree-parser~=0.0.5 \ No newline at end of file diff --git a/src/tree.py b/src/tree.py deleted file mode 100644 index 0c58d32..0000000 --- a/src/tree.py +++ /dev/null @@ -1,425 +0,0 @@ -import json -import logging -import os -import re -import subprocess -import sys -import uuid -import re - -id_set = set() -logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) -handler = logging.StreamHandler(sys.stdout) -formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') -handler.setFormatter(formatter) -logger.addHandler(handler) - - -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', encoding="utf-8") as f: - return json.loads(f.read()) - - -def dump_json(p, j, exist_ok=False, override=False): - if os.path.exists(p): - if exist_ok: - if not override: - return - else: - logger.error(f"{p} already exist") - sys.exit(0) - - with open(p, 'w+', encoding="utf8") as f: - f.write(json.dumps(j, indent=2, ensure_ascii=False)) - - -def ensure_config(path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - node = {"keywords": []} - dump_json(config_path, node, exist_ok=True, override=False) - return node - else: - return load_json(config_path) - - -def parse_no_name(d): - p = r'(\d+)\.(.*)' - m = re.search(p, d) - - try: - no = int(m.group(1)) - dir_name = m.group(2) - except: - sys.exit(0) - - return no, dir_name - - -def check_export(base, cfg): - flag = False - exports = [] - for export in cfg.get('export', []): - ecfg_path = os.path.join(base, export) - if os.path.exists(ecfg_path): - exports.append(export) - else: - flag = True - if flag: - cfg["export"] = exports - return flag - - -class TreeWalker: - 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 - self.tree = {} - self.logger = logger if log is None else log - - def walk(self): - root = self.load_root() - root_node = { - "node_id": root["node_id"], - "keywords": root["keywords"], - "children": [], - "keywords_must": root["keywords_must"], - "keywords_forbid": root["keywords_forbid"] - } - self.tree[root["tree_name"]] = root_node - self.load_levels(root_node) - self.load_chapters(self.root, root_node) - for index, level in enumerate(root_node["children"]): - level_title = list(level.keys())[0] - level_node = list(level.values())[0] - level_path = os.path.join(self.root, f"{index + 1}.{level_title}") - self.load_chapters(level_path, level_node) - for index, chapter in enumerate(level_node["children"]): - chapter_title = list(chapter.keys())[0] - chapter_node = list(chapter.values())[0] - chapter_path = os.path.join( - level_path, f"{index + 1}.{chapter_title}") - self.load_sections(chapter_path, chapter_node) - for index, section_node in enumerate(chapter_node["children"]): - section_title = list(section_node.keys())[0] - full_path = os.path.join( - chapter_path, f"{index + 1}.{section_title}") - if os.path.isdir(full_path): - self.check_section_keywords(full_path) - self.ensure_exercises(full_path) - - tree_path = os.path.join(self.root, "tree.json") - dump_json(tree_path, self.tree, exist_ok=True, override=True) - return self.tree - - def sort_dir_list(self, dirs): - result = [self.extract_node_env(dir) for dir in dirs] - result.sort(key=lambda item: item[0]) - return result - - def load_levels(self, root_node): - levels = [] - for level in os.listdir(self.root): - if not os.path.isdir(level): - continue - level_path = os.path.join(self.root, level) - num, config = self.load_level_node(level_path) - levels.append((num, config)) - - levels = self.resort_children(self.root, levels) - root_node["children"] = [item[1] for item in levels] - return root_node - - def load_level_node(self, level_path): - config = self.ensure_level_config(level_path) - num, name = self.extract_node_env(level_path) - - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": [], - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - - return num, result - - def load_chapters(self, base, level_node): - chapters = [] - for name in os.listdir(base): - full_name = os.path.join(base, name) - if os.path.isdir(full_name): - num, chapter = self.load_chapter_node(full_name) - chapters.append((num, chapter)) - - chapters = self.resort_children(base, chapters) - level_node["children"] = [item[1] for item in chapters] - return level_node - - def load_sections(self, base, chapter_node): - sections = [] - for name in os.listdir(base): - full_name = os.path.join(base, name) - if os.path.isdir(full_name): - num, section = self.load_section_node(full_name) - sections.append((num, section)) - - sections = self.resort_children(base, sections) - chapter_node["children"] = [item[1] for item in sections] - return chapter_node - - def resort_children(self, base, children): - children.sort(key=lambda item: item[0]) - for index, [number, element] in enumerate(children): - title = list(element.keys())[0] - origin = os.path.join(base, f"{number}.{title}") - posted = os.path.join(base, f"{index + 1}.{title}") - if origin != posted: - self.logger.info(f"rename [{origin}] to [{posted}]") - os.rename(origin, posted) - return children - - def ensure_chapters(self): - for subdir in os.listdir(self.root): - self.ensure_level_config(subdir) - - def load_root(self): - config_path = os.path.join(self.root, "config.json") - if not os.path.exists(config_path): - config = { - "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: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, result, exist_ok=True, override=True) - - return config - - def ensure_level_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id() - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, config, exist_ok=True, override=True) - return config - - def ensure_chapter_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id(), - "keywords": [], - "keywords_must": [], - "keywords_forbid": [] - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, config, exist_ok=True, override=True) - return config - - def ensure_section_config(self, path): - config_path = os.path.join(path, "config.json") - if not os.path.exists(config_path): - config = { - "node_id": self.gen_node_id(), - "keywords": [], - "children": [], - "export": [] - } - dump_json(config_path, config, exist_ok=True, override=True) - else: - config = load_json(config_path) - flag, result = self.ensure_node_id(config) - if flag: - dump_json(config_path, result, exist_ok=True, override=True) - return config - - def ensure_node_id(self, config): - flag = False - if "node_id" not in config or \ - not config["node_id"].startswith(f"{self.name}-") or \ - config["node_id"] in id_set: - new_id = self.gen_node_id() - id_set.add(new_id) - config["node_id"] = new_id - flag = True - - for child in config.get("children", []): - child_node = list(child.values())[0] - f, _ = self.ensure_node_id(child_node) - flag = flag or f - - return flag, config - - def gen_node_id(self): - return f"{self.name}-{uuid.uuid4().hex}" - - def extract_node_env(self, path): - try: - _, dir = os.path.split(path) - self.logger.info(path) - number, title = dir.split(".", 1) - return int(number), title - except Exception as error: - self.logger.error(f"目录 [{path}] 解析失败,结构不合法,可能是缺少序号") - # sys.exit(1) - raise error - - def load_chapter_node(self, full_name): - config = self.ensure_chapter_config(full_name) - num, name = self.extract_node_env(full_name) - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": [], - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - return num, result - - def load_section_node(self, full_name): - config = self.ensure_section_config(full_name) - num, name = self.extract_node_env(full_name) - result = { - name: { - "node_id": config["node_id"], - "keywords": config["keywords"], - "children": config.get("children", []), - "keywords_must": config["keywords_must"], - "keywords_forbid": config["keywords_forbid"] - } - } - # if "children" in config: - # result["children"] = config["children"] - return num, result - - def ensure_exercises(self, section_path): - config = self.ensure_section_config(section_path) - flag = False - for e in os.listdir(section_path): - base, ext = os.path.splitext(e) - _, source = os.path.split(e) - if ext != ".md": - continue - mfile = base + ".json" - meta_path = os.path.join(section_path, mfile) - 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) - flag = True - config["export"] = export - - if flag: - dump_json(os.path.join(section_path, "config.json"), - config, True, True) - - for e in config.get("export", []): - full_name = os.path.join(section_path, e) - exercise = load_json(full_name) - if "exercise_id" not in exercise or exercise.get("exercise_id") in id_set: - eid = uuid.uuid4().hex - exercise["exercise_id"] = eid - dump_json(full_name, exercise, True, True) - else: - id_set.add(exercise["exercise_id"]) - - def ensure_exercises_meta(self, meta_path, source, md_file): - _, mfile = os.path.split(meta_path) - meta = None - if os.path.exists(meta_path): - with open(meta_path) as f: - content = f.read() - if content: - meta = json.loads(content) - if "exercise_id" not in meta: - meta["exercise_id"] = uuid.uuid4().hex - if "notebook_enable" not in meta: - meta["notebook_enable"] = self.default_notebook() - if "source" not in meta: - meta["source"] = source - if "author" not in meta: - 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(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) -- GitLab