From ba917ec5a3c51903cbe73c395fba12e78449d6c2 Mon Sep 17 00:00:00 2001 From: <> Date: Tue, 3 Jun 2025 17:43:41 +0000 Subject: [PATCH] Deployed b71afb6 with MkDocs version: 1.6.1 --- .../008bdcfed0b0b9b589c54c03e8783d0d.json | 7 + .../0b6176fc36485a4b7648d96ffd6b7282.json | 7 + .../0d3e95ce9ad53d469c8aaae47719525f.json | 7 + .../0dcbc37ab3e6963f1b3741d81c32b9c9.json | 7 + .../0ec4ff66c09bcbc1f189ff70391a7d5d.json | 7 + .../0eeeda15a44fd8926aaf5ff9812ea5ea.json | 7 + .../11703e885f66213ef55252aa0203d1f8.json | 7 + .../13352c45213bc8b828bab035a8bdf5b8.json | 6 - .../198ba1700861d3d81c32e4135edbe41c.json | 6 - .../1b4e1af979077c14c74bbed4bef9c267.json | 6 - .../2159251c4cc57ddc1a2e5a4d6ce49b0f.json | 7 + .../220350a8f8e51d3b7455257138a808af.json | 7 + .../277b36310e56b2d1abf896f3be1decbe.json | 6 - .../2d86ca064a44a260d18cfb9cb515d7a0.json | 7 + .../2f0d26f2d010b74892d9144710852c11.json | 7 + .../30abfae7f16ecb7e41855d7ee59fe151.json | 7 + .../3309c39267871635526f6fed179bdcc7.json | 7 + .../3b92e621cadfddb1f9d06e307c5f7ccf.json | 7 + .../3d3b50606857af8f7e5e972fcf31b31f.json | 7 + .../3d9da43a479c2f295e2ac1fd9b1d4145.json | 6 - .../411d15b724d84b39c08a49542ab56284.json | 6 - .../41af14f53464f96f48f956e0a80c7fac.json | 6 - .../42b524e7ffe869ec1cdd013899773fe9.json | 7 + .../4d823b90bb4a370baba6d254759e8951.json | 7 + .../5560f97450f87a5fc516715dca59124e.json | 7 + .../59c551361d3a6a9dc416cfcb9a16b6d0.json | 7 + .../5babf7c4c0d88d50ac56ea5a64bece7f.json | 6 - .../608652015d8fccc03a9c1fb96962eb06.json | 6 - .../61a0c2de31fe7161b6939bbf46a5034c.json | 6 - .../63c53d3efcef0bbfa3517cc57124ea22.json | 6 - .../676d241d1f71cee7979d1437ab409429.json | 6 - .../6e3557e004b1983d54297433aa07fe32.json | 6 - .../7312994b59876da56cecf87e6ce38b89.json | 6 - .../77612039e8879ec0a34732497e4d927b.json | 6 - .../78377a142b37e49176adad2a7dc5ea03.json | 6 - .../88d3fe972a711ac574cdb224f89be6f8.json | 6 - .../89458e1939eedd5696536b60dff41f99.json | 6 - .../9135036bb2cee912073c79448a507199.json | 7 + .../93960e1d1b82fdcade6022ecf95972c4.json | 6 - .../941b898d6a2fb8331109e1dbec8a087c.json | 7 + .../ab758b5aa76ff31704c3afef8781f32b.json | 6 - .../b387ce5ca7493235052b340338689e8a.json | 7 + .../b4fdcb1514d03b4a0bfa36bce929faae.json | 6 - .../bd5eaaa9ad0f9655b0296602b3e4df7d.json | 6 - .../c03fd194cc489c84f164657182d47b2f.json | 6 - .../c8088321e603b20469a9826a88748350.json | 6 - .../cb9d4d1856da4475fdde51c070fbc24d.json | 6 - .../cee9dfb7bfb56fa9e63e493a418499c3.json | 6 - .../d117ae5382dbad25458d5b090dcb8c42.json | 6 - .../d3b41a11e5859b15b2707e47aae0c888.json | 7 + .../d9cacc5ca0e343bad0c95d22720949e9.json | 7 + .../e7267ce6a4cd1f5054768befa04b1173.json | 7 + .../e7d21b0b28a677cebf96cb4d84eddef0.json | 7 + .../eb9262abe9f1173610b1de79da25b5dd.json | 7 + .../ee2f15a1a2f326e50b283acbba050ccf.json | 7 + .ai_cache/service_config.json | 9 + about/geren/index.html | 4 +- blog/2022/06/06/2022网站更新记录/index.html | 13 +- blog/2023/12/21/2023网站更新记录/index.html | 8 +- blog/2024/01/01/2024网站更新记录/index.html | 8 +- blog/2025/01/01/2025网站更新记录/index.html | 8 +- blog/MIT/index.html | 8 +- blog/Mkdocs/mkdocs1/index.html | 9 +- blog/Mkdocs/mkdocs2/index.html | 10 +- blog/Mkdocs/mkdocs3/index.html | 5 + blog/Mkdocs/mkdocsblog/index.html | 8 + blog/Mkdocs/mkfirst/index.html | 11 +- blog/archive/2022/index.html | 13 +- blog/archive/2023/index.html | 8 +- blog/archive/2024/index.html | 8 +- blog/archive/2025/index.html | 8 +- blog/category/网站更新记录/index.html | 37 +- blog/index.html | 37 +- blog/websitebeauty/MkDocs-AI-Hooks/index.html | 9 +- blog/websitebeauty/Relativeaddress/index.html | 10 +- blog/websitebeauty/accelerate/index.html | 10 +- blog/websitebeauty/backgroud/index.html | 11 +- blog/websitebeauty/footer/index.html | 6 + blog/websitebeauty/header/index.html | 8 + blog/websitebeauty/mkcomments/index.html | 10 +- blog/websitebeauty/mkdocsfont/index.html | 9 +- blog/websitebeauty/shubiao/index.html | 8 +- blog/websitebeauty/time/index.html | 8 +- blog/websitebeauty/webtalknow/index.html | 10 +- blog/websitebeauty/yuanjiaohua/index.html | 12 +- develop/Markdown/MWeb/index.html | 8 +- develop/Markdown/markdown/index.html | 8 +- develop/designbeauty/db1/index.html | 11 +- develop/designbeauty/my-to-desihn/index.html | 8 +- develop/git/index.html | 16 +- develop/lighthouse/index.html | 6 + .../__pycache__/ai_summary.cpython-311.pyc | Bin 27203 -> 41109 bytes .../__pycache__/ai_summary.cpython-313.pyc | Bin 24881 -> 48725 bytes .../__pycache__/socialmedia.cpython-313.pyc | Bin 1298 -> 1298 bytes overrides/hooks/ai_summary.py | 960 ++++++++++++++---- overrides/hooks/test.py | 2 +- search/search_index.json | 2 +- 97 files changed, 1195 insertions(+), 507 deletions(-) create mode 100644 .ai_cache/008bdcfed0b0b9b589c54c03e8783d0d.json create mode 100644 .ai_cache/0b6176fc36485a4b7648d96ffd6b7282.json create mode 100644 .ai_cache/0d3e95ce9ad53d469c8aaae47719525f.json create mode 100644 .ai_cache/0dcbc37ab3e6963f1b3741d81c32b9c9.json create mode 100644 .ai_cache/0ec4ff66c09bcbc1f189ff70391a7d5d.json create mode 100644 .ai_cache/0eeeda15a44fd8926aaf5ff9812ea5ea.json create mode 100644 .ai_cache/11703e885f66213ef55252aa0203d1f8.json delete mode 100644 .ai_cache/13352c45213bc8b828bab035a8bdf5b8.json delete mode 100644 .ai_cache/198ba1700861d3d81c32e4135edbe41c.json delete mode 100644 .ai_cache/1b4e1af979077c14c74bbed4bef9c267.json create mode 100644 .ai_cache/2159251c4cc57ddc1a2e5a4d6ce49b0f.json create mode 100644 .ai_cache/220350a8f8e51d3b7455257138a808af.json delete mode 100644 .ai_cache/277b36310e56b2d1abf896f3be1decbe.json create mode 100644 .ai_cache/2d86ca064a44a260d18cfb9cb515d7a0.json create mode 100644 .ai_cache/2f0d26f2d010b74892d9144710852c11.json create mode 100644 .ai_cache/30abfae7f16ecb7e41855d7ee59fe151.json create mode 100644 .ai_cache/3309c39267871635526f6fed179bdcc7.json create mode 100644 .ai_cache/3b92e621cadfddb1f9d06e307c5f7ccf.json create mode 100644 .ai_cache/3d3b50606857af8f7e5e972fcf31b31f.json delete mode 100644 .ai_cache/3d9da43a479c2f295e2ac1fd9b1d4145.json delete mode 100644 .ai_cache/411d15b724d84b39c08a49542ab56284.json delete mode 100644 .ai_cache/41af14f53464f96f48f956e0a80c7fac.json create mode 100644 .ai_cache/42b524e7ffe869ec1cdd013899773fe9.json create mode 100644 .ai_cache/4d823b90bb4a370baba6d254759e8951.json create mode 100644 .ai_cache/5560f97450f87a5fc516715dca59124e.json create mode 100644 .ai_cache/59c551361d3a6a9dc416cfcb9a16b6d0.json delete mode 100644 .ai_cache/5babf7c4c0d88d50ac56ea5a64bece7f.json delete mode 100644 .ai_cache/608652015d8fccc03a9c1fb96962eb06.json delete mode 100644 .ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json delete mode 100644 .ai_cache/63c53d3efcef0bbfa3517cc57124ea22.json delete mode 100644 .ai_cache/676d241d1f71cee7979d1437ab409429.json delete mode 100644 .ai_cache/6e3557e004b1983d54297433aa07fe32.json delete mode 100644 .ai_cache/7312994b59876da56cecf87e6ce38b89.json delete mode 100644 .ai_cache/77612039e8879ec0a34732497e4d927b.json delete mode 100644 .ai_cache/78377a142b37e49176adad2a7dc5ea03.json delete mode 100644 .ai_cache/88d3fe972a711ac574cdb224f89be6f8.json delete mode 100644 .ai_cache/89458e1939eedd5696536b60dff41f99.json create mode 100644 .ai_cache/9135036bb2cee912073c79448a507199.json delete mode 100644 .ai_cache/93960e1d1b82fdcade6022ecf95972c4.json create mode 100644 .ai_cache/941b898d6a2fb8331109e1dbec8a087c.json delete mode 100644 .ai_cache/ab758b5aa76ff31704c3afef8781f32b.json create mode 100644 .ai_cache/b387ce5ca7493235052b340338689e8a.json delete mode 100644 .ai_cache/b4fdcb1514d03b4a0bfa36bce929faae.json delete mode 100644 .ai_cache/bd5eaaa9ad0f9655b0296602b3e4df7d.json delete mode 100644 .ai_cache/c03fd194cc489c84f164657182d47b2f.json delete mode 100644 .ai_cache/c8088321e603b20469a9826a88748350.json delete mode 100644 .ai_cache/cb9d4d1856da4475fdde51c070fbc24d.json delete mode 100644 .ai_cache/cee9dfb7bfb56fa9e63e493a418499c3.json delete mode 100644 .ai_cache/d117ae5382dbad25458d5b090dcb8c42.json create mode 100644 .ai_cache/d3b41a11e5859b15b2707e47aae0c888.json create mode 100644 .ai_cache/d9cacc5ca0e343bad0c95d22720949e9.json create mode 100644 .ai_cache/e7267ce6a4cd1f5054768befa04b1173.json create mode 100644 .ai_cache/e7d21b0b28a677cebf96cb4d84eddef0.json create mode 100644 .ai_cache/eb9262abe9f1173610b1de79da25b5dd.json create mode 100644 .ai_cache/ee2f15a1a2f326e50b283acbba050ccf.json create mode 100644 .ai_cache/service_config.json diff --git a/.ai_cache/008bdcfed0b0b9b589c54c03e8783d0d.json b/.ai_cache/008bdcfed0b0b9b589c54c03e8783d0d.json new file mode 100644 index 0000000..1a76c28 --- /dev/null +++ b/.ai_cache/008bdcfed0b0b9b589c54c03e8783d0d.json @@ -0,0 +1,7 @@ +{ + "summary": "info\n原文地址:Git 实用技巧{target=\"_blank\"}\n\nGit 实用技巧\n一、基本操作\n1.新建 git 仓库\n[代码示例]\n\n[图片:] \n\n[代码示例]\n\n2.", + "service": "fallback", + "page_title": "Git 实用技巧", + "timestamp": "2025-06-03T17:43:39.128385", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/0b6176fc36485a4b7648d96ffd6b7282.json b/.ai_cache/0b6176fc36485a4b7648d96ffd6b7282.json new file mode 100644 index 0000000..44fea68 --- /dev/null +++ b/.ai_cache/0b6176fc36485a4b7648d96ffd6b7282.json @@ -0,0 +1,7 @@ +{ + "summary": "页脚设置 \n\nMkDocs 支持自定义页脚.[图片:]\n\n在docs/overrides/partials/footer.html中(没有该文件时,创建footer.", + "service": "fallback", + "page_title": "页脚设置", + "timestamp": "2025-06-03T17:43:38.962843", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/0d3e95ce9ad53d469c8aaae47719525f.json b/.ai_cache/0d3e95ce9ad53d469c8aaae47719525f.json new file mode 100644 index 0000000..5523a10 --- /dev/null +++ b/.ai_cache/0d3e95ce9ad53d469c8aaae47719525f.json @@ -0,0 +1,7 @@ +{ + "summary": "以Tidio为例,Tidio免费版已经完全够用且无需梯子\n\n访问Tidio官网\n\n要在您的网站上使用 javascript 代码方法安装 Tidio,您需要创建一个 Tidio 帐户.", + "service": "fallback", + "page_title": "添加在线聊天", + "timestamp": "2025-06-03T17:43:39.099350", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/0dcbc37ab3e6963f1b3741d81c32b9c9.json b/.ai_cache/0dcbc37ab3e6963f1b3741d81c32b9c9.json new file mode 100644 index 0000000..b6accf8 --- /dev/null +++ b/.ai_cache/0dcbc37ab3e6963f1b3741d81c32b9c9.json @@ -0,0 +1,7 @@ +{ + "summary": "png]\n\n如何设计\n新建css文件,在mkdocs.示例 \n[图片:iShot_2024-04-26_12.png] \n[图片:image.", + "service": "fallback", + "page_title": "网页圆角化设计", + "timestamp": "2025-06-03T17:43:39.108555", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/0ec4ff66c09bcbc1f189ff70391a7d5d.json b/.ai_cache/0ec4ff66c09bcbc1f189ff70391a7d5d.json new file mode 100644 index 0000000..97dbdcc --- /dev/null +++ b/.ai_cache/0ec4ff66c09bcbc1f189ff70391a7d5d.json @@ -0,0 +1,7 @@ +{ + "summary": "github/workflows/下的ci.", + "service": "fallback", + "page_title": "为MKdocs添加文章修订时间戳", + "timestamp": "2025-06-03T17:43:39.082977", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/0eeeda15a44fd8926aaf5ff9812ea5ea.json b/.ai_cache/0eeeda15a44fd8926aaf5ff9812ea5ea.json new file mode 100644 index 0000000..31ce67a --- /dev/null +++ b/.ai_cache/0eeeda15a44fd8926aaf5ff9812ea5ea.json @@ -0,0 +1,7 @@ +{ + "summary": "本文深入探讨了相关技术内容,提供了实用的方法和解决方案。", + "service": "fallback", + "page_title": "许可声明", + "timestamp": "2025-06-03T17:43:38.547322", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/11703e885f66213ef55252aa0203d1f8.json b/.ai_cache/11703e885f66213ef55252aa0203d1f8.json new file mode 100644 index 0000000..f1d7515 --- /dev/null +++ b/.ai_cache/11703e885f66213ef55252aa0203d1f8.json @@ -0,0 +1,7 @@ +{ + "summary": "在/docs目录下创建一个 CNAME 的 无后缀 文件,然后在里面填入你的域名 \n[图片:].", + "service": "fallback", + "page_title": "3.解决Github Pages部署mkdocs自定义域名失效的问题", + "timestamp": "2025-06-03T17:43:38.633624", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/13352c45213bc8b828bab035a8bdf5b8.json b/.ai_cache/13352c45213bc8b828bab035a8bdf5b8.json deleted file mode 100644 index 1e24122..0000000 --- a/.ai_cache/13352c45213bc8b828bab035a8bdf5b8.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "giscus是一款基于GitHub Discussions的开源评论系统,无需数据库,数据直接存储在GitHub中。它具有无跟踪、无广告、永久免费的特点,支持多语言、自定义主题和高可配置性。系统能自动同步GitHub的评论更新,适用于静态网站集成,提供轻量级、隐私友好的评论解决方案,同时允许用户自建服务。", - "service": "deepseek", - "page_title": "添加评论系统(giscus为例)", - "timestamp": "2025-06-03T16:16:38.038207" -} \ No newline at end of file diff --git a/.ai_cache/198ba1700861d3d81c32e4135edbe41c.json b/.ai_cache/198ba1700861d3d81c32e4135edbe41c.json deleted file mode 100644 index b83374c..0000000 --- a/.ai_cache/198ba1700861d3d81c32e4135edbe41c.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该项目为MkDocs文档系统提供AI驱动的智能摘要生成和阅读统计功能,支持OpenAI、DeepSeek等多API服务。核心特性包括自动生成80-120字高质量摘要、多语言支持、智能内容清理和高效缓存系统,同时提供精准的中文阅读统计和阅读时间估算。通过灵活的配置选项,用户可实现文件夹或页面级别的精确控制,并自定义API服务和提示词。该工具显著提升了技术文档的可读性和管理效率。", - "service": "deepseek", - "page_title": "MkDocs文档AI摘要", - "timestamp": "2025-06-03T20:49:35.847514" -} \ No newline at end of file diff --git a/.ai_cache/1b4e1af979077c14c74bbed4bef9c267.json b/.ai_cache/1b4e1af979077c14c74bbed4bef9c267.json deleted file mode 100644 index fa5bda3..0000000 --- a/.ai_cache/1b4e1af979077c14c74bbed4bef9c267.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。", - "service": "deepseek", - "page_title": "2022网站更新记录", - "timestamp": "2025-06-03T16:15:36.310549" -} \ No newline at end of file diff --git a/.ai_cache/2159251c4cc57ddc1a2e5a4d6ce49b0f.json b/.ai_cache/2159251c4cc57ddc1a2e5a4d6ce49b0f.json new file mode 100644 index 0000000..cfa61b9 --- /dev/null +++ b/.ai_cache/2159251c4cc57ddc1a2e5a4d6ce49b0f.json @@ -0,0 +1,7 @@ +{ + "summary": "针对MKdocs中相对地址引用的一些问题\n\n在使用 MkDocs 构建文档网站时,常常会遇到相对地址引用的问题,尤其是在图片、PDF、其他静态资源等的引用上.下面总结一些常见场景和注意事项:\n\n1.", + "service": "fallback", + "page_title": "相对地址的一些问题", + "timestamp": "2025-06-03T17:43:38.892134", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/220350a8f8e51d3b7455257138a808af.json b/.ai_cache/220350a8f8e51d3b7455257138a808af.json new file mode 100644 index 0000000..b64382c --- /dev/null +++ b/.ai_cache/220350a8f8e51d3b7455257138a808af.json @@ -0,0 +1,7 @@ +{ + "summary": "原文:Norman's Three Levels of Design\n[图片:]\n唐·诺曼—情感设计的三个层次\n\n在人类的内心世界,有许多部分负责我们所说的情感,总的来说,这些区域共同构成了情感系统.", + "service": "fallback", + "page_title": "唐·诺曼—情感设计的三个层次", + "timestamp": "2025-06-03T17:43:39.315349", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/277b36310e56b2d1abf896f3be1decbe.json b/.ai_cache/277b36310e56b2d1abf896f3be1decbe.json deleted file mode 100644 index aae5086..0000000 --- a/.ai_cache/277b36310e56b2d1abf896f3be1decbe.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "霞鹜文楷是一款基于日本FONTWORKS公司Klee One衍生的开源中文字体,兼具仿宋和楷体特点,适合诗词和注释排版。提供多个版本:屏幕阅读版、轻便版、GB/TC规范版等,支持简繁日韩字符。该字体解决了商业字体侵权风险问题,填补了开源中文字体中楷体类的空白。用户可通过GitHub、Gitee等平台获取,支持Windows/macOS系统安装。字体采用SIL Open Font License 1.1授权,适合网站和移动设备使用。", - "service": "deepseek", - "page_title": "修改网站字体", - "timestamp": "2025-06-03T16:16:50.880853" -} \ No newline at end of file diff --git a/.ai_cache/2d86ca064a44a260d18cfb9cb515d7a0.json b/.ai_cache/2d86ca064a44a260d18cfb9cb515d7a0.json new file mode 100644 index 0000000..1163323 --- /dev/null +++ b/.ai_cache/2d86ca064a44a260d18cfb9cb515d7a0.json @@ -0,0 +1,7 @@ +{ + "summary": "博客效果展示:博客 \n\n官方文档:Built-in blog plugin\n\n与所有内置插件一样,博客插件的入门非常简单.yml\n\n``[代码]`` \n\n作者信息在docs/blog/.", + "service": "fallback", + "page_title": "添加Mkdocs博客", + "timestamp": "2025-06-03T17:43:38.640397", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/2f0d26f2d010b74892d9144710852c11.json b/.ai_cache/2f0d26f2d010b74892d9144710852c11.json new file mode 100644 index 0000000..644ea24 --- /dev/null +++ b/.ai_cache/2f0d26f2d010b74892d9144710852c11.json @@ -0,0 +1,7 @@ +{ + "summary": "本文深入探讨了相关技术内容,提供了实用的方法和解决方案。", + "service": "fallback", + "page_title": "2025网站更新记录", + "timestamp": "2025-06-03T17:43:38.749710", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/30abfae7f16ecb7e41855d7ee59fe151.json b/.ai_cache/30abfae7f16ecb7e41855d7ee59fe151.json new file mode 100644 index 0000000..aba5ecc --- /dev/null +++ b/.ai_cache/30abfae7f16ecb7e41855d7ee59fe151.json @@ -0,0 +1,7 @@ +{ + "summary": "我目前在用的字体:霞鹜文楷{target=_blank} \n想必你可以直观从我的网站感受到,这款字体的美观程度.> - 若需要在网站上使用这款字体,请参阅 Issue #24.", + "service": "fallback", + "page_title": "修改网站字体", + "timestamp": "2025-06-03T17:43:39.016875", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/3309c39267871635526f6fed179bdcc7.json b/.ai_cache/3309c39267871635526f6fed179bdcc7.json new file mode 100644 index 0000000..0ec1036 --- /dev/null +++ b/.ai_cache/3309c39267871635526f6fed179bdcc7.json @@ -0,0 +1,7 @@ +{ + "summary": "Note\n\n以下代码均在[代码]下复制粘贴\n\n// 在LocalStorage中设置不显示雪花效果的标志\nlocalStorage.", + "service": "fallback", + "page_title": "背景特效", + "timestamp": "2025-06-03T17:43:38.917603", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/3b92e621cadfddb1f9d06e307c5f7ccf.json b/.ai_cache/3b92e621cadfddb1f9d06e307c5f7ccf.json new file mode 100644 index 0000000..913912b --- /dev/null +++ b/.ai_cache/3b92e621cadfddb1f9d06e307c5f7ccf.json @@ -0,0 +1,7 @@ +{ + "summary": "[How to set up Material for MkDocs]: https://space.com/1407028951/lists/4566631.type=series\n\n一、准备工作\n\n1.", + "service": "fallback", + "page_title": "1.利用Mkdocs部署静态网页", + "timestamp": "2025-06-03T17:43:38.556961", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/3d3b50606857af8f7e5e972fcf31b31f.json b/.ai_cache/3d3b50606857af8f7e5e972fcf31b31f.json new file mode 100644 index 0000000..0cc51a3 --- /dev/null +++ b/.ai_cache/3d3b50606857af8f7e5e972fcf31b31f.json @@ -0,0 +1,7 @@ +{ + "summary": "MWeb Pro 是一款适用于macOS的专业Markdown写作、笔记本应用软件.喜欢写博客的朋友,那你一定会需要 MWeb Pro 这款软件.", + "service": "fallback", + "page_title": "MWeb Pro", + "timestamp": "2025-06-03T17:43:39.225628", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/3d9da43a479c2f295e2ac1fd9b1d4145.json b/.ai_cache/3d9da43a479c2f295e2ac1fd9b1d4145.json deleted file mode 100644 index ef4a0ad..0000000 --- a/.ai_cache/3d9da43a479c2f295e2ac1fd9b1d4145.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "唐·诺曼提出的情感设计三层次理论包括本能层、行为层和反思层。本能层关注产品外观引发的即时情感反应,行为层强调使用过程中的功能性和效率,反思层涉及用户对产品的理性认知和自我形象关联。这三个层次相互影响,共同塑造用户对产品的整体体验。该理论为设计提供了系统框架,解释了为何某些产品即使存在功能缺陷仍能获得市场成功。", - "service": "deepseek", - "page_title": "唐·诺曼—情感设计的三个层次", - "timestamp": "2025-06-03T16:18:11.355466" -} \ No newline at end of file diff --git a/.ai_cache/411d15b724d84b39c08a49542ab56284.json b/.ai_cache/411d15b724d84b39c08a49542ab56284.json deleted file mode 100644 index a087247..0000000 --- a/.ai_cache/411d15b724d84b39c08a49542ab56284.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该技术文档展示了一个多功能测试组件,包含代码片段、数学公式、流程图及视频播放器配置等元素。支持HTML、CSS、JavaScript技术栈,提供Markdown内容管理和快速部署功能(5分钟搭建)。具备自定义主题、MIT开源协议特性,适用于构建响应式静态网站。核心组件包括天气插件、极限公式演示及CKPlayer视频播放器初始化方案。", - "service": "deepseek", - "page_title": "功能测试", - "timestamp": "2025-06-03T16:14:38.445737" -} \ No newline at end of file diff --git a/.ai_cache/41af14f53464f96f48f956e0a80c7fac.json b/.ai_cache/41af14f53464f96f48f956e0a80c7fac.json deleted file mode 100644 index 69f6a30..0000000 --- a/.ai_cache/41af14f53464f96f48f956e0a80c7fac.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该文章介绍了通过JavaScript和CSS自定义网页鼠标样式的实现方法,重点说明了关键参数配置,包括鼠标尺寸、颜色(支持RGB值和颜色名称)以及圆形跟随效果。提供了具体的代码示例和配置路径,并强调需在mkdocs.yml中引入相关文件。适用于需要个性化鼠标交互效果的网页开发场景。", - "service": "deepseek", - "page_title": "JS实现鼠标样式", - "timestamp": "2025-06-03T16:16:59.645819" -} \ No newline at end of file diff --git a/.ai_cache/42b524e7ffe869ec1cdd013899773fe9.json b/.ai_cache/42b524e7ffe869ec1cdd013899773fe9.json new file mode 100644 index 0000000..8816da7 --- /dev/null +++ b/.ai_cache/42b524e7ffe869ec1cdd013899773fe9.json @@ -0,0 +1,7 @@ +{ + "summary": "png]\n\ndocs/overrides下新建main.html文件 \n树状结构如下: \n``[代码]`[代码]`[代码]``\n\n在main.", + "service": "fallback", + "page_title": "添加顶部公告栏", + "timestamp": "2025-06-03T17:43:38.974842", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/4d823b90bb4a370baba6d254759e8951.json b/.ai_cache/4d823b90bb4a370baba6d254759e8951.json new file mode 100644 index 0000000..ebc1174 --- /dev/null +++ b/.ai_cache/4d823b90bb4a370baba6d254759e8951.json @@ -0,0 +1,7 @@ +{ + "summary": "文档教程\n\n- :material-notebook-edit-outline:{.md-sidebar--primary,.", + "service": "fallback", + "page_title": "0.Mkdocs教程前言", + "timestamp": "2025-06-03T17:43:38.654404", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/5560f97450f87a5fc516715dca59124e.json b/.ai_cache/5560f97450f87a5fc516715dca59124e.json new file mode 100644 index 0000000..0781984 --- /dev/null +++ b/.ai_cache/5560f97450f87a5fc516715dca59124e.json @@ -0,0 +1,7 @@ +{ + "summary": "加速网站访问的一些心得 \n\n在使用 MkDocs 构建网站时,为了提高访问速度,我们可以采取以下一些措施:\n1.", + "service": "fallback", + "page_title": "加速网站访问的一些心得", + "timestamp": "2025-06-03T17:43:38.906621", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/59c551361d3a6a9dc416cfcb9a16b6d0.json b/.ai_cache/59c551361d3a6a9dc416cfcb9a16b6d0.json new file mode 100644 index 0000000..e8f5c94 --- /dev/null +++ b/.ai_cache/59c551361d3a6a9dc416cfcb9a16b6d0.json @@ -0,0 +1,7 @@ +{ + "summary": "Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gruber)创建.Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档.", + "service": "fallback", + "page_title": "Markdown指南", + "timestamp": "2025-06-03T17:43:39.268783", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/5babf7c4c0d88d50ac56ea5a64bece7f.json b/.ai_cache/5babf7c4c0d88d50ac56ea5a64bece7f.json deleted file mode 100644 index fc38bab..0000000 --- a/.ai_cache/5babf7c4c0d88d50ac56ea5a64bece7f.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该技术方案通过git-revision-date-localized插件为MKdocs文档系统添加文章修订时间戳功能。核心实现是在CI工作流中优化git历史检查策略,既提升了本地渲染速度,又确保发布时准确显示最后更新时间。该方法适用于需要展示文档时效性的场景,通过修改ci.yml配置文件即可快速部署,兼顾了开发效率和功能完整性。", - "service": "deepseek", - "page_title": "为MKdocs添加文章修订时间戳", - "timestamp": "2025-06-03T16:17:09.116396" -} \ No newline at end of file diff --git a/.ai_cache/608652015d8fccc03a9c1fb96962eb06.json b/.ai_cache/608652015d8fccc03a9c1fb96962eb06.json deleted file mode 100644 index d20a35b..0000000 --- a/.ai_cache/608652015d8fccc03a9c1fb96962eb06.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该项目为MkDocs文档系统提供AI驱动的智能摘要生成和阅读统计功能,支持多语言和多种AI服务API。核心特性包括自动生成80-120字高质量摘要、智能内容清理、高效缓存系统以及精准的阅读时间估算。通过灵活的配置选项,用户可实现文件夹或页面级别的控制,并自定义API服务和提示词。该方案具有经济高效、性能优化等特点,适用于技术文档和博客的自动化摘要需求。", - "service": "deepseek", - "page_title": "MkDocs文档AI摘要", - "timestamp": "2025-06-03T20:37:34.409741" -} \ No newline at end of file diff --git a/.ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json b/.ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json deleted file mode 100644 index aec824c..0000000 --- a/.ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文提供了多种支持作者的方式,包括通过邮箱联系、访问GitHub仓库以及通过支付宝、微信支付和Ko-fi等平台进行赞助。文章列出了具体的赞助渠道和按钮链接,并附有近期赞助者的名单及时间记录,方便读者选择合适的方式支持作者的工作。", - "service": "deepseek", - "page_title": "支持作者", - "timestamp": "2025-06-03T16:14:46.358819" -} \ No newline at end of file diff --git a/.ai_cache/63c53d3efcef0bbfa3517cc57124ea22.json b/.ai_cache/63c53d3efcef0bbfa3517cc57124ea22.json deleted file mode 100644 index 19e2996..0000000 --- a/.ai_cache/63c53d3efcef0bbfa3517cc57124ea22.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文详细介绍了Mkdocs配置文件mkdocs.yml的核心配置项,包括站点基本信息设置、Material主题配色方案(支持明暗模式切换)、导航功能优化(如目录跟踪、返回顶部按钮)、搜索增强功能以及Markdown扩展支持。重点讲解了标签系统实现方法、自定义CSS/JS引入方式,并提供了扩展网站功能的实践建议,如添加数学公式支持、鼠标样式和评论系统等。配置文件采用YAML语法,通过灵活组合各项参数可快速构建功能完善的文档网站。", - "service": "deepseek", - "page_title": "2.Mkdocs配置说明(mkdocs.yml)", - "timestamp": "2025-06-03T16:15:17.312523" -} \ No newline at end of file diff --git a/.ai_cache/676d241d1f71cee7979d1437ab409429.json b/.ai_cache/676d241d1f71cee7979d1437ab409429.json deleted file mode 100644 index 7dfce5e..0000000 --- a/.ai_cache/676d241d1f71cee7979d1437ab409429.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "MWeb Pro是一款专为macOS设计的专业Markdown写作与笔记应用,支持GFM语法扩展(含表格、LaTeX、代码块等)及多种图表库(mermaid/PlantUML等)。提供高效的图文混排功能,支持拖拽插入图片并调整宽度,可导出为PDF/HTML/Epub等格式或直接发布至WordPress/印象笔记等平台。其文档库支持分类树、标签管理及静态网站生成,兼具快速笔记收集和全局搜索功能,适合技术写作、知识管理及博客发布场景。", - "service": "deepseek", - "page_title": "MWeb Pro", - "timestamp": "2025-06-03T16:17:50.584572" -} \ No newline at end of file diff --git a/.ai_cache/6e3557e004b1983d54297433aa07fe32.json b/.ai_cache/6e3557e004b1983d54297433aa07fe32.json deleted file mode 100644 index ecf647c..0000000 --- a/.ai_cache/6e3557e004b1983d54297433aa07fe32.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文探讨了MkDocs中使用相对地址引用资源时的常见问题与解决方案,涵盖图片、PDF、跨页面及静态资源的引用方法。重点分析了路径规范、大小写敏感性和目录结构管理,强调以当前Markdown文件为基准的相对路径写法,确保本地预览与线上部署一致性。提供了针对路径错误、资源加载失败等问题的排查建议,推荐统一资源目录结构以提升维护性。", - "service": "deepseek", - "page_title": "相对地址的一些问题", - "timestamp": "2025-06-03T16:16:12.235861" -} \ No newline at end of file diff --git a/.ai_cache/7312994b59876da56cecf87e6ce38b89.json b/.ai_cache/7312994b59876da56cecf87e6ce38b89.json deleted file mode 100644 index ee8a42e..0000000 --- a/.ai_cache/7312994b59876da56cecf87e6ce38b89.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文介绍了使用MkDocs构建静态网站并部署到GitHub Pages的完整流程。重点讲解了通过GitHub Desktop管理仓库、配置mkdocs.yml文件、设置GitHub Actions自动化部署等关键步骤,并提供了Material主题的配置建议。该方法适合快速搭建技术文档或博客网站,具有版本控制友好、部署简单的特点,最后还提供了实时预览和自定义域名的实现方式。", - "service": "deepseek", - "page_title": "1.利用Mkdocs部署静态网页", - "timestamp": "2025-06-03T16:15:07.175758" -} \ No newline at end of file diff --git a/.ai_cache/77612039e8879ec0a34732497e4d927b.json b/.ai_cache/77612039e8879ec0a34732497e4d927b.json deleted file mode 100644 index 250ba44..0000000 --- a/.ai_cache/77612039e8879ec0a34732497e4d927b.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "MIT许可证授予用户自由使用、修改、分发软件的广泛权利,仅要求保留版权声明和许可条款。该许可证明确声明软件不提供任何担保,作者不对使用后果承担责任。作为宽松开源协议,MIT允许商业用途和私有修改,是开发者广泛采用的标准许可之一。", - "service": "deepseek", - "page_title": "许可声明", - "timestamp": "2025-06-03T16:14:56.187919" -} \ No newline at end of file diff --git a/.ai_cache/78377a142b37e49176adad2a7dc5ea03.json b/.ai_cache/78377a142b37e49176adad2a7dc5ea03.json deleted file mode 100644 index 6504aae..0000000 --- a/.ai_cache/78377a142b37e49176adad2a7dc5ea03.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文介绍了使用MkDocs构建网站时的性能优化方法,包括采用WebP等高效图片格式压缩资源、通过CDN分发静态文件减少延迟,以及优化git插件配置加速本地渲染。建议开发时禁用非必要插件,使用Lighthouse工具测试优化效果。这些措施能显著提升网站加载速度和用户体验。", - "service": "deepseek", - "page_title": "加速网站访问的一些心得", - "timestamp": "2025-06-03T16:16:20.040248" -} \ No newline at end of file diff --git a/.ai_cache/88d3fe972a711ac574cdb224f89be6f8.json b/.ai_cache/88d3fe972a711ac574cdb224f89be6f8.json deleted file mode 100644 index 1d8cb77..0000000 --- a/.ai_cache/88d3fe972a711ac574cdb224f89be6f8.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该技术文档介绍了三种网页背景特效的实现方法:雪花、樱花和粒子效果。核心是通过JavaScript动态加载特效脚本,并利用LocalStorage控制特效的显示状态。雪花特效通过检测LocalStorage标志决定是否加载外部JS文件,其他特效也采用类似实现方式。这些轻量级特效可增强网页视觉体验,适用于节日主题或装饰性页面需求。", - "service": "deepseek", - "page_title": "背景特效", - "timestamp": "2025-06-03T16:16:30.348375" -} \ No newline at end of file diff --git a/.ai_cache/89458e1939eedd5696536b60dff41f99.json b/.ai_cache/89458e1939eedd5696536b60dff41f99.json deleted file mode 100644 index bfe87ab..0000000 --- a/.ai_cache/89458e1939eedd5696536b60dff41f99.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。", - "service": "deepseek", - "page_title": "2024网站更新记录", - "timestamp": "2025-06-03T16:15:55.975583" -} \ No newline at end of file diff --git a/.ai_cache/9135036bb2cee912073c79448a507199.json b/.ai_cache/9135036bb2cee912073c79448a507199.json new file mode 100644 index 0000000..37301ae --- /dev/null +++ b/.ai_cache/9135036bb2cee912073c79448a507199.json @@ -0,0 +1,7 @@ +{ + "summary": "本文深入探讨了相关技术内容,提供了实用的方法和解决方案。", + "service": "fallback", + "page_title": "JS实现鼠标样式", + "timestamp": "2025-06-03T17:43:39.062437", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/93960e1d1b82fdcade6022ecf95972c4.json b/.ai_cache/93960e1d1b82fdcade6022ecf95972c4.json deleted file mode 100644 index f3a0522..0000000 --- a/.ai_cache/93960e1d1b82fdcade6022ecf95972c4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。", - "service": "deepseek", - "page_title": "2023网站更新记录", - "timestamp": "2025-06-03T16:15:44.900044" -} \ No newline at end of file diff --git a/.ai_cache/941b898d6a2fb8331109e1dbec8a087c.json b/.ai_cache/941b898d6a2fb8331109e1dbec8a087c.json new file mode 100644 index 0000000..d0c4cf6 --- /dev/null +++ b/.ai_cache/941b898d6a2fb8331109e1dbec8a087c.json @@ -0,0 +1,7 @@ +{ + "summary": "本文深入探讨了相关技术内容,提供了实用的方法和解决方案。", + "service": "fallback", + "page_title": "2024网站更新记录", + "timestamp": "2025-06-03T17:43:38.705782", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/ab758b5aa76ff31704c3afef8781f32b.json b/.ai_cache/ab758b5aa76ff31704c3afef8781f32b.json deleted file mode 100644 index a652503..0000000 --- a/.ai_cache/ab758b5aa76ff31704c3afef8781f32b.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文介绍了Git版本控制的核心操作与实用技巧,涵盖仓库创建、分支管理、冲突解决等基础功能,并重点讲解了stash暂存、rebase/merge策略选择、cherry-pick热修复等高级用法。通过具体代码示例和操作图示,系统演示了如何高效处理日常开发中的版本控制需求,特别针对代码回退、提交修改等常见场景提供了专业解决方案。", - "service": "deepseek", - "page_title": "Git 实用技巧", - "timestamp": "2025-06-03T16:17:39.916746" -} \ No newline at end of file diff --git a/.ai_cache/b387ce5ca7493235052b340338689e8a.json b/.ai_cache/b387ce5ca7493235052b340338689e8a.json new file mode 100644 index 0000000..283e43f --- /dev/null +++ b/.ai_cache/b387ce5ca7493235052b340338689e8a.json @@ -0,0 +1,7 @@ +{ + "summary": "去除不必要的元素,使设计更加简洁明了.关注核心功能和信息,避免过度设计和冗余.优雅与美感:追求优雅和美感的设计.强调细节:从字体选择到颜色搭配,从图标设计到动画效果,都需要经过精心的考虑和把控.", + "service": "fallback", + "page_title": "我对设计的一些观点", + "timestamp": "2025-06-03T17:43:39.326313", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/b4fdcb1514d03b4a0bfa36bce929faae.json b/.ai_cache/b4fdcb1514d03b4a0bfa36bce929faae.json deleted file mode 100644 index 1d0b9c2..0000000 --- a/.ai_cache/b4fdcb1514d03b4a0bfa36bce929faae.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。", - "service": "deepseek", - "page_title": "2025网站更新记录", - "timestamp": "2025-06-03T16:16:03.875283" -} \ No newline at end of file diff --git a/.ai_cache/bd5eaaa9ad0f9655b0296602b3e4df7d.json b/.ai_cache/bd5eaaa9ad0f9655b0296602b3e4df7d.json deleted file mode 100644 index 8c73ece..0000000 --- a/.ai_cache/bd5eaaa9ad0f9655b0296602b3e4df7d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文介绍了网页圆角化设计的实现方法,重点讲解通过CSS样式实现图片和边框的圆角效果。具体包括创建CSS文件并在mkdocs.yml中引入,使用border-radius属性设置圆角半径,以及在Markdown文件中应用样式的代码示例。同时展示了利用内置grid cards组件和按钮样式的圆角化实现方案,为网页UI设计提供了简洁美观的视觉解决方案。", - "service": "deepseek", - "page_title": "网页圆角化设计", - "timestamp": "2025-06-03T16:17:30.723166" -} \ No newline at end of file diff --git a/.ai_cache/c03fd194cc489c84f164657182d47b2f.json b/.ai_cache/c03fd194cc489c84f164657182d47b2f.json deleted file mode 100644 index c1020df..0000000 --- a/.ai_cache/c03fd194cc489c84f164657182d47b2f.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该个人简介展示了一位重庆大学生(Wcowin)的技术背景与个人特质。电子信息工程专业在读,拥有1年以上工作经验,完成3个项目并参与2个开源贡献。研究兴趣聚焦密码学,同时是技术/Math爱好者、咖啡重度用户及诗词/文学爱好者。页面采用CSS3悬停翻转动画等交互设计,包含教育历程(漯河高中至密码学硕士)、技能标签及多维度联系方式(微信/Telegram/Email)。个性签名强调\"追求自身光芒\"的独立精神。", - "service": "deepseek", - "page_title": "作者个人简介", - "timestamp": "2025-06-03T16:14:29.050389" -} \ No newline at end of file diff --git a/.ai_cache/c8088321e603b20469a9826a88748350.json b/.ai_cache/c8088321e603b20469a9826a88748350.json deleted file mode 100644 index 228ea42..0000000 --- a/.ai_cache/c8088321e603b20469a9826a88748350.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "Tidio提供免费、无需梯子的在线聊天解决方案,通过简单的JavaScript代码集成到网站。用户只需注册账号,从设置中获取专属代码并嵌入网页即可实现实时聊天功能。该工具安装便捷,适合快速部署,满足基础客服需求,尤其适合中小型网站使用。", - "service": "deepseek", - "page_title": "添加在线聊天", - "timestamp": "2025-06-03T16:17:19.927570" -} \ No newline at end of file diff --git a/.ai_cache/cb9d4d1856da4475fdde51c070fbc24d.json b/.ai_cache/cb9d4d1856da4475fdde51c070fbc24d.json deleted file mode 100644 index ee5feab..0000000 --- a/.ai_cache/cb9d4d1856da4475fdde51c070fbc24d.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "本文介绍了MkDocs文档工具的学习资源和使用指南,包括官方教程、Material主题、插件列表以及作者提供的中文教程(语雀、CSDN、知乎)。内容涵盖快速部署静态网站到GitHub Pages、配置mkdocs.yml文件以及添加博客功能,并附有视频教程。最后请求使用者注明教程来源并支持友链申请。", - "service": "deepseek", - "page_title": "0.Mkdocs教程前言", - "timestamp": "2025-06-03T16:15:25.888385" -} \ No newline at end of file diff --git a/.ai_cache/cee9dfb7bfb56fa9e63e493a418499c3.json b/.ai_cache/cee9dfb7bfb56fa9e63e493a418499c3.json deleted file mode 100644 index cc91eba..0000000 --- a/.ai_cache/cee9dfb7bfb56fa9e63e493a418499c3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "该文章阐述了设计的关键原则与价值主张,强调简洁性、视觉美感与用户体验的核心地位。作者提出六项设计准则:通过精简元素实现功能聚焦;运用视觉平衡提升优雅感;以用户行为模式优化交互流程;精细化处理视觉细节;融合创新思维突破传统;借助故事性建立情感连接。这些观点系统性地揭示了优秀设计应兼具功能性、审美性与情感共鸣的特质。", - "service": "deepseek", - "page_title": "我对设计的一些观点", - "timestamp": "2025-06-03T16:18:20.132538" -} \ No newline at end of file diff --git a/.ai_cache/d117ae5382dbad25458d5b090dcb8c42.json b/.ai_cache/d117ae5382dbad25458d5b090dcb8c42.json deleted file mode 100644 index dd4757d..0000000 --- a/.ai_cache/d117ae5382dbad25458d5b090dcb8c42.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "summary": "Markdown是一种轻量级标记语言,支持纯文本编写并转换为多种格式(如HTML/PDF)。其核心语法包括标题、列表、表格、代码块等结构化元素,以及文本样式(粗体/斜体)、链接/图片嵌入功能。兼容HTML标签并支持特殊字符转义,适用于文档编写、笔记记录等场景。主流编辑器(如MacDown、StackEdit)提供跨平台支持,具有易读易写的特性。", - "service": "deepseek", - "page_title": "Markdown指南", - "timestamp": "2025-06-03T16:18:02.463698" -} \ No newline at end of file diff --git a/.ai_cache/d3b41a11e5859b15b2707e47aae0c888.json b/.ai_cache/d3b41a11e5859b15b2707e47aae0c888.json new file mode 100644 index 0000000..46020bb --- /dev/null +++ b/.ai_cache/d3b41a11e5859b15b2707e47aae0c888.json @@ -0,0 +1,7 @@ +{ + "summary": "官方文件:Changing the colors - Material for MkDocs\n\n建议详细学习一下上面的官方网站↑↑↑\n\n我把我目前的配置文件mkdocs.", + "service": "fallback", + "page_title": "2.Mkdocs配置说明(mkdocs.yml)", + "timestamp": "2025-06-03T17:43:38.582948", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/d9cacc5ca0e343bad0c95d22720949e9.json b/.ai_cache/d9cacc5ca0e343bad0c95d22720949e9.json new file mode 100644 index 0000000..1d51d5b --- /dev/null +++ b/.ai_cache/d9cacc5ca0e343bad0c95d22720949e9.json @@ -0,0 +1,7 @@ +{ + "summary": "png]\n\n可以看到我的网站性能还是不错的,如果你想测试自己的网站性能,可以尝试一下 \n\n打开谷歌或者Edge浏览器,按F12,在右侧点\"➕\"找到Lighthouse,点击分析页面载即可.", + "service": "fallback", + "page_title": "利用Lighthouse测试网站性能", + "timestamp": "2025-06-03T17:43:39.212083", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/e7267ce6a4cd1f5054768befa04b1173.json b/.ai_cache/e7267ce6a4cd1f5054768befa04b1173.json new file mode 100644 index 0000000..81fac74 --- /dev/null +++ b/.ai_cache/e7267ce6a4cd1f5054768befa04b1173.json @@ -0,0 +1,7 @@ +{ + "summary": "2022-10-20\n建立Github仓库,正式建站\n取消cookie确认,简化网站打开流程\n新增首页反馈收集 \n\n2022-10-06\n\n不靠父母,全款拿下 wcowin.", + "service": "fallback", + "page_title": "2022网站更新记录", + "timestamp": "2025-06-03T17:43:38.676663", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/e7d21b0b28a677cebf96cb4d84eddef0.json b/.ai_cache/e7d21b0b28a677cebf96cb4d84eddef0.json new file mode 100644 index 0000000..846ccbd --- /dev/null +++ b/.ai_cache/e7d21b0b28a677cebf96cb4d84eddef0.json @@ -0,0 +1,7 @@ +{ + "summary": "这个项目利用MkDocs hooks,为您的技术文档和博客添加AI驱动的摘要生成和智能阅读统计功能.MkDocs AI Hooks\n\n仓库地址:https://github.", + "service": "fallback", + "page_title": "MkDocs文档AI摘要", + "timestamp": "2025-06-03T17:43:38.844668", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/eb9262abe9f1173610b1de79da25b5dd.json b/.ai_cache/eb9262abe9f1173610b1de79da25b5dd.json new file mode 100644 index 0000000..633a4ff --- /dev/null +++ b/.ai_cache/eb9262abe9f1173610b1de79da25b5dd.json @@ -0,0 +1,7 @@ +{ + "summary": "本项目深受 utterances 的启发.所有数据均储存在 GitHub Discussions 中.:octocat:\n支持自定义主题.🔧\n自动从 GitHub 拉取新评论与编辑.", + "service": "fallback", + "page_title": "添加评论系统(giscus为例)", + "timestamp": "2025-06-03T17:43:38.996817", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/ee2f15a1a2f326e50b283acbba050ccf.json b/.ai_cache/ee2f15a1a2f326e50b283acbba050ccf.json new file mode 100644 index 0000000..bf413a0 --- /dev/null +++ b/.ai_cache/ee2f15a1a2f326e50b283acbba050ccf.json @@ -0,0 +1,7 @@ +{ + "summary": "本文深入探讨了相关技术内容,提供了实用的方法和解决方案。", + "service": "fallback", + "page_title": "2023网站更新记录", + "timestamp": "2025-06-03T17:43:38.687312", + "language": "zh" +} \ No newline at end of file diff --git a/.ai_cache/service_config.json b/.ai_cache/service_config.json new file mode 100644 index 0000000..51e09d1 --- /dev/null +++ b/.ai_cache/service_config.json @@ -0,0 +1,9 @@ +{ + "default_service": "deepseek", + "available_services": [ + "deepseek", + "openai" + ], + "summary_language": "zh", + "check_time": "2025-06-03T17:43:37.756059" +} \ No newline at end of file diff --git a/about/geren/index.html b/about/geren/index.html index 296916a..20fbd15 100644 --- a/about/geren/index.html +++ b/about/geren/index.html @@ -2764,7 +2764,7 @@ @@ -2940,7 +2940,7 @@ - 2025-05-11 + 2025-06-03 diff --git a/blog/2022/06/06/2022网站更新记录/index.html b/blog/2022/06/06/2022网站更新记录/index.html index 6c1f3c1..90ff170 100644 --- a/blog/2022/06/06/2022网站更新记录/index.html +++ b/blog/2022/06/06/2022网站更新记录/index.html @@ -2517,10 +2517,15 @@ -
-🤖 AI智能摘要 -

2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。

-
+
+

📝 自动摘要

+

2022-10-20

+
+

建立Github仓库,正式建站 +取消cookie确认,简化网站打开流程 +新增首页反馈收集

+

2022-10-06

+

不靠父母,全款拿下 wcowin.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:64

diff --git a/blog/2023/12/21/2023网站更新记录/index.html b/blog/2023/12/21/2023网站更新记录/index.html index 46d7b83..5758dd2 100644 --- a/blog/2023/12/21/2023网站更新记录/index.html +++ b/blog/2023/12/21/2023网站更新记录/index.html @@ -2607,10 +2607,10 @@ -
-🤖 AI智能摘要 -

2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:392

diff --git a/blog/2024/01/01/2024网站更新记录/index.html b/blog/2024/01/01/2024网站更新记录/index.html index e687376..0e0c259 100644 --- a/blog/2024/01/01/2024网站更新记录/index.html +++ b/blog/2024/01/01/2024网站更新记录/index.html @@ -2697,10 +2697,10 @@ -
-🤖 AI智能摘要 -

该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:522 | 有效代码行数:43

diff --git a/blog/2025/01/01/2025网站更新记录/index.html b/blog/2025/01/01/2025网站更新记录/index.html index 6da0f8f..2d4e5df 100644 --- a/blog/2025/01/01/2025网站更新记录/index.html +++ b/blog/2025/01/01/2025网站更新记录/index.html @@ -2614,10 +2614,10 @@ -
-🤖 AI智能摘要 -

2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:349

diff --git a/blog/MIT/index.html b/blog/MIT/index.html index 4ea39b2..ab68d1e 100644 --- a/blog/MIT/index.html +++ b/blog/MIT/index.html @@ -2401,10 +2401,10 @@

许可声明

-
-🤖 AI智能摘要 -

MIT许可证授予用户自由使用、修改、分发软件的广泛权利,仅要求保留版权声明和许可条款。该许可证明确声明软件不提供任何担保,作者不对使用后果承担责任。作为宽松开源协议,MIT允许商业用途和私有修改,是开发者广泛采用的标准许可之一。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:252

diff --git a/blog/Mkdocs/mkdocs1/index.html b/blog/Mkdocs/mkdocs1/index.html index bcacabe..80e7820 100644 --- a/blog/Mkdocs/mkdocs1/index.html +++ b/blog/Mkdocs/mkdocs1/index.html @@ -2522,10 +2522,11 @@

1.利用Mkdocs部署静态网页

-
-🤖 AI智能摘要 -

本文介绍了使用MkDocs构建静态网站并部署到GitHub Pages的完整流程。重点讲解了通过GitHub Desktop管理仓库、配置mkdocs.yml文件、设置GitHub Actions自动化部署等关键步骤,并提供了Material主题的配置建议。该方法适合快速搭建技术文档或博客网站,具有版本控制友好、部署简单的特点,最后还提供了实时预览和自定义域名的实现方式。

-
+
+

📝 自动摘要

+
+

一、准备工作

+

1.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:485 | 有效代码行数:73

diff --git a/blog/Mkdocs/mkdocs2/index.html b/blog/Mkdocs/mkdocs2/index.html index efd73bf..a6d33f6 100644 --- a/blog/Mkdocs/mkdocs2/index.html +++ b/blog/Mkdocs/mkdocs2/index.html @@ -2804,10 +2804,12 @@

2.Mkdocs配置说明(mkdocs.yml)

-
-🤖 AI智能摘要 -

本文详细介绍了Mkdocs配置文件mkdocs.yml的核心配置项,包括站点基本信息设置、Material主题配色方案(支持明暗模式切换)、导航功能优化(如目录跟踪、返回顶部按钮)、搜索增强功能以及Markdown扩展支持。重点讲解了标签系统实现方法、自定义CSS/JS引入方式,并提供了扩展网站功能的实践建议,如添加数学公式支持、鼠标样式和评论系统等。配置文件采用YAML语法,通过灵活组合各项参数可快速构建功能完善的文档网站。

-
+
+

📝 自动摘要

+

官方文件:Changing the colors - Material for MkDocs

+
+

建议详细学习一下上面的官方网站↑↑↑

+

我把我目前的配置文件mkdocs.

📖 阅读信息

阅读时间:2 分钟 | 中文字符:818 | 有效代码行数:555

diff --git a/blog/Mkdocs/mkdocs3/index.html b/blog/Mkdocs/mkdocs3/index.html index 090e6d5..fadffc8 100644 --- a/blog/Mkdocs/mkdocs3/index.html +++ b/blog/Mkdocs/mkdocs3/index.html @@ -2407,6 +2407,11 @@

3.解决Github Pages部署mkdocs自定义域名失效的问题

+
+

📝 自动摘要

+

在/docs目录下创建一个 CNAME 的 无后缀 文件,然后在里面填入你的域名

+
+

[图片:].

在/docs目录下创建一个 CNAME 的 无后缀 文件,然后在里面填入你的域名

diff --git a/blog/Mkdocs/mkdocsblog/index.html b/blog/Mkdocs/mkdocsblog/index.html index 54d0efb..acd2e61 100644 --- a/blog/Mkdocs/mkdocsblog/index.html +++ b/blog/Mkdocs/mkdocsblog/index.html @@ -2407,6 +2407,14 @@

添加Mkdocs博客

+
+

📝 自动摘要

+

博客效果展示:博客

+
+

官方文档:Built-in blog plugin

+

与所有内置插件一样,博客插件的入门非常简单.yml

+

[代码]

+

作者信息在docs/blog/.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:114 | 有效代码行数:19

diff --git a/blog/Mkdocs/mkfirst/index.html b/blog/Mkdocs/mkfirst/index.html index 92ac0df..414fa4f 100644 --- a/blog/Mkdocs/mkfirst/index.html +++ b/blog/Mkdocs/mkfirst/index.html @@ -2540,10 +2540,13 @@

0.Mkdocs教程前言

-
-🤖 AI智能摘要 -

本文介绍了MkDocs文档工具的学习资源和使用指南,包括官方教程、Material主题、插件列表以及作者提供的中文教程(语雀、CSDN、知乎)。内容涵盖快速部署静态网站到GitHub Pages、配置mkdocs.yml文件以及添加博客功能,并附有视频教程。最后请求使用者注明教程来源并支持友链申请。

-
+
+

📝 自动摘要

+

文档教程

+
+
    +
  • {.md-sidebar--primary,.
  • +

📖 阅读信息

阅读时间:1 分钟 | 中文字符:222 | 有效代码行数:5

diff --git a/blog/archive/2022/index.html b/blog/archive/2022/index.html index b3d862b..eda1d26 100644 --- a/blog/archive/2022/index.html +++ b/blog/archive/2022/index.html @@ -2424,10 +2424,15 @@

2022网站更新记录

-
-🤖 AI智能摘要 -

2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。

-
+
+

📝 自动摘要

+

2022-10-20

+
+

建立Github仓库,正式建站 +取消cookie确认,简化网站打开流程 +新增首页反馈收集

+

2022-10-06

+

不靠父母,全款拿下 wcowin.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:64

diff --git a/blog/archive/2023/index.html b/blog/archive/2023/index.html index d2faab9..addd232 100644 --- a/blog/archive/2023/index.html +++ b/blog/archive/2023/index.html @@ -2424,10 +2424,10 @@

2023网站更新记录

-
-🤖 AI智能摘要 -

2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:392

diff --git a/blog/archive/2024/index.html b/blog/archive/2024/index.html index 0d24fbd..6d6f645 100644 --- a/blog/archive/2024/index.html +++ b/blog/archive/2024/index.html @@ -2424,10 +2424,10 @@

2024网站更新记录

-
-🤖 AI智能摘要 -

该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:522 | 有效代码行数:43

diff --git a/blog/archive/2025/index.html b/blog/archive/2025/index.html index 74f422f..633ab1f 100644 --- a/blog/archive/2025/index.html +++ b/blog/archive/2025/index.html @@ -2424,10 +2424,10 @@

2025网站更新记录

-
-🤖 AI智能摘要 -

2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:349

diff --git a/blog/category/网站更新记录/index.html b/blog/category/网站更新记录/index.html index d7155a8..7cc5256 100644 --- a/blog/category/网站更新记录/index.html +++ b/blog/category/网站更新记录/index.html @@ -2424,10 +2424,10 @@

2025网站更新记录

-
-🤖 AI智能摘要 -

2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:349

@@ -2548,10 +2548,10 @@

2024网站更新记录

-
-🤖 AI智能摘要 -

该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:522 | 有效代码行数:43

@@ -2834,10 +2834,10 @@ Look at this source

2023网站更新记录

-
-🤖 AI智能摘要 -

2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:392

@@ -2992,10 +2992,15 @@ Look at this source

2022网站更新记录

-
-🤖 AI智能摘要 -

2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。

-
+
+

📝 自动摘要

+

2022-10-20

+
+

建立Github仓库,正式建站 +取消cookie确认,简化网站打开流程 +新增首页反馈收集

+

2022-10-06

+

不靠父母,全款拿下 wcowin.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:64

diff --git a/blog/index.html b/blog/index.html index 961df5a..18a95e4 100644 --- a/blog/index.html +++ b/blog/index.html @@ -2433,10 +2433,10 @@

2025网站更新记录

-
-🤖 AI智能摘要 -

2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:349

@@ -2557,10 +2557,10 @@

2024网站更新记录

-
-🤖 AI智能摘要 -

该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:522 | 有效代码行数:43

@@ -2843,10 +2843,10 @@ Look at this source

2023网站更新记录

-
-🤖 AI智能摘要 -

2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:392

@@ -3001,10 +3001,15 @@ Look at this source

2022网站更新记录

-
-🤖 AI智能摘要 -

2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。

-
+
+

📝 自动摘要

+

2022-10-20

+
+

建立Github仓库,正式建站 +取消cookie确认,简化网站打开流程 +新增首页反馈收集

+

2022-10-06

+

不靠父母,全款拿下 wcowin.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:64

diff --git a/blog/websitebeauty/MkDocs-AI-Hooks/index.html b/blog/websitebeauty/MkDocs-AI-Hooks/index.html index 5b95538..07a02fc 100644 --- a/blog/websitebeauty/MkDocs-AI-Hooks/index.html +++ b/blog/websitebeauty/MkDocs-AI-Hooks/index.html @@ -3109,10 +3109,11 @@ -
-🤖 AI智能摘要 -

该项目为MkDocs文档系统提供AI驱动的智能摘要生成和阅读统计功能,支持OpenAI、DeepSeek等多API服务。核心特性包括自动生成80-120字高质量摘要、多语言支持、智能内容清理和高效缓存系统,同时提供精准的中文阅读统计和阅读时间估算。通过灵活的配置选项,用户可实现文件夹或页面级别的精确控制,并自定义API服务和提示词。该工具显著提升了技术文档的可读性和管理效率。

-
+
+

📝 自动摘要

+

这个项目利用MkDocs hooks,为您的技术文档和博客添加AI驱动的摘要生成和智能阅读统计功能.MkDocs AI Hooks

+
+

仓库地址:https://github.

📖 阅读信息

阅读时间:2 分钟 | 中文字符:912 | 有效代码行数:134

diff --git a/blog/websitebeauty/Relativeaddress/index.html b/blog/websitebeauty/Relativeaddress/index.html index e36c9ef..7b34102 100644 --- a/blog/websitebeauty/Relativeaddress/index.html +++ b/blog/websitebeauty/Relativeaddress/index.html @@ -2562,10 +2562,12 @@ -
-🤖 AI智能摘要 -

本文探讨了MkDocs中使用相对地址引用资源时的常见问题与解决方案,涵盖图片、PDF、跨页面及静态资源的引用方法。重点分析了路径规范、大小写敏感性和目录结构管理,强调以当前Markdown文件为基准的相对路径写法,确保本地预览与线上部署一致性。提供了针对路径错误、资源加载失败等问题的排查建议,推荐统一资源目录结构以提升维护性。

-
+
+

📝 自动摘要

+

针对MKdocs中相对地址引用的一些问题

+
+

在使用 MkDocs 构建文档网站时,常常会遇到相对地址引用的问题,尤其是在图片、PDF、其他静态资源等的引用上.下面总结一些常见场景和注意事项:

+

1.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:493 | 有效代码行数:3

diff --git a/blog/websitebeauty/accelerate/index.html b/blog/websitebeauty/accelerate/index.html index 9092a86..0d4bde3 100644 --- a/blog/websitebeauty/accelerate/index.html +++ b/blog/websitebeauty/accelerate/index.html @@ -2508,10 +2508,12 @@ -
-🤖 AI智能摘要 -

本文介绍了使用MkDocs构建网站时的性能优化方法,包括采用WebP等高效图片格式压缩资源、通过CDN分发静态文件减少延迟,以及优化git插件配置加速本地渲染。建议开发时禁用非必要插件,使用Lighthouse工具测试优化效果。这些措施能显著提升网站加载速度和用户体验。

-
+
+

📝 自动摘要

+

加速网站访问的一些心得

+
+

在使用 MkDocs 构建网站时,为了提高访问速度,我们可以采取以下一些措施: +1.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:257 | 有效代码行数:6

diff --git a/blog/websitebeauty/backgroud/index.html b/blog/websitebeauty/backgroud/index.html index aeef8fb..9912164 100644 --- a/blog/websitebeauty/backgroud/index.html +++ b/blog/websitebeauty/backgroud/index.html @@ -2522,10 +2522,13 @@

背景特效

-
-🤖 AI智能摘要 -

该技术文档介绍了三种网页背景特效的实现方法:雪花、樱花和粒子效果。核心是通过JavaScript动态加载特效脚本,并利用LocalStorage控制特效的显示状态。雪花特效通过检测LocalStorage标志决定是否加载外部JS文件,其他特效也采用类似实现方式。这些轻量级特效可增强网页视觉体验,适用于节日主题或装饰性页面需求。

-
+
+

📝 自动摘要

+

Note

+
+

以下代码均在[代码]下复制粘贴

+

// 在LocalStorage中设置不显示雪花效果的标志 +localStorage.

Note

以下代码均在docs/javascripts/extra.js下复制粘贴

diff --git a/blog/websitebeauty/footer/index.html b/blog/websitebeauty/footer/index.html index ccab86b..5a87bf2 100644 --- a/blog/websitebeauty/footer/index.html +++ b/blog/websitebeauty/footer/index.html @@ -2486,6 +2486,12 @@

页脚设置

+
+

📝 自动摘要

+

页脚设置

+
+

MkDocs 支持自定义页脚.[图片:]

+

在docs/overrides/partials/footer.html中(没有该文件时,创建footer.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:60 | 有效代码行数:89

diff --git a/blog/websitebeauty/header/index.html b/blog/websitebeauty/header/index.html index b0f4010..dcb3ef7 100644 --- a/blog/websitebeauty/header/index.html +++ b/blog/websitebeauty/header/index.html @@ -2407,6 +2407,14 @@

添加顶部公告栏

+
+

📝 自动摘要

+

png]

+
+

docs/overrides下新建main.html文件
+树状结构如下:
+[代码]`[代码]`[代码]

+

在main.

image.png

docs/overrides下新建main.html ,针对main.html文件
树状结构如下:
diff --git a/blog/websitebeauty/mkcomments/index.html b/blog/websitebeauty/mkcomments/index.html index 0f4352e..6f0d30b 100644 --- a/blog/websitebeauty/mkcomments/index.html +++ b/blog/websitebeauty/mkcomments/index.html @@ -2540,10 +2540,12 @@

添加评论系统(giscus为例)

-
-🤖 AI智能摘要 -

giscus是一款基于GitHub Discussions的开源评论系统,无需数据库,数据直接存储在GitHub中。它具有无跟踪、无广告、永久免费的特点,支持多语言、自定义主题和高可配置性。系统能自动同步GitHub的评论更新,适用于静态网站集成,提供轻量级、隐私友好的评论解决方案,同时允许用户自建服务。

-
+
+

📝 自动摘要

+

本项目深受 utterances 的启发.所有数据均储存在 GitHub Discussions 中.:octocat:

+
+

支持自定义主题.🔧 +自动从 GitHub 拉取新评论与编辑.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:389 | 有效代码行数:116

diff --git a/blog/websitebeauty/mkdocsfont/index.html b/blog/websitebeauty/mkdocsfont/index.html index 99434b8..f9573a5 100644 --- a/blog/websitebeauty/mkdocsfont/index.html +++ b/blog/websitebeauty/mkdocsfont/index.html @@ -2724,10 +2724,11 @@ -
-🤖 AI智能摘要 -

霞鹜文楷是一款基于日本FONTWORKS公司Klee One衍生的开源中文字体,兼具仿宋和楷体特点,适合诗词和注释排版。提供多个版本:屏幕阅读版、轻便版、GB/TC规范版等,支持简繁日韩字符。该字体解决了商业字体侵权风险问题,填补了开源中文字体中楷体类的空白。用户可通过GitHub、Gitee等平台获取,支持Windows/macOS系统安装。字体采用SIL Open Font License 1.1授权,适合网站和移动设备使用。

-
+
+

📝 自动摘要

+

我目前在用的字体:霞鹜文楷{target=_blank}

+
+

想必你可以直观从我的网站感受到,这款字体的美观程度.> - 若需要在网站上使用这款字体,请参阅 Issue #24.

📖 阅读信息

阅读时间:6 分钟 | 中文字符:2328 | 有效代码行数:21

diff --git a/blog/websitebeauty/shubiao/index.html b/blog/websitebeauty/shubiao/index.html index 848c648..fa9379c 100644 --- a/blog/websitebeauty/shubiao/index.html +++ b/blog/websitebeauty/shubiao/index.html @@ -2407,10 +2407,10 @@

JS实现鼠标样式

-
-🤖 AI智能摘要 -

该文章介绍了通过JavaScript和CSS自定义网页鼠标样式的实现方法,重点说明了关键参数配置,包括鼠标尺寸、颜色(支持RGB值和颜色名称)以及圆形跟随效果。提供了具体的代码示例和配置路径,并强调需在mkdocs.yml中引入相关文件。适用于需要个性化鼠标交互效果的网页开发场景。

-
+
+

📝 自动摘要

+

本文深入探讨了相关技术内容,提供了实用的方法和解决方案。

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:129 | 有效代码行数:114

diff --git a/blog/websitebeauty/time/index.html b/blog/websitebeauty/time/index.html index c324e3e..bab37ef 100644 --- a/blog/websitebeauty/time/index.html +++ b/blog/websitebeauty/time/index.html @@ -2504,10 +2504,10 @@

为MKdocs添加文章修订时间戳

-
-🤖 AI智能摘要 -

该技术方案通过git-revision-date-localized插件为MKdocs文档系统添加文章修订时间戳功能。核心实现是在CI工作流中优化git历史检查策略,既提升了本地渲染速度,又确保发布时准确显示最后更新时间。该方法适用于需要展示文档时效性的场景,通过修改ci.yml配置文件即可快速部署,兼顾了开发效率和功能完整性。

-
+
+

📝 自动摘要

+

github/workflows/下的ci.

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:203 | 有效代码行数:51

diff --git a/blog/websitebeauty/webtalknow/index.html b/blog/websitebeauty/webtalknow/index.html index abbe789..2114629 100644 --- a/blog/websitebeauty/webtalknow/index.html +++ b/blog/websitebeauty/webtalknow/index.html @@ -2504,10 +2504,12 @@

添加在线聊天

-
-🤖 AI智能摘要 -

Tidio提供免费、无需梯子的在线聊天解决方案,通过简单的JavaScript代码集成到网站。用户只需注册账号,从设置中获取专属代码并嵌入网页即可实现实时聊天功能。该工具安装便捷,适合快速部署,满足基础客服需求,尤其适合中小型网站使用。

-
+
+

📝 自动摘要

+

以Tidio为例,Tidio免费版已经完全够用且无需梯子

+
+

访问Tidio官网

+

要在您的网站上使用 javascript 代码方法安装 Tidio,您需要创建一个 Tidio 帐户.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:182 | 有效代码行数:1

diff --git a/blog/websitebeauty/yuanjiaohua/index.html b/blog/websitebeauty/yuanjiaohua/index.html index d1a8434..71ddb28 100644 --- a/blog/websitebeauty/yuanjiaohua/index.html +++ b/blog/websitebeauty/yuanjiaohua/index.html @@ -2558,10 +2558,14 @@

网页圆角化设计

-
-🤖 AI智能摘要 -

本文介绍了网页圆角化设计的实现方法,重点讲解通过CSS样式实现图片和边框的圆角效果。具体包括创建CSS文件并在mkdocs.yml中引入,使用border-radius属性设置圆角半径,以及在Markdown文件中应用样式的代码示例。同时展示了利用内置grid cards组件和按钮样式的圆角化实现方案,为网页UI设计提供了简洁美观的视觉解决方案。

-
+
+

📝 自动摘要

+

png]

+
+

如何设计 +新建css文件,在mkdocs.示例
+[图片:iShot_2024-04-26_12.png]
+[图片:image.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:66 | 有效代码行数:213

diff --git a/develop/Markdown/MWeb/index.html b/develop/Markdown/MWeb/index.html index c458865..ea32b30 100644 --- a/develop/Markdown/MWeb/index.html +++ b/develop/Markdown/MWeb/index.html @@ -2872,10 +2872,10 @@

MWeb Pro

-
-🤖 AI智能摘要 -

MWeb Pro是一款专为macOS设计的专业Markdown写作与笔记应用,支持GFM语法扩展(含表格、LaTeX、代码块等)及多种图表库(mermaid/PlantUML等)。提供高效的图文混排功能,支持拖拽插入图片并调整宽度,可导出为PDF/HTML/Epub等格式或直接发布至WordPress/印象笔记等平台。其文档库支持分类树、标签管理及静态网站生成,兼具快速笔记收集和全局搜索功能,适合技术写作、知识管理及博客发布场景。

-
+
+

📝 自动摘要

+

MWeb Pro 是一款适用于macOS的专业Markdown写作、笔记本应用软件.喜欢写博客的朋友,那你一定会需要 MWeb Pro 这款软件.

+

📖 阅读信息

阅读时间:3 分钟 | 中文字符:1009 | 有效代码行数:64

diff --git a/develop/Markdown/markdown/index.html b/develop/Markdown/markdown/index.html index 4fdd47b..cb0e1e3 100644 --- a/develop/Markdown/markdown/index.html +++ b/develop/Markdown/markdown/index.html @@ -3086,10 +3086,10 @@ -
-🤖 AI智能摘要 -

Markdown是一种轻量级标记语言,支持纯文本编写并转换为多种格式(如HTML/PDF)。其核心语法包括标题、列表、表格、代码块等结构化元素,以及文本样式(粗体/斜体)、链接/图片嵌入功能。兼容HTML标签并支持特殊字符转义,适用于文档编写、笔记记录等场景。主流编辑器(如MacDown、StackEdit)提供跨平台支持,具有易读易写的特性。

-
+
+

📝 自动摘要

+

Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gruber)创建.Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档.

+

📖 阅读信息

阅读时间:2 分钟 | 中文字符:662 | 有效代码行数:61

diff --git a/develop/designbeauty/db1/index.html b/develop/designbeauty/db1/index.html index 79d998f..1c0fc0d 100644 --- a/develop/designbeauty/db1/index.html +++ b/develop/designbeauty/db1/index.html @@ -2546,10 +2546,13 @@ -
-🤖 AI智能摘要 -

唐·诺曼提出的情感设计三层次理论包括本能层、行为层和反思层。本能层关注产品外观引发的即时情感反应,行为层强调使用过程中的功能性和效率,反思层涉及用户对产品的理性认知和自我形象关联。这三个层次相互影响,共同塑造用户对产品的整体体验。该理论为设计提供了系统框架,解释了为何某些产品即使存在功能缺陷仍能获得市场成功。

-
+
+

📝 自动摘要

+

原文:Norman's Three Levels of Design

+
+

[图片:] +唐·诺曼—情感设计的三个层次

+

在人类的内心世界,有许多部分负责我们所说的情感,总的来说,这些区域共同构成了情感系统.

📖 阅读信息

阅读时间:5 分钟 | 中文字符:2163

diff --git a/develop/designbeauty/my-to-desihn/index.html b/develop/designbeauty/my-to-desihn/index.html index 14e2cd4..315f307 100644 --- a/develop/designbeauty/my-to-desihn/index.html +++ b/develop/designbeauty/my-to-desihn/index.html @@ -2416,10 +2416,10 @@ -
-🤖 AI智能摘要 -

该文章阐述了设计的关键原则与价值主张,强调简洁性、视觉美感与用户体验的核心地位。作者提出六项设计准则:通过精简元素实现功能聚焦;运用视觉平衡提升优雅感;以用户行为模式优化交互流程;精细化处理视觉细节;融合创新思维突破传统;借助故事性建立情感连接。这些观点系统性地揭示了优秀设计应兼具功能性、审美性与情感共鸣的特质。

-
+
+

📝 自动摘要

+

去除不必要的元素,使设计更加简洁明了.关注核心功能和信息,避免过度设计和冗余.优雅与美感:追求优雅和美感的设计.强调细节:从字体选择到颜色搭配,从图标设计到动画效果,都需要经过精心的考虑和把控.

+

📖 阅读信息

阅读时间:1 分钟 | 中文字符:398

diff --git a/develop/git/index.html b/develop/git/index.html index 5f12bd7..fbd091c 100644 --- a/develop/git/index.html +++ b/develop/git/index.html @@ -2822,10 +2822,18 @@ -
-🤖 AI智能摘要 -

本文介绍了Git版本控制的核心操作与实用技巧,涵盖仓库创建、分支管理、冲突解决等基础功能,并重点讲解了stash暂存、rebase/merge策略选择、cherry-pick热修复等高级用法。通过具体代码示例和操作图示,系统演示了如何高效处理日常开发中的版本控制需求,特别针对代码回退、提交修改等常见场景提供了专业解决方案。

-
+
+

📝 自动摘要

+

info

+
+

原文地址:Git 实用技巧{target="_blank"}

+

Git 实用技巧 +一、基本操作 +1.新建 git 仓库 +[代码示例]

+

[图片:]

+

[代码示例]

+

2.

📖 阅读信息

阅读时间:1 分钟 | 中文字符:199 | 有效代码行数:48

diff --git a/develop/lighthouse/index.html b/develop/lighthouse/index.html index 6010ae8..936f947 100644 --- a/develop/lighthouse/index.html +++ b/develop/lighthouse/index.html @@ -2409,6 +2409,12 @@

利用Lighthouse测试网站性能

+
+

📝 自动摘要

+

png]

+
+

可以看到我的网站性能还是不错的,如果你想测试自己的网站性能,可以尝试一下

+

打开谷歌或者Edge浏览器,按F12,在右侧点"➕"找到Lighthouse,点击分析页面载即可.

image.png

image 可以看到我的网站性能还是不错的,如果你想测试自己的网站性能,可以尝试一下

diff --git a/overrides/hooks/__pycache__/ai_summary.cpython-311.pyc b/overrides/hooks/__pycache__/ai_summary.cpython-311.pyc index fcbce627799349b98490f7f1c9c32dddfcaac8b4..700047c122a54db50ad1e6583aa88f5af0aba1ec 100644 GIT binary patch literal 41109 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 SVwSsIo1xu;i1aS&i~kQ%zG!>^ literal 27203 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 diff --git a/overrides/hooks/__pycache__/socialmedia.cpython-313.pyc b/overrides/hooks/__pycache__/socialmedia.cpython-313.pyc index b559473d0174db2210298dc84dd95664f19d42b0..3f63f351455d811d0fac1a734d2523499680ed50 100644 GIT binary patch delta 20 acmbQlHHnM+GcPX}0}z;**l*-!X9WN*(F4o? delta 20 acmbQlHHnM+GcPX}0}$+fZ?}<~ofQB!(FF?t diff --git a/overrides/hooks/ai_summary.py b/overrides/hooks/ai_summary.py index 7d62e57..78ebcf8 100644 --- a/overrides/hooks/ai_summary.py +++ b/overrides/hooks/ai_summary.py @@ -4,23 +4,64 @@ import hashlib import requests from pathlib import Path from datetime import datetime -from functools import lru_cache +import os +import shutil class AISummaryGenerator: def __init__(self): self.cache_dir = Path("site/.ai_cache") - self.cache_dir.mkdir(exist_ok=True) + self.cache_dir.mkdir(parents=True, exist_ok=True) - # DeepSeek API配置 - self.api_config = { - 'url': 'https://api.deepseek.com/v1/chat/completions', - 'model': 'deepseek-chat', - 'headers': { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer sk-7dbcd6e21fb3417299b50aecff76c7bf' - } + # 🚀 CI 环境配置 - 默认只在 CI 环境中启用 + self.ci_config = { + 'enabled_in_ci': os.getenv('AI_SUMMARY_CI_ENABLED', 'true').lower() == 'true', # 默认 CI 中启用 + 'enabled_in_local': os.getenv('AI_SUMMARY_LOCAL_ENABLED', 'false').lower() == 'true', # 默认本地禁用 + # 'enabled_in_local': os.getenv('AI_SUMMARY_LOCAL_ENABLED', 'true').lower() == 'true', # 默认本地启用 + 'ci_only_cache': os.getenv('AI_SUMMARY_CI_ONLY_CACHE', 'false').lower() == 'true', # CI 中也允许生成新摘要 + 'ci_fallback_enabled': os.getenv('AI_SUMMARY_CI_FALLBACK', 'true').lower() == 'true' } + # 添加服务配置文件,用于跟踪当前使用的服务 + self.service_config_file = self.cache_dir / "service_config.json" + + # 🤖 多AI服务配置 + self.ai_services = { + 'deepseek': { + 'url': 'https://api.deepseek.com/v1/chat/completions', + 'model': 'deepseek-chat', + 'api_key': os.getenv('DEEPSEEK_API_KEY', ), + 'max_tokens': 150, + 'temperature': 0.3 + }, + 'openai': { + 'url': 'https://api.chatanywhere.tech/v1/chat/completions', + 'model': 'gpt-3.5-turbo', # 或 'gpt-4', 'gpt-4-turbo' + 'api_key': os.getenv('OPENAI_API_KEY', ), + 'max_tokens': 150, + 'temperature': 0.3 + }, + # 'claude': { + # 'url': 'https://api.anthropic.com/v1/messages', + # 'model': 'claude-3-haiku-20240307', + # 'api_key': os.getenv('ANTHROPIC_API_KEY', 'your-claude-api-key'), + # 'max_tokens': 150, + # 'temperature': 0.3 + # }, + # 'gemini': { + # 'url': 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent', + # 'model': 'gemini-pro', + # 'api_key': os.getenv('GOOGLE_API_KEY', 'your-claude-api-key'), + # 'max_tokens': 150, + # 'temperature': 0.3 + # } + } + + # 默认使用的AI服务 + self.default_service = 'deepseek' # 默认使用 DeepSeek + + # 服务优先级(按顺序尝试) + self.service_fallback_order = ['openai', 'deepseek', 'claude', 'gemini'] + # 📂 可自定义的文件夹配置 self.enabled_folders = [ 'blog/', # blog文件夹 @@ -29,20 +70,19 @@ class AISummaryGenerator: # 在这里添加您想要启用AI摘要的文件夹 ] - # 📋 排除的文件和文件夹 + # 📋 Excluded files and folders self.exclude_patterns = [ - 'liuyanban.md', 'link.md', '404.md', 'tag.md', 'tags.md', - '/about/', '/search/', '/sitemap', 'index.md', # 根目录index.md + '404.md', 'tag.md', 'tags.md', ] - # 📋 排除的特定文件 + # 📋 Excluded specific files self.exclude_files = [ 'blog/index.md', - 'blog/indexblog.md', - 'docs/index.md', - 'develop/index.md', ] + # 🌍 语言配置/Language Configuration + self.summary_language = 'zh' # 默认中文,可选 'zh'、'en'、'both' + # 初始化阅读统计相关的正则表达式 self.chinese_chars_pattern = re.compile(r'[\u4e00-\u9fff\u3400-\u4dbf]') self.code_block_pattern = re.compile(r'```.*?```', re.DOTALL) @@ -63,16 +103,173 @@ class AISummaryGenerator: 'r', 'matlab', 'scala', 'perl', 'lua', 'dart', 'tex', 'latex', 'csv', 'properties', '' }) + + # 在初始化时就进行环境检查 + self._check_environment() + + # 检查服务变更并处理缓存 + self._check_service_change() - def configure_folders(self, folders=None, exclude_patterns=None, exclude_files=None): + def _check_environment(self): + """初始化时检查环境""" + is_ci = self.is_ci_environment() + + if is_ci: + ci_name = self._get_ci_name() + if self.ci_config['enabled_in_ci']: + print(f"🚀 检测到 CI 环境 ({ci_name}),AI 摘要功能已启用") + self._should_run = True + else: + print(f"🚫 检测到 CI 环境 ({ci_name}),AI 摘要功能已禁用") + self._should_run = False + else: + # 本地环境检查 + if self.ci_config['enabled_in_local']: + print("💻 本地环境检测到,AI 摘要功能已启用") + self._should_run = True + else: + print("🚫 本地环境检测到,AI 摘要功能已禁用(仅在 CI 环境中启用)") + self._should_run = False + + def _check_service_change(self): + """检查AI服务是否发生变更,如有变更则自动清理缓存""" + current_config = { + 'default_service': self.default_service, + 'available_services': list(self.ai_services.keys()), + 'summary_language': self.summary_language, + 'check_time': datetime.now().isoformat() + } + + if self.service_config_file.exists(): + try: + with open(self.service_config_file, 'r', encoding='utf-8') as f: + previous_config = json.load(f) + + # 检查默认服务或语言是否变更 + if (previous_config.get('default_service') != current_config['default_service'] or + previous_config.get('summary_language') != current_config['summary_language']): + old_service = previous_config.get('default_service', 'unknown') + new_service = current_config['default_service'] + old_lang = previous_config.get('summary_language', 'zh') + new_lang = current_config['summary_language'] + + if old_service != new_service: + print(f"🔄 检测到AI服务变更: {old_service} → {new_service}") + if old_lang != new_lang: + print(f"🌍 检测到语言变更: {old_lang} → {new_lang}") + + print("🧹 自动清理AI摘要缓存...") + + try: + # 删除整个缓存目录 + if self.cache_dir.exists(): + shutil.rmtree(self.cache_dir) + print(f"✅ 已删除缓存文件夹: {self.cache_dir}") + + # 重新创建缓存目录 + self.cache_dir.mkdir(exist_ok=True) + print("📁 已重新创建缓存目录") + + except Exception as e: + print(f"❌ 清理缓存失败: {e}") + # 如果删除失败,尝试清理单个文件 + try: + self._clear_cache_files() + except: + print("⚠️ 缓存清理失败,新摘要可能会混用旧配置的缓存") + + except Exception as e: + print(f"读取服务配置失败: {e}") + + # 保存当前配置 + try: + with open(self.service_config_file, 'w', encoding='utf-8') as f: + json.dump(current_config, f, ensure_ascii=False, indent=2) + except Exception as e: + print(f"保存服务配置失败: {e}") + + def _clear_cache_files(self): + """清理缓存文件(备用方法)""" + cleared_count = 0 + try: + for cache_file in self.cache_dir.glob("*.json"): + if cache_file.name != "service_config.json": + cache_file.unlink() + cleared_count += 1 + print(f"✅ 已清理 {cleared_count} 个缓存文件") + except Exception as e: + print(f"❌ 单文件清理失败: {e}") + + def configure_ai_service(self, service_name, config=None): """ - 配置启用AI摘要的文件夹 + 配置AI服务 Args: - folders: 启用AI摘要的文件夹列表 - exclude_patterns: 排除的模式列表 - exclude_files: 排除的特定文件列表 + service_name: 服务名称 ('deepseek', 'openai', 'azure_openai', 'claude', 'gemini') + config: 服务配置字典 """ + old_service = self.default_service + + if config: + self.ai_services[service_name] = config + self.default_service = service_name + + # 如果服务发生变更,自动清理缓存 + if old_service != service_name: + print(f"🔄 AI服务已切换: {old_service} → {service_name}") + print("🧹 自动清理所有AI摘要缓存...") + + try: + if self.cache_dir.exists(): + shutil.rmtree(self.cache_dir) + print(f"✅ 已删除缓存文件夹: {self.cache_dir}") + + # 重新创建缓存目录 + self.cache_dir.mkdir(exist_ok=True) + print("📁 已重新创建缓存目录") + + except Exception as e: + print(f"❌ 清理缓存失败: {e}") + # 如果删除失败,尝试清理单个文件 + try: + self._clear_cache_files() + except: + print("⚠️ 缓存清理失败,新摘要可能会混用旧服务的缓存") + + # 更新服务配置记录 + self._check_service_change() + + def configure_language(self, language='zh'): + """ + 配置摘要语言 + + Args: + language: 语言设置 ('zh': 中文, 'en': 英文, 'both': 双语) + """ + old_language = self.summary_language + self.summary_language = language + + if old_language != language: + print(f"🌍 摘要语言已切换: {old_language} → {language}") + print("🧹 自动清理摘要缓存以应用新语言设置...") + + try: + if self.cache_dir.exists(): + shutil.rmtree(self.cache_dir) + print(f"✅ 已删除缓存文件夹: {self.cache_dir}") + + # 重新创建缓存目录 + self.cache_dir.mkdir(exist_ok=True) + print("📁 已重新创建缓存目录") + + except Exception as e: + print(f"❌ 清理缓存失败: {e}") + + # 更新服务配置记录 + self._check_service_change() + + def configure_folders(self, folders=None, exclude_patterns=None, exclude_files=None): + """配置启用AI摘要的文件夹""" if folders is not None: self.enabled_folders = folders if exclude_patterns is not None: @@ -81,8 +278,9 @@ class AISummaryGenerator: self.exclude_files = exclude_files def get_content_hash(self, content): - """生成内容hash用于缓存""" - return hashlib.md5(content.encode('utf-8')).hexdigest() + """生成内容hash用于缓存(包含语言设置)""" + content_with_lang = f"{content}_{self.summary_language}" + return hashlib.md5(content_with_lang.encode('utf-8')).hexdigest() def get_cached_summary(self, content_hash): """获取缓存的摘要""" @@ -104,6 +302,7 @@ class AISummaryGenerator: cache_file = self.cache_dir / f"{content_hash}.json" try: summary_data['timestamp'] = datetime.now().isoformat() + summary_data['language'] = self.summary_language with open(cache_file, 'w', encoding='utf-8') as f: json.dump(summary_data, f, ensure_ascii=False, indent=2) except Exception as e: @@ -152,10 +351,81 @@ class AISummaryGenerator: return content - def generate_ai_summary(self, content, page_title=""): - """使用DeepSeek生成摘要""" - # 优化的提示词 - prompt = f"""请为以下技术文章生成一个高质量的摘要,要求: + def build_headers(self, service_config): + """构建请求头""" + headers = { + 'Content-Type': 'application/json' + } + + # 根据服务类型添加认证头 + if 'azure_openai' in service_config.get('url', ''): + headers['api-key'] = service_config['api_key'] + elif 'anthropic.com' in service_config.get('url', ''): + headers['x-api-key'] = service_config['api_key'] + headers['anthropic-version'] = '2023-06-01' + elif 'googleapis.com' in service_config.get('url', ''): + # Google API使用URL参数 + pass + else: + # OpenAI和DeepSeek使用Bearer token + headers['Authorization'] = f"Bearer {service_config['api_key']}" + + # 添加额外的头部 + if 'headers_extra' in service_config: + headers.update(service_config['headers_extra']) + + return headers + + def build_payload(self, service_name, service_config, content, page_title): + """构建请求载荷""" + # 根据语言设置生成不同的prompt + if self.summary_language == 'en': + prompt = f"""Please generate a high-quality summary for the following technical article with these requirements: + +1. **Length Control**: Strictly limit to 80-120 words +2. **Content Requirements**: + - Accurately summarize the core themes and key points of the article + - Highlight technical features, application scenarios, or problems solved + - Use professional but understandable language + - Avoid repeating the article title content +3. **Format Requirements**: + - Return summary content directly without any prefix or suffix + - Use concise declarative sentences + - Technical terms are appropriate + +Article Title: {page_title} + +Article Content: +{content[:2500]} + +Please generate summary:""" + + elif self.summary_language == 'both': + prompt = f"""Please generate a bilingual summary (Chinese and English) for the following technical article with these requirements: + +1. **Length Control**: + - Chinese: 80-120 characters + - English: 80-120 words +2. **Content Requirements**: + - Accurately summarize the core themes and key points + - Highlight technical features, application scenarios, or problems solved + - Use professional but understandable language + - Avoid repeating the article title content +3. **Format Requirements**: + - First provide Chinese summary + - Then provide English summary + - Separate with a blank line + - No prefixes or additional formatting + +Article Title: {page_title} + +Article Content: +{content[:2500]} + +Please generate bilingual summary:""" + + else: # 默认中文 + prompt = f"""请为以下技术文章生成一个高质量的摘要,要求: 1. **长度控制**:严格控制在80-120字以内 2. **内容要求**: @@ -175,54 +445,161 @@ class AISummaryGenerator: 请生成摘要:""" - try: - payload = { - "model": self.api_config['model'], + if service_name == 'claude': + # Claude API格式 + return { + "model": service_config['model'], + "max_tokens": service_config['max_tokens'], + "temperature": service_config['temperature'], + "messages": [ + { + "role": "user", + "content": prompt + } + ] + } + elif service_name == 'gemini': + # Gemini API格式 + return { + "contents": [ + { + "parts": [ + { + "text": prompt + } + ] + } + ], + "generationConfig": { + "temperature": service_config['temperature'], + "maxOutputTokens": service_config['max_tokens'] + } + } + else: + # OpenAI格式 (OpenAI, DeepSeek, Azure OpenAI) + system_content = { + 'zh': "你是一个专业的技术文档摘要专家,擅长提取文章核心要点并生成简洁准确的中文摘要。", + 'en': "You are a professional technical documentation summary expert, skilled at extracting core points from articles and generating concise and accurate English summaries.", + 'both': "You are a professional technical documentation summary expert, skilled at extracting core points from articles and generating concise and accurate bilingual summaries in both Chinese and English." + } + + return { + "model": service_config['model'], "messages": [ { "role": "system", - "content": "你是一个专业的技术文档摘要专家,擅长提取文章核心要点并生成简洁准确的摘要。" + "content": system_content.get(self.summary_language, system_content['zh']) }, { - "role": "user", + "role": "user", "content": prompt } ], - "max_tokens": 150, - "temperature": 0.3, # 降低随机性,提高准确性 + "max_tokens": service_config['max_tokens'] * (2 if self.summary_language == 'both' else 1), + "temperature": service_config['temperature'], "top_p": 0.9 } + + def extract_response_content(self, service_name, response_data): + """从响应中提取内容""" + try: + if service_name == 'claude': + return response_data['content'][0]['text'] + elif service_name == 'gemini': + return response_data['candidates'][0]['content']['parts'][0]['text'] + else: + # OpenAI格式 + return response_data['choices'][0]['message']['content'] + except (KeyError, IndexError) as e: + print(f"解析{service_name}响应失败: {e}") + return None + + def generate_ai_summary_with_service(self, content, page_title, service_name): + """使用指定服务生成摘要""" + if service_name not in self.ai_services: + print(f"不支持的AI服务: {service_name}") + return None + + service_config = self.ai_services[service_name] + + # 检查API密钥 + if not service_config['api_key'] or service_config['api_key'].startswith('your-'): + print(f"{service_name} API密钥未配置") + return None + + try: + headers = self.build_headers(service_config) + payload = self.build_payload(service_name, service_config, content, page_title) + + # 对于Google API,添加API密钥到URL + url = service_config['url'] + if service_name == 'gemini': + url = f"{url}?key={service_config['api_key']}" response = requests.post( - self.api_config['url'], - headers=self.api_config['headers'], + url, + headers=headers, json=payload, timeout=30 ) if response.status_code == 200: result = response.json() - summary = result['choices'][0]['message']['content'].strip() + summary = self.extract_response_content(service_name, result) - # 清理可能的格式问题 - summary = re.sub(r'^["""''`]+|["""''`]+$', '', summary) - summary = re.sub(r'^\s*摘要[::]\s*', '', summary) - summary = re.sub(r'^\s*总结[::]\s*', '', summary) + if summary: + # 清理可能的格式问题 + summary = re.sub(r'^["""''`]+|["""''`]+$', '', summary.strip()) + summary = re.sub(r'^\s*摘要[::]\s*', '', summary) + summary = re.sub(r'^\s*总结[::]\s*', '', summary) + summary = re.sub(r'^\s*Summary[::]\s*', '', summary) + summary = re.sub(r'^\s*Abstract[::]\s*', '', summary) + return summary - return summary else: - print(f"DeepSeek API请求失败: {response.status_code} - {response.text}") + print(f"{service_name} API请求失败: {response.status_code} - {response.text}") return None except requests.exceptions.RequestException as e: - print(f"DeepSeek API请求异常: {e}") + print(f"{service_name} API请求异常: {e}") return None except Exception as e: - print(f"AI摘要生成异常: {e}") + print(f"{service_name} 摘要生成异常: {e}") return None + def generate_ai_summary(self, content, page_title=""): + """生成AI摘要(支持CI环境策略)""" + is_ci = self.is_ci_environment() + + # 如果在 CI 环境中且配置为只使用缓存 + if is_ci and self.ci_config['ci_only_cache']: + print(f"📦 CI 环境仅使用缓存模式") + return None, 'ci_cache_only' + + # 按优先级尝试不同服务 + services_to_try = [self.default_service] + [s for s in self.service_fallback_order if s != self.default_service] + + for service_name in services_to_try: + if service_name in self.ai_services: + lang_desc = {'zh': '中文', 'en': '英文', 'both': '双语'} + env_desc = '(CI)' if is_ci else '(本地)' + print(f"🔄 尝试使用 {service_name} 生成{lang_desc.get(self.summary_language, '中文')}摘要 {env_desc}...") + summary = self.generate_ai_summary_with_service(content, page_title, service_name) + if summary: + return summary, service_name + + print("⚠️ 所有AI服务均不可用") + return None, None + def generate_fallback_summary(self, content, page_title=""): - """生成备用摘要(基于规则的智能摘要)""" + """生成备用摘要(考虑CI环境配置)""" + is_ci = self.is_ci_environment() + + # 如果在 CI 环境中且禁用了备用摘要 + if is_ci and not self.ci_config['ci_fallback_enabled']: + print(f"🚫 CI 环境禁用备用摘要") + return None + # 移除格式符号 clean_text = re.sub(r'^#+\s*', '', content, flags=re.MULTILINE) clean_text = re.sub(r'\*\*([^*]+)\*\*', r'\1', clean_text) @@ -272,117 +649,48 @@ class AISummaryGenerator: # 简化冗长的摘要 if len(summary) > 120: summary = selected_sentences[0] + '.' - return summary - else: - # 根据标题生成通用摘要 - if any(keyword in page_title for keyword in ['教程', '指南', 'Tutorial']): - return '本文提供了详细的教程指南,通过实例演示帮助读者掌握相关技术要点。' - elif any(keyword in page_title for keyword in ['配置', '设置', '安装', 'Config']): - return '本文介绍了系统配置的方法和步骤,提供实用的设置建议和最佳实践。' - elif any(keyword in page_title for keyword in ['开发', '编程', 'Development']): - return '本文分享了开发经验和技术实践,提供了实用的代码示例和解决方案。' + + # 根据语言设置生成不同的备用摘要 + if self.summary_language == 'en': + return self._generate_english_fallback(page_title) + elif self.summary_language == 'both': + zh_summary = summary + en_summary = self._generate_english_fallback(page_title) + return f"{zh_summary}\n\n{en_summary}" else: - return '本文深入探讨了相关技术内容,提供了实用的方法和解决方案。' - - def process_page(self, markdown, page, config): - """处理页面,生成AI摘要和阅读统计""" - # 检查是否需要显示阅读信息 - show_reading_info = self.should_show_reading_info(page, markdown) - - # 检查是否需要生成AI摘要 - should_generate_ai_summary = self.should_generate_summary(page, markdown) - - # 如果两者都不需要,直接返回原内容 - if not show_reading_info and not should_generate_ai_summary: - return markdown - - # 计算阅读统计 - reading_time, chinese_chars, code_lines = self.calculate_reading_stats(markdown) - - result_blocks = [] - - # 处理AI摘要 - if should_generate_ai_summary: - clean_content = self.clean_content_for_ai(markdown) - - # 内容长度检查 - if len(clean_content) >= 200: - content_hash = self.get_content_hash(clean_content) - page_title = getattr(page, 'title', '') - - # 检查缓存 - cached_summary = self.get_cached_summary(content_hash) - if cached_summary: - summary = cached_summary.get('summary', '') - ai_service = 'cached' - print(f"✅ 使用缓存摘要: {page.file.src_path}") - else: - # 生成新摘要 - print(f"🤖 正在生成AI摘要: {page.file.src_path}") - summary = self.generate_ai_summary(clean_content, page_title) - - if not summary: - summary = self.generate_fallback_summary(clean_content, page_title) - ai_service = 'fallback' - print(f"📝 使用备用摘要: {page.file.src_path}") - else: - ai_service = 'deepseek' - print(f"✅ AI摘要生成成功: {page.file.src_path}") - - # 保存到缓存 - self.save_summary_cache(content_hash, { - 'summary': summary, - 'service': ai_service, - 'page_title': page_title - }) - - # 添加AI摘要块 - ai_summary_block = self.format_ai_summary(summary, ai_service) - result_blocks.append(ai_summary_block) - - # 添加阅读信息块 - if show_reading_info: - reading_info_block = self.format_reading_info(reading_time, chinese_chars, code_lines) - result_blocks.append(reading_info_block) - - # 合并所有块并返回 - if result_blocks: - return '\n'.join(result_blocks) + '\n\n' + markdown + return summary else: - return markdown + # 根据标题和语言生成通用摘要 + if self.summary_language == 'en': + return self._generate_english_fallback(page_title) + elif self.summary_language == 'both': + zh_summary = self._generate_chinese_fallback(page_title) + en_summary = self._generate_english_fallback(page_title) + return f"{zh_summary}\n\n{en_summary}" + else: + return self._generate_chinese_fallback(page_title) - def should_generate_summary(self, page, markdown): - """判断是否应该生成摘要 - 可自定义文件夹""" - # 检查页面元数据 - if hasattr(page, 'meta'): - # 明确禁用 - if page.meta.get('ai_summary') == False: - return False - - # 强制启用 - if page.meta.get('ai_summary') == True: - return True - - # 获取文件路径 - src_path = page.file.src_path.replace('\\', '/') # 统一路径分隔符 - - # 检查排除模式 - if any(pattern in src_path for pattern in self.exclude_patterns): - return False - - # 检查排除的特定文件 - if src_path in self.exclude_files: - return False - - # 检查是否在启用的文件夹中 - for folder in self.enabled_folders: - if src_path.startswith(folder) or f'/{folder}' in src_path: - folder_name = folder.rstrip('/') - print(f"🎯 {folder_name}文件夹文章检测到,启用AI摘要: {src_path}") - return True - - # 默认不生成摘要 - return False + def _generate_chinese_fallback(self, page_title=""): + """生成中文备用摘要""" + if any(keyword in page_title for keyword in ['教程', '指南', 'Tutorial']): + return '本文提供了详细的教程指南,通过实例演示帮助读者掌握相关技术要点。' + elif any(keyword in page_title for keyword in ['配置', '设置', '安装', 'Config']): + return '本文介绍了系统配置的方法和步骤,提供实用的设置建议和最佳实践。' + elif any(keyword in page_title for keyword in ['开发', '编程', 'Development']): + return '本文分享了开发经验和技术实践,提供了实用的代码示例和解决方案。' + else: + return '本文深入探讨了相关技术内容,提供了实用的方法和解决方案。' + + def _generate_english_fallback(self, page_title=""): + """生成英文备用摘要""" + if any(keyword in page_title.lower() for keyword in ['tutorial', 'guide', '教程', '指南']): + return 'This article provides a detailed tutorial guide with practical examples to help readers master relevant technical points.' + elif any(keyword in page_title.lower() for keyword in ['config', 'setup', 'install', '配置', '设置', '安装']): + return 'This article introduces system configuration methods and procedures, providing practical setup suggestions and best practices.' + elif any(keyword in page_title.lower() for keyword in ['develop', 'programming', 'code', '开发', '编程']): + return 'This article shares development experience and technical practices, providing practical code examples and solutions.' + else: + return 'This article explores relevant technical content in depth, providing practical methods and solutions.' def calculate_reading_stats(self, markdown): """计算中文字符数和代码行数""" @@ -433,9 +741,7 @@ class AISummaryGenerator: continue # 检测是否为代码内容 - is_code = self.is_code_content(code_content) - - if is_code: + if self.is_code_content(code_content): total_code_lines += line_count return total_code_lines @@ -479,10 +785,178 @@ class AISummaryGenerator: return False + def is_ci_environment(self): + """检测是否在 CI 环境中运行""" + # 常见的 CI 环境变量 + ci_indicators = [ + 'CI', 'CONTINUOUS_INTEGRATION', # 通用 CI 标识 + 'GITHUB_ACTIONS', # GitHub Actions + 'GITLAB_CI', # GitLab CI + 'JENKINS_URL', # Jenkins + 'TRAVIS', # Travis CI + 'CIRCLECI', # CircleCI + 'AZURE_HTTP_USER_AGENT', # Azure DevOps + 'TEAMCITY_VERSION', # TeamCity + 'BUILDKITE', # Buildkite + 'CODEBUILD_BUILD_ID', # AWS CodeBuild + 'NETLIFY', # Netlify + 'VERCEL', # Vercel + 'CF_PAGES', # Cloudflare Pages + ] + + for indicator in ci_indicators: + if os.getenv(indicator): + return True + + return False + + def should_run_in_current_environment(self): + """判断是否应该在当前环境中运行 AI 摘要""" + return self._should_run + + def _get_ci_name(self): + """获取 CI 环境名称""" + if os.getenv('GITHUB_ACTIONS'): + return 'GitHub Actions' + elif os.getenv('GITLAB_CI'): + return 'GitLab CI' + elif os.getenv('JENKINS_URL'): + return 'Jenkins' + elif os.getenv('TRAVIS'): + return 'Travis CI' + elif os.getenv('CIRCLECI'): + return 'CircleCI' + elif os.getenv('AZURE_HTTP_USER_AGENT'): + return 'Azure DevOps' + elif os.getenv('NETLIFY'): + return 'Netlify' + elif os.getenv('VERCEL'): + return 'Vercel' + elif os.getenv('CF_PAGES'): + return 'Cloudflare Pages' + elif os.getenv('CODEBUILD_BUILD_ID'): + return 'AWS CodeBuild' + else: + return 'Unknown CI' + + def process_page(self, markdown, page, config): + """处理页面,生成AI摘要和阅读统计(支持CI环境检测)""" + # 检查是否应该在当前环境运行 + if not self.should_run_in_current_environment(): + return markdown + + # 检查是否需要显示阅读信息 + show_reading_info = self.should_show_reading_info(page, markdown) + + # 检查是否需要生成AI摘要 + should_generate_ai_summary = self.should_generate_summary(page, markdown) + + # 如果两者都不需要,直接返回原内容 + if not show_reading_info and not should_generate_ai_summary: + return markdown + + # 计算阅读统计 + reading_time, chinese_chars, code_lines = self.calculate_reading_stats(markdown) + + result_blocks = [] + + # 处理AI摘要 + if should_generate_ai_summary: + clean_content = self.clean_content_for_ai(markdown) + + # 内容长度检查 + if len(clean_content) >= 100: + content_hash = self.get_content_hash(clean_content) + page_title = getattr(page, 'title', '') + is_ci = self.is_ci_environment() + + # 检查缓存 + cached_summary = self.get_cached_summary(content_hash) + if cached_summary: + summary = cached_summary.get('summary', '') + ai_service = cached_summary.get('service', 'cached') + env_desc = '(CI)' if is_ci else '(本地)' + print(f"✅ 使用缓存摘要 {env_desc}: {page.file.src_path}") + else: + # 生成新摘要 + lang_desc = {'zh': '中文', 'en': '英文', 'both': '双语'} + env_desc = '(CI)' if is_ci else '(本地)' + print(f"🤖 正在生成{lang_desc.get(self.summary_language, '中文')}AI摘要 {env_desc}: {page.file.src_path}") + summary, ai_service = self.generate_ai_summary(clean_content, page_title) + + if not summary: + # 尝试生成备用摘要 + summary = self.generate_fallback_summary(clean_content, page_title) + if summary: + ai_service = 'fallback' + print(f"📝 使用备用摘要 {env_desc}: {page.file.src_path}") + else: + print(f"❌ 无法生成摘要 {env_desc}: {page.file.src_path}") + else: + print(f"✅ AI摘要生成成功 ({ai_service}) {env_desc}: {page.file.src_path}") + + # 保存到缓存 + if summary: + self.save_summary_cache(content_hash, { + 'summary': summary, + 'service': ai_service, + 'page_title': page_title + }) + + # 添加AI摘要块 + if summary: + ai_summary_block = self.format_summary(summary, ai_service) + result_blocks.append(ai_summary_block) + + # 添加阅读信息块 + if show_reading_info: + reading_info_block = self.format_reading_info(reading_time, chinese_chars, code_lines) + result_blocks.append(reading_info_block) + + # 合并所有块并返回 + if result_blocks: + return '\n'.join(result_blocks) + '\n\n' + markdown + else: + return markdown + + def should_generate_summary(self, page, markdown): + """判断是否应该生成摘要""" + # 检查页面元数据 + if hasattr(page, 'meta'): + # 明确禁用 + if page.meta.get('ai_summary') == False: + return False + + # 强制启用 + if page.meta.get('ai_summary') == True: + return True + + # 获取文件路径 + src_path = page.file.src_path.replace('\\', '/') # 统一路径分隔符 + + # 检查排除模式 + if any(pattern in src_path for pattern in self.exclude_patterns): + return False + + # 检查排除的特定文件 + if src_path in self.exclude_files: + return False + + # 检查是否在启用的文件夹中 + for folder in self.enabled_folders: + if src_path.startswith(folder) or f'/{folder}' in src_path: + folder_name = folder.rstrip('/') + lang_desc = {'zh': '中文', 'en': '英文', 'both': '双语'} + print(f"🎯 {folder_name}文件夹文章检测到,启用{lang_desc.get(self.summary_language, '中文')}AI摘要: {src_path}") + return True + + # 默认不生成摘要 + return False + def should_show_reading_info(self, page, markdown): """判断是否应该显示阅读信息""" # 检查页面元数据 - if page.meta.get('hide_reading_time', False): + if hasattr(page, 'meta') and page.meta.get('hide_reading_time', False): return False # 获取文件路径 @@ -500,9 +974,10 @@ class AISummaryGenerator: return False # 检查页面类型 - page_type = page.meta.get('type', '') - if page_type in {'landing', 'special', 'widget'}: - return False + if hasattr(page, 'meta'): + page_type = page.meta.get('type', '') + if page_type in {'landing', 'special', 'widget'}: + return False # 内容长度检查 if len(markdown) < 300: @@ -515,31 +990,6 @@ class AISummaryGenerator: return True - def format_ai_summary(self, summary, ai_service): - """格式化AI摘要显示""" - service_config = { - 'deepseek': { - 'icon': '🤖', - 'name': 'AI智能摘要', - 'color': 'info' - }, - 'fallback': { - 'icon': '📝', - 'name': '自动摘要', - 'color': 'tip' - }, - 'cached': { - 'icon': '🤖', - 'name': 'AI智能摘要', - 'color': 'info' - } - } - - config = service_config.get(ai_service, service_config['deepseek']) - - return f'''??? {config['color']} "{config['icon']} {config['name']}" - {summary}''' - def format_reading_info(self, reading_time, chinese_chars, code_lines): """格式化阅读信息显示""" if code_lines > 0: @@ -550,31 +1000,139 @@ class AISummaryGenerator: 阅读时间:**{reading_time}** 分钟 | 中文字符:**{chinese_chars}**''' def format_summary(self, summary, ai_service): - """保持向后兼容的格式化方法""" - return self.format_ai_summary(summary, ai_service) + """格式化摘要显示(包含CI环境标识)""" + # 根据语言设置显示不同的标题 + service_names = { + 'zh': { + 'deepseek': 'AI智能摘要 (DeepSeek)', + 'openai': 'AI智能摘要 (ChatGPT)', + 'azure_openai': 'AI智能摘要 (Azure OpenAI)', + 'claude': 'AI智能摘要 (Claude)', + 'gemini': 'AI智能摘要 (Gemini)', + 'fallback': '自动摘要', + 'cached': 'AI智能摘要', + 'ci_cache_only': 'AI智能摘要 (缓存)' + }, + 'en': { + 'deepseek': 'AI Summary (DeepSeek)', + 'openai': 'AI Summary (ChatGPT)', + 'azure_openai': 'AI Summary (Azure OpenAI)', + 'claude': 'AI Summary (Claude)', + 'gemini': 'AI Summary (Gemini)', + 'fallback': 'Auto Summary', + 'cached': 'AI Summary', + 'ci_cache_only': 'AI Summary (Cached)' + }, + 'both': { + 'deepseek': 'AI智能摘要 / AI Summary (DeepSeek)', + 'openai': 'AI智能摘要 / AI Summary (ChatGPT)', + 'azure_openai': 'AI智能摘要 / AI Summary (Azure OpenAI)', + 'claude': 'AI智能摘要 / AI Summary (Claude)', + 'gemini': 'AI智能摘要 / AI Summary (Gemini)', + 'fallback': '自动摘要 / Auto Summary', + 'cached': 'AI智能摘要 / AI Summary', + 'ci_cache_only': 'AI智能摘要 / AI Summary (缓存)' + } + } + + name_config = service_names.get(self.summary_language, service_names['zh']) + service_name = name_config.get(ai_service, name_config['fallback']) + + # 图标和颜色配置 + icon = '💾' if ai_service not in ['fallback', 'ci_cache_only'] else '📝' + color = 'info' if ai_service not in ['fallback', 'ci_cache_only'] else 'tip' + + return f'''!!! {color} "{icon} {service_name}" + {summary} + +''' # 创建全局实例 ai_summary_generator = AISummaryGenerator() -# 🔧 自定义配置函数 -def configure_ai_summary(enabled_folders=None, exclude_patterns=None, exclude_files=None): +# 🔧 配置函数 +def configure_ai_summary(enabled_folders=None, exclude_patterns=None, exclude_files=None, + ai_service=None, service_config=None, language='zh', + ci_enabled=None, local_enabled=None, ci_only_cache=None, ci_fallback=None): """ - 配置AI摘要功能 + 配置AI摘要功能(支持CI和本地环境分别配置) Args: - enabled_folders: 启用AI摘要的文件夹列表,例如 ['blog/', 'docs/', 'posts/'] - exclude_patterns: 排除的模式列表,例如 ['404.md', '/admin/'] - exclude_files: 排除的特定文件列表,例如 ['blog/index.md'] + enabled_folders: 启用AI摘要的文件夹列表 + exclude_patterns: 排除的模式列表 + exclude_files: 排除的特定文件列表 + ai_service: 使用的AI服务 ('deepseek', 'openai', 'claude', 'gemini') + service_config: AI服务配置 + language: 摘要语言 ('zh': 中文, 'en': 英文, 'both': 双语) + ci_enabled: 是否在 CI 环境中启用 + local_enabled: 是否在本地环境中启用 + ci_only_cache: CI 环境是否仅使用缓存 + ci_fallback: CI 环境是否启用备用摘要 Example: - # 只在blog和docs文件夹启用 - configure_ai_summary(['blog/', 'docs/']) - - # 在所有文件夹启用,但排除特定文件 - configure_ai_summary([''], exclude_files=['index.md', 'about.md']) + # 推荐配置:只在 CI 中启用,本地禁用 + configure_ai_summary( + enabled_folders=['blog/', 'docs/'], + language='zh', + ci_enabled=True, # CI 中启用 + local_enabled=False, # 本地禁用 + ci_only_cache=False, # CI 中允许生成新摘要 + ci_fallback=True # CI 中启用备用摘要 + ) """ ai_summary_generator.configure_folders(enabled_folders, exclude_patterns, exclude_files) + ai_summary_generator.configure_language(language) + + # 配置环境行为 + if any(x is not None for x in [ci_enabled, local_enabled, ci_only_cache, ci_fallback]): + configure_ci_behavior(ci_enabled, local_enabled, ci_only_cache, ci_fallback) + + if ai_service: + if service_config: + # 合并配置 + current_config = ai_summary_generator.ai_services.get(ai_service, {}) + current_config.update(service_config) + ai_summary_generator.configure_ai_service(ai_service, current_config) + else: + ai_summary_generator.configure_ai_service(ai_service) + +# 🔧 新增 CI 配置函数 +def configure_ci_behavior(enabled_in_ci=None, enabled_in_local=None, ci_only_cache=None, ci_fallback_enabled=None): + """ + 配置 CI 和本地环境行为 + + Args: + enabled_in_ci: 是否在 CI 环境中启用 AI 摘要 + enabled_in_local: 是否在本地环境中启用 AI 摘要 + ci_only_cache: CI 环境是否仅使用缓存 + ci_fallback_enabled: CI 环境是否启用备用摘要 + + Example: + # 只在 CI 中启用,本地禁用(推荐配置) + configure_ci_behavior(enabled_in_ci=True, enabled_in_local=False) + + # 本地和 CI 都启用 + configure_ci_behavior(enabled_in_ci=True, enabled_in_local=True) + + # 只在本地启用,CI 中禁用 + configure_ci_behavior(enabled_in_ci=False, enabled_in_local=True) + """ + if enabled_in_ci is not None: + ai_summary_generator.ci_config['enabled_in_ci'] = enabled_in_ci + print(f"✅ CI 环境 AI 摘要: {'启用' if enabled_in_ci else '禁用'}") + + if enabled_in_local is not None: + ai_summary_generator.ci_config['enabled_in_local'] = enabled_in_local + print(f"✅ 本地环境 AI 摘要: {'启用' if enabled_in_local else '禁用'}") + + if ci_only_cache is not None: + ai_summary_generator.ci_config['ci_only_cache'] = ci_only_cache + print(f"✅ CI 环境仅缓存模式: {'启用' if ci_only_cache else '禁用'}") + + if ci_fallback_enabled is not None: + ai_summary_generator.ci_config['ci_fallback_enabled'] = ci_fallback_enabled + print(f"✅ CI 环境备用摘要: {'启用' if ci_fallback_enabled else '禁用'}") def on_page_markdown(markdown, page, config, files): - """MkDocs hook入口点 - 统一处理AI摘要和阅读统计""" + """MkDocs hook入口点""" return ai_summary_generator.process_page(markdown, page, config) \ No newline at end of file diff --git a/overrides/hooks/test.py b/overrides/hooks/test.py index 777e6cc..e2f8638 100644 --- a/overrides/hooks/test.py +++ b/overrides/hooks/test.py @@ -18,7 +18,7 @@ class AISummaryGenerator: 'model': 'deepseek-chat', 'headers': { 'Content-Type': 'application/json', - 'Authorization': 'Bearer sk-7dbcd6e21fb3417299b50aecff76c7bf' + 'Authorization': 'Bearer sk-' } } diff --git a/search/search_index.json b/search/search_index.json index 5d1ed37..6a4f013 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"Home","text":"\u6700\u597d\u7684MkDocs\u535a\u5ba2\u6559\u7a0b
  • \u5bfc\u822a\u680f

    • \u7b80\u6d01\u7f8e\u89c2 \uff0c\u529f\u80fd\u591a\u5143\u5316\uff0c\u5c0f\u767d\u914d\u7f6e
    • \u57fa\u4e8eMaterial for MkDocs\u7f8e\u5316
    • \u5982\u9047\u9875\u9762\u5361\u987f\uff0c\u8bf7\u4f7f\u7528\u79d1\u5b66\u4e0a\u7f51
    • \ud835\udd59\ud835\udd52\ud835\udd67\ud835\udd56 \ud835\udd52 \ud835\udd58\ud835\udd60\ud835\udd60\ud835\udd55 \ud835\udd65\ud835\udd5a\ud835\udd5e\ud835\udd56 !
    Mac/PC\u7aef\u79fb\u52a8\u7aef

    \u8bf7\u5728\u4e0a\u65b9\u6807\u7b7e\u9009\u62e9\u5206\u7c7b/\u5de6\u4fa7\u76ee\u5f55\u9009\u62e9\u6587\u7ae0

    \u8bf7\u70b9\u51fb\u5de6\u4e0a\u89d2\u56fe\u6807\u9009\u62e9\u5206\u7c7b\u548c\u6587\u7ae0

\u4e0d\u540c\u4e8e\u5e02\u9762\u4e0a\u8fc7\u65f6\u7684MkDocs\u6559\u7a0b\uff0c\u672c\u7ad9\u63d0\u4f9b\u4e86\u6700\u8be6\u7ec6\u6700\u4fbf\u6377\u6700\u524d\u6cbf\u7684MkDocs\u4e2d\u6587\u6587\u5b57/\u89c6\u9891\u6559\u7a0b\uff0c\u4e0e\u5b98\u65b9\u53d1\u5e03\u7684\u6559\u7a0b\u7248\u672c\u540c\u6b65\u3002\u5305\u542b\u4e86MkDocs\u7684\u5b89\u88c5\u3001\u914d\u7f6e\u3001\u4e3b\u9898\u7f8e\u5316\u3001\u63d2\u4ef6\u4f7f\u7528\u7b49\u5185\u5bb9\u3002\u65e0\u8bba\u4f60\u662f\u521d\u5b66\u8005\u8fd8\u662f\u6709\u7ecf\u9a8c\u7684\u7528\u6237\uff0c\u90fd\u80fd\u5728\u8fd9\u91cc\u627e\u5230\u4f60\u9700\u8981\u7684\u5e2e\u52a9\u3002\u6211\u4eec\u8fd8\u63d0\u4f9b\u4e86\u793a\u4f8b\u548c\u5b9e\u7528\u7684\u6280\u5de7\uff0c\u5e2e\u52a9\u4f60\u66f4\u597d\u5730\u4f7f\u7528MkDocs\u3002\ud835\udcf3\ud835\udcfe\ud835\udcfc\ud835\udcfd \ud835\udcee\ud835\udcf7\ud835\udcf3\ud835\udcf8\ud835\udd02 \ud835\udcf2\ud835\udcfd\uff5e

  • Mkdocs\u6559\u7a0b(\u5fc5\u770b)

    • Mkdocs\u89c6\u9891\u6559\u7a0b(Bilibili)
    • \u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages
    • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
    • \u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe
    • \u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
  • \u5173\u4e8e

    • Mkdocs-Wcowin\u535a\u5ba2\u4e3b\u9898\u793e\u533a
    • \u7559\u8a00\u677f1
    • Blogger
    • \u4e86\u89e3\u62112
    • \u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561

\u672c\u7ad9\u5df2\u7ecf\u8fd0\u884c

  1. \u592a\u9633\u603b\u662f\u80fd\u6e29\u6696\u5411\u65e5\u8475\u00a0\u21a9

  2. All-problems-in-computer-science-can-be-solved-by-another-level-of-indirection\u00a0\u21a9

"},{"location":"link/","title":"\u53cb\u94fe","text":""},{"location":"link/#_1","title":"\u6b22\u8fce\u52a0\u5165\u53cb\u94fe(\u4e0d\u5206\u5148\u540e)","text":"Wcowin's Blog \u201c\u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0\u201d"},{"location":"link/#_2","title":"\u5931\u8054\u4eba\u5458","text":"\u90dd\u5b87\u535a\u5ba2 \u8bb0\u5f55\u6211\u7684\u6210\u957f\u548c\u9752\u6625 \u4ea4\u6362\u53cb\u94fe\uff0c\u8bf7\u6dfb\u52a0\u672c\u7ad9\u53cb\u94fe\u540e\u4e0b\u65b9\u7559\u8a00\u7533\u8bf7\uff0c\u671f\u671b\u60a8\u7684\u7ad9\u70b9:
  • \u72ec\u7acb\u535a\u5ba2(\u4e0d\u8981\u6c42\u72ec\u7acb\u57df\u540d)\uff0chttps\uff0c\u8bbf\u95ee\u6d41\u7545
  • \u539f\u521b\u5185\u5bb9\u4e3a\u4e3b\uff0c\u539f\u521b\u5185\u5bb93\u7bc7\u4ee5\u4e0a
  • \u5904\u4e8e\u6d3b\u8dc3\u72b6\u6001\uff0c\u6709\u4e00\u5b9a\u7684\u66f4\u65b0\u9891\u7387
  • \u5efa\u7ad9\u4e00\u4e2a\u6708\u4ee5\u4e0a
  • \u672a\u6dfb\u52a0\u53cb\u94fe\u6216\u7533\u8bf7\u672a\u901a\u8fc7\uff0c\u8bc4\u8bba\u7559\u8a00\u4f1a\u88ab\u9690\u85cf\u3002

\u672c\u7ad9\u5df2\u7ecf\u52a0\u5165\u5341\u5e74\u4e4b\u7ea6\uff1a \u8bf7\u653e\u5fc3\u6dfb\u52a0\u672c\u7ad9\u53cb\u94fe

\u53cb\u94fe\u683c\u5f0f\u793a\u4f8b/\u672c\u7ad9\u4fe1\u606f:

TxtHTML(\u63a8\u8350)Butterfly\u901a\u7528

\u540d\u79f0: Wcowin's Blog \u94fe\u63a5: https://wcowin.work/ \u5934\u50cf: https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp \u7b80\u4ecb: \u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0

\u63a8\u8350\u5728\u8bc4\u8bba\u533a\u53d1\u9001\u8fd9\u79cd\u683c\u5f0f\uff0c*\u53f7\u7684\u9700\u8981\u586b\u5199\u81ea\u5df1\u7684\u4fe1\u606f

<div class=\"card\"> \n <img class=\"ava\" src=\"*\u4f60\u7684\u5934\u50cf\u94fe\u63a5*\" /> \n <div class=\"card-header\"> \n  <div> \n   <a href=\"*\u4f60\u7684\u7f51\u7ad9\u5730\u5740* \" target=\"_blank\">*\u4f60\u7684\u7ad9\u70b9\u540d\u79f0*</a> \n  </div> \n  <div class=\"info\">\n   *\u4f60\u7684\u7ad9\u70b9\u63cf\u8ff0*\n  </div> \n </div> \n</div>\n
- name: Wcowin's Blog\n  link: https://wcowin.work/\n  avatar: https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp\n  descr: \u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0\n

\u70b9\u51fb\u586b\u5199\u53cb\u94fe\u7533\u8bf7\u95ee\u5377

"},{"location":"liuyanban/","title":"\u7545\u6240\u6b32\u8a00\u7559\u8a00\u677f","text":"

\u6708\u843d\u4e4c\u557c\u971c\u6ee1\u5929 \u6c5f\u67ab\u6e14\u706b\u5bf9\u6101\u7720

\u300a\u67ab\u6865\u591c\u6cca\u300b\u3010\u5510\u4ee3\u3011\u5f20\u7ee7

\u8bc4\u8bba\u7cfb\u7edf\u5207\u6362

Giscus Cusdis

\u8bc4\u8bba\u5ba1\u6838\u540e\u624d\u4f1a\u663e\u793a

"},{"location":"tag/","title":"\u5206\u7c7b","text":""},{"location":"tag/#tags","title":"Tags","text":"
  • tips

    \u4ee5\u4e0b\u662f\u7f51\u7ad9\u6587\u7ae0\u7684\u5206\u7c7b\uff0c\u70b9\u51fb\u53ef\u8df3\u8f6c\u5230\u5bf9\u5e94\u5206\u7c7b\u4e0b\u7684\u6587\u7ae0

"},{"location":"tag/#tag:markdown","title":"Markdown","text":"
  • MWeb Pro
  • Markdown\u6307\u5357
"},{"location":"tag/#tag:mkdocs","title":"Mkdocs","text":"
  • 0.Mkdocs\u6559\u7a0b\u524d\u8a00
  • 1.\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875
  • 2.Mkdocs\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
  • 3.\u89e3\u51b3Github Pages\u90e8\u7f72mkdocs\u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898
  • JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f
  • MkDocs\u6587\u6863AI\u6458\u8981
  • \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233
  • \u4fee\u6539\u7f51\u7ad9\u5b57\u4f53
  • \u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97
  • \u5d4c\u5165PDF\u6587\u4ef6
  • \u6dfb\u52a0404\u9875\u9762
  • \u6dfb\u52a0Mkdocs\u535a\u5ba2
  • \u6dfb\u52a0\u53cb\u94fe
  • \u6dfb\u52a0\u5728\u7ebf\u804a\u5929
  • \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf(giscus\u4e3a\u4f8b)
  • \u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f
  • \u76f8\u5bf9\u5730\u5740\u7684\u4e00\u4e9b\u95ee\u9898
  • \u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1
  • \u80cc\u666f\u7279\u6548
  • \u9875\u811a\u8bbe\u7f6e
"},{"location":"tag/#tag:\u6280\u672f\u5206\u4eab","title":"\u6280\u672f\u5206\u4eab","text":"
  • Git \u5b9e\u7528\u6280\u5de7
  • \u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd
  • \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1
"},{"location":"tag/#tag:\u8bbe\u8ba1\u7f8e\u5b66","title":"\u8bbe\u8ba1\u7f8e\u5b66","text":"
  • \u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21
  • \u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u89c2\u70b9
"},{"location":"ZH-TW/","title":"Home","text":"

\ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

\u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a225

"},{"location":"ZH-TW/#_1","title":"\u9996\u9801","text":"\u201c\u5faa\u6b64\u82e6\u65c5 \u4ee5\u9054\u661f\u8fb0\u201d
  • \u900f\u904e\u4e3b\u984c\u548c\u76ee\u9304\u4ee5\u958b\u555f\u6587\u7ae0
    • Mac/PC\u7aef \u8acb\u5728\u4e0a\u65b9\u6a19\u7c64\u5217\u9078\u64c7\u4e3b\u984c \u5728\u5de6\u5074\u76ee\u9304\u9078\u64c7\u6587\u7ae0
    • \u884c\u52d5\u7aef \u8acb\u9ede\u9078\u5de6\u4e0a\u89d2\u5716\u793a\u9078\u64c7\u4e3b\u984c\u548c\u6587\u7ae0
  • \u641c\u5c0b\u95dc\u9375\u5b57\u4ee5\u958b\u555f\u6587\u7ae0
  • \u5982\u9047\u5230\u7db2\u9801\u5361\u9813/\u958b\u555f\u6587\u7ae0\u5f8c\u7121\u6cd5\u986f\u793a\u5716\u7247\u7684\u60c5\u6cc1\uff0c\u8acb\u4f7f\u7528\u79d1\u5b78\u4e0a\u7db2\u4ee5\u6253\u7834\u8cc7\u8a0a\u58c1\u58d8

\u5feb\u901f\u8ac7\u8a71(1) \u806f\u7d61\u6211(2)

  1. \u9ede\u9078\u53f3\u4e0b\u89d2\u8207\u6211\u7dda\u4e0a\u4ea4\u8ac7.
  2. 18939533255
  • Mkdocs\u6559\u7a0b

    • \u5229\u7528Mkdocs\u90e8\u7f72\u975c\u614b\u7db2\u9801\u81f3GitHub pages
    • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8aaa\u660e(mkdocs.yml)
    • \u5982\u4f55\u7d66MKdocs\u6dfb\u52a0\u53cb\u93c8
    • \u7db2\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
    • Blogger
  • \u95dc\u65bc

    • Mkdocs-Wcowin\u535a\u5ba2\u4e3b\u984c\u793e\u5340
    • \u7559\u8a00\u677f1
    • Blogger \u4e86\u89e3\u62112

\u672c\u7ad9\u5df2\u7d93\u904b\u4f5c

  1. \u592a\u967d\u7e3d\u662f\u80fd\u6eab\u6696\u5411\u65e5\u8475\u00a0\u21a9

  2. All problems in computer science can be solved by another level of indirection\u00a0\u21a9

"},{"location":"about/geren/","title":"\u5173\u4e8e\u6211","text":""},{"location":"about/geren/#_1","title":"\u4eca\u65e5\u8bd7\u8bcd","text":""},{"location":"about/geren/#_2","title":"\u5173\u4e8e\u6211","text":"\u89c2\u53f2\u77e5\u4eca\uff0c\u5f53\u601d\u8fdb\u9000\uff0c\u8bfb\u4e66\u660e\u5fd7\u53ef\u8bc6\u6625\u79cb \u2014\u2014Wcowin 1\u5e74+ \u5de5\u4f5c\u7ecf\u9a8c 3\u9879+ \u5b8c\u6210\u7684\u9879\u76ee 2\u4e2a+ \u8d21\u732e\u7684\u5f00\u6e90 \u4e0b\u8f7d\u7b80\u5386"},{"location":"about/geren/#_3","title":"\u6211\u7684\u5c65\u5386","text":"\u6765\u65f6\u8def \u6f2f\u6cb3\u9ad8\u4e2d \u5e73\u51e1\u7684\u4e09\u5e74 2018 - 2021 CTBU \u7535\u5b50\u4fe1\u606f\u5de5\u7a0b\u4e13\u4e1a\u5b66\u58eb 2021 - 2025 \u5bb6\u91cc\u8e72\u5927\u5b66 \u5bc6\u7801\u5b66\u7855\u58eb\u7814\u7a76\u751f 2026 - 2029 \u672a\u5b8c\u5f85\u7eed \u4e8e\u9053\u5404\u52aa\u529b\uff0c\u5343\u91cc\u81ea\u540c\u98ce Before - After"},{"location":"about/geren/#_4","title":"\u4e2a\u4eba\u7b80\u4ecb","text":"

\ud835\ude3f\ud835\ude64\ud835\ude63'\ud835\ude69 \ud835\ude58\ud835\ude56\ud835\ude67\ud835\ude5a \ud835\ude56\ud835\ude57\ud835\ude64\ud835\ude6a\ud835\ude69 \ud835\ude6c\ud835\ude64\ud835\ude67\ud835\ude61\ud835\ude59\ud835\ude61\ud835\ude6e \ud835\ude5a\ud835\ude6e\ud835\ude5a\ud835\ude68 \ud835\ude69\ud835\ude64 \ud835\ude65\ud835\ude6a\ud835\ude67\ud835\ude68\ud835\ude6a\ud835\ude5a \ud835\ude6e\ud835\ude64\ud835\ude6a\ud835\ude67 \ud835\ude64\ud835\ude6c\ud835\ude63 \ud835\ude61\ud835\ude5e\ud835\ude5c\ud835\ude5d\ud835\ude69

About me

  • Hey, I'm Wcowin~
  • \u5496\u5561\u91cd\u5ea6\u7231\u597d\u8005
  • \u70ed\u7231(xi\u0101)\u6298\u817e\u6280\u672f/Math\uff0c\u76ee\u524d\u7684\u7814\u7a76\u9886\u57df\u662f\u5bc6\u7801\u5b66
  • \u8bfb\u4e66\u660e\u5fd7\u53ef\u8bc6\u6625\u79cb;\u8bd7\u8bcd\u7231\u597d\u8005;\u559c\u6b22\u6751\u4e0a\u6625\u6811;\u64c5\u957f\u7fbd\u6bdb\u7403
  • \u6e05\u9192\uff0c\u77e5\u8da3\uff0c\u660e\u5f97\u5931\uff0c\u77e5\u8fdb\u9000

"},{"location":"about/geren/#_5","title":"\u8054\u7cfb\u6211","text":"

\u6211\u7684Wechat \u6211\u7684TG
  • WeChat \u626b\u4e00\u626b\u4e0a\u9762\u7684\u4e8c\u7ef4\u7801\u56fe\u6848 \u52a0\u6211\u4e3a\u670b\u53cb

  • Email

    \u53d1\u9001\u7535\u5b50\u90ae\u4ef6

    • Telegram Let's Chat

    • Twitter @Wcowin

    \u516c\u4f17\u53f7

    \u516c\u4f17\u53f7

    \ud83d\udcac\u6211\u7535\u8bdd\u53f7\u7801\u7684MD5\u7801\uff1a7037F514864088F907CC921687B670EE\uff08\u7834\u89e3\u6709\u5956\uff09

    "},{"location":"about/geren/#_6","title":"\u987b\u77e5","text":"

    \u5982\u679c\u4f60\u5728\u6d4f\u89c8\u535a\u5ba2\u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u4e86\u4efb\u4f55\u95ee\u9898\uff0c\u6b22\u8fce\u524d\u5f80 GitHub \u7684\u4ee3\u7801\u4ed3\u5e93\u63d0\u4ea4 Issues \u6216\u76f4\u63a5\u4fee\u6539\u76f8\u5173\u6587\u4ef6\u540e\u63d0\u4ea4 Pull Requests\u3002\u5982\u679c\u4f60\u6709\u5176\u4ed6\u4e8b\u60c5\u60f3\u8981\u54a8\u8be2\uff0c\u53ef\u4ee5\u901a\u8fc7\u4e0b\u65b9\u6309\u94ae\u4f7f\u7528\u90ae\u4ef6\u8054\u7cfb\u6211,\u8bf7\u4e0d\u8981\u6ee5\u7528\u535a\u5ba2\u7684\u8bc4\u8bba\u529f\u80fd\u53d1\u8868\u4e0e\u4e3b\u9898\u65e0\u5173\u8a00\u8bba\u3002

    \u4e0e\u6211\u8054\u7cfb

    \u5982\u679c\u7ed9\u6211\u53d1\u90ae\u4ef6\uff0c\u6216\u8005\u901a\u8fc7\u53f3\u4e0b\u89d2\u5fae\u4fe1\u6dfb\u52a0\u597d\u53cb\uff0c\u8bf7\u5199\u4e0a\u60a8\u7684\u771f\u540d\u5b9e\u59d3\u3002\u5bf9\u4e8e\u90a3\u4e9b\u4e0d\u77e5\u6765\u8def\u3001\u4e0a\u6765\u5c31\u95ee\u95ee\u9898\u7684\u5fae\u4fe1\u548c\u90ae\u4ef6\uff0c\u6211\u901a\u5e38\u4f1a\u76f4\u63a5\u5ffd\u7565\uff0c\u8c22\u8c22\u3002

    \u53d1\u9001\u7535\u5b50\u90ae\u4ef6

    "},{"location":"about/resume/","title":"\u4e2a\u4eba\u7b80\u5386","text":"\u8bf7\u4f7f\u7528PC\u7aef\u67e5\u770b\uff0c\u8c22\u8c22
    • \u4e2a\u4eba\u7b80\u5386

    "},{"location":"about/test/","title":"\u529f\u80fd\u6d4b\u8bd5","text":"

    Info

    \u6d4b\u8bd5\u4e2d\u7684\u5c0f\u7ec4\u4ef6\uff0c\u53ef\u770b\u6e90\u4ee3\u7801\u81ea\u884c\u53d6\u7528

    \u201c\u5faa\u6b64\u82e6\u65c5 \u4ee5\u8fbe\u661f\u8fb0\u201d
    • \u5173\u4e8e

      • \u6548\u7387
    • \u63a8\u8350

      Wcowin - \u6280\u672f\u535a\u5ba2

    • Release

      \u66f4\u65b0\u4e2d...

      \u2192 \u6240\u6709\u7248\u672c

    • Wcowin

      \u66f4\u65b0\u4e2d...

      \u2192 \u4e86\u89e3\u66f4\u591a

    Image caption

    \\(\\overset{w\u00e1ng}{\u738b}\\overset{k\u0113}{\u79d1}\\overset{w\u00e9n}{\u6587}\\)

    • H2O
    • ATA
    • This was marked
    • This was inserted
    • This was deleted

    "},{"location":"about/test/#01","title":"01","text":"
    • HTML for content and structure
    • JavaScript for interactivity
    • CSS for text running out of boxes
    • Internet Explorer ... huh?
    • Set up in 5 minutes

      Install mkdocs-material with pip and get up and running in minutes

      Getting started

    • It's just Markdown

      Focus on your content and generate a responsive and searchable static site

      Reference

    • Made to measure

      Change the colors, fonts, language, icons, logo and more with a few lines

      Customization

    • Open Source, MIT

      Material for MkDocs is licensed under MIT and available on [GitHub]

      License

    \u8fd9\u662f\u6d4b\u8bd5\u5e76\u4e14\u88ab\u63a9\u76d6\u7684\u6587\u5b57\uff01

    \u5929\u6c14\u63d2\u4ef6 CC++
    #include <stdio.h>\n\nint main(void) {\n  printf(\"Hello world!\\n\");\n  return 0;\n}\n
    #include <iostream>\n\nint main(void) {\n  std::cout << \"Hello world!\" << std::endl;\n  return 0;\n}\n
    def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n

    Note

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

    Phasellus posuere in sem ut cursus

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

    Tip

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

    Info

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

    Subscribe to our newsletter

    Send

    Method Description GET Fetch resource PUT Update resource DELETE Delete resource
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit
    • Vestibulum convallis sit amet nisi a tincidunt
      • In hac habitasse platea dictumst
      • In scelerisque nibh non dolor mollis congue sed et metus
      • Praesent sed risus massa
    • Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque
    \\[ \\operatorname{ker} f=\\{g\\in G:f(g)=e_{H}\\}{\\mbox{.}} \\]

    \u5de6\u5bf9\u9f50\uff0c\u53f3\u5bf9\u9f50

    \u56fe\u7247\u8bf4\u660e

    \u660e\u6697

    graph LR\n  A[Start] --> B{Error?};\n  B -->|Yes| C[Hmm...];\n  C --> D[Debug];\n  D --> B;\n  B ---->|No| E[Yay!];
    sequenceDiagram\n  Alice->>John: Hello John, how are you?\n  loop Healthcheck\n      John->>John: Fight against hypochondria\n  end\n  Note right of John: Rational thoughts!\n  John-->>Alice: Great!\n  John->>Bob: How about you?\n  Bob-->>John: Jolly good!

    Pied Piper

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

    Ctrl+Alt+Del

    \u70b9\u6211\u56de\u5230\u9876\u90e8

    Hover me

    Hover me

    The HTML specification is maintained by the W3C.

    def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n
    def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n
    .browserslistrc
    Wcowin\n

    \n  graph LR\n      A --- B\n      B-->C[fa:fa-ban forbidden]\n      B-->D(fa:fa-spinner);\n    

    \u6765\u770b\u770b\u4e24\u4e2a\u91cd\u8981\u6781\u9650

    \\[\\displaystyle\\lim_{x \\rightarrow 0}\\frac{\\sin x}{x} = 1\\] \\[\\displaystyle\\lim_{x \\rightarrow + \\infty}(1 + \\frac{1}{x})^x = e\\]

    \u6309\u94ae Green

    \u6211\u662f\u4f1a\u9690\u85cf\u7684\u5143\u7d20\u3002 \u5934\u90e8 \u83dc\u5355 \u4e3b\u8981\u5185\u5bb9\u533a\u57df \u53f3\u4fa7 \u5e95\u90e8

    \u8fd9\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u4ef6\u94fe\u63a5\uff1a \u53d1\u9001\u90ae\u4ef6

    100 200 300 400 500 600 000000 000033 000066 000099 0000CC 0000FF 003300 003333 003366 003399 0033CC 0033FF 006600 006633 006666 006699 0066CC 0066FF 009900 009933 009966 009999 0099CC 0099FF 00CC00 00CC33 00CC66 00CC99 00CCCC 00CCFF 00FF00 00FF33 00FF66 00FF99 00FFCC 00FFFF 330000 330033 330066 330099 3300CC 3300FF 333300 333333 333366 333399 3333CC 3333FF 336600 336633 336666 336699 3366CC 3366FF 339900 339933 339966 339999 3399CC 3399FF 33CC00 33CC33 33CC66 33CC99 33CCCC 33CCFF 33FF00 33FF33 33FF66 33FF99 33FFCC 33FFFF 660000 660033 660066 660099 6600CC 6600FF 663300 663333 663366 663399 6633CC 6633FF 666600 666633 666666 666699 6666CC 6666FF 669900 669933 669966 669999 6699CC 6699FF 66CC00 66CC33 66CC66 66CC99 66CCCC 66CCFF 66FF00 66FF33 66FF66 66FF99 66FFCC 66FFFF 990000 990033 990066 990099 9900CC 9900FF 993300 993333 993366 993399 9933CC 9933FF 996600 996633 996666 996699 9966CC 9966FF 999900 999933 999966 999999 9999CC 9999FF 99CC00 99CC33 99CC66 99CC99 99CCCC 99CCFF 99FF00 99FF33 99FF66 99FF99 99FFCC 99FFFF CC0000 CC0033 CC0066 CC0099 CC00CC CC00FF CC3300 CC3333 CC3366 CC3399 CC33CC CC33FF CC6600 CC6633 CC6666 CC6699 CC66CC CC66FF CC9900 CC9933 CC9966 CC9999 CC99CC CC99FF CCCC00 CCCC33 CCCC66 CCCC99 CCCCCC CCCCFF CCFF00 CCFF33 CCFF66 CCFF99 CCFFCC CCFFFF FF0000 FF0033 FF0066 FF0099 FF00CC FF00FF FF3300 FF3333 FF3366 FF3399 FF33CC FF33FF FF6600 FF6633 FF6666 FF6699 FF66CC FF66FF FF9900 FF9933 FF9966 FF9999 FF99CC FF99FF FFCC00 FFCC33 FFCC66 FFCC99 FFCCCC FFCCFF FFFF00 FFFF33 FFFF66 FFFF99 FFFFCC FFFFFF

    Email me!

    "},{"location":"about/zcw/","title":"\u652f\u6301\u4f5c\u8005","text":"
    • \u7ed9\u6211\u53d1\u9001\u90ae\u7bb1

    • \u70b9\u51fb\u6b64\u5904\u8bbf\u95eeGithub\u4ed3\u5e93

    \u53ef\u4ee5\u7684\u8bdd \u8bf7\u6211\u559d\u4e00\u676f\u5496\u5561\u5427\u2615\ufe0f

    "},{"location":"about/zcw/#alipay","title":"Alipay","text":""},{"location":"about/zcw/#wechat-pay","title":"WeChat Pay","text":""},{"location":"about/zcw/#ko-fi","title":"ko-fi","text":"

    \u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561

    "},{"location":"about/zcw/#_2","title":"\u8d5e\u52a9\u5217\u8868","text":"\u8d5e\u52a9\u4eba \u8d5e\u52a9\u91d1\u989d \u8d5e\u52a9\u65f6\u95f4 *\u6025 15\uffe5 25/04/18 \u5343\u5e73 100\uffe5 25/04/16"},{"location":"blog/","title":"MyBlog","text":"
    • What is Blog?

      \u535a\u5ba2\uff0c\u4ec5\u97f3\u8bd1\uff0c\u82f1\u6587\u540d\u4e3aBlogger\uff0c\u4e3aWeb Log\u7684\u6df7\u6210\u8bcd\u3002 \u5176\u6b63\u5f0f\u540d\u79f0\u4e3a\u7f51\u7edc\u65e5\u8bb0\uff1b\u53c8\u97f3\u8bd1\u4e3a\u90e8\u843d\u683c\u6216\u90e8\u843d\u9601\u7b49\uff0c\u662f\u793e\u4f1a\u5a92\u4f53\u7f51\u7edc\u7684\u4e00\u90e8\u5206\u3002\u662f\u4f7f\u7528\u7279\u5b9a\u7684\u8f6f\u4ef6\uff0c\u5728\u7f51\u7edc\u4e0a\u51fa\u7248\u3001\u53d1\u8868\u548c\u5f20\u8d34\u4e2a\u4eba\u6587\u7ae0\u7684\u4eba\uff0c\u6216\u8005\u662f\u4e00\u79cd\u901a\u5e38\u7531\u4e2a\u4eba\u7ba1\u7406\u3001\u4e0d\u5b9a\u671f\u5f20\u8d34\u65b0\u7684\u6587\u7ae0\u7684\u7f51\u7ad9

    "},{"location":"blog/MIT/","title":"\u8bb8\u53ef\u58f0\u660e","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    MIT\u8bb8\u53ef\u8bc1\u6388\u4e88\u7528\u6237\u81ea\u7531\u4f7f\u7528\u3001\u4fee\u6539\u3001\u5206\u53d1\u8f6f\u4ef6\u7684\u5e7f\u6cdb\u6743\u5229\uff0c\u4ec5\u8981\u6c42\u4fdd\u7559\u7248\u6743\u58f0\u660e\u548c\u8bb8\u53ef\u6761\u6b3e\u3002\u8be5\u8bb8\u53ef\u8bc1\u660e\u786e\u58f0\u660e\u8f6f\u4ef6\u4e0d\u63d0\u4f9b\u4efb\u4f55\u62c5\u4fdd\uff0c\u4f5c\u8005\u4e0d\u5bf9\u4f7f\u7528\u540e\u679c\u627f\u62c5\u8d23\u4efb\u3002\u4f5c\u4e3a\u5bbd\u677e\u5f00\u6e90\u534f\u8bae\uff0cMIT\u5141\u8bb8\u5546\u4e1a\u7528\u9014\u548c\u79c1\u6709\u4fee\u6539\uff0c\u662f\u5f00\u53d1\u8005\u5e7f\u6cdb\u91c7\u7528\u7684\u6807\u51c6\u8bb8\u53ef\u4e4b\u4e00\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a252

    \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u8bb8\u53ef\u8bc1MIT License

    \u7248\u6743\u6240\u6709 \u00a9 2016-2025 Martin Donath

    \u7279\u6b64\u6388\u4e88\u83b7\u5f97\u6b64\u8f6f\u4ef6\u548c\u76f8\u5173\u6587\u6863\u6587\u4ef6\uff08\u201c\u8f6f\u4ef6\u201d\uff09\u526f\u672c\u7684\u4efb\u4f55\u4eba\u514d\u8d39\u8bb8\u53ef\uff0c\u4ee5\u65e0\u9650\u5236\u65b9\u5f0f\u5904\u7406\u8f6f\u4ef6\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u4f7f\u7528\u3001\u590d\u5236\u3001\u4fee\u6539\u3001\u5408\u5e76\u3001\u53d1\u5e03\u3001\u5206\u53d1\u3001\u518d\u8bb8\u53ef\u548c/\u6216\u9500\u552e\u8f6f\u4ef6\u526f\u672c\u7684\u6743\u5229\uff0c\u5e76\u5141\u8bb8\u5411\u5176\u63d0\u4f9b\u8f6f\u4ef6\u7684\u4eba\u5458\u8fd9\u6837\u505a\uff0c\u4f46\u987b\u9075\u5b88\u4ee5\u4e0b\u6761\u4ef6\uff1a

    \u4e0a\u8ff0\u7248\u6743\u58f0\u660e\u548c\u672c\u8bb8\u53ef\u58f0\u660e\u5747\u5e94\u5305\u542b\u5728\u8f6f\u4ef6\u7684\u6240\u6709\u526f\u672c\u6216\u91cd\u8981\u90e8\u5206\u4e2d\u3002

    \u8f6f\u4ef6\u6309\u201c\u539f\u6837\u201d\u63d0\u4f9b\uff0c\u4e0d\u4f5c\u4efb\u4f55\u660e\u793a\u6216\u6697\u793a\u7684\u4fdd\u8bc1\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u9002\u9500\u6027\u3001\u7279\u5b9a\u7528\u9014\u7684\u9002\u7528\u6027\u548c\u4e0d\u4fb5\u6743\u6027\u7684\u4fdd\u8bc1\u3002\u5728\u4efb\u4f55\u60c5\u51b5\u4e0b\uff0c\u4f5c\u8005\u6216\u7248\u6743\u6301\u6709\u8005\u5747\u4e0d\u5bf9\u56e0\u8f6f\u4ef6\u6216\u4f7f\u7528\u6216\u5176\u4ed6\u5904\u7406\u8f6f\u4ef6\u800c\u5f15\u8d77\u7684\u6216\u4e0e\u4e4b\u76f8\u5173\u7684\u4efb\u4f55\u7d22\u8d54\u3001\u635f\u5bb3\u6216\u5176\u4ed6\u8d23\u4efb\u627f\u62c5\u8d23\u4efb\uff0c\u65e0\u8bba\u662f\u5408\u540c\u884c\u4e3a\u3001\u4fb5\u6743\u884c\u4e3a\u8fd8\u662f\u5176\u4ed6\u884c\u4e3a\u3002

    Copyright \u00a9 2016-2025 Martin Donath

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    "},{"location":"blog/Mkdocs/mkdocs1/","title":"\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHubpages","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u4ecb\u7ecd\u4e86\u4f7f\u7528MkDocs\u6784\u5efa\u9759\u6001\u7f51\u7ad9\u5e76\u90e8\u7f72\u5230GitHub Pages\u7684\u5b8c\u6574\u6d41\u7a0b\u3002\u91cd\u70b9\u8bb2\u89e3\u4e86\u901a\u8fc7GitHub Desktop\u7ba1\u7406\u4ed3\u5e93\u3001\u914d\u7f6emkdocs.yml\u6587\u4ef6\u3001\u8bbe\u7f6eGitHub Actions\u81ea\u52a8\u5316\u90e8\u7f72\u7b49\u5173\u952e\u6b65\u9aa4\uff0c\u5e76\u63d0\u4f9b\u4e86Material\u4e3b\u9898\u7684\u914d\u7f6e\u5efa\u8bae\u3002\u8be5\u65b9\u6cd5\u9002\u5408\u5feb\u901f\u642d\u5efa\u6280\u672f\u6587\u6863\u6216\u535a\u5ba2\u7f51\u7ad9\uff0c\u5177\u6709\u7248\u672c\u63a7\u5236\u53cb\u597d\u3001\u90e8\u7f72\u7b80\u5355\u7684\u7279\u70b9\uff0c\u6700\u540e\u8fd8\u63d0\u4f9b\u4e86\u5b9e\u65f6\u9884\u89c8\u548c\u81ea\u5b9a\u4e49\u57df\u540d\u7684\u5b9e\u73b0\u65b9\u5f0f\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a485 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a73

    Info

    Material for MkDocs\u5b98\u65b9\u7f51\u7ad9: Material for MkDocs MkDocs\u4e2d\u6587\u6587\u6863: MkDocs\u4e2d\u6587\u6587\u6863

    \u63a8\u8350\u770b\u4e0b\u8fd9\u4e2a\u89c6\u9891\uff1a How to set up Material for MkDocs by @Wcowin \u2013 10m \u2013 \u7528MKdocs\u6784\u5efa\u4e00\u4e2a\u535a\u5ba2\u7f51\u7ad9.

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_1","title":"\u4e00\u3001\u51c6\u5907\u5de5\u4f5c","text":"

    1.\u4e0b\u8f7dGithub Desktop

    2.\u6709\u4e00\u4e2aGitHub\u8d26\u53f7\u200b\u200b\u200b\u200b\u200b\u200b\u200b(\u6709\u624b\u5c31\u884c)

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#creating-your-site","title":"\u4e8c\u3001Creating your site","text":"

    \u53c2\u8003\u6559\u7a0b\uff1a

    \u5229\u7528mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHubpages\uff08\u66f4\u65b0\u7248\uff09

    \u4e0e\u5176\u4ed6\u6559\u7a0b\u4e0d\u540c\uff0c\u6211\u9996\u5148\u5efa\u8bae\u5148\u5728Github\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\u4f60\u7684\u540d\u5b57+github.io\u7684\u4ed3\u5e93

    \u7136\u540e\u6253\u5f00github Desktop \u514b\u9686\u5230\u672c\u5730

    \u6253\u5f00Wcowin.github.io\u76ee\u5f55\u8fdb\u5165\u7ec8\u7aef\u4f9d\u6b21\u8fd0\u884c:

    pip install mkdocs-material\nmkdocs new mkdocs-site\n
    \u51fa\u73b0\u4e0b\u56fe\u7684\u51e0\u4e2a\u6587\u4ef6

    Tip

    \u8fd9\u91cc\u5efa\u8bae\u628amkdocs-site\u6587\u4ef6\u91cc\u7684\u4e1c\u897f\u5168\u90e8\u526a\u5207\u51fa\u6765\u5230Wcowin.github.io\u6587\u4ef6\u91cc

    Wcowin.github.io\u662f\u514b\u9686\u5230\u672c\u5730\u7684\u4ed3\u5e93\uff08\u91cc\u9762\u5305\u542bdocs,yml\u6587\u4ef6\u7b49\u7b49\uff09\uff0cdocs\u6587\u4ef6\u4e0b\u662f\u4ee5\u540e\u7f51\u7ad9\u7684\u5185\u5bb9\uff0cmkdocs.yml\u662f\u914d\u7f6e\u6587\u4ef6\uff08\u914d\u7f6e\u4e3b\u9898\uff0c\u76ee\u5f55\uff0c\u63d2\u4ef6\u7b49\uff09

    \u4f60\u5728\u8fd9\u4e2a\u76ee\u5f55\u4e0b\u5199\u7684\u4efb\u4f55\u4e1c\u897f\u90fd\u53ef\u4ee5\u901a\u8fc7Github Desktop \u4e0a\u4f20\u5230github\u4e0a

    \u6267\u884c\u4e0b\u9762\u7684\u4ee3\u7801\u6dfb\u52a0\u4e00\u4e2aGitHub Workflow

    \u8fc7\u65f6\u7684PublishMySite.yml

    (\u6267\u884c\u4e0b\u9762\u7684\u4ee3\u7801\u6dfb\u52a0\u4e00\u4e2aGitHub Workflow(\u5df2\u7ecf\u8fc7\u65f6\u4f46\u662f\u4ecd\u7136\u80fd\u7528\uff0c\u6700\u65b0\u65b9\u6cd5\u89c1\u4e0b\u65b9ci.yml)

    mkdir .github\ncd .github\nmkdir workflows\ncd workflows\nvim PublishMySite.yml\n

    \u5728PublishMySite.yml\u91cc\u9762\u8f93\u5165\u4ee5\u4e0b\u5185\u5bb9

    name: publish site\non: # \u5728\u4ec0\u4e48\u65f6\u5019\u89e6\u53d1\u5de5\u4f5c\u6d41\n  push: # \u5728\u4ece\u672c\u5730main\u5206\u652f\u88abpush\u5230GitHub\u4ed3\u5e93\u65f6\n    branches:\n      - main\n  pull_request: # \u5728main\u5206\u652f\u5408\u5e76\u522b\u4eba\u63d0\u7684pr\u65f6\n    branches:\n      - main\njobs: # \u5de5\u4f5c\u6d41\u7684\u5177\u4f53\u5185\u5bb9\n  deploy:\n    runs-on: ubuntu-latest # \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u4e91\u7aef\u865a\u62df\u673a \u4f7f\u7528\u6700\u65b0Ubuntu\u7cfb\u7edf\n    steps:\n      - uses: actions/checkout@v2 # \u5148checkout\u5230main\u5206\u652f\n      - uses: actions/setup-python@v2 # \u518d\u5b89\u88c5Python3\u548c\u76f8\u5173\u73af\u5883\n        with:\n          python-version: 3.x\n      - run: pip install mkdocs-material # \u4f7f\u7528pip\u5305\u7ba1\u7406\u5de5\u5177\u5b89\u88c5mkdocs-material\n      - run: mkdocs gh-deploy --force # \u4f7f\u7528mkdocs-material\u90e8\u7f72gh-pages\u5206\u652f\n
    )

    mkdir .github\ncd .github\nmkdir workflows\ncd workflows\nvim ci.yml\n

    \u8fdb\u5165.github/workflows/ci.yml\uff0c\u7136\u540e\u590d\u5236\u5e76\u7c98\u8d34\u4ee5\u4e0b\u5185\u5bb9\uff1a

    name: ci \non:\n  push:\n    branches:\n      - master \n      - main\npermissions:\n  contents: write\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Configure Git Credentials\n        run: |\n          git config user.name github-actions[bot]\n          git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n      - uses: actions/setup-python@v4\n        with:\n          python-version: 3.x\n      - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV \n      - uses: actions/cache@v3\n        with:\n          key: mkdocs-material-${{ env.cache_id }}\n          path: .cache\n          restore-keys: |\n            mkdocs-material-\n      - run: pip install mkdocs-material \n      - run: mkdocs gh-deploy --force\n

    \u5230\u8fd9\u91cc\u5148\u68c0\u67e5\u4e00\u4e0b\u4f60\u7684\u76ee\u5f55\u7ed3\u6784 \u76ee\u5f55\u6811\u72b6\u56fe:

    $ tree -a\nWcowin.github.io\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 ci.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2514\u2500\u2500 mkdocs.yml\n

    \u91cd\u70b9\u6765\u4e86

    Github\u4ed3\u5e93setings/Actions/General \u52fe\u9009\u8fd9\u4e24\u9879

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_2","title":"\u4e09\u3001\u914d\u7f6e\u5b8c\u5584","text":"

    \u6253\u5f00mkdocs.yml

    \u628a\u4ee5\u4e0b\u7684\u5185\u5bb9\u8f93\u5165\u8fdb\u53bb\uff08\u6700\u7b80\u5355\u6700\u57fa\u7840\u7684\u914d\u7f6e\uff09

    site_name: \u7f51\u7ad9\u540d\u5b57\nsite_url: \u7f51\u7ad9\u94fe\u63a5\nsite_author: \u4f60\u7684\u540d\u5b57\ntheme:\n  name: material #\u4e3b\u9898\n

    \u8be6\u7ec6mkdocs.yml\u914d\u7f6e\u89c1Changing the colors - Material for MkDocs

    \u4e0b\u6b21\u6211\u4f1a\u5177\u4f53\u8c08\u8c08\u8fd9\u4e2a\u95ee\u9898

    \u5728\u4e0b\u65b9\u7ec8\u7aef\u8fd0\u884c\u53ef\u4ee5\u5728\u6d4f\u89c8\u5668\u770b\u5230\u5b9e\u65f6\u7f51\u7ad9

    mkdocs serve\n

    \u8fd9\u4e2a\u7f51\u7ad9\u5c31\u7b97\u662f\u521d\u6b65\u5efa\u597d\u4e86

    \u6700\u540e\u53bbgithub Desktop\u4e0a\u4f20\u5230github \u4e0a\u56fe\u53ef\u4ee5\u770b\u5230\uff0c\u6211\u4e0a\u4f20\u4e86Wcowin.github.io\u6587\u4ef6\u5939\uff0c\u8fd9\u4e2a\u6587\u4ef6\u5939\u91cc\u9762\u5305\u542b\u4e86mkdocs.yml\u548cdocs\u6587\u4ef6\u5939(mkdocs-site\u6587\u4ef6\u5939\u73b0\u5728\u6ca1\u6709\u4e1c\u897f\uff0c\u53ef\u4ee5\u5220\u9664)

    \uff01\uff01\uff01\u91cd\u70b9 \u53bb\u4ed3\u5e93\u7684setings/pages\u9009\u62e9\u4e0b\u56fe\u793a\u610f\u7684\u8def\u5f84

    \u7b49\u5f85\u4e00\u4f1a\u7f51\u5740\u5c31\u51fa\u6765\u4e861

    \u4f60\u7684\u7f51\u7ad9\u7f51\u5740\u5c31\u662f\uff1a\u200b

    https://\u4f60github\u7684\u540d\u5b57.github.io/\n\u56e0\u4e3a\u6211\u7ed1\u5b9a\u4e86\u57df\u540d\u6240\u4ee5\u7f51\u5740\u662f\uff1ahttps://wcowin.work/\n

    \u4e0b\u6b21\u8c08\u8c08\u7f51\u7ad9\u7684mkdocs.yml\u5177\u4f53\u914d\u7f6e

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_3","title":"\u56db\u3001\u53c2\u8003\u8d44\u6599","text":"
    1. MkDocs\u5b98\u7f51
    2. MkDocs\u4e2d\u6587\u6587\u6863
    3. Material for MkDocs
    4. Mkdocs \u914d\u7f6e\u548c\u4f7f\u7528
    5. Deploy MkDocs
    1. \u4e8e2025.2.19\u91cd\u5199\u6b64\u6587\u00a0\u21a9

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/","title":"Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u8be6\u7ec6\u4ecb\u7ecd\u4e86Mkdocs\u914d\u7f6e\u6587\u4ef6mkdocs.yml\u7684\u6838\u5fc3\u914d\u7f6e\u9879\uff0c\u5305\u62ec\u7ad9\u70b9\u57fa\u672c\u4fe1\u606f\u8bbe\u7f6e\u3001Material\u4e3b\u9898\u914d\u8272\u65b9\u6848\uff08\u652f\u6301\u660e\u6697\u6a21\u5f0f\u5207\u6362\uff09\u3001\u5bfc\u822a\u529f\u80fd\u4f18\u5316\uff08\u5982\u76ee\u5f55\u8ddf\u8e2a\u3001\u8fd4\u56de\u9876\u90e8\u6309\u94ae\uff09\u3001\u641c\u7d22\u589e\u5f3a\u529f\u80fd\u4ee5\u53caMarkdown\u6269\u5c55\u652f\u6301\u3002\u91cd\u70b9\u8bb2\u89e3\u4e86\u6807\u7b7e\u7cfb\u7edf\u5b9e\u73b0\u65b9\u6cd5\u3001\u81ea\u5b9a\u4e49CSS/JS\u5f15\u5165\u65b9\u5f0f\uff0c\u5e76\u63d0\u4f9b\u4e86\u6269\u5c55\u7f51\u7ad9\u529f\u80fd\u7684\u5b9e\u8df5\u5efa\u8bae\uff0c\u5982\u6dfb\u52a0\u6570\u5b66\u516c\u5f0f\u652f\u6301\u3001\u9f20\u6807\u6837\u5f0f\u548c\u8bc4\u8bba\u7cfb\u7edf\u7b49\u3002\u914d\u7f6e\u6587\u4ef6\u91c7\u7528YAML\u8bed\u6cd5\uff0c\u901a\u8fc7\u7075\u6d3b\u7ec4\u5408\u5404\u9879\u53c2\u6570\u53ef\u5feb\u901f\u6784\u5efa\u529f\u80fd\u5b8c\u5584\u7684\u6587\u6863\u7f51\u7ad9\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a818 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a555

    \u5b98\u65b9\u6587\u4ef6\uff1aChanging the colors - Material for MkDocs

    \u5efa\u8bae\u8be6\u7ec6\u5b66\u4e60\u4e00\u4e0b\u4e0a\u9762\u7684\u5b98\u65b9\u7f51\u7ad9\u2191\u2191\u2191

    \u6211\u628a\u6211\u76ee\u524d\u7684\u914d\u7f6e\u6587\u4ef6mkdocs.yml\u4ee3\u7801\u5199\u5728\u4e0b\u9762\ud83d\udc47\ud83c\udffb

    \u70b9\u51fb\u5c55\u5f00
    #[Info]\nsite_name: Mkdocs\u6559\u7a0b #your site name \u663e\u793a\u5728\u5de6\u4e0a\u89d2\nsite_url: http://wcowin.work/Mkdocs-Wcowin\nsite_description: \u77e5\u8db3\u4e14\u4e0a\u8fdb\uff0c\u6e29\u67d4\u4e14\u575a\u5b9a\nsite_author: \u738b\u79d1\u6587(Wcowin) # your name\n#[UI]\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u8986\u5199\u8def\u5f84\n  # font: #\u8c37\u6b4c\u5b57\u4f53\uff0c\u81ea\u884c\u641c\u7d22\n  #   text: Bitter  #\u6587\u672c\u5b57\u4f53\n  #   code: Roboto Mono  #\u4ee3\u7801\u5b57\u4f53\n  # logo: assets/favicon.png #\u5de6\u4e0a\u89d2logo\uff0c\u53ef\u63d2\u5165\u56fe\u7247\u94fe\u63a5\n  favicon: https://s2.loli.net/2024/04/26/PmRdM9iGnvOJHgu.png # \u7f51\u9875icon\n  palette:\n    - media: \"(prefers-color-scheme)\"\n      toggle:\n        icon: material/link\n        name: \u5173\u95ed\u81ea\u52a8\u6a21\u5f0f\n    #primary: blue grey\n    - media: \"(prefers-color-scheme: light)\"\n      scheme: default # \u65e5\u95f4\u6a21\u5f0f\n      primary: blue grey # \u4e0a\u65b9\u7684\n      accent: blue # \u94fe\u63a5\u7b49\u53ef\u4ea4\u4e92\u5143\u4ef6\u7684\u9ad8\u4eae\u8272\n      # teal\n      toggle:\n        icon: material/toggle-switch # \u56fe\u6807\n        name: \u5207\u6362\u81f3\u591c\u95f4\u6a21\u5f0f # \u9f20\u6807\u60ac\u6d6e\u63d0\u793a\n    - media: \"(prefers-color-scheme: dark)\"\n      scheme: slate # \u591c\u95f4\u6a21\u5f0f\n      primary: black\n      accent: indigo\n      # teal\n      toggle:\n        icon: material/toggle-switch-off-outline\n        name: \u5207\u6362\u81f3\u65e5\u95f4\u6a21\u5f0f\n  features:\n    - announce.dismiss #\u5448\u73b0\u53ef\u6807\u8bb0\u4e3a\u7531\u7528\u6237\u8bfb\u53d6\u7684\u4e34\u65f6\u516c\u544a\uff0c\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u7528\u4e8e\u53d6\u6d88\u5f53\u524d\u516c\u544a\u7684\u6309\u94ae\n    # - navigation.instant\n    #- header.autohide  #\u81ea\u52a8\u9690\u85cf\n    - navigation.tracking #\u5730\u5740\u680f\u4e2d\u7684 URL \u5c06\u81ea\u52a8\u66f4\u65b0\u4e3a\u5728\u76ee\u5f55\u4e2d\u7a81\u51fa\u663e\u793a\u7684\u6d3b\u52a8\u951a\u70b9\n    - navigation.tabs #\u9876\u7ea7\u90e8\u5206\u5c06\u5448\u73b0\u5728\u4e0a\u9762\u89c6\u53e3\u6807\u9898\u4e0b\u65b9\u7684\u83dc\u5355\u5c42\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    # - navigation.tabs.sticky  #\u542f\u7528\u7c98\u6027\u9009\u9879\u5361\u540e\uff0c\u5bfc\u822a\u9009\u9879\u5361\u5c06\u9501\u5b9a\u5728\u6807\u9898\u4e0b\u65b9\uff0c\u5e76\u5728\u5411\u4e0b\u6eda\u52a8\u65f6\u59cb\u7ec8\u4fdd\u6301\u53ef\u89c1\n    - navigation.sections #\u542f\u7528\u90e8\u5206\u540e\uff0c\u9876\u7ea7\u90e8\u5206\u5728\u8fb9\u680f\u4e2d\u5448\u73b0\u4e3a1220px\u4ee5\u4e0a\u89c6\u53e3\u7684\u7ec4\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - navigation.top # \u8fd4\u56de\u9876\u90e8\u7684\u6309\u94ae \u5728\u4e0a\u6ed1\u65f6\u51fa\u73b0\n    - navigation.footer #\u9875\u811a\u5c06\u5448\u73b0\u5728\u8fb9\u680f\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - search.suggest # \u641c\u7d22\u8f93\u5165\u4e00\u4e9b\u5b57\u6bcd\u65f6\u63a8\u8350\u8865\u5168\u6574\u4e2a\u5355\u8bcd\n    - search.highlight # \u641c\u7d22\u51fa\u7684\u6587\u7ae0\u5173\u952e\u8bcd\u52a0\u5165\u9ad8\u4eae\n    - search.share #\u641c\u7d22\u5206\u4eab\u6309\u94ae\n    - navigation.expand # \u6253\u5f00Tab\u65f6\u5de6\u4fa7\u76ee\u5f55\u5168\u90e8\u5c55\u5f00\n    - navigation.indexes #\u542f\u7528\u8282\u7d22\u5f15\u9875\u540e\uff0c\u53ef\u4ee5\u5c06\u6587\u6863\u76f4\u63a5\u9644\u52a0\u5230\u8282\n    - content.tabs.link\n    - content.tooltips\n    - content.code.copy #\u4ee3\u7801\u590d\u5236\n    - content.action.edit\n    - content.action.view\n    - content.code.annotate\n  language: zh # \u4e00\u4e9b\u63d0\u793a\u6027\u7684\u6587\u5b57\u4f1a\u53d8\u6210\u4e2d\u6587\n  icon:\n    repo: fontawesome/brands/github #\u53f3\u4e0a\u89d2\u56fe\u6807\n    logo: logo\nedit_uri: edit/main/docs # \u7f16\u8f91\u6309\u94ae\u8df3\u8f6c\u7684\u94fe\u63a5\nrepo_url: https://github.com/Wcowin/Mkdocs-Wcowin # \u53f3\u4e0a\u89d2\u70b9\u51fb\u8df3\u8f6c\u7684\u94fe\u63a5\nrepo_name: Mkdocs-Wcowin # \u53f3\u4e0a\u89d2\u7684\u540d\u5b57\n# [Navigtion]\nnav:\n  # - \u4e3b\u9875: index.md\n  - MKdocs\u4e2d\u6587\u6559\u7a0b:\n      - MKdocs\u6559\u7a0b(\u4e09\u90e8\u66f2):\n          - 0. Mkdocs\u6559\u7a0b\u524d\u8a00: blog/Mkdocs/mkfirst.md\n          - 1. \u5229\u7528mkdocs\u90e8\u7f72\u4e2a\u4eba\u9759\u6001\u535a\u5ba2\u7f51\u9875\u81f3GitHub pages: blog/Mkdocs/mkdocs1.md\n          - 2. Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages\u914d\u7f6e\u8bf4\u660e(mkdocs.yml): blog/Mkdocs/mkdocs2.md\n          - 3. \u89e3\u51b3 mkdocs\u90e8\u7f72 Github Pages \u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898: blog/Mkdocs/mkdocs3.md\n      - Mkdocs\u7f8e\u5316:\n          - \u6dfb\u52a0Mkdocs\u535a\u5ba2: blog/Mkdocs/mkdocsblog.md\n          - \u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1: blog/websitebeauty/yuanjiaohua.md\n          - \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf(giscus\u4e3a\u4f8b): blog/websitebeauty/mkcomments.md\n          - \u6dfb\u52a0\u5728\u7ebf\u804a\u5929: blog/websitebeauty/webtalknow.md\n          - \u6dfb\u52a0\u53cb\u94fe: blog/websitebeauty/linktech.md\n          - \u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f: blog/websitebeauty/header.md\n          - \u4fee\u6539\u7f51\u7ad9\u5b57\u4f53: blog/websitebeauty/mkdocsfont.md\n          - JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f: blog/websitebeauty/shubiao.md\n          - \u80cc\u666f\u7279\u6548: blog/websitebeauty/backgroud.md\n          - \u6dfb\u52a0404\u9875\u9762: blog/websitebeauty/404.md\n          - \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233: blog/websitebeauty/time.md\n  - \u5efa\u8bbeMKdocs\u6280\u80fd\u6307\u5317:\n      - Markdown:\n          - Markdown\u6307\u5357: develop/Markdown/markdown.md\n          - MWeb Pro: develop/Markdown/MWeb.md\n      - Git \u5b9e\u7528\u6280\u5de7: develop/git.md\n      - \u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd: develop/lighthouse.md\n      - \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1: develop/vercel.md\n      - \u8bbe\u8ba1\u7f8e\u5b66:\n          - \u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21: develop/designbeauty/db1.md\n          - \u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u89c2\u70b9: develop/designbeauty/my-to-desihn.md\n\n  - \u6807\u7b7e: tag.md\n  - \u7559\u8a00\u677f: liuyanban.md\n  - Blogger:\n      - index: blog/index.md\n  - \u53cb\u94fe:\n      - \u53cb\u94fe: about/link.md\n  - \u5173\u4e8e:\n      - \u4f5c\u8005\u4e2a\u4eba\u7b80\u4ecb: about/geren.md\n      - \u529f\u80fd\u6d4b\u8bd5: about/test.md\n  - \u4e2a\u4eba\u535a\u5ba2: https://wcowin.work\n  - \u4f7f\u7528\u672c\u4e3b\u9898: https://github.com/new?template_name=Mkdocs-Wcowin&template_owner=Wcowin\n\ncopyright: Copyright &copy; 2022~2024 Wcowin/All Rights Reserved. # \u5de6\u4e0b\u89d2\u7684\u7248\u6743\u58f0\u660e\nextra:\n  alternate:\n    - name: \u7b80\u4f53\u4e2d\u6587\n      link: /\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh   \n    - name: English\n      link: /Mkdocs-Wcowin/en/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: en\n    - name: China(TW)\n      link: /Mkdocs-Wcowin/ZH-TW/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n  generator: true #\u662f\u5426\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n    - icon: fontawesome/brands/x-twitter #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807 : https://fontawesome.com/ \u53bb\u8fd9\u91cc\u627e\u56fe\u6807\n      link: https://twitter.com/wcowin_\n    - icon: fontawesome/brands/github\n      link: https://github.com/Wcowin\n\n    - icon: fontawesome/regular/envelope #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807\n      link: mailto:<wangkewen821@gmail.com> #\u90ae\u4ef6\u8054\u7cfb\u65b9\u5f0f\n    - icon: fontawesome/brands/bilibili\n      link: https://space.bilibili.com/1407028951/lists/4566631?type=series\n  analytics:\n    provider: google #\u8c37\u6b4c\u5206\u6790\n    property: ##\u5982\u679c\u4f60 clone \u4e86my\u6a21\u677f\uff0c\u8bf7\u5c06\u8fd9\u4e2a\u4fee\u6539\u4e3a\u4f60\u7684\n\n    # \u7f51\u9875\u5e95\u90e8\u53cd\u9988\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline #\u56fe\u6807\u53ef\u81ea\u5b9a\u4e49\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >-\n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n  # cookies\u8bbe\u7f6e\uff08\u53ef\u9009\uff09\n  # consent:\n  #   title: Cookie consent\n  #   description: >-\n  #     \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n  #     \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n\nplugins:\n  - search #\u641c\u7d22\u914d\u7f6e\n  - glightbox:\n      enabled: !ENV [glightbox, false]\n      touchNavigation: true\n      loop: false\n      effect: fade\n      slide_effect: slide\n      width: 100%\n      height: auto\n      zoomable: true\n      draggable: true\n      skip_classes:\n        - custom-skip-class-name\n      auto_caption: false\n      caption_position: bottom\n      background: white\n      shadow: true\n      manual: false\n  - git-committers:\n      enabled: !ENV [git-committers, false]\n      repository: Wcowin/Mkdocs-Wcowin\n      branch: main\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n  - git-revision-date-localized:\n      enabled: !ENV [git-revision-date-localized, false]\n      type: iso_date\n      enable_creation_date: false\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n        - websitebeauty/linktech.md\n  - blog: #\u535a\u5ba2\u914d\u7f6e\n      post_date_format: full #\u65f6\u95f4\n      draft: true\n      draft_if_future_date: true #\u81ea\u52a8\u5c06\u5177\u6709\u672a\u6765\u65e5\u671f\u7684\u5e16\u5b50\u6807\u8bb0\u4e3a\u8349\u7a3f\n      post_readtime: true\n      post_readtime_words_per_minute: 265 #\u8ba1\u7b97\u5e16\u5b50\u7684\u9605\u8bfb\u65f6\u95f4\u65f6\u8bfb\u8005\u6bcf\u5206\u949f\u9884\u8ba1\u9605\u8bfb\u7684\u5b57\u6570\n      post_url_format: \"{date}/{slug}\"\n      # categories_slugify: !!python/object/apply:pymdownx.slugs.slugify\n      #   kwds:\n      #     case: lower\n      pagination_url_format: \"page/{page}\"\n      authors_file: \"{blog}/.authors.yml\" #\u4f5c\u8005\u4fe1\u606f\n  - tags\n\nmarkdown_extensions: #\u8be6\u89c1https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown-extensions/ \u548c https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown/\n  - abbr\n  - attr_list\n  - admonition\n  - def_list\n  - footnotes\n  - md_in_html\n  # - meta # \u652f\u6301Markdown\u6587\u4ef6\u4e0a\u65b9\u81ea\u5b9a\u4e49\u6807\u9898\u6807\u7b7e\u7b49\n  - pymdownx.caret\n  - pymdownx.betterem\n  - pymdownx.critic\n  - pymdownx.details\n  - pymdownx.inlinehilite\n  - pymdownx.keys\n  - pymdownx.mark\n  - pymdownx.snippets\n  - pymdownx.smartsymbols\n  - pymdownx.tilde\n  - pymdownx.superfences:\n      custom_fences:\n        - name: mermaid\n          class: mermaid\n          format:\n            !!python/name:pymdownx.superfences.fence_code_format # \u4ee3\u7801\u5757\u9ad8\u4eae\u63d2\u4ef6\n  - pymdownx.arithmatex: # latex\u652f\u6301\n      generic: true\n  - toc:\n      permalink: true # \u56fa\u5b9a\u6807\u9898\u4f4d\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e\n  - pymdownx.highlight: # \u4ee3\u7801\u5757\u9ad8\u4eae\n      anchor_linenums: true\n      linenums: true # \u663e\u793a\u884c\u53f7\n      # auto_title: true # \u663e\u793a\u7f16\u7a0b\u8bed\u8a00\u540d\u79f0\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - pymdownx.tabbed:\n      alternate_style: true\n  - pymdownx.tasklist:\n      custom_checkbox: true\n  # - markdown.extensions.toc:\n  #     slugify: !!python/object/apply:pymdownx.slugs.slugify {kwds: {case: lower}}\n  #     permalink: \"\\ue157\"\n\nextra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49javascript\n  - https://cdn.jsdelivr.net/gh/Wcowin/Wcowin.github.io@main/docs/javascripts/extra.js  # extra\u7684cdn\n  - javascripts/mathjax.js #Latex\u652f\u6301\n  - https://polyfill.io/v3/polyfill.min.js?features=es6 #Latex\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js #Latex\u652f\u6301\n  # - ckplayer/js/ckplayer.js #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js  #gitalk\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mermaid@10.0.2/dist/add-html-label-6e56ed67.min.js #\u5fd8\u4e86\n\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49CSS\n  - stylesheets/link.css #\u53cb\u94fe\u914d\u7f6e\n  - stylesheets/customize.css # \u641c\u7d22\u5706\u89d2\u4f18\u5316\n  # - assets/stylesheets/portfolio.css\n  # - stylesheets/video.css #\u64ad\u653e\u5668\u53ef\u9009\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.css #gitalk\u652f\u6301\n  # - ckplayer/css/ckplayer.css   #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css # font-awesome\u8868\u60c5\u652f\u6301\n  # - https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css  #\u5206\u4eab\u652f\u6301\n\n  - https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css  #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css  #\u5b57\u4f53\n\nhooks:\n  - docs/overrides/hooks/socialmedia.py\n

    \u4ece\u5934\u5f00\u59cb\u5206\u6790

    site_name: \u7f51\u7ad9\u540d\u5b57\nsite_url: \u7f51\u7ad9\u7f51\u5740\nsite_author: \u4f5c\u8005\u540d\u5b57\n
    \u65e0\u987b\u591a\u8a00

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#theme","title":"theme\u90e8\u5206","text":"","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_1","title":"\u9876\u90e8\u989c\u8272","text":"

    theme:\n  palette:\n    primary: yellow #\u9876\u90e8\u989c\u8272\n
    primary\u540e\u9762\u662f\u7f51\u7ad9\u9876\u90e8\u680f\u76ee\u7684\u989c\u8272\uff08\u4e5f\u7528\u4e8e\u6807\u9898\u3001\u8fb9\u680f\u3001\u6587\u672c\u94fe\u63a5\u548c\u5176\u4ed6\u51e0\u4e2a\u7ec4\u4ef6\uff09 \u76ee\u524d\u652f\u6301\u4e0b\u9762\u51e0\u4e2a\u989c\u8272\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_2","title":"\u660e\u6697\u4e3b\u9898\u6309\u94ae","text":"

    theme:\n  palette: \n    # Palette toggle for light mode\n    - scheme: default\n      toggle:\n        icon: material/brightness-7 \n        name: Switch to dark mode\n\n    # Palette toggle for dark mode\n    - scheme: slate\n      toggle:\n        icon: material/brightness-4\n        name: Switch to light mode\n
    \u6b64\u914d\u7f6e\u5c06\u5728\u641c\u7d22\u680f\u65c1\u8fb9\u5448\u73b0\u8c03\u8272\u677f\u5207\u6362\u3002\u8bf7\u6ce8\u610f\uff0c\u60a8\u8fd8\u53ef\u4ee5\u4e3a\u6bcf\u4e2a\u8c03\u8272\u677f\u7684primary\u548caccent\u5b9a\u4e49\u5355\u72ec\u7684\u8bbe\u7f6e\u3002

    \u6309\u94ae\u56fe\u6807\u53ef\u4ee5\u6539\u53d8\uff08\u4fee\u6539icon\u540e\u9762\u7684\u4ee3\u7801\uff09\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#features","title":"features","text":"

      features:\n    - announce.dismiss #\u5448\u73b0\u53ef\u6807\u8bb0\u4e3a\u7531\u7528\u6237\u8bfb\u53d6\u7684\u4e34\u65f6\u516c\u544a\uff0c\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u7528\u4e8e\u53d6\u6d88\u5f53\u524d\u516c\u544a\u7684\u6309\u94ae\n    # - navigation.instant\n    #- header.autohide  #\u81ea\u52a8\u9690\u85cf\n    - navigation.tracking #\u5730\u5740\u680f\u4e2d\u7684 URL \u5c06\u81ea\u52a8\u66f4\u65b0\u4e3a\u5728\u76ee\u5f55\u4e2d\u7a81\u51fa\u663e\u793a\u7684\u6d3b\u52a8\u951a\u70b9\n    - navigation.tabs #\u9876\u7ea7\u90e8\u5206\u5c06\u5448\u73b0\u5728\u4e0a\u9762\u89c6\u53e3\u6807\u9898\u4e0b\u65b9\u7684\u83dc\u5355\u5c42\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    # - navigation.tabs.sticky  #\u542f\u7528\u7c98\u6027\u9009\u9879\u5361\u540e\uff0c\u5bfc\u822a\u9009\u9879\u5361\u5c06\u9501\u5b9a\u5728\u6807\u9898\u4e0b\u65b9\uff0c\u5e76\u5728\u5411\u4e0b\u6eda\u52a8\u65f6\u59cb\u7ec8\u4fdd\u6301\u53ef\u89c1\n    - navigation.sections #\u542f\u7528\u90e8\u5206\u540e\uff0c\u9876\u7ea7\u90e8\u5206\u5728\u8fb9\u680f\u4e2d\u5448\u73b0\u4e3a1220px\u4ee5\u4e0a\u89c6\u53e3\u7684\u7ec4\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - navigation.top # \u8fd4\u56de\u9876\u90e8\u7684\u6309\u94ae \u5728\u4e0a\u6ed1\u65f6\u51fa\u73b0\n    - navigation.footer #\u9875\u811a\u5c06\u5448\u73b0\u5728\u8fb9\u680f\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - search.suggest # \u641c\u7d22\u8f93\u5165\u4e00\u4e9b\u5b57\u6bcd\u65f6\u63a8\u8350\u8865\u5168\u6574\u4e2a\u5355\u8bcd\n    - search.highlight # \u641c\u7d22\u51fa\u7684\u6587\u7ae0\u5173\u952e\u8bcd\u52a0\u5165\u9ad8\u4eae\n    - search.share #\u641c\u7d22\u5206\u4eab\u6309\u94ae\n    - navigation.expand # \u6253\u5f00Tab\u65f6\u5de6\u4fa7\u76ee\u5f55\u5168\u90e8\u5c55\u5f00\n    - navigation.indexes #\u542f\u7528\u8282\u7d22\u5f15\u9875\u540e\uff0c\u53ef\u4ee5\u5c06\u6587\u6863\u76f4\u63a5\u9644\u52a0\u5230\u8282\n    - content.tabs.link\n    - content.tooltips\n    - content.code.copy #\u4ee3\u7801\u590d\u5236\n    - content.action.edit\n    - content.action.view\n    - content.code.annotate\n  language: zh # \u4e00\u4e9b\u63d0\u793a\u6027\u7684\u6587\u5b57\u4f1a\u53d8\u6210\u4e2d\u6587\n\n  icon:\n    repo: fontawesome/brands/github #\u53f3\u4e0a\u89d2\u56fe\u6807\n    logo: logo\n
    \u770b\u6211\u6240\u505a\u7684\u6ce8\u91ca\u5c31\u5f88\u597d\u7406\u89e3\uff0cfeature\u90e8\u5206\u8ba9\u7f51\u7ad9\u62e5\u6709\u4e86\u76ee\u5f55\uff0c\u589e\u52a0\u4e86\u641c\u7d22\u9879\u76ee\u7684\u529f\u80fd\uff0c\u8fd4\u56de\u9876\u90e8,\u63d0\u793a\u8bed\u53d8\u4e3a\u4e2d\u6587\u7b49\u529f\u80fd\uff0c\u6ce8\u91ca\u91cc\u5f88\u7b80\u660e\u4ecb\u7ecd\u4e86

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#nav","title":"nav\u90e8\u5206","text":"

    \u8fd9\u4e00\u90e8\u5206\u5c31\u662f\u7f51\u7ad9\u6587\u6863\u76ee\u5f55

    nav: \n  - \u535a\u5ba2:\n    - \u597d\u7528/\u597d\u73a9\u7f51\u7ad9\u5206\u4eab: blog/Webplay.md  #.md\u6587\u4ef6\u7684\u76f8\u5bf9\u8def\u5f84\n  - \u5f00\u53d1: \n    - Markdown: develop/markdown.md\n
    \u4f9d\u7167\u4e0a\u9762\u7684\u6a21\u7248\u4e3a\u4f8b\uff0c\u4f60\u53ef\u4ee5\u5728\u9876\u90e8\u680f\u76ee\u5efa\u7acb\u535a\u5ba2\u548c\u5f00\u53d1\u4e24\u4e2a\u5927\u6807\u7b7e
    - \u5185\u5bb9\u6807\u9898: \u6587\u4ef6\u8def\u5f84\n
    \u5185\u5bb9\u6807\u9898\u6548\u679c\uff1a

    .md\u6587\u4ef6\u8def\u5f84(\u76f8\u5bf9\u8def\u5f84)\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_3","title":"\u5982\u4f55\u5199\u4e00\u7bc7\u6587\u7ae0","text":"

    \u53ef\u80fd\u770b\u8d77\u6bd4\u8f83\u590d\u6742\uff0c\u603b\u7ed3\u4e00\u4e0b\u5c31\u662f\uff1a\u6211\u60f3\u5199\u4e00\u7bc7\u6587\u7ae0\u5728docs/blog\u4e0b\u5199\u4e00\u7bc7\u540d\u4e3aWcowin\u6700\u5e05\u7684\u6587\u7ae0\uff0c\u9996\u5148\u5728docs/blog\u4e0b\u65b0\u5efa\u4e00\u4e2axxx.md\u6587\u4ef6\uff0c\u91cc\u9762\u5199\u5199\u4e1c\u897f\uff0c\u518d\u53bbmkdocs.yml\u91cc\u627e\u5230nav\uff0c\u8fd9\u6837\u5199\uff1a

    nav: \n  - \u535a\u5ba2:\n    - Wcowin\u6700\u5e05: blog/xxx.md  #.md\u6587\u4ef6\u7684\u76f8\u5bf9\u8def\u5f84\n

    nav\u624d\u662f\u6700\u7ec8\u51b3\u5b9a\u8fd9\u7bc7\u6587\u7ae0\u4f4d\u7f6e\u7684\u914d\u7f6e\uff0cdocs\u4e0b\u7684md\u6587\u4ef6\u53ea\u662f\u5b58\u653e\u529f\u80fd

    \u8fd9\u91cc\u4e5f\u6ce8\u610f\uff1a\u6240\u6709\u6587\u4ef6\u90fd\u5728docs\u6587\u4ef6\u4e0b\uff0c\u6587\u4ef6\u7c7b\u578b\u9664CSS\uff0cJavascript,yml\u7b49\u90fd\u662f.md\u7ed3\u5c3e\u7684\u6587\u4ef6

    \u6240\u4ee5\u5f3a\u70c8\u63a8\u8350\u60a8\u53bb\u5b66\u4e60Markdown\u3001HTML5\u3001CSS3\u3001Javascript\u7b49\u77e5\u8bc6\uff0c\u8fd9\u6837\u60a8\u5c31\u53ef\u4ee5\u81ea\u5b9a\u4e49\u60a8\u7684\u7f51\u7ad9\u4e86\u3002

    \u5230\u8fd9\u91cc\u5148\u68c0\u67e5\u4e00\u4e0b\u6587\u4ef6\u6811\u72b6\u56fe(xx.md\u4ee3\u8868\u4f60\u7684md\u6587\u4ef6)\uff1a

    $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500blog\n\u2502       \u2514\u2500\u2500xxx.md\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#extra","title":"extra\u90e8\u5206","text":"
    extra:\n  alternate:\n    - name: \u7b80\u4f53\u4e2d\u6587\n      link: /\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh   \n    - name: English\n      link: /Mkdocs-Wcowin/en/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: en\n    - name: China(TW)\n      link: /Mkdocs-Wcowin/ZH-TW/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n  generator: true #\u662f\u5426\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n    - icon: fontawesome/brands/x-twitter #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807 : https://fontawesome.com/ \u53bb\u8fd9\u91cc\u627e\u56fe\u6807\n      link: https://twitter.com/wcowin_\n    - icon: fontawesome/brands/github\n      link: https://github.com/Wcowin\n\n    - icon: fontawesome/regular/envelope #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807\n      link: mailto:<wangkewen821@gmail.com> #\u90ae\u4ef6\u8054\u7cfb\u65b9\u5f0f\n    - icon: fontawesome/brands/bilibili\n      link: https://space.bilibili.com/1407028951/lists/4566631?type=series\n  analytics:\n    provider: google #\u8c37\u6b4c\u5206\u6790\n    property:  ##\u5982\u679c\u4f60 clone \u4e86my\u6a21\u677f\uff0c\u8bf7\u5c06\u8fd9\u4e2a\u4fee\u6539\u4e3a\u4f60\u7684\n\n    # \u7f51\u9875\u5e95\u90e8\u53cd\u9988\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline #\u56fe\u6807\u53ef\u81ea\u5b9a\u4e49\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >-\n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n  # cookies\u8bbe\u7f6e\uff08\u53ef\u9009\uff09\n  # consent:\n  #   title: Cookie consent\n  #   description: >-\n  #     \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n  #     \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#alternate","title":"alternate","text":"

    \u53ef\u4ee5\u8bbe\u7f6e\u7f51\u9875\u7ffb\u8bd1(\u4f46\u662f\u4e0d\u592a\u5efa\u8bae\u4f7f\u7528\uff0c\u5f88\u9ebb\u70e6\uff0c\u8fd9\u91cc\u5c31\u4e0d\u7ec6\u8bb2\u4e86) \u5b98\u7f51\u6559\u7a0b\u7f51\u5740

      alternate:\n    - name: English\n      link: https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp \n      lang: en\n    - name: \u4e2d\u56fd(\u53f0\u6e7e)\n      link: https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#generator","title":"generator","text":"

    \u8bbe\u7f6e\u4e3agenerator: false\u53ef\u4ee5\u9009\u62e9\u662f\u5426\u5220\u9664\u5de6\u4e0b\u65b9\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#social","title":"social","text":"

    \u53ef\u8bbe\u7f6e\u7f51\u7ad9\u53f3\u4e0b\u89d2\u7684\u793e\u4ea4\u94fe\u63a5\uff08icon\u662f\u5c0f\u56fe\u6807\uff0clink\u540e\u586b\u81ea\u5df1\u94fe\u63a5\u5373\u53ef\uff09\uff1a

    \u6ce8\u610fsocial\u7684\u683c\u5f0f\uff1a

    extra:\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#cookie-consent","title":"cookie consent","text":"

    analytics: \n    provider: google\n    property: G-XXXXXXXXXX  #\u4f60\u7684Google Analytics ID\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >- \n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n\n  consent:\n    title: Cookie consent\n    description: >- \n      \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n      \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n

    \u6ce8\u610fproperty: G-XXXXXXXXXX #\u4f60\u7684Google Analytics ID\uff0c\u8fd9\u91cc\u7684G-XXXXXXXXXX\u662f\u4f60\u7684Google Analytics ID\uff0c\u4f60\u53ef\u4ee5\u5728Google Analytics\u4e2d\u627e\u5230\uff0c\u5982\u679c\u4f60\u4e0d\u60f3\u4f7f\u7528Google Analytics\uff0c\u53ef\u4ee5\u5220\u9664\u8fd9\u4e00\u90e8\u5206\u3002

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#plugins","title":"Plugins\u90e8\u5206","text":"
    plugins:\n  - search #\u641c\u7d22\u914d\u7f6e\n  - git-committers:\n      enabled: !ENV [git-committers, false]\n      repository: Wcowin/Mkdocs-Wcowin\n      branch: main\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n  - git-revision-date-localized:\n      enabled: !ENV [git-revision-date-localized, false]\n      type: iso_date\n      enable_creation_date: false\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n        - websitebeauty/linktech.md\n  - blog: #\u535a\u5ba2\u914d\u7f6e\n      post_date_format: full #\u65f6\u95f4\n      draft: true\n      draft_if_future_date: true #\u81ea\u52a8\u5c06\u5177\u6709\u672a\u6765\u65e5\u671f\u7684\u5e16\u5b50\u6807\u8bb0\u4e3a\u8349\u7a3f\n      post_readtime: true\n      post_readtime_words_per_minute: 265 #\u8ba1\u7b97\u5e16\u5b50\u7684\u9605\u8bfb\u65f6\u95f4\u65f6\u8bfb\u8005\u6bcf\u5206\u949f\u9884\u8ba1\u9605\u8bfb\u7684\u5b57\u6570\n      post_url_format: \"{date}/{slug}\"\n      # categories_slugify: !!python/object/apply:pymdownx.slugs.slugify\n      #   kwds:\n      #     case: lower\n      pagination_url_format: \"page/{page}\"\n      authors_file: \"{blog}/.authors.yml\" #\u4f5c\u8005\u4fe1\u606f\n  - tags\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#search","title":"search","text":"

    - search\u5f00\u542f\u641c\u7d22\u529f\u80fd

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#blog","title":"blog","text":"

    -blog \u5373\u535a\u5ba2\uff0c\u53ef\u4ee5\u5728docs/blog/posts\u91cc\u76f4\u63a5\u5199md\u6587\u4ef6\uff08\u4e0d\u9700\u8981\u5728nav\u91cc\u5199\u8def\u5f84\uff09,\u7136\u540e\u5728\u4e0a\u8ff0nav\u91cc\u5199

    nav:\n  - Blog:\n    - blog/index.md\n
    \u535a\u5ba2\u6548\u679c\uff1a \u8be6\u7ec6\u914d\u7f6e\u53ef\u4ee5\u53bb\u770b\u6dfb\u52a0Mkdocs\u535a\u5ba2

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#tags","title":"tags","text":"

    - tags\u5c31\u662f\u6807\u7b7e

    plugins:\n  - tags\n

    docs\u6587\u4ef6\u5939\u4e0b\u65b0\u5efatags.md\u6587\u4ef6

    \u6ce8\u610f\uff01\uff01 tags.md\u91cc\u9700\u8981\u8fd9\u6837\u5199\uff1a

    \u5f53\u4f60\u60f3\u4e3a\u67d0\u4e2amd\u6587\u6863\u6dfb\u52a0\u6807\u7b7e\uff0c\u8fd9\u4e2a.md\u6587\u4ef6(\u4f60\u5199\u7684markdown\u6587\u4ef6)\u6700\u5f00\u59cb\u7684\u5730\u65b9(\u79f0\u4e3ameta)\u90fd\u9700\u8981\u6dfb\u52a0\u6807\u7b7e\uff0c\u5426\u5219\u4e0d\u4f1a\u663e\u793a\u5728tags.md\u6587\u4ef6\u4e2d

    meta\u683c\u5f0f\uff1a

    ---\ntitle: #\u6587\u7ae0\u6807\u9898\ntags:\n  - \u4f60\u7684\u6807\u7b7e\u540d\u5b57\nhide:\n  #- navigation # \u663e\u793a\u53f3\u4fa7\u5bfc\u822a\n  #- toc #\u663e\u793a\u5de6\u4fa7\u5bfc\u822a\ncomments: false  #\u8bc4\u8bba\uff0c\u9ed8\u8ba4\u4e0d\u5f00\u542f\n---\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#markdown_extensions","title":"markdown_extensions\u90e8\u5206","text":"

    markdown_extensions: #\u8be6\u89c1https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown-extensions/ \u548c https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown/\n  - abbr\n  - attr_list\n  - admonition\n  - def_list\n  - footnotes\n  - md_in_html\n  # - meta # \u652f\u6301Markdown\u6587\u4ef6\u4e0a\u65b9\u81ea\u5b9a\u4e49\u6807\u9898\u6807\u7b7e\u7b49\n  - pymdownx.caret\n  - pymdownx.betterem\n  - pymdownx.critic\n  - pymdownx.details\n  - pymdownx.inlinehilite\n  - pymdownx.keys\n  - pymdownx.mark\n  - pymdownx.snippets\n  - pymdownx.smartsymbols\n  - pymdownx.tilde\n  - pymdownx.superfences:\n      custom_fences:\n        - name: mermaid\n          class: mermaid\n          format:\n            !!python/name:pymdownx.superfences.fence_code_format # \u4ee3\u7801\u5757\u9ad8\u4eae\u63d2\u4ef6\n  - pymdownx.arithmatex: # latex\u652f\u6301\n      generic: true\n  - toc:\n      permalink: true # \u56fa\u5b9a\u6807\u9898\u4f4d\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e\n  - pymdownx.highlight: # \u4ee3\u7801\u5757\u9ad8\u4eae\n      anchor_linenums: true\n      linenums: true # \u663e\u793a\u884c\u53f7\n      # auto_title: true # \u663e\u793a\u7f16\u7a0b\u8bed\u8a00\u540d\u79f0\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - pymdownx.tabbed:\n      alternate_style: true\n  - pymdownx.tasklist:\n      custom_checkbox: true\n
    \u8fd9\u90e8\u5206\u662f\u5bf9markdown\u8bed\u6cd5\u7684\u6269\u5c55\uff0c\u6ce8\u91ca\u91cc\u4e5f\u6709\u7b80\u8ff0 \uff0c\u5efa\u8bae\u76f4\u63a5\u590d\u5236\u7c98\u8d34

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#extra_javascriptextra_css","title":"extra_javascript\u548cextra_css\u90e8\u5206","text":"

    \u8fd9\u4e24\u90e8\u5206\u53ef\u4ee5\u8fdb\u4e00\u6b65\u7f8e\u5316\u7f51\u7ad9

    extra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49javascript\n  - https://cdn.jsdelivr.net/gh/Wcowin/Wcowin.github.io@main/docs/javascripts/extra.js  # extra\u7684cdn\n  - javascripts/mathjax.js #Latex\u652f\u6301\n  - https://polyfill.io/v3/polyfill.min.js?features=es6 #Latex\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js #Latex\u652f\u6301\n  # - ckplayer/js/ckplayer.js #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js  #gitalk\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mermaid@10.0.2/dist/add-html-label-6e56ed67.min.js #\u5fd8\u4e86\n\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49CSS\n  - stylesheets/link.css #\u53cb\u94fe\u914d\u7f6e\n  - stylesheets/customize.css # \u641c\u7d22\u5706\u89d2\u4f18\u5316\n  # - assets/stylesheets/portfolio.css\n  # - stylesheets/video.css #\u64ad\u653e\u5668\u53ef\u9009\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.css #gitalk\u652f\u6301\n  # - ckplayer/css/ckplayer.css   #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css # font-awesome\u8868\u60c5\u652f\u6301\n  # - https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css  #\u5206\u4eab\u652f\u6301\n\n  - https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css  #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css  #\u5b57\u4f53\n
    javascripts/mathjax.js\u91cc\u6709\u5bf9\u6570\u5b66\u516c\u5f0f\u7684\u6269\u5c55

    \u5f53\u4f60\u9700\u8981\u81ea\u5b9a\u4e49\u7f51\u9875CSS/JS,\u53ef\u4ee5\u5728docs\u6587\u4ef6\u5939\u4e0b\u65b0\u5efastylesheets/javascripts\u6587\u4ef6\u5939\uff0c\u7136\u540e\u5728stylesheets/javascripts\u6587\u4ef6\u5939\u91cc\u65b0\u5efaxx.css/xx.js\u6587\u4ef6\uff0c\u7136\u540e\u5728mkdocs.yml\u7684extra_javascript\u548cextra_css\u5f15\u5165xx.css/xx.js\u5373\u53ef

    extra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49\u7684javascript\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49\u7684CSS\n

    \u5982\u679c\u4f60\u60f3\u81ea\u5b9a\u4e49\u7f51\u7ad9\u7684\u6837\u5f0f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u51e0\u7bc7\u6587\u7ae0\uff1a

    JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f

    \u80cc\u666f\u7279\u6548

    \u81ea\u5b9a\u4e49\u7f51\u7ad9\u5b57\u4f53

    \u6dfb\u52a0\u53cb\u94fe

    \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf

    \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs3/","title":"\u89e3\u51b3Github Pages\u90e8\u7f72mkdocs\u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898","text":"

    \u5728/docs\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a CNAME \u7684 \u65e0\u540e\u7f00 \u6587\u4ef6\uff0c\u7136\u540e\u5728\u91cc\u9762\u586b\u5165\u4f60\u7684\u57df\u540d

    \u539f\u56e0

    \u56e0\u4e3a\u6bcf\u6b21\u5728 Custom domain \u6dfb\u52a0\u540e\u90fd\u4f1a\u7ed9\u6211\u4eec\u751f\u6210\u4e00\u4e2a CNAME \u7684\u6587\u4ef6\uff0c\u4f46\u662f\u56e0\u4e3a\u9879\u76ee\u6211\u4eec\u6ca1\u6709 pull \u5230\u672c\u5730\uff0c\u6240\u4ee5\u9020\u6210\u4e86\uff0c\u6bcf\u6b21 push \u4e4b\u540e CNAME \u4fe1\u606f\u88ab clear \u4e86

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocsblog/","title":"\u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2","text":"

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a114 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a19

    \u535a\u5ba2\u6548\u679c\u5c55\u793a\uff1a\u535a\u5ba2

    \u5b98\u65b9\u6587\u6863\uff1aBuilt-in blog plugin

    \u4e0e\u6240\u6709\u5185\u7f6e\u63d2\u4ef6\u4e00\u6837\uff0c\u535a\u5ba2\u63d2\u4ef6\u7684\u5165\u95e8\u975e\u5e38\u7b80\u5355\u3002\u53ea\u9700\u5c06\u4ee5\u4e0b\u884c\u6dfb\u52a0\u5230mkdocs.yml

    plugins:\n  - blog\n

    \u7136\u540e\u5728/docs/blog/posts\u4e0b\u5199md\u6587\u4ef6\u5373\u53ef\uff08\u65e0\u9700\u518dmkdocs.yml\u914d\u7f6e\uff0c\u5982\u6ca1\u6709post\u6587\u4ef6\uff0c\u65b0\u5efa\u4e00\u4e2a\u5373\u53ef\uff09 \u4f46\u662fbolg\u6587\u4ef6\u5939\u4e0b\u8981\u6709index.md\u6587\u4ef6(\u6ca1\u6709\u8fd9\u4e2a\u6587\u4ef6\u65b0\u5efa\u5373\u53ef)\uff01

    \u5728mkdocs.yml\u7684nav\u90e8\u5206\u8fd9\u6837\u5199

    nav:\n  - \u535a\u5ba2:\n      - index: blog/index.md\n

    \u5143\u6807\u7b7e\u53c2\u8003\uff1a

    ---\ntitle: \nauthors: [Wcowin]  #\u4f5c\u8005\ndate: 2023-10-04   #\u65f6\u95f4\ndraft: true   # \u662f\u5426\u4e3a\u8349\u7a3f\ncategories:  #\u5206\u7c7b\n  - Hello\n---\n

    \u4f5c\u8005\u4fe1\u606f\u5728docs/blog/.authors.yml\u91cc\u914d\u7f6e\uff08\u6ca1\u6709.authors.yml\u65b0\u5efa\u5373\u53ef\uff09

    authors:\n  Wcowin:\n    name: Wang Kewen    # Author name\n    description: Free and casual # Author description\n    avatar: https://s1.imagehub.cc/images/2024/02/02/91a767e93d1a344e44c69936464c583e.png          # Author avatar\n
    \u7ed3\u675f

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/","title":"Mkdocs\u6559\u7a0b\u524d\u8a00","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u4ecb\u7ecd\u4e86MkDocs\u6587\u6863\u5de5\u5177\u7684\u5b66\u4e60\u8d44\u6e90\u548c\u4f7f\u7528\u6307\u5357\uff0c\u5305\u62ec\u5b98\u65b9\u6559\u7a0b\u3001Material\u4e3b\u9898\u3001\u63d2\u4ef6\u5217\u8868\u4ee5\u53ca\u4f5c\u8005\u63d0\u4f9b\u7684\u4e2d\u6587\u6559\u7a0b\uff08\u8bed\u96c0\u3001CSDN\u3001\u77e5\u4e4e\uff09\u3002\u5185\u5bb9\u6db5\u76d6\u5feb\u901f\u90e8\u7f72\u9759\u6001\u7f51\u7ad9\u5230GitHub Pages\u3001\u914d\u7f6emkdocs.yml\u6587\u4ef6\u4ee5\u53ca\u6dfb\u52a0\u535a\u5ba2\u529f\u80fd\uff0c\u5e76\u9644\u6709\u89c6\u9891\u6559\u7a0b\u3002\u6700\u540e\u8bf7\u6c42\u4f7f\u7528\u8005\u6ce8\u660e\u6559\u7a0b\u6765\u6e90\u5e76\u652f\u6301\u53cb\u94fe\u7533\u8bf7\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a222 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a5

    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_1","title":"\u6587\u6863\u6559\u7a0b","text":"
    • \u6587\u6863\u8d44\u6599

      • \u5165\u95e8 MKdocs \u8bf7\u770bMkdocs \u5b98\u65b9\u6559\u7a0b
      • Material for MkDocs\uff08\u53ea\u770b\u8fd9\u4e2a\u4e5f\u53ef\u4ee5\uff09\u6559\u7a0b
      • \u4ee4\u4eba\u60ca\u53f9\u7684MkDocs\u9879\u76ee\u548c\u63d2\u4ef6\u5217\u8868

      \u6211\u5199\u7684\u4e2d\u6587\u6559\u7a0b\uff08\u540c\u6b65\u5728\u5176\u4ed6\u5e73\u53f0\uff09\uff1a

      • Mkdocs\u4e2d\u6587\u6559\u7a0b(\u8bed\u96c0)(\u63a8\u8350\uff0c\u5c55\u793a\u6548\u679c\u597d)
      • Mkdocs\u4e2d\u6587\u6559\u7a0b (CSDN | \u89c2\u611f\u66f4\u7eaf\u51c0)
      • MKdocs\u535a\u5ba2\u4e2d\u6587\u7cfb\u5217\u6559\u7a0b(\u77e5\u4e4e\u4e13\u680f)
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_2","title":"\u5feb\u901f\u5f00\u59cb","text":"
    • \u4e09\u90e8\u66f2

      • \u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages
      • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
      • \u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_3","title":"\u89c6\u9891\u6559\u7a0b","text":"

    \u5df2\u7ecf\u53d1\u5e03

    • \u89c6\u9891\u8d44\u6599

      • Mkdocs\u4e2d\u6587\u6559\u7a0b\u89c6\u9891
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_4","title":"\u4e00\u70b9\u8bf7\u6c42","text":"

    \u521b\u4f5c\u4e0d\u6613\u3002\u5982\u679c\u60a8\u53c2\u8003\u4e86\u672c\u6559\u7a0b/\u501f\u9274\u4e86\u7f51\u9875\u8bbe\u8ba1\uff0c\u5982\u679c\u53ef\u4ee5\u7684\u8bdd\uff0c\u70e6\u8bf7\u5728\u60a8\u7684\u7f51\u7ad9\u6ce8\u660e\u6559\u7a0b\u6765\u6e90\uff01\u611f\u8c22\uff01

    \u793a\u4f8b\uff1a

    • \u53c2\u8003\u8d44\u6599

      • \u5728\u6784\u5efa\u7f51\u7ad9\u7684\u8fc7\u7a0b\u4e2d\u53c2\u8003\u4e86Wcowin\u540c\u5b66\u7684Mkdocs\u6559\u7a0b
    <div class=\"grid cards\" markdown>\n\n-   :material-notebook-edit-outline:{ .lg .middle } __\u53c2\u8003\u8d44\u6599__\n\n    ---\n\n    - \u5728\u6784\u5efa\u672c\u7f51\u7ad9\u7684\u8fc7\u7a0b\u4e2d\u53c2\u8003\u4e86[Wcowin\u540c\u5b66\u7684Mkdocs\u6559\u7a0b](https://wcowin.work/Mkdocs-Wcowin/)\n\n</div>\n
    ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_5","title":"\u52a0\u5165\u53cb\u94fe","text":"

    \u53cb\u94fe\u7533\u8bf7

    ","tags":["Mkdocs"]},{"location":"blog/2021/12/18/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E6%B5%8B%E8%AF%95/","title":"\u535a\u5ba2\u6587\u7ae0\u6d4b\u8bd5","text":"

    Share on Share on

    "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    2022\u5e74\u7f51\u7ad9\u66f4\u65b0\u4e3b\u8981\u5305\u62ec\u6280\u672f\u6846\u67b6\u642d\u5efa\u548c\u7528\u6237\u4f53\u9a8c\u4f18\u5316\u30026\u6708\u9009\u5b9aMKdocs\u4f5c\u4e3a\u5efa\u7ad9\u6846\u67b6\uff0c10\u6708\u5b8c\u6210Github\u4ed3\u5e93\u521b\u5efa\u5e76\u542f\u7528\u72ec\u7acb\u57df\u540d\u3002\u5173\u952e\u6539\u8fdb\u5305\u62ec\u53d6\u6d88cookie\u786e\u8ba4\u5f39\u7a97\u4ee5\u7b80\u5316\u8bbf\u95ee\u6d41\u7a0b\u3001\u589e\u5f3a\u9690\u79c1\u4fdd\u62a4\uff0c\u5e76\u65b0\u589e\u9996\u9875\u53cd\u9988\u529f\u80fd\u3002\u66f4\u65b0\u4f53\u73b0\u4e86\u4ece\u6280\u672f\u9009\u578b\u5230\u4ea4\u4e92\u4f18\u5316\u7684\u5b8c\u6574\u5efa\u8bbe\u8def\u5f84\uff0c\u91cd\u70b9\u5173\u6ce8\u7528\u6237\u53cb\u597d\u6027\u548c\u6570\u636e\u9690\u79c1\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a64

    "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-10-20","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-10-20","text":"

    \u00b6

    • \u5efa\u7acbGithub\u4ed3\u5e93\uff0c\u6b63\u5f0f\u5efa\u7ad9
    • \u53d6\u6d88cookie\u786e\u8ba4,\u7b80\u5316\u7f51\u7ad9\u6253\u5f00\u6d41\u7a0b
    • \u65b0\u589e\u9996\u9875\u53cd\u9988\u6536\u96c6
    "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-10-06","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-10-06","text":"

    \u00b6

    • \u4e0d\u9760\u7236\u6bcd\uff0c\u5168\u6b3e\u62ff\u4e0b wcowin.work\u57df\u540d
    • \u53d6\u6d88cookie\u786e\u8ba4\uff0c\u4fdd\u969c\u9690\u79c1
    "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-06-06","title":"
    • \u7814\u7a76\u5982\u4f55\u5efa\u8bbe\u7f51\u7ad9\uff0c\u521d\u6b65\u5b9a\u6846\u67b6\u4e3aMKdocs
    • \u65e9\u671f\u7f51\u5740\uff1ahttps://github.com/Wcowin/mymkdocs Share on Share on
    ","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-06-06","text":"\u00b6"},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    2023\u5e74\u7f51\u7ad9\u66f4\u65b0\u805a\u7126\u529f\u80fd\u4f18\u5316\u4e0e\u4f53\u9a8c\u63d0\u5347\uff0c\u5305\u62ec\u5f15\u5165AI\u95ee\u7b54\u673a\u5668\u4eba\uff0825\u6761/\u6708\u9650\u5236\uff09\u3001\u591a\u8bed\u8a00\u652f\u6301\uff08\u542b\u53f0\u6e7e\u8bed\u8a00\uff09\u3001\u56fd\u5185\u955c\u50cf\u7ad9\u70b9\u548cMkdocs-Wcowin\u4e3b\u9898\u3002\u6280\u672f\u6539\u8fdb\u6d89\u53caLatex\u6e32\u67d3\u4fee\u590d\u3001\u56fe\u7247\u61d2\u52a0\u8f7d\u3001\u79fb\u52a8\u7aef\u9002\u914d\u53ca\u641c\u7d22\u529f\u80fd\u5b9e\u73b0\uff0c\u540c\u65f6\u4f18\u5316\u4e86\u7f51\u9875\u6d41\u7545\u5ea6\u4e0e\u5b57\u4f53\u663e\u793a\u3002\u65b0\u589eBlog\u677f\u5757\u3001\u7559\u8a00\u677f\u53ca\u53cb\u94fe\u529f\u80fd\uff0c\u6301\u7eed\u5b8c\u5584\u7528\u6237\u4ea4\u4e92\u4f53\u9a8c\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a392

    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-21","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-21","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u8131\u5355\u4e86;\u624b\u6267\u70df\u706b\u4ee5\u8c0b\u751f\uff0c\u5fc3\u6000\u8bd7\u610f\u4ee5\u8c0b\u7231

    \u6211\u4eec\u5df2\u7ecf\u5728\u4e00\u8d77

    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-14","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-14","text":"

    \u00b6

    • \u4f18\u5316\u4e2a\u522b\u7f51\u9875\u6807\u7b7e\u7684\u663e\u793a\u95ee\u9898
    • \u4f18\u5316\u7f51\u7ad9\u56fe\u7247\u52a0\u8f7d\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-09","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-09","text":"

    \u00b6

    • \u9996\u6b21\u5f15\u5165\u4eba\u5de5\u667a\u80fd\u95ee\u7b54\u673a\u5668\u4eba:https://wcowin.work/about/geren/\uff0c\u7f3a\u70b9\u662f\u6bcf\u670825\u6761\u6d88\u606f\u9650\u5236\uff0c\u4f18\u70b9\u662f\u53ef\u4ee5\u667a\u80fd\u56de\u590d\u672c\u7ad9\u6240\u6709\u4fe1\u606f\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u4e2a\u4eba\u4fe1\u606f\uff0c\u6280\u672f\u5206\u4eab\uff0c\u535a\u5ba2\uff0c\u7559\u8a00\u677f\uff0c\u53cb\u94fe\u7b49\u7b49
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6
    • \u64b8\u4e86\u66f4\u591a\u7684\u732b\u54aa
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-22","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-22","text":"

    \u00b6

    • \u66f4\u65b0\u4e86\u738b\u51b0\u51b0\u7684\u7b80\u5386\u548c\u7f8e\u7167\uff1b\u6211\u7684\u5fc3\u662f\u51b0\u51b0\u7684
    • \u4fee\u590d\u7ffb\u8bd1\u95ee\u9898
    • \u4f18\u5316\u79fb\u52a8\u7aef\u6548\u679c
    • \u63d0\u5347\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-11","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-11","text":"

    \u00b6

    • \u65b0\u589e\u591a\u8bed\u8a00\u652f\u6301\uff0c\u7279\u522b\u65b0\u589e\u4e2d\u56fd\u53f0\u6e7e\u8bed\u8a00\u652f\u6301
    • \u987a\u795d\u53cc11\u5feb\u4e50
    • \u65b0\u589e\u56fd\u5185\u955c\u50cf\u7f51\u5740:https://wcowin.gitee.io/
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-08","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-08","text":"

    \u00b6

    • \u7d27\u6025\u4fee\u590d\u56fe\u7247\u4e0d\u663e\u793a\u7684\u91cd\u5927Bug
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-14","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-14","text":"

    \u00b6

    • \u6b63\u5f0f\u5efa\u7acbMkdocs-Wcowin\u4e3b\u9898
    • \u4f18\u5316\u7f51\u9875\u6e32\u67d3\u901f\u5ea6
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-12","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-12","text":"

    \u00b6

    • \u589e\u52a0\u53cb\u94fe\u7248\u5757
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-08","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-08","text":"

    \u00b6

    • \u4fee\u590dLatex\u6e32\u67d3\u4e0d\u4e86\u7684bug
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-05","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-05","text":"

    \u00b6

    • \u65b0\u589eBlog\u7248\u5757
    • \u65b0\u589e\u4e86Latex\u6e32\u67d3\u4e0d\u4e86\u7684bug
    • \u65b0\u589e\u7559\u8a00\u677f\uff0c\u96c6\u6210\u4e86giscus\u8bc4\u8bba\u7cfb\u7edf
    • \u65b0\u589e\u9996\u6b21\u8bbf\u95ee\u7f51\u7ad9\u7684\u9876\u90e8\u901a\u77e5\u680f\u529f\u80fd
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-08-11","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-08-11","text":"

    \u00b6

    • \u4f18\u5316\u4e3b\u9875\u8bbe\u8ba1\uff0c\u5706\u6bd4\u65b9\u597d\uff0c\u5bbd\u6bd4\u7ad6\u597d
    • \u5f15\u5165\u56fe\u7247\u61d2\u52a0\u8f7d
    • \u65b0\u589e\u9875\u9762\u5e95\u90e8 \"\u4e0b\u4e00\u9875/\u4e0a\u4e00\u9875\"
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-07-19","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-07-19","text":"

    \u00b6

    • \u4fee\u6539\u7f51\u9875\u5b57\u4f53\u4e3a\u971e\u9e5c\u6587\u6977
    • \u4fee\u590d\u9f20\u6807\u4e0a\u6ed1\"\u56de\u5230\u9875\u9762\u9876\u90e8\"\u4e0d\u9002\u914d\u95ee\u9898
    "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-01-12","title":"
    • \u91cd\u5199mkdocs.yml\uff0c\u589e\u52a0\u4e2d\u6587\u6ce8\u91ca
    • \u652f\u6301Latex
    • \u5f15\u5165\u4e2a\u6027\u5316\u6807\u7b7e\uff0cMarkdown\u6269\u5c55
    • \u65b0\u589e\u7f51\u7ad9\u641c\u7d22\u529f\u80fd

    Share on Share on

    ","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-01-12","text":"\u00b6"},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u7f51\u7ad92024\u5e74\u6301\u7eed\u4f18\u5316\u6027\u80fd\u4e0e\u7528\u6237\u4f53\u9a8c\uff0c\u4e3b\u8981\u6539\u8fdb\u5305\u62ec\uff1a\u901a\u8fc7CDN\u52a0\u901f\u63d0\u5347\u8bbf\u95ee\u901f\u5ea6\uff0c\u7cbe\u7b80\u5197\u4f59JS/CSS\u4ee3\u7801\uff0c\u4f18\u5316UI\u8bbe\u8ba1\u548c\u6ce8\u811a\u663e\u793a\uff0c\u8fc1\u79fb\u56fe\u7247\u81f3\u7a33\u5b9a\u56fe\u5e8a\u3002\u6280\u672f\u5c42\u9762\u5f15\u5165\u81ea\u52a8\u65b0\u6807\u7b7e\u9875\u6253\u5f00\u529f\u80fd\uff0c\u96c6\u6210git-revision\u63d2\u4ef6\u8bb0\u5f55\u6587\u6863\u53d8\u66f4\uff0c\u5e76\u5b8c\u5584MKdocs\u6559\u7a0b\u4f53\u7cfb\u3002\u5168\u7ad9\u88ab\u4e3b\u6d41\u641c\u7d22\u5f15\u64ce\u6536\u5f55\uff0c\u53cb\u94fe\u6269\u5c55\u81f316\u4e2a\uff0c\u540c\u65f6\u4fdd\u6301\u4ee3\u7801\u7b80\u6d01\u6027\u4e0e\u53ef\u7ef4\u62a4\u6027\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a522 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a43

    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-12-24","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-12-24","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4f18\u5316\u4e86\u6ce8\u811a\u663e\u793a\u6548\u679c
    • \u5220\u9664\u4e86\u4e00\u4e9b\u5197\u4f59\u4ee3\u7801
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-12-10","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-12-10","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u542f\u7528 CDN \u52a0\u901f
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-07-21","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-07-21","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-07-21_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-07-21","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4f18\u5316\u4e86\u7f51\u7ad9\u7684UI\u548c\u8bbf\u95ee\u901f\u5ea6\uff0c\u542f\u7528 CDN \u52a0\u901f
    • \u5b66\u4e1a\u7e41\u91cd
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-27","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-27","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u7f8e\u5316\u4e86Blog\u9875\u9762, \u4f7f\u66f4\u52a0\u7b80\u6d01\u7f8e\u89c2,\u5982\u4f60\u6240\u89c1
    • \u5185\u5fc3\u4e30\u76c8\u8005\uff0c\u72ec\u884c\u4e5f\u72ec\u4f17\uff0c\u5fc3\u6709\u5c71\u6d77\uff0c\u9759\u800c\u4e0d\u4e89
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-20","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-20","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4f18\u5316\u591a\u5904UI
    • \u5220\u51cf\u4e86\u90e8\u5206\u62d6\u6162\u7f51\u7ad9\u901f\u5ea6\u7684JS/CSS\u4ee3\u7801
    • \u66f4\u65b0\u4e86MKdocs\u8865\u5145\u7cfb\u5217\u6559\u7a0b
    • \u8fd1\u671f\u7565\u6709\u65f6\u95f4\uff0c\u6240\u4ee5\u66f4\u6587\u53d8\u5f97\u9ad8\u4ea7
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-19","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-19","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u671f\u672b\u7ed3\u675f
    • \u5220\u51cf\u4e86\u5197\u4f59\u4ee3\u7801
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-2","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-2","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u8fd1\u671f\u5b66\u4e1a\u7e41\u91cd
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-2_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-2","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u8fc7\u4e86\u516d\u4e00
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-05-15","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-05-15","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5168\u7ad9\u5f15\u5165\u81ea\u52a8\u5728\u65b0\u6807\u7b7e\u9875\u6253\u5f00\uff0c\u4ed3\u5e93\u5730\u5740\uff1amkdocs-open-in-new-tab
    Show source code

    Look at this source open_in_new_tab.js:

    // Description: Open external links in a new tab and PDF links in a new tab\n// Source: https://jekyllcodex.org/without-plugin/new-window-fix/\n\n//open external links in a new window\nfunction external_new_window() {\n    for(let c = document.getElementsByTagName(\"a\"), a = 0;a < c.length;a++) {\n        let b = c[a];\n        if(b.getAttribute(\"href\") && b.hostname !== location.hostname) {\n            b.target = \"_blank\";\n            b.rel = \"noopener\";\n        }\n    }\n}\n//open PDF links in a new window\nfunction pdf_new_window ()\n{\n    if (!document.getElementsByTagName) {\n      return false;\n    }\n    let links = document.getElementsByTagName(\"a\");\n    for (let eleLink=0; eleLink < links.length; eleLink ++) {\n    if ((links[eleLink].href.indexOf('.pdf') !== -1)||(links[eleLink].href.indexOf('.doc') !== -1)||(links[eleLink].href.indexOf('.docx') !== -1)) {\n        links[eleLink].onclick =\n        function() {\n            window.open(this.href);\n            return false;\n        }\n    }\n    }\n}\n\nfunction apply_rules() {\n    external_new_window();\n    pdf_new_window();\n}\n\nif (typeof document$ !== \"undefined\") {\n    // compatibility with mkdocs-material's instant loading feature\n    // based on code from https://github.com/timvink/mkdocs-charts-plugin\n    // Copyright (c) 2021 Tim Vink - MIT License\n    // fixes [Issue #2](https://github.com/JakubAndrysek/mkdocs-open-in-new-tab/issues/2)\n    document$.subscribe(function() {\n        apply_rules();\n        console.log(\"Applying rules\");\n    })\n}\n

    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-05-05","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-05-05","text":"

    \u00b6

    • \u53d1\u5e03Mkdocs-Wcowin\u4e3b\u9898|3.0\u7248\u672c\uff01\uff01\uff01
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u548c\u5c0f\u738b\u4e00\u8d77\u5403\u4e86\u597d\u5403\u7684
    • \u611f\u8c22\u738b\u9e4f\u8001\u54e5\u7684\u6253\u8d4f
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-22","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-22","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa
    • \u4f18\u5316\u5e03\u5c40
    • \u65b0\u589e\u5706\u89d2\u5316\u8bbe\u8ba1\u6559\u7a0b
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-22_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-22","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u7f51\u7ad9\u5168\u9762\u8d34\u5408\u5706\u89d2\u8bbe\u8ba1\uff0c\u975e\u5e38\u597d\u770b
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-13","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-13","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u91cd\u5199\u4e3b\u9875index.md,\u66f4\u52a0\u7f8e\u89c2\uff0c\u8d34\u5408\u5706\u89d2\u8bbe\u8ba1
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-12","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-12","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u611f\u8c22W1ndys\u63d0\u51fa\u7684\u4f7f\u7528\u8f6f\u7f16\u7801\u914d\u7f6e\u53cb\u94fe\u754c\u9762\uff0c\u4f7f\u5f97\u53cb\u94fe\u6dfb\u52a0\u66f4\u52a0\u89c4\u8303\u5316
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-06","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-06","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4e3b\u9875\u5f15\u5165\u5929\u6c14\u7ec4\u4ef6\uff0c\u641c\u7d22\u6846/\u6309\u94ae\u5706\u89d2\u5316
    • \u5220\u9664\u5197\u4f59JS/CSS\u6587\u4ef6
    • \u611f\u8c22Anshul Raj Verma\u5728Discussions#7\u4e0a\u63d0\u51fa\u7684\u7f51\u7ad9\u4f18\u5316\u5efa\u8bae
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-02","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-02","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5728mkdocs.yml\u7684plugins\u6a21\u5757\u4e2d\u5f15\u5165!ENV [CI, false]\u8bed\u53e5\uff0c\u6781\u5927\u7f29\u77edmkdocs serve\u9759\u6001\u9884\u89c8\u65f6\u95f4\uff083-5s\uff09
    • \u672cMkdocs-Wcowin\u4e3b\u9898\u5f97\u5230\u4ee5\u4e0b\u4e24\u4f4d\u7684\u4f7f\u7528\uff1a
      • Lenny's Web
      • tkqtang's Web
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-03-14","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-03-14","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • 3\u670814\u65e5\uff08March 14th\uff09\u662f\u516c\u5386\u4e00\u5e74\u4e2d\u7684\u7b2c73\u5929\uff08\u95f0\u5e74\u7b2c74\u5929\uff09\uff0c\u79bb\u5168\u5e74\u7684\u7ed3\u675f\u8fd8\u6709292\u5929\u3002\u662f\u56fd\u9645\u5706\u5468\u7387\u65e5\u3002\u5176\u4e2d\u5386\u53f2\u4e0a\u53d1\u751f\u7684\u5927\u4e8b\u4ef6\u6709\u963f\u5c14\u4f2f\u7279\u00b7\u7231\u56e0\u65af\u5766\u7684\u51fa\u751f\u3002 [10]\u5361\u5c14\u00b7\u9a6c\u514b\u601d\u3001\u65af\u8482\u82ac\u00b7\u5a01\u5ec9\u00b7\u970d\u91d1\u7684\u901d\u4e16\u3002
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-20","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-20","text":"

    \u00b6

    • \u4f18\u5316\u9875\u811a\u201c\u672c\u7ad9\u8bbf\u95ee\u91cf\u548c\u840cICP\u590720230640\u53f7\u201d\u663e\u793a\u65b9\u5f0f
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-02","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-02","text":"

    \u00b6

    • \u7f51\u7ad9\u56fe\u7247\u5168\u90e8\u8fc1\u79fb\u81f3smms(\u66f4\u52a0\u7a33\u5b9a\u6d41\u7545)
    • \u7740\u624b\u6539\u5199MKdocs\u6559\u7a0b\uff0c\u4f7f\u5f97\u6761\u7406\u66f4\u52a0\u6e05\u6670
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5220\u9664\u5927\u91cf\u7e41\u7410\u65e0\u7528\u4ee3\u7801
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-01","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-01","text":"

    \u00b6

    • \u6539\u8fdb\u7f51\u9875\u4ee3\u7801\u663e\u793a\u6548\u679c
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-01-30","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-01-30","text":"

    \u00b6

    • \u53cb\u94fe\u6570\u91cf\u8fbe\u523016\u4f4d
    • \u4fee\u590d\u4e86\u4e00\u4e9bbugs
    • \u672c\u7f51\u7ad9\u5df2\u7ecf\u88ab\u767e\u5ea6/\u8c37\u6b4c\u6536\u5f55\uff08\u786e\u4fe1\uff0c\u4f7f\u7528\u767e\u5ea6/\u8c37\u6b4c\u641c\u7d22Wcowin\u5b57\u6837\u5373\u53ef\uff09
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-01-05","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-01-05","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5f15\u5165git-revision-date-localized-plugin\u63d2\u4ef6\uff0c\u4ee5\u4fbf\u8bb0\u5f55\u6587\u6863\u521b\u5efa\u548c\u6700\u540e\u4e00\u6b21\u4fee\u6539\u65f6\u95f4
    • \u548c\u5c0f\u738b\u4e00\u8d77\u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa

    Share on Share on

    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    2025\u5e74\u7f51\u7ad9\u66f4\u65b0\u4e3b\u8981\u56f4\u7ed5\u6027\u80fd\u4f18\u5316\u548c\u529f\u80fd\u6539\u8fdb\u5c55\u5f00\uff0c\u5305\u62ec\u6301\u7eed\u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\u3001\u4fee\u590dMarkdown\u89e3\u6790\u5668\u6e32\u67d3\u95ee\u9898\u3001\u6539\u8fdb\u53cb\u94fe\u7edf\u8ba1\u51c6\u786e\u6027\u3001\u4fee\u590d\u8bc4\u8bba\u533a\u5b9a\u4f4dbug\u3002\u540c\u65f6\u66f4\u65b0\u4e86MKdocs\u6559\u7a0b\u4ee5\u9002\u5e94\u6700\u65b0\u7248\u672c\uff0c\u4f18\u5316\u7559\u8a00\u677f\u5e03\u5c40\u5e76\u6e05\u7406\u5931\u6548\u56fe\u7247\u94fe\u63a5\u3002\u6b64\u5916\u8fd8\u5c1d\u8bd5\u5f15\u5165glightbox\u63d2\u4ef6\u63d0\u5347\u56fe\u7247\u67e5\u770b\u4f53\u9a8c\uff0c\u5e76\u901a\u8fc7\u4ee3\u7801\u91cd\u5199\u663e\u8457\u63d0\u5347\u52a0\u8f7d\u901f\u5ea6\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a349

    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-30","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-30","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4fee\u590d\u5173\u4e8e\u9875\u9762\u7684\u663e\u793a\u95ee\u9898
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-19","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-19","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4fee\u6539\u6559\u7a0b\u4e2d\u7684\u5404\u79cd\u5c0f\u9519\u8bef
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-13","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-13","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4fee\u590d\u5728 Markdown \u6587\u4ef6\u4e2d\uff0cHTML \u548c Markdown \u6df7\u7528\u53ef\u80fd\u5bfc\u81f4\u89e3\u6790\u5668\u65e0\u6cd5\u6b63\u786e\u6e32\u67d3\u3002
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-10","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-10","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4f18\u5316\u53cb\u94fe\u7edf\u8ba1\u65b9\u5f0f\uff0c\u66f4\u52a0\u51c6\u786e\u8ba1\u6570
    • \u4fee\u590d\u8bc4\u8bba\u533a\u91cd\u5b9a\u4f4d\u7684bug\uff0c\u9632\u6b62\u4ed6\u4eba\u7f51\u7ad9\u6d4b\u8bd5\u8bc4\u8bba\u533a\u5bfc\u81f4\u8bc4\u8bba\u533a\u8986\u76d6\u5230\u6211\u7684\u7f51\u7ad9
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-03-30","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-03-30","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u6211\u56de\u6765\u4e86
    • \u5f00\u542f\u535a\u5ba2\u534a\u6708\u66f4\u6a21\u5f0f
    • \u4e00\u6218\u8003\u7814\u5931\u5229
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-03-14","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-03-14","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u03c0\u65e5\u5feb\u4e50\uff01
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-24","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-24","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4e00\u5207\u90fd\u662f\u6700\u597d\u7684\u5b89\u6392
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-19","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-19","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u66f4\u65b0\u4e86MKdocs\u6559\u7a0b\uff0c\u9002\u5e94\u5b98\u65b9\u6700\u65b0\u7248\u672c
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-16","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-16","text":"

    \u00b6

    • \u9996\u9875\u7115\u7136\u4e00\u65b0
    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-04","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-04","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u66f4\u65b0\u4e86\u90e8\u5206\u6559\u7a0b\uff0c\u9002\u5e94\u5b98\u65b9\u6700\u65b0\u7248\u672c
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-11","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-11","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u4f18\u5316\u7559\u8a00\u677f\uff0c\u652f\u6301\u6309\u94ae\u5207\u6362\uff0c\u5e03\u5c40\u66f4\u7b80\u6d01
    • \u6e05\u7406\u5931\u6548\u56fe\u7247\u94fe\u63a5\uff0c\u4fee\u590d\u90e8\u5206\u56fe\u7247\u65e0\u6cd5\u663e\u793a\u95ee\u9898
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-09","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-09","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5f15\u5165glightbox\u63d2\u4ef6(\u5df2\u53d6\u6d88)\uff0c\u56fe\u7247\u67e5\u770b\u66f4\u65b9\u4fbf
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-07","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-07","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u91cd\u5199\u90e8\u5206\u4ee3\u7801
    "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-05","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-05","text":"

    \u00b6

    • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
    • \u5927\u5e45\u63d0\u5347\u6027\u80fd\uff0c\u52a0\u8f7d\u901f\u5ea6\u66f4\u5feb Share on Share on
    "},{"location":"blog/websitebeauty/404/","title":"\u6dfb\u52a0404\u9875\u9762","text":"

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a131 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a30

    \u9996\u5148\u5728mkdocs.yml\u6587\u4ef6\u4e2d\u6dfb\u52a0custom_dir:

    theme:\n  name: material\n  custom_dir: docs/overrides #\u8986\u5199\u8def\u5f84\n

    docs/overrides\u6587\u4ef6\u4e0b\u65b0\u5efa404.html \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:

    $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500404.html\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/404/#404","title":"404\u516c\u76ca\u9875\u9762","text":"\u70b9\u51fb\u5c55\u5f00
    <!DOCTYPE html>\n<html lang=\"zh-CN\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>404 - \u9875\u9762\u4e0d\u5b58\u5728</title>```\n<!DOCTYPE html>\n<html lang=\"zh-cn\">\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"description\" content=\"\u516c\u76ca404\u9875\u9762\u662f\u7531\u817e\u8baf\u516c\u53f8\u5458\u5de5\u5fd7\u613f\u8005\u81ea\u4e3b\u53d1\u8d77\u7684\u4e92\u8054\u7f51\u516c\u76ca\u6d3b\u52a8\u3002\" />\n    <link rel=\"icon\" href=\"data:image/gif;base64,R0lGODdhIAAgANUAAAAAAAgFBgYICAwMDBAPDxAQDxQTFBUYFxcaGRwcHCQkJCQoJykqKTQ0ND09PUJCQktMTFZWVltcXF1hYGNjY2doaGpqanNzc3d5eHp6eoODg4uLi5eXl5mamqOjo62tra+wr7S0tLe5uLu7u7/AwMPEw83NzdbX1tfa2dra2uTk5Ovr6+/w7/T09Pj39/f4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAADEALAAAAAAgACAAAAb/QJhwOGyZOpIGQ6FgNCQcU4tIrcJaIwlgy+1uJaOplZqydBOSzGaTkSS6lNN4ONoOAJRQajV0rVAgFF0jcyEAbw9hc1cjD4cAIVZ1DAAXKotEKxkAlIREJ48bYphFGwAKAHJCLWaVo6RFF1sWYnUDDpewVSoOd4QtWgCeMCmXLaqfUyopdF9GWxRiKQAVKh3CRHUdKhQEzFeCAEdbH6uOh28A3ypbCQhbEGIfWx2CCd8wJhB2CpFDIQvuAIBgYkiKN0kASOAzRJYjBwyFrGgAwNGFTFqUAMjwYogpA1woMFwRDgDIDUQ2LQGAcoiGLRr2QRgp8yUADURMMWFJRYMH3BglJOQSwq0EDA84c56ilOGVLisqKUaISKVFihIjRJRI4XTIiggAGggygKxICAoguSDI0/UEyAnXAJTLJMtLlwxUYcwD0MEEtIgtBKGi0OHDh3qn8IwKvEVKuGHXGAwI8apFCAOUOvxzBqNOAVzgthi1UgKasl7YrtS9MMXI6DEjpKieNWoaSA1dF7V4+QafkNKoLOlSIQsVCUkmATgYwWIRCxEOAByANKc0AAEAJnzYI6bFihQfBAUQjSlF3S0GIqjZgCFC2i0XfM/BUtJuSEVPjdRTwsQJYdljBAEAOw==\" />\n    <title>404 \u60a8\u8bbf\u95ee\u7684\u9875\u9762\u641e\u4e22\u4e86</title>\n    <script src=\"https://volunteer.cdn-go.cn/404/latest/404.js\" rendertarget=\"404DlV\"></script>\n    <style>\n        body {\n            overflow-x: hidden;\n            max-width: 100vw;\n            margin: 0;\n            padding: 0;\n            background-color: rgba(0, 0, 0, 0);\n            color: white;\n            text-align: center;\n        }\n        .container {\n            position: relative;\n            left: 50%;\n            transform: translateX(-50%);\n            width: 100%;\n            max-width: 1600px;\n            height: 100vh;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n        }\n        .background-img {\n            width: 100%;\n            max-width: 1600px;\n            filter: brightness(75%);\n        }\n        .content {\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n            width: 98vw;\n            max-width: 1600px;\n            text-align: center;\n        }\n        .content h1 {\n            font-size: 128px;\n            font-weight: 800;\n            margin: 0;\n        }\n        .content p {\n            font-size: 28px;\n            margin: 0;\n        }\n        .content i {\n            font-size: 1.2em;\n        }\n        .footer {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 98vw;\n            max-width: 1600px;\n            font-size: 0.75em;\n            margin-top: 20px;\n        }\n        .footer img {\n            width: 160px;\n        }\n        .footer div {\n            text-align: right;\n        }\n        .footer a {\n            /* color: lightgray; */\n            font-size: 0.8em;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <img class=\"background-img\" alt=\"404!\u60a8\u8981\u8bbf\u95ee\u7684\u9875\u9762\u8d70\u4e22\u4e86!\" src=\"https://volunteer.cdn-go.cn/404/latest/img/dream4school.jpg\" />\n        <div class=\"content\">\n            <h1>404 NOT Found</h1>\n            <p>\u60a8\u8bbf\u95ee\u7684\u9875\u9762\u8d70\u4e22\u5728\u5bfb\u627e\u68a6\u60f3\u7684\u8def\u4e0a\u4e86</p>\n            <p>\u4e0d\u8fc7\u60a8\u8fd8\u53ef\u4ee5\u548c\u817e\u8baf\u5fd7\u613f\u8005\u4e00\u8d77</p>\n            <i><b>\u4e3a\u5b69\u5b50\u4eec\u70b9\u4eae\u4e00\u4e2a\u68a6\u60f3</b></i>\n        </div>\n        <div class=\"footer\">\n            <a href=\"https://volunteer.cdn-go.cn/404/latest/img/dream4schoolQR.png\">\n                <img src=\"https://volunteer.cdn-go.cn/404/latest/img/dream4schoolQR.png\" alt=\"\u70b9\u51fb\u8fdb\u5165\u652f\u6301\u9875\u9762\" />\n                <br />\u626b\u7801\u70b9\u4eae\u4e00\u4e2a\u68a6\u60f3\n            </a>\n            <div>\n                <p>\u7167\u7247\u62cd\u6444\u4e8e\u6e56\u5357\u7701\u5cb3\u9633\u5e02\u5e73\u6c5f\u53bf\u4e09\u5e02\u9547\u65b0\u6751\u5b8c\u5c0f</p>\n                <p>\u62cd\u6444\u65f6\u95f4\uff1a\u4e8c\u96f6\u4e8c\u4e09\u5e74\u4e03\u6708\u5341\u4e00\u65e5</p>\n                <p>\uff08\u611f\u6069\u57fa\u91d1\u4f1a\u4f9b\u7a3f\uff09</p>\n                <a href=\"https://support.qq.com/products/378306\">\u6211\u8981\u53cd\u9988</a>\n            </div>\n        </div>\n    </div>\n</body>\n</html>\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/404/#404_1","title":"404\u9ab0\u5b50\u9875\u9762","text":"

    \u76ee\u524d\u66f4\u6362\u4e86\u65b0\u7684404\u9875\u9762\uff1a

    \u70b9\u51fb\u5c55\u5f00
    <!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>404</title>\n    <style>\n      body {\n        background: #000;\n        height: 100vh;\n        overflow: hidden;\n        display: flex;\n        font-family: Anton, sans-serif;\n        justify-content: center;\n        align-items: center;\n        -webkit-perspective: 1000px;\n        perspective: 1000px;\n      }\n\n      div {\n        -webkit-transform-style: preserve-3d;\n        transform-style: preserve-3d;\n      }\n\n      .rail {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        -webkit-transform: rotateX(-30deg) rotateY(-30deg);\n        transform: rotateX(-30deg) rotateY(-30deg);\n      }\n\n      .rail .stamp {\n        position: absolute;\n        width: 200px;\n        height: 200px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        background: #141414;\n        color: #fff;\n        font-size: 7rem;\n      }\n\n      .rail .stamp:nth-child(1) {\n        -webkit-animation: stampSlide 40s -2.3s linear infinite;\n        animation: stampSlide 40s -2.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(2) {\n        -webkit-animation: stampSlide 40s -4.3s linear infinite;\n        animation: stampSlide 40s -4.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(3) {\n        -webkit-animation: stampSlide 40s -6.3s linear infinite;\n        animation: stampSlide 40s -6.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(4) {\n        -webkit-animation: stampSlide 40s -8.3s linear infinite;\n        animation: stampSlide 40s -8.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(5) {\n        -webkit-animation: stampSlide 40s -10.3s linear infinite;\n        animation: stampSlide 40s -10.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(6) {\n        -webkit-animation: stampSlide 40s -12.3s linear infinite;\n        animation: stampSlide 40s -12.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(7) {\n        -webkit-animation: stampSlide 40s -14.3s linear infinite;\n        animation: stampSlide 40s -14.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(8) {\n        -webkit-animation: stampSlide 40s -16.3s linear infinite;\n        animation: stampSlide 40s -16.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(9) {\n        -webkit-animation: stampSlide 40s -18.3s linear infinite;\n        animation: stampSlide 40s -18.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(10) {\n        -webkit-animation: stampSlide 40s -20.3s linear infinite;\n        animation: stampSlide 40s -20.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(11) {\n        -webkit-animation: stampSlide 40s -22.3s linear infinite;\n        animation: stampSlide 40s -22.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(12) {\n        -webkit-animation: stampSlide 40s -24.3s linear infinite;\n        animation: stampSlide 40s -24.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(13) {\n        -webkit-animation: stampSlide 40s -26.3s linear infinite;\n        animation: stampSlide 40s -26.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(14) {\n        -webkit-animation: stampSlide 40s -28.3s linear infinite;\n        animation: stampSlide 40s -28.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(15) {\n        -webkit-animation: stampSlide 40s -30.3s linear infinite;\n        animation: stampSlide 40s -30.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(16) {\n        -webkit-animation: stampSlide 40s -32.3s linear infinite;\n        animation: stampSlide 40s -32.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(17) {\n        -webkit-animation: stampSlide 40s -34.3s linear infinite;\n        animation: stampSlide 40s -34.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(18) {\n        -webkit-animation: stampSlide 40s -36.3s linear infinite;\n        animation: stampSlide 40s -36.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(19) {\n        -webkit-animation: stampSlide 40s -38.3s linear infinite;\n        animation: stampSlide 40s -38.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(20) {\n        -webkit-animation: stampSlide 40s -40.3s linear infinite;\n        animation: stampSlide 40s -40.3s linear infinite;\n      }\n\n      @-webkit-keyframes stampSlide {\n        0% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n        }\n\n        100% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n        }\n      }\n\n      @keyframes stampSlide {\n        0% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n        }\n\n        100% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n        }\n      }\n\n      .world {\n        -webkit-transform: rotateX(-30deg) rotateY(-30deg);\n        transform: rotateX(-30deg) rotateY(-30deg);\n      }\n\n      .world .forward {\n        position: absolute;\n        -webkit-animation: slide 2s linear infinite;\n        animation: slide 2s linear infinite;\n      }\n\n      .world .box {\n        width: 200px;\n        height: 200px;\n        -webkit-transform-origin: 100% 100%;\n        transform-origin: 100% 100%;\n        -webkit-animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;\n        animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;\n      }\n\n      .world .box .wall {\n        position: absolute;\n        width: 200px;\n        height: 200px;\n        background: rgba(10, 10, 10, 0.8);\n        border: 1px solid #fafafa;\n        box-sizing: border-box;\n      }\n\n      .world .box .wall::before {\n        content: \"\";\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        color: #fff;\n        font-size: 7rem;\n      }\n\n      .world .box .wall:nth-child(1) {\n        -webkit-transform: translateZ(100px);\n        transform: translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(2) {\n        -webkit-transform: rotateX(180deg) translateZ(100px);\n        transform: rotateX(180deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(3) {\n        -webkit-transform: rotateX(90deg) translateZ(100px);\n        transform: rotateX(90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(3)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s -2s linear infinite;\n        animation: zeroFour 4s -2s linear infinite;\n      }\n\n      .world .box .wall:nth-child(4) {\n        -webkit-transform: rotateX(-90deg) translateZ(100px);\n        transform: rotateX(-90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(4)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s -2s linear infinite;\n        animation: zeroFour 4s -2s linear infinite;\n      }\n\n      .world .box .wall:nth-child(5) {\n        -webkit-transform: rotateY(90deg) translateZ(100px);\n        transform: rotateY(90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(5)::before {\n        -webkit-transform: rotateX(180deg) translateZ(-1px);\n        transform: rotateX(180deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s linear infinite;\n        animation: zeroFour 4s linear infinite;\n      }\n\n      .world .box .wall:nth-child(6) {\n        -webkit-transform: rotateY(-90deg) translateZ(100px);\n        transform: rotateY(-90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(6)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s linear infinite;\n        animation: zeroFour 4s linear infinite;\n      }\n\n      @-webkit-keyframes zeroFour {\n        0% {\n          content: \"4\";\n        }\n\n        100% {\n          content: \"0\";\n        }\n      }\n\n      @keyframes zeroFour {\n        0% {\n          content: \"4\";\n        }\n\n        100% {\n          content: \"0\";\n        }\n      }\n\n      @-webkit-keyframes roll {\n        0% {\n          -webkit-transform: rotateZ(0);\n          transform: rotateZ(0);\n        }\n\n        85% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        87% {\n          -webkit-transform: rotateZ(88deg);\n          transform: rotateZ(88deg);\n        }\n\n        90% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        100% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n      }\n\n      @keyframes roll {\n        0% {\n          -webkit-transform: rotateZ(0);\n          transform: rotateZ(0);\n        }\n\n        85% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        87% {\n          -webkit-transform: rotateZ(88deg);\n          transform: rotateZ(88deg);\n        }\n\n        90% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        100% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n      }\n\n      @-webkit-keyframes slide {\n        0% {\n          -webkit-transform: translateX(0);\n          transform: translateX(0);\n        }\n\n        100% {\n          -webkit-transform: translateX(-200px);\n          transform: translateX(-200px);\n        }\n      }\n\n      @keyframes slide {\n        0% {\n          -webkit-transform: translateX(0);\n          transform: translateX(0);\n        }\n\n        100% {\n          -webkit-transform: translateX(-200px);\n          transform: translateX(-200px);\n        }\n      }\n    </style>\n  </head>\n  <body>\n    <div class=\"rail\">\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n    </div>\n    <div class=\"world\">\n      <div class=\"forward\">\n        <div class=\"box\">\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n        </div>\n      </div>\n    </div>\n  </body>\n</html>\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/","title":"MkDocs\u6587\u6863AI\u6458\u8981","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u9879\u76ee\u4e3aMkDocs\u6587\u6863\u7cfb\u7edf\u63d0\u4f9bAI\u9a71\u52a8\u7684\u667a\u80fd\u6458\u8981\u751f\u6210\u548c\u9605\u8bfb\u7edf\u8ba1\u529f\u80fd\uff0c\u652f\u6301OpenAI\u3001DeepSeek\u7b49\u591aAPI\u670d\u52a1\u3002\u6838\u5fc3\u7279\u6027\u5305\u62ec\u81ea\u52a8\u751f\u621080-120\u5b57\u9ad8\u8d28\u91cf\u6458\u8981\u3001\u591a\u8bed\u8a00\u652f\u6301\u3001\u667a\u80fd\u5185\u5bb9\u6e05\u7406\u548c\u9ad8\u6548\u7f13\u5b58\u7cfb\u7edf\uff0c\u540c\u65f6\u63d0\u4f9b\u7cbe\u51c6\u7684\u4e2d\u6587\u9605\u8bfb\u7edf\u8ba1\u548c\u9605\u8bfb\u65f6\u95f4\u4f30\u7b97\u3002\u901a\u8fc7\u7075\u6d3b\u7684\u914d\u7f6e\u9009\u9879\uff0c\u7528\u6237\u53ef\u5b9e\u73b0\u6587\u4ef6\u5939\u6216\u9875\u9762\u7ea7\u522b\u7684\u7cbe\u786e\u63a7\u5236\uff0c\u5e76\u81ea\u5b9a\u4e49API\u670d\u52a1\u548c\u63d0\u793a\u8bcd\u3002\u8be5\u5de5\u5177\u663e\u8457\u63d0\u5347\u4e86\u6280\u672f\u6587\u6863\u7684\u53ef\u8bfb\u6027\u548c\u7ba1\u7406\u6548\u7387\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a912 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a134

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#mkdocs-ai-hooks","title":"MkDocs AI Hooks","text":"

    \u4ed3\u5e93\u5730\u5740\uff1ahttps://github.com/Wcowin/mkdocs-ai-hooks

    \u4e2d\u6587 | English

    \ud83d\ude80 \u60a8\u7684MkDocs\u6587\u6863\u9996\u9009\u667a\u80fd\u6458\u8981\uff01 \u8fd9\u4e2a\u9879\u76ee\u5229\u7528MkDocs hooks\uff0c\u4e3a\u60a8\u7684\u6280\u672f\u6587\u6863\u548c\u535a\u5ba2\u6dfb\u52a0AI\u9a71\u52a8\u7684\u6458\u8981\u751f\u6210\u548c\u667a\u80fd\u9605\u8bfb\u7edf\u8ba1\u529f\u80fd\u3002

    \u7f51\u7ad9\u6548\u679c\u9884\u89c8\uff1ahttps://wcowin.work/Mkdocs-Wcowin/blog/Mkdocs/mkfirst/

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_1","title":"\u2728 \u529f\u80fd\u7279\u6027","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai","title":"AI\u667a\u80fd\u6458\u8981","text":"
    • \u81ea\u52a8\u751f\u6210\u6587\u7ae0\u6458\u8981\uff1a\u4f7f\u7528DeepSeek API\u751f\u6210\u9ad8\u8d28\u91cf\u768480-120\u5b57\u6458\u8981
    • \u591a\u8bed\u8a00\u652f\u6301\uff1a\u652f\u6301\u4e2d\u6587\u3001\u82f1\u6587\u7b49\u591a\u79cd\u8bed\u8a00
    • \u591aAPI\u670d\u52a1\u652f\u6301\uff1a\u652f\u6301OpenAI\u3001Claude\u7b49\u591a\u79cdAI\u670d\u52a1
    • \u667a\u80fd\u5185\u5bb9\u6e05\u7406\uff1a\u81ea\u52a8\u8fc7\u6ee4YAML\u3001HTML\u3001\u4ee3\u7801\u5757\u7b49\u683c\u5f0f\u5185\u5bb9
    • \u5907\u7528\u6458\u8981\u673a\u5236\uff1aAPI\u5931\u8d25\u65f6\u63d0\u4f9b\u57fa\u4e8e\u89c4\u5219\u7684\u667a\u80fd\u6458\u8981
    • \u9ad8\u6548\u7f13\u5b58\u7cfb\u7edf\uff1a\u907f\u514d\u91cd\u590dAPI\u8c03\u7528\uff0c7\u5929\u667a\u80fd\u8fc7\u671f
    • \u7075\u6d3b\u914d\u7f6e\uff1a\u652f\u6301\u6587\u4ef6\u5939\u7ea7\u522b\u548c\u9875\u9762\u7ea7\u522b\u7684\u7cbe\u786e\u63a7\u5236
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_2","title":"\u667a\u80fd\u9605\u8bfb\u7edf\u8ba1(\u53ef\u9009)","text":"
    • \u7cbe\u51c6\u4e2d\u6587\u5b57\u7b26\u7edf\u8ba1\uff1a\u4e13\u95e8\u4f18\u5316\u7684\u4e2d\u6587\u5185\u5bb9\u8bc6\u522b
    • \u667a\u80fd\u4ee3\u7801\u68c0\u6d4b\uff1a\u8bc6\u522b\u591a\u79cd\u7f16\u7a0b\u8bed\u8a00\u548c\u547d\u4ee4\u884c\u4ee3\u7801
    • \u9605\u8bfb\u65f6\u95f4\u4f30\u7b97\uff1a\u57fa\u4e8e\u4e2d\u6587\u9605\u8bfb\u4e60\u60ef\u7684400\u5b57/\u5206\u949f\u8ba1\u7b97
    • \u7f8e\u89c2\u4fe1\u606f\u5c55\u793a\uff1a\u4f7f\u7528MkDocs Material\u98ce\u683c\u7684\u4fe1\u606f\u6846
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_3","title":"\u667a\u80fd\u5316\u7279\u6027","text":"
    • \u81ea\u52a8\u8bed\u8a00\u8bc6\u522b\uff1a\u652f\u630130+\u7f16\u7a0b\u8bed\u8a00\u548c\u6807\u8bb0\u8bed\u8a00
    • \u5185\u5bb9\u7c7b\u578b\u68c0\u6d4b\uff1a\u533a\u5206\u4ee3\u7801\u3001\u914d\u7f6e\u3001\u547d\u4ee4\u884c\u7b49\u4e0d\u540c\u5185\u5bb9
    • \u7f13\u5b58\u4f18\u5316\uff1aLRU\u7f13\u5b58\u63d0\u5347\u6027\u80fd
    • \u9519\u8bef\u5904\u7406\uff1a\u5b8c\u5584\u7684\u5f02\u5e38\u5904\u7406\u548c\u65e5\u5fd7\u8bb0\u5f55
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_4","title":"\ud83d\udce6 \u5b89\u88c5","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#1","title":"\u65b9\u6cd51","text":"

    \u76f4\u63a5\u4e0b\u8f7d\uff08\u63a8\u8350\uff09 \u5728releases\u9875\u9762\u4e0b\u8f7d\uff0c\u89e3\u538b\u540e\u5c06\u4ee5\u4e0b\u6587\u4ef6\u653e\u5165\u60a8\u7684MkDocs\u9879\u76ee\u7684docs/overrides/hooks\u4e2d\uff1a https://github.com/Wcowin/mkdocs-ai-hooks/releases

    \u6216\u8005\u4e0b\u8f7d\u4e0a\u65b9hooks\u76ee\u5f55\u4e0b\u7684\u4e24\u4e2aPython\u6587\u4ef6\uff1a

    • ai_summary.py\uff1aAI\u6458\u8981\u751f\u6210\u5668

    • reading_time.py\uff1a\u9605\u8bfb\u65f6\u95f4\u7edf\u8ba1\u5668

    # \u653e\u7f6e\u5230\u60a8\u7684\u9879\u76ee\u76ee\u5f55\nmkdir -p docs/overrides/hooks/\nmv ai_summary.py docs/overrides/hooks/\nmv reading_time.py docs/overrides/hooks/\n
    \u653e\u7f6e\u7684\u4f4d\u7f6e\u5982\u4e0b\uff1a

    \u5728 mkdocs.yml \u4e2dtheme\u4e0b\u6dfb\u52a0custom_dir\uff1a

    # \u53ef\u9009\uff1aMaterial\u4e3b\u9898\u914d\u7f6e\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u4e00\u5b9a\u8981\u6709\uff01\u4e00\u5b9a\u8981\u6709\uff01\n  features:\n    - content.code.copy\n    - content.code.select\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#2","title":"\u65b9\u6cd52","text":"

    \u4f7f\u7528Git\u514b\u9686

    git clone  https://github.com/Wcowin/mkdocs-ai-hooks.git\ncd mkdocs-ai-hooks \npip install -r requirements.txt\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_5","title":"\u4f9d\u8d56\u5b89\u88c5","text":"
    pip install requirements.txt\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_6","title":"\ud83d\ude80 \u5feb\u901f\u5f00\u59cb","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#1-mkdocs","title":"1. \u914d\u7f6eMkDocs","text":"

    \u5148\u6267\u884c\u4e00\u6b21mkdocs build\uff0c\u751f\u6210\u7f13\u5b58\u6587\u4ef6

    mkdocs build \n
    \u5728 mkdocs.yml \u4e2d\u6dfb\u52a0hooks\uff0ctheme\u4e0b\u6dfb\u52a0custom_dir\uff1a
    hooks:\n  - docs/overrides/hooks/ai_summary.py # \u6dfb\u52a0AI\u6458\u8981hook\n  - docs/overrides/hooks/reading_time.py # \u6dfb\u52a0\u7edf\u8ba1\u9605\u8bfb\u65f6\u95f4hook\n\n# \u53ef\u9009\uff1aMaterial\u4e3b\u9898\u914d\u7f6e\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u4e00\u5b9a\u8981\u6709\uff01\uff01\n  features:\n    - content.code.copy\n    - content.code.select\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#2-ai_summarypyai","title":"2. \u5728ai_summary.py\u4e2d\u914d\u7f6e\u9700\u8981AI\u6458\u8981\u7684\u76ee\u5f55","text":"
    # \ud83d\udcc2 \u53ef\u81ea\u5b9a\u4e49\u7684\u6587\u4ef6\u5939\u914d\u7f6e\nself.enabled_folders = [\n    'blog/',      # blog\u6587\u4ef6\u5939\n    'develop/',   # develop\u6587\u4ef6\u5939\n    # \u5728\u8fd9\u91cc\u6dfb\u52a0\u60a8\u60f3\u8981\u542f\u7528AI\u6458\u8981\u7684\u6587\u4ef6\u5939\n]\n\n# \ud83d\udccb \u6392\u9664\u7684\u6587\u4ef6\u548c\u6587\u4ef6\u5939\nself.exclude_patterns = [\n    'waline.md', 'link.md', '404.md', 'tag.md', 'tags.md',\n    '/about/', '/search/', '/sitemap', 'index.md',  # \u6839\u76ee\u5f55index.md\n]\n\n# \ud83d\udccb \u6392\u9664\u7684\u7279\u5b9a\u6587\u4ef6\nself.exclude_files = [\n    'blog/index.md',\n    'blog/indexblog.md',\n    'docs/index.md',\n    'develop/index.md',\n]\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#3-ai_summarypydeepseek-apiopenai","title":"3. \u5728ai_summary.py\u4e2d\u8bbe\u7f6eDeepSeek API(\u9ed8\u8ba4\u662fOpenAI)","text":"
    # \u5728ai_summary.py\u4e2d\u4fee\u6539API\u914d\u7f6e\n'deepseek': {\n    'url': 'https://api.deepseek.com/v1/chat/completions',\n    'model': 'deepseek-chat',\n    'api_key': os.getenv('DEEPSEEK_API_KEY', 'your-azure-api-key'),\n    'max_tokens': 150,\n    'temperature': 0.3\n},\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#4-mkdocs","title":"4. \u8fd0\u884cMkDocs","text":"

    \u7b2c\u4e00\u6b21\u8fd0\u884c\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\uff0c\u56e0\u4e3a\u7cfb\u7edf\u4f1a\u81ea\u52a8\u751f\u6210\u6458\u8981\u3002\u540e\u7eed\u8fd0\u884c\u65f6\uff0c\u7cfb\u7edf\u4f1a\u4f7f\u7528\u7f13\u5b58\u6570\u636e\uff0c\u52a0\u5feb\u751f\u6210\u901f\u5ea6\u3002

    #\u4f9d\u6b21\u8fd0\u884c\u547d\u4ee4\nmkdocs build \nmkdocs serve\n
    \u7ec8\u7aef\u8f93\u51fa\u5982\u4e0b\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_7","title":"\ud83d\udcd6 \u4f7f\u7528\u6307\u5357","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai_1","title":"AI\u6458\u8981\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_8","title":"\u6587\u4ef6\u5939\u7ea7\u522b\u63a7\u5236","text":"
    # \u542f\u7528\u7279\u5b9a\u6587\u4ef6\u5939\nconfigure_ai_summary(['blog/', 'docs/', 'tutorials/'])\n\n# \u5168\u5c40\u542f\u7528\uff08\u9664\u6392\u9664\u9879\uff09\nconfigure_ai_summary([''])\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_9","title":"\u9875\u9762\u7ea7\u522b\u63a7\u5236(\u63a8\u8350)","text":"

    \u5728Markdown\u6587\u4ef6\u7684YAML front matter\u4e2d\uff1a

    ---\ntitle: \u6587\u7ae0\u6807\u9898\nai_summary: true   # \u542f\u7528AI\u6458\u8981\n---\n
    ---\ntitle: \u6587\u7ae0\u6807\u9898\nai_summary: false  # \u7981\u7528AI\u6458\u8981\ndescription: \u624b\u52a8\u6458\u8981  # \u53ef\u9009\n---\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_10","title":"\u9605\u8bfb\u65f6\u95f4\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_11","title":"\u6392\u9664\u7279\u5b9a\u9875\u9762","text":"
    # \u5728\u9875\u9762\u7684YAML front matter\u4e2d\n---\ntitle: \u9875\u9762\u6807\u9898\nhide_reading_time: true  # \u9690\u85cf\u9605\u8bfb\u65f6\u95f4\n---\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_12","title":"\ud83c\udfa8 \u663e\u793a\u6548\u679c","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai_2","title":"AI\u6458\u8981\u663e\u793a","text":"
    !!! info \"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981\"\n    \u672c\u6587\u8be6\u7ec6\u4ecb\u7ecd\u4e86MkDocs hooks\u7684\u5f00\u53d1\u548c\u4f7f\u7528\u65b9\u6cd5\uff0c\u6db5\u76d6AI\u6458\u8981\u751f\u6210\u3001\u9605\u8bfb\u65f6\u95f4\u7edf\u8ba1\u7b49\u529f\u80fd\u5b9e\u73b0\u3002\u901a\u8fc7DeepSeek API\u96c6\u6210\u548c\u667a\u80fd\u7f13\u5b58\u673a\u5236\uff0c\u4e3a\u6280\u672f\u6587\u6863\u63d0\u4f9b\u81ea\u52a8\u5316\u7684\u5185\u5bb9\u589e\u5f3a\u670d\u52a1\u3002\n\n# \u60a8\u7684\u6587\u7ae0\u6807\u9898\n\u6587\u7ae0\u5185\u5bb9...\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_13","title":"\u9605\u8bfb\u4fe1\u606f\u663e\u793a","text":"
    !!! info \"\ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f\"\n    \u9605\u8bfb\u65f6\u95f4\uff1a**3** \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a**1247** | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a**45**\n\n# \u60a8\u7684\u6587\u7ae0\u6807\u9898\n\u6587\u7ae0\u5185\u5bb9...\n

    \u5b9e\u9645\u6548\u679c\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#api","title":"API\u82b1\u8d39","text":"

    \u4e00\u6b21\u5927\u7ea60.03-0.05\u5143\uff08\u4e2d\u5927\u578b\u6587\u6863\uff09 \u53ef\u4ee5\u8bf4\u76f8\u5f53\u7ecf\u6d4e\u5b9e\u60e0\u4e86\uff01

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#openai","title":"\u514d\u8d39openai\u989d\u5ea6\u83b7\u53d6","text":"

    \u63a8\u8350\u4f7f\u7528\uff1achatanywhere

    \u7533\u8bf7\u597d\u540e\u5f97\u5230sk-\u5f00\u5934\u7684\u5bc6\u94a5\uff0c\u5728ai_summary.py\u7684\u591aAI\u670d\u52a1\u914d\u7f6e\u90e8\u5206\u66ff\u6362\u4e3a\u4ee5\u4e0b\u5185\u5bb9\uff1a

    'openai': {\n    'url': 'https://api.chatanywhere.tech/v1/chat/completions',\n    'model': 'gpt-3.5-turbo',  # \u6216 'gpt-4', 'gpt-4-turbo'\n    'api_key': os.getenv('OPENAI_API_KEY', 'your_openai_api_key'),\n    'max_tokens': 150,\n    'temperature': 0.3\n},\n
    # \u9ed8\u8ba4\u4f7f\u7528\u7684AI\u670d\u52a1\nself.default_service = 'openai'\n

    \u4f46\u662f\u6211\u8fd9\u91cc\u4e5f\u63a8\u8350\u4f7f\u7528DeepSeek API\uff0c\u989d\u5ea6\u5145\u8db3\u4e14\u6027\u80fd\u4f18\u79c0\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_14","title":"\u2699\ufe0f \u9ad8\u7ea7\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#api_1","title":"\u81ea\u5b9a\u4e49API\u670d\u52a1","text":"
    # \u652f\u6301\u5176\u4ed6AI\u670d\u52a1\nself.api_config = {\n    'url': 'https://your-api-endpoint.com/v1/chat/completions',\n    'model': 'your-model',\n    'headers': {\n        'Content-Type': 'application/json',\n        'Authorization': 'Bearer YOUR_API_KEY'\n    }\n}\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_15","title":"\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd","text":"
    # \u4fee\u6539AI\u6458\u8981\u7684\u63d0\u793a\u8bcd\ndef generate_ai_summary(self, content, page_title=\"\"):\n    prompt = f\"\"\"\u60a8\u7684\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd...\n\n    \u6587\u7ae0\u6807\u9898\uff1a{page_title}\n    \u6587\u7ae0\u5185\u5bb9\uff1a{content[:2500]}\n    \"\"\"\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_16","title":"\u7f13\u5b58\u914d\u7f6e","text":"

    # \u4fee\u6539\u7f13\u5b58\u8fc7\u671f\u65f6\u95f4\uff08\u5929\u6570\uff09\ncache_time = datetime.fromisoformat(cache_data.get('timestamp', '1970-01-01'))\nif (datetime.now() - cache_time).days < 30:  # \u6539\u4e3a30\u5929\n    return cache_data\n
    \u6ce8\u610f\u6ce8\u610f\u6ce8\u610f\uff01\uff01\uff01 \u5207\u6362api\u670d\u52a1\u540e\uff0c\u8981\u5220\u9664site/.ai_cache\u8fd9\u4e2a\u7f13\u5b58\u6587\u4ef6\uff0c\u624d\u53ef\u4ee5\u91cd\u65b0\u751f\u6210\u6458\u8981\uff01\uff01\uff01(\u8fd9\u4e2a\u95ee\u9898\u5df2\u7ecf\u89e3\u51b3\u4e86\uff0c\u5207\u6362api\u670d\u52a1\u540e\uff0c\u4f1a\u81ea\u52a8\u5220\u9664\u7f13\u5b58\u6587\u4ef6\uff0c\u65e0\u9700\u624b\u52a8\u5220\u9664)

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#star-history","title":"Star History","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_17","title":"\u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561","text":"

    \u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u5b83\u4e00\u4e2a \u2b50 Star\uff01

    \ud83d\udcdd \u672c\u9879\u76ee\u81f4\u529b\u4e8e\u8ba9MkDocs\u6587\u6863\u66f4\u52a0\u667a\u80fd\u5316\u548c\u7528\u6237\u53cb\u597d\u3002\u5982\u6709\u5efa\u8bae\u6216\u60f3\u6cd5\uff0c\u6b22\u8fce\u4ea4\u6d41\uff01","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/","title":"\u76f8\u5bf9\u5730\u5740\u7684\u4e00\u4e9b\u95ee\u9898","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u63a2\u8ba8\u4e86MkDocs\u4e2d\u4f7f\u7528\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u8d44\u6e90\u65f6\u7684\u5e38\u89c1\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6848\uff0c\u6db5\u76d6\u56fe\u7247\u3001PDF\u3001\u8de8\u9875\u9762\u53ca\u9759\u6001\u8d44\u6e90\u7684\u5f15\u7528\u65b9\u6cd5\u3002\u91cd\u70b9\u5206\u6790\u4e86\u8def\u5f84\u89c4\u8303\u3001\u5927\u5c0f\u5199\u654f\u611f\u6027\u548c\u76ee\u5f55\u7ed3\u6784\u7ba1\u7406\uff0c\u5f3a\u8c03\u4ee5\u5f53\u524dMarkdown\u6587\u4ef6\u4e3a\u57fa\u51c6\u7684\u76f8\u5bf9\u8def\u5f84\u5199\u6cd5\uff0c\u786e\u4fdd\u672c\u5730\u9884\u89c8\u4e0e\u7ebf\u4e0a\u90e8\u7f72\u4e00\u81f4\u6027\u3002\u63d0\u4f9b\u4e86\u9488\u5bf9\u8def\u5f84\u9519\u8bef\u3001\u8d44\u6e90\u52a0\u8f7d\u5931\u8d25\u7b49\u95ee\u9898\u7684\u6392\u67e5\u5efa\u8bae\uff0c\u63a8\u8350\u7edf\u4e00\u8d44\u6e90\u76ee\u5f55\u7ed3\u6784\u4ee5\u63d0\u5347\u7ef4\u62a4\u6027\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a493 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a3

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#mkdocs","title":"\u9488\u5bf9MKdocs\u4e2d\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u4e00\u4e9b\u95ee\u9898","text":"

    \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u6587\u6863\u7f51\u7ad9\u65f6\uff0c\u5e38\u5e38\u4f1a\u9047\u5230\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u95ee\u9898\uff0c\u5c24\u5176\u662f\u5728\u56fe\u7247\u3001PDF\u3001\u5176\u4ed6\u9759\u6001\u8d44\u6e90\u7b49\u7684\u5f15\u7528\u4e0a\u3002\u5408\u7406\u4f7f\u7528\u76f8\u5bf9\u5730\u5740\u53ef\u4ee5\u8ba9\u4f60\u7684\u6587\u6863\u5728\u672c\u5730\u9884\u89c8\u548c\u7ebf\u4e0a\u90e8\u7f72\u65f6\u90fd\u80fd\u6b63\u5e38\u663e\u793a\u3002\u4e0b\u9762\u603b\u7ed3\u4e00\u4e9b\u5e38\u89c1\u573a\u666f\u548c\u6ce8\u610f\u4e8b\u9879\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#1","title":"1. \u56fe\u7247\u5f15\u7528","text":"

    \u63a8\u8350\u5199\u6cd5\uff1a

    ![\u56fe\u7247\u63cf\u8ff0](./img/example.png)\n
    ./img/example.png \u8868\u793a\u5f53\u524d Markdown \u6587\u4ef6\u540c\u7ea7\u76ee\u5f55\u4e0b\u7684 img \u6587\u4ef6\u5939\u4e2d\u7684\u56fe\u7247\u3002 \u5982\u679c\u56fe\u7247\u5728\u4e0a\u7ea7\u76ee\u5f55\uff1a../assets/example.png

    \u6ce8\u610f\u4e8b\u9879\uff1a

    • \u8def\u5f84\u533a\u5206\u5927\u5c0f\u5199\uff0c\u786e\u4fdd\u6587\u4ef6\u540d\u548c\u8def\u5f84\u4e00\u81f4\u3002
    • MkDocs \u4f1a\u5c06 docs \u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u539f\u6837\u590d\u5236\u5230\u7ad9\u70b9\u6839\u76ee\u5f55\uff0c\u5f15\u7528\u8def\u5f84\u5e94\u4ee5 docs \u4e3a\u6839\u76ee\u5f55\u8fdb\u884c\u76f8\u5bf9\u5b9a\u4f4d\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#2-pdf","title":"2. PDF \u6587\u4ef6\u5f15\u7528","text":"

    \u5185\u5d4c\u6216\u4e0b\u8f7d PDF\uff1a

    [\u67e5\u770bPDF](./files/example.pdf)\n

    \u6216\u4f7f\u7528 HTML \u65b9\u5f0f\u5185\u5d4c\uff1a

    <embed src=\"./files/example.pdf\" width=\"100%\" height=\"600px\" type=\"application/pdf\">\n

    ./files/example.pdf \u8868\u793a\u5f53\u524d\u6587\u6863\u540c\u7ea7\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002 ../files/example.pdf \u8868\u793a\u4e0a\u7ea7\u76ee\u5f55\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002 ../../files/example.pdf \u8868\u793a\u4e0a\u4e0a\u7ea7\u76ee\u5f55\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#3","title":"3. \u8de8\u9875\u9762\u5f15\u7528","text":"

    \u5f15\u7528\u540c\u4e00\u9879\u76ee\u4e0b\u7684\u5176\u4ed6 Markdown \u9875\u9762\uff1a

    [\u8df3\u8f6c\u5230\u5176\u4ed6\u9875\u9762](../otherpage.md)\n

    • MkDocs \u4f1a\u81ea\u52a8\u5c06 .md \u8f6c\u6362\u4e3a .html\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u7528 Markdown \u6587\u4ef6\u540d\u3002
    • \uff08\uff09\u5185\u7684\u8def\u5f84\u662f\u76f8\u5bf9\u4e8e\u5f53\u524d Markdown \u6587\u4ef6\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u53c2\u8003PDF\u6587\u4ef6\u5f15\u7528\u7684\u65b9\u6cd5\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#4","title":"4. \u9759\u6001\u8d44\u6e90\u5f15\u7528","text":"

    \u5982 CSS\u3001JS \u6587\u4ef6\uff1a

    <link rel=\"stylesheet\" href=\"../assets/style.css\">\n<script src=\"../assets/script.js\"></script>\n

    • \u63a8\u8350\u5c06\u9759\u6001\u8d44\u6e90\u653e\u5728 docs/assets \u76ee\u5f55\u4e0b\uff0c\u5f15\u7528\u65f6\u7528\u76f8\u5bf9\u8def\u5f84\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#5","title":"5. \u5e38\u89c1\u95ee\u9898","text":"
    • \u8def\u5f84\u9519\u8bef\u5bfc\u81f4\u8d44\u6e90\u65e0\u6cd5\u52a0\u8f7d\uff1a\u8bf7\u68c0\u67e5\u8def\u5f84\u662f\u5426\u6b63\u786e\u3001\u6587\u4ef6\u662f\u5426\u5b58\u5728\u3001\u5927\u5c0f\u5199\u662f\u5426\u4e00\u81f4\u3002
    • \u672c\u5730\u9884\u89c8\u6b63\u5e38\uff0c\u7ebf\u4e0a\u4e0d\u663e\u793a\uff1a\u6709\u53ef\u80fd\u662f\u8def\u5f84\u5199\u6b7b\u6216\u5927\u5c0f\u5199\u95ee\u9898\uff0c\u5efa\u8bae\u59cb\u7ec8\u7528\u76f8\u5bf9\u8def\u5f84\u3002
    • \u56fe\u7247/\u6587\u4ef6\u8fc7\u5927\u52a0\u8f7d\u6162\uff1a\u53ef\u9002\u5f53\u538b\u7f29\u56fe\u7247\u6216 PDF \u6587\u4ef6\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#_1","title":"\u603b\u7ed3","text":"

    \u5728 MkDocs \u9879\u76ee\u4e2d\uff0c\u6240\u6709\u8d44\u6e90\u7684\u76f8\u5bf9\u8def\u5f84\u90fd\u5e94\u4ee5\u5f53\u524d Markdown \u6587\u4ef6\u4e3a\u57fa\u51c6\uff0c\u786e\u4fdd\u672c\u5730\u548c\u7ebf\u4e0a\u90fd\u80fd\u6b63\u786e\u8bbf\u95ee\u3002\u5efa\u8bae\u7edf\u4e00\u8d44\u6e90\u7ba1\u7406\u76ee\u5f55\u7ed3\u6784\uff0c\u4fbf\u4e8e\u7ef4\u62a4\u548c\u5f15\u7528\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/","title":"\u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u4ecb\u7ecd\u4e86\u4f7f\u7528MkDocs\u6784\u5efa\u7f51\u7ad9\u65f6\u7684\u6027\u80fd\u4f18\u5316\u65b9\u6cd5\uff0c\u5305\u62ec\u91c7\u7528WebP\u7b49\u9ad8\u6548\u56fe\u7247\u683c\u5f0f\u538b\u7f29\u8d44\u6e90\u3001\u901a\u8fc7CDN\u5206\u53d1\u9759\u6001\u6587\u4ef6\u51cf\u5c11\u5ef6\u8fdf\uff0c\u4ee5\u53ca\u4f18\u5316git\u63d2\u4ef6\u914d\u7f6e\u52a0\u901f\u672c\u5730\u6e32\u67d3\u3002\u5efa\u8bae\u5f00\u53d1\u65f6\u7981\u7528\u975e\u5fc5\u8981\u63d2\u4ef6\uff0c\u4f7f\u7528Lighthouse\u5de5\u5177\u6d4b\u8bd5\u4f18\u5316\u6548\u679c\u3002\u8fd9\u4e9b\u63aa\u65bd\u80fd\u663e\u8457\u63d0\u5347\u7f51\u7ad9\u52a0\u8f7d\u901f\u5ea6\u548c\u7528\u6237\u4f53\u9a8c\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a257 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a6

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#_1","title":"\u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97","text":"

    \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u7f51\u7ad9\u65f6\uff0c\u4e3a\u4e86\u63d0\u9ad8\u8bbf\u95ee\u901f\u5ea6\uff0c\u6211\u4eec\u53ef\u4ee5\u91c7\u53d6\u4ee5\u4e0b\u4e00\u4e9b\u63aa\u65bd\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#1","title":"1. \u4f18\u5316\u56fe\u7247","text":"

    \u4f7f\u7528\u5408\u9002\u7684\u56fe\u7247\u683c\u5f0f\uff0c\u5982 WebP\u3001JPEG2000 \u7b49\uff0c\u51cf\u5c11\u56fe\u7247\u6587\u4ef6\u5927\u5c0f\uff0c\u4ece\u800c\u52a0\u5feb\u52a0\u8f7d\u901f\u5ea6\u3002

    \u53ef\u4ee5\u4f7f\u7528\u5728\u7ebf\u5de5\u5177\u8fdb\u884c\u56fe\u7247\u538b\u7f29\uff0c\u5982\uff1a

    • freeconvert
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#2-jscss-cdn","title":"2. JS/CSS\u4f7f\u7528 CDN","text":"

    \u4f7f\u7528\u5185\u5bb9\u5206\u53d1\u7f51\u7edc\uff08CDN\uff09\u6765\u52a0\u901f\u7f51\u7ad9\u7684\u8bbf\u95ee\uff0c\u5c06\u9759\u6001\u8d44\u6e90\uff08\u5982\u56fe\u7247\u3001CSS\u3001JS\uff09\u7f13\u5b58\u5230\u5168\u7403\u5404\u5730\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u7528\u6237\u5c31\u8fd1\u8bbf\u95ee\uff0c\u51cf\u5c11\u5ef6\u8fdf\u3002

    \u8fd9\u91cc\u63a8\u8350

    • jsDelivr CDN \u52a0\u901f GitHub \u6587\u4ef6
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#3","title":"3.\u52a0\u901f\u672c\u5730\u6e32\u67d3","text":"

    \u4f18\u5316 git \u63d2\u4ef6\u7684 enabled \u914d\u7f6e \u6bd4\u5982\u6211\u914d\u7f6e\u91cc\u6709 git-revision-date-localized \u548c git-committers \u63d2\u4ef6\uff0c\u8fd9\u4e9b\u63d2\u4ef6\u4f1a\u5728\u6bcf\u6b21\u6e32\u67d3\u65f6\u8bfb\u53d6\u6240\u6709\u6587\u4ef6\u7684 git \u5386\u53f2\uff0c\u5bfc\u81f4\u672c\u5730\u9884\u89c8\u53d8\u6162\u3002 \u63a8\u8350\u505a\u6cd5\u662f\u5728\u672c\u5730\u5f00\u53d1\u65f6\u7981\u7528\u5b83\u4eec\uff0c\u4ec5\u5728 CI/CD \u6216\u7ebf\u4e0a\u6784\u5efa\u65f6\u542f\u7528\u3002 \u5177\u4f53\u5199\u6cd5\u5982\u4e0b\uff1a

    plugins:\n  - git-revision-date-localized:\n      enabled: !ENV [CI, false]  # \u53ea\u6709\u5728CI\u73af\u5883\u53d8\u91cf\u4e3atrue\u65f6\u624d\u542f\u7528\n  - git-committers:\n      enabled: !ENV [CI, false]\n

    \u68c0\u9a8c\u52a0\u901f\u6548\u679c\u662f\u5426\u751f\u6548\u53ef\u4ee5\u4f7f\u7528lighthouse\u8fdb\u884c\u6d4b\u8bd5\uff0c\u5177\u4f53\u53ef\u4ee5\u53c2\u8003\uff1a

    \u4f7f\u7528lighthouse\u8fdb\u884c\u7f51\u7ad9\u6027\u80fd\u6d4b\u8bd5

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/","title":"\u80cc\u666f\u7279\u6548","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u6280\u672f\u6587\u6863\u4ecb\u7ecd\u4e86\u4e09\u79cd\u7f51\u9875\u80cc\u666f\u7279\u6548\u7684\u5b9e\u73b0\u65b9\u6cd5\uff1a\u96ea\u82b1\u3001\u6a31\u82b1\u548c\u7c92\u5b50\u6548\u679c\u3002\u6838\u5fc3\u662f\u901a\u8fc7JavaScript\u52a8\u6001\u52a0\u8f7d\u7279\u6548\u811a\u672c\uff0c\u5e76\u5229\u7528LocalStorage\u63a7\u5236\u7279\u6548\u7684\u663e\u793a\u72b6\u6001\u3002\u96ea\u82b1\u7279\u6548\u901a\u8fc7\u68c0\u6d4bLocalStorage\u6807\u5fd7\u51b3\u5b9a\u662f\u5426\u52a0\u8f7d\u5916\u90e8JS\u6587\u4ef6\uff0c\u5176\u4ed6\u7279\u6548\u4e5f\u91c7\u7528\u7c7b\u4f3c\u5b9e\u73b0\u65b9\u5f0f\u3002\u8fd9\u4e9b\u8f7b\u91cf\u7ea7\u7279\u6548\u53ef\u589e\u5f3a\u7f51\u9875\u89c6\u89c9\u4f53\u9a8c\uff0c\u9002\u7528\u4e8e\u8282\u65e5\u4e3b\u9898\u6216\u88c5\u9970\u6027\u9875\u9762\u9700\u6c42\u3002

    Note

    \u4ee5\u4e0b\u4ee3\u7801\u5747\u5728docs/javascripts/extra.js\u4e0b\u590d\u5236\u7c98\u8d34

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_1","title":"\u96ea\u82b1\u2744\ufe0f","text":"
    //\u96ea\u82b1\nconst fps = 30;\nconst mspf = Math.floor(1000 / fps) ; \n\nlet width = window.innerWidth || document.documentElement.clientWidth;\nlet height = window.innerHeight || document.documentElement.clientHeight;\nlet canvas;\nwindow.addEventListener('resize', () => {\n  width = window.innerWidth || document.documentElement.clientWidth;\n  height = window.innerHeight || document.documentElement.clientHeight;\n  if (canvas) {\n    canvas.width = width;\n    canvas.height = height;\n  }\n});\n\nlet particles = [];\nlet wind = [0, 0];\nlet cursor = [0, 0];\n\nfunction velocity(r) {\n  return 70 / r + 30;\n}\n\nfunction sine_component(h, a) {\n  return [2 * Math.PI / h, Math.random() * a, Math.random() * 2 * Math.PI]; // [frequency, amplitude, phase]\n}\n\nfunction calc_sine(components, x) {\n  let sum = 0;\n  for (let i = 0; i < components.length; i++) {\n    const [f, a, p] = components[i];\n    sum += Math.sin(x * f + p) * a;\n  }\n  return sum;\n}\n\nfunction gen_particle() {\n  let r = Math.random() * 4 + 1;\n  return {\n    radius: r,\n    x: Math.random() * width,\n    y: -r,\n    opacity: Math.random(),\n    sine_components: [sine_component(height, 3), sine_component(height / 2, 2), sine_component(height / 5, 1), sine_component(height / 10, 0.5)],\n  };\n}\n\nfunction update_pos(dt) {\n  const n = particles.length;\n  for (let i = 0; i < n; i++) {\n    const v = velocity(particles[i].radius);\n    particles[i].x += calc_sine(particles[i].sine_components, particles[i].y) * v / 5 * dt;\n    particles[i].y += v * dt;\n\n    // const dist = Math.hypot(particles[i].x - cursor[0], particles[i].y - cursor[1]) + 1;\n    // particles[i].x += wind[0] * dt / dist\n    // particles[i].y += wind[1] * dt / dist;\n\n    if (particles[i].y - particles[i].radius > height) {\n      particles[i] = gen_particle();  \n    }\n  }\n}\n\nlet context_cache;\nfunction get_context() {\n  if (context_cache)\n    return context_cache;\n\n  canvas = document.createElement('canvas');\n  canvas.id = 'snow-canvas';\n  canvas.width = width;\n  canvas.height = height;\n  canvas.style = 'position: fixed; top: 0; left: 0; overflow: hidden; pointer-events: none; z-index: 256;';\n  if ((document.documentElement.dataset.darkreaderMode || \"\").startsWith('filter'))\n    canvas.style.filter = 'invert(1)';\n  document.body.appendChild(canvas);\n\n  context_cache = canvas.getContext('2d');\n  return context_cache;\n}\n\nfunction draw() {\n  const ctx = get_context();\n\n  ctx.clearRect(0, 0, width, height);\n\n  const n = particles.length;\n  for (let i = 0; i < n; i++) {\n    const p = particles[i];\n    ctx.fillStyle = `rgba(255, 255, 255, ${p.opacity})`;\n    ctx.shadowColor = '#80EDF7';\n    ctx.shadowBlur = 7;\n    ctx.beginPath();\n    ctx.arc(p.x, p.y, p.radius, 0, 2*Math.PI);\n    ctx.fill();\n  }\n}\n\nlet focused = true;\nlet disabled = false;\nlet lastTime = performance.now();\nconst requestFrame = () => setTimeout(loop, mspf);\nfunction loop() {\n  const dt = (performance.now() - lastTime) / 1000;\n\n  if (particles.length < 120 && Math.random() < 0.1) {\n    particles.push(gen_particle());\n  }\n\n  update_pos(dt);\n  draw();\n\n  lastTime = performance.now();\n  if (focused && !disabled)\n    requestFrame();\n}\n\n\nwindow.addEventListener('focus', () => {\n  console.log('snow start');\n  focused = true;\n  lastTime = performance.now();\n  requestFrame();\n});\n\nwindow.addEventListener('blur', () => {\n  console.log('snow stop');\n  focused = false;\n});\n\nwindow.addEventListener('keydown', e => {\n  if (e.ctrlKey && e.key == 's') {\n    e.preventDefault();\n    disabled = !disabled;\n    if (disabled) {\n      canvas.style.display = 'none';\n    } else {\n      canvas.style.display = 'block';\n      lastTime = performance.now();\n      requestFrame();\n    }\n  }\n});\n\nrequestFrame();\n//\u96ea\u82b1\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_2","title":"\u6a31\u82b1\ud83c\udf38","text":"
    //\u6a31\u82b1\nSakura.prototype.draw = function (cxt) {\n    cxt.save(); var xc = 40 * this.s / 4; cxt.translate(this.x, this.y); cxt.rotate(this.r); cxt.drawImage(img, 0, 0, 40 * this.s, 40 * this.s)\n    cxt.restore();\n}\nSakura.prototype.update = function () { this.x = this.fn.x(this.x, this.y); this.y = this.fn.y(this.y, this.y); this.r = this.fn.r(this.r); if (this.x > window.innerWidth || this.x < 0 || this.y > window.innerHeight || this.y < 0) { this.r = getRandom('fnr'); if (Math.random() > 0.4) { this.x = getRandom('x'); this.y = 0; this.s = getRandom('s'); this.r = getRandom('r'); } else { this.x = window.innerWidth; this.y = getRandom('y'); this.s = getRandom('s'); this.r = getRandom('r'); } } }\nSakuraList = function () { this.list = []; }\nSakuraList.prototype.push = function (sakura) { this.list.push(sakura); }\nSakuraList.prototype.update = function () { for (var i = 0, len = this.list.length; i < len; i++) { this.list[i].update(); } }\nSakuraList.prototype.draw = function (cxt) { for (var i = 0, len = this.list.length; i < len; i++) { this.list[i].draw(cxt); } }\nSakuraList.prototype.get = function (i) { return this.list[i]; }\nSakuraList.prototype.size = function () { return this.list.length; }\nfunction getRandom(option) {\n    var ret, random; switch (option) {\n        case 'x': ret = Math.random() * window.innerWidth; break; case 'y': ret = Math.random() * window.innerHeight; break; case 's': ret = Math.random(); break; case 'r': ret = Math.random() * 6; break; case 'fnx': random = -0.5 + Math.random() * 1; ret = function (x, y) { return x + 0.5 * random - 1.7; }; break; case 'fny': random = 1.5 + Math.random() * 0.7\n            ret = function (x, y) { return y + random; }; break; case 'fnr': random = Math.random() * 0.03; ret = function (r) { return r + random; }; break;\n    }\n    return ret;\n}\nfunction startSakura() {\n    requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame; var canvas = document.createElement('canvas'), cxt; staticx = true; canvas.height = window.innerHeight; canvas.width = window.innerWidth; canvas.setAttribute('style', 'position: fixed;left: 0;top: 0;pointer-events: none;'); canvas.setAttribute('id', 'canvas_sakura'); document.getElementsByTagName('body')[0].appendChild(canvas); cxt = canvas.getContext('2d'); var sakuraList = new SakuraList(); for (var i = 0; i < 50; i++) { var sakura, randomX, randomY, randomS, randomR, randomFnx, randomFny; randomX = getRandom('x'); randomY = getRandom('y'); randomR = getRandom('r'); randomS = getRandom('s'); randomFnx = getRandom('fnx'); randomFny = getRandom('fny'); randomFnR = getRandom('fnr'); sakura = new Sakura(randomX, randomY, randomS, randomR, { x: randomFnx, y: randomFny, r: randomFnR }); sakura.draw(cxt); sakuraList.push(sakura); }\n    stop = requestAnimationFrame(function () { cxt.clearRect(0, 0, canvas.width, canvas.height); sakuraList.update(); sakuraList.draw(cxt); stop = requestAnimationFrame(arguments.callee); })\n}\nwindow.onresize = function () { var canvasSnow = document.getElementById('canvas_snow'); }\nimg.onload = function () { startSakura(); }\n//\u6a31\u82b1\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_3","title":"\u7ebf\u6761","text":"
    !function() {\n    function o(w, v, i) {\n        return w.getAttribute(v) || i\n    }\n    function j(i) {\n        return document.getElementsByTagName(i)\n    }\n    function l() {\n        var i = j(\"script\"),\n        w = i.length,\n        v = i[w - 1];\n        return {\n            l: w,\n            z: o(v, \"zIndex\", -1),\n            o: o(v, \"opacity\", 0.5),\n            c: o(v, \"color\", \"0,0,0\"),\n            n: o(v, \"count\", 99)\n        }\n    }\n    function k() {\n        r = u.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n        n = u.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n    }\n    function b() {\n        e.clearRect(0, 0, r, n);\n        var w = [f].concat(t);\n        var x, v, A, B, z, y;\n        t.forEach(function(i) {\n            i.x += i.xa,\n            i.y += i.ya,\n            i.xa *= i.x > r || i.x < 0 ? -1 : 1,\n            i.ya *= i.y > n || i.y < 0 ? -1 : 1,\n            e.fillRect(i.x - 0.5, i.y - 0.5, 1, 1);\n            for (v = 0; v < w.length; v++) {\n                x = w[v];\n                if (i !== x && null !== x.x && null !== x.y) {\n                    B = i.x - x.x,\n                    z = i.y - x.y,\n                    y = B * B + z * z;\n                    y < x.max && (x === f && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), A = (x.max - y) / x.max, e.beginPath(), e.lineWidth = A / 2, e.strokeStyle = \"rgba(\" + s.c + \",\" + (A + 0.2) + \")\", e.moveTo(i.x, i.y), e.lineTo(x.x, x.y), e.stroke())\n                }\n            }\n            w.splice(w.indexOf(i), 1)\n        }),\n        m(b)\n    }\n    var u = document.createElement(\"canvas\"),\n    s = l(),\n    c = \"c_n\" + s.l,\n    e = u.getContext(\"2d\"),\n    r,\n    n,\n    m = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||\n    function(i) {\n        window.setTimeout(i, 1000 / 45)\n    },\n    a = Math.random,\n    f = {\n        x: null,\n        y: null,\n        max: 20000\n    };\n    u.id = c;\n    u.style.cssText = \"position:fixed;top:0;left:0;z-index:\" + s.z + \";opacity:\" + s.o;\n    j(\"body\")[0].appendChild(u);\n    k(),\n    window.onresize = k;\n    window.onmousemove = function(i) {\n        i = i || window.event,\n        f.x = i.clientX,\n        f.y = i.clientY\n    },\n    window.onmouseout = function() {\n        f.x = null,\n        f.y = null\n    };\n    for (var t = [], p = 0; s.n > p; p++) {\n        var h = a() * r,\n        g = a() * n,\n        q = 2 * a() - 1,\n        d = 2 * a() - 1;\n        t.push({\n            x: h,\n            y: g,\n            xa: q,\n            ya: d,\n            max: 6000\n        })\n    }\n    setTimeout(function() {\n        b()\n    },\n    100)\n} ();\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_4","title":"\u7c92\u5b50","text":"
    /*\u80cc\u666f*/\nwindow.onload = function () {\n    //\u5b9a\u4e49body\u7684margin\u7531\u9ed8\u8ba4\u503c8px->0px\n    document.body.style.margin = \"0\";\n    document.body.style.background = \"255,255,255\";\n    //\u521b\u5efacanvas\u753b\u5e03\n    document.body.appendChild(document.createElement('canvas'));\n    var canvas = document.querySelector('canvas'),\n        ctx = canvas.getContext('2d') //ctx\u8fd4\u56de\u4e00\u4e2a\u5728canvas\u4e0a\u753b\u56fe\u7684api/dom\n    canvas.width = window.innerWidth;\n    canvas.height = window.innerHeight;\n    canvas.style.position = 'fixed';\n    ctx.lineWidth = .3;\n    ctx.strokeStyle = (new Color(150)).style;\n    //\u5b9a\u4e49\u9f20\u6807\u8986\u76d6\u8303\u56f4\n    var mousePosition = {\n        x: 30 * canvas.width / 100,\n        y: 30 * canvas.height / 100\n    };\n    var dots = {\n        nb: 1000,//Dot\u7684\u603b\u6570\n        distance: 50,\n        d_radius: 100,\n        array: []\n    };\n    //\u521b\u5efa\u989c\u8272\u7c7b\uff0cColor\u7c7b\u8fd4\u56de\u5b57\u7b26\u4e32\u578brgba\uff08*,*,*,.8\uff09\n    function mixComponents(comp1, weight1, comp2, weight2) {\n        return (comp1 * weight1 + comp2 * weight2) / (weight1 + weight2);\n    }\n    function averageColorStyles(dot1, dot2) {\n        var color1 = dot1.color,\n            color2 = dot2.color;\n\n        var r = mixComponents(color1.r, dot1.radius, color2.r, dot2.radius),\n            g = mixComponents(color1.g, dot1.radius, color2.g, dot2.radius),\n            b = mixComponents(color1.b, dot1.radius, color2.b, dot2.radius);\n        return createColorStyle(Math.floor(r), Math.floor(g), Math.floor(b));\n    }\n    function colorValue(min) {\n        return Math.floor(Math.random() * 255 + min);\n    }\n    function createColorStyle(r, g, b) {\n        return 'rgba(' + r + ',' + g + ',' + b + ', 0.8)';\n    }\n    function Color(min) {\n        min = min || 0;\n        this.r = colorValue(min);\n        this.g = colorValue(min);\n        this.b = colorValue(min);\n        this.style = createColorStyle(this.r, this.g, this.b);\n    }\n    //\u521b\u5efaDot\u7c7b\u4ee5\u53ca\u4e00\u7cfb\u5217\u65b9\u6cd5\n    function Dot() {\n        this.x = Math.random() * canvas.width;\n        this.y = Math.random() * canvas.height;\n\n        this.vx = -.5 + Math.random();\n        this.vy = -.5 + Math.random();\n\n        this.radius = Math.random() * 2;\n\n        this.color = new Color();\n    }\n\n    Dot.prototype = {\n        draw: function () {\n            ctx.beginPath();\n            ctx.fillStyle = this.color.style;\n            ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, false);\n            ctx.fill();\n        }\n    };\n    function moveDots() {//Dot\u5bf9\u8c61\u7684\u79fb\u52a8\n        for (i = 0; i < dots.nb; i++) {\n\n            var dot = dots.array[i];\n\n            if (dot.y < 0 || dot.y > canvas.height) {\n                dot.vx = dot.vx;\n                dot.vy = - dot.vy;\n            }\n            else if (dot.x < 0 || dot.x > canvas.width) {\n                dot.vx = - dot.vx;\n                dot.vy = dot.vy;\n            }\n            dot.x += dot.vx;\n            dot.y += dot.vy;\n        }\n    }\n    function connectDots() {//DOt\u5bf9\u8c61\u7684\u8fde\u63a5\n        for (i = 0; i < dots.nb; i++) {\n            for (j = i; j < dots.nb; j++) {\n                i_dot = dots.array[i];\n                j_dot = dots.array[j];\n\n                if ((i_dot.x - j_dot.x) < dots.distance && (i_dot.y - j_dot.y) < dots.distance && (i_dot.x - j_dot.x) > - dots.distance && (i_dot.y - j_dot.y) > - dots.distance) {\n                    if ((i_dot.x - mousePosition.x) < dots.d_radius && (i_dot.y - mousePosition.y) < dots.d_radius && (i_dot.x - mousePosition.x) > - dots.d_radius && (i_dot.y - mousePosition.y) > - dots.d_radius) {\n                        ctx.beginPath();\n                        ctx.strokeStyle = averageColorStyles(i_dot, j_dot);\n                        ctx.moveTo(i_dot.x, i_dot.y);\n                        ctx.lineTo(j_dot.x, j_dot.y);\n                        ctx.stroke();//\u7ed8\u5236\u5b9a\u4e49\u7684\u8def\u7ebf\n                        ctx.closePath();//\u521b\u5efa\u4ece\u5f53\u524d\u70b9\u56de\u5230\u8d77\u59cb\u70b9\u7684\u8def\u5f84\n                    }\n                }\n            }\n        }\n    }\n    function createDots() {//\u521b\u5efanb\u4e2aDot\u5bf9\u8c61\n        for (i = 0; i < dots.nb; i++) {\n            dots.array.push(new Dot());\n        }\n    }\n    function drawDots() {//\u5f15\u7528Dot\u539f\u578b\u94fe\uff0c\u4f7f\u7528draw\u65b9\u6cd5\uff0c\u5728canvas\u4e0a\u753b\u51faDot\u5bf9\u8c61\n        for (i = 0; i < dots.nb; i++) {\n            var dot = dots.array[i];\n            dot.draw();\n        }\n    }\n    function animateDots() {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);//\u6e05\u9664\u753b\u5e03\uff0c\u5426\u5219\u7ebf\u6761\u4f1a\u8fde\u5728\u4e00\u8d77\n        moveDots();\n        connectDots();\n        drawDots();\n        requestAnimationFrame(animateDots);\n    }\n    createDots();//\u4f7f\u7528\u521b\u5efaDot\u7c7b\u51fd\u6570\n    requestAnimationFrame(animateDots);//\u4f7f\u7528canvas\u72ec\u6709\u768460Hz\u5237\u65b0\u5c4f\u5e55\u753b\u5e03\u7684\u65b9\u6cd5\n\n    document.querySelector('canvas').addEventListener('mousemove', function (e) {\n        mousePosition.x = e.pageX;\n        mousePosition.y = e.pageY;\n    })\n\n    document.querySelector('canvas').addEventListener('mouseleave', function (e) {//\u9f20\u6807\u79bb\u5f00\u65f6\uff0c\u8fde\u63a5\u81ea\u52a8\u8fd4\u56de\u5230\u753b\u5e03\u4e2d\u5fc3\n        mousePosition.x = canvas.width / 2;\n        mousePosition.y = canvas.height / 2;\n    })\n\n}\n\n/*\u80cc\u666fend*/\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/","title":"\u9875\u811a\u8bbe\u7f6e","text":"

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a60 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a89

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/#_1","title":"\u9875\u811a\u8bbe\u7f6e","text":"

    MkDocs \u652f\u6301\u81ea\u5b9a\u4e49\u9875\u811a\u3002

    \u5728docs/overrides/partials/footer.html\u4e2d\uff08\u6ca1\u6709\u8be5\u6587\u4ef6\u65f6\uff0c\u521b\u5efafooter.html\u6587\u4ef6\uff09\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a

    <!-- Footer -->\n<footer class=\"md-footer\">\n\n  <!-- Link to previous and/or next page -->\n  {% if \"navigation.footer\" in features %}\n    {% if page.previous_page or page.next_page %}\n      {% if page.meta and page.meta.hide %}\n        {% set hidden = \"hidden\" if \"footer\" in page.meta.hide %}\n      {% endif %}\n      <nav\n        class=\"md-footer__inner md-grid\"\n        aria-label=\"{{ lang.t('footer') }}\"\n        {{ hidden }}\n      >\n\n        <!-- Link to previous page -->\n        {% if page.previous_page %}\n          {% set direction = lang.t(\"footer.previous\") %}\n          <a\n            href=\"{{ page.previous_page.url | url }}\"\n            class=\"md-footer__link md-footer__link--prev\"\n            aria-label=\"{{ direction }}: {{ page.previous_page.title | e }}\"\n          >\n            <div class=\"md-footer__button md-icon\">\n              {% set icon = config.theme.icon.previous or \"material/arrow-left\" %}\n              {% include \".icons/\" ~ icon ~ \".svg\" %}\n            </div>\n            <div class=\"md-footer__title\">\n              <span class=\"md-footer__direction\">\n                {{ direction }}\n              </span>\n              <div class=\"md-ellipsis\">\n                {{ page.previous_page.title }}\n              </div>\n            </div>\n\n          </a>\n        {% endif %}\n\n        <!-- Link to next page -->\n        {% if page.next_page %}\n          {% set direction = lang.t(\"footer.next\") %}\n          <a\n            href=\"{{ page.next_page.url | url }}\"\n            class=\"md-footer__link md-footer__link--next\"\n            aria-label=\"{{ direction }}: {{ page.next_page.title | e }}\"\n          >\n            <div class=\"md-footer__title\">\n              <span class=\"md-footer__direction\">\n                {{ direction }}\n              </span>\n              <div class=\"md-ellipsis\">\n                {{ page.next_page.title }}\n              </div>\n            </div>\n            <div class=\"md-footer__button md-icon\">\n              {% set icon = config.theme.icon.next or \"material/arrow-right\" %}\n              {% include \".icons/\" ~ icon ~ \".svg\" %}\n            </div>\n          </a>\n        {% endif %}\n      </nav>\n    {% endif %}\n  {% endif %}\n\n  <!-- Further information -->\n  <div class=\"md-footer-meta md-typeset\">\n    <div class=\"md-footer-meta__inner md-grid\">\n      {% include \"partials/copyright.html\" %}\n\n    <font color=\"#B9B9B9\">\n      <div class=\"footer-visit-count\" style=\"display: flex; justify-content: center; align-items: center;\">\n    \u672c\u7ad9\u8bbf\u95ee\u91cf\uff1a<script async src=\"//finicounter.eu.org/finicounter.js\"></script>\n    <span id=\"finicount_views\"></span>    &nbsp;|&nbsp;\n    <footer>\n      <a href=\"https://icp.gov.moe/?keyword=20230640\" target=\"_blank\">\u840cICP\u590720230640\u53f7</a>\n    </footer>\n  </div>\n      </font>\n\n      <style>\n        .footer-visit-count {\n            height: fit-content;\n            min-height: 55px; /* \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u8c03\u6574\u6b64\u9ad8\u5ea6 */\n        }\n        </style>\n      {% if config.extra.social %}\n        {% include \"partials/social.html\" %}\n      {% endif %}\n    </div>\n  </div>\n</footer>\n

    \u9ad8\u4eae\u90e8\u5206\u81ea\u884c\u4fee\u6539\u5373\u53ef

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/#_2","title":"\u9875\u811a\u7248\u6743\u8bbe\u7f6e","text":"

    mkdocs.yml\u4e2d\u6dfb\u52a0\uff1a

    copyright: Copyright &copy; 2022~2025 Wcowin # \u5de6\u4e0b\u89d2\u7684\u7248\u6743\u58f0\u660e\n

    \u5982\u679c\u60f3\u5220\u9664\u9875\u811a\u663e\u793a\u201cMade with Material for MkDocs\u201d(\u4e0d\u5efa\u8bae)

    extra:\n  generator: false  #\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/header/","title":"\u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f","text":"

    docs/overrides\u4e0b\u65b0\u5efamain.html \uff0c\u9488\u5bf9main.html\u6587\u4ef6 \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:

    $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

    {#-\n    This file was automatically generated - do not edit\n  -#}\n  {% extends \"base.html\" %}\n  {% block extrahead %}\n    <link rel=\"stylesheet\" href=\"{{ 'assets/stylesheets/custom.00c04c01.min.css' | url }}\">\n  {% endblock %}\n  {% block announce %}\n     Follow <strong>@Wcowin</strong> on\n    <a rel=\"me\" href=\"https://space.bilibili.com/1407028951?spm_id_from=333.1007.0.0\">\n      <span class=\"twemoji bilibili\">\n        {% include \".icons/fontawesome/brands/bilibili.svg\" %}\n      </span>\n      <strong>Bilibili</strong>\n    </a>\n    and\n    <a href=\"https://twitter.com/Wcowin_\">\n      <span class=\"twemoji twitter\">\n        {% include \".icons/fontawesome/brands/twitter.svg\" %}\n      </span>\n      <strong>Twitter</strong>\n    </a>\n  {% endblock %}\n  {% block scripts %}\n    {{ super() }}\n    <script src=\"{{ 'assets/javascripts/custom.9458f965.min.js' | url }}\"></script>\n  {% endblock %}\n

    \u5728main.html \u91cc\u81ea\u884c\u4fee\u6539\u5373\u53ef

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/","title":"\u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe","text":"

    \u590d\u5236\u540e\u5728\u9700\u8981\u6dfb\u52a0\u53cb\u94fe\u7684.md \u6587\u4ef6\u9875\u9762\u7c98\u8d34\u5373\u53ef

    <div class=\"post-body\">\n  <div id=\"links\">\n    <style>\n      /* \u7528\u4e8e\u5927\u5c4f\u5e55\u548c\u5c0f\u5c4f\u5e55\u7684\u901a\u7528\u6837\u5f0f */\n      .card {\n        width: 45%;\n        font-size: 1rem;\n        padding: 10px 20px;\n        border-radius: 4px;\n        transition-duration: 0.15s;\n        margin-bottom: 1rem;\n        display: flex;\n      }\n      .card:nth-child(odd) {\n        float: left;\n      }\n      .card:nth-child(even) {\n        float: right;\n      }\n      .card:hover {\n        transform: scale(1.1);\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);\n      }\n      .card a {\n        border: none;\n      }\n      .card .ava {\n        width: 3rem !important;\n        height: 3rem !important;\n        margin: 0 !important;\n        margin-right: 1em !important;\n        border-radius: 4px;\n      }\n      .card .card-header {\n        font-style: italic;\n        overflow: hidden;\n        width: 100%;\n      }\n      .card .card-header a {\n        font-style: normal;\n        color: #608dbd;\n        font-weight: bold;\n        text-decoration: none;\n      }\n      .card .card-header a:hover {\n        color: #d480aa;\n        text-decoration: none;\n      }\n      .card .card-header .info {\n        font-style: normal;\n        color: #a3a3a3;\n        font-size: 14px;\n        min-width: 0;\n        overflow: hidden;\n        white-space: nowrap;\n      }\n      /* \u5a92\u4f53\u67e5\u8be2\uff1a\u5c0f\u5c4f\u5e55 */\n      @media (max-width: 768px) {\n        .card {\n          width: 100%; /* \u5728\u5c0f\u5c4f\u5e55\u4e0a\u663e\u793a\u4e3a\u5355\u5217 */\n          float: none; /* \u6e05\u9664\u6d6e\u52a8 */\n        }\n      }\n    </style>\n    <div class=\"links-content\">\n      <div class=\"link-navigation\">\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://cn.mcecy.com/image/20231006/a05f708fb7b0426e7a5786669d5b1386.png\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://wcowin.work/ \" target=\"\u201c_blank\u201d\"\n                >Wcowin\u2019s blog</a\n              >\n            </div>\n            <div class=\"info\">\u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002</div>\n          </div>\n        </div>\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://twitter.com/\" target=\"\u201c_blank\u201d\">Twitter</a>\n            </div>\n            <div class=\"info\">\u793e\u4ea4\u5206\u4eab\u5e73\u53f0</div>\n          </div>\n        </div>\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://cn.mcecy.com/image/20231012/d96b912437fb0bec0d282dfe734b1d9b.jpeg\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://macapp.org.cn/\" target=\"\u201c_blank\u201d\">Macapp</a>\n            </div>\n            <div class=\"info\">\u4e00\u4e2a\u4e13\u6ce8\u4e8e\u5206\u4eabMac\u8d44\u6e90\u7684\u9891\u9053</div>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </div>\n</div>\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_1","title":"\u5982\u4f55\u52a0\u5165\u53cb\u94fe","text":"
    <div class=\"card\">\n  <img class=\"ava\" src=\"{avatarurl}\" />\n  <div class=\"card-header\">\n    <div>\n      <a href=\"{link}\" target=\"_blank\">{name}</a>\n    </div>\n    <div class=\"info\">{description}</div>\n  </div>\n</div>\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_2","title":"\u793a\u4f8b","text":"
    <div>\n  <div class=\"links-content\"> \n   <div class=\"link-navigation\"> \n    <div class=\"card\"> \n     <img class=\"ava\" src=\"https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp\" /> \n     <div class=\"card-header\"> \n      <div> \n       <a href=\"https://wcowin.work/ \" target=\u201c_blank\u201d>Wcowin\u2019s blog</a> \n      </div> \n      <div class=\"info\">\n       \u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002\n      </div> \n     </div> \n    </div> \n</div>\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_3","title":"\u6548\u679c","text":"Wcowin\u2019s blog \u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/","title":"\u4e3a\u7f51\u7ad9\u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    giscus\u662f\u4e00\u6b3e\u57fa\u4e8eGitHub Discussions\u7684\u5f00\u6e90\u8bc4\u8bba\u7cfb\u7edf\uff0c\u65e0\u9700\u6570\u636e\u5e93\uff0c\u6570\u636e\u76f4\u63a5\u5b58\u50a8\u5728GitHub\u4e2d\u3002\u5b83\u5177\u6709\u65e0\u8ddf\u8e2a\u3001\u65e0\u5e7f\u544a\u3001\u6c38\u4e45\u514d\u8d39\u7684\u7279\u70b9\uff0c\u652f\u6301\u591a\u8bed\u8a00\u3001\u81ea\u5b9a\u4e49\u4e3b\u9898\u548c\u9ad8\u53ef\u914d\u7f6e\u6027\u3002\u7cfb\u7edf\u80fd\u81ea\u52a8\u540c\u6b65GitHub\u7684\u8bc4\u8bba\u66f4\u65b0\uff0c\u9002\u7528\u4e8e\u9759\u6001\u7f51\u7ad9\u96c6\u6210\uff0c\u63d0\u4f9b\u8f7b\u91cf\u7ea7\u3001\u9690\u79c1\u53cb\u597d\u7684\u8bc4\u8bba\u89e3\u51b3\u65b9\u6848\uff0c\u540c\u65f6\u5141\u8bb8\u7528\u6237\u81ea\u5efa\u670d\u52a1\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a389 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a116

    \u5b98\u65b9\u6587\u6863\uff1aAdding a comment system

    \u8fd9\u91cc\u6211\u540c\u6837\u63a8\u8350giscus

    \u5229\u7528 GitHub Discussions \u5b9e\u73b0\u7684\u8bc4\u8bba\u7cfb\u7edf\uff0c\u8ba9\u8bbf\u5ba2\u501f\u52a9 GitHub \u5728\u4f60\u7684\u7f51\u7ad9\u4e0a\u7559\u4e0b\u8bc4\u8bba\u548c\u53cd\u5e94\u5427\uff01\u672c\u9879\u76ee\u6df1\u53d7 utterances \u7684\u542f\u53d1\u3002

    • \u5f00\u6e90\u3002\ud83c\udf0f
    • \u65e0\u8ddf\u8e2a\uff0c\u65e0\u5e7f\u544a\uff0c\u6c38\u4e45\u514d\u8d39\u3002\ud83d\udce1 \ud83d\udeab
    • \u65e0\u9700\u6570\u636e\u5e93\u3002\u6240\u6709\u6570\u636e\u5747\u50a8\u5b58\u5728 GitHub Discussions \u4e2d\u3002:octocat:
    • \u652f\u6301\u81ea\u5b9a\u4e49\u4e3b\u9898\uff01\ud83c\udf17
    • \u652f\u6301\u591a\u79cd\u8bed\u8a00\u3002\ud83c\udf10
    • \u9ad8\u53ef\u914d\u7f6e\u6027\u3002\ud83d\udd27
    • \u81ea\u52a8\u4ece GitHub \u62c9\u53d6\u65b0\u8bc4\u8bba\u4e0e\u7f16\u8f91\u3002\ud83d\udd03
    • \u53ef\u81ea\u5efa\u670d\u52a1\uff01\ud83e\udd33

    \u8a00\u5f52\u6b63\u4f20

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_1","title":"\u7b2c\u4e00\u6b65","text":"

    mkdocs.yml\u4e2d\u6dfb\u52a0custom_dir

    theme:\n  name: material\n  custom_dir: docs/overrides  #\u4e3b\u8981\u662f\u8fd9\u4e00\u884c\n
    \u53c2\u8003\u4e0b\u56fe\u65b0\u5efaoverrides\u6587\u4ef6\uff0c\u5728\u6b64\u6587\u4ef6\u4e0b\u53c2\u8003\u4e0b\u56fe\u65b0\u5efa\u8986\u76d6html\u6587\u4ef6 \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:
    $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

    \u5728comments.html\u4e2d\u5148\u590d\u5236\u7c98\u8d34\u4e0b\u9762\u7684\u4ee3\u7801\uff0c\u540e\u6587\u4f1a\u8bf4\u600e\u4e48\u4fee\u6539

    {% if page.meta.comments %}\n  <h2 id=\"__comments\">{{ lang.t(\"meta.comments\") }}</h2>\n  <!-- Insert generated snippet here -->\n  <script src=\"https://giscus.app/client.js\"\n  data-repo=\"\u4f60\u7684\u4ed3\u5e93\u540d\u79f0\uff08\u5982Wcowin/hexo-site-comments\uff09\"\n  data-repo-id=\" \"\n  data-category=\" \"\n  data-category-id=\" \"\n  data-mapping=\"pathname\"\n  data-strict=\"0\"\n  data-reactions-enabled=\"1\"\n  data-emit-metadata=\"0\"\n  data-input-position=\"bottom\"\n  data-theme=\"preferred_color_scheme\"\n  data-lang=\"zh-CN\"\n  crossorigin=\"anonymous\"\n  async>\n</script>\n  <!-- Synchronize Giscus theme with palette -->\n  <script>\n    var giscus = document.querySelector(\"script[src*=giscus]\")\n\n    // Set palette on initial load\n    var palette = __md_get(\"__palette\")\n    if (palette && typeof palette.color === \"object\") {\n      var theme = palette.color.scheme === \"slate\"\n        ? \"transparent_dark\"\n        : \"light\"\n\n      // Instruct Giscus to set theme\n      giscus.setAttribute(\"data-theme\", theme) \n    }\n\n    // Register event handlers after documented loaded\n    document.addEventListener(\"DOMContentLoaded\", function() {\n      var ref = document.querySelector(\"[data-md-component=palette]\")\n      ref.addEventListener(\"change\", function() {\n        var palette = __md_get(\"__palette\")\n        if (palette && typeof palette.color === \"object\") {\n          var theme = palette.color.scheme === \"slate\"\n            ? \"transparent_dark\"\n            : \"light\"\n\n          // Instruct Giscus to change theme\n          var frame = document.querySelector(\".giscus-frame\")\n          frame.contentWindow.postMessage(\n            { giscus: { setConfig: { theme } } },\n            \"https://giscus.app\"\n          )\n        }\n      })\n    })\n  </script>\n{% endif %}\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_2","title":"\u7b2c\u4e8c\u6b65","text":"

    \u6253\u5f00https://giscus.app/zh-CN \u8d70\u5b8c\u8fd9\u4e2a\u9875\u9762\u7684\u6d41\u7a0b\u5c31\u4f1a\u5f97\u5230(\u8fd9\u4f1a\u5728\u4f60\u7684Github\u521b\u5efa\u65b0\u7684\u4ed3\u5e93\uff0c\u5efa\u8bae\u81ea\u5df1\u5148\u53bb\u65b0\u5efa\u4e2a Discussions)

    <script src=\"https://giscus.app/client.js\"\n        data-repo=\"[\u5728\u6b64\u8f93\u5165\u4ed3\u5e93]\"\n        data-repo-id=\"[\u5728\u6b64\u8f93\u5165\u4ed3\u5e93 ID]\"\n        data-category=\"[\u5728\u6b64\u8f93\u5165\u5206\u7c7b\u540d]\"\n        data-category-id=\"[\u5728\u6b64\u8f93\u5165\u5206\u7c7b ID]\"\n        data-mapping=\"pathname\"\n        data-strict=\"0\"\n        data-reactions-enabled=\"1\"\n        data-emit-metadata=\"0\"\n        data-input-position=\"bottom\"\n        data-theme=\"preferred_color_scheme\"\n        data-lang=\"zh-CN\"\n        crossorigin=\"anonymous\"\n        async>\n</script>\n

    \u590d\u5236\u6b64\u4ee3\u7801\uff0c\u66ff\u6362\u6700\u4e0a\u9762\ud83d\udc46\ud83c\udffbcomments.html\u4e2d\u9ad8\u4eae\u7684\u4ee3\u7801

    \u7ec8\u7aef\u91ccmkdocs server\u4e00\u4e0b

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_3","title":"\u6700\u540e","text":"

    \u5728\u4f60\u60f3\u63d2\u5165\u8bc4\u8bba\u7684\u5730\u65b9\u7684\u5143\u6570\u636e\uff1acomments: true

    ---\ntitle: \u7559\u8a00\u677f\nhide:\n  #  - navigation # \u663e\u793a\u53f3\n  #  - toc #\u663e\u793a\u5de6\n  #  - footer\n  #  - feedback  \ncomments: true  #\u9ed8\u8ba4\u4e0d\u5f00\u542f\u8bc4\u8bba\n---\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_4","title":"\u6548\u679c","text":"

    \u5b8c\u7f8e!\u5feb\u901f\u76f8\u5e94

    \u8fd9\u662f\u56fe\u7247\u2191\u2191\u2191","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_5","title":"\u5176\u4ed6\u8bc4\u8bba\u7cfb\u7edf","text":"

    \u628a\u60f3\u8981\u5185\u5d4c\u7684\u8bc4\u8bba\u4ee3\u7801\u653e\u5728\u76f8\u5e94\u9875\u9762\u5373\u53ef \u6bd4\u5982twikoo \u53bb\u770b\u5b83\u7684\u5b98\u65b9\u914d\u7f6e\u6587\u6863\u5f88\u7b80\u5355\u5c31\u914d\u7f6e\u597d\u4e86

    <head> \n  <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css\" integrity=\"sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X\" crossorigin=\"anonymous\" /> \n  <script defer=\"\" src=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js\" integrity=\"sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4\" crossorigin=\"anonymous\"></script> \n  <script defer=\"\" src=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js\" integrity=\"sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa\" crossorigin=\"anonymous\"></script> \n\n </head>\n<body>\n  <div id=\"tcomment\"></div> \n  <script src=\"https://cdn.staticfile.org/twikoo/1.6.21/twikoo.all.min.js\"></script> \n  <script>\ntwikoo.init({\n  envId: 'https://superb-salamander-e730b6.netlify.app/.netlify/functions/twikoo', // \u817e\u8baf\u4e91\u73af\u5883\u586b envId\uff1bVercel \u73af\u5883\u586b\u5730\u5740\uff08https://xxx.vercel.app\uff09\n  el: '#tcomment', // \u5bb9\u5668\u5143\u7d20\n   //region: 'ap-guangzhou', // \u73af\u5883\u5730\u57df\uff0c\u9ed8\u8ba4\u4e3a ap-shanghai\uff0c\u817e\u8baf\u4e91\u73af\u5883\u586b ap-shanghai \u6216 ap-guangzhou\uff1bVercel \u73af\u5883\u4e0d\u586b\n  // path: location.pathname, // \u7528\u4e8e\u533a\u5206\u4e0d\u540c\u6587\u7ae0\u7684\u81ea\u5b9a\u4e49 js \u8def\u5f84\uff0c\u5982\u679c\u60a8\u7684\u6587\u7ae0\u8def\u5f84\u4e0d\u662f location.pathname\uff0c\u9700\u4f20\u6b64\u53c2\u6570\n   //lang: 'zh-CN', // \u7528\u4e8e\u624b\u52a8\u8bbe\u5b9a\u8bc4\u8bba\u533a\u8bed\u8a00\uff0c\u652f\u6301\u7684\u8bed\u8a00\u5217\u8868 https://github.com/twikoojs/twikoo/blob/main/src/client/utils/i18n/index.js\n   onCommentLoaded: function () {\n    console.log('\u8bc4\u8bba\u52a0\u8f7d\u5b8c\u6210');\n  }\n})\n</script> \n

    \u6211\u611f\u89c9twikoo\u4e5f\u597d\u770b\uff01","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/","title":"\u81ea\u5b9a\u4e49Mkdocs\u663e\u793a\u5b57\u4f53(\u971e\u9e5c\u6587\u6977)","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u971e\u9e5c\u6587\u6977\u662f\u4e00\u6b3e\u57fa\u4e8e\u65e5\u672cFONTWORKS\u516c\u53f8Klee One\u884d\u751f\u7684\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\uff0c\u517c\u5177\u4eff\u5b8b\u548c\u6977\u4f53\u7279\u70b9\uff0c\u9002\u5408\u8bd7\u8bcd\u548c\u6ce8\u91ca\u6392\u7248\u3002\u63d0\u4f9b\u591a\u4e2a\u7248\u672c\uff1a\u5c4f\u5e55\u9605\u8bfb\u7248\u3001\u8f7b\u4fbf\u7248\u3001GB/TC\u89c4\u8303\u7248\u7b49\uff0c\u652f\u6301\u7b80\u7e41\u65e5\u97e9\u5b57\u7b26\u3002\u8be5\u5b57\u4f53\u89e3\u51b3\u4e86\u5546\u4e1a\u5b57\u4f53\u4fb5\u6743\u98ce\u9669\u95ee\u9898\uff0c\u586b\u8865\u4e86\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\u4e2d\u6977\u4f53\u7c7b\u7684\u7a7a\u767d\u3002\u7528\u6237\u53ef\u901a\u8fc7GitHub\u3001Gitee\u7b49\u5e73\u53f0\u83b7\u53d6\uff0c\u652f\u6301Windows/macOS\u7cfb\u7edf\u5b89\u88c5\u3002\u5b57\u4f53\u91c7\u7528SIL Open Font License 1.1\u6388\u6743\uff0c\u9002\u5408\u7f51\u7ad9\u548c\u79fb\u52a8\u8bbe\u5907\u4f7f\u7528\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a6 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a2328 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a21

    \u6211\u76ee\u524d\u5728\u7528\u7684\u5b57\u4f53\uff1a\u971e\u9e5c\u6587\u6977 \u60f3\u5fc5\u4f60\u53ef\u4ee5\u76f4\u89c2\u4ece\u6211\u7684\u7f51\u7ad9\u611f\u53d7\u5230\uff0c\u8fd9\u6b3e\u5b57\u4f53\u7684\u7f8e\u89c2\u7a0b\u5ea6\u3002

    \u5feb\u901f\u6559\u7a0b

    \u4ee5\u4e0b\u662f\u6458\u5f55\u7684\u90e8\u5206\u5b57\u4f53\u5b98\u65b9\u4ecb\u7ecd\u6587\u6863

    \u6ce8\u610f\u4e8b\u9879

    • \u6dfb\u5b57\u8bf7\u5728 Issue #33 \u53cd\u9988\uff0c\u5b57\u5f62\u8c03\u6574\u8bf7\u5728 Issue #14 \u53cd\u9988\uff0c\u4e0d\u8981\u53e6\u5f00\u8bae\u9898\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002
    • \u82e5\u9700\u8981\u5728\u7f51\u7ad9\u4e0a\u4f7f\u7528\u8fd9\u6b3e\u5b57\u4f53\uff0c\u8bf7\u53c2\u9605 Issue #24\u3002
    • \u6709\u5173 Magisk \u5b57\u4f53\u6a21\u5757\u7b49\u624b\u673a\u5b57\u4f53\u66ff\u6362\u6709\u5173\u7684\u95ee\u9898\uff0c\u8bf7\u79fb\u6b65\u6a21\u5757\u6a21\u677f\u7684 Issues \u91cc\u53cd\u9988\uff0c\u4e0d\u8981\u5728\u672c\u9879\u76ee\u5f00\u8bae\u9898\u3002
    • \u66f4\u591a\u7248\u672c \uff08\u53ef\u80fd\u4f1a\u968f\u65f6\u53d8\u52a8\uff09 \uff1a
    • \u971e\u9e5c\u6587\u6977\u5c4f\u5e55\u9605\u8bfb\u7248 / LXGW WenKai Screen\uff1a\u9002\u7528\u4e8e PC \u548c Android \u624b\u673a\u5c4f\u5e55\u663e\u793a\u4e14\u65e0\u9700\u7279\u522b\u5207\u6362\u5230\u7c97\u4f53\u3002
    • \u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248 / LXGW WenKai Lite\uff1a\u4e0e\u5b8c\u6574\u7248\u76f8\u6bd4\u5254\u9664\u4e00\u4e9b\u8f83\u4e0d\u5e38\u7528\u7684\u5b57\u7b26\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u5c06\u5b57\u4f53\u5d4c\u5165\u8f6f\u4ef6\u4e2d\u3002
    • \u971e\u9e5c\u6587\u6977 GB / LXGW WenKai GB\uff1a\u8fdb\u4e00\u6b65\u8c03\u6574\u5b57\u5f62\u548c\u7b14\u5f62\uff0c\u7b26\u5408 G \u6e90\u5b57\u5f62\u89c4\u8303\u3002\u5305\u542b\u300a\u901a\u7528\u89c4\u8303\u6c49\u5b57\u8868\u300b8105 \u4e2a\u6c49\u5b57\u3002
    • \u971e\u9e5c\u6587\u6977 TC / LXGW WenKai TC\uff1a\u65e7\u5b57\u5f62\u7248\u53c2\u8003\u300c\u4e00\u70b9\u5b57\u574a\u300d\u7684\u300c\u4f20\u627f\u5b57\u5f62\u6807\u51c6\u5316\u6587\u4ef6\u300d\u5bf9\u90e8\u4ef6\u8fdb\u884c\u4fee\u6539\uff0c\u9002\u7528\u4e8e\u7e41\u4f53\u4e2d\u6587\u7528\u6237\u53ca\u65e7\u5b57\u5f62\u7231\u597d\u8005\u3002
    • LXGW Bright\uff1a\u4e0e Ysabeau \u7cfb\u5217\u5b57\u4f53 \u642d\u914d\u7684\u4e2d\u82f1\u6587\u5408\u5e76\u5b57\u4f53\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#lxgw-wenkai","title":"LXGW WenKai / \u971e\u9e5c\u6587\u6977","text":"

    An open-source Chinese font derived from Fontworks' Klee One. \u4e00\u6b3e\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\uff0c\u57fa\u4e8e FONTWORKS \u51fa\u54c1\u5b57\u4f53 Klee One \u884d\u751f\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_1","title":"\u9879\u76ee\u7b80\u4ecb","text":"

    2020 \u5e74 12 \u6708\uff0c\u65e5\u672c\u8457\u540d\u5b57\u4f53\u5382\u5546 FONTWORKS \u5728 GitHub \u4e0a\u53d1\u5e03\u4e86 7 \u6b3e\u65e5\u6587\u5b57\u4f53\uff0c\u5206\u522b\u4e3a Train\u3001Klee\u3001Stick\u3001Rock-n-Roll\u3001Reggae\u3001Rampart \u548c DotGothic16\uff0c\u6839\u636e SIL Open Font License 1.1 \u6388\u6743\u8bb8\u53ef\u5f00\u6e90\u30027 \u6b3e\u5f00\u6e90\u65e5\u6587\u5b57\u4f53\u5404\u6709\u5404\u7684\u7279\u70b9\uff0c\u800c\u8fd9 7 \u6b3e\u5b57\u4f53\u4e2d\uff0c\u5b57\u7b26\u6570\u91cf\u6700\u591a\u7684\u662f Klee\u3002

    \u8fd9\u662f\u4e00\u6b3e\u6709\u7740\u65e5\u672c\u6559\u79d1\u4e66\u4f53\u98ce\u683c\u7684\u5b57\u4f53\uff0c\u517c\u6709\u4eff\u5b8b\u548c\u6977\u4f53\u7684\u7279\u70b9\uff0c\u53ef\u8bfb\u6027\u9ad8\u3002\u4e00\u4e9b DIY \u5b57\u4f53\u7231\u597d\u8005\u66fe\u5148\u540e\u7528\u4eff\u5b8b\u7b49\u5b57\u4f53\u8865\u5168\u8fd9\u6b3e\u5b57\u4f53\uff0c\u4f5c\u4e3a\u624b\u673a\u7cfb\u7edf\u7684\u7f8e\u5316\u5b57\u4f53\u79fb\u690d\u5728 iOS\u3001Android \u7b49\u624b\u673a\u7cfb\u7edf\u4e2d\uff0c\u53d7\u5230\u5f88\u591a\u73a9\u673a\u53d1\u70e7\u53cb\u7684\u6b22\u8fce\u3002\u4e0d\u8fc7\u8fd9\u6837\u8865\u5168\u7684\u5b57\u4f53\u6709\u4e00\u4e9b\u4e0d\u8db3\u4e4b\u5904\u3002 \u7b2c\u4e00\uff0c\u539f\u6709\u5b57\u4f53\u548c\u540e\u8865\u5b57\u4f53\u4e4b\u95f4\u6709\u7740\u4e00\u5b9a\u7684\u5dee\u5f02\uff0c\u81f4\u4f7f\u4e00\u4e9b\u4e0d\u540c\u7684\u6587\u5b57\uff08\u5982 Klee \u539f\u6709\u6c49\u5b57\u4e0e\u540e\u8865\u7b80\u4f53\u5b57\uff09\u6df7\u6392\u4e4b\u540e\u4f1a\u6709\u4e00\u5b9a\u7684\u8fdd\u548c\u611f\u3002 \u7b2c\u4e8c\uff0c\u7531\u4e8e\u8865\u5b57\u6240\u7528\u7684\u5b57\u4f53\u4e3a\u5546\u4e1a\u7248\u6743\u5b57\u4f53\uff0c\u8865\u5168\u4e4b\u540e\u4e0d\u53ef\u7528\u4e8e\u5546\u4e1a\u7528\u9014\uff0c\u8fd8\u4f1a\u6709\u4fb5\u6743\u7684\u98ce\u9669\u3002\u6b64\u5916\uff0c\u76ee\u524d\u73b0\u6709\u7684\u5f00\u6e90\u4e2d\u6587\u5b57\u5e93\u91cc\uff0c\u6977\u4f53\u7c7b\u5be5\u5be5\u65e0\u51e0\uff0c\u4eff\u5b8b\u7c7b\u5219\u51e0\u4e4e\u6ca1\u6709\u3002

    \u9274\u4e8e\u6b64\uff0c\u4e5f\u4e3a\u4e86\u4e30\u5bcc\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\u4e2d\u7684\u6977\u4f53\u95e8\u7c7b\uff0c2021 \u5e74 1 \u6708 20 \u65e5\u8d77\uff0c\u672c\u4eba\u5f00\u59cb\u4e86\u4e3a Klee One \u8fd9\u4e00\u9ad8\u8d28\u91cf\u7684\u65e5\u6587\u5f00\u6e90\u5b57\u4f53\u8865\u5168\u7b80\u7e41\u5e38\u7528\u5b57\u7684\u5c1d\u8bd5\u3002\u56e0\u8be5\u5b57\u4f53\u5177\u6709\u4e00\u5b9a\u7684\u300c\u6587\u827a\u6c14\u606f\u300d\uff0c\u547d\u540d \u300c\u971e\u9e5c\u6587\u6977\u300d\uff08\u5176\u5b9e\u5f53\u521d\u662f\u611f\u89c9\u8fd9\u6b3e\u5b57\u4f53\u9002\u5408\u6b63\u6587\u9605\u8bfb\u5b9a\u540d\u300c\u6587\u6977\u300d\uff0c\u540e\u6765\u53d1\u73b0\u8fd9\u6b3e\u5b57\u4f53\u53ef\u80fd\u5e76\u4e0d\u592a\u9002\u5408\u5927\u6bb5\u6b63\u6587\u6392\u7248\uff0c\u76f8\u6bd4\u4e4b\u4e0b\u66f4\u52a0\u9002\u5408\u8bd7\u8bcd\u4e4b\u7c7b\u7684\u4e2d\u7b49\u957f\u5ea6\u6587\u672c\u6392\u7248\uff0c\u6216\u8005\u6ce8\u91ca\u6392\u7248\uff09\u3002\u7531\u4e8e Klee One \u5b57\u4f53\u7684 Regular \u5b57\u91cd\u592a\u7ec6\u4e0d\u592a\u9002\u5408\u9605\u8bfb\uff0c\u9009\u53d6\u539f\u5b57\u4f53 SemiBold \u5b57\u91cd\u4f5c\u4e3a Regular \u5b57\u91cd\u3002\u7ecf\u8fc7\u957f\u65f6\u95f4\u7684\u79ef\u7d2f\uff0c\u76ee\u524d\u5df2\u53d1\u5c55\u6210\u7b80\u7e41\u65e5\u97e9\u5747\u652f\u6301\u7684 3 \u5b57\u91cd\u5b57\u4f53\u5bb6\u65cf \uff08\u867d\u7136\u62d9\u52a3\u7c97\u7cd9\u4e86\u70b9\uff09 \u3002

    \u6709\u5173\u8865\u5b57\u8fc7\u7a0b\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u672c\u4eba GitHub.io \u535a\u5ba2\u91cc\u7684\u6587\u7ae0\uff1a\u300a\u4e3a Klee \u8bd5\u5236\u7b80\u5316\u5b57\u300b\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_2","title":"\u5b57\u4f53\u9884\u89c8","text":"

    \u5386\u53f2\u7248\u672c\u7684 Release\uff0c\u8bf7\u5728 Release \u9875\u9762\u67e5\u770b\u3002\u6587\u5b57\u7248\u672c\u7684\u66f4\u65b0\u8bb0\u5f55 HISTORY.MD \u4e0d\u518d\u7ef4\u62a4\uff0c\u656c\u8bf7\u8c05\u89e3\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_3","title":"\u8865\u5b57\u8ba1\u5212","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_4","title":"\u4e3b\u8981\u6c49\u5b57\u90e8\u5206","text":"

    \u8bf7\u53c2\u9605\u300c\u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248\u300d\u52a0\u5b57\u8ba1\u5212\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_5","title":"\u5176\u4ed6\u90e8\u5206","text":"
    • \u8865\u5b8c CJK \u7edf\u4e00\u6c49\u5b57\u57fa\u672c\u533a 20992 \u4e2a\u6c49\u5b57\uff08\u7b80\u7e41\uff09 \uff08\u76ee\u524d\u5b8c\u6574\u7248\u6709 6857 \u4e2a\u5b57\u5f62\u7531 zi2zi \u6df1\u5ea6\u5b66\u4e60\u751f\u6210\uff0c\u5b57\u5f62\u8f83\u7c97\u7cd9\u3002\uff09 \uff1b
    • \u8865\u5168\u5e38\u7528\u8c1a\u6587\uff08\u97e9\u8bed/\u671d\u9c9c\u8bed\uff09\u97f3\u8282 2367 \u4e2a\u3002 \uff08\u505a\u5f97\u6bd4\u8f83\u62d9\u52a3\u3002Lite \u7248\u4e0d\u5305\u542b\u3002\uff09

    \u70b9\u51fb\u6b64\u5904\u67e5\u770b\u540e\u7eed\u52a0\u5b57\u53ca\u8c03\u6574\u8ba1\u5212\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_6","title":"\u83b7\u53d6\u5b57\u4f53","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#i","title":"\u2170. \u76f4\u63a5\u4e0b\u8f7d","text":"
    1. \u8fdb\u5165 Release \u754c\u9762\u4e0b\u8f7d\u5bf9\u5e94\u7248\u672c\u7684 TTF \u683c\u5f0f\u6587\u4ef6\uff0c\u6216\u5728\u672c\u4ed3\u5e93 fonts/TTF \u6587\u4ef6\u5939\u4e2d\u4e0b\u8f7d\u3002
    2. \u5728 Gitee \u5b98\u65b9\u955c\u50cf\u4ed3\u5e93 fonts/TTF \u6587\u4ef6\u5939\u4e2d\u4e0b\u8f7d\u3002
    3. \u8fdb\u5165 \u732b\u5543\u7f51\u3001Zfont.cn\u3001\u81ea\u7531\u5b57\u4f53 \u8fdb\u884c\u4e0b\u8f7d\u3002GitHub \u9879\u76ee\u66f4\u65b0\u540e\uff0c\u4f1a\u8054\u7cfb\u7ad9\u957f\u8fdb\u884c\u66f4\u65b0\uff0c\u66f4\u65b0\u4f1a\u7a0d\u665a\u4e9b\u3002 \u6ce8\u610f\uff1a \u5176\u5b83\u6536\u5f55\u514d\u8d39\u5546\u7528\u5b57\u4f53\u7684\u7f51\u7ad9\u4e0a\u53ef\u80fd\u4e5f\u6536\u5f55\u4e86\u672c\u5b57\u4f53\uff0c\u4f46\u53ef\u80fd\u4e0d\u662f\u6700\u65b0\u7248\u3002
    4. \u6c38\u7855\uff25\u76d8\u3001\u84dd\u594f\u4e91\uff08\u5bc6\u7801\uff1a8ppk\uff09 \u4f1a\u5728 GitHub \u9879\u76ee\u66f4\u65b0\u540e 72 \u5c0f\u65f6\u4e4b\u5185\u66f4\u65b0\u3002
    5. \u5982\u679c\u60a8\u4f7f\u7528 macOS\uff0c\u5df2\u7ecf\u5b89\u88c5\u8fc7 Homebrew\uff0c\u53ef\u4ee5\u5728\u7ec8\u7aef\u8f93\u5165\u547d\u4ee4\uff1abrew tap homebrew/cask-fonts && brew install font-lxgw-wenkai \u6765\u5b89\u88c5\u672c\u5b57\u4f53\u3002
    6. \u5982\u679c\u60a8\u4f7f\u7528 Windows\uff0c\u5df2\u7ecf\u5b89\u88c5\u8fc7 Scoop\uff0c\u53ef\u4ee5\u5728\u7ec8\u7aef\u8f93\u5165\u547d\u4ee4\uff1ascoop bucket add nerd-fonts && scoop install LXGWWenKai \u6216\u8005 scoop bucket add nerd-fonts && scoop install LXGWWenKaiMono \u6765\u5b89\u88c5\u672c\u5b57\u4f53\u3002\u4ea6\u53ef\u67e5\u770b\u5fae\u8f6f\u5b98\u65b9\u6559\u7a0b\uff1a\u5982\u4f55\u5728 Windows \u4e2d\u5b89\u88c5\u6216\u5220\u9664\u5b57\u4f53\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#ii","title":"\u2171. \u4ece\u6e90\u4ee3\u7801\u751f\u6210","text":"

    \u8bf7\u8fd0\u884c ./sources/build.bat \u6216 ./sources/build.sh\u3002\u9700\u8981\u5b89\u88c5 fontmake\uff1apip3 install fontmake \u548c fontTools\uff1apip3 install fonttools\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_7","title":"\u6ce8\u610f\u4e8b\u9879","text":"
    1. \u622a\u81f3\u76ee\u524d\uff0c\u5b8c\u6574\u7248\u672c\u5b57\u4f53\u542b\u6709\u5168\u90e8 CJK \u57fa\u672c\u533a\u6c49\u5b57\uff0c\u4ee5\u53ca\u96f6\u661f\u6269\u5c55 A~G \u533a\u6c49\u5b57\u3002 \u5982\u6709\u8865\u5b57\u9700\u6c42\uff0c\u8bf7\u5728 Issue #33 \u63d0\u51fa\uff0c\u4e0d\u8981\u53e6\u5f00 Issue\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002
    2. \u672c\u4eba\u5e76\u4e0d\u662f\u4e13\u4e1a\u7684\u8bbe\u8ba1\u5e08\uff0c\u5e76\u672a\u8003\u8651\u8bbe\u8ba1\u7f8e\u611f\uff0c\u6240\u4ee5\u770b\u8d77\u6765\u53ef\u80fd\u7565\u4e11\uff0c\u8865\u8fdb\u53bb\u7684\u5b57\u4e0e\u539f\u7248\u53ef\u80fd\u7565\u6709\u8fdd\u548c\u611f\uff0c\u4e14\u5728 Bold \u5b57\u91cd\u4e2d\u90e8\u5206\u5b57\u7684\u8f6e\u5ed3\u66f2\u7ebf\u4f1a\u6709\u6bdb\u523a\uff0cLight \u5b57\u91cd\u4e2d\u90e8\u5206\u5b57\u7684\u8f6e\u5ed3\u4f1a\u5b58\u5728\u98de\u70b9\uff1b\u6b64\u5916\u7531\u4e8e\u65f6\u95f4\u4ed3\u4fc3\uff0c\u5e76\u6ca1\u6709\u591a\u4f59\u7684\u65f6\u95f4\u7ec6\u4fee\uff0c\u90e8\u5206\u5b57\u7684\u90e8\u4ef6\u62fc\u63a5\u4f1a\u5f88\u751f\u786c\u3002\u5982\u6709\u5b57\u5f62\u4f18\u5316\u5efa\u8bae\uff0c\u8bf7\u5728 Issue #14 \u63d0\u51fa\uff0c\u4e0d\u8981\u53e6\u5f00 Issue\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002 \uff08\u4ee5\u4e0a\u4e24\u4e2a issue \u5747\u5df2\u52a0\u4e0a long term \u6807\u7b7e\uff0c\u4e14\u5747\u5df2\u5728 Issues \u9875\u9762\u7f6e\u9876\u3002\uff09
    3. \u82e5\u9700\u8981\u5728\u7f51\u7ad9\u4e0a\u4f7f\u7528\u8fd9\u6b3e\u5b57\u4f53\uff0c\u8bf7\u53c2\u9605 Issue #24\u3002
    4. \u5bf9\u4e8e\u642d\u914d\u7684\u897f\u6587\u5b57\u4f53\uff0c\u4e2a\u4eba\u63a8\u8350 Ysabeau \u7cfb\u5217\u5b57\u4f53\u3002\u53e6\u6709 Ysabeau Office \u4e0e\u971e\u9e5c\u6587\u6977\u8f7b\u4fbf\u7248\u7684\u5408\u5e76\u5b57\u4f53 LXGW Bright\uff0c\u91c7\u7528 \u5b57\u4f53\u5408\u5e76\u8865\u5168\u5de5\u5177 \u5c06\u4e24\u6b3e\u5b57\u4f53\u5408\u5e76\u800c\u6210\uff0c\u63d0\u4f9b TTF\u3001OTF\u3001WOFF\u3001WOFF2 \u56db\u79cd\u683c\u5f0f\u3002
    5. \u8be5\u5b57\u4f53\u7684\u66f4\u591a\u7248\u672c \uff08\u53ef\u80fd\u4f1a\u968f\u65f6\u53d8\u52a8\uff09
    6. \u971e\u9e5c\u6587\u6977\u5c4f\u5e55\u9605\u8bfb\u7248 / LXGW WenKai Screen \u7531\u4e8e\u539f\u7248\u300c\u971e\u9e5c\u6587\u6977\u300dRegular \u5b57\u91cd\u5728 PC \u548c Android \u5c4f\u5e55\u4e0a\u663e\u793a\u8f83\u7ec6\uff0c\u800c Bold \u5b57\u91cd\u9700\u8981\u5728\u7c97\u4f53\u6a21\u5f0f\u4e0b\u624d\u80fd\u8c03\u7528\uff0c\u7279\u5236\u4f5c\u4ee5 Bold \u5b57\u91cd\u4e3a\u57fa\u7840\u7684\uff0c\u52a0\u7c97\u540e\u7684\u300c\u971e\u9e5c\u6587\u6977\u300d\u4e0e Windows \u9ed8\u8ba4\u82f1\u6587\u5b57\u4f53 Segoe UI Regular \u7c97\u7ec6\u76f8\u5f53\uff0cPC \u548c Android \u624b\u673a\u5c4f\u5e55\u9605\u8bfb\u66f4\u52a0\u8212\u9002\uff0c\u65e0\u9700\u7279\u522b\u5207\u6362\u5230\u7c97\u4f53\u6a21\u5f0f\u3002
    7. \u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248 / LXGW WenKai Lite\uff1a\u5254\u9664 v1.100 \u7248\u672c\u589e\u8865\u7684\u4e00\u4e9b\u8f83\u4e0d\u5e38\u7528\u7684\u6c49\u5b57\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u5c06\u5b57\u4f53\u5d4c\u5165\u8f6f\u4ef6\u4e2d\u3002\u82e5\u5b8c\u6574\u7248\u6709\u5b57\u5f62\u4f18\u5316\u6216\u7279\u6027\u66f4\u65b0\uff0c\u7cbe\u7b80\u7248\u4e5f\u5c06\u4f1a\u8ddf\u8fdb\u3002\u7cbe\u7b80\u7248\u4e0d\u5305\u542b\u8c1a\u6587\u3002
    8. \u971e\u9e5c\u6587\u6977 GB / LXGW WenKai GB\uff1a\u5728\u6587\u6977\u57fa\u7840\u4e0a\u8fdb\u4e00\u6b65\u8c03\u6574\u5b57\u5f62\u548c\u7b14\u5f62\uff0c\u7b26\u5408 G \u6e90\u5b57\u5f62\u89c4\u8303\u3002\u5305\u542b\u300a\u901a\u7528\u89c4\u8303\u6c49\u5b57\u8868\u300b8105 \u4e2a\u6c49\u5b57\u3002\u53e6\u6709\u4e0e\u300c\u82ab\u837d\u300d\u7b49\u540c\u6e90\u5b57\u4f53\u5408\u5e76\u7684\u300c\u7f1d\u5408\u6977\u300d\uff0c\u53ca\u4f7f\u7528\u672c\u9879\u76ee\u5b57\u4f53\u8865\u5168\u7684 GB \u878d\u5408\u7248\u3002
    9. \u971e\u9e5c\u6587\u6977 TC / LXGW WenKai TC\uff1a\u4f9b\u7e41\u4f53\u4e2d\u6587\u7528\u6237\u548c\u65e7\u5b57\u5f62\u7231\u597d\u8005\u4f7f\u7528\uff0c\u57fa\u4e8e\u8f7b\u4fbf\u7248\u5236\u4f5c\uff0c\u91c7\u7528\u65e7\u5b57\u5f62\u5199\u6cd5\uff0c\u4e3b\u8981\u91c7\u7528 Klee One \u7684\u9690\u85cf\u5b57\u5f62\uff0c\u90e8\u5206\u90e8\u4ef6\u624b\u52a8\u4fee\u6539 \uff08\u5927\u90e8\u5206\u90e8\u4ef6\u53c2\u8003\u4e00\u70b9\u5b57\u574a\u300c\u4f20\u627f\u5b57\u5f62\u6807\u51c6\u5316\u6587\u4ef6\u300d\uff0c\u501f\u52a9\u300c\u6c49\u6587\u535a\u58eb\u300d\u300c\u56fd\u5b66\u8ff7\u300d\u300c\u5b57\u7edf\u7f51\u300d \u7b49\u5de5\u5177\u6309\u90e8\u4ef6\u67e5\u5b57\uff0c\u5bf9\u5b57\u5f62\u8fdb\u884c\u4fee\u6539\uff09\u3002\u6b64\u5916\u5df2\u6709\u57fa\u4e8e Klee One \u6539\u9020\u7684\u7e41\u4f53\u4e2d\u6587\u5b57\u4f53 \u82ab\u837d / Iansui\uff0c\u91c7\u7528\u53f0\u6e7e\u5730\u533a\u7684\u6559\u80b2\u6807\u51c6\u5b57\u5f62\uff1b\u53e6\u6709\u91c7\u7528\u9999\u6e2f\u5730\u533a\u5b57\u5f62\u6807\u51c6\u7684 \u82ab\u831c\u96c5\u6977 / JyunsaiKaai\u3002
    10. \u672c\u9879\u76ee\u4e3a\u5b57\u4f53\u9879\u76ee\uff0c\u6709\u5173 Magisk \u5b57\u4f53\u6a21\u5757\u7b49\u624b\u673a\u5b57\u4f53\u66ff\u6362\u6709\u5173\u7684\u95ee\u9898\uff0c\u8bf7\u79fb\u6b65\u6a21\u5757\u6a21\u677f\u7684 Issues \u91cc\u53cd\u9988\uff0c\u4e0d\u8981\u5728\u672c\u9879\u76ee\u5f00\u8bae\u9898\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_8","title":"\u6388\u6743\u4fe1\u606f","text":"

    \u672c\u5b57\u4f53\u662f\u57fa\u4e8e SIL Open Font License 1.1 \u6539\u9020\u7684 FONTWORKS \u5f00\u53d1\u5e76\u53d1\u5e03\u7684 Klee \u5f00\u6e90\u9879\u76ee\u3002Klee \u662f FONTWORKS \u7684\u5546\u6807\u3002

    \u732b\u5543\u7f51\u63d0\u4f9b SIL Open Font License 1.1 \u975e\u5b98\u65b9\u7b80\u4f53\u4e2d\u6587\u8bd1\u672c\u4fbf\u4e8e\u7406\u89e3\uff0c\u4ec5\u4f9b\u53c2\u8003\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_9","title":"\u8bb8\u53ef","text":"
    • \u8fd9\u6b3e\u5b57\u4f53\u65e0\u8bba\u662f\u4e2a\u4eba\u8fd8\u662f\u4f01\u4e1a\u90fd\u53ef\u4ee5\u81ea\u7531\u5546\u7528\uff0c\u65e0\u9700\u4ed8\u8d39\uff0c\u4e5f\u65e0\u9700\u77e5\u4f1a\u6216\u8005\u6807\u660e\u539f\u4f5c\u8005\u3002 \uff08\u4f46\u5982\u679c\u544a\u77e5\uff0c\u6211\u4f1a\u5f88\u611f\u6fc0\u3002\uff09
    • \u8fd9\u6b3e\u5b57\u4f53\u53ef\u4ee5\u81ea\u7531\u4f20\u64ad\u3001\u5206\u4eab\uff0c\u6216\u8005\u5c06\u5b57\u4f53\u5b89\u88c5\u4e8e\u7cfb\u7edf\u3001\u8f6f\u4ef6\u6216APP\u4e2d\u4e5f\u662f\u5141\u8bb8\u7684\uff0c\u53ef\u4ee5\u4e0e\u4efb\u4f55\u8f6f\u4ef6\u6346\u7ed1\u518d\u5206\u53d1\u4ee5\u53ca\uff0f\u6216\u4e00\u5e76\u9500\u552e\u3002
    • \u8fd9\u6b3e\u5b57\u4f53\u53ef\u4ee5\u81ea\u7531\u4fee\u6539\u3001\u6539\u9020\uff0c\u5236\u4f5c\u884d\u751f\u5b57\u4f53\u3002\u4fee\u6539\u6216\u6539\u9020\u540e\u7684\u5b57\u4f53\u4e5f\u5fc5\u987b\u540c\u6837\u4ee5 SIL OFL \u516c\u5f00\u3002
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_10","title":"\u9650\u5236","text":"
    • \u5728\u5236\u4f5c\u884d\u751f\u5b57\u4f53\u65f6\uff0c\u5b57\u4f53\u540d\u79f0\u4e0d\u53ef\u4f7f\u7528\u539f\u6709\u5b57\u4f53\u7684\u300c\u4fdd\u7559\u540d\u79f0\u300d\u3002\u672c\u5b57\u4f53\u4fdd\u7559\u540d\u79f0\u300c\u971e\u9e5c\u300d\u300cLXGW\u300d\uff0c\u57fa\u4e8e\u672c\u5b57\u4f53\u4e8c\u6b21\u884d\u751f\u7684\u5b57\u4f53\uff0c\u540d\u79f0\u4e0d\u53ef\u51fa\u73b0\u300c\u971e\u9e5c\u300d\u6216\u300cLXGW\u300d\u5b57\u6837\uff1b\u800c\u5728\u6ca1\u6709\u5bf9\u5b57\u4f53\u6e90\u4ee3\u7801\u8fdb\u884c\u4fee\u6539\u7684\u60c5\u51b5\u4e0b\uff0c\u91cd\u65b0\u7f16\u8bd1\u51fa\u6765\u7684\u5b57\u4f53\uff0c\u53ef\u4ee5\u7ee7\u7eed\u4f7f\u7528\u672c\u5b57\u4f53\u7684\u4fdd\u7559\u540d\u79f0\u300c\u971e\u9e5c\u300d\u300cLXGW\u300d\u3002
    • \u6839\u636e SIL Open Font License 1.1 \u8bb8\u53ef\u4e0e\u6761\u4ef6\u4e2d \u7b2c\u4e00\u6761\u7684\u89c4\u5b9a\uff0c \u7981\u6b62\u5355\u72ec\u51fa\u552e\u5b57\u4f53\u6587\u4ef6(OTF/TTF\u6587\u4ef6)\u7684\u884c\u4e3a\u3002
    • \u8be5\u5b57\u4f53\u4e0d\u53ef\u5728 SIL Open Font License 1.1 \u4ee5\u5916\u7684\u6388\u6743\u8bb8\u53ef\u4e0b\u53d1\u884c\u3002

    \u4ee5\u4e0a\u662f\u6458\u5f55\u7684\u90e8\u5206\u5b57\u4f53\u5b98\u65b9\u4ecb\u7ecd\u6587\u6863

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#mkdocs","title":"\u57fa\u4e8eMkdocs\u7684\u7f51\u7ad9\u5b57\u4f53\u7f8e\u5316\u7528\u6cd5","text":"

    \u5728mkdocs.yml\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9

    extra_css:\n  - https://static.zeoseven.com/zsft/292/main/result.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css\n

    \u7136\u540e\u5728extra.css\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9

    @import url('https://static.zeoseven.com/zsft/292/main/result.css');\n\nbody {\nfont-family: \"LXGW WenKai\";\nfont-weight: normal;\n}\n\n\n/* button.md-top {\n    font-family: LXGW WenKai;\n    font-size: 16px;\n    font-weight: lighter;\n} */\n

    \u4e0d\u61c2extra_css\u7684\u7528\u6cd5\u7684\u53ef\u4ee5\u770b\u4e00\u4e0b\u6211\u5199\u7684extra_css\u90e8\u5206\u6559\u7a0b

    Tip

    \u5207\u6362\u5b57\u4f53\u540e\u53ef\u80fd\u8fd4\u56de\u9876\u90e8\u6309\u94ae\u4f1a\u5728\u4e2a\u522b\u6d4f\u89c8\u5668\u663e\u793a\u5f02\u5e38 \u5efa\u8bae\u5728extra.css\u91cc\u52a0\u5165

    button.md-top {\n  font-family: LXGW WenKai; /* \u4fee\u6539\u5b57\u4f53 */\n  font-size: 16px; /* \u4fee\u6539\u5b57\u4f53\u5927\u5c0f */\n  font-weight: bold; /* \u4fee\u6539\u5b57\u4f53\u7c97\u7ec6 */\n  color: #518FC1; /* \u4fee\u6539\u5b57\u4f53\u989c\u8272 */\n}\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkpdf/","title":"\u5d4c\u5165PDF","text":"

    \u5d4c\u5165PDF

    \u5d4c\u5165PDF\u4ee3\u7801 \uff0c\u6ce8\u610fPDF\u7684\u76f8\u5bf9\u5730\u5740

    <iframe src=\"../\u4e2a\u4eba\u7b80\u5386.pdf (\u76f8\u5bf9\u5730\u5740)\" width=\"100%\" height=\"800px\" style=\"border: 1px solid #ccc; overflow: auto;\"></iframe>\n

    \u6211\u7684\u5b8c\u6574\u4ee3\u7801\uff1a

    <div class=\"grid cards\" markdown>\n\n-   :octicons-bookmark-16:{ .lg .middle } __\u4e2a\u4eba\u7b80\u5386__\n\n    ---\n\n    <iframe src=\"../\u4e2a\u4eba\u7b80\u5386.pdf\" width=\"100%\" height=\"800px\" style=\"border: 1px solid #ccc; overflow: auto;\">\n    </iframe>\n\n\n</div>\n

    \u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/shubiao/","title":"JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u6587\u7ae0\u4ecb\u7ecd\u4e86\u901a\u8fc7JavaScript\u548cCSS\u81ea\u5b9a\u4e49\u7f51\u9875\u9f20\u6807\u6837\u5f0f\u7684\u5b9e\u73b0\u65b9\u6cd5\uff0c\u91cd\u70b9\u8bf4\u660e\u4e86\u5173\u952e\u53c2\u6570\u914d\u7f6e\uff0c\u5305\u62ec\u9f20\u6807\u5c3a\u5bf8\u3001\u989c\u8272\uff08\u652f\u6301RGB\u503c\u548c\u989c\u8272\u540d\u79f0\uff09\u4ee5\u53ca\u5706\u5f62\u8ddf\u968f\u6548\u679c\u3002\u63d0\u4f9b\u4e86\u5177\u4f53\u7684\u4ee3\u7801\u793a\u4f8b\u548c\u914d\u7f6e\u8def\u5f84\uff0c\u5e76\u5f3a\u8c03\u9700\u5728mkdocs.yml\u4e2d\u5f15\u5165\u76f8\u5173\u6587\u4ef6\u3002\u9002\u7528\u4e8e\u9700\u8981\u4e2a\u6027\u5316\u9f20\u6807\u4ea4\u4e92\u6548\u679c\u7684\u7f51\u9875\u5f00\u53d1\u573a\u666f\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a129 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a114

    \u4e0d\u5efa\u8bae\u66f4\u6539\uff0c\u56e0\u4e3a\u9ed8\u8ba4\u5c31\u662f\u6700\u7b80\u6d01

    \u5728docs/javascripts/extra.js\u4e0b\u590d\u5236\u7c98\u8d34\uff1a

    var CURSOR;\n\nMath.lerp = (a, b, n) => (1 - n) * a + n * b;\n\nconst getStyle = (el, attr) => {\n    try {\n        return window.getComputedStyle\n            ? window.getComputedStyle(el)[attr]\n            : el.currentStyle[attr];\n    } catch (e) {}\n    return \"\";\n};\n\nclass Cursor {\n    constructor() {\n        this.pos = {curr: null, prev: null};\n        this.pt = [];\n        this.create();\n        this.init();\n        this.render();\n    }\n\n    move(left, top) {\n        this.cursor.style[\"left\"] = `${left}px`;\n        this.cursor.style[\"top\"] = `${top}px`;\n    }\n\n    create() {\n        if (!this.cursor) {\n            this.cursor = document.createElement(\"div\");\n            this.cursor.id = \"cursor\";\n            this.cursor.classList.add(\"hidden\");\n            document.body.append(this.cursor);\n        }\n\n        var el = document.getElementsByTagName('*');\n        for (let i = 0; i < el.length; i++)\n            if (getStyle(el[i], \"cursor\") == \"pointer\")\n                this.pt.push(el[i].outerHTML);\n\n        document.body.appendChild((this.scr = document.createElement(\"style\")));\n        // \u8fd9\u91cc\u6539\u53d8\u9f20\u6807\u6307\u9488\u7684\u989c\u8272 \u7531svg\u751f\u6210\n        this.scr.innerHTML = `* {cursor: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' width='8px' height='8px'><circle cx='4' cy='4' r='4' opacity='.5'/></svg>\") 4 4, auto}`;\n    }\n\n    refresh() {\n        this.scr.remove();\n        this.cursor.classList.remove(\"hover\");\n        this.cursor.classList.remove(\"active\");\n        this.pos = {curr: null, prev: null};\n        this.pt = [];\n\n        this.create();\n        this.init();\n        this.render();\n    }\n\n    init() {\n        document.onmouseover  = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.add(\"hover\");\n        document.onmouseout   = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.remove(\"hover\");\n        document.onmousemove  = e => {(this.pos.curr == null) && this.move(e.clientX - 8, e.clientY - 8); this.pos.curr = {x: e.clientX - 8, y: e.clientY - 8}; this.cursor.classList.remove(\"hidden\");};\n        document.onmouseenter = e => this.cursor.classList.remove(\"hidden\");\n        document.onmouseleave = e => this.cursor.classList.add(\"hidden\");\n        document.onmousedown  = e => this.cursor.classList.add(\"active\");\n        document.onmouseup    = e => this.cursor.classList.remove(\"active\");\n    }\n\n    render() {\n        if (this.pos.prev) {\n            this.pos.prev.x = Math.lerp(this.pos.prev.x, this.pos.curr.x, 0.15);\n            this.pos.prev.y = Math.lerp(this.pos.prev.y, this.pos.curr.y, 0.15);\n            this.move(this.pos.prev.x, this.pos.prev.y);\n        } else {\n            this.pos.prev = this.pos.curr;\n        }\n        requestAnimationFrame(() => this.render());\n    }\n}\n\n(() => {\n    CURSOR = new Cursor();\n    // \u9700\u8981\u91cd\u65b0\u83b7\u53d6\u5217\u8868\u65f6\uff0c\u4f7f\u7528 CURSOR.refresh()\n})();\n
    \u5176\u4e2d\u6bd4\u8f83\u91cd\u8981\u7684\u53c2\u6570\u5c31\u662f\u9f20\u6807\u7684\u5c3a\u5bf8\u548c\u989c\u8272\uff0c\u5df2\u7ecf\u5728\u4e0a\u56fe\u4e2d\u6807\u51fa\uff0c\u76ee\u524d\u53d1\u73b0\u989c\u8272\u53ea\u652f\u6301RGB\u5199\u6cd5\u548c\u56fa\u6709\u540d\u79f0\u5199\u6cd5\uff08\u4f8b\u5982red\u8fd9\u79cd\uff09\uff0c\u5176\u4ed6\u53c2\u6570\u4e5f\u53ef\u4ee5\u81ea\u884c\u6478\u7d22\uff1a

    * {cursor: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' width='8px' height='8px'><circle cx='4' cy='4' r='4' opacity='1.0' fill='rgb(57, 197, 187)'/></svg>\") 4 4, auto}`\n

    \u5728docs/stylesheets/extra.css\u6dfb\u52a0\u5982\u4e0b\u4ee3\u7801\uff1a

    /* \u9f20\u6807\u6837\u5f0f */\n#cursor {\n  position: fixed;\n  width: 16px;\n  height: 16px;\n  /* \u8fd9\u91cc\u6539\u53d8\u8ddf\u968f\u7684\u5e95\u8272 */\n  background: var(--theme-color);\n  border-radius: 8px;\n  opacity: 0.25;\n  z-index: 10086;\n  pointer-events: none;\n  transition: 0.2s ease-in-out;\n  transition-property: background, opacity, transform;\n}\n\n#cursor.hidden {\n  opacity: 0;\n}\n\n#cursor.hover {\n  opacity: 0.1;\n  transform: scale(2.5);\n  -webkit-transform: scale(2.5);\n  -moz-transform: scale(2.5);\n  -ms-transform: scale(2.5);\n  -o-transform: scale(2.5);\n}\n\n#cursor.active {\n  opacity: 0.5;\n  transform: scale(0.5);\n  -webkit-transform: scale(0.5);\n  -moz-transform: scale(0.5);\n  -ms-transform: scale(0.5);\n  -o-transform: scale(0.5);\n}\n
    \u8fd9\u91cc\u6bd4\u8f83\u91cd\u8981\u7684\u53c2\u6570\u5c31\u662f\u9f20\u6807\u8ddf\u968f\u7684\u5706\u5f62\u989c\u8272\uff0c\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u559c\u597d\u8fdb\u884c\u66f4\u6539\uff1a
    #cursor {\n  /* \u8fd9\u91cc\u6539\u53d8\u8ddf\u968f\u7684\u5e95\u8272 */\n  background: rgb(57, 197, 187);\n}\n

    \u6ce8\u610f\u26a0\ufe0f

    \u9700\u8981\u5728mkdocs.yml\u4e2d\u5f15\u5165js\u548ccss

    extra_javascript:\n  - javascripts/extra.js\n  - javascripts/mathjax.js\nextra_css:\n  - stylesheets/extra.css\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/","title":"\u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u6280\u672f\u65b9\u6848\u901a\u8fc7git-revision-date-localized\u63d2\u4ef6\u4e3aMKdocs\u6587\u6863\u7cfb\u7edf\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233\u529f\u80fd\u3002\u6838\u5fc3\u5b9e\u73b0\u662f\u5728CI\u5de5\u4f5c\u6d41\u4e2d\u4f18\u5316git\u5386\u53f2\u68c0\u67e5\u7b56\u7565\uff0c\u65e2\u63d0\u5347\u4e86\u672c\u5730\u6e32\u67d3\u901f\u5ea6\uff0c\u53c8\u786e\u4fdd\u53d1\u5e03\u65f6\u51c6\u786e\u663e\u793a\u6700\u540e\u66f4\u65b0\u65f6\u95f4\u3002\u8be5\u65b9\u6cd5\u9002\u7528\u4e8e\u9700\u8981\u5c55\u793a\u6587\u6863\u65f6\u6548\u6027\u7684\u573a\u666f\uff0c\u901a\u8fc7\u4fee\u6539ci.yml\u914d\u7f6e\u6587\u4ef6\u5373\u53ef\u5feb\u901f\u90e8\u7f72\uff0c\u517c\u987e\u4e86\u5f00\u53d1\u6548\u7387\u548c\u529f\u80fd\u5b8c\u6574\u6027\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a203 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a51

    \u53c2\u8003\u65b9\u6cd5\uff1agit \u4fee\u8ba2\u65e5\u671f\u672c\u5730\u5316

    \u5229\u7528git -revision-date-localized\u63d2\u4ef6\u6dfb\u52a0\u4e86\u5bf9\u6dfb\u52a0\u4e0a\u6b21\u66f4\u65b0\u65e5\u671f\u548c\u5728\u6bcf\u4e2a\u9875\u9762\u5e95\u90e8\u521b\u5efa\u6587\u6863\u7684\u652f\u6301

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_1","title":"\u5b89\u88c5","text":"
    pip install mkdocs-git-revision-date-localized-plugin\n

    .github/workflows/\u4e0b\u7684ci.yml\u589e\u52a0\u9ad8\u4eae\u7684\u51e0\u884c\uff1a

    name: ci \non:\n  push:\n    branches:\n      - master \n      - main\npermissions:\n  contents: write\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - uses: actions/setup-python@v4\n        with:\n          python-version: 3.x\n      - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV \n      - uses: actions/cache@v3\n        with:\n          key: mkdocs-material-${ env.cache_id }\n          path: .cache\n          restore-keys: |\n            mkdocs-material-\n      - run: pip install mkdocs-git-revision-date-localized-plugin\n      - run: pip install mkdocs-git-authors-plugin\n      # - run: pip install mkdocs-rss-plugin           \n      - run: pip install mkdocs-material \n      - run: mkdocs gh-deploy --force\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_2","title":"\u914d\u7f6e","text":"

    \u7136\u540e\u5c06\u4ee5\u4e0b\u884c\u6dfb\u52a0\u5230mkdocs.yml\uff1a

    plugins:\n  - git-revision-date-localized:\n      enable_creation_date: true\n

    \u8be6\u7ec6\u7684\u914d\u7f6e\u8bf7\u770b\uff1amkdocs-git-revision-date-localized-plugin

    \u53ef\u9009\u7684\u914d\u7f6e\u5f88\u591a\uff1a

    plugins:\n  - git-revision-date-localized:\n      type: timeago #\u65f6\u95f4\u7c7b\u578b\n      custom_format: \"%d. %B %Y\"  # \u65f6\u95f4\u683c\u5f0f\n      timezone: Europe/Amsterdam #\u65f6\u533a\n      locale: en #\u9996\u9009\u8bed\u8a00\n      fallback_to_build_date: false #\u8bb8\u56de\u9000\u5230git \u4e0d\u53ef\u7528\u65f6mkdocs build\u6267\u884c\u7684\u65f6\u95f4\n      enable_creation_date: true #\u662f\u5426\u542f\u7528\u521b\u5efa\u65f6\u95f4\n      exclude:  #\u6392\u9664\u7684\u9875\u9762\n          - index.md\n      enabled: true #\u662f\u5426\u542f\u7528\n      strict: true\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_3","title":"\u6e29\u99a8\u63d0\u793a","text":"

    \u5bf9\u4e8e\u5927\u578b\u5355\u4e00\u7684\u6587\u6863\u5e93\uff0c\u6267\u884cmkdocs serve\u540e\u7684\u6e32\u67d3\u901f\u5ea6\u660e\u663e\u53d8\u6162\uff0c\u8fd9\u662f\u56e0\u4e3a\u6bcf\u6b21\u6e32\u67d3\u90fd\u4f1a\u68c0\u67e5\u6240\u6709\u6587\u4ef6\u7684git\u5386\u53f2\u8bb0\u5f55\u3002\u5982\u679c\u60a8\u4e0d\u9700\u8981\u8fd9\u4e2a\u529f\u80fd\uff0c\u53ef\u4ee5\u901a\u8fc7\u5c06enabled\u8bbe\u7f6e\u4e3afalse\u6765\u7981\u7528\u5b83\u3002

    \u6bd4\u8f83\u63a8\u8350\u8fd9\u79cd\u65b9\u6cd5:

      - git-committers:\n      enabled: !ENV [CI, false]\n
    \u4fee\u6539enabled\u7684\u7b56\u7565\uff0c\u8fd9\u6837\u5c31\u4e0d\u4f1a\u6bcf\u6b21\u672c\u5730\u6e32\u67d3\u90fd\u68c0\u67e5\u6240\u6709\u6587\u4ef6\u7684git\u5386\u53f2\u8bb0\u5f55\uff0c\u6e32\u67d3\u901f\u5ea6\u4f1a\u660e\u663e\u52a0\u5feb\uff0c\u53d1\u5e03\u7f51\u7ad9\u65f6\u5019\u4f1a\u6b63\u5e38\u663e\u793a\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/","title":"\u6dfb\u52a0\u5728\u7ebf\u804a\u5929","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    Tidio\u63d0\u4f9b\u514d\u8d39\u3001\u65e0\u9700\u68af\u5b50\u7684\u5728\u7ebf\u804a\u5929\u89e3\u51b3\u65b9\u6848\uff0c\u901a\u8fc7\u7b80\u5355\u7684JavaScript\u4ee3\u7801\u96c6\u6210\u5230\u7f51\u7ad9\u3002\u7528\u6237\u53ea\u9700\u6ce8\u518c\u8d26\u53f7\uff0c\u4ece\u8bbe\u7f6e\u4e2d\u83b7\u53d6\u4e13\u5c5e\u4ee3\u7801\u5e76\u5d4c\u5165\u7f51\u9875\u5373\u53ef\u5b9e\u73b0\u5b9e\u65f6\u804a\u5929\u529f\u80fd\u3002\u8be5\u5de5\u5177\u5b89\u88c5\u4fbf\u6377\uff0c\u9002\u5408\u5feb\u901f\u90e8\u7f72\uff0c\u6ee1\u8db3\u57fa\u7840\u5ba2\u670d\u9700\u6c42\uff0c\u5c24\u5176\u9002\u5408\u4e2d\u5c0f\u578b\u7f51\u7ad9\u4f7f\u7528\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a182 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a1

    \u4ee5Tidio\u4e3a\u4f8b,Tidio\u514d\u8d39\u7248\u5df2\u7ecf\u5b8c\u5168\u591f\u7528\u4e14\u65e0\u9700\u68af\u5b50

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#tidio","title":"\u8bbf\u95eeTidio\u5b98\u7f51","text":"

    \u8981\u5728\u60a8\u7684\u7f51\u7ad9\u4e0a\u4f7f\u7528 javascript \u4ee3\u7801\u65b9\u6cd5\u5b89\u88c5 Tidio\uff0c\u60a8\u9700\u8981\u521b\u5efa\u4e00\u4e2a Tidio \u5e10\u6237\u3002\u8981\u521b\u5efa Tidio \u5e10\u6237\uff0c\u8bf7\u8bbf\u95ee\u6211\u4eec\u7684\u7f51\u7ad9\uff0c\u7136\u540e\u5355\u51fb \u201c\u5f00\u59cb\u201d \u6309\u94ae\u521b\u5efa\u65b0\u7684 Tidio \u5e10\u6237\u3002\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528 \u201c\u767b\u5f55\u201d \u9009\u9879\u6765\u4f7f\u7528\u60a8\u73b0\u6709\u7684\u5e10\u6237\u3002

    \u5b89\u88c5\u8fc7\u7a0b\u5f88\u7b80\u5355\uff0c\u56e0\u4e3a\u5b83\u53ea\u9700\u8981\u60a8\u5c06\u4e00\u884c\u4ee3\u7801\u7c98\u8d34\u5230\u7f51\u7ad9\u4ee3\u7801\u7684\u9002\u5f53\u4f4d\u7f6e\u3002

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#_1","title":"\u627e\u5230\u5b89\u88c5\u4ee3\u7801","text":"

    \u53ef\u4ee5\u524d\u5f80\u201c\u8bbe\u7f6e\u201d>\u201c\u9891\u9053\u201d>\u201c\u5b9e\u65f6\u804a\u5929\u201d> \u201c\u5b89\u88c5\u201d \u90e8\u5206\u627e\u5230\u60a8\u72ec\u7279\u7684 Tidio javascript \u4ee3\u7801\u3002\u8fd8\u5c06\u5728\u5e10\u6237\u521b\u5efa\u4e4b\u65c5\u7684\u6700\u540e\u9636\u6bb5\u770b\u5230\u4ee3\u7801\u3002 \u6bd4\u5982\uff1a

    <script src=\"//code.tidio.co/6jmawe9m5wy4ahvlhub2riyrnujz7xxi.js\" async></script>\n

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#_2","title":"\u653e\u5230\u4f60\u9700\u8981\u7684\u9875\u9762\u5373\u53ef","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/","title":"\u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u4ecb\u7ecd\u4e86\u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1\u7684\u5b9e\u73b0\u65b9\u6cd5\uff0c\u91cd\u70b9\u8bb2\u89e3\u901a\u8fc7CSS\u6837\u5f0f\u5b9e\u73b0\u56fe\u7247\u548c\u8fb9\u6846\u7684\u5706\u89d2\u6548\u679c\u3002\u5177\u4f53\u5305\u62ec\u521b\u5efaCSS\u6587\u4ef6\u5e76\u5728mkdocs.yml\u4e2d\u5f15\u5165\uff0c\u4f7f\u7528border-radius\u5c5e\u6027\u8bbe\u7f6e\u5706\u89d2\u534a\u5f84\uff0c\u4ee5\u53ca\u5728Markdown\u6587\u4ef6\u4e2d\u5e94\u7528\u6837\u5f0f\u7684\u4ee3\u7801\u793a\u4f8b\u3002\u540c\u65f6\u5c55\u793a\u4e86\u5229\u7528\u5185\u7f6egrid cards\u7ec4\u4ef6\u548c\u6309\u94ae\u6837\u5f0f\u7684\u5706\u89d2\u5316\u5b9e\u73b0\u65b9\u6848\uff0c\u4e3a\u7f51\u9875UI\u8bbe\u8ba1\u63d0\u4f9b\u4e86\u7b80\u6d01\u7f8e\u89c2\u7684\u89c6\u89c9\u89e3\u51b3\u65b9\u6848\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a66 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a213

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_1","title":"\u793a\u4f8b","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_2","title":"\u5982\u4f55\u8bbe\u8ba1","text":"

    \u65b0\u5efacss\u6587\u4ef6\uff0c\u5728mkdocs.yml\u5f15\u5165css

    :root {\n  --admonition-border-left-width: 0.2rem;\n  --base-border-radius: 0.5rem;\n}\n\n/* Change font family of filename present on top of code block. */\n/* .highlight span.filename {\n  border-bottom: none;\n  border-radius: var(--base-border-radius);\n  display: inline;\n  font-family: var(--md-code-font-family);\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  margin-bottom: 5px;\n  text-align: center;\n}\n.highlight span.filename + pre > code {\n  border-radius: var(--base-border-radius);\n  border-top-left-radius: 0;\n}\n.md-typeset pre > code {\n  border-radius: var(--base-border-radius);\n} */\n\n/* Customize admonition layout */\n/* .md-typeset .admonition {\n  border-width: 0px;\n  border-left-width: var(--admonition-border-left-width);\n}\n\n[dir=\"ltr\"] .md-typeset blockquote {\n  border-radius: 0.2rem;\n  border-left-width: var(--admonition-border-left-width);\n} */\n\n/* Grid Cards */\n.md-typeset .grid.cards > ul > li {\n  border-radius: var(--base-border-radius);\n}\n.md-typeset .grid.cards > ul > li:hover {\n  box-shadow: 0 0 0.2rem #ffffff40;\n}\n\n/* Markdown Button */\n.md-typeset .md-button {\n  border-radius: var(--base-border-radius);\n}\n\n/* Footer: Social Links */\n.md-social__link svg {\n  max-height: 1rem;\n}\n\n\n/* Forms */\n.md-search__form {\n  border-radius: var(--base-border-radius);\n}\n\n[data-md-toggle=\"search\"]:checked ~ .md-header .md-search__form {\n  border-top-right-radius: var(--base-border-radius);\n  border-top-left-radius: var(--base-border-radius);\n}\n\n[dir=\"ltr\"] .md-search__output {\n  border-bottom-right-radius: var(--base-border-radius);\n  border-bottom-left-radius: var(--base-border-radius);\n}\n\n/* Blog - index.md */\n/* div.md-content header {\n  display: none;\n}\n\n.md-post--excerpt {\n  background-color: var(--md-accent-fg-color--transparent);\n  box-shadow: 0 0 0 1rem var(--md-accent-fg-color--transparent);\n  border-radius: var(--base-border-radius);\n}\n\n.md-post--excerpt .md-post__header {\n  justify-content: center;\n}\n\n.md-post--excerpt .md-post__content > h2,\n.md-post__action {\n  text-align: center;\n} */\n\n/* Table */\n.md-typeset table:not([class]) {\n  border-radius: var(--base-border-radius);\n}\n\n\n\n\n\n.carousel {\n  width: 60%;\n  height: 100%;\n\n  border-radius: 0.4rem;\n  overflow: hidden;\n  position: relative;\n\n  /* \u5c45\u4e2d */\n  margin-left: auto;\n  margin-right: auto;\n\n  border: 0.075rem solid #7b7b7b7a;\n  box-shadow: var(--md-shadow-z1);\n}\n\n.carousel-container {\n  width: 100%;\n  height: 100%;\n\n  position: relative;\n  left: 0;\n\n  display: flex;\n\n  /* \u8fc7\u6e21\u52a8\u753b 1s */\n  transition: all 1s;\n}\n\n.carousel-hover {\n  height: 100%;\n  width: 10%;\n  position: absolute;\n  top: 0;\n\n  /* \u5b50\u5143\u7d20\u5782\u76f4\u5c45\u4e2d */\n  display: flex;\n  flex-flow: column nowrap;\n  align-items: center;\n  justify-content: center;\n}\n.carousel-hover.left {\n  left: 0;\n}\n.carousel-hover.right {\n  right: 0;\n}\n\n.carousel-hover button {\n  background-color: var(--md-accent-fg-color);\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n.carousel-hover button::after {\n  display: block;\n  height: 1.5rem;\n  width: 1.5rem;\n\n  background-color: white;\n  content: \"\";\n  mask-position: center;\n  -webkit-mask-position: center;\n}\n.carousel-hover.left button::after {\n  mask-image: var(--md-tabbed-icon--prev);\n  -webkit-mask-image: var(--md-tabbed-icon--prev);\n}\n.carousel-hover.right button::after {\n  mask-image: var(--md-tabbed-icon--next);\n  -webkit-mask-image: var(--md-tabbed-icon--next);\n}\n\n/* hover \u5916\u5c42 */\n.carousel-hover:hover button {\n  opacity: 0.5;\n  transition: opacity 0.3s;\n}\n/* hover \u5185\u5c42 */\n.carousel-hover button:hover {\n  opacity: 0.8;\n  transition: opacity 0.3s;\n}\n\n.carousel-container a {\n  width: 100%;\n  height: 100%;\n\n  flex-shrink: 0;\n}\n\n.carousel-container img {\n  width: 100%;\n  height: 100%;\n\n  object-fit: cover;\n  display: block;\n}\n\n.carousel-bottom {\n  position: absolute;\n  /* \u5bbd\u5ea6\u7b49\u540c\u4e8e\u5185\u5bb9\u5bbd\u5ea6 */\n  width: 100%;\n  padding: 20px;\n\n  bottom: 0;\n\n  display: flex;\n  justify-content: center;\n  /* \u6307\u793a\u5668\u95f4\u8ddd */\n  gap: 10px;\n\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n.carousel-bottom:hover {\n  opacity: 0.8;\n  transition: opacity 0.3s;\n}\n\n.carousel-bottom .indicator {\n  height: 5px;\n  width: 20px;\n\n  background-color: var(--md-accent-fg-color);\n\n  opacity: 0.5;\n  cursor: pointer;\n}\n\n.carousel:hover .bottom .indicator {\n  opacity: 1;\n}\n.carousel:hover .shift .btn {\n  opacity: 1;\n}\n\n@media screen and (max-width: 600px) {\n  .carousel {\n      width: 100%;\n  }\n\n  .carousel-hover button {\n      opacity: 1;\n  }\n}\n
    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_3","title":"\u56fe\u7247\u5706\u89d2\u5316","text":"

    extra.css\u91cc\u5f15\u5165\uff1a

    img.img1 {\nborder-radius: 25px;\n\n}\n

    \u5728md\u6587\u4ef6\u91cc\u4f7f\u7528\uff1a

    ![image.png](https://s2.loli.net/2024/04/26/Czi9uAQhmbBlkfG.png){.img1}\n
    \u6548\u679c\uff1a

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_4","title":"\u5706\u89d2\u8fb9\u6846","text":"

    \u5706\u89d2\u8fb9\u6846\u5982\u4f55\u5b9e\u73b0

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#grid-cards","title":"\u5229\u7528\u5185\u7f6e\u7684grid cards","text":"
    <div class=\"grid cards\" markdown>\n\n-   :simple-materialformkdocs:{ .lg .middle } __Mkdocs\u6559\u7a0b__\n\n    ---\n\n    - [\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages](blog/Mkdocs/mkdocs1.md)\n    - [Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)](blog/Mkdocs/mkdocs2.md)\n    - [\u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe](blog/websitebeauty/linktech.md)\n    - [\u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2](blog/Mkdocs/mkdocsblog.md)\n    - [Blogger](blog/index.md)\n</div>\n

    \u6548\u679c\uff1a

    • Mkdocs\u6559\u7a0b

      \u793a\u4f8b\u6587\u5b57

    ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_5","title":"\u6309\u94ae","text":"

    [Send Email :fontawesome-solid-paper-plane:](mailto:<wangkewen821@gmail.com>){.md-button}\n
    \u6548\u679c\uff1a Send Email

    ","tags":["Mkdocs"]},{"location":"develop/git/","title":"Git \u5b9e\u7528\u6280\u5de7","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u672c\u6587\u4ecb\u7ecd\u4e86Git\u7248\u672c\u63a7\u5236\u7684\u6838\u5fc3\u64cd\u4f5c\u4e0e\u5b9e\u7528\u6280\u5de7\uff0c\u6db5\u76d6\u4ed3\u5e93\u521b\u5efa\u3001\u5206\u652f\u7ba1\u7406\u3001\u51b2\u7a81\u89e3\u51b3\u7b49\u57fa\u7840\u529f\u80fd\uff0c\u5e76\u91cd\u70b9\u8bb2\u89e3\u4e86stash\u6682\u5b58\u3001rebase/merge\u7b56\u7565\u9009\u62e9\u3001cherry-pick\u70ed\u4fee\u590d\u7b49\u9ad8\u7ea7\u7528\u6cd5\u3002\u901a\u8fc7\u5177\u4f53\u4ee3\u7801\u793a\u4f8b\u548c\u64cd\u4f5c\u56fe\u793a\uff0c\u7cfb\u7edf\u6f14\u793a\u4e86\u5982\u4f55\u9ad8\u6548\u5904\u7406\u65e5\u5e38\u5f00\u53d1\u4e2d\u7684\u7248\u672c\u63a7\u5236\u9700\u6c42\uff0c\u7279\u522b\u9488\u5bf9\u4ee3\u7801\u56de\u9000\u3001\u63d0\u4ea4\u4fee\u6539\u7b49\u5e38\u89c1\u573a\u666f\u63d0\u4f9b\u4e86\u4e13\u4e1a\u89e3\u51b3\u65b9\u6848\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a199 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a48

    Info

    \u539f\u6587\u5730\u5740:Git \u5b9e\u7528\u6280\u5de7

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#git","title":"Git \u5b9e\u7528\u6280\u5de7","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#_1","title":"\u4e00\u3001\u57fa\u672c\u64cd\u4f5c","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#1-git","title":"1. \u65b0\u5efa git \u4ed3\u5e93","text":"
    git init\n
    git init -b main\n\ngit config --global init.defaultBranch main\n\ngit branch -m main\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#2","title":"2. \u514b\u9686\u8fdc\u7a0b\u4ed3\u5e93","text":"
    git clone http://git.example.com/someone/test.git\n\ngit clone http://git.example.com/someone/test.git test\n\ngit clone http://git.example.com/someone/test.git --depth=1 -b main\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#3","title":"3. \u63d0\u4ea4\u4ee3\u7801","text":"
    git add -a\n\ngit add -u\n\ngit add .\n\ngit commit\n\ngit commit -m \"first commit\"\n\ngit commit -am \"first commit\"\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#4","title":"4. \u67e5\u770b\u4ed3\u5e93\u72b6\u6001","text":"
    git status\n
    git status -s\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#5","title":"5. \u67e5\u770b\u63d0\u4ea4\u5386\u53f2","text":"

    https://git-scm.com/docs/git-log

    git log\n

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#6","title":"6. \u65b0\u5efa\u5206\u652f","text":"
    git branch test\n\ngit checkout test\n\ngit checkout -b test\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#7","title":"7. \u5408\u5e76\u5206\u652f","text":"
    git checkout main\n\ngit merge test\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#8","title":"8. \u5220\u9664\u5206\u652f","text":"
    git branch -d test-not-need\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#9","title":"9. \u5408\u5e76\u51b2\u7a81","text":"

    \u5f53\u4e24\u4e2a\u5206\u652f\u90fd\u5bf9\u540c\u4e00\u884c\u8fdb\u884c\u4e86\u4fee\u6539\uff0cgit \u4fbf\u4f1a\u4ea7\u751f\u51b2\u7a81\uff0c\u5e76\u6807\u8bb0\u4e3a\u672a\u5408\u5e76

    \u6b64\u65f6\u5c06\u6bcf\u4e2a\u6587\u4ef6\u8fdb\u884c\u4fee\u6539\uff0c\u786e\u8ba4\u6700\u540e\u7684\u5185\u5bb9\uff0c\u4f7f\u7528 git add \u65b9\u6cd5\u6807\u8bb0\u4e3a\u51b2\u7a81\u5df2\u89e3\u51b3

    git add .\\A.txt\n
    \u5728\u6240\u6709\u6587\u4ef6\u7684\u51b2\u7a81\u5747\u5df2\u89e3\u51b3\u540e\uff0c\u4f7f\u7528 commit \u63d0\u4ea4\u6b64\u6b21\u4fee\u6539\u3002

    git merge --abort\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#10","title":"10. \u8fdc\u7a0b\u4ed3\u5e93","text":"
    git remote\n

    \u9ed8\u8ba4\u5e94\u8be5\u4e3a\u7a7a

    git remote add origin http://git.example.com/someone/test.git\n\ngit push origin main\n\ngit fetch --all\n\ngit fetch origin\n\ngit branch --set-upstream-to=origin/main main\n\ngit branch -u origin/main main\n

    git push -u origin main\n\ngit pull\n\ngit pull origin main\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#_2","title":"\u4e8c\u3001\u5e38\u89c1\u6280\u5de7","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#1","title":"1. \u4e34\u65f6\u4fdd\u5b58\u6210\u679c","text":"
    git stash\n
    git stash pop\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#2-rebasemerge","title":"2. \u5408\u5e76\u5206\u652f\u7075\u6d3b\u9009\u62e9 rebase/merge","text":"
    git merge test\n\ngit rebase test\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#3-cherry-pick","title":"3. cherry-pick","text":"

    \u9002\u5408 hotfix

    git cherry-pick 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#4_1","title":"4. \u4fee\u6539\u4e0a\u6b21\u63d0\u4ea4","text":"
    git commit --amend\n

    \u4f1a\u540c\u65f6\u63d0\u4ea4\u6682\u5b58\u7684\u6587\u4ef6

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#5_1","title":"5. \u53d6\u6d88\u6587\u4ef6\u4fee\u6539","text":"
    git checkout .\\C.txt\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#6_1","title":"6. \u5f03\u7528\u63d0\u4ea4","text":"
    \u4fdd\u7559\u6587\u4ef6\ngit reset --soft 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n\n\u4e22\u5f03\u4fee\u6539\ngit reset --hard 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#7_1","title":"7. \u8865\u4e01\u6587\u4ef6","text":"
    git\ngit diff [file] > a.patch\ngit apply a.patch\n
    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/lighthouse/","title":"\u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd","text":"

    \u53ef\u4ee5\u770b\u5230\u6211\u7684\u7f51\u7ad9\u6027\u80fd\u8fd8\u662f\u4e0d\u9519\u7684\uff0c\u5982\u679c\u4f60\u60f3\u6d4b\u8bd5\u81ea\u5df1\u7684\u7f51\u7ad9\u6027\u80fd\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4e00\u4e0b

    \u6253\u5f00\u8c37\u6b4c\u6216\u8005Edge\u6d4f\u89c8\u5668\uff0c\u6309F12\uff0c\u5728\u53f3\u4fa7\u70b9\"\u2795\"\u627e\u5230Lighthouse,\u70b9\u51fb\u5206\u6790\u9875\u9762\u8f7d\u5373\u53ef

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/vercel/","title":"\u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1","text":"

    \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1

    ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/Markdown/MWeb/","title":"Markdown\u5199\u4f5c\u5e94\u7528\u63a8\u8350","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    MWeb Pro\u662f\u4e00\u6b3e\u4e13\u4e3amacOS\u8bbe\u8ba1\u7684\u4e13\u4e1aMarkdown\u5199\u4f5c\u4e0e\u7b14\u8bb0\u5e94\u7528\uff0c\u652f\u6301GFM\u8bed\u6cd5\u6269\u5c55\uff08\u542b\u8868\u683c\u3001LaTeX\u3001\u4ee3\u7801\u5757\u7b49\uff09\u53ca\u591a\u79cd\u56fe\u8868\u5e93\uff08mermaid/PlantUML\u7b49\uff09\u3002\u63d0\u4f9b\u9ad8\u6548\u7684\u56fe\u6587\u6df7\u6392\u529f\u80fd\uff0c\u652f\u6301\u62d6\u62fd\u63d2\u5165\u56fe\u7247\u5e76\u8c03\u6574\u5bbd\u5ea6\uff0c\u53ef\u5bfc\u51fa\u4e3aPDF/HTML/Epub\u7b49\u683c\u5f0f\u6216\u76f4\u63a5\u53d1\u5e03\u81f3WordPress/\u5370\u8c61\u7b14\u8bb0\u7b49\u5e73\u53f0\u3002\u5176\u6587\u6863\u5e93\u652f\u6301\u5206\u7c7b\u6811\u3001\u6807\u7b7e\u7ba1\u7406\u53ca\u9759\u6001\u7f51\u7ad9\u751f\u6210\uff0c\u517c\u5177\u5feb\u901f\u7b14\u8bb0\u6536\u96c6\u548c\u5168\u5c40\u641c\u7d22\u529f\u80fd\uff0c\u9002\u5408\u6280\u672f\u5199\u4f5c\u3001\u77e5\u8bc6\u7ba1\u7406\u53ca\u535a\u5ba2\u53d1\u5e03\u573a\u666f\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a3 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a1009 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a64

    MWeb Pro \u662f\u4e00\u6b3e\u9002\u7528\u4e8emacOS\u7684\u4e13\u4e1aMarkdown\u5199\u4f5c\u3001\u7b14\u8bb0\u672c\u5e94\u7528\u8f6f\u4ef6\u3002\u559c\u6b22\u5199\u535a\u5ba2\u7684\u670b\u53cb\uff0c\u90a3\u4f60\u4e00\u5b9a\u4f1a\u9700\u8981 MWeb Pro \u8fd9\u6b3e\u8f6f\u4ef6\u3002\u4e3a\u60a8\u63d0\u4f9b\u6700\u4f73\u7684\u5199\u4f5c\u4f53\u9a8c\u3002

    Markdown \u8bed\u6cd5\u652f\u6301\uff1a

    \u4f7f\u7528 Github Flavored Markdown \u8bed\u6cd5\uff0c\u7b80\u79f0 GFM \u8bed\u6cd5\u3002\u652f\u6301\u8868\u683c\u3001TOC\u3001LaTeX\u3001\u4ee3\u7801\u5757\u3001\u4efb\u52a1\u5217\u8868\u3001\u811a\u6ce8\u7b49\u3002\u753b\u56fe\u5e93\u652f\u6301 mermaid, viz, echarts, plantuml, sequence, flow\u3002

    \u8f85\u52a9\u529f\u80fd

    \u652f\u6301\u622a\u56fe\u5e76\u7c98\u8d34\u3001\u590d\u5236\u5e76\u7c98\u8d34\u3001\u62d6\u62fd\u7b49\u65b9\u5f0f\u63d2\u5165\u56fe\u7247\u5e76\u76f4\u63a5\u663e\u793a\u5728\u7f16\u8f91\u5668\u5185\u3002\u5728\u517c\u5bb9 Markdown \u8bed\u6cd5\u7684\u60c5\u51b5\u4e0b\u652f\u6301\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002\u597d\u7528\u7684\u8868\u683c\u63d2\u5165\u548c LaTeX \u4e66\u5199\u8f85\u52a9\u3002

    \u8f93\u51fa\u529f\u80fd

    \u652f\u6301\u5bfc\u51fa\u4e3a\u56fe\u7247\u3001HTML\u3001Epub\u3001PDF\u3001RTF\u3001Docx\u3002\u652f\u6301\u53d1\u5e03\u5230 Wordpress\u3001\u5370\u8c61\u7b14\u8bb0\u3001Blogger\u3001Medium\u3001Tumblr\u7b49\u3002\u652f\u6301\u4e03\u725b\u4e91\u3001\u53c8\u62cd\u4e91\u7b49\u4ee5\u53ca\u81ea\u5b9a\u4e49\u7684\u56fe\u5e8a\u670d\u52a1\u3002

    \u5f3a\u5927\u7684\u7b14\u8bb0\u529f\u80fd

    \u5f3a\u5927\u7684\u6587\u6863\u5e93\u652f\u6301\u5206\u7c7b\u6811\u548c\u6807\u7b7e\u7ba1\u7406\u6587\u6863\uff0c\u6587\u6863\u53ef\u5f52\u7c7b\u4e8e\u591a\u4e2a\u5206\u7c7b\uff0c\u53ef\u4ee5\u628a\u5206\u7c7b\u6574\u4e2a\u5bfc\u51fa\u4e3a Epub\u3001PDF \u548c\u751f\u6210\u9759\u6001\u7f51\u7ad9\u3002\u975e\u5e38\u5408\u9002\u7528\u4e8e\u7b14\u8bb0\u3001\u4e2a\u4eba\u77e5\u8bc6\u6536\u96c6\u3001\u7ba1\u7406\u548c\u8f93\u51fa\u3002 \u5feb\u901f\u7b14\u8bb0\uff1a\u968f\u610f\u589e\u52a0\u7b14\u8bb0\u53ca\u56fe\u7247\u7b49\u7d20\u6750\uff0c\u652f\u6301\u4ee5\u5929\u4e3a\u5355\u4f4d\u628a\u589e\u52a0\u7684\u7d20\u6750\u7ec4\u5408\u5728\u4e00\u4e2a\u6587\u6863\u5185\uff0c\u65b9\u4fbf\u6574\u7406\u53ca\u8bb0\u5f55\u5386\u53f2\u6536\u96c6\u60c5\u51b5\u3002\u5feb\u901f\u641c\u7d22\uff1a\u76ee\u524d\u5df2\u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u8c03\u51fa\u641c\u7d22\u3002

    \u4ee5\u4e0b\u6458\u81eaMWeb\u5173\u4e8eMarkdown\u7684\u4ecb\u7ecd

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb","title":"\u6b22\u8fce\u4f7f\u7528 MWeb","text":"

    MWeb \u662f\u4e13\u4e1a\u7684 Markdown \u5199\u4f5c\u3001\u8bb0\u7b14\u8bb0\u3001\u9759\u6001\u535a\u5ba2\u751f\u6210\u8f6f\u4ef6\uff0c\u76ee\u524d\u5df2\u652f\u6301 Mac\uff0ciPad \u548c iPhone\u3002MWeb \u6709\u4ee5\u4e0b\u7279\u8272\uff1a

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_1","title":"\u8f6f\u4ef6\u672c\u8eab\uff1a","text":"
    • \u4f7f\u7528\u539f\u751f\u7684 macOS \u6280\u672f\u6253\u9020\uff0c\u8ffd\u6c42\u4e0e\u7cfb\u7edf\u7684\u5b8c\u7f8e\u7ed3\u5408\u3002
    • \u539f\u5219\u4e0a\uff0c\u9996\u5148\u662f\u8ffd\u6c42\u754c\u9762\u7b80\u6d01\u548c\u9ad8\u6027\u80fd\uff0c\u7136\u540e\u624d\u662f\u5f3a\u5927\u6613\u7528\uff0c\u529f\u80fd\u5168\u9762\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown","title":"Markdown \u8bed\u6cd5\uff1a","text":"
    • \u4f7f\u7528 GitHub Flavored Markdown \u8bed\u6cd5\uff0c\u7b80\u79f0 GFM \u8bed\u6cd5\u3002
    • \u652f\u6301\u8868\u683c\u3001TOC\u3001LaTeX\u3001\u4ee3\u7801\u5757\u3001\u4efb\u52a1\u5217\u8868\u3001\u811a\u6ce8\u7b49\u3002
    • \u753b\u56fe\u5e93\u652f\u6301 mermaid, viz, ECharts, PlantUML, Sequence, Flow\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_1","title":"Markdown \u8f85\u52a9\uff1a","text":"
    • \u652f\u6301\u622a\u56fe\u5e76\u7c98\u8d34\u3001\u590d\u5236\u5e76\u7c98\u8d34\u3001\u62d6\u62fd\u7b49\u65b9\u5f0f\u63d2\u5165\u56fe\u7247\u5e76\u76f4\u63a5\u663e\u793a\u5728\u7f16\u8f91\u5668\u5185\u3002
    • \u5728\u517c\u5bb9 Markdown \u8bed\u6cd5\u7684\u60c5\u51b5\u4e0b\u652f\u6301\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002
    • \u597d\u7528\u7684\u8868\u683c\u63d2\u5165\u548c LaTeX \u4e66\u5199\u8f85\u52a9\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_2","title":"Markdown \u8f93\u51fa\uff1a","text":"
    • \u652f\u6301\u5bfc\u51fa\u4e3a\u56fe\u7247\u3001HTML\u3001Epub\u3001PDF\u3001RTF\u3001Docx\u3002
    • \u652f\u6301\u53d1\u5e03\u5230 WordPress\u3001\u652f\u6301 Metaweblog API \u534f\u8bae\u7684\u670d\u52a1\u3001Wordpress.com\u3001\u5370\u8c61\u7b14\u8bb0\uff08Evernote\uff09\u3001Blogger\u3001Medium\u3001Tumblr\u3001\u8bed\u96c0\u3001Ghost\u3001\u5c11\u6570\u6d3e Matrix\u3002
    • \u56fe\u7247\u4e0a\u4f20\u670d\u52a1\uff08\u56fe\u5e8a\uff09\u652f\u6301 Imgur\u3001\u4e03\u725b\u4e91\u3001\u53c8\u62cd\u4e91\u3001\u817e\u8baf\u4e91 COS\u3001\u963f\u91cc\u4e91 OSS\u3001SM.MS\u548c\u81ea\u5b9a\u4e49\u7684\u56fe\u5e8a\u670d\u52a1\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_3","title":"Markdown \u7b14\u8bb0\uff1a","text":"
    • \u5f3a\u5927\u7684\u6587\u6863\u5e93\u652f\u6301\u5206\u7c7b\u6811\u548c\u6807\u7b7e\u7ba1\u7406\u6587\u6863\uff0c\u6587\u6863\u53ef\u5f52\u7c7b\u4e8e\u591a\u4e2a\u5206\u7c7b\uff0c\u53ef\u4ee5\u628a\u5206\u7c7b\u6574\u4e2a\u5bfc\u51fa\u4e3a Epub\u3001PDF \u548c\u751f\u6210\u9759\u6001\u7f51\u7ad9\u3002\u975e\u5e38\u5408\u9002\u7528\u4e8e\u7b14\u8bb0\u3001\u4e2a\u4eba\u77e5\u8bc6\u6536\u96c6\u3001\u7ba1\u7406\u548c\u8f93\u51fa\u3002
    • \u5feb\u901f\u7b14\u8bb0\uff1a\u968f\u610f\u589e\u52a0\u7b14\u8bb0\u53ca\u56fe\u7247\u7b49\u7d20\u6750\uff0c\u652f\u6301\u4ee5\u5929\u4e3a\u5355\u4f4d\u628a\u589e\u52a0\u7684\u7d20\u6750\u7ec4\u5408\u5728\u4e00\u4e2a\u6587\u6863\u5185\uff0c\u65b9\u4fbf\u6574\u7406\u53ca\u8bb0\u5f55\u5386\u53f2\u6536\u96c6\u60c5\u51b5\u3002
    • \u5feb\u901f\u641c\u7d22\uff1a\u76ee\u524d\u5df2\u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u8c03\u51fa\u641c\u7d22\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_4","title":"\u5916\u90e8 Markdown \u6587\u6863\uff1a","text":"
    • \u5916\u90e8 Markdown \u6587\u6863\u4f7f\u7528\u5916\u90e8\u6a21\u5f0f\u7ba1\u7406\u3002\u5916\u90e8\u6a21\u5f0f\u4f7f\u7528\u76ee\u5f55\u6811\u7684\u65b9\u5f0f\u7f16\u8f91\u548c\u7ba1\u7406\u4f60\u7684 Markdown \u6587\u6863\uff0c\u8fd8\u80fd\u5f88\u597d\u7684\u652f\u6301 GitBook\u3001Jekyll\u3001Hexo \u7b49\u7b49\u7f16\u8f91\u548c\u56fe\u7247\u63d2\u5165\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_1","title":"MWeb \u6587\u6863\uff1a","text":"

    \u5982\u679c\u8981\u66f4\u8be6\u7ec6\u4e86\u89e3 MWeb\uff0c\u5efa\u8bae\u4f60\u4e00\u5b9a\u8981\u53bb\u770b\u4e00\u4e0b\u5b98\u7f51\u7684\u5e2e\u52a9\u6587\u6863\uff0c\u7f51\u5740\u4e3a\uff1ahttps://zh.mweb.im/help.html\u3002\u6211\u4eec\u5efa\u8bae\u5728\u4f7f\u7528\u6587\u6863\u5e93\u4e4b\u524d\uff0c\u4e00\u5b9a\u8981\u9605\u8bfb\u4e00\u4e0b MWeb \u6587\u6863\u5e93\u8be6\u7ec6\u4ecb\u7ecd \u8fd9\u7bc7\u6587\u7ae0\uff0c\u4ee5\u4fbf\u66f4\u597d\u7684\u4f7f\u7528\u6587\u6863\u5e93\u3002

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_2","title":"\u5e2e\u52a9\u6211\u4eec\u6539\u8fdb MWeb","text":"

    \u5982\u679c\u4f60\u559c\u6b22 MWeb\uff0c\u60f3\u8ba9\u5b83\u53d8\u5f97\u66f4\u597d\uff0c\u4f60\u53ef\u4ee5\uff1a

    1. \u63a8\u8350 MWeb\uff0c\u8ba9\u66f4\u591a\u7684\u4eba\u77e5\u9053\u3002
    2. \u7ed9\u6211\u4eec\u53d1\u53cd\u9988\u548c\u5efa\u8bae\uff1acoderforart+2333@gmail.com
    3. \u5728 Mac App Store \u4e0a\u8bc4\u4ef7 \uff08\u5982\u679c\u662f\u5728 MAS \u4e0a\u8d2d\u4e70\u7684\u8bdd\uff09\u3002
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#gfm-mweb","title":"GFM \u8bed\u6cd5\u7b80\u4ecb\u548c MWeb \u6240\u652f\u6301\u7684\u6269\u5c55\u8bed\u6cd5","text":"","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_2","title":"\u56de\u8f66\u8f6c\u4e3a\u6362\u884c","text":"

    \u5b98\u65b9\u7684\u8bed\u6cd5\u89c4\u5b9a\u7ed3\u5c3e\u52a0 2 \u4e2a\u4ee5\u4e0a\u7a7a\u683c\u52a0\u6362\u884c\u624d\u4f1a\u8f6c\u6210\u6362\u884c\uff0c\u4e5f\u5c31\u662f <br /> \u6807\u7b7e\u3002MWeb \u4e2d\u6709\u4e2a\u9009\u9879\u53ef\u4ee5\u76f4\u63a5\u628a\u6362\u884c\u8f6c\u6210 <br />\uff0c\u4e0d\u7528\u52a0\u4e0a 2 \u4e2a\u4ee5\u4e0a\u7a7a\u683c\uff0c\u8fd9\u4e2a\u9009\u9879\u9ed8\u8ba4\u662f\u5f00\u542f\u7684\u3002\u5982\u679c\u8981\u5173\u95ed\uff0c\u8bf7\u5728\u8bbe\u7f6e\u9875\u9762\u5173\u95ed\u3002

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#task-lists","title":"\u4efb\u52a1\u5217\u8868\uff08Task lists\uff09","text":"

    Markdown \u8bed\u6cd5\uff1a

    - [ ] \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [ ]`\n- [x] \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [x]`\n

    \u6548\u679c\u5982\u4e0b\uff1a

    • \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 - + \u7a7a\u683c + [ ]
    • \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 - + \u7a7a\u683c + [x]
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_3","title":"\u56fe\u7247\u5927\u5c0f\u53ca\u5bf9\u9f50","text":"

    \u5b98\u65b9\u548c GFM \u90fd\u4e0d\u652f\u6301\u56fe\u7247\u5927\u5c0f\u8bbe\u7f6e\uff0cMWeb \u5f15\u5165\u7684\u7279\u522b\u7684\u8bed\u6cd5\u6765\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002\u5982\uff1a![\u56fe\u7247\u8bf4\u660e-w450](pic.jpg) \u8fd9\u6837\u8868\u793a\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u4e3a 450\u3002\u5176\u4e2d -w450 \u4e3a\u8bbe\u7f6e\u8bed\u6cd5\uff0c\u751f\u6210 HTML \u65f6\u4f1a\u81ea\u52a8\u79fb\u9664\u3002w \u8868\u793a\u8bbe\u7f6e\u5bbd\u5ea6\u3002 \u53ef\u4ee5\u770b\u51fa\uff0cMWeb \u5f15\u5165\u7684\u8bed\u6cd5\u7684\u7279\u70b9\u662f\u517c\u5bb9\u539f\u6765\u7684\u8bed\u6cd5\u548c\u4ec5\u652f\u6301\u8bbe\u7f6e\u5bbd\u5ea6\u3002

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_4","title":"\u591a\u884c\u6216\u8005\u4e00\u6bb5\u4ee3\u7801","text":"

    Markdown \u8bed\u6cd5\uff1a

    ```js\nfunction fancyAlert(arg) {\n  if(arg) {\n    $.facebox({div:'#foo'})\n  }\n\n}\n```\n

    \u6548\u679c\u5982\u4e0b\uff1a

    function fancyAlert(arg) {\n    if(arg) {\n        $.facebox({div:'#foo'})\n    }\n\n}\n

    \u8fd9\u4e2a\u8bed\u6cd5\u76ee\u524d\u5728 MWeb \u4e2d\u4f7f\u7528\uff0c\u5fc5\u987b\u524d\u540e\u7a7a\u4e00\u884c\uff0c\u624d\u4f1a\u6b63\u786e\u89e3\u6790\u3002\u6211\u89c9\u5f97\uff0c\u5728\u5199 Markdown \u6587\u6863\u8fc7\u7a0b\u4e2d\uff0c\u8fd0\u7528\u7a7a\u884c\u5f88\u6709\u5fc5\u8981\uff0c\u57fa\u672c\u4e0a\uff0c\u5757\u7ea7\u5143\u7d20\uff08\u6807\u9898\u3001\u5217\u8868\u3001\u5f15\u7528\u3001\u4ee3\u7801\u5757\u3001\u8868\u683c\u3001\u6bb5\u843d\u7b49\uff09\uff0c\u90fd\u5efa\u8bae\u524d\u540e\u7a7a\u4e00\u884c\u3002

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_5","title":"\u8868\u683c","text":"

    Markdown \u8bed\u6cd5\uff1a

    \u7b2c\u4e00\u683c\u8868\u5934 | \u7b2c\u4e8c\u683c\u8868\u5934\n--------- | -------------\n\u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e00\u683c | \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e00\u683c\n\u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e8c\u683c \u591a\u52a0\u6587\u5b57 | \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e8c\u683c\n

    \u6548\u679c\u5982\u4e0b\uff1a

    \u7b2c\u4e00\u683c\u8868\u5934 \u7b2c\u4e8c\u683c\u8868\u5934 \u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e00\u683c \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e00\u683c \u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e8c\u683c \u591a\u52a0\u6587\u5b57 \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e8c\u683c","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_6","title":"\u5220\u9664\u7ebf","text":"

    Markdown \u8bed\u6cd5\uff1a

    \u52a0\u5220\u9664\u7ebf\u50cf\u8fd9\u6837\u7528\uff1a ~~\u5220\u9664\u8fd9\u4e9b~~\n

    \u6548\u679c\u5982\u4e0b\uff1a

    \u52a0\u5220\u9664\u7ebf\u50cf\u8fd9\u6837\u7528\uff1a \u5220\u9664\u8fd9\u4e9b

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#latex","title":"LaTeX","text":"

    Markdown \u8bed\u6cd5\uff1a

    \u5757\u7ea7\u516c\u5f0f\uff1a\n```math\nx = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n```\n\n\u884c\u5185\u516c\u5f0f\uff1a ``\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N``\n

    \u6548\u679c\u5982\u4e0b\uff08\u5728\u8bbe\u7f6e\u9875\u9762\u4e2d\u542f\u7528 LaTeX \u624d\u4f1a\u770b\u5230\u6548\u679c\uff09\uff1a

    \u5757\u7ea7\u516c\u5f0f\uff1a

    x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n

    \u884c\u5185\u516c\u5f0f\uff1a \\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_3","title":"MWeb \u753b\u56fe","text":"","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mermaid","title":"mermaid","text":"

    mermaid \u662f\u6bd4\u8f83\u6d41\u884c\u7684\u753b\u56fe\u5e93\uff0c\u5b83\u652f\u6301\u6d41\u7a0b\u56fe\u3001\u987a\u5e8f\u56fe\u548c\u7518\u7279\u56fe\uff0c\u5b83\u7684\u5b98\u7f51\u4e3a\uff1ahttps://mermaidjs.github.io/ \uff0c\u5728 MWeb \u4e2d\u4f7f\u7528 mermaid \u7684\u8bed\u6cd5\u5c31\u662f\u58f0\u660e\u4ee3\u7801\u5757\u7684\u8bed\u8a00\u4e3a mermaid\uff0c\u4ee3\u7801\u5757\u4e2d\u518d\u5199\u4e0a mermaid \u7684\u753b\u56fe\u8bed\u6cd5\u5373\u53ef\uff0c\u4f60\u53ef\u4ee5\u628a\u4e0b\u9762\u7684\u8bed\u6cd5\u590d\u5236\u5230 MWeb \u4e2d\u67e5\u770b\u6548\u679c\u3002

    ```mermaid\nsequenceDiagram\n    participant Alice\n    participant Bob\n    Alice->John: Hello John, how are you?\n    loop Healthcheck\n        John->John: Fight against hypochondria\n    end\n    Note right of John: Rational thoughts <br/>prevail...\n    John-->Alice: Great!\n    John->Bob: How about you?\n    Bob-->John: Jolly good!\n```\n

    \u6548\u679c\u5982\u4e0b\uff1a

    sequenceDiagram\n    participant Alice\n    participant Bob\n    Alice->John: Hello John, how are you?\n    loop Healthcheck\n        John->John: Fight against hypochondria\n    end\n    Note right of John: Rational thoughts <br/>prevail...\n    John-->Alice: Great!\n    John->Bob: How about you?\n    Bob-->John: Jolly good!
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#echarts","title":"echarts","text":"

    echarts \u662f\u767e\u5ea6\u51fa\u54c1\u7684 js \u753b\u56fe\u5e93\uff0c\u5b83\u7684\u7f51\u5740\u4e3a\uff1ahttps://echarts.apache.org/zh/index.html\uff0c\u529f\u80fd\u975e\u5e38\u5f3a\u5927\uff0cMWeb \u652f\u6301 echarts \u7684\u4e00\u4e9b\u57fa\u672c\u7684\u7528\u6cd5\uff0c\u592a\u9ad8\u7ea7\u7684\u4e0d\u652f\u6301\u3002\u4f60\u53ef\u4ee5\u5c06\u4ee5\u4e0b\u8bed\u6cd5\u590d\u5236\u5230 MWeb \u4e2d\u8fdb\u884c\u5c1d\u8bd5\u3002\u4f60\u4e5f\u53ef\u4ee5\u53bb https://echarts.apache.org/examples/zh/index.html \u8fd9\u4e2a\u7f51\u5740\u67e5\u770b\u4e00\u4e9b\u4f8b\u5b50\uff0c\u8981\u6ce8\u610f\u7684\u662f MWeb \u53ea\u80fd\u89e3\u6790 option = {} \u8fd9\u79cd\u7b80\u5355\u7684\uff0c\u4e0d\u8fc7\u5e94\u8be5\u662f\u8db3\u591f\u4f7f\u7528\u4e86\u3002

    ```echarts\noption = {\n    xAxis: {\n        type: 'category',\n        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n    },\n    yAxis: {\n        type: 'value'\n    },\n    series: [{\n        data: [820, 932, 901, 934, 1290, 1330, 1320],\n        type: 'line'\n    }]\n};\n```\n

    \u6548\u679c\u5982\u4e0b\uff1a

    option = {\n    xAxis: {\n        type: 'category',\n        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n    },\n    yAxis: {\n        type: 'value'\n    },\n    series: [{\n        data: [820, 932, 901, 934, 1290, 1330, 1320],\n        type: 'line'\n    }]\n};\n
    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#footnote","title":"\u811a\u6ce8\uff08Footnote\uff09","text":"

    Markdown \u8bed\u6cd5\uff1a

    \u8fd9\u662f\u4e00\u4e2a\u811a\u6ce8\uff1a[^1]\n

    \u6548\u679c\u5982\u4e0b\uff1a

    \u8fd9\u662f\u4e00\u4e2a\u811a\u6ce8\uff1a1

    ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_7","title":"\u6ce8\u91ca\u548c\u9605\u8bfb\u66f4\u591a","text":"

    \u6ce8 \u9605\u8bfb\u66f4\u591a\u7684\u529f\u80fd\u53ea\u7528\u5728\u6587\u6863\u5e93\u751f\u6210\u9759\u6001\u7f51\u7ad9\u6216\u53d1\u5e03\u5230 Wordpress \u535a\u5ba2\u65f6\uff0c\u63d2\u5165\u65f6\u6ce8\u610f\u8981\u540e\u7a7a\u4e00\u884c\u3002

    1. \u8fd9\u91cc\u662f\u811a\u6ce8\u4fe1\u606f\u00a0\u21a9

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/","title":"Markdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    Markdown\u662f\u4e00\u79cd\u8f7b\u91cf\u7ea7\u6807\u8bb0\u8bed\u8a00\uff0c\u652f\u6301\u7eaf\u6587\u672c\u7f16\u5199\u5e76\u8f6c\u6362\u4e3a\u591a\u79cd\u683c\u5f0f\uff08\u5982HTML/PDF\uff09\u3002\u5176\u6838\u5fc3\u8bed\u6cd5\u5305\u62ec\u6807\u9898\u3001\u5217\u8868\u3001\u8868\u683c\u3001\u4ee3\u7801\u5757\u7b49\u7ed3\u6784\u5316\u5143\u7d20\uff0c\u4ee5\u53ca\u6587\u672c\u6837\u5f0f\uff08\u7c97\u4f53/\u659c\u4f53\uff09\u3001\u94fe\u63a5/\u56fe\u7247\u5d4c\u5165\u529f\u80fd\u3002\u517c\u5bb9HTML\u6807\u7b7e\u5e76\u652f\u6301\u7279\u6b8a\u5b57\u7b26\u8f6c\u4e49\uff0c\u9002\u7528\u4e8e\u6587\u6863\u7f16\u5199\u3001\u7b14\u8bb0\u8bb0\u5f55\u7b49\u573a\u666f\u3002\u4e3b\u6d41\u7f16\u8f91\u5668\uff08\u5982MacDown\u3001StackEdit\uff09\u63d0\u4f9b\u8de8\u5e73\u53f0\u652f\u6301\uff0c\u5177\u6709\u6613\u8bfb\u6613\u5199\u7684\u7279\u6027\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a662 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a61

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#markdown","title":"Markdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248","text":"

    \u6587\u7ae0\u5f00\u5934

    \u4ecb\u7ecd\u4e00\u4e0bMarkdown\uff1a Markdown \u662f\u4e00\u79cd\u8f7b\u91cf\u7ea7\u6807\u8bb0\u8bed\u8a00\uff0c\u5b83\u5141\u8bb8\u4eba\u4eec\u4f7f\u7528\u6613\u8bfb\u6613\u5199\u7684\u7eaf\u6587\u672c\u683c\u5f0f\u7f16\u5199\u6587\u6863\u3002Markdown \u8bed\u8a00\u5728 2004 \u7531\u7ea6\u7ff0\u00b7\u683c\u9c81\u4f2f\uff08\u82f1\u8bed\uff1aJohn Gruber\uff09\u521b\u5efa\u3002 Markdown \u7f16\u5199\u7684\u6587\u6863\u53ef\u4ee5\u5bfc\u51fa HTML \u3001Word\u3001\u56fe\u50cf\u3001PDF\u3001Epub \u7b49\u591a\u79cd\u683c\u5f0f\u7684\u6587\u6863\u3002Markdown \u7f16\u5199\u7684\u6587\u6863\u540e\u7f00\u4e3a .md, .markdown\u3002

    \u6b64\u7b14\u8bb0\u5b66\u4e60\u6458\u6284\u81eaMarkdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248\uff0c\u5b66\u4e60\u501f\u9274\u5927\u4f6c\u4e4b\u7ecf\u9a8c\uff08Ctrl C+V\uff09

    \u4e5f\u63a8\u8350\u770b:Markdown\u4e2d\u6587\u6307\u5357

    \u4e00\u4e9bMarkdown\u6587\u6863\u521b\u4f5c\u5de5\u5177\uff1a

    • Mac: MacDown, iA Writer \u6216 Marked 2
    • iOS / Android: iA Writer
    • Windows: ghostwriter \u6216 Markdown Monster
    • Linux: ReText \u6216 ghostwriter
    • Web: Dillinger \u6216 StackEdit
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_1","title":"\u6700\u5e38\u7528","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_2","title":"\u5206\u7ea7\u6807\u9898","text":"
    # \u4e00\u7ea7\u6807\u9898 (\u6ce8\u610f\u6709\u7a7a\u683c)\n## \u4e8c\u7ea7\u6807\u9898\n### \u4e09\u7ea7\u6807\u9898\n#### \u56db\u7ea7\u6807\u9898\n##### \u4e94\u7ea7\u6807\u9898\n###### \u516d\u7ea7\u6807\u9898  <!--\u6700\u591a6\u7ea7\u6807\u9898-->\n
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_3","title":"\u76ee\u5f55","text":"

    \u5728\u4efb\u610f\u4f4d\u7f6e\u63d2\u5165 [toc] \u663e\u793a\u5168\u6587\u76ee\u5f55\u7ed3\u6784

    \u793a\u4f8b\u89c1\u6587\u7ae0\u5f00\u5934\uff08\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u5f00\u5934\u67e5\u770b\u76ee\u5f55\uff09

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_4","title":"\u659c\u4f53/\u7c97\u4f53/\u5220\u9664\u7ebf/\u4e0b\u5212\u7ebf/\u80cc\u666f\u9ad8\u4eae","text":"
    *\u659c\u4f53*    _\u659c\u4f53_\n**\u7c97\u4f53**    __\u7c97\u4f53__\n***\u52a0\u7c97\u659c\u4f53***    ___\u52a0\u7c97\u659c\u4f53___\n~~\u5220\u9664\u7ebf~~\n<u>\u4e0b\u5212\u7ebf</u>\n==\u80cc\u666f\u9ad8\u4eae==\n

    \u659c\u4f53 \u659c\u4f53

    \u7c97\u4f53 \u7c97\u4f53

    \u52a0\u7c97\u659c\u4f53 \u52a0\u7c97\u659c\u4f53

    \u5220\u9664\u7ebf

    \u4e0b\u5212\u7ebf

    \u80cc\u666f\u9ad8\u4eae

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_5","title":"\u65e0\u5e8f\u5217\u8868/\u6709\u5e8f\u5217\u8868","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_6","title":"\u65e0\u5e8f\u5217\u8868","text":"
    * \u65e0\u5e8f\u5217\u8868\u9879 \u4e00\n+ \u65e0\u5e8f\u5217\u8868\u9879 \u4e8c\n- \u65e0\u5e8f\u5217\u8868\u9879 \u4e09\n
    • \u65e0\u5e8f\u5217\u8868\u9879 \u4e00
    • \u65e0\u5e8f\u5217\u8868\u9879 \u4e8c
    • \u65e0\u5e8f\u5217\u8868\u9879 \u4e09
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_7","title":"\u591a\u7ea7\u65e0\u5e8f\u5217\u8868","text":"
    * \u4eca\u5929`* + \u7a7a\u683c\u952e`\n* \u660e\u5929\n    * \u5b66\u4e60 `TAB(\u62164\u4e2a\u7a7a\u683c) + * + \u7a7a\u683c\u952e`\n    * \u8d2d\u7269\n        * \u9762\u5305\n        * \u725b\u5976\n* \u540e\u5929\n
    • \u4eca\u5929* + \u7a7a\u683c\u952e
    • \u660e\u5929
      • \u5b66\u4e60 TAB(\u62164\u4e2a\u7a7a\u683c) + * + \u7a7a\u683c\u952e
      • \u8d2d\u7269
        • \u9762\u5305
        • \u725b\u5976
    • \u540e\u5929
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_8","title":"\u6709\u5e8f\u5217\u8868/\u591a\u7ea7\u6709\u5e8f\u5217\u8868","text":"
    1. \u6709\u5e8f\u5217\u8868\u9879 \u4e00 `\u6570\u5b57 + . + \u7a7a\u683c\u952e`\n2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c\n    1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(1) `TAB(\u62164\u4e2a\u7a7a\u683c) + \u6570\u5b57 + . + \u7a7a\u683c\u952e`\n    2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2)\n        1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2).1\n3. \u6709\u5e8f\u5217\u8868\u9879 \u4e09\n
    1. \u6709\u5e8f\u5217\u8868\u9879 \u4e00 \u6570\u5b57 + . + \u7a7a\u683c\u952e
    2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c
      1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(1) TAB(\u62164\u4e2a\u7a7a\u683c) + \u6570\u5b57 + . + \u7a7a\u683c\u952e
      2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2)
        1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2).1
    3. \u6709\u5e8f\u5217\u8868\u9879 \u4e09
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_9","title":"\u4efb\u52a1\u5217\u8868","text":"
    - [ ] \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [ ]`\n- [x] \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [x]`\n
    • \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 - + \u7a7a\u683c + [ ]
    • \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 - + \u7a7a\u683c + [x]
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_10","title":"\u8868\u683c","text":"

    \u7b2c\u4e00\u884c\u4e3a\u8868\u5934\uff0c\u7b2c\u4e8c\u884c\u5206\u9694\u8868\u5934\u548c\u4e3b\u4f53\u90e8\u5206(\u5982\u679c\u8868\u683c\u65e0\u6cd5\u663e\u793a\u53ef\u4ee5\u5c1d\u8bd5\u628a\u7b2c\u4e8c\u884c\u7684 - \u53d8\u4e3a --- )\uff0c\u53ef\u4ee5\u6307\u5b9a\u6240\u5728\u5217\u7684\u5bf9\u9f50\u65b9\u5f0f\uff0c\u7b2c\u4e09\u884c\u5f00\u59cb\u6bcf\u4e00\u884c\u4e3a\u4e00\u4e2a\u8868\u683c\u884c\u3002\u5217\u4e0e\u5217\u4e4b\u95f4\u7528 | \u9694\u5f00\u3002(\u6ce8\uff1a\u539f\u751f\u65b9\u5f0f\u7684\u8868\u683c\u6bcf\u4e00\u884c\u7684\u4e24\u8fb9\u4e5f\u8981\u6709 | )

    \u5bf9\u9f50\u65b9\u5f0f :- \u5de6\u5bf9\u9f50 - \u4e2d\u5fc3\u5bf9\u9f50 -: \u53f3\u5bf9\u9f50

    \u7b2c\u4e00\u5217|\u7b2c\u4e8c\u5217|\u7b2c\u4e09\u5217\n:-|-|-:\na11|a12|a13\na21|a22|a33\na31|a32|a33\n
    \u8868\u5934\u4e00 \u8868\u5934\u4e8c \u8868\u5934\u4e09 a11 a12 a13 a21 a22 a33 a31 a32 a33","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_11","title":"\u8d85\u94fe\u63a5","text":"

    [ ]\u91cc\u5199\u94fe\u63a5\u6587\u5b57\uff0c( )\u91cc\u5199\u94fe\u63a5\u5730\u5740, ( )\u4e2d\u7684\" \"\u4e2d\u53ef\u4ee5\u4e3a\u94fe\u63a5\u6307\u5b9atitle\u5c5e\u6027\uff0ctitle\u5c5e\u6027\u53ef\u52a0\u53ef\u4e0d\u52a0\u3002title\u5c5e\u6027\u7684\u6548\u679c\u662f\u9f20\u6807\u60ac\u505c\u5728\u94fe\u63a5\u4e0a\u4f1a\u51fa\u73b0\u6307\u5b9a\u7684 title\u6587\u5b57\uff0c\u94fe\u63a5\u5730\u5740\u4e0etitle\u524d\u6709\u4e00\u4e2a\u7a7a\u683c\u3002

    \u53f3\u8fb9\u662f\u94fe\u63a5[\u94fe\u63a5\u6587\u5b57](\u94fe\u63a5 \"title\")\n
    \u53f3\u8fb9\u662f\u94fe\u63a5[GitHub](https://github.com \"GitHub\")\n

    \u53f3\u8fb9\u662f\u94fe\u63a5GitHub

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_12","title":"\u63d2\u5165\u56fe\u7247","text":"

    \u683c\u5f0f\uff1a! [\u56fe\u7247\u6807\u9898] (\u56fe\u7247\u5730\u5740 \"\u56fe\u7247Title\u201d)

    \u5176\u4e2d\u56fe\u7247\u6807\u9898\u4f1a\u88ab\u67d0\u4e9b\u7f51\u7ad9\u548c\u7f16\u8f91\u5668\u663e\u793a\u5728\u56fe\u7247\u4e0b\u65b9

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_13","title":"\u63d2\u5165\u89c6\u9891","text":"

    \u683c\u5f0f\uff1a

    <iframe height= width= src=\"\u94fe\u63a5\">\n

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_14","title":"\u4ee3\u7801\u5757","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_15","title":"\u884c\u5185\u4ee3\u7801\u5757","text":"

    \u7528\u201c ` \u201d\u5de6\u53f3\u5305\u88f9\u4ee3\u7801

    `printf()` \u51fd\u6570  \n
    \u663e\u793a\u4e3aprintf() \u51fd\u6570

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_16","title":"\u591a\u884c\u4ee3\u7801\u5757","text":"

    \u7528\u201c ``` \u201d\u4e0a\u4e0b\u5305\u88f9\u4ee3\u7801\uff0c\u5728\u7b2c\u4e00\u4e2a\u201c ``` \u201d\u540e\u6dfb\u52a0\u8bed\u8a00\u540d\u79f0\u83b7\u5f97\u4e0d\u540c\u7684\u9ad8\u4eae\u6548\u679c

    \u5982\uff1acpp\uff0cpython\uff0cswift

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_17","title":"\u5bf9\u9f50\u65b9\u5f0f","text":"
    <center>\u884c\u4e2d\u5fc3\u5bf9\u9f50</center>\n<p align=\"left\">\u884c\u5de6\u5bf9\u9f50</p>\n<p align=\"right\">\u884c\u53f3\u5bf9\u9f50</p>\n
    \u884c\u4e2d\u5fc3\u5bf9\u9f50

    \u884c\u5de6\u5bf9\u9f50

    \u884c\u53f3\u5bf9\u9f50

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_18","title":"\u5206\u5272\u7ebf","text":"
    * * *\n***\n- - -\n---\n
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_19","title":"\u6362\u884c","text":"

    \u4e0d\u540cmarkdown\u7f16\u8f91\u5668\u53ef\u80fd\u6709\u4e0d\u540c\u7684\u6362\u884c\u65b9\u5f0f\uff0c\u6700\u7b80\u5355\u4e3a\u76f4\u63a5\u6572\u56de\u8f66

    markdown\u6587\u672c\u5185\u7684\u8fde\u7eed\u4e24\u4e2a\u6216\u591a\u4e2a\u56de\u8f66\u4f1a\u88ab\u66ff\u6362\u4e3a\u4e00\u4e2a\u56de\u8f66

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_20","title":"\u9ad8\u7ea7","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_21","title":"\u8bbe\u7f6e\u5b57\u4f53/\u989c\u8272","text":"
    <font face=\"\u5b8b\u4f53\" color=blue size=5>\u84dd\u8272\u7684\u5b57\uff5e</font>\n

    \u84dd\u8272\u7684\u5b57\uff5e

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_22","title":"\u5e38\u7528\u989c\u8272","text":"

    \u6d4f\u89c8\u5668\u652f\u6301\u7684\u6240\u6709\u989c\u8272\u8bf7\u8df3\u8f6c\u53c2\u8003

    \u73b0\u4ee3\u6d4f\u89c8\u5668\u652f\u6301\u7684140\u79cd\u5df2\u547d\u540d\u7684\u989c\u8272

    \u5e38\u7528\u989c\u8272\u540d\u79f0: * \u6309\u7f51\u7ad9\u987a\u5e8f\u6392\u5217 * orange pink gold yellow purple greenyellow lightgreen green aqua lightblue blue wheat brown white snow linen silver gray black

    \u6700\u5e38\u7528 \u5176\u4ed6 red greenyellow orange lightgreen yellow lightblue green pink aqua gold blue silver purple brown","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_23","title":"\u951a\u70b9","text":"

    \u4e5f\u5c31\u662f \u8df3\u8f6c

    1. [\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7b2c\u4e00\u6bb5](#jump1)\n2. [\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7b2c\u4e8c\u6bb5](#jump2\uff09\n\n### <span id=\"jump1\">\u7b2c\u4e00\u6bb5</span>\n\n### <span id=\"jump2\">\u7b2c\u4e8c\u6bb5</span>\n
    <span id=\"now\">\u5f53\u524d\u4f4d\u7f6e</span>\n\u70b9\u51fb[\u8fd9\u91cc](#top)\u8df3\u8f6c\u5230\u5f00\u5934\n\u70b9\u51fb[\u8fd9\u91cc](#bottom)\u8df3\u8f6c\u5230\u7ed3\u5c3e\n

    \u5f53\u524d\u4f4d\u7f6e

    \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u5f00\u5934

    \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7ed3\u5c3e

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_24","title":"\u6ce8\u811a","text":"
    \u4f7f\u7528 Markdown[^1]\u53ef\u4ee5\u6548\u7387\u7684\u4e66\u5199\u6587\u6863, \u76f4\u63a5\u8f6c\u6362\u6210 HTML[^2]\u3002\n\n[^1]:Markdown\u662f\u4e00\u79cd\u7eaf\u6587\u672c\u6807\u8bb0\u8bed\u8a00\n[^2]:HyperText Markup Language \u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\n

    \u4f7f\u7528 Markdown1\u53ef\u4ee5\u6548\u7387\u7684\u4e66\u5199\u6587\u6863, \u76f4\u63a5\u8f6c\u6362\u6210 HTML2\u3002

    \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7ed3\u5c3e\u67e5\u770b\u6ce8\u811a\u7684\u663e\u793a\u6548\u679c

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_25","title":"\u591a\u7ea7\u5f15\u7528","text":"
    >>> \u8bf7\u95ee Markdwon \u600e\u4e48\u7528\uff1f - \u5c0f\u767d\n\n>> \u81ea\u5df1\u770b\u6559\u7a0b\uff01 - \u6124\u9752\n\n> \u6559\u7a0b\u5728\u54ea\uff1f - \u5c0f\u767d\n\n`[^_^]: # \u65e0\u6cd5\u663e\u793a\u65f6\u8bb0\u5f97\u7a7a\u884c`\n

    \u4e0d\u540c\u7f16\u8f91\u5668\u7684\u663e\u793a\u60c5\u51b5\u4e0d\u540c

    \u8bf7\u95ee Markdwon \u600e\u4e48\u7528\uff1f - \u5c0f\u767d

    \u81ea\u5df1\u770b\u6559\u7a0b\uff01 - \u6124\u9752

    \u6559\u7a0b\u5728\u54ea\uff1f - \u5c0f\u767d

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#latex","title":"LaTeX\u516c\u5f0f","text":"
    • \u5728\u6570\u5b66\u516c\u5f0f\u7684\u524d\u540e\u52a0$\u662f\u884c\u5185\u516c\u5f0f
    \u6211\u4eec\u5728\u521d\u4e2d\u6570\u5b66\u8bfe\u4e0a\u5df2\u7ecf\u5bf9\u4e00\u6b21\u51fd\u6570$y=x+a$\u6709\u6240\u4e86\u89e3\u3002\n

    \u6211\u4eec\u5728\u521d\u4e2d\u6570\u5b66\u8bfe\u4e0a\u5df2\u7ecf\u5bf9\u4e00\u6b21\u51fd\u6570\\(y=x+a\\)\u6709\u6240\u4e86\u89e3\u3002

    • \u5728\u6570\u5b66\u516c\u5f0f\u7684\u524d\u540e\u52a0$$\u662f\u72ec\u5360\u4e00\u884c\u7684\u516c\u5f0f
      \u4e0b\u9762\u6211\u4eec\u6765\u8ba4\u8bc6\u4e00\u4e0b\u4e8c\u6b21\u51fd\u6570$$y=ax^2+bx+c$$\n
      \u4e0b\u9762\u6211\u4eec\u6765\u8ba4\u8bc6\u4e00\u4e0b\u4e8c\u6b21\u51fd\u6570
    \\[y=ax^2+bx+c\\]
    \u884c\u5185\u516c\u5f0f\uff1a$\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$\n\u5757\u7ea7\u516c\u5f0f\uff1a\n$$  x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a} $$\n$$ \\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} =\n1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } } $$\n

    \u884c\u5185\u516c\u5f0f\uff1a\\(\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N\\)

    \u5757\u7ea7\u516c\u5f0f\uff1a

    \\[x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\\] \\[\\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} = 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\\]

    \u6765\u770b\u770b\u4e24\u4e2a\u91cd\u8981\u6781\u9650

    \\[\\displaystyle\\lim_{x \\rightarrow 0}\\frac{\\sin x}{x} = 1\\] \\[\\displaystyle\\lim_{x \\rightarrow + \\infty}(1 + \\frac{1}{x})^x = e\\]","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_26","title":"\u5176\u4ed6","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_27","title":"\u8f6c\u4e49\u5b57\u7b26","text":"

    \u901a\u8fc7\u5728Markdown\u5b57\u7b26\u524d\u4f7f\u7528\\\u6765\u5ffd\u7565\uff08\u6216\u8f6c\u4e49\uff09Markdown\u683c\u5f0f\u3002

    Markdown\u5141\u8bb8\u60a8\u4f7f\u7528\u53cd\u659c\u6760\u8f6c\u4e49\u6765\u751f\u6210\u6587\u5b57\u5b57\u7b26\uff0c\u5426\u5219\u8fd9\u4e9b\u5b57\u7b26\u5728Markdown\u7684\u683c\u5f0f\u5316\u8bed\u6cd5\u4e2d\u5177\u6709\u7279\u6b8a\u542b\u4e49\u3002 \u4f8b\u5982\uff0c\u5982\u679c\u60a8\u60f3\u7528\u6587\u5b57\u661f\u53f7\u5305\u56f4\u4e00\u4e2a\u5355\u8bcd\uff0c\u5219\u53ef\u4ee5\u5728\u661f\u53f7\u4e4b\u524d\u4f7f\u7528\u53cd\u659c\u6760\uff0c\u5982\\*literal asterisks\\* *literal asterisks*

    Markdown\u4e3a\u4ee5\u4e0b\u5b57\u7b26\u63d0\u4f9b\u53cd\u659c\u6760\u8f6c\u4e49(\u4f46\u662fCSDN\u4e0d\u592a\u652f\u6301)\uff1a

    \\\u53cd\u659c\u6760\u2003`\u53cd\u5f15\u53f7\u2003*\u661f\u53f7\u2003_\u4e0b\u5212\u7ebf\u2003{}\u5927\u62ec\u53f7\u2003[]\u4e2d\u62ec\u53f7\u2003()\u5c0f\u62ec\u53f7\u2003 #\u4e95\u53f7\u2003+\u52a0\u53f7\u2003-\u51cf\u53f7\u2003.\u82f1\u6587\u53e5\u53f7\u2003!\u82f1\u6587\u611f\u53f9\u53f7

    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#html","title":"\u5185\u8054 HTML \u8bed\u6cd5/\u7279\u6b8a\u5b57\u7b26\u81ea\u52a8\u8f6c\u4e49","text":"

    \u5bf9\u4e8e Markdown \u4e2d\u672a\u5305\u542b\u7684\u6807\u7b7e, \u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 HTML\u6807\u7b7e\uff0c\u4f8b\u5982\u7528 HTML <a> \u6807\u7b7e\u66ff\u4ee3 Markdown \u7684\u94fe\u63a5\u8bed\u6cd5

    \u5728 HTML \u4e2d, \u6709\u4e00\u4e9b\u5b57\u7b26\u9700\u8981\u7279\u6b8a\u5bf9\u5f85\uff0c\u5982\u679c\u4f60\u60f3\u5c06\u5b83\u4eec\u7528\u4f5c\u5b57\u9762\u91cf, \u5219\u9700\u8981\u5c06\u5b83\u4eec\u8f6c\u4e49\u4e3a\u5b57\u7b26\u5b9e\u4f53

    \u7279\u6b8a\u5b57\u7b26 \u4ee3\u7801 & &amp; < &lt; > &gt; \" &quot; &#34; ' &apos; &#39;","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_28","title":"\u6ce8\u91ca","text":"
    <div style='display: none'>\n\u6ce8\u91ca\n</div>\n
    <!-- \u6ce8\u91ca -->\n
    [//]: # (\u54c8\u54c8\u6211\u662f\u6700\u5f3a\u6ce8\u91ca1\uff0c\u4e0d\u4f1a\u5728\u6d4f\u89c8\u5668\u4e2d\u663e\u793a\u3002)\n[^_^]: # (\u54c8\u54c8\u6211\u662f\u6700\u840c\u6ce8\u91ca2\uff0c\u4e0d\u4f1a\u5728\u6d4f\u89c8\u5668\u4e2d\u663e\u793a\u3002)\n
    ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_29","title":"\u7a7a\u683c","text":"
    \u30101\u3011 &nbsp; \u534a\u89d2\u7684\u4e0d\u65ad\u884c\u7684\u7a7a\u767d\u683c\uff08\u63a8\u8350\u4f7f\u7528\uff09\n\u30102\u3011 &ensp; \u534a\u89d2\u7684\u7a7a\u683c\n\u30103\u3011 &emsp; \u5168\u89d2\u7684\u7a7a\u683c\n
    • \u30101\u3011 \u00a0 \u534a\u89d2\u7684\u4e0d\u65ad\u884c\u7684\u7a7a\u767d\u683c\uff08\u63a8\u8350\u4f7f\u7528\uff09
    • \u30102\u3011 \u2002 \u534a\u89d2\u7684\u7a7a\u683c
    • \u30103\u3011 \u2003 \u5168\u89d2\u7684\u7a7a\u683c

    \u540c\u65f6\u63a8\u8350\u8fd9\u4e2a\u7f51\u7ad9\u53bb\u5b66\u4e60\u57fa\u7840markdown\u8bed\u6cd5\uff1arunoob.com

    1. Markdown\u662f\u4e00\u79cd\u7eaf\u6587\u672c\u6807\u8bb0\u8bed\u8a00\u00a0\u21a9

    2. HyperText Markup Language \u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\u00a0\u21a9

    ","tags":["Markdown"]},{"location":"develop/designbeauty/db1/","title":"\u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u5510\u00b7\u8bfa\u66fc\u63d0\u51fa\u7684\u60c5\u611f\u8bbe\u8ba1\u4e09\u5c42\u6b21\u7406\u8bba\u5305\u62ec\u672c\u80fd\u5c42\u3001\u884c\u4e3a\u5c42\u548c\u53cd\u601d\u5c42\u3002\u672c\u80fd\u5c42\u5173\u6ce8\u4ea7\u54c1\u5916\u89c2\u5f15\u53d1\u7684\u5373\u65f6\u60c5\u611f\u53cd\u5e94\uff0c\u884c\u4e3a\u5c42\u5f3a\u8c03\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u7684\u529f\u80fd\u6027\u548c\u6548\u7387\uff0c\u53cd\u601d\u5c42\u6d89\u53ca\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u7406\u6027\u8ba4\u77e5\u548c\u81ea\u6211\u5f62\u8c61\u5173\u8054\u3002\u8fd9\u4e09\u4e2a\u5c42\u6b21\u76f8\u4e92\u5f71\u54cd\uff0c\u5171\u540c\u5851\u9020\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u6574\u4f53\u4f53\u9a8c\u3002\u8be5\u7406\u8bba\u4e3a\u8bbe\u8ba1\u63d0\u4f9b\u4e86\u7cfb\u7edf\u6846\u67b6\uff0c\u89e3\u91ca\u4e86\u4e3a\u4f55\u67d0\u4e9b\u4ea7\u54c1\u5373\u4f7f\u5b58\u5728\u529f\u80fd\u7f3a\u9677\u4ecd\u80fd\u83b7\u5f97\u5e02\u573a\u6210\u529f\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a5 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a2163

    \u539f\u6587\uff1aNorman's Three Levels of Design

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_1","title":"\u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21","text":"

    \u5728\u4eba\u7c7b\u7684\u5185\u5fc3\u4e16\u754c\uff0c\u6709\u8bb8\u591a\u90e8\u5206\u8d1f\u8d23\u6211\u4eec\u6240\u8bf4\u7684\u60c5\u611f\uff0c\u603b\u7684\u6765\u8bf4\uff0c\u8fd9\u4e9b\u533a\u57df\u5171\u540c\u6784\u6210\u4e86\u60c5\u611f\u7cfb\u7edf\u3002\u5510\u00b7\u8bfa\u66fc\uff08Don Norman\uff09\u63d0\u51fa\uff0c\u60c5\u611f\u7cfb\u7edf\u7531\u4e09\u4e2a\u4e0d\u540c\u4f46\u76f8\u4e92\u8054\u7cfb\u7684\u5c42\u6b21\u7ec4\u6210\uff0c\u6bcf\u4e2a\u5c42\u6b21\u90fd\u4ee5\u4e00\u79cd\u7279\u6b8a\u7684\u65b9\u5f0f\u5f71\u54cd\u7740\u6211\u4eec\u5bf9\u4e16\u754c\u7684\u4f53\u9a8c\u3002\u8fd9\u4e09\u4e2a\u5c42\u6b21\u662f\u672c\u80fd\u5c42\uff0c\u884c\u4e3a\u5c42\u548c\u53cd\u601d\u5c42\u3002\u672c\u80fd\u5c42\u4e0e\u4eba\u7c7b\u60c5\u7eea\u4e2d\u56fa\u6709\u7684\u3001\u81ea\u53d1\u7684\u4ee5\u53ca\u7b26\u5408\u52a8\u7269\u6027\u7684\u7279\u6027\u76f8\u5173\uff0c\u8fd9\u4e9b\u57fa\u672c\u4e0a\u662f\u4e0d\u53d7\u4eba\u7c7b\u672c\u8eab\u63a7\u5236\u7684\u3002\u884c\u4e3a\u5c42\u6307\u7684\u662f\u4eba\u7c7b\u884c\u4e3a\u4e2d\u90a3\u4e9b\u53ef\u63a7\u7684\u65b9\u9762\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4e0b\u610f\u8bc6\u7684\u5206\u6790\u6240\u5904\u60c5\u51b5\u5e76\u4e14\u5236\u5b9a\u4ee5\u76ee\u6807\u4e3a\u5bfc\u5411\u7684\u7b56\u7565\uff0c\u4ece\u800c\u80fd\u591f\u5728\u6700\u77ed\u65f6\u95f4\u5185\u6216\u662f\u4ee5\u6700\u5c11\u7684\u884c\u52a8\u8fbe\u5230\u6548\u679c\u3002\u6b63\u5982\u5510\u00b7\u8bfa\u66fc\u6240\u8a00\uff0c\u53cd\u601d\u5c42\u662f\u6307\u201c\u6709\u610f\u8bc6\u7684\u601d\u8003\uff0c\u5bf9\u65b0\u6982\u5ff5\u8fdb\u884c\u5b66\u4e60\uff0c\u548c\u5bf9\u4e16\u754c\u8fdb\u884c\u5f52\u7eb3\u3002\u201d\u8fd9\u4e09\u4e2a\u5c42\u6b21\u4f5c\u4e3a\u60c5\u611f\u7cfb\u7edf\u7684\u4e0d\u540c\u7ef4\u5ea6\u72ec\u7acb\u5b58\u5728\uff0c\u53c8\u76f8\u4e92\u5173\u8054\uff0c\u76f8\u4e92\u5f71\u54cd\uff0c\u4ece\u800c\u521b\u9020\u4e86\u6211\u4eec\u5bf9\u4e16\u754c\u7684\u6574\u4f53\u60c5\u611f\u4f53\u9a8c\u3002

    \u5728\u5510\u00b7\u8bfa\u66fc\u7684\u300a\u60c5\u611f\u5316\u8bbe\u8ba1\uff1a\u4e3a\u4ec0\u4e48\u6211\u4eec\u559c\u6b22\uff08\u6216\u8ba8\u538c\uff09\u65e5\u5e38\u4e8b\u7269\u300b\uff08\u4e00\u672c\u8ba4\u77e5\u79d1\u5b66\uff0c\u8bbe\u8ba1\u5b66\uff0c\u53ef\u7528\u6027\u5de5\u7a0b\u9886\u57df\u6770\u51fa\u7684\u5b66\u672f\u4f5c\u54c1\uff09\u4e00\u4e66\u4e2d\uff0c\u4ed6\u5bf9\u60c5\u611f\u5316\u7cfb\u7edf\u7684\u8fd9\u4e09\u4e2a\u65b9\u9762\u6216\u5c42\u6b21\u505a\u4e86\u533a\u5206\uff08\u5b83\u4eec\u4e09\u8005\u7efc\u5408\u5f71\u54cd\u7740\u4eba\u7c7b\u7684\u60c5\u611f\u6216\u5fc3\u7406\uff09\uff0c\u5373\uff1a\u672c\u80fd\u5c42\uff0c\u884c\u4e3a\u5c42\u53ca\u53cd\u601d\u5c42\u3002\u8fd9\u4e09\u8005\u5728\u60c5\u611f\u7cfb\u7edf\u4e2d\u7d27\u5bc6\u4ea4\u7ec7\u5728\u4e00\u8d77\uff0c\u5e76\u4ee5\u5404\u81ea\u7279\u5b9a\u7684\u65b9\u5f0f\u5f71\u54cd\u8bbe\u8ba1\u3002\u4ee5\u4e0b\u662f\u4e09\u8005\u5bf9\u5e94\u7684\u76f8\u5e94\u4e09\u79cd\u8bbe\u8ba1\u5c42\u6b21\u3002

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_2","title":"\u672c\u80fd\u5c42\u8bbe\u8ba1","text":"

    \u672c\u80fd\u5c42\u8bbe\u8ba1-\u201c\u5173\u6ce8\u5916\u89c2\u672c\u8eab\u201d\u3002\u8fd9\u4e00\u5c42\u6b21\u7684\u8bbe\u8ba1\u5173\u6ce8\u7684\u662f\u4e8b\u7269\u4e2d\u53ef\u4ee5\u88ab\u76f4\u63a5\u611f\u77e5\u7684\u90a3\u90e8\u5206\u7279\u5f81\u4ee5\u53ca\u5b83\u4eec\u662f\u5982\u4f55\u8ba9\u7528\u6237\u6216\u89c2\u5bdf\u8005\u4ea7\u751f\u611f\u53d7\u7684\u3002\u4f8b\u5982\uff0c\u7956\u7236\u7684\u6000\u8868\u548c\u4e00\u4e2a\u5c0f\u7684\u58c1\u6302\u5f0f\u65f6\u949f\u4e00\u6837\u90fd\u5305\u542b\u4e86\u6700\u57fa\u672c\u7684\u8ba1\u65f6\u529f\u529f\u80fd\uff0c\u9664\u4e86\u5916\u89c2\uff0c\u4ed6\u4eec\u5728\u5185\u5728\u7279\u5f81\u4e0a\u6ca1\u6709\u4efb\u4f55\u4e0d\u540c\uff0c\u4f46\u662f\u672c\u80fd\u5c42\uff08\u6df1\u5c42\u6b21\u7684\uff0c\u65e0\u610f\u8bc6\u7684\uff0c\u4e3b\u89c2\u7684\u548c\u81ea\u53d1\u7684\u611f\u53d7\uff09\u7279\u5f81\u4f7f\u5b83\u5728\u62e5\u6709\u8005\u773c\u4e2d\u4ea7\u751f\u4e86\u533a\u522b\u3002

    \u5982\u4eca\u4ea7\u54c1\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7684\u5f88\u5927\u4e00\u90e8\u5206\u65f6\u95f4\u88ab\u7528\u5728\u672c\u80fd\u5c42\u8bbe\u8ba1\u4e2d\uff0c\u56e0\u4e3a\u5c5e\u4e8e\u540c\u4e00\u65cf\u7fa4\u7684\u4ea7\u54c1\u5f80\u5f80\u5177\u6709\u76f8\u540c\u6216\u76f8\u4f3c\u7684\u529f\u80fd\uff0c\uff08\u6bd4\u5982\u8bf4\u624b\u7535\uff0c\u6c34\u58f6\uff0c\u9762\u5305\u673a\uff0c\u53f0\u706f\uff09\uff0c\u6240\u4ee5\u66f4\u5177\u7279\u5f81\u7684\u5916\u89c2\u662f\u533a\u5206\u4ea7\u54c1\u548c\u7ade\u4e89\u8005\u7684\u5173\u952e\u56e0\u7d20\u3002\u8fd9\u4e5f\u5c31\u662f\u6211\u4eec\u6240\u8bf4\u7684\u201d\u54c1\u724c\u5316\u8bbe\u8ba1\u201d\u2014\u2014\u4e0d\u662f\u901a\u8fc7\u4ea7\u54c1\u63d0\u4f9b\u7ed9\u7528\u6237\u533a\u522b\u4e8e\u5176\u4ed6\u4ea7\u54c1\u7684\u5b9e\u9645\u5229\u76ca\uff0c\u800c\u662f\u901a\u8fc7\u5951\u5408\u7528\u6237\u7684\u6001\u5ea6\u3001\u4fe1\u4ef0\u3001\u60c5\u611f\u4ee5\u53ca\u7528\u6237\u60f3\u8981\u7684\u611f\u53d7\uff0c\u6765\u5f15\u51fa\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u60c5\u611f\u4e0a\u7684\u56de\u5e94\u3002\u8fd9\u53ef\u4ee5\u662f\u901a\u8fc7\u4f7f\u7528\u513f\u7ae5\u3001\u52a8\u7269\u6216\u662f\u5361\u901a\u5f62\u8c61\u7684\u56fe\u7247\u6765\u4f20\u8fbe\u5e74\u8f7b\u7684\u611f\u89c9\uff0c\u4e5f\u53ef\u4ee5\u662f\u901a\u8fc7\u5bf9\u8272\u5f69\uff08\u6bd4\u5982\u8bf4\uff0c\u7ea2\u8272\u5bf9\u5e94\u7740\u201c\u6027\u611f\u201c\uff0c\u9ed1\u8272\u5bf9\u5e94\u7740\u201d\u6050\u6016\u201d\uff09\uff0c\u5f62\u72b6\uff08\u6bd4\u5982\u786c\u8fb9\u7f18\u5f62\u72b6\uff09\u7684\u8fd0\u7528\uff0c\u751a\u81f3\u662f\u8fd0\u7528\u98ce\u683c\uff08\u6bd4\u5982\u88c5\u9970\u827a\u672f\uff09\uff0c\u8ba9\u4eba\u8054\u60f3\u8d77\u67d0\u4e9b\u7279\u5b9a\u7684\u65f6\u4ee3\u3002\u672c\u80fd\u8bbe\u8ba1\u65e8\u5728\u6df1\u5165\u4e86\u89e3\u7528\u6237/\u6d88\u8d39\u8005/\u89c2\u5bdf\u8005\u7684\u5934\u8111\uff0c\u5e76\u4e14\u901a\u8fc7\u7275\u52a8\u7528\u6237\u60c5\u7eea\u6765\u63d0\u5347\u7528\u6237\u4f53\u9a8c\uff08\u6bd4\u5982\u8bf4\u6539\u5584\u6574\u4f53\u89c6\u89c9\u5f62\u8c61\uff09\u6216\u662f\u670d\u52a1\u5546\u4e1a\u5229\u76ca\uff08\u6bd4\u5982\u8bf4\u4e3a\u4e86\u516c\u53f8\u6216\u4ea7\u54c1\u6240\u6709\u8005\u7684\u5229\u76ca\uff0c\u4ece\u60c5\u611f\u4e0a\u52ab\u6301\u7528\u6237\u4f7f\u4ed6\u4eec\u8fdb\u884c\u8d2d\u4e70\uff09\u3002

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_3","title":"\u884c\u4e3a\u5c42\u8bbe\u8ba1","text":"

    \u884c\u4e3a\u5c42\u8bbe\u8ba1-\u201c\u4e0e\u4f7f\u7528\u7684\u6109\u60a6\u611f\u548c\u6548\u7387\u6709\u5173\u3002\u201d\u884c\u4e3a\u5c42\u8bbe\u8ba1\u53ef\u80fd\u66f4\u66f4\u5e38\u88ab\u79f0\u4e3a\u53ef\u7528\u6027\uff0c\u800c\u4e24\u8005\u6307\u7684\u90fd\u662f\u4ea7\u54c1\u4e2d\u5b9e\u7528\u6027\u548c\u529f\u80fd\u6027\u65b9\u9762\uff0c\u6216\u662f\u662f\u6211\u4eec\u5728\u6240\u5904\u73af\u5883\u4e2d\u6240\u80fd\u4f7f\u7528\u7684\u4efb\u4f55\u4ea7\u54c1\u7684\u53ef\u7528\u6027\u3002\u884c\u4e3a\u5c42\u8bbe\u8ba1\uff08\u4ece\u73b0\u5728\u8d77\u6211\u4eec\u7528\u8fd9\u4e2a\u8bcd\u6c47\u6765\u4ee3\u66ff\u53ef\u7528\u6027\uff09\u7740\u773c\u4e8e\uff0c\u8bf8\u5982\uff0c\u7528\u6237\u5982\u4f55\u8fdb\u884c\u6d3b\u52a8\uff1b\u5982\u4f55\u5feb\u901f\u548c\u51c6\u786e\u5730\u5b9e\u73b0\u4ed6\u4eec\u7684\u76ee\u6807\u548c\u76ee\u7684\uff1b\u7528\u6237\u5728\u6267\u884c\u67d0\u4e9b\u4efb\u52a1\u65f6\u72af\u4e86\u591a\u5c11\u9519\u8bef\uff1b\u4ee5\u53ca\u4ea7\u54c1\u5982\u4f55\u5f88\u597d\u5730\u9002\u5e94\u719f\u7ec3\u548c\u7f3a\u4e4f\u7ecf\u9a8c\u7684\u7528\u6237\u7b49\u95ee\u9898\u3002

    \u884c\u4e3a\u5c42\u8bbe\u8ba1\u53ef\u80fd\u662f\u6700\u5bb9\u6613\u6d4b\u8bd5\u7684\uff0c\u56e0\u4e3a\u4e00\u65e6\u5bf9\u8c61\u7684\u7269\u7406\uff08\u6bd4\u5982\u8bf4\u624b\u67c4\u3001\u6309\u94ae\u3001\u628a\u624b\u3001\u63a7\u5236\u6746\u3001\u5f00\u5173\u4ee5\u53ca\u952e\uff09\u6216\u53ef\u7528\u90e8\u5206\u4ee5\u67d0\u79cd\u65b9\u5f0f\u88ab\u6539\u53d8\u6216\u64cd\u4f5c\uff0c\u5c31\u53ef\u4ee5\u5728\u8868\u73b0\u5c42\u5bf9\u5176\u8fdb\u884c\u8861\u91cf\u3002\u6bd4\u5982\u8bf4\uff0c\u8d1f\u8d23\u72ec\u7acb\u64cd\u4f5c\u7684\u4e24\u4e2a\u6309\u94ae\u88ab\u653e\u7f6e\u5728\u4e0d\u540c\u7684\u8ddd\u79bb\u4ece\u800c\u6d4b\u91cf\u7528\u6237\u8fde\u7eed\u5b8c\u6210\u8fd9\u4e24\u4e2a\u64cd\u4f5c\u7684\u65f6\u95f4\u3002\u6216\u8005\uff0c\u901a\u8fc7\u76f8\u540c\u7684\u64cd\u4f5c\u6765\u6d4b\u8bd5\u9519\u8bef\u7387\u3002\u6d89\u53ca\u884c\u4e3a\u5c42\u4f53\u9a8c\u7684\u4f8b\u5b50\u8fd8\u5305\u62ec\uff0c\u5f53\u6211\u4eec\u62ff\u51fa\u624b\u673a\u65f6\u80fd\u591f\u8fc5\u901f\u627e\u5230\u8054\u7cfb\u4eba\u5e76\u62e8\u6253\u53f7\u7801\u7684\u6109\u60a6\u611f\uff1b\u5728\u7535\u8111\u952e\u76d8\u4e0a\u80fd\u591f\u8f7b\u677e\u6253\u5b57\uff0c\u800c\u5728\u5c0f\u7684\u89e6\u5c4f\u8bbe\u5907\uff0c\u6bd4\u5982\u8bf4iPod Touch\u4e0a\u6253\u5b57\u5c31\u6bd4\u8f83\u56f0\u96be\uff1b\u4ee5\u53ca\u6211\u4eec\u5728\u4f7f\u7528\u4e00\u4e2a\u8bbe\u8ba1\u826f\u597d\u7684\u7535\u8111\u6e38\u620f\u624b\u67c4\uff08\u5c31\u50cf\u6211\u7684N64\u63a7\u5236\u677f\uff09\u65f6\u7684\u4eab\u53d7\u3002\u884c\u4e3a\u5c42\u9762\u672c\u8d28\u4e0a\u662f\u6307\u6211\u4eec\u56e0\u5b8c\u6210\u6216\u672a\u80fd\u5b8c\u6210\u76ee\u6807\u800c\u4ea7\u751f\u7684\u60c5\u7eea\u3002\u5f53\u4ea7\u54c1/\u7269\u54c1\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u7528\u4e00\u70b9\u70b9\u6709\u610f\u8bc6\u7684\u52aa\u529b\uff0c\u5e76\u4e14\u6574\u4e2a\u8fc7\u7a0b\u4e2d\u9047\u5230\u6700\u5c11\u7684\u56f0\u96be\u5c31\u80fd\u5b8c\u6210\u76ee\u6807\uff0c\u8fd9\u65f6\u6211\u4eec\u7684\u60c5\u7eea\u5f88\u53ef\u80fd\u662f\u79ef\u6781\u7684\u3002\u76f8\u53cd\uff0c\u5f53\u4ea7\u54c1\u9650\u5236\u6211\u4eec\uff0c\u8feb\u4f7f\u6211\u4eec\u6839\u636e\u4ea7\u54c1\u7684\u9650\u5236\u6765\u89e3\u91ca\u6216\u8c03\u6574\u6211\u4eec\u7684\u76ee\u6807\uff0c\u6216\u8005\u53ea\u662f\u8ba9\u6211\u4eec\u5728\u4f7f\u7528\u4ea7\u54c1\u65f6\u5bc6\u5207\u5173\u6ce8\u8fd9\u4e9b\u76ee\u6807\u65f6\uff0c\u6211\u4eec\u66f4\u503e\u5411\u4e8e\u4ea7\u751f\u4e00\u4e9b\u8d1f\u9762\u60c5\u7eea\u3002

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_4","title":"\u53cd\u601d\u5c42\u8bbe\u8ba1","text":"

    \u53cd\u601d\u5c42\u8bbe\u8ba1\u201c\u8003\u8651\u4ea7\u54c1\u7684\u5408\u7406\u5316\u548c\u667a\u80fd\u5316\u3002\u5173\u4e8e\u8be5\u4ea7\u54c1\u6211\u80fd\u8bb2\u8ff0\u4e00\u4e2a\u6545\u4e8b\u5417\uff1f\u5b83\u7b26\u5408\u6211\u7684\u81ea\u6211\u5f62\u8c61\uff0c\u6211\u7684\u81ea\u5c0a\u5fc3\u9700\u8981\u5417\uff1f\u201d\u8fd9\u5c31\u662f\u60c5\u611f\u8bbe\u8ba1\u7684\u6700\u9ad8\u5c42\u6b21\uff1b\u4ee3\u8868\u6211\u4eec\u6709\u610f\u8bc6\u6709\u601d\u60f3\u5730\u8fdb\u884c\u8bbe\u8ba1\uff1b\u6743\u8861\u5176\u4f18\u7f3a\u70b9\uff1b\u5229\u7528\u6211\u4eec\u66f4\u7ec6\u5fae\u548c\u7406\u6027\u7684\u4e00\u9762\u8fdb\u884c\u5224\u65ad\uff0c\u5e76\u63d0\u53d6\u4fe1\u606f\u4ee5\u786e\u5b9a\u5b83\u5bf9\u6211\u4eec\u4e2a\u4eba\u7684\u610f\u4e49\u3002\u53cd\u601d\u601d\u7ef4\u4f7f\u6211\u4eec\u80fd\u591f\u5408\u7406\u5316\u73af\u5883\u4fe1\u606f\u4ee5\u5f71\u54cd\u884c\u4e3a\u5c42\u3002\u6bd4\u5982\u8bf4\u667a\u80fd\u624b\u8868\u3002\u201d\u57fa\u4e8e\u8fd9\u4e00\u70b9\uff0c\u97e9\u56fd\u5927\u5b66\u7684\u7814\u7a76\u5458Jaewon Choi\u548cSongcheol Kim\u8003\u5bdf\u4e86\u7528\u6237\u4f7f\u7528\u667a\u80fd\u624b\u8868\u7684\u76ee\u7684\u4e3b\u8981\u662f\u57fa\u4e8e\u4e24\u4e2a\u4e3b\u8981\u56e0\u7d20\uff0c\u4e00\u79cd\u662f\u7528\u6237\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u6280\u672f\u521b\u65b0\u53e6\u4e00\u79cd\u662f\u5c06\u5176\u4f5c\u4e3a\u5962\u4f88\u65f6\u5c1a\u4ea7\u54c1\u3002\u4ece\u7528\u6237\u89c6\u89d2\u6765\u770b\uff0c\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u4e00\u9879\u6280\u672f\u521b\u65b0\uff0c\u8fd9\u4e0e\u4ed6\u4eec\u5bf9\u8bbe\u5907\u7684\u5b9e\u7528\u6027\u548c\u6613\u7528\u6027\uff08\u884c\u4e3a\u5c42\uff09\u7684\u770b\u6cd5\u6709\u5173\u3002\u53e6\u4e00\u65b9\u9762\uff0c\u7528\u6237\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u4e00\u79cd\u5962\u4f88\u65f6\u5c1a\u4ea7\u54c1\uff0c\u8fd9\u65e2\u548c\u4ed6\u4eec\u5c06\u5982\u4f55\u4eab\u53d7\u667a\u80fd\u624b\u8868\u7684\u8ba4\u77e5\uff0c\u4e5f\u548c\u667a\u80fd\u624b\u8868\u5c06\u4e3a\u4ed6\u4eec\u63d0\u4f9b\u600e\u6837\u7684\u81ea\u6211\u8868\u73b0\u529b\u6709\u5173\uff08\u5373\u8868\u8fbe\u81ea\u5df1\u548c\u589e\u5f3a\u5f62\u8c61\u7684\u80fd\u529b\uff09\u3002\u4eab\u53d7\u548c\u81ea\u6211\u8868\u8fbe\u90fd\u53d7\u5230\u672c\u80fd\u5c42\u7684\u5f71\u54cd\uff08\u201c\u624b\u8868\u770b\u8d77\u6765\u6f02\u4eae\u5417\uff1f\u201d\uff09\u4f46\u4e5f\u5f88\u53d7\u5230\u53cd\u601d\u5c42\u7684\u5f71\u54cd\uff08\u201c\u5f53\u6211\u7684\u670b\u53cb\u770b\u5230\u6211\u6234\u7740\u8fd9\u53ea\u8868\u65f6\uff0c\u4ed6\u4eec\u4f1a\u600e\u4e48\u60f3\uff1f\u201d\uff09\u3002

    \u53cd\u601d\u5c42\u8c03\u8282\u4e86\u884c\u4e3a\u5c42\u5e26\u6765\u7684\u5f71\u54cd\u2014\u2014\u7528\u6237\u5f88\u53ef\u80fd\u4f1a\u5fcd\u53d7\u667a\u80fd\u624b\u8868\u6613\u7528\u6027\u65b9\u9762\u7684\u56f0\u96be\u548c\u7f3a\u70b9\uff0c\u56e0\u4e3a\u4ed6\u4eec\u76f8\u4fe1\u4ed6\u4eec\u80fd\u4ece\u667a\u80fd\u624b\u8868\u4e2d\u83b7\u5f97\u5176\u4ed6\u975e\u529f\u80fd\u6027\u7684\u5229\u76ca\u3002\u82f9\u679c\u667a\u80fd\u624b\u8868\u7684\u7b2c\u4e00\u4e2a\u7248\u672c\u5145\u6ee1\u4e86\u529f\u80fd\u95ee\u9898\u548c\u53ef\u7528\u6027\u95ee\u9898\uff0c\u4f46\u8fd9\u5e76\u6ca1\u6709\u963b\u6b62\u82f9\u679c\u5728\u9500\u552e\u667a\u80fd\u624b\u8868\u7684\u7b2c\u4e00\u5e74\u521b\u9020\u51fa\u5168\u7403\u624b\u8868\u4ea7\u4e1a\u7684\u7b2c\u4e8c\u5927\u6536\u5165\uff01

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#the-take-away","title":"The Take Away","text":"

    \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u4ecb\u7ecd\u4e86\u5510\u00b7\u8bfa\u66fc\u7684\u4e09\u4e2a\u8bbe\u8ba1\u5c42\u6b21\uff1a\u8bbe\u8ba1\u7684\u672c\u80fd\u5c42\u3001\u884c\u4e3a\u5c42\u548c\u53cd\u601d\u5c42\u3002\u8bbe\u8ba1\u7684\u672c\u80fd\u5c42\u6307\u7684\u662f\u8bbe\u8ba1\u7684\u7b2c\u4e00\u5370\u8c61\uff0c\u65e0\u8bba\u662f\u4ece\u7528\u6237\u5982\u4f55\u770b\u5f85\u4ea7\u54c1\uff0c\u8fd8\u662f\u4ece\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u611f\u53d7\u3002\u884c\u4e3a\u5c42\u662f\u6307\u4ea7\u54c1\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u7684\u4f53\u9a8c\u3002\u5f53\u6211\u4eec\u60f3\u5230\u7528\u6237\u4f53\u9a8c\u65f6\uff0c\u6211\u4eec\u5e38\u5e38\u4f1a\u60f3\u5230\u8fd9\u4e2a\u5c42\u6b21\u3002\u53cd\u601d\u5c42\u662f\u6307\u7528\u6237\u5728\u4f7f\u7528\u524d\u3001\u4f7f\u7528\u4e2d\u548c\u4f7f\u7528\u540e\u5bf9\u4ea7\u54c1\u7684\u601d\u8003\u3002\u8fd9\u4e09\u4e2a\u5c42\u6b21\u90fd\u7ed3\u5408\u5728\u4e00\u8d77\u5f62\u6210\u4e86\u6574\u4e2a\u4ea7\u54c1\u4f53\u9a8c\u3002

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_5","title":"\u53c2\u8003","text":"

    Choi, J., & Kim, S. (2016). \u201cIs the smartwatch an IT product or a fashion product? A study on factors affecting the intention to use smartwatches\u201d. Computers in Human Behavior, 63, 777-786.

    \u4f5c\u8005\uff1aAndreas Komninos

    \u8bd1\u8005\uff1a\u5b54

    \u5ba1\u7a3f\uff1aHoodie

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/my-to-desihn/","title":"\u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u770b\u6cd5","text":"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981

    \u8be5\u6587\u7ae0\u9610\u8ff0\u4e86\u8bbe\u8ba1\u7684\u5173\u952e\u539f\u5219\u4e0e\u4ef7\u503c\u4e3b\u5f20\uff0c\u5f3a\u8c03\u7b80\u6d01\u6027\u3001\u89c6\u89c9\u7f8e\u611f\u4e0e\u7528\u6237\u4f53\u9a8c\u7684\u6838\u5fc3\u5730\u4f4d\u3002\u4f5c\u8005\u63d0\u51fa\u516d\u9879\u8bbe\u8ba1\u51c6\u5219\uff1a\u901a\u8fc7\u7cbe\u7b80\u5143\u7d20\u5b9e\u73b0\u529f\u80fd\u805a\u7126\uff1b\u8fd0\u7528\u89c6\u89c9\u5e73\u8861\u63d0\u5347\u4f18\u96c5\u611f\uff1b\u4ee5\u7528\u6237\u884c\u4e3a\u6a21\u5f0f\u4f18\u5316\u4ea4\u4e92\u6d41\u7a0b\uff1b\u7cbe\u7ec6\u5316\u5904\u7406\u89c6\u89c9\u7ec6\u8282\uff1b\u878d\u5408\u521b\u65b0\u601d\u7ef4\u7a81\u7834\u4f20\u7edf\uff1b\u501f\u52a9\u6545\u4e8b\u6027\u5efa\u7acb\u60c5\u611f\u8fde\u63a5\u3002\u8fd9\u4e9b\u89c2\u70b9\u7cfb\u7edf\u6027\u5730\u63ed\u793a\u4e86\u4f18\u79c0\u8bbe\u8ba1\u5e94\u517c\u5177\u529f\u80fd\u6027\u3001\u5ba1\u7f8e\u6027\u4e0e\u60c5\u611f\u5171\u9e23\u7684\u7279\u8d28\u3002

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a398

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/my-to-desihn/#some-of-my-thoughts-on-design","title":"Some of my thoughts on design","text":"\u5438\u5f15\u4eba\u7684\u4e8b\u7269\u603b\u8ba9\u4eba\u5fc3\u60c5\u6109\u60a6 \u5e76\u53cd\u8fc7\u6765\u4fc3\u8fdb\u4ed6\u4eec\u7684\u601d\u7ef4\u66f4\u5177\u521b\u610f
    1. \u7b80\u6d01\u4e0e\u7cbe\u70bc\uff1a\u7b80\u6d01\u3001\u7cbe\u70bc\u548c\u7cbe\u786e\u7684\u8868\u8fbe\u3002\u53bb\u9664\u4e0d\u5fc5\u8981\u7684\u5143\u7d20\uff0c\u4f7f\u8bbe\u8ba1\u66f4\u52a0\u7b80\u6d01\u660e\u4e86\u3002\u5173\u6ce8\u6838\u5fc3\u529f\u80fd\u548c\u4fe1\u606f\uff0c\u907f\u514d\u8fc7\u5ea6\u8bbe\u8ba1\u548c\u5197\u4f59\u3002

    2. \u4f18\u96c5\u4e0e\u7f8e\u611f\uff1a\u8ffd\u6c42\u4f18\u96c5\u548c\u7f8e\u611f\u7684\u8bbe\u8ba1\u3002\u6ce8\u91cd\u7ebf\u6761\u7684\u6d41\u7545\u6027\u548c\u89c6\u89c9\u4e0a\u7684\u5e73\u8861\u3002\u901a\u8fc7\u7cbe\u5fc3\u7684\u6392\u7248\u3001\u5bf9\u6bd4\u548c\u6bd4\u4f8b\uff0c\u521b\u9020\u51fa\u4ee4\u4eba\u6109\u60a6\u7684\u89c6\u89c9\u6548\u679c\u3002

    3. \u7528\u6237\u4f53\u9a8c\u81f3\u4e0a\uff1a\u4ee5\u7528\u6237\u4e3a\u4e2d\u5fc3,\u5173\u6ce8\u7528\u6237\u9700\u6c42\u548c\u884c\u4e3a\u6a21\u5f0f\uff0c\u521b\u9020\u51fa\u7b80\u5355\u76f4\u89c2\u3001\u6613\u4e8e\u4f7f\u7528\u7684\u4ea7\u54c1\u548c\u754c\u9762\u3002\u901a\u8fc7\u51cf\u5c11\u590d\u6742\u6027\u548c\u63d0\u4f9b\u65e0\u7f1d\u7684\u4ea4\u4e92\u4f53\u9a8c\uff0c\u4f7f\u7528\u6237\u4e0e\u4ea7\u54c1\u4e4b\u95f4\u7684\u4e92\u52a8\u66f4\u52a0\u81ea\u7136\u6d41\u7545\u3002

    4. \u5f3a\u8c03\u7ec6\u8282\uff1a\u4ece\u5b57\u4f53\u9009\u62e9\u5230\u989c\u8272\u642d\u914d\uff0c\u4ece\u56fe\u6807\u8bbe\u8ba1\u5230\u52a8\u753b\u6548\u679c\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u7cbe\u5fc3\u7684\u8003\u8651\u548c\u628a\u63a7\u3002\u7ec6\u8282\u7684\u5173\u6ce8\u4f7f\u5f97\u4ea7\u54c1\u7684\u6574\u4f53\u8d28\u611f\u66f4\u51fa\u8272\u3002

    5. \u521b\u65b0\u4e0e\u7a81\u7834\uff1a\u9f13\u52b1\u521b\u65b0\u548c\u7a81\u7834\u4f20\u7edf\u89c2\u5ff5\u7684\u601d\u7ef4\u65b9\u5f0f\u3002\u5c06\u4e0d\u540c\u7684\u5143\u7d20\u878d\u5408\u5728\u4e00\u8d77\uff0c\u521b\u9020\u51fa\u72ec\u7279\u7684\u8bbe\u8ba1\u89e3\u51b3\u65b9\u6848\u3002\u5728\u8bbe\u8ba1\u4e2d\u5bfb\u627e\u7a81\u7834\u70b9\uff0c\u63d0\u4f9b\u65b0\u9896\u800c\u5bcc\u6709\u521b\u610f\u7684\u4f53\u9a8c\u3002

    6. \u6545\u4e8b\u6027\u4e0e\u60c5\u611f\u5171\u9e23\uff1a\u60c5\u611f\u5171\u9e23\u548c\u6545\u4e8b\u6027\u7684\u4f53\u9a8c\u3002\u8bbe\u8ba1\u6765\u4f20\u9012\u4ea7\u54c1\u7684\u80cc\u540e\u6545\u4e8b\u548c\u54c1\u724c\u7684\u4ef7\u503c\u89c2\u3002\u901a\u8fc7\u7b80\u5355\u800c\u6709\u529b\u7684\u8bbe\u8ba1\u8bed\u8a00\uff0c\u6fc0\u53d1\u7528\u6237\u7684\u60c5\u611f\u5171\u9e23\u548c\u5bf9\u4ea7\u54c1\u7684\u8ba4\u540c\u3002

    \u3010\u26a1\u554a\uff01\u8bbe\u8ba1\uff0c\u662f\u4ec0\u4e48\u5462\uff1f\u26a1\u3011

    ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"en/","title":"Home","text":"\"Follow this arduous journey to reach the stars\"
    • Open articles by topic and table of contents
      • For Mac/PC, please select the topic in the tab bar above and select the article in the directory on the left
      • Mobile version, please click the icon in the upper left corner to select topics and articles
    • Search for keywords to open articles
    • If you encounter web page freezes or images cannot be displayed after opening an article, please use Scientific Internet Access to break information barriers

    Quick Chat(1) Contact Me(2)

    1. Click on the bottom right corner to chat with me online.
    2. Wechat:18939533255
    • Mkdocs Tutorial

      • Deploy static web pages to GitHub pages with Mkdocs
      • Mkdocs deployment configuration explanation (mkdocs.yml)
      • How to add friends links to MKdocs
      • Adding Mkdocs blog to website
      • Blogger
    • About

      • Mkdocs-Wcowin blog theme community
      • Message Board1
      • Blogger Learn about me2

    This site is already running

    1. The sun always warms sunflowers\u00a0\u21a9

    2. All problems in computer science can be solved by another level of indirection\u00a0\u21a9

    "},{"location":"blog/archive/2025/","title":"2025","text":""},{"location":"blog/archive/2024/","title":"2024","text":""},{"location":"blog/archive/2023/","title":"2023","text":""},{"location":"blog/archive/2022/","title":"2022","text":""},{"location":"blog/archive/2021/","title":"2021","text":""},{"location":"blog/category/%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/category/hello-world/","title":"Hello World","text":""}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"Home","text":"\u6700\u597d\u7684MkDocs\u535a\u5ba2\u6559\u7a0b
    • \u5bfc\u822a\u680f

      • \u7b80\u6d01\u7f8e\u89c2 \uff0c\u529f\u80fd\u591a\u5143\u5316\uff0c\u5c0f\u767d\u914d\u7f6e
      • \u57fa\u4e8eMaterial for MkDocs\u7f8e\u5316
      • \u5982\u9047\u9875\u9762\u5361\u987f\uff0c\u8bf7\u4f7f\u7528\u79d1\u5b66\u4e0a\u7f51
      • \ud835\udd59\ud835\udd52\ud835\udd67\ud835\udd56 \ud835\udd52 \ud835\udd58\ud835\udd60\ud835\udd60\ud835\udd55 \ud835\udd65\ud835\udd5a\ud835\udd5e\ud835\udd56 !
      Mac/PC\u7aef\u79fb\u52a8\u7aef

      \u8bf7\u5728\u4e0a\u65b9\u6807\u7b7e\u9009\u62e9\u5206\u7c7b/\u5de6\u4fa7\u76ee\u5f55\u9009\u62e9\u6587\u7ae0

      \u8bf7\u70b9\u51fb\u5de6\u4e0a\u89d2\u56fe\u6807\u9009\u62e9\u5206\u7c7b\u548c\u6587\u7ae0

    \u4e0d\u540c\u4e8e\u5e02\u9762\u4e0a\u8fc7\u65f6\u7684MkDocs\u6559\u7a0b\uff0c\u672c\u7ad9\u63d0\u4f9b\u4e86\u6700\u8be6\u7ec6\u6700\u4fbf\u6377\u6700\u524d\u6cbf\u7684MkDocs\u4e2d\u6587\u6587\u5b57/\u89c6\u9891\u6559\u7a0b\uff0c\u4e0e\u5b98\u65b9\u53d1\u5e03\u7684\u6559\u7a0b\u7248\u672c\u540c\u6b65\u3002\u5305\u542b\u4e86MkDocs\u7684\u5b89\u88c5\u3001\u914d\u7f6e\u3001\u4e3b\u9898\u7f8e\u5316\u3001\u63d2\u4ef6\u4f7f\u7528\u7b49\u5185\u5bb9\u3002\u65e0\u8bba\u4f60\u662f\u521d\u5b66\u8005\u8fd8\u662f\u6709\u7ecf\u9a8c\u7684\u7528\u6237\uff0c\u90fd\u80fd\u5728\u8fd9\u91cc\u627e\u5230\u4f60\u9700\u8981\u7684\u5e2e\u52a9\u3002\u6211\u4eec\u8fd8\u63d0\u4f9b\u4e86\u793a\u4f8b\u548c\u5b9e\u7528\u7684\u6280\u5de7\uff0c\u5e2e\u52a9\u4f60\u66f4\u597d\u5730\u4f7f\u7528MkDocs\u3002\ud835\udcf3\ud835\udcfe\ud835\udcfc\ud835\udcfd \ud835\udcee\ud835\udcf7\ud835\udcf3\ud835\udcf8\ud835\udd02 \ud835\udcf2\ud835\udcfd\uff5e

    • Mkdocs\u6559\u7a0b(\u5fc5\u770b)

      • Mkdocs\u89c6\u9891\u6559\u7a0b(Bilibili)
      • \u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages
      • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
      • \u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe
      • \u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
    • \u5173\u4e8e

      • Mkdocs-Wcowin\u535a\u5ba2\u4e3b\u9898\u793e\u533a
      • \u7559\u8a00\u677f1
      • Blogger
      • \u4e86\u89e3\u62112
      • \u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561

    \u672c\u7ad9\u5df2\u7ecf\u8fd0\u884c

    1. \u592a\u9633\u603b\u662f\u80fd\u6e29\u6696\u5411\u65e5\u8475\u00a0\u21a9

    2. All-problems-in-computer-science-can-be-solved-by-another-level-of-indirection\u00a0\u21a9

    "},{"location":"link/","title":"\u53cb\u94fe","text":""},{"location":"link/#_1","title":"\u6b22\u8fce\u52a0\u5165\u53cb\u94fe(\u4e0d\u5206\u5148\u540e)","text":"Wcowin's Blog \u201c\u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0\u201d"},{"location":"link/#_2","title":"\u5931\u8054\u4eba\u5458","text":"\u90dd\u5b87\u535a\u5ba2 \u8bb0\u5f55\u6211\u7684\u6210\u957f\u548c\u9752\u6625 \u4ea4\u6362\u53cb\u94fe\uff0c\u8bf7\u6dfb\u52a0\u672c\u7ad9\u53cb\u94fe\u540e\u4e0b\u65b9\u7559\u8a00\u7533\u8bf7\uff0c\u671f\u671b\u60a8\u7684\u7ad9\u70b9:
    • \u72ec\u7acb\u535a\u5ba2(\u4e0d\u8981\u6c42\u72ec\u7acb\u57df\u540d)\uff0chttps\uff0c\u8bbf\u95ee\u6d41\u7545
    • \u539f\u521b\u5185\u5bb9\u4e3a\u4e3b\uff0c\u539f\u521b\u5185\u5bb93\u7bc7\u4ee5\u4e0a
    • \u5904\u4e8e\u6d3b\u8dc3\u72b6\u6001\uff0c\u6709\u4e00\u5b9a\u7684\u66f4\u65b0\u9891\u7387
    • \u5efa\u7ad9\u4e00\u4e2a\u6708\u4ee5\u4e0a
    • \u672a\u6dfb\u52a0\u53cb\u94fe\u6216\u7533\u8bf7\u672a\u901a\u8fc7\uff0c\u8bc4\u8bba\u7559\u8a00\u4f1a\u88ab\u9690\u85cf\u3002

    \u672c\u7ad9\u5df2\u7ecf\u52a0\u5165\u5341\u5e74\u4e4b\u7ea6\uff1a \u8bf7\u653e\u5fc3\u6dfb\u52a0\u672c\u7ad9\u53cb\u94fe

    \u53cb\u94fe\u683c\u5f0f\u793a\u4f8b/\u672c\u7ad9\u4fe1\u606f:

    TxtHTML(\u63a8\u8350)Butterfly\u901a\u7528

    \u540d\u79f0: Wcowin's Blog \u94fe\u63a5: https://wcowin.work/ \u5934\u50cf: https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp \u7b80\u4ecb: \u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0

    \u63a8\u8350\u5728\u8bc4\u8bba\u533a\u53d1\u9001\u8fd9\u79cd\u683c\u5f0f\uff0c*\u53f7\u7684\u9700\u8981\u586b\u5199\u81ea\u5df1\u7684\u4fe1\u606f

    <div class=\"card\"> \n <img class=\"ava\" src=\"*\u4f60\u7684\u5934\u50cf\u94fe\u63a5*\" /> \n <div class=\"card-header\"> \n  <div> \n   <a href=\"*\u4f60\u7684\u7f51\u7ad9\u5730\u5740* \" target=\"_blank\">*\u4f60\u7684\u7ad9\u70b9\u540d\u79f0*</a> \n  </div> \n  <div class=\"info\">\n   *\u4f60\u7684\u7ad9\u70b9\u63cf\u8ff0*\n  </div> \n </div> \n</div>\n
    - name: Wcowin's Blog\n  link: https://wcowin.work/\n  avatar: https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp\n  descr: \u5faa\u6b64\u82e6\u65c5\uff0c\u4ee5\u8fbe\u661f\u8fb0\n

    \u70b9\u51fb\u586b\u5199\u53cb\u94fe\u7533\u8bf7\u95ee\u5377

    "},{"location":"liuyanban/","title":"\u7545\u6240\u6b32\u8a00\u7559\u8a00\u677f","text":"

    \u6708\u843d\u4e4c\u557c\u971c\u6ee1\u5929 \u6c5f\u67ab\u6e14\u706b\u5bf9\u6101\u7720

    \u300a\u67ab\u6865\u591c\u6cca\u300b\u3010\u5510\u4ee3\u3011\u5f20\u7ee7

    \u8bc4\u8bba\u7cfb\u7edf\u5207\u6362

    Giscus Cusdis

    \u8bc4\u8bba\u5ba1\u6838\u540e\u624d\u4f1a\u663e\u793a

    "},{"location":"tag/","title":"\u5206\u7c7b","text":""},{"location":"tag/#tags","title":"Tags","text":"
    • tips

      \u4ee5\u4e0b\u662f\u7f51\u7ad9\u6587\u7ae0\u7684\u5206\u7c7b\uff0c\u70b9\u51fb\u53ef\u8df3\u8f6c\u5230\u5bf9\u5e94\u5206\u7c7b\u4e0b\u7684\u6587\u7ae0

    "},{"location":"tag/#tag:markdown","title":"Markdown","text":"
    • MWeb Pro
    • Markdown\u6307\u5357
    "},{"location":"tag/#tag:mkdocs","title":"Mkdocs","text":"
    • 0.Mkdocs\u6559\u7a0b\u524d\u8a00
    • 1.\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875
    • 2.Mkdocs\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
    • 3.\u89e3\u51b3Github Pages\u90e8\u7f72mkdocs\u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898
    • JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f
    • MkDocs\u6587\u6863AI\u6458\u8981
    • \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233
    • \u4fee\u6539\u7f51\u7ad9\u5b57\u4f53
    • \u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97
    • \u5d4c\u5165PDF\u6587\u4ef6
    • \u6dfb\u52a0404\u9875\u9762
    • \u6dfb\u52a0Mkdocs\u535a\u5ba2
    • \u6dfb\u52a0\u53cb\u94fe
    • \u6dfb\u52a0\u5728\u7ebf\u804a\u5929
    • \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf(giscus\u4e3a\u4f8b)
    • \u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f
    • \u76f8\u5bf9\u5730\u5740\u7684\u4e00\u4e9b\u95ee\u9898
    • \u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1
    • \u80cc\u666f\u7279\u6548
    • \u9875\u811a\u8bbe\u7f6e
    "},{"location":"tag/#tag:\u6280\u672f\u5206\u4eab","title":"\u6280\u672f\u5206\u4eab","text":"
    • Git \u5b9e\u7528\u6280\u5de7
    • \u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd
    • \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1
    "},{"location":"tag/#tag:\u8bbe\u8ba1\u7f8e\u5b66","title":"\u8bbe\u8ba1\u7f8e\u5b66","text":"
    • \u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21
    • \u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u89c2\u70b9
    "},{"location":"ZH-TW/","title":"Home","text":"

    \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

    \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a225

    "},{"location":"ZH-TW/#_1","title":"\u9996\u9801","text":"\u201c\u5faa\u6b64\u82e6\u65c5 \u4ee5\u9054\u661f\u8fb0\u201d
    • \u900f\u904e\u4e3b\u984c\u548c\u76ee\u9304\u4ee5\u958b\u555f\u6587\u7ae0
      • Mac/PC\u7aef \u8acb\u5728\u4e0a\u65b9\u6a19\u7c64\u5217\u9078\u64c7\u4e3b\u984c \u5728\u5de6\u5074\u76ee\u9304\u9078\u64c7\u6587\u7ae0
      • \u884c\u52d5\u7aef \u8acb\u9ede\u9078\u5de6\u4e0a\u89d2\u5716\u793a\u9078\u64c7\u4e3b\u984c\u548c\u6587\u7ae0
    • \u641c\u5c0b\u95dc\u9375\u5b57\u4ee5\u958b\u555f\u6587\u7ae0
    • \u5982\u9047\u5230\u7db2\u9801\u5361\u9813/\u958b\u555f\u6587\u7ae0\u5f8c\u7121\u6cd5\u986f\u793a\u5716\u7247\u7684\u60c5\u6cc1\uff0c\u8acb\u4f7f\u7528\u79d1\u5b78\u4e0a\u7db2\u4ee5\u6253\u7834\u8cc7\u8a0a\u58c1\u58d8

    \u5feb\u901f\u8ac7\u8a71(1) \u806f\u7d61\u6211(2)

    1. \u9ede\u9078\u53f3\u4e0b\u89d2\u8207\u6211\u7dda\u4e0a\u4ea4\u8ac7.
    2. 18939533255
    • Mkdocs\u6559\u7a0b

      • \u5229\u7528Mkdocs\u90e8\u7f72\u975c\u614b\u7db2\u9801\u81f3GitHub pages
      • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8aaa\u660e(mkdocs.yml)
      • \u5982\u4f55\u7d66MKdocs\u6dfb\u52a0\u53cb\u93c8
      • \u7db2\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
      • Blogger
    • \u95dc\u65bc

      • Mkdocs-Wcowin\u535a\u5ba2\u4e3b\u984c\u793e\u5340
      • \u7559\u8a00\u677f1
      • Blogger \u4e86\u89e3\u62112

    \u672c\u7ad9\u5df2\u7d93\u904b\u4f5c

    1. \u592a\u967d\u7e3d\u662f\u80fd\u6eab\u6696\u5411\u65e5\u8475\u00a0\u21a9

    2. All problems in computer science can be solved by another level of indirection\u00a0\u21a9

    "},{"location":"about/geren/","title":"\u5173\u4e8e\u6211","text":""},{"location":"about/geren/#_1","title":"\u4eca\u65e5\u8bd7\u8bcd","text":""},{"location":"about/geren/#_2","title":"\u5173\u4e8e\u6211","text":"\u89c2\u53f2\u77e5\u4eca\uff0c\u5f53\u601d\u8fdb\u9000\uff0c\u8bfb\u4e66\u660e\u5fd7\u53ef\u8bc6\u6625\u79cb \u2014\u2014Wcowin 1\u5e74+ \u5de5\u4f5c\u7ecf\u9a8c 3\u9879+ \u5b8c\u6210\u7684\u9879\u76ee 2\u4e2a+ \u8d21\u732e\u7684\u5f00\u6e90 \u4e0b\u8f7d\u7b80\u5386"},{"location":"about/geren/#_3","title":"\u6211\u7684\u5c65\u5386","text":"\u6765\u65f6\u8def \u6f2f\u6cb3\u9ad8\u4e2d \u5e73\u51e1\u7684\u4e09\u5e74 2018 - 2021 CTBU \u7535\u5b50\u4fe1\u606f\u5de5\u7a0b\u4e13\u4e1a\u5b66\u58eb 2021 - 2025 \u5bb6\u91cc\u8e72\u5927\u5b66 \u5bc6\u7801\u5b66\u7855\u58eb\u7814\u7a76\u751f 2026 - 2029 \u672a\u5b8c\u5f85\u7eed \u4e8e\u9053\u5404\u52aa\u529b\uff0c\u5343\u91cc\u81ea\u540c\u98ce Before - After"},{"location":"about/geren/#_4","title":"\u4e2a\u4eba\u7b80\u4ecb","text":"

    \ud835\ude3f\ud835\ude64\ud835\ude63'\ud835\ude69 \ud835\ude58\ud835\ude56\ud835\ude67\ud835\ude5a \ud835\ude56\ud835\ude57\ud835\ude64\ud835\ude6a\ud835\ude69 \ud835\ude6c\ud835\ude64\ud835\ude67\ud835\ude61\ud835\ude59\ud835\ude61\ud835\ude6e \ud835\ude5a\ud835\ude6e\ud835\ude5a\ud835\ude68 \ud835\ude69\ud835\ude64 \ud835\ude65\ud835\ude6a\ud835\ude67\ud835\ude68\ud835\ude6a\ud835\ude5a \ud835\ude6e\ud835\ude64\ud835\ude6a\ud835\ude67 \ud835\ude64\ud835\ude6c\ud835\ude63 \ud835\ude61\ud835\ude5e\ud835\ude5c\ud835\ude5d\ud835\ude69

    About me

    • Hey, I'm Wcowin~
    • \u5496\u5561\u91cd\u5ea6\u7231\u597d\u8005
    • \u70ed\u7231(xi\u0101)\u6298\u817e\u6280\u672f/Math\uff0c\u76ee\u524d\u7684\u7814\u7a76\u9886\u57df\u662f\u5bc6\u7801\u5b66
    • \u8bfb\u4e66\u660e\u5fd7\u53ef\u8bc6\u6625\u79cb;\u8bd7\u8bcd\u7231\u597d\u8005;\u559c\u6b22\u6751\u4e0a\u6625\u6811;\u64c5\u957f\u7fbd\u6bdb\u7403
    • \u6e05\u9192\uff0c\u77e5\u8da3\uff0c\u660e\u5f97\u5931\uff0c\u77e5\u8fdb\u9000

    "},{"location":"about/geren/#_5","title":"\u8054\u7cfb\u6211","text":"

    \u6211\u7684Wechat \u6211\u7684TG
    • WeChat \u626b\u4e00\u626b\u4e0a\u9762\u7684\u4e8c\u7ef4\u7801\u56fe\u6848 \u52a0\u6211\u4e3a\u670b\u53cb

    • Email

      \u53d1\u9001\u7535\u5b50\u90ae\u4ef6

      • Telegram Let's Chat

      • Twitter @Wcowin

      \u516c\u4f17\u53f7

      \u516c\u4f17\u53f7

      \ud83d\udcac\u6211\u7535\u8bdd\u53f7\u7801\u7684MD5\u7801\uff1a7037F514864088F907CC921687B670EE\uff08\u7834\u89e3\u6709\u5956\uff09

      "},{"location":"about/geren/#_6","title":"\u987b\u77e5","text":"

      \u5982\u679c\u4f60\u5728\u6d4f\u89c8\u535a\u5ba2\u7684\u8fc7\u7a0b\u4e2d\u53d1\u73b0\u4e86\u4efb\u4f55\u95ee\u9898\uff0c\u6b22\u8fce\u524d\u5f80 GitHub \u7684\u4ee3\u7801\u4ed3\u5e93\u63d0\u4ea4 Issues \u6216\u76f4\u63a5\u4fee\u6539\u76f8\u5173\u6587\u4ef6\u540e\u63d0\u4ea4 Pull Requests\u3002\u5982\u679c\u4f60\u6709\u5176\u4ed6\u4e8b\u60c5\u60f3\u8981\u54a8\u8be2\uff0c\u53ef\u4ee5\u901a\u8fc7\u4e0b\u65b9\u6309\u94ae\u4f7f\u7528\u90ae\u4ef6\u8054\u7cfb\u6211,\u8bf7\u4e0d\u8981\u6ee5\u7528\u535a\u5ba2\u7684\u8bc4\u8bba\u529f\u80fd\u53d1\u8868\u4e0e\u4e3b\u9898\u65e0\u5173\u8a00\u8bba\u3002

      \u4e0e\u6211\u8054\u7cfb

      \u5982\u679c\u7ed9\u6211\u53d1\u90ae\u4ef6\uff0c\u6216\u8005\u901a\u8fc7\u53f3\u4e0b\u89d2\u5fae\u4fe1\u6dfb\u52a0\u597d\u53cb\uff0c\u8bf7\u5199\u4e0a\u60a8\u7684\u771f\u540d\u5b9e\u59d3\u3002\u5bf9\u4e8e\u90a3\u4e9b\u4e0d\u77e5\u6765\u8def\u3001\u4e0a\u6765\u5c31\u95ee\u95ee\u9898\u7684\u5fae\u4fe1\u548c\u90ae\u4ef6\uff0c\u6211\u901a\u5e38\u4f1a\u76f4\u63a5\u5ffd\u7565\uff0c\u8c22\u8c22\u3002

      \u53d1\u9001\u7535\u5b50\u90ae\u4ef6

      "},{"location":"about/resume/","title":"\u4e2a\u4eba\u7b80\u5386","text":"\u8bf7\u4f7f\u7528PC\u7aef\u67e5\u770b\uff0c\u8c22\u8c22
      • \u4e2a\u4eba\u7b80\u5386

      "},{"location":"about/test/","title":"\u529f\u80fd\u6d4b\u8bd5","text":"

      Info

      \u6d4b\u8bd5\u4e2d\u7684\u5c0f\u7ec4\u4ef6\uff0c\u53ef\u770b\u6e90\u4ee3\u7801\u81ea\u884c\u53d6\u7528

      \u201c\u5faa\u6b64\u82e6\u65c5 \u4ee5\u8fbe\u661f\u8fb0\u201d
      • \u5173\u4e8e

        • \u6548\u7387
      • \u63a8\u8350

        Wcowin - \u6280\u672f\u535a\u5ba2

      • Release

        \u66f4\u65b0\u4e2d...

        \u2192 \u6240\u6709\u7248\u672c

      • Wcowin

        \u66f4\u65b0\u4e2d...

        \u2192 \u4e86\u89e3\u66f4\u591a

      Image caption

      \\(\\overset{w\u00e1ng}{\u738b}\\overset{k\u0113}{\u79d1}\\overset{w\u00e9n}{\u6587}\\)

      • H2O
      • ATA
      • This was marked
      • This was inserted
      • This was deleted

      "},{"location":"about/test/#01","title":"01","text":"
      • HTML for content and structure
      • JavaScript for interactivity
      • CSS for text running out of boxes
      • Internet Explorer ... huh?
      • Set up in 5 minutes

        Install mkdocs-material with pip and get up and running in minutes

        Getting started

      • It's just Markdown

        Focus on your content and generate a responsive and searchable static site

        Reference

      • Made to measure

        Change the colors, fonts, language, icons, logo and more with a few lines

        Customization

      • Open Source, MIT

        Material for MkDocs is licensed under MIT and available on [GitHub]

        License

      \u8fd9\u662f\u6d4b\u8bd5\u5e76\u4e14\u88ab\u63a9\u76d6\u7684\u6587\u5b57\uff01

      \u5929\u6c14\u63d2\u4ef6 CC++
      #include <stdio.h>\n\nint main(void) {\n  printf(\"Hello world!\\n\");\n  return 0;\n}\n
      #include <iostream>\n\nint main(void) {\n  std::cout << \"Hello world!\" << std::endl;\n  return 0;\n}\n
      def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n

      Note

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

      Phasellus posuere in sem ut cursus

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

      Tip

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

      Info

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

      Subscribe to our newsletter

      Send

      Method Description GET Fetch resource PUT Update resource DELETE Delete resource
      • Lorem ipsum dolor sit amet, consectetur adipiscing elit
      • Vestibulum convallis sit amet nisi a tincidunt
        • In hac habitasse platea dictumst
        • In scelerisque nibh non dolor mollis congue sed et metus
        • Praesent sed risus massa
      • Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque
      \\[ \\operatorname{ker} f=\\{g\\in G:f(g)=e_{H}\\}{\\mbox{.}} \\]

      \u5de6\u5bf9\u9f50\uff0c\u53f3\u5bf9\u9f50

      \u56fe\u7247\u8bf4\u660e

      \u660e\u6697

      graph LR\n  A[Start] --> B{Error?};\n  B -->|Yes| C[Hmm...];\n  C --> D[Debug];\n  D --> B;\n  B ---->|No| E[Yay!];
      sequenceDiagram\n  Alice->>John: Hello John, how are you?\n  loop Healthcheck\n      John->>John: Fight against hypochondria\n  end\n  Note right of John: Rational thoughts!\n  John-->>Alice: Great!\n  John->>Bob: How about you?\n  Bob-->>John: Jolly good!

      Pied Piper

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.

      Ctrl+Alt+Del

      \u70b9\u6211\u56de\u5230\u9876\u90e8

      Hover me

      Hover me

      The HTML specification is maintained by the W3C.

      def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n
      def bubble_sort(items):\n    for i in range(len(items)):\n        for j in range(len(items) - 1 - i):\n            if items[j] > items[j + 1]:\n                items[j], items[j + 1] = items[j + 1], items[j]\n
      .browserslistrc
      Wcowin\n

      \n  graph LR\n      A --- B\n      B-->C[fa:fa-ban forbidden]\n      B-->D(fa:fa-spinner);\n    

      \u6765\u770b\u770b\u4e24\u4e2a\u91cd\u8981\u6781\u9650

      \\[\\displaystyle\\lim_{x \\rightarrow 0}\\frac{\\sin x}{x} = 1\\] \\[\\displaystyle\\lim_{x \\rightarrow + \\infty}(1 + \\frac{1}{x})^x = e\\]

      \u6309\u94ae Green

      \u6211\u662f\u4f1a\u9690\u85cf\u7684\u5143\u7d20\u3002 \u5934\u90e8 \u83dc\u5355 \u4e3b\u8981\u5185\u5bb9\u533a\u57df \u53f3\u4fa7 \u5e95\u90e8

      \u8fd9\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u4ef6\u94fe\u63a5\uff1a \u53d1\u9001\u90ae\u4ef6

      100 200 300 400 500 600 000000 000033 000066 000099 0000CC 0000FF 003300 003333 003366 003399 0033CC 0033FF 006600 006633 006666 006699 0066CC 0066FF 009900 009933 009966 009999 0099CC 0099FF 00CC00 00CC33 00CC66 00CC99 00CCCC 00CCFF 00FF00 00FF33 00FF66 00FF99 00FFCC 00FFFF 330000 330033 330066 330099 3300CC 3300FF 333300 333333 333366 333399 3333CC 3333FF 336600 336633 336666 336699 3366CC 3366FF 339900 339933 339966 339999 3399CC 3399FF 33CC00 33CC33 33CC66 33CC99 33CCCC 33CCFF 33FF00 33FF33 33FF66 33FF99 33FFCC 33FFFF 660000 660033 660066 660099 6600CC 6600FF 663300 663333 663366 663399 6633CC 6633FF 666600 666633 666666 666699 6666CC 6666FF 669900 669933 669966 669999 6699CC 6699FF 66CC00 66CC33 66CC66 66CC99 66CCCC 66CCFF 66FF00 66FF33 66FF66 66FF99 66FFCC 66FFFF 990000 990033 990066 990099 9900CC 9900FF 993300 993333 993366 993399 9933CC 9933FF 996600 996633 996666 996699 9966CC 9966FF 999900 999933 999966 999999 9999CC 9999FF 99CC00 99CC33 99CC66 99CC99 99CCCC 99CCFF 99FF00 99FF33 99FF66 99FF99 99FFCC 99FFFF CC0000 CC0033 CC0066 CC0099 CC00CC CC00FF CC3300 CC3333 CC3366 CC3399 CC33CC CC33FF CC6600 CC6633 CC6666 CC6699 CC66CC CC66FF CC9900 CC9933 CC9966 CC9999 CC99CC CC99FF CCCC00 CCCC33 CCCC66 CCCC99 CCCCCC CCCCFF CCFF00 CCFF33 CCFF66 CCFF99 CCFFCC CCFFFF FF0000 FF0033 FF0066 FF0099 FF00CC FF00FF FF3300 FF3333 FF3366 FF3399 FF33CC FF33FF FF6600 FF6633 FF6666 FF6699 FF66CC FF66FF FF9900 FF9933 FF9966 FF9999 FF99CC FF99FF FFCC00 FFCC33 FFCC66 FFCC99 FFCCCC FFCCFF FFFF00 FFFF33 FFFF66 FFFF99 FFFFCC FFFFFF

      Email me!

      "},{"location":"about/zcw/","title":"\u652f\u6301\u4f5c\u8005","text":"
      • \u7ed9\u6211\u53d1\u9001\u90ae\u7bb1

      • \u70b9\u51fb\u6b64\u5904\u8bbf\u95eeGithub\u4ed3\u5e93

      \u53ef\u4ee5\u7684\u8bdd \u8bf7\u6211\u559d\u4e00\u676f\u5496\u5561\u5427\u2615\ufe0f

      "},{"location":"about/zcw/#alipay","title":"Alipay","text":""},{"location":"about/zcw/#wechat-pay","title":"WeChat Pay","text":""},{"location":"about/zcw/#ko-fi","title":"ko-fi","text":"

      \u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561

      "},{"location":"about/zcw/#_2","title":"\u8d5e\u52a9\u5217\u8868","text":"\u8d5e\u52a9\u4eba \u8d5e\u52a9\u91d1\u989d \u8d5e\u52a9\u65f6\u95f4 *\u6025 15\uffe5 25/04/18 \u5343\u5e73 100\uffe5 25/04/16"},{"location":"blog/","title":"MyBlog","text":"
      • What is Blog?

        \u535a\u5ba2\uff0c\u4ec5\u97f3\u8bd1\uff0c\u82f1\u6587\u540d\u4e3aBlogger\uff0c\u4e3aWeb Log\u7684\u6df7\u6210\u8bcd\u3002 \u5176\u6b63\u5f0f\u540d\u79f0\u4e3a\u7f51\u7edc\u65e5\u8bb0\uff1b\u53c8\u97f3\u8bd1\u4e3a\u90e8\u843d\u683c\u6216\u90e8\u843d\u9601\u7b49\uff0c\u662f\u793e\u4f1a\u5a92\u4f53\u7f51\u7edc\u7684\u4e00\u90e8\u5206\u3002\u662f\u4f7f\u7528\u7279\u5b9a\u7684\u8f6f\u4ef6\uff0c\u5728\u7f51\u7edc\u4e0a\u51fa\u7248\u3001\u53d1\u8868\u548c\u5f20\u8d34\u4e2a\u4eba\u6587\u7ae0\u7684\u4eba\uff0c\u6216\u8005\u662f\u4e00\u79cd\u901a\u5e38\u7531\u4e2a\u4eba\u7ba1\u7406\u3001\u4e0d\u5b9a\u671f\u5f20\u8d34\u65b0\u7684\u6587\u7ae0\u7684\u7f51\u7ad9

      "},{"location":"blog/MIT/","title":"\u8bb8\u53ef\u58f0\u660e","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u6587\u6df1\u5165\u63a2\u8ba8\u4e86\u76f8\u5173\u6280\u672f\u5185\u5bb9\uff0c\u63d0\u4f9b\u4e86\u5b9e\u7528\u7684\u65b9\u6cd5\u548c\u89e3\u51b3\u65b9\u6848\u3002

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a252

      \u9ebb\u7701\u7406\u5de5\u5b66\u9662\u8bb8\u53ef\u8bc1MIT License

      \u7248\u6743\u6240\u6709 \u00a9 2016-2025 Martin Donath

      \u7279\u6b64\u6388\u4e88\u83b7\u5f97\u6b64\u8f6f\u4ef6\u548c\u76f8\u5173\u6587\u6863\u6587\u4ef6\uff08\u201c\u8f6f\u4ef6\u201d\uff09\u526f\u672c\u7684\u4efb\u4f55\u4eba\u514d\u8d39\u8bb8\u53ef\uff0c\u4ee5\u65e0\u9650\u5236\u65b9\u5f0f\u5904\u7406\u8f6f\u4ef6\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u4f7f\u7528\u3001\u590d\u5236\u3001\u4fee\u6539\u3001\u5408\u5e76\u3001\u53d1\u5e03\u3001\u5206\u53d1\u3001\u518d\u8bb8\u53ef\u548c/\u6216\u9500\u552e\u8f6f\u4ef6\u526f\u672c\u7684\u6743\u5229\uff0c\u5e76\u5141\u8bb8\u5411\u5176\u63d0\u4f9b\u8f6f\u4ef6\u7684\u4eba\u5458\u8fd9\u6837\u505a\uff0c\u4f46\u987b\u9075\u5b88\u4ee5\u4e0b\u6761\u4ef6\uff1a

      \u4e0a\u8ff0\u7248\u6743\u58f0\u660e\u548c\u672c\u8bb8\u53ef\u58f0\u660e\u5747\u5e94\u5305\u542b\u5728\u8f6f\u4ef6\u7684\u6240\u6709\u526f\u672c\u6216\u91cd\u8981\u90e8\u5206\u4e2d\u3002

      \u8f6f\u4ef6\u6309\u201c\u539f\u6837\u201d\u63d0\u4f9b\uff0c\u4e0d\u4f5c\u4efb\u4f55\u660e\u793a\u6216\u6697\u793a\u7684\u4fdd\u8bc1\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u9002\u9500\u6027\u3001\u7279\u5b9a\u7528\u9014\u7684\u9002\u7528\u6027\u548c\u4e0d\u4fb5\u6743\u6027\u7684\u4fdd\u8bc1\u3002\u5728\u4efb\u4f55\u60c5\u51b5\u4e0b\uff0c\u4f5c\u8005\u6216\u7248\u6743\u6301\u6709\u8005\u5747\u4e0d\u5bf9\u56e0\u8f6f\u4ef6\u6216\u4f7f\u7528\u6216\u5176\u4ed6\u5904\u7406\u8f6f\u4ef6\u800c\u5f15\u8d77\u7684\u6216\u4e0e\u4e4b\u76f8\u5173\u7684\u4efb\u4f55\u7d22\u8d54\u3001\u635f\u5bb3\u6216\u5176\u4ed6\u8d23\u4efb\u627f\u62c5\u8d23\u4efb\uff0c\u65e0\u8bba\u662f\u5408\u540c\u884c\u4e3a\u3001\u4fb5\u6743\u884c\u4e3a\u8fd8\u662f\u5176\u4ed6\u884c\u4e3a\u3002

      Copyright \u00a9 2016-2025 Martin Donath

      Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

      THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

      "},{"location":"blog/Mkdocs/mkdocs1/","title":"\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHubpages","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u4e00\u3001\u51c6\u5907\u5de5\u4f5c

      1.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a485 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a73

      Info

      Material for MkDocs\u5b98\u65b9\u7f51\u7ad9: Material for MkDocs MkDocs\u4e2d\u6587\u6587\u6863: MkDocs\u4e2d\u6587\u6587\u6863

      \u63a8\u8350\u770b\u4e0b\u8fd9\u4e2a\u89c6\u9891\uff1a How to set up Material for MkDocs by @Wcowin \u2013 10m \u2013 \u7528MKdocs\u6784\u5efa\u4e00\u4e2a\u535a\u5ba2\u7f51\u7ad9.

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_1","title":"\u4e00\u3001\u51c6\u5907\u5de5\u4f5c","text":"

      1.\u4e0b\u8f7dGithub Desktop

      2.\u6709\u4e00\u4e2aGitHub\u8d26\u53f7\u200b\u200b\u200b\u200b\u200b\u200b\u200b(\u6709\u624b\u5c31\u884c)

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#creating-your-site","title":"\u4e8c\u3001Creating your site","text":"

      \u53c2\u8003\u6559\u7a0b\uff1a

      \u5229\u7528mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHubpages\uff08\u66f4\u65b0\u7248\uff09

      \u4e0e\u5176\u4ed6\u6559\u7a0b\u4e0d\u540c\uff0c\u6211\u9996\u5148\u5efa\u8bae\u5148\u5728Github\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\u4f60\u7684\u540d\u5b57+github.io\u7684\u4ed3\u5e93

      \u7136\u540e\u6253\u5f00github Desktop \u514b\u9686\u5230\u672c\u5730

      \u6253\u5f00Wcowin.github.io\u76ee\u5f55\u8fdb\u5165\u7ec8\u7aef\u4f9d\u6b21\u8fd0\u884c:

      pip install mkdocs-material\nmkdocs new mkdocs-site\n
      \u51fa\u73b0\u4e0b\u56fe\u7684\u51e0\u4e2a\u6587\u4ef6

      Tip

      \u8fd9\u91cc\u5efa\u8bae\u628amkdocs-site\u6587\u4ef6\u91cc\u7684\u4e1c\u897f\u5168\u90e8\u526a\u5207\u51fa\u6765\u5230Wcowin.github.io\u6587\u4ef6\u91cc

      Wcowin.github.io\u662f\u514b\u9686\u5230\u672c\u5730\u7684\u4ed3\u5e93\uff08\u91cc\u9762\u5305\u542bdocs,yml\u6587\u4ef6\u7b49\u7b49\uff09\uff0cdocs\u6587\u4ef6\u4e0b\u662f\u4ee5\u540e\u7f51\u7ad9\u7684\u5185\u5bb9\uff0cmkdocs.yml\u662f\u914d\u7f6e\u6587\u4ef6\uff08\u914d\u7f6e\u4e3b\u9898\uff0c\u76ee\u5f55\uff0c\u63d2\u4ef6\u7b49\uff09

      \u4f60\u5728\u8fd9\u4e2a\u76ee\u5f55\u4e0b\u5199\u7684\u4efb\u4f55\u4e1c\u897f\u90fd\u53ef\u4ee5\u901a\u8fc7Github Desktop \u4e0a\u4f20\u5230github\u4e0a

      \u6267\u884c\u4e0b\u9762\u7684\u4ee3\u7801\u6dfb\u52a0\u4e00\u4e2aGitHub Workflow

      \u8fc7\u65f6\u7684PublishMySite.yml

      (\u6267\u884c\u4e0b\u9762\u7684\u4ee3\u7801\u6dfb\u52a0\u4e00\u4e2aGitHub Workflow(\u5df2\u7ecf\u8fc7\u65f6\u4f46\u662f\u4ecd\u7136\u80fd\u7528\uff0c\u6700\u65b0\u65b9\u6cd5\u89c1\u4e0b\u65b9ci.yml)

      mkdir .github\ncd .github\nmkdir workflows\ncd workflows\nvim PublishMySite.yml\n

      \u5728PublishMySite.yml\u91cc\u9762\u8f93\u5165\u4ee5\u4e0b\u5185\u5bb9

      name: publish site\non: # \u5728\u4ec0\u4e48\u65f6\u5019\u89e6\u53d1\u5de5\u4f5c\u6d41\n  push: # \u5728\u4ece\u672c\u5730main\u5206\u652f\u88abpush\u5230GitHub\u4ed3\u5e93\u65f6\n    branches:\n      - main\n  pull_request: # \u5728main\u5206\u652f\u5408\u5e76\u522b\u4eba\u63d0\u7684pr\u65f6\n    branches:\n      - main\njobs: # \u5de5\u4f5c\u6d41\u7684\u5177\u4f53\u5185\u5bb9\n  deploy:\n    runs-on: ubuntu-latest # \u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u4e91\u7aef\u865a\u62df\u673a \u4f7f\u7528\u6700\u65b0Ubuntu\u7cfb\u7edf\n    steps:\n      - uses: actions/checkout@v2 # \u5148checkout\u5230main\u5206\u652f\n      - uses: actions/setup-python@v2 # \u518d\u5b89\u88c5Python3\u548c\u76f8\u5173\u73af\u5883\n        with:\n          python-version: 3.x\n      - run: pip install mkdocs-material # \u4f7f\u7528pip\u5305\u7ba1\u7406\u5de5\u5177\u5b89\u88c5mkdocs-material\n      - run: mkdocs gh-deploy --force # \u4f7f\u7528mkdocs-material\u90e8\u7f72gh-pages\u5206\u652f\n
      )

      mkdir .github\ncd .github\nmkdir workflows\ncd workflows\nvim ci.yml\n

      \u8fdb\u5165.github/workflows/ci.yml\uff0c\u7136\u540e\u590d\u5236\u5e76\u7c98\u8d34\u4ee5\u4e0b\u5185\u5bb9\uff1a

      name: ci \non:\n  push:\n    branches:\n      - master \n      - main\npermissions:\n  contents: write\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Configure Git Credentials\n        run: |\n          git config user.name github-actions[bot]\n          git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n      - uses: actions/setup-python@v4\n        with:\n          python-version: 3.x\n      - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV \n      - uses: actions/cache@v3\n        with:\n          key: mkdocs-material-${{ env.cache_id }}\n          path: .cache\n          restore-keys: |\n            mkdocs-material-\n      - run: pip install mkdocs-material \n      - run: mkdocs gh-deploy --force\n

      \u5230\u8fd9\u91cc\u5148\u68c0\u67e5\u4e00\u4e0b\u4f60\u7684\u76ee\u5f55\u7ed3\u6784 \u76ee\u5f55\u6811\u72b6\u56fe:

      $ tree -a\nWcowin.github.io\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 ci.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2514\u2500\u2500 mkdocs.yml\n

      \u91cd\u70b9\u6765\u4e86

      Github\u4ed3\u5e93setings/Actions/General \u52fe\u9009\u8fd9\u4e24\u9879

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_2","title":"\u4e09\u3001\u914d\u7f6e\u5b8c\u5584","text":"

      \u6253\u5f00mkdocs.yml

      \u628a\u4ee5\u4e0b\u7684\u5185\u5bb9\u8f93\u5165\u8fdb\u53bb\uff08\u6700\u7b80\u5355\u6700\u57fa\u7840\u7684\u914d\u7f6e\uff09

      site_name: \u7f51\u7ad9\u540d\u5b57\nsite_url: \u7f51\u7ad9\u94fe\u63a5\nsite_author: \u4f60\u7684\u540d\u5b57\ntheme:\n  name: material #\u4e3b\u9898\n

      \u8be6\u7ec6mkdocs.yml\u914d\u7f6e\u89c1Changing the colors - Material for MkDocs

      \u4e0b\u6b21\u6211\u4f1a\u5177\u4f53\u8c08\u8c08\u8fd9\u4e2a\u95ee\u9898

      \u5728\u4e0b\u65b9\u7ec8\u7aef\u8fd0\u884c\u53ef\u4ee5\u5728\u6d4f\u89c8\u5668\u770b\u5230\u5b9e\u65f6\u7f51\u7ad9

      mkdocs serve\n

      \u8fd9\u4e2a\u7f51\u7ad9\u5c31\u7b97\u662f\u521d\u6b65\u5efa\u597d\u4e86

      \u6700\u540e\u53bbgithub Desktop\u4e0a\u4f20\u5230github \u4e0a\u56fe\u53ef\u4ee5\u770b\u5230\uff0c\u6211\u4e0a\u4f20\u4e86Wcowin.github.io\u6587\u4ef6\u5939\uff0c\u8fd9\u4e2a\u6587\u4ef6\u5939\u91cc\u9762\u5305\u542b\u4e86mkdocs.yml\u548cdocs\u6587\u4ef6\u5939(mkdocs-site\u6587\u4ef6\u5939\u73b0\u5728\u6ca1\u6709\u4e1c\u897f\uff0c\u53ef\u4ee5\u5220\u9664)

      \uff01\uff01\uff01\u91cd\u70b9 \u53bb\u4ed3\u5e93\u7684setings/pages\u9009\u62e9\u4e0b\u56fe\u793a\u610f\u7684\u8def\u5f84

      \u7b49\u5f85\u4e00\u4f1a\u7f51\u5740\u5c31\u51fa\u6765\u4e861

      \u4f60\u7684\u7f51\u7ad9\u7f51\u5740\u5c31\u662f\uff1a\u200b

      https://\u4f60github\u7684\u540d\u5b57.github.io/\n\u56e0\u4e3a\u6211\u7ed1\u5b9a\u4e86\u57df\u540d\u6240\u4ee5\u7f51\u5740\u662f\uff1ahttps://wcowin.work/\n

      \u4e0b\u6b21\u8c08\u8c08\u7f51\u7ad9\u7684mkdocs.yml\u5177\u4f53\u914d\u7f6e

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs1/#_3","title":"\u56db\u3001\u53c2\u8003\u8d44\u6599","text":"
      1. MkDocs\u5b98\u7f51
      2. MkDocs\u4e2d\u6587\u6587\u6863
      3. Material for MkDocs
      4. Mkdocs \u914d\u7f6e\u548c\u4f7f\u7528
      5. Deploy MkDocs
      1. \u4e8e2025.2.19\u91cd\u5199\u6b64\u6587\u00a0\u21a9

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/","title":"Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u5b98\u65b9\u6587\u4ef6\uff1aChanging the colors - Material for MkDocs

      \u5efa\u8bae\u8be6\u7ec6\u5b66\u4e60\u4e00\u4e0b\u4e0a\u9762\u7684\u5b98\u65b9\u7f51\u7ad9\u2191\u2191\u2191

      \u6211\u628a\u6211\u76ee\u524d\u7684\u914d\u7f6e\u6587\u4ef6mkdocs.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a818 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a555

      \u5b98\u65b9\u6587\u4ef6\uff1aChanging the colors - Material for MkDocs

      \u5efa\u8bae\u8be6\u7ec6\u5b66\u4e60\u4e00\u4e0b\u4e0a\u9762\u7684\u5b98\u65b9\u7f51\u7ad9\u2191\u2191\u2191

      \u6211\u628a\u6211\u76ee\u524d\u7684\u914d\u7f6e\u6587\u4ef6mkdocs.yml\u4ee3\u7801\u5199\u5728\u4e0b\u9762\ud83d\udc47\ud83c\udffb

      \u70b9\u51fb\u5c55\u5f00
      #[Info]\nsite_name: Mkdocs\u6559\u7a0b #your site name \u663e\u793a\u5728\u5de6\u4e0a\u89d2\nsite_url: http://wcowin.work/Mkdocs-Wcowin\nsite_description: \u77e5\u8db3\u4e14\u4e0a\u8fdb\uff0c\u6e29\u67d4\u4e14\u575a\u5b9a\nsite_author: \u738b\u79d1\u6587(Wcowin) # your name\n#[UI]\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u8986\u5199\u8def\u5f84\n  # font: #\u8c37\u6b4c\u5b57\u4f53\uff0c\u81ea\u884c\u641c\u7d22\n  #   text: Bitter  #\u6587\u672c\u5b57\u4f53\n  #   code: Roboto Mono  #\u4ee3\u7801\u5b57\u4f53\n  # logo: assets/favicon.png #\u5de6\u4e0a\u89d2logo\uff0c\u53ef\u63d2\u5165\u56fe\u7247\u94fe\u63a5\n  favicon: https://s2.loli.net/2024/04/26/PmRdM9iGnvOJHgu.png # \u7f51\u9875icon\n  palette:\n    - media: \"(prefers-color-scheme)\"\n      toggle:\n        icon: material/link\n        name: \u5173\u95ed\u81ea\u52a8\u6a21\u5f0f\n    #primary: blue grey\n    - media: \"(prefers-color-scheme: light)\"\n      scheme: default # \u65e5\u95f4\u6a21\u5f0f\n      primary: blue grey # \u4e0a\u65b9\u7684\n      accent: blue # \u94fe\u63a5\u7b49\u53ef\u4ea4\u4e92\u5143\u4ef6\u7684\u9ad8\u4eae\u8272\n      # teal\n      toggle:\n        icon: material/toggle-switch # \u56fe\u6807\n        name: \u5207\u6362\u81f3\u591c\u95f4\u6a21\u5f0f # \u9f20\u6807\u60ac\u6d6e\u63d0\u793a\n    - media: \"(prefers-color-scheme: dark)\"\n      scheme: slate # \u591c\u95f4\u6a21\u5f0f\n      primary: black\n      accent: indigo\n      # teal\n      toggle:\n        icon: material/toggle-switch-off-outline\n        name: \u5207\u6362\u81f3\u65e5\u95f4\u6a21\u5f0f\n  features:\n    - announce.dismiss #\u5448\u73b0\u53ef\u6807\u8bb0\u4e3a\u7531\u7528\u6237\u8bfb\u53d6\u7684\u4e34\u65f6\u516c\u544a\uff0c\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u7528\u4e8e\u53d6\u6d88\u5f53\u524d\u516c\u544a\u7684\u6309\u94ae\n    # - navigation.instant\n    #- header.autohide  #\u81ea\u52a8\u9690\u85cf\n    - navigation.tracking #\u5730\u5740\u680f\u4e2d\u7684 URL \u5c06\u81ea\u52a8\u66f4\u65b0\u4e3a\u5728\u76ee\u5f55\u4e2d\u7a81\u51fa\u663e\u793a\u7684\u6d3b\u52a8\u951a\u70b9\n    - navigation.tabs #\u9876\u7ea7\u90e8\u5206\u5c06\u5448\u73b0\u5728\u4e0a\u9762\u89c6\u53e3\u6807\u9898\u4e0b\u65b9\u7684\u83dc\u5355\u5c42\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    # - navigation.tabs.sticky  #\u542f\u7528\u7c98\u6027\u9009\u9879\u5361\u540e\uff0c\u5bfc\u822a\u9009\u9879\u5361\u5c06\u9501\u5b9a\u5728\u6807\u9898\u4e0b\u65b9\uff0c\u5e76\u5728\u5411\u4e0b\u6eda\u52a8\u65f6\u59cb\u7ec8\u4fdd\u6301\u53ef\u89c1\n    - navigation.sections #\u542f\u7528\u90e8\u5206\u540e\uff0c\u9876\u7ea7\u90e8\u5206\u5728\u8fb9\u680f\u4e2d\u5448\u73b0\u4e3a1220px\u4ee5\u4e0a\u89c6\u53e3\u7684\u7ec4\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - navigation.top # \u8fd4\u56de\u9876\u90e8\u7684\u6309\u94ae \u5728\u4e0a\u6ed1\u65f6\u51fa\u73b0\n    - navigation.footer #\u9875\u811a\u5c06\u5448\u73b0\u5728\u8fb9\u680f\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - search.suggest # \u641c\u7d22\u8f93\u5165\u4e00\u4e9b\u5b57\u6bcd\u65f6\u63a8\u8350\u8865\u5168\u6574\u4e2a\u5355\u8bcd\n    - search.highlight # \u641c\u7d22\u51fa\u7684\u6587\u7ae0\u5173\u952e\u8bcd\u52a0\u5165\u9ad8\u4eae\n    - search.share #\u641c\u7d22\u5206\u4eab\u6309\u94ae\n    - navigation.expand # \u6253\u5f00Tab\u65f6\u5de6\u4fa7\u76ee\u5f55\u5168\u90e8\u5c55\u5f00\n    - navigation.indexes #\u542f\u7528\u8282\u7d22\u5f15\u9875\u540e\uff0c\u53ef\u4ee5\u5c06\u6587\u6863\u76f4\u63a5\u9644\u52a0\u5230\u8282\n    - content.tabs.link\n    - content.tooltips\n    - content.code.copy #\u4ee3\u7801\u590d\u5236\n    - content.action.edit\n    - content.action.view\n    - content.code.annotate\n  language: zh # \u4e00\u4e9b\u63d0\u793a\u6027\u7684\u6587\u5b57\u4f1a\u53d8\u6210\u4e2d\u6587\n  icon:\n    repo: fontawesome/brands/github #\u53f3\u4e0a\u89d2\u56fe\u6807\n    logo: logo\nedit_uri: edit/main/docs # \u7f16\u8f91\u6309\u94ae\u8df3\u8f6c\u7684\u94fe\u63a5\nrepo_url: https://github.com/Wcowin/Mkdocs-Wcowin # \u53f3\u4e0a\u89d2\u70b9\u51fb\u8df3\u8f6c\u7684\u94fe\u63a5\nrepo_name: Mkdocs-Wcowin # \u53f3\u4e0a\u89d2\u7684\u540d\u5b57\n# [Navigtion]\nnav:\n  # - \u4e3b\u9875: index.md\n  - MKdocs\u4e2d\u6587\u6559\u7a0b:\n      - MKdocs\u6559\u7a0b(\u4e09\u90e8\u66f2):\n          - 0. Mkdocs\u6559\u7a0b\u524d\u8a00: blog/Mkdocs/mkfirst.md\n          - 1. \u5229\u7528mkdocs\u90e8\u7f72\u4e2a\u4eba\u9759\u6001\u535a\u5ba2\u7f51\u9875\u81f3GitHub pages: blog/Mkdocs/mkdocs1.md\n          - 2. Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages\u914d\u7f6e\u8bf4\u660e(mkdocs.yml): blog/Mkdocs/mkdocs2.md\n          - 3. \u89e3\u51b3 mkdocs\u90e8\u7f72 Github Pages \u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898: blog/Mkdocs/mkdocs3.md\n      - Mkdocs\u7f8e\u5316:\n          - \u6dfb\u52a0Mkdocs\u535a\u5ba2: blog/Mkdocs/mkdocsblog.md\n          - \u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1: blog/websitebeauty/yuanjiaohua.md\n          - \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf(giscus\u4e3a\u4f8b): blog/websitebeauty/mkcomments.md\n          - \u6dfb\u52a0\u5728\u7ebf\u804a\u5929: blog/websitebeauty/webtalknow.md\n          - \u6dfb\u52a0\u53cb\u94fe: blog/websitebeauty/linktech.md\n          - \u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f: blog/websitebeauty/header.md\n          - \u4fee\u6539\u7f51\u7ad9\u5b57\u4f53: blog/websitebeauty/mkdocsfont.md\n          - JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f: blog/websitebeauty/shubiao.md\n          - \u80cc\u666f\u7279\u6548: blog/websitebeauty/backgroud.md\n          - \u6dfb\u52a0404\u9875\u9762: blog/websitebeauty/404.md\n          - \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233: blog/websitebeauty/time.md\n  - \u5efa\u8bbeMKdocs\u6280\u80fd\u6307\u5317:\n      - Markdown:\n          - Markdown\u6307\u5357: develop/Markdown/markdown.md\n          - MWeb Pro: develop/Markdown/MWeb.md\n      - Git \u5b9e\u7528\u6280\u5de7: develop/git.md\n      - \u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd: develop/lighthouse.md\n      - \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1: develop/vercel.md\n      - \u8bbe\u8ba1\u7f8e\u5b66:\n          - \u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21: develop/designbeauty/db1.md\n          - \u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u89c2\u70b9: develop/designbeauty/my-to-desihn.md\n\n  - \u6807\u7b7e: tag.md\n  - \u7559\u8a00\u677f: liuyanban.md\n  - Blogger:\n      - index: blog/index.md\n  - \u53cb\u94fe:\n      - \u53cb\u94fe: about/link.md\n  - \u5173\u4e8e:\n      - \u4f5c\u8005\u4e2a\u4eba\u7b80\u4ecb: about/geren.md\n      - \u529f\u80fd\u6d4b\u8bd5: about/test.md\n  - \u4e2a\u4eba\u535a\u5ba2: https://wcowin.work\n  - \u4f7f\u7528\u672c\u4e3b\u9898: https://github.com/new?template_name=Mkdocs-Wcowin&template_owner=Wcowin\n\ncopyright: Copyright &copy; 2022~2024 Wcowin/All Rights Reserved. # \u5de6\u4e0b\u89d2\u7684\u7248\u6743\u58f0\u660e\nextra:\n  alternate:\n    - name: \u7b80\u4f53\u4e2d\u6587\n      link: /\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh   \n    - name: English\n      link: /Mkdocs-Wcowin/en/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: en\n    - name: China(TW)\n      link: /Mkdocs-Wcowin/ZH-TW/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n  generator: true #\u662f\u5426\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n    - icon: fontawesome/brands/x-twitter #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807 : https://fontawesome.com/ \u53bb\u8fd9\u91cc\u627e\u56fe\u6807\n      link: https://twitter.com/wcowin_\n    - icon: fontawesome/brands/github\n      link: https://github.com/Wcowin\n\n    - icon: fontawesome/regular/envelope #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807\n      link: mailto:<wangkewen821@gmail.com> #\u90ae\u4ef6\u8054\u7cfb\u65b9\u5f0f\n    - icon: fontawesome/brands/bilibili\n      link: https://space.bilibili.com/1407028951/lists/4566631?type=series\n  analytics:\n    provider: google #\u8c37\u6b4c\u5206\u6790\n    property: ##\u5982\u679c\u4f60 clone \u4e86my\u6a21\u677f\uff0c\u8bf7\u5c06\u8fd9\u4e2a\u4fee\u6539\u4e3a\u4f60\u7684\n\n    # \u7f51\u9875\u5e95\u90e8\u53cd\u9988\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline #\u56fe\u6807\u53ef\u81ea\u5b9a\u4e49\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >-\n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n  # cookies\u8bbe\u7f6e\uff08\u53ef\u9009\uff09\n  # consent:\n  #   title: Cookie consent\n  #   description: >-\n  #     \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n  #     \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n\nplugins:\n  - search #\u641c\u7d22\u914d\u7f6e\n  - glightbox:\n      enabled: !ENV [glightbox, false]\n      touchNavigation: true\n      loop: false\n      effect: fade\n      slide_effect: slide\n      width: 100%\n      height: auto\n      zoomable: true\n      draggable: true\n      skip_classes:\n        - custom-skip-class-name\n      auto_caption: false\n      caption_position: bottom\n      background: white\n      shadow: true\n      manual: false\n  - git-committers:\n      enabled: !ENV [git-committers, false]\n      repository: Wcowin/Mkdocs-Wcowin\n      branch: main\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n  - git-revision-date-localized:\n      enabled: !ENV [git-revision-date-localized, false]\n      type: iso_date\n      enable_creation_date: false\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n        - websitebeauty/linktech.md\n  - blog: #\u535a\u5ba2\u914d\u7f6e\n      post_date_format: full #\u65f6\u95f4\n      draft: true\n      draft_if_future_date: true #\u81ea\u52a8\u5c06\u5177\u6709\u672a\u6765\u65e5\u671f\u7684\u5e16\u5b50\u6807\u8bb0\u4e3a\u8349\u7a3f\n      post_readtime: true\n      post_readtime_words_per_minute: 265 #\u8ba1\u7b97\u5e16\u5b50\u7684\u9605\u8bfb\u65f6\u95f4\u65f6\u8bfb\u8005\u6bcf\u5206\u949f\u9884\u8ba1\u9605\u8bfb\u7684\u5b57\u6570\n      post_url_format: \"{date}/{slug}\"\n      # categories_slugify: !!python/object/apply:pymdownx.slugs.slugify\n      #   kwds:\n      #     case: lower\n      pagination_url_format: \"page/{page}\"\n      authors_file: \"{blog}/.authors.yml\" #\u4f5c\u8005\u4fe1\u606f\n  - tags\n\nmarkdown_extensions: #\u8be6\u89c1https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown-extensions/ \u548c https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown/\n  - abbr\n  - attr_list\n  - admonition\n  - def_list\n  - footnotes\n  - md_in_html\n  # - meta # \u652f\u6301Markdown\u6587\u4ef6\u4e0a\u65b9\u81ea\u5b9a\u4e49\u6807\u9898\u6807\u7b7e\u7b49\n  - pymdownx.caret\n  - pymdownx.betterem\n  - pymdownx.critic\n  - pymdownx.details\n  - pymdownx.inlinehilite\n  - pymdownx.keys\n  - pymdownx.mark\n  - pymdownx.snippets\n  - pymdownx.smartsymbols\n  - pymdownx.tilde\n  - pymdownx.superfences:\n      custom_fences:\n        - name: mermaid\n          class: mermaid\n          format:\n            !!python/name:pymdownx.superfences.fence_code_format # \u4ee3\u7801\u5757\u9ad8\u4eae\u63d2\u4ef6\n  - pymdownx.arithmatex: # latex\u652f\u6301\n      generic: true\n  - toc:\n      permalink: true # \u56fa\u5b9a\u6807\u9898\u4f4d\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e\n  - pymdownx.highlight: # \u4ee3\u7801\u5757\u9ad8\u4eae\n      anchor_linenums: true\n      linenums: true # \u663e\u793a\u884c\u53f7\n      # auto_title: true # \u663e\u793a\u7f16\u7a0b\u8bed\u8a00\u540d\u79f0\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - pymdownx.tabbed:\n      alternate_style: true\n  - pymdownx.tasklist:\n      custom_checkbox: true\n  # - markdown.extensions.toc:\n  #     slugify: !!python/object/apply:pymdownx.slugs.slugify {kwds: {case: lower}}\n  #     permalink: \"\\ue157\"\n\nextra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49javascript\n  - https://cdn.jsdelivr.net/gh/Wcowin/Wcowin.github.io@main/docs/javascripts/extra.js  # extra\u7684cdn\n  - javascripts/mathjax.js #Latex\u652f\u6301\n  - https://polyfill.io/v3/polyfill.min.js?features=es6 #Latex\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js #Latex\u652f\u6301\n  # - ckplayer/js/ckplayer.js #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js  #gitalk\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mermaid@10.0.2/dist/add-html-label-6e56ed67.min.js #\u5fd8\u4e86\n\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49CSS\n  - stylesheets/link.css #\u53cb\u94fe\u914d\u7f6e\n  - stylesheets/customize.css # \u641c\u7d22\u5706\u89d2\u4f18\u5316\n  # - assets/stylesheets/portfolio.css\n  # - stylesheets/video.css #\u64ad\u653e\u5668\u53ef\u9009\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.css #gitalk\u652f\u6301\n  # - ckplayer/css/ckplayer.css   #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css # font-awesome\u8868\u60c5\u652f\u6301\n  # - https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css  #\u5206\u4eab\u652f\u6301\n\n  - https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css  #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css  #\u5b57\u4f53\n\nhooks:\n  - docs/overrides/hooks/socialmedia.py\n

      \u4ece\u5934\u5f00\u59cb\u5206\u6790

      site_name: \u7f51\u7ad9\u540d\u5b57\nsite_url: \u7f51\u7ad9\u7f51\u5740\nsite_author: \u4f5c\u8005\u540d\u5b57\n
      \u65e0\u987b\u591a\u8a00

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#theme","title":"theme\u90e8\u5206","text":"","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_1","title":"\u9876\u90e8\u989c\u8272","text":"

      theme:\n  palette:\n    primary: yellow #\u9876\u90e8\u989c\u8272\n
      primary\u540e\u9762\u662f\u7f51\u7ad9\u9876\u90e8\u680f\u76ee\u7684\u989c\u8272\uff08\u4e5f\u7528\u4e8e\u6807\u9898\u3001\u8fb9\u680f\u3001\u6587\u672c\u94fe\u63a5\u548c\u5176\u4ed6\u51e0\u4e2a\u7ec4\u4ef6\uff09 \u76ee\u524d\u652f\u6301\u4e0b\u9762\u51e0\u4e2a\u989c\u8272\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_2","title":"\u660e\u6697\u4e3b\u9898\u6309\u94ae","text":"

      theme:\n  palette: \n    # Palette toggle for light mode\n    - scheme: default\n      toggle:\n        icon: material/brightness-7 \n        name: Switch to dark mode\n\n    # Palette toggle for dark mode\n    - scheme: slate\n      toggle:\n        icon: material/brightness-4\n        name: Switch to light mode\n
      \u6b64\u914d\u7f6e\u5c06\u5728\u641c\u7d22\u680f\u65c1\u8fb9\u5448\u73b0\u8c03\u8272\u677f\u5207\u6362\u3002\u8bf7\u6ce8\u610f\uff0c\u60a8\u8fd8\u53ef\u4ee5\u4e3a\u6bcf\u4e2a\u8c03\u8272\u677f\u7684primary\u548caccent\u5b9a\u4e49\u5355\u72ec\u7684\u8bbe\u7f6e\u3002

      \u6309\u94ae\u56fe\u6807\u53ef\u4ee5\u6539\u53d8\uff08\u4fee\u6539icon\u540e\u9762\u7684\u4ee3\u7801\uff09\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#features","title":"features","text":"

        features:\n    - announce.dismiss #\u5448\u73b0\u53ef\u6807\u8bb0\u4e3a\u7531\u7528\u6237\u8bfb\u53d6\u7684\u4e34\u65f6\u516c\u544a\uff0c\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u7528\u4e8e\u53d6\u6d88\u5f53\u524d\u516c\u544a\u7684\u6309\u94ae\n    # - navigation.instant\n    #- header.autohide  #\u81ea\u52a8\u9690\u85cf\n    - navigation.tracking #\u5730\u5740\u680f\u4e2d\u7684 URL \u5c06\u81ea\u52a8\u66f4\u65b0\u4e3a\u5728\u76ee\u5f55\u4e2d\u7a81\u51fa\u663e\u793a\u7684\u6d3b\u52a8\u951a\u70b9\n    - navigation.tabs #\u9876\u7ea7\u90e8\u5206\u5c06\u5448\u73b0\u5728\u4e0a\u9762\u89c6\u53e3\u6807\u9898\u4e0b\u65b9\u7684\u83dc\u5355\u5c42\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    # - navigation.tabs.sticky  #\u542f\u7528\u7c98\u6027\u9009\u9879\u5361\u540e\uff0c\u5bfc\u822a\u9009\u9879\u5361\u5c06\u9501\u5b9a\u5728\u6807\u9898\u4e0b\u65b9\uff0c\u5e76\u5728\u5411\u4e0b\u6eda\u52a8\u65f6\u59cb\u7ec8\u4fdd\u6301\u53ef\u89c1\n    - navigation.sections #\u542f\u7528\u90e8\u5206\u540e\uff0c\u9876\u7ea7\u90e8\u5206\u5728\u8fb9\u680f\u4e2d\u5448\u73b0\u4e3a1220px\u4ee5\u4e0a\u89c6\u53e3\u7684\u7ec4\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - navigation.top # \u8fd4\u56de\u9876\u90e8\u7684\u6309\u94ae \u5728\u4e0a\u6ed1\u65f6\u51fa\u73b0\n    - navigation.footer #\u9875\u811a\u5c06\u5448\u73b0\u5728\u8fb9\u680f\u4e2d\uff0c\u4f46\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u4fdd\u6301\u539f\u6837\n    - search.suggest # \u641c\u7d22\u8f93\u5165\u4e00\u4e9b\u5b57\u6bcd\u65f6\u63a8\u8350\u8865\u5168\u6574\u4e2a\u5355\u8bcd\n    - search.highlight # \u641c\u7d22\u51fa\u7684\u6587\u7ae0\u5173\u952e\u8bcd\u52a0\u5165\u9ad8\u4eae\n    - search.share #\u641c\u7d22\u5206\u4eab\u6309\u94ae\n    - navigation.expand # \u6253\u5f00Tab\u65f6\u5de6\u4fa7\u76ee\u5f55\u5168\u90e8\u5c55\u5f00\n    - navigation.indexes #\u542f\u7528\u8282\u7d22\u5f15\u9875\u540e\uff0c\u53ef\u4ee5\u5c06\u6587\u6863\u76f4\u63a5\u9644\u52a0\u5230\u8282\n    - content.tabs.link\n    - content.tooltips\n    - content.code.copy #\u4ee3\u7801\u590d\u5236\n    - content.action.edit\n    - content.action.view\n    - content.code.annotate\n  language: zh # \u4e00\u4e9b\u63d0\u793a\u6027\u7684\u6587\u5b57\u4f1a\u53d8\u6210\u4e2d\u6587\n\n  icon:\n    repo: fontawesome/brands/github #\u53f3\u4e0a\u89d2\u56fe\u6807\n    logo: logo\n
      \u770b\u6211\u6240\u505a\u7684\u6ce8\u91ca\u5c31\u5f88\u597d\u7406\u89e3\uff0cfeature\u90e8\u5206\u8ba9\u7f51\u7ad9\u62e5\u6709\u4e86\u76ee\u5f55\uff0c\u589e\u52a0\u4e86\u641c\u7d22\u9879\u76ee\u7684\u529f\u80fd\uff0c\u8fd4\u56de\u9876\u90e8,\u63d0\u793a\u8bed\u53d8\u4e3a\u4e2d\u6587\u7b49\u529f\u80fd\uff0c\u6ce8\u91ca\u91cc\u5f88\u7b80\u660e\u4ecb\u7ecd\u4e86

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#nav","title":"nav\u90e8\u5206","text":"

      \u8fd9\u4e00\u90e8\u5206\u5c31\u662f\u7f51\u7ad9\u6587\u6863\u76ee\u5f55

      nav: \n  - \u535a\u5ba2:\n    - \u597d\u7528/\u597d\u73a9\u7f51\u7ad9\u5206\u4eab: blog/Webplay.md  #.md\u6587\u4ef6\u7684\u76f8\u5bf9\u8def\u5f84\n  - \u5f00\u53d1: \n    - Markdown: develop/markdown.md\n
      \u4f9d\u7167\u4e0a\u9762\u7684\u6a21\u7248\u4e3a\u4f8b\uff0c\u4f60\u53ef\u4ee5\u5728\u9876\u90e8\u680f\u76ee\u5efa\u7acb\u535a\u5ba2\u548c\u5f00\u53d1\u4e24\u4e2a\u5927\u6807\u7b7e
      - \u5185\u5bb9\u6807\u9898: \u6587\u4ef6\u8def\u5f84\n
      \u5185\u5bb9\u6807\u9898\u6548\u679c\uff1a

      .md\u6587\u4ef6\u8def\u5f84(\u76f8\u5bf9\u8def\u5f84)\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#_3","title":"\u5982\u4f55\u5199\u4e00\u7bc7\u6587\u7ae0","text":"

      \u53ef\u80fd\u770b\u8d77\u6bd4\u8f83\u590d\u6742\uff0c\u603b\u7ed3\u4e00\u4e0b\u5c31\u662f\uff1a\u6211\u60f3\u5199\u4e00\u7bc7\u6587\u7ae0\u5728docs/blog\u4e0b\u5199\u4e00\u7bc7\u540d\u4e3aWcowin\u6700\u5e05\u7684\u6587\u7ae0\uff0c\u9996\u5148\u5728docs/blog\u4e0b\u65b0\u5efa\u4e00\u4e2axxx.md\u6587\u4ef6\uff0c\u91cc\u9762\u5199\u5199\u4e1c\u897f\uff0c\u518d\u53bbmkdocs.yml\u91cc\u627e\u5230nav\uff0c\u8fd9\u6837\u5199\uff1a

      nav: \n  - \u535a\u5ba2:\n    - Wcowin\u6700\u5e05: blog/xxx.md  #.md\u6587\u4ef6\u7684\u76f8\u5bf9\u8def\u5f84\n

      nav\u624d\u662f\u6700\u7ec8\u51b3\u5b9a\u8fd9\u7bc7\u6587\u7ae0\u4f4d\u7f6e\u7684\u914d\u7f6e\uff0cdocs\u4e0b\u7684md\u6587\u4ef6\u53ea\u662f\u5b58\u653e\u529f\u80fd

      \u8fd9\u91cc\u4e5f\u6ce8\u610f\uff1a\u6240\u6709\u6587\u4ef6\u90fd\u5728docs\u6587\u4ef6\u4e0b\uff0c\u6587\u4ef6\u7c7b\u578b\u9664CSS\uff0cJavascript,yml\u7b49\u90fd\u662f.md\u7ed3\u5c3e\u7684\u6587\u4ef6

      \u6240\u4ee5\u5f3a\u70c8\u63a8\u8350\u60a8\u53bb\u5b66\u4e60Markdown\u3001HTML5\u3001CSS3\u3001Javascript\u7b49\u77e5\u8bc6\uff0c\u8fd9\u6837\u60a8\u5c31\u53ef\u4ee5\u81ea\u5b9a\u4e49\u60a8\u7684\u7f51\u7ad9\u4e86\u3002

      \u5230\u8fd9\u91cc\u5148\u68c0\u67e5\u4e00\u4e0b\u6587\u4ef6\u6811\u72b6\u56fe(xx.md\u4ee3\u8868\u4f60\u7684md\u6587\u4ef6)\uff1a

      $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500blog\n\u2502       \u2514\u2500\u2500xxx.md\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#extra","title":"extra\u90e8\u5206","text":"
      extra:\n  alternate:\n    - name: \u7b80\u4f53\u4e2d\u6587\n      link: /\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh   \n    - name: English\n      link: /Mkdocs-Wcowin/en/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: en\n    - name: China(TW)\n      link: /Mkdocs-Wcowin/ZH-TW/\n      # https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n  generator: true #\u662f\u5426\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n    - icon: fontawesome/brands/x-twitter #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807 : https://fontawesome.com/ \u53bb\u8fd9\u91cc\u627e\u56fe\u6807\n      link: https://twitter.com/wcowin_\n    - icon: fontawesome/brands/github\n      link: https://github.com/Wcowin\n\n    - icon: fontawesome/regular/envelope #\u8054\u7cfb\u65b9\u5f0f\u56fe\u6807\n      link: mailto:<wangkewen821@gmail.com> #\u90ae\u4ef6\u8054\u7cfb\u65b9\u5f0f\n    - icon: fontawesome/brands/bilibili\n      link: https://space.bilibili.com/1407028951/lists/4566631?type=series\n  analytics:\n    provider: google #\u8c37\u6b4c\u5206\u6790\n    property:  ##\u5982\u679c\u4f60 clone \u4e86my\u6a21\u677f\uff0c\u8bf7\u5c06\u8fd9\u4e2a\u4fee\u6539\u4e3a\u4f60\u7684\n\n    # \u7f51\u9875\u5e95\u90e8\u53cd\u9988\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline #\u56fe\u6807\u53ef\u81ea\u5b9a\u4e49\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >-\n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n  # cookies\u8bbe\u7f6e\uff08\u53ef\u9009\uff09\n  # consent:\n  #   title: Cookie consent\n  #   description: >-\n  #     \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n  #     \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#alternate","title":"alternate","text":"

      \u53ef\u4ee5\u8bbe\u7f6e\u7f51\u9875\u7ffb\u8bd1(\u4f46\u662f\u4e0d\u592a\u5efa\u8bae\u4f7f\u7528\uff0c\u5f88\u9ebb\u70e6\uff0c\u8fd9\u91cc\u5c31\u4e0d\u7ec6\u8bb2\u4e86) \u5b98\u7f51\u6559\u7a0b\u7f51\u5740

        alternate:\n    - name: English\n      link: https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=en&_x_tr_hl=zh-CN&_x_tr_pto=wapp \n      lang: en\n    - name: \u4e2d\u56fd(\u53f0\u6e7e)\n      link: https://wcowin-work.translate.goog/?_x_tr_sl=zh-CN&_x_tr_tl=zh-TW&_x_tr_hl=zh-CN&_x_tr_pto=wapp\n      lang: zh-TW\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#generator","title":"generator","text":"

      \u8bbe\u7f6e\u4e3agenerator: false\u53ef\u4ee5\u9009\u62e9\u662f\u5426\u5220\u9664\u5de6\u4e0b\u65b9\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#social","title":"social","text":"

      \u53ef\u8bbe\u7f6e\u7f51\u7ad9\u53f3\u4e0b\u89d2\u7684\u793e\u4ea4\u94fe\u63a5\uff08icon\u662f\u5c0f\u56fe\u6807\uff0clink\u540e\u586b\u81ea\u5df1\u94fe\u63a5\u5373\u53ef\uff09\uff1a

      \u6ce8\u610fsocial\u7684\u683c\u5f0f\uff1a

      extra:\n  social:\n    - icon: fontawesome/brands/weixin\n      link: https://s1.imagehub.cc/images/2024/02/02/bb9ee71b03ee7a3b87caad5cc4bcebff.jpeg\n      name: Wechat\n    - icon: fontawesome/brands/telegram\n      link: https://t.me/wecowin\n      name: telegram\n

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#cookie-consent","title":"cookie consent","text":"

      analytics: \n    provider: google\n    property: G-XXXXXXXXXX  #\u4f60\u7684Google Analytics ID\n    feedback:\n      title: \u6b64\u9875\u9762\u6709\u5e2e\u52a9\u5417\uff1f\n      ratings:\n        - icon: material/thumb-up-outline\n          name: This page was helpful\n          data: 1\n          note: >-\n            \u8c22\u8c22\u4f60\u7684\u53cd\u9988\uff01\n        - icon: material/thumb-down-outline\n          name: This page could be improved\n          data: 0\n          note: >- \n            Thanks for your feedback! Help us improve this page by\n            using our <a href=\"https://marketingplatform.google.com/about/analytics/\" target=\"_blank\" rel=\"noopener\">feedback form</a>.\n\n  consent:\n    title: Cookie consent\n    description: >- \n      \u6211\u4eec\u4e5f\u4f7f\u7528cookies\u6765\u8bc6\u522b\u60a8\u7684\u91cd\u590d\u8bbf\u95ee\u548c\u504f\u597d\u6765\u8861\u91cf\u6211\u4eec\u6587\u6863\u7684\u6709\u6548\u6027\u4ee5\u53ca\u7528\u6237\u662f\u5426\u627e\u5230\u4ed6\u4eec\u8981\u627e\u7684\u4e1c\u897f\u3002\n      \u5982\u679c\u4f60\u540c\u610f,\u4f60\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u8ba9\u6211\u4eec\u7684\u7f51\u7ad9\u66f4\u597d\n

      \u6ce8\u610fproperty: G-XXXXXXXXXX #\u4f60\u7684Google Analytics ID\uff0c\u8fd9\u91cc\u7684G-XXXXXXXXXX\u662f\u4f60\u7684Google Analytics ID\uff0c\u4f60\u53ef\u4ee5\u5728Google Analytics\u4e2d\u627e\u5230\uff0c\u5982\u679c\u4f60\u4e0d\u60f3\u4f7f\u7528Google Analytics\uff0c\u53ef\u4ee5\u5220\u9664\u8fd9\u4e00\u90e8\u5206\u3002

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#plugins","title":"Plugins\u90e8\u5206","text":"
      plugins:\n  - search #\u641c\u7d22\u914d\u7f6e\n  - git-committers:\n      enabled: !ENV [git-committers, false]\n      repository: Wcowin/Mkdocs-Wcowin\n      branch: main\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n  - git-revision-date-localized:\n      enabled: !ENV [git-revision-date-localized, false]\n      type: iso_date\n      enable_creation_date: false\n      exclude:\n        - index.md\n        - tag.md\n        - liuyanban.md\n        - blog/posts/update.md\n        - blog/posts/wkw.md\n        - about/link.md\n        - websitebeauty/linktech.md\n  - blog: #\u535a\u5ba2\u914d\u7f6e\n      post_date_format: full #\u65f6\u95f4\n      draft: true\n      draft_if_future_date: true #\u81ea\u52a8\u5c06\u5177\u6709\u672a\u6765\u65e5\u671f\u7684\u5e16\u5b50\u6807\u8bb0\u4e3a\u8349\u7a3f\n      post_readtime: true\n      post_readtime_words_per_minute: 265 #\u8ba1\u7b97\u5e16\u5b50\u7684\u9605\u8bfb\u65f6\u95f4\u65f6\u8bfb\u8005\u6bcf\u5206\u949f\u9884\u8ba1\u9605\u8bfb\u7684\u5b57\u6570\n      post_url_format: \"{date}/{slug}\"\n      # categories_slugify: !!python/object/apply:pymdownx.slugs.slugify\n      #   kwds:\n      #     case: lower\n      pagination_url_format: \"page/{page}\"\n      authors_file: \"{blog}/.authors.yml\" #\u4f5c\u8005\u4fe1\u606f\n  - tags\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#search","title":"search","text":"

      - search\u5f00\u542f\u641c\u7d22\u529f\u80fd

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#blog","title":"blog","text":"

      -blog \u5373\u535a\u5ba2\uff0c\u53ef\u4ee5\u5728docs/blog/posts\u91cc\u76f4\u63a5\u5199md\u6587\u4ef6\uff08\u4e0d\u9700\u8981\u5728nav\u91cc\u5199\u8def\u5f84\uff09,\u7136\u540e\u5728\u4e0a\u8ff0nav\u91cc\u5199

      nav:\n  - Blog:\n    - blog/index.md\n
      \u535a\u5ba2\u6548\u679c\uff1a \u8be6\u7ec6\u914d\u7f6e\u53ef\u4ee5\u53bb\u770b\u6dfb\u52a0Mkdocs\u535a\u5ba2

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#tags","title":"tags","text":"

      - tags\u5c31\u662f\u6807\u7b7e

      plugins:\n  - tags\n

      docs\u6587\u4ef6\u5939\u4e0b\u65b0\u5efatags.md\u6587\u4ef6

      \u6ce8\u610f\uff01\uff01 tags.md\u91cc\u9700\u8981\u8fd9\u6837\u5199\uff1a

      \u5f53\u4f60\u60f3\u4e3a\u67d0\u4e2amd\u6587\u6863\u6dfb\u52a0\u6807\u7b7e\uff0c\u8fd9\u4e2a.md\u6587\u4ef6(\u4f60\u5199\u7684markdown\u6587\u4ef6)\u6700\u5f00\u59cb\u7684\u5730\u65b9(\u79f0\u4e3ameta)\u90fd\u9700\u8981\u6dfb\u52a0\u6807\u7b7e\uff0c\u5426\u5219\u4e0d\u4f1a\u663e\u793a\u5728tags.md\u6587\u4ef6\u4e2d

      meta\u683c\u5f0f\uff1a

      ---\ntitle: #\u6587\u7ae0\u6807\u9898\ntags:\n  - \u4f60\u7684\u6807\u7b7e\u540d\u5b57\nhide:\n  #- navigation # \u663e\u793a\u53f3\u4fa7\u5bfc\u822a\n  #- toc #\u663e\u793a\u5de6\u4fa7\u5bfc\u822a\ncomments: false  #\u8bc4\u8bba\uff0c\u9ed8\u8ba4\u4e0d\u5f00\u542f\n---\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#markdown_extensions","title":"markdown_extensions\u90e8\u5206","text":"

      markdown_extensions: #\u8be6\u89c1https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown-extensions/ \u548c https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown/\n  - abbr\n  - attr_list\n  - admonition\n  - def_list\n  - footnotes\n  - md_in_html\n  # - meta # \u652f\u6301Markdown\u6587\u4ef6\u4e0a\u65b9\u81ea\u5b9a\u4e49\u6807\u9898\u6807\u7b7e\u7b49\n  - pymdownx.caret\n  - pymdownx.betterem\n  - pymdownx.critic\n  - pymdownx.details\n  - pymdownx.inlinehilite\n  - pymdownx.keys\n  - pymdownx.mark\n  - pymdownx.snippets\n  - pymdownx.smartsymbols\n  - pymdownx.tilde\n  - pymdownx.superfences:\n      custom_fences:\n        - name: mermaid\n          class: mermaid\n          format:\n            !!python/name:pymdownx.superfences.fence_code_format # \u4ee3\u7801\u5757\u9ad8\u4eae\u63d2\u4ef6\n  - pymdownx.arithmatex: # latex\u652f\u6301\n      generic: true\n  - toc:\n      permalink: true # \u56fa\u5b9a\u6807\u9898\u4f4d\u7f6e\u4e3a\u5f53\u524d\u4f4d\u7f6e\n  - pymdownx.highlight: # \u4ee3\u7801\u5757\u9ad8\u4eae\n      anchor_linenums: true\n      linenums: true # \u663e\u793a\u884c\u53f7\n      # auto_title: true # \u663e\u793a\u7f16\u7a0b\u8bed\u8a00\u540d\u79f0\n  - pymdownx.emoji:\n      emoji_index: !!python/name:material.extensions.emoji.twemoji\n      emoji_generator: !!python/name:material.extensions.emoji.to_svg\n  - pymdownx.tabbed:\n      alternate_style: true\n  - pymdownx.tasklist:\n      custom_checkbox: true\n
      \u8fd9\u90e8\u5206\u662f\u5bf9markdown\u8bed\u6cd5\u7684\u6269\u5c55\uff0c\u6ce8\u91ca\u91cc\u4e5f\u6709\u7b80\u8ff0 \uff0c\u5efa\u8bae\u76f4\u63a5\u590d\u5236\u7c98\u8d34

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs2/#extra_javascriptextra_css","title":"extra_javascript\u548cextra_css\u90e8\u5206","text":"

      \u8fd9\u4e24\u90e8\u5206\u53ef\u4ee5\u8fdb\u4e00\u6b65\u7f8e\u5316\u7f51\u7ad9

      extra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49javascript\n  - https://cdn.jsdelivr.net/gh/Wcowin/Wcowin.github.io@main/docs/javascripts/extra.js  # extra\u7684cdn\n  - javascripts/mathjax.js #Latex\u652f\u6301\n  - https://polyfill.io/v3/polyfill.min.js?features=es6 #Latex\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js #Latex\u652f\u6301\n  # - ckplayer/js/ckplayer.js #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js  #gitalk\u652f\u6301\n  - https://cdn.jsdelivr.net/npm/mermaid@10.0.2/dist/add-html-label-6e56ed67.min.js #\u5fd8\u4e86\n\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49CSS\n  - stylesheets/link.css #\u53cb\u94fe\u914d\u7f6e\n  - stylesheets/customize.css # \u641c\u7d22\u5706\u89d2\u4f18\u5316\n  # - assets/stylesheets/portfolio.css\n  # - stylesheets/video.css #\u64ad\u653e\u5668\u53ef\u9009\u914d\u7f6e\n  # - https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.css #gitalk\u652f\u6301\n  # - ckplayer/css/ckplayer.css   #\u64ad\u653e\u5668\u914d\u7f6e\n  # - https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css # font-awesome\u8868\u60c5\u652f\u6301\n  # - https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css  #\u5206\u4eab\u652f\u6301\n\n  - https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css  #\u5b57\u4f53\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css  #\u5b57\u4f53\n
      javascripts/mathjax.js\u91cc\u6709\u5bf9\u6570\u5b66\u516c\u5f0f\u7684\u6269\u5c55

      \u5f53\u4f60\u9700\u8981\u81ea\u5b9a\u4e49\u7f51\u9875CSS/JS,\u53ef\u4ee5\u5728docs\u6587\u4ef6\u5939\u4e0b\u65b0\u5efastylesheets/javascripts\u6587\u4ef6\u5939\uff0c\u7136\u540e\u5728stylesheets/javascripts\u6587\u4ef6\u5939\u91cc\u65b0\u5efaxx.css/xx.js\u6587\u4ef6\uff0c\u7136\u540e\u5728mkdocs.yml\u7684extra_javascript\u548cextra_css\u5f15\u5165xx.css/xx.js\u5373\u53ef

      extra_javascript:\n  # - javascripts/extra.js #\u81ea\u5b9a\u4e49\u7684javascript\nextra_css:\n  - stylesheets/extra.css # \u81ea\u5b9a\u4e49\u7684CSS\n

      \u5982\u679c\u4f60\u60f3\u81ea\u5b9a\u4e49\u7f51\u7ad9\u7684\u6837\u5f0f\uff0c\u53ef\u4ee5\u53c2\u8003\u8fd9\u51e0\u7bc7\u6587\u7ae0\uff1a

      JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f

      \u80cc\u666f\u7279\u6548

      \u81ea\u5b9a\u4e49\u7f51\u7ad9\u5b57\u4f53

      \u6dfb\u52a0\u53cb\u94fe

      \u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf

      \u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocs3/","title":"\u89e3\u51b3Github Pages\u90e8\u7f72mkdocs\u81ea\u5b9a\u4e49\u57df\u540d\u5931\u6548\u7684\u95ee\u9898","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u5728/docs\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a CNAME \u7684 \u65e0\u540e\u7f00 \u6587\u4ef6\uff0c\u7136\u540e\u5728\u91cc\u9762\u586b\u5165\u4f60\u7684\u57df\u540d

      [\u56fe\u7247\uff1a].

      \u5728/docs\u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a CNAME \u7684 \u65e0\u540e\u7f00 \u6587\u4ef6\uff0c\u7136\u540e\u5728\u91cc\u9762\u586b\u5165\u4f60\u7684\u57df\u540d

      \u539f\u56e0

      \u56e0\u4e3a\u6bcf\u6b21\u5728 Custom domain \u6dfb\u52a0\u540e\u90fd\u4f1a\u7ed9\u6211\u4eec\u751f\u6210\u4e00\u4e2a CNAME \u7684\u6587\u4ef6\uff0c\u4f46\u662f\u56e0\u4e3a\u9879\u76ee\u6211\u4eec\u6ca1\u6709 pull \u5230\u672c\u5730\uff0c\u6240\u4ee5\u9020\u6210\u4e86\uff0c\u6bcf\u6b21 push \u4e4b\u540e CNAME \u4fe1\u606f\u88ab clear \u4e86

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkdocsblog/","title":"\u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u535a\u5ba2\u6548\u679c\u5c55\u793a\uff1a\u535a\u5ba2

      \u5b98\u65b9\u6587\u6863\uff1aBuilt-in blog plugin

      \u4e0e\u6240\u6709\u5185\u7f6e\u63d2\u4ef6\u4e00\u6837\uff0c\u535a\u5ba2\u63d2\u4ef6\u7684\u5165\u95e8\u975e\u5e38\u7b80\u5355.yml

      [\u4ee3\u7801]

      \u4f5c\u8005\u4fe1\u606f\u5728docs/blog/.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a114 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a19

      \u535a\u5ba2\u6548\u679c\u5c55\u793a\uff1a\u535a\u5ba2

      \u5b98\u65b9\u6587\u6863\uff1aBuilt-in blog plugin

      \u4e0e\u6240\u6709\u5185\u7f6e\u63d2\u4ef6\u4e00\u6837\uff0c\u535a\u5ba2\u63d2\u4ef6\u7684\u5165\u95e8\u975e\u5e38\u7b80\u5355\u3002\u53ea\u9700\u5c06\u4ee5\u4e0b\u884c\u6dfb\u52a0\u5230mkdocs.yml

      plugins:\n  - blog\n

      \u7136\u540e\u5728/docs/blog/posts\u4e0b\u5199md\u6587\u4ef6\u5373\u53ef\uff08\u65e0\u9700\u518dmkdocs.yml\u914d\u7f6e\uff0c\u5982\u6ca1\u6709post\u6587\u4ef6\uff0c\u65b0\u5efa\u4e00\u4e2a\u5373\u53ef\uff09 \u4f46\u662fbolg\u6587\u4ef6\u5939\u4e0b\u8981\u6709index.md\u6587\u4ef6(\u6ca1\u6709\u8fd9\u4e2a\u6587\u4ef6\u65b0\u5efa\u5373\u53ef)\uff01

      \u5728mkdocs.yml\u7684nav\u90e8\u5206\u8fd9\u6837\u5199

      nav:\n  - \u535a\u5ba2:\n      - index: blog/index.md\n

      \u5143\u6807\u7b7e\u53c2\u8003\uff1a

      ---\ntitle: \nauthors: [Wcowin]  #\u4f5c\u8005\ndate: 2023-10-04   #\u65f6\u95f4\ndraft: true   # \u662f\u5426\u4e3a\u8349\u7a3f\ncategories:  #\u5206\u7c7b\n  - Hello\n---\n

      \u4f5c\u8005\u4fe1\u606f\u5728docs/blog/.authors.yml\u91cc\u914d\u7f6e\uff08\u6ca1\u6709.authors.yml\u65b0\u5efa\u5373\u53ef\uff09

      authors:\n  Wcowin:\n    name: Wang Kewen    # Author name\n    description: Free and casual # Author description\n    avatar: https://s1.imagehub.cc/images/2024/02/02/91a767e93d1a344e44c69936464c583e.png          # Author avatar\n
      \u7ed3\u675f

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/","title":"Mkdocs\u6559\u7a0b\u524d\u8a00","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u6587\u6863\u6559\u7a0b

      • {.md-sidebar--primary,.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a222 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a5

      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_1","title":"\u6587\u6863\u6559\u7a0b","text":"
      • \u6587\u6863\u8d44\u6599

        • \u5165\u95e8 MKdocs \u8bf7\u770bMkdocs \u5b98\u65b9\u6559\u7a0b
        • Material for MkDocs\uff08\u53ea\u770b\u8fd9\u4e2a\u4e5f\u53ef\u4ee5\uff09\u6559\u7a0b
        • \u4ee4\u4eba\u60ca\u53f9\u7684MkDocs\u9879\u76ee\u548c\u63d2\u4ef6\u5217\u8868

        \u6211\u5199\u7684\u4e2d\u6587\u6559\u7a0b\uff08\u540c\u6b65\u5728\u5176\u4ed6\u5e73\u53f0\uff09\uff1a

        • Mkdocs\u4e2d\u6587\u6559\u7a0b(\u8bed\u96c0)(\u63a8\u8350\uff0c\u5c55\u793a\u6548\u679c\u597d)
        • Mkdocs\u4e2d\u6587\u6559\u7a0b (CSDN | \u89c2\u611f\u66f4\u7eaf\u51c0)
        • MKdocs\u535a\u5ba2\u4e2d\u6587\u7cfb\u5217\u6559\u7a0b(\u77e5\u4e4e\u4e13\u680f)
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_2","title":"\u5feb\u901f\u5f00\u59cb","text":"
      • \u4e09\u90e8\u66f2

        • \u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages
        • Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)
        • \u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_3","title":"\u89c6\u9891\u6559\u7a0b","text":"

      \u5df2\u7ecf\u53d1\u5e03

      • \u89c6\u9891\u8d44\u6599

        • Mkdocs\u4e2d\u6587\u6559\u7a0b\u89c6\u9891
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_4","title":"\u4e00\u70b9\u8bf7\u6c42","text":"

      \u521b\u4f5c\u4e0d\u6613\u3002\u5982\u679c\u60a8\u53c2\u8003\u4e86\u672c\u6559\u7a0b/\u501f\u9274\u4e86\u7f51\u9875\u8bbe\u8ba1\uff0c\u5982\u679c\u53ef\u4ee5\u7684\u8bdd\uff0c\u70e6\u8bf7\u5728\u60a8\u7684\u7f51\u7ad9\u6ce8\u660e\u6559\u7a0b\u6765\u6e90\uff01\u611f\u8c22\uff01

      \u793a\u4f8b\uff1a

      • \u53c2\u8003\u8d44\u6599

        • \u5728\u6784\u5efa\u7f51\u7ad9\u7684\u8fc7\u7a0b\u4e2d\u53c2\u8003\u4e86Wcowin\u540c\u5b66\u7684Mkdocs\u6559\u7a0b
      <div class=\"grid cards\" markdown>\n\n-   :material-notebook-edit-outline:{ .lg .middle } __\u53c2\u8003\u8d44\u6599__\n\n    ---\n\n    - \u5728\u6784\u5efa\u672c\u7f51\u7ad9\u7684\u8fc7\u7a0b\u4e2d\u53c2\u8003\u4e86[Wcowin\u540c\u5b66\u7684Mkdocs\u6559\u7a0b](https://wcowin.work/Mkdocs-Wcowin/)\n\n</div>\n
      ","tags":["Mkdocs"]},{"location":"blog/Mkdocs/mkfirst/#_5","title":"\u52a0\u5165\u53cb\u94fe","text":"

      \u53cb\u94fe\u7533\u8bf7

      ","tags":["Mkdocs"]},{"location":"blog/2021/12/18/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E6%B5%8B%E8%AF%95/","title":"\u535a\u5ba2\u6587\u7ae0\u6d4b\u8bd5","text":"

      Share on Share on

      "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      2022-10-20

      \u5efa\u7acbGithub\u4ed3\u5e93\uff0c\u6b63\u5f0f\u5efa\u7ad9 \u53d6\u6d88cookie\u786e\u8ba4,\u7b80\u5316\u7f51\u7ad9\u6253\u5f00\u6d41\u7a0b \u65b0\u589e\u9996\u9875\u53cd\u9988\u6536\u96c6

      2022-10-06

      \u4e0d\u9760\u7236\u6bcd\uff0c\u5168\u6b3e\u62ff\u4e0b wcowin.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a64

      "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-10-20","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-10-20","text":"

      \u00b6

      • \u5efa\u7acbGithub\u4ed3\u5e93\uff0c\u6b63\u5f0f\u5efa\u7ad9
      • \u53d6\u6d88cookie\u786e\u8ba4,\u7b80\u5316\u7f51\u7ad9\u6253\u5f00\u6d41\u7a0b
      • \u65b0\u589e\u9996\u9875\u53cd\u9988\u6536\u96c6
      "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-10-06","title":"2022\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-10-06","text":"

      \u00b6

      • \u4e0d\u9760\u7236\u6bcd\uff0c\u5168\u6b3e\u62ff\u4e0b wcowin.work\u57df\u540d
      • \u53d6\u6d88cookie\u786e\u8ba4\uff0c\u4fdd\u969c\u9690\u79c1
      "},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2022-06-06","title":"
      • \u7814\u7a76\u5982\u4f55\u5efa\u8bbe\u7f51\u7ad9\uff0c\u521d\u6b65\u5b9a\u6846\u67b6\u4e3aMKdocs
      • \u65e9\u671f\u7f51\u5740\uff1ahttps://github.com/Wcowin/mymkdocs Share on Share on
      ","text":""},{"location":"blog/2022/06/06/2022%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2022-06-06","text":"\u00b6"},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u6587\u6df1\u5165\u63a2\u8ba8\u4e86\u76f8\u5173\u6280\u672f\u5185\u5bb9\uff0c\u63d0\u4f9b\u4e86\u5b9e\u7528\u7684\u65b9\u6cd5\u548c\u89e3\u51b3\u65b9\u6848\u3002

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a392

      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-21","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-21","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u8131\u5355\u4e86;\u624b\u6267\u70df\u706b\u4ee5\u8c0b\u751f\uff0c\u5fc3\u6000\u8bd7\u610f\u4ee5\u8c0b\u7231

      \u6211\u4eec\u5df2\u7ecf\u5728\u4e00\u8d77

      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-14","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-14","text":"

      \u00b6

      • \u4f18\u5316\u4e2a\u522b\u7f51\u9875\u6807\u7b7e\u7684\u663e\u793a\u95ee\u9898
      • \u4f18\u5316\u7f51\u7ad9\u56fe\u7247\u52a0\u8f7d\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-12-09","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-12-09","text":"

      \u00b6

      • \u9996\u6b21\u5f15\u5165\u4eba\u5de5\u667a\u80fd\u95ee\u7b54\u673a\u5668\u4eba:https://wcowin.work/about/geren/\uff0c\u7f3a\u70b9\u662f\u6bcf\u670825\u6761\u6d88\u606f\u9650\u5236\uff0c\u4f18\u70b9\u662f\u53ef\u4ee5\u667a\u80fd\u56de\u590d\u672c\u7ad9\u6240\u6709\u4fe1\u606f\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u4e2a\u4eba\u4fe1\u606f\uff0c\u6280\u672f\u5206\u4eab\uff0c\u535a\u5ba2\uff0c\u7559\u8a00\u677f\uff0c\u53cb\u94fe\u7b49\u7b49
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6
      • \u64b8\u4e86\u66f4\u591a\u7684\u732b\u54aa
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-22","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-22","text":"

      \u00b6

      • \u66f4\u65b0\u4e86\u738b\u51b0\u51b0\u7684\u7b80\u5386\u548c\u7f8e\u7167\uff1b\u6211\u7684\u5fc3\u662f\u51b0\u51b0\u7684
      • \u4fee\u590d\u7ffb\u8bd1\u95ee\u9898
      • \u4f18\u5316\u79fb\u52a8\u7aef\u6548\u679c
      • \u63d0\u5347\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-11","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-11","text":"

      \u00b6

      • \u65b0\u589e\u591a\u8bed\u8a00\u652f\u6301\uff0c\u7279\u522b\u65b0\u589e\u4e2d\u56fd\u53f0\u6e7e\u8bed\u8a00\u652f\u6301
      • \u987a\u795d\u53cc11\u5feb\u4e50
      • \u65b0\u589e\u56fd\u5185\u955c\u50cf\u7f51\u5740:https://wcowin.gitee.io/
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-11-08","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-11-08","text":"

      \u00b6

      • \u7d27\u6025\u4fee\u590d\u56fe\u7247\u4e0d\u663e\u793a\u7684\u91cd\u5927Bug
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-14","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-14","text":"

      \u00b6

      • \u6b63\u5f0f\u5efa\u7acbMkdocs-Wcowin\u4e3b\u9898
      • \u4f18\u5316\u7f51\u9875\u6e32\u67d3\u901f\u5ea6
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-12","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-12","text":"

      \u00b6

      • \u589e\u52a0\u53cb\u94fe\u7248\u5757
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-08","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-08","text":"

      \u00b6

      • \u4fee\u590dLatex\u6e32\u67d3\u4e0d\u4e86\u7684bug
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-10-05","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-10-05","text":"

      \u00b6

      • \u65b0\u589eBlog\u7248\u5757
      • \u65b0\u589e\u4e86Latex\u6e32\u67d3\u4e0d\u4e86\u7684bug
      • \u65b0\u589e\u7559\u8a00\u677f\uff0c\u96c6\u6210\u4e86giscus\u8bc4\u8bba\u7cfb\u7edf
      • \u65b0\u589e\u9996\u6b21\u8bbf\u95ee\u7f51\u7ad9\u7684\u9876\u90e8\u901a\u77e5\u680f\u529f\u80fd
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-08-11","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-08-11","text":"

      \u00b6

      • \u4f18\u5316\u4e3b\u9875\u8bbe\u8ba1\uff0c\u5706\u6bd4\u65b9\u597d\uff0c\u5bbd\u6bd4\u7ad6\u597d
      • \u5f15\u5165\u56fe\u7247\u61d2\u52a0\u8f7d
      • \u65b0\u589e\u9875\u9762\u5e95\u90e8 \"\u4e0b\u4e00\u9875/\u4e0a\u4e00\u9875\"
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-07-19","title":"2023\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-07-19","text":"

      \u00b6

      • \u4fee\u6539\u7f51\u9875\u5b57\u4f53\u4e3a\u971e\u9e5c\u6587\u6977
      • \u4fee\u590d\u9f20\u6807\u4e0a\u6ed1\"\u56de\u5230\u9875\u9762\u9876\u90e8\"\u4e0d\u9002\u914d\u95ee\u9898
      "},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2023-01-12","title":"
      • \u91cd\u5199mkdocs.yml\uff0c\u589e\u52a0\u4e2d\u6587\u6ce8\u91ca
      • \u652f\u6301Latex
      • \u5f15\u5165\u4e2a\u6027\u5316\u6807\u7b7e\uff0cMarkdown\u6269\u5c55
      • \u65b0\u589e\u7f51\u7ad9\u641c\u7d22\u529f\u80fd

      Share on Share on

      ","text":""},{"location":"blog/2023/12/21/2023%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2023-01-12","text":"\u00b6"},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u6587\u6df1\u5165\u63a2\u8ba8\u4e86\u76f8\u5173\u6280\u672f\u5185\u5bb9\uff0c\u63d0\u4f9b\u4e86\u5b9e\u7528\u7684\u65b9\u6cd5\u548c\u89e3\u51b3\u65b9\u6848\u3002

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a522 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a43

      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-12-24","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-12-24","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4f18\u5316\u4e86\u6ce8\u811a\u663e\u793a\u6548\u679c
      • \u5220\u9664\u4e86\u4e00\u4e9b\u5197\u4f59\u4ee3\u7801
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-12-10","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-12-10","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u542f\u7528 CDN \u52a0\u901f
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-07-21","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-07-21","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-07-21_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-07-21","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4f18\u5316\u4e86\u7f51\u7ad9\u7684UI\u548c\u8bbf\u95ee\u901f\u5ea6\uff0c\u542f\u7528 CDN \u52a0\u901f
      • \u5b66\u4e1a\u7e41\u91cd
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-27","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-27","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u7f8e\u5316\u4e86Blog\u9875\u9762, \u4f7f\u66f4\u52a0\u7b80\u6d01\u7f8e\u89c2,\u5982\u4f60\u6240\u89c1
      • \u5185\u5fc3\u4e30\u76c8\u8005\uff0c\u72ec\u884c\u4e5f\u72ec\u4f17\uff0c\u5fc3\u6709\u5c71\u6d77\uff0c\u9759\u800c\u4e0d\u4e89
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-20","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-20","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4f18\u5316\u591a\u5904UI
      • \u5220\u51cf\u4e86\u90e8\u5206\u62d6\u6162\u7f51\u7ad9\u901f\u5ea6\u7684JS/CSS\u4ee3\u7801
      • \u66f4\u65b0\u4e86MKdocs\u8865\u5145\u7cfb\u5217\u6559\u7a0b
      • \u8fd1\u671f\u7565\u6709\u65f6\u95f4\uff0c\u6240\u4ee5\u66f4\u6587\u53d8\u5f97\u9ad8\u4ea7
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-19","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-19","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u671f\u672b\u7ed3\u675f
      • \u5220\u51cf\u4e86\u5197\u4f59\u4ee3\u7801
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-2","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-2","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u8fd1\u671f\u5b66\u4e1a\u7e41\u91cd
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-06-2_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-06-2","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u8fc7\u4e86\u516d\u4e00
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-05-15","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-05-15","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5168\u7ad9\u5f15\u5165\u81ea\u52a8\u5728\u65b0\u6807\u7b7e\u9875\u6253\u5f00\uff0c\u4ed3\u5e93\u5730\u5740\uff1amkdocs-open-in-new-tab
      Show source code

      Look at this source open_in_new_tab.js:

      // Description: Open external links in a new tab and PDF links in a new tab\n// Source: https://jekyllcodex.org/without-plugin/new-window-fix/\n\n//open external links in a new window\nfunction external_new_window() {\n    for(let c = document.getElementsByTagName(\"a\"), a = 0;a < c.length;a++) {\n        let b = c[a];\n        if(b.getAttribute(\"href\") && b.hostname !== location.hostname) {\n            b.target = \"_blank\";\n            b.rel = \"noopener\";\n        }\n    }\n}\n//open PDF links in a new window\nfunction pdf_new_window ()\n{\n    if (!document.getElementsByTagName) {\n      return false;\n    }\n    let links = document.getElementsByTagName(\"a\");\n    for (let eleLink=0; eleLink < links.length; eleLink ++) {\n    if ((links[eleLink].href.indexOf('.pdf') !== -1)||(links[eleLink].href.indexOf('.doc') !== -1)||(links[eleLink].href.indexOf('.docx') !== -1)) {\n        links[eleLink].onclick =\n        function() {\n            window.open(this.href);\n            return false;\n        }\n    }\n    }\n}\n\nfunction apply_rules() {\n    external_new_window();\n    pdf_new_window();\n}\n\nif (typeof document$ !== \"undefined\") {\n    // compatibility with mkdocs-material's instant loading feature\n    // based on code from https://github.com/timvink/mkdocs-charts-plugin\n    // Copyright (c) 2021 Tim Vink - MIT License\n    // fixes [Issue #2](https://github.com/JakubAndrysek/mkdocs-open-in-new-tab/issues/2)\n    document$.subscribe(function() {\n        apply_rules();\n        console.log(\"Applying rules\");\n    })\n}\n

      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-05-05","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-05-05","text":"

      \u00b6

      • \u53d1\u5e03Mkdocs-Wcowin\u4e3b\u9898|3.0\u7248\u672c\uff01\uff01\uff01
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u548c\u5c0f\u738b\u4e00\u8d77\u5403\u4e86\u597d\u5403\u7684
      • \u611f\u8c22\u738b\u9e4f\u8001\u54e5\u7684\u6253\u8d4f
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-22","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-22","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa
      • \u4f18\u5316\u5e03\u5c40
      • \u65b0\u589e\u5706\u89d2\u5316\u8bbe\u8ba1\u6559\u7a0b
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-22_1","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-22","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u7f51\u7ad9\u5168\u9762\u8d34\u5408\u5706\u89d2\u8bbe\u8ba1\uff0c\u975e\u5e38\u597d\u770b
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-13","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-13","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u91cd\u5199\u4e3b\u9875index.md,\u66f4\u52a0\u7f8e\u89c2\uff0c\u8d34\u5408\u5706\u89d2\u8bbe\u8ba1
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-12","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-12","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u611f\u8c22W1ndys\u63d0\u51fa\u7684\u4f7f\u7528\u8f6f\u7f16\u7801\u914d\u7f6e\u53cb\u94fe\u754c\u9762\uff0c\u4f7f\u5f97\u53cb\u94fe\u6dfb\u52a0\u66f4\u52a0\u89c4\u8303\u5316
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-06","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-06","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4e3b\u9875\u5f15\u5165\u5929\u6c14\u7ec4\u4ef6\uff0c\u641c\u7d22\u6846/\u6309\u94ae\u5706\u89d2\u5316
      • \u5220\u9664\u5197\u4f59JS/CSS\u6587\u4ef6
      • \u611f\u8c22Anshul Raj Verma\u5728Discussions#7\u4e0a\u63d0\u51fa\u7684\u7f51\u7ad9\u4f18\u5316\u5efa\u8bae
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-04-02","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-04-02","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5728mkdocs.yml\u7684plugins\u6a21\u5757\u4e2d\u5f15\u5165!ENV [CI, false]\u8bed\u53e5\uff0c\u6781\u5927\u7f29\u77edmkdocs serve\u9759\u6001\u9884\u89c8\u65f6\u95f4\uff083-5s\uff09
      • \u672cMkdocs-Wcowin\u4e3b\u9898\u5f97\u5230\u4ee5\u4e0b\u4e24\u4f4d\u7684\u4f7f\u7528\uff1a
        • Lenny's Web
        • tkqtang's Web
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-03-14","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-03-14","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • 3\u670814\u65e5\uff08March 14th\uff09\u662f\u516c\u5386\u4e00\u5e74\u4e2d\u7684\u7b2c73\u5929\uff08\u95f0\u5e74\u7b2c74\u5929\uff09\uff0c\u79bb\u5168\u5e74\u7684\u7ed3\u675f\u8fd8\u6709292\u5929\u3002\u662f\u56fd\u9645\u5706\u5468\u7387\u65e5\u3002\u5176\u4e2d\u5386\u53f2\u4e0a\u53d1\u751f\u7684\u5927\u4e8b\u4ef6\u6709\u963f\u5c14\u4f2f\u7279\u00b7\u7231\u56e0\u65af\u5766\u7684\u51fa\u751f\u3002 [10]\u5361\u5c14\u00b7\u9a6c\u514b\u601d\u3001\u65af\u8482\u82ac\u00b7\u5a01\u5ec9\u00b7\u970d\u91d1\u7684\u901d\u4e16\u3002
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-20","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-20","text":"

      \u00b6

      • \u4f18\u5316\u9875\u811a\u201c\u672c\u7ad9\u8bbf\u95ee\u91cf\u548c\u840cICP\u590720230640\u53f7\u201d\u663e\u793a\u65b9\u5f0f
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-02","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-02","text":"

      \u00b6

      • \u7f51\u7ad9\u56fe\u7247\u5168\u90e8\u8fc1\u79fb\u81f3smms(\u66f4\u52a0\u7a33\u5b9a\u6d41\u7545)
      • \u7740\u624b\u6539\u5199MKdocs\u6559\u7a0b\uff0c\u4f7f\u5f97\u6761\u7406\u66f4\u52a0\u6e05\u6670
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5220\u9664\u5927\u91cf\u7e41\u7410\u65e0\u7528\u4ee3\u7801
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-02-01","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-02-01","text":"

      \u00b6

      • \u6539\u8fdb\u7f51\u9875\u4ee3\u7801\u663e\u793a\u6548\u679c
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-01-30","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-01-30","text":"

      \u00b6

      • \u53cb\u94fe\u6570\u91cf\u8fbe\u523016\u4f4d
      • \u4fee\u590d\u4e86\u4e00\u4e9bbugs
      • \u672c\u7f51\u7ad9\u5df2\u7ecf\u88ab\u767e\u5ea6/\u8c37\u6b4c\u6536\u5f55\uff08\u786e\u4fe1\uff0c\u4f7f\u7528\u767e\u5ea6/\u8c37\u6b4c\u641c\u7d22Wcowin\u5b57\u6837\u5373\u53ef\uff09
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2024-01-05","title":"2024\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2024/01/01/2024%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2024-01-05","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5f15\u5165git-revision-date-localized-plugin\u63d2\u4ef6\uff0c\u4ee5\u4fbf\u8bb0\u5f55\u6587\u6863\u521b\u5efa\u548c\u6700\u540e\u4e00\u6b21\u4fee\u6539\u65f6\u95f4
      • \u548c\u5c0f\u738b\u4e00\u8d77\u770b\u4e86\u66f4\u591a\u7684\u732b\u54aa

      Share on Share on

      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u6587\u6df1\u5165\u63a2\u8ba8\u4e86\u76f8\u5173\u6280\u672f\u5185\u5bb9\uff0c\u63d0\u4f9b\u4e86\u5b9e\u7528\u7684\u65b9\u6cd5\u548c\u89e3\u51b3\u65b9\u6848\u3002

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a349

      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-30","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-30","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4fee\u590d\u5173\u4e8e\u9875\u9762\u7684\u663e\u793a\u95ee\u9898
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-19","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-19","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4fee\u6539\u6559\u7a0b\u4e2d\u7684\u5404\u79cd\u5c0f\u9519\u8bef
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-13","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-13","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4fee\u590d\u5728 Markdown \u6587\u4ef6\u4e2d\uff0cHTML \u548c Markdown \u6df7\u7528\u53ef\u80fd\u5bfc\u81f4\u89e3\u6790\u5668\u65e0\u6cd5\u6b63\u786e\u6e32\u67d3\u3002
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-04-10","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-04-10","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4f18\u5316\u53cb\u94fe\u7edf\u8ba1\u65b9\u5f0f\uff0c\u66f4\u52a0\u51c6\u786e\u8ba1\u6570
      • \u4fee\u590d\u8bc4\u8bba\u533a\u91cd\u5b9a\u4f4d\u7684bug\uff0c\u9632\u6b62\u4ed6\u4eba\u7f51\u7ad9\u6d4b\u8bd5\u8bc4\u8bba\u533a\u5bfc\u81f4\u8bc4\u8bba\u533a\u8986\u76d6\u5230\u6211\u7684\u7f51\u7ad9
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-03-30","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-03-30","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u6211\u56de\u6765\u4e86
      • \u5f00\u542f\u535a\u5ba2\u534a\u6708\u66f4\u6a21\u5f0f
      • \u4e00\u6218\u8003\u7814\u5931\u5229
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-03-14","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-03-14","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u03c0\u65e5\u5feb\u4e50\uff01
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-24","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-24","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4e00\u5207\u90fd\u662f\u6700\u597d\u7684\u5b89\u6392
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-19","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-19","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u66f4\u65b0\u4e86MKdocs\u6559\u7a0b\uff0c\u9002\u5e94\u5b98\u65b9\u6700\u65b0\u7248\u672c
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-16","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-16","text":"

      \u00b6

      • \u9996\u9875\u7115\u7136\u4e00\u65b0
      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-02-04","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-02-04","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u66f4\u65b0\u4e86\u90e8\u5206\u6559\u7a0b\uff0c\u9002\u5e94\u5b98\u65b9\u6700\u65b0\u7248\u672c
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-11","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-11","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u4f18\u5316\u7559\u8a00\u677f\uff0c\u652f\u6301\u6309\u94ae\u5207\u6362\uff0c\u5e03\u5c40\u66f4\u7b80\u6d01
      • \u6e05\u7406\u5931\u6548\u56fe\u7247\u94fe\u63a5\uff0c\u4fee\u590d\u90e8\u5206\u56fe\u7247\u65e0\u6cd5\u663e\u793a\u95ee\u9898
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-09","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-09","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5f15\u5165glightbox\u63d2\u4ef6(\u5df2\u53d6\u6d88)\uff0c\u56fe\u7247\u67e5\u770b\u66f4\u65b9\u4fbf
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-07","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-07","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u91cd\u5199\u90e8\u5206\u4ee3\u7801
      "},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#2025-01-05","title":"2025\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/2025/01/01/2025%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/#01","title":"2025-01-05","text":"

      \u00b6

      • \u4f18\u5316\u7f51\u7ad9\u6d41\u7545\u5ea6\uff08\u7384\u5b66\uff09
      • \u5927\u5e45\u63d0\u5347\u6027\u80fd\uff0c\u52a0\u8f7d\u901f\u5ea6\u66f4\u5feb Share on Share on
      "},{"location":"blog/websitebeauty/404/","title":"\u6dfb\u52a0404\u9875\u9762","text":"

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a131 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a30

      \u9996\u5148\u5728mkdocs.yml\u6587\u4ef6\u4e2d\u6dfb\u52a0custom_dir:

      theme:\n  name: material\n  custom_dir: docs/overrides #\u8986\u5199\u8def\u5f84\n

      docs/overrides\u6587\u4ef6\u4e0b\u65b0\u5efa404.html \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:

      $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500404.html\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/404/#404","title":"404\u516c\u76ca\u9875\u9762","text":"\u70b9\u51fb\u5c55\u5f00
      <!DOCTYPE html>\n<html lang=\"zh-CN\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>404 - \u9875\u9762\u4e0d\u5b58\u5728</title>```\n<!DOCTYPE html>\n<html lang=\"zh-cn\">\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"description\" content=\"\u516c\u76ca404\u9875\u9762\u662f\u7531\u817e\u8baf\u516c\u53f8\u5458\u5de5\u5fd7\u613f\u8005\u81ea\u4e3b\u53d1\u8d77\u7684\u4e92\u8054\u7f51\u516c\u76ca\u6d3b\u52a8\u3002\" />\n    <link rel=\"icon\" href=\"data:image/gif;base64,R0lGODdhIAAgANUAAAAAAAgFBgYICAwMDBAPDxAQDxQTFBUYFxcaGRwcHCQkJCQoJykqKTQ0ND09PUJCQktMTFZWVltcXF1hYGNjY2doaGpqanNzc3d5eHp6eoODg4uLi5eXl5mamqOjo62tra+wr7S0tLe5uLu7u7/AwMPEw83NzdbX1tfa2dra2uTk5Ovr6+/w7/T09Pj39/f4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAADEALAAAAAAgACAAAAb/QJhwOGyZOpIGQ6FgNCQcU4tIrcJaIwlgy+1uJaOplZqydBOSzGaTkSS6lNN4ONoOAJRQajV0rVAgFF0jcyEAbw9hc1cjD4cAIVZ1DAAXKotEKxkAlIREJ48bYphFGwAKAHJCLWaVo6RFF1sWYnUDDpewVSoOd4QtWgCeMCmXLaqfUyopdF9GWxRiKQAVKh3CRHUdKhQEzFeCAEdbH6uOh28A3ypbCQhbEGIfWx2CCd8wJhB2CpFDIQvuAIBgYkiKN0kASOAzRJYjBwyFrGgAwNGFTFqUAMjwYogpA1woMFwRDgDIDUQ2LQGAcoiGLRr2QRgp8yUADURMMWFJRYMH3BglJOQSwq0EDA84c56ilOGVLisqKUaISKVFihIjRJRI4XTIiggAGggygKxICAoguSDI0/UEyAnXAJTLJMtLlwxUYcwD0MEEtIgtBKGi0OHDh3qn8IwKvEVKuGHXGAwI8apFCAOUOvxzBqNOAVzgthi1UgKasl7YrtS9MMXI6DEjpKieNWoaSA1dF7V4+QafkNKoLOlSIQsVCUkmATgYwWIRCxEOAByANKc0AAEAJnzYI6bFihQfBAUQjSlF3S0GIqjZgCFC2i0XfM/BUtJuSEVPjdRTwsQJYdljBAEAOw==\" />\n    <title>404 \u60a8\u8bbf\u95ee\u7684\u9875\u9762\u641e\u4e22\u4e86</title>\n    <script src=\"https://volunteer.cdn-go.cn/404/latest/404.js\" rendertarget=\"404DlV\"></script>\n    <style>\n        body {\n            overflow-x: hidden;\n            max-width: 100vw;\n            margin: 0;\n            padding: 0;\n            background-color: rgba(0, 0, 0, 0);\n            color: white;\n            text-align: center;\n        }\n        .container {\n            position: relative;\n            left: 50%;\n            transform: translateX(-50%);\n            width: 100%;\n            max-width: 1600px;\n            height: 100vh;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n        }\n        .background-img {\n            width: 100%;\n            max-width: 1600px;\n            filter: brightness(75%);\n        }\n        .content {\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n            width: 98vw;\n            max-width: 1600px;\n            text-align: center;\n        }\n        .content h1 {\n            font-size: 128px;\n            font-weight: 800;\n            margin: 0;\n        }\n        .content p {\n            font-size: 28px;\n            margin: 0;\n        }\n        .content i {\n            font-size: 1.2em;\n        }\n        .footer {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 98vw;\n            max-width: 1600px;\n            font-size: 0.75em;\n            margin-top: 20px;\n        }\n        .footer img {\n            width: 160px;\n        }\n        .footer div {\n            text-align: right;\n        }\n        .footer a {\n            /* color: lightgray; */\n            font-size: 0.8em;\n        }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <img class=\"background-img\" alt=\"404!\u60a8\u8981\u8bbf\u95ee\u7684\u9875\u9762\u8d70\u4e22\u4e86!\" src=\"https://volunteer.cdn-go.cn/404/latest/img/dream4school.jpg\" />\n        <div class=\"content\">\n            <h1>404 NOT Found</h1>\n            <p>\u60a8\u8bbf\u95ee\u7684\u9875\u9762\u8d70\u4e22\u5728\u5bfb\u627e\u68a6\u60f3\u7684\u8def\u4e0a\u4e86</p>\n            <p>\u4e0d\u8fc7\u60a8\u8fd8\u53ef\u4ee5\u548c\u817e\u8baf\u5fd7\u613f\u8005\u4e00\u8d77</p>\n            <i><b>\u4e3a\u5b69\u5b50\u4eec\u70b9\u4eae\u4e00\u4e2a\u68a6\u60f3</b></i>\n        </div>\n        <div class=\"footer\">\n            <a href=\"https://volunteer.cdn-go.cn/404/latest/img/dream4schoolQR.png\">\n                <img src=\"https://volunteer.cdn-go.cn/404/latest/img/dream4schoolQR.png\" alt=\"\u70b9\u51fb\u8fdb\u5165\u652f\u6301\u9875\u9762\" />\n                <br />\u626b\u7801\u70b9\u4eae\u4e00\u4e2a\u68a6\u60f3\n            </a>\n            <div>\n                <p>\u7167\u7247\u62cd\u6444\u4e8e\u6e56\u5357\u7701\u5cb3\u9633\u5e02\u5e73\u6c5f\u53bf\u4e09\u5e02\u9547\u65b0\u6751\u5b8c\u5c0f</p>\n                <p>\u62cd\u6444\u65f6\u95f4\uff1a\u4e8c\u96f6\u4e8c\u4e09\u5e74\u4e03\u6708\u5341\u4e00\u65e5</p>\n                <p>\uff08\u611f\u6069\u57fa\u91d1\u4f1a\u4f9b\u7a3f\uff09</p>\n                <a href=\"https://support.qq.com/products/378306\">\u6211\u8981\u53cd\u9988</a>\n            </div>\n        </div>\n    </div>\n</body>\n</html>\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/404/#404_1","title":"404\u9ab0\u5b50\u9875\u9762","text":"

      \u76ee\u524d\u66f4\u6362\u4e86\u65b0\u7684404\u9875\u9762\uff1a

      \u70b9\u51fb\u5c55\u5f00
      <!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>404</title>\n    <style>\n      body {\n        background: #000;\n        height: 100vh;\n        overflow: hidden;\n        display: flex;\n        font-family: Anton, sans-serif;\n        justify-content: center;\n        align-items: center;\n        -webkit-perspective: 1000px;\n        perspective: 1000px;\n      }\n\n      div {\n        -webkit-transform-style: preserve-3d;\n        transform-style: preserve-3d;\n      }\n\n      .rail {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        -webkit-transform: rotateX(-30deg) rotateY(-30deg);\n        transform: rotateX(-30deg) rotateY(-30deg);\n      }\n\n      .rail .stamp {\n        position: absolute;\n        width: 200px;\n        height: 200px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        background: #141414;\n        color: #fff;\n        font-size: 7rem;\n      }\n\n      .rail .stamp:nth-child(1) {\n        -webkit-animation: stampSlide 40s -2.3s linear infinite;\n        animation: stampSlide 40s -2.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(2) {\n        -webkit-animation: stampSlide 40s -4.3s linear infinite;\n        animation: stampSlide 40s -4.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(3) {\n        -webkit-animation: stampSlide 40s -6.3s linear infinite;\n        animation: stampSlide 40s -6.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(4) {\n        -webkit-animation: stampSlide 40s -8.3s linear infinite;\n        animation: stampSlide 40s -8.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(5) {\n        -webkit-animation: stampSlide 40s -10.3s linear infinite;\n        animation: stampSlide 40s -10.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(6) {\n        -webkit-animation: stampSlide 40s -12.3s linear infinite;\n        animation: stampSlide 40s -12.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(7) {\n        -webkit-animation: stampSlide 40s -14.3s linear infinite;\n        animation: stampSlide 40s -14.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(8) {\n        -webkit-animation: stampSlide 40s -16.3s linear infinite;\n        animation: stampSlide 40s -16.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(9) {\n        -webkit-animation: stampSlide 40s -18.3s linear infinite;\n        animation: stampSlide 40s -18.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(10) {\n        -webkit-animation: stampSlide 40s -20.3s linear infinite;\n        animation: stampSlide 40s -20.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(11) {\n        -webkit-animation: stampSlide 40s -22.3s linear infinite;\n        animation: stampSlide 40s -22.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(12) {\n        -webkit-animation: stampSlide 40s -24.3s linear infinite;\n        animation: stampSlide 40s -24.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(13) {\n        -webkit-animation: stampSlide 40s -26.3s linear infinite;\n        animation: stampSlide 40s -26.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(14) {\n        -webkit-animation: stampSlide 40s -28.3s linear infinite;\n        animation: stampSlide 40s -28.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(15) {\n        -webkit-animation: stampSlide 40s -30.3s linear infinite;\n        animation: stampSlide 40s -30.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(16) {\n        -webkit-animation: stampSlide 40s -32.3s linear infinite;\n        animation: stampSlide 40s -32.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(17) {\n        -webkit-animation: stampSlide 40s -34.3s linear infinite;\n        animation: stampSlide 40s -34.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(18) {\n        -webkit-animation: stampSlide 40s -36.3s linear infinite;\n        animation: stampSlide 40s -36.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(19) {\n        -webkit-animation: stampSlide 40s -38.3s linear infinite;\n        animation: stampSlide 40s -38.3s linear infinite;\n      }\n\n      .rail .stamp:nth-child(20) {\n        -webkit-animation: stampSlide 40s -40.3s linear infinite;\n        animation: stampSlide 40s -40.3s linear infinite;\n      }\n\n      @-webkit-keyframes stampSlide {\n        0% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n        }\n\n        100% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n        }\n      }\n\n      @keyframes stampSlide {\n        0% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(130px);\n        }\n\n        100% {\n          -webkit-transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n          transform: rotateX(90deg) rotateZ(-90deg) translateZ(-200px)\n            translateY(-3870px);\n        }\n      }\n\n      .world {\n        -webkit-transform: rotateX(-30deg) rotateY(-30deg);\n        transform: rotateX(-30deg) rotateY(-30deg);\n      }\n\n      .world .forward {\n        position: absolute;\n        -webkit-animation: slide 2s linear infinite;\n        animation: slide 2s linear infinite;\n      }\n\n      .world .box {\n        width: 200px;\n        height: 200px;\n        -webkit-transform-origin: 100% 100%;\n        transform-origin: 100% 100%;\n        -webkit-animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;\n        animation: roll 2s cubic-bezier(1, 0.01, 1, 1) infinite;\n      }\n\n      .world .box .wall {\n        position: absolute;\n        width: 200px;\n        height: 200px;\n        background: rgba(10, 10, 10, 0.8);\n        border: 1px solid #fafafa;\n        box-sizing: border-box;\n      }\n\n      .world .box .wall::before {\n        content: \"\";\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        color: #fff;\n        font-size: 7rem;\n      }\n\n      .world .box .wall:nth-child(1) {\n        -webkit-transform: translateZ(100px);\n        transform: translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(2) {\n        -webkit-transform: rotateX(180deg) translateZ(100px);\n        transform: rotateX(180deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(3) {\n        -webkit-transform: rotateX(90deg) translateZ(100px);\n        transform: rotateX(90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(3)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(90deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s -2s linear infinite;\n        animation: zeroFour 4s -2s linear infinite;\n      }\n\n      .world .box .wall:nth-child(4) {\n        -webkit-transform: rotateX(-90deg) translateZ(100px);\n        transform: rotateX(-90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(4)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(-90deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s -2s linear infinite;\n        animation: zeroFour 4s -2s linear infinite;\n      }\n\n      .world .box .wall:nth-child(5) {\n        -webkit-transform: rotateY(90deg) translateZ(100px);\n        transform: rotateY(90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(5)::before {\n        -webkit-transform: rotateX(180deg) translateZ(-1px);\n        transform: rotateX(180deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s linear infinite;\n        animation: zeroFour 4s linear infinite;\n      }\n\n      .world .box .wall:nth-child(6) {\n        -webkit-transform: rotateY(-90deg) translateZ(100px);\n        transform: rotateY(-90deg) translateZ(100px);\n      }\n\n      .world .box .wall:nth-child(6)::before {\n        -webkit-transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);\n        transform: rotateX(180deg) rotateZ(180deg) translateZ(-1px);\n        -webkit-animation: zeroFour 4s linear infinite;\n        animation: zeroFour 4s linear infinite;\n      }\n\n      @-webkit-keyframes zeroFour {\n        0% {\n          content: \"4\";\n        }\n\n        100% {\n          content: \"0\";\n        }\n      }\n\n      @keyframes zeroFour {\n        0% {\n          content: \"4\";\n        }\n\n        100% {\n          content: \"0\";\n        }\n      }\n\n      @-webkit-keyframes roll {\n        0% {\n          -webkit-transform: rotateZ(0);\n          transform: rotateZ(0);\n        }\n\n        85% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        87% {\n          -webkit-transform: rotateZ(88deg);\n          transform: rotateZ(88deg);\n        }\n\n        90% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        100% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n      }\n\n      @keyframes roll {\n        0% {\n          -webkit-transform: rotateZ(0);\n          transform: rotateZ(0);\n        }\n\n        85% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        87% {\n          -webkit-transform: rotateZ(88deg);\n          transform: rotateZ(88deg);\n        }\n\n        90% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n\n        100% {\n          -webkit-transform: rotateZ(90deg);\n          transform: rotateZ(90deg);\n        }\n      }\n\n      @-webkit-keyframes slide {\n        0% {\n          -webkit-transform: translateX(0);\n          transform: translateX(0);\n        }\n\n        100% {\n          -webkit-transform: translateX(-200px);\n          transform: translateX(-200px);\n        }\n      }\n\n      @keyframes slide {\n        0% {\n          -webkit-transform: translateX(0);\n          transform: translateX(0);\n        }\n\n        100% {\n          -webkit-transform: translateX(-200px);\n          transform: translateX(-200px);\n        }\n      }\n    </style>\n  </head>\n  <body>\n    <div class=\"rail\">\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n      <div class=\"stamp four\">4</div>\n      <div class=\"stamp zero\">0</div>\n    </div>\n    <div class=\"world\">\n      <div class=\"forward\">\n        <div class=\"box\">\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n          <div class=\"wall\"></div>\n        </div>\n      </div>\n    </div>\n  </body>\n</html>\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/","title":"MkDocs\u6587\u6863AI\u6458\u8981","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u8fd9\u4e2a\u9879\u76ee\u5229\u7528MkDocs hooks\uff0c\u4e3a\u60a8\u7684\u6280\u672f\u6587\u6863\u548c\u535a\u5ba2\u6dfb\u52a0AI\u9a71\u52a8\u7684\u6458\u8981\u751f\u6210\u548c\u667a\u80fd\u9605\u8bfb\u7edf\u8ba1\u529f\u80fd.MkDocs AI Hooks

      \u4ed3\u5e93\u5730\u5740\uff1ahttps://github.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a912 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a134

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#mkdocs-ai-hooks","title":"MkDocs AI Hooks","text":"

      \u4ed3\u5e93\u5730\u5740\uff1ahttps://github.com/Wcowin/mkdocs-ai-hooks

      \u4e2d\u6587 | English

      \ud83d\ude80 \u60a8\u7684MkDocs\u6587\u6863\u9996\u9009\u667a\u80fd\u6458\u8981\uff01 \u8fd9\u4e2a\u9879\u76ee\u5229\u7528MkDocs hooks\uff0c\u4e3a\u60a8\u7684\u6280\u672f\u6587\u6863\u548c\u535a\u5ba2\u6dfb\u52a0AI\u9a71\u52a8\u7684\u6458\u8981\u751f\u6210\u548c\u667a\u80fd\u9605\u8bfb\u7edf\u8ba1\u529f\u80fd\u3002

      \u7f51\u7ad9\u6548\u679c\u9884\u89c8\uff1ahttps://wcowin.work/Mkdocs-Wcowin/blog/Mkdocs/mkfirst/

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_1","title":"\u2728 \u529f\u80fd\u7279\u6027","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai","title":"AI\u667a\u80fd\u6458\u8981","text":"
      • \u81ea\u52a8\u751f\u6210\u6587\u7ae0\u6458\u8981\uff1a\u4f7f\u7528DeepSeek API\u751f\u6210\u9ad8\u8d28\u91cf\u768480-120\u5b57\u6458\u8981
      • \u591a\u8bed\u8a00\u652f\u6301\uff1a\u652f\u6301\u4e2d\u6587\u3001\u82f1\u6587\u7b49\u591a\u79cd\u8bed\u8a00
      • \u591aAPI\u670d\u52a1\u652f\u6301\uff1a\u652f\u6301OpenAI\u3001Claude\u7b49\u591a\u79cdAI\u670d\u52a1
      • \u667a\u80fd\u5185\u5bb9\u6e05\u7406\uff1a\u81ea\u52a8\u8fc7\u6ee4YAML\u3001HTML\u3001\u4ee3\u7801\u5757\u7b49\u683c\u5f0f\u5185\u5bb9
      • \u5907\u7528\u6458\u8981\u673a\u5236\uff1aAPI\u5931\u8d25\u65f6\u63d0\u4f9b\u57fa\u4e8e\u89c4\u5219\u7684\u667a\u80fd\u6458\u8981
      • \u9ad8\u6548\u7f13\u5b58\u7cfb\u7edf\uff1a\u907f\u514d\u91cd\u590dAPI\u8c03\u7528\uff0c7\u5929\u667a\u80fd\u8fc7\u671f
      • \u7075\u6d3b\u914d\u7f6e\uff1a\u652f\u6301\u6587\u4ef6\u5939\u7ea7\u522b\u548c\u9875\u9762\u7ea7\u522b\u7684\u7cbe\u786e\u63a7\u5236
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_2","title":"\u667a\u80fd\u9605\u8bfb\u7edf\u8ba1(\u53ef\u9009)","text":"
      • \u7cbe\u51c6\u4e2d\u6587\u5b57\u7b26\u7edf\u8ba1\uff1a\u4e13\u95e8\u4f18\u5316\u7684\u4e2d\u6587\u5185\u5bb9\u8bc6\u522b
      • \u667a\u80fd\u4ee3\u7801\u68c0\u6d4b\uff1a\u8bc6\u522b\u591a\u79cd\u7f16\u7a0b\u8bed\u8a00\u548c\u547d\u4ee4\u884c\u4ee3\u7801
      • \u9605\u8bfb\u65f6\u95f4\u4f30\u7b97\uff1a\u57fa\u4e8e\u4e2d\u6587\u9605\u8bfb\u4e60\u60ef\u7684400\u5b57/\u5206\u949f\u8ba1\u7b97
      • \u7f8e\u89c2\u4fe1\u606f\u5c55\u793a\uff1a\u4f7f\u7528MkDocs Material\u98ce\u683c\u7684\u4fe1\u606f\u6846
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_3","title":"\u667a\u80fd\u5316\u7279\u6027","text":"
      • \u81ea\u52a8\u8bed\u8a00\u8bc6\u522b\uff1a\u652f\u630130+\u7f16\u7a0b\u8bed\u8a00\u548c\u6807\u8bb0\u8bed\u8a00
      • \u5185\u5bb9\u7c7b\u578b\u68c0\u6d4b\uff1a\u533a\u5206\u4ee3\u7801\u3001\u914d\u7f6e\u3001\u547d\u4ee4\u884c\u7b49\u4e0d\u540c\u5185\u5bb9
      • \u7f13\u5b58\u4f18\u5316\uff1aLRU\u7f13\u5b58\u63d0\u5347\u6027\u80fd
      • \u9519\u8bef\u5904\u7406\uff1a\u5b8c\u5584\u7684\u5f02\u5e38\u5904\u7406\u548c\u65e5\u5fd7\u8bb0\u5f55
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_4","title":"\ud83d\udce6 \u5b89\u88c5","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#1","title":"\u65b9\u6cd51","text":"

      \u76f4\u63a5\u4e0b\u8f7d\uff08\u63a8\u8350\uff09 \u5728releases\u9875\u9762\u4e0b\u8f7d\uff0c\u89e3\u538b\u540e\u5c06\u4ee5\u4e0b\u6587\u4ef6\u653e\u5165\u60a8\u7684MkDocs\u9879\u76ee\u7684docs/overrides/hooks\u4e2d\uff1a https://github.com/Wcowin/mkdocs-ai-hooks/releases

      \u6216\u8005\u4e0b\u8f7d\u4e0a\u65b9hooks\u76ee\u5f55\u4e0b\u7684\u4e24\u4e2aPython\u6587\u4ef6\uff1a

      • ai_summary.py\uff1aAI\u6458\u8981\u751f\u6210\u5668

      • reading_time.py\uff1a\u9605\u8bfb\u65f6\u95f4\u7edf\u8ba1\u5668

      # \u653e\u7f6e\u5230\u60a8\u7684\u9879\u76ee\u76ee\u5f55\nmkdir -p docs/overrides/hooks/\nmv ai_summary.py docs/overrides/hooks/\nmv reading_time.py docs/overrides/hooks/\n
      \u653e\u7f6e\u7684\u4f4d\u7f6e\u5982\u4e0b\uff1a

      \u5728 mkdocs.yml \u4e2dtheme\u4e0b\u6dfb\u52a0custom_dir\uff1a

      # \u53ef\u9009\uff1aMaterial\u4e3b\u9898\u914d\u7f6e\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u4e00\u5b9a\u8981\u6709\uff01\u4e00\u5b9a\u8981\u6709\uff01\n  features:\n    - content.code.copy\n    - content.code.select\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#2","title":"\u65b9\u6cd52","text":"

      \u4f7f\u7528Git\u514b\u9686

      git clone  https://github.com/Wcowin/mkdocs-ai-hooks.git\ncd mkdocs-ai-hooks \npip install -r requirements.txt\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_5","title":"\u4f9d\u8d56\u5b89\u88c5","text":"
      pip install requirements.txt\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_6","title":"\ud83d\ude80 \u5feb\u901f\u5f00\u59cb","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#1-mkdocs","title":"1. \u914d\u7f6eMkDocs","text":"

      \u5148\u6267\u884c\u4e00\u6b21mkdocs build\uff0c\u751f\u6210\u7f13\u5b58\u6587\u4ef6

      mkdocs build \n
      \u5728 mkdocs.yml \u4e2d\u6dfb\u52a0hooks\uff0ctheme\u4e0b\u6dfb\u52a0custom_dir\uff1a
      hooks:\n  - docs/overrides/hooks/ai_summary.py # \u6dfb\u52a0AI\u6458\u8981hook\n  - docs/overrides/hooks/reading_time.py # \u6dfb\u52a0\u7edf\u8ba1\u9605\u8bfb\u65f6\u95f4hook\n\n# \u53ef\u9009\uff1aMaterial\u4e3b\u9898\u914d\u7f6e\ntheme:\n  name: material\n  custom_dir: docs/overrides #\u4e00\u5b9a\u8981\u6709\uff01\uff01\n  features:\n    - content.code.copy\n    - content.code.select\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#2-ai_summarypyai","title":"2. \u5728ai_summary.py\u4e2d\u914d\u7f6e\u9700\u8981AI\u6458\u8981\u7684\u76ee\u5f55","text":"
      # \ud83d\udcc2 \u53ef\u81ea\u5b9a\u4e49\u7684\u6587\u4ef6\u5939\u914d\u7f6e\nself.enabled_folders = [\n    'blog/',      # blog\u6587\u4ef6\u5939\n    'develop/',   # develop\u6587\u4ef6\u5939\n    # \u5728\u8fd9\u91cc\u6dfb\u52a0\u60a8\u60f3\u8981\u542f\u7528AI\u6458\u8981\u7684\u6587\u4ef6\u5939\n]\n\n# \ud83d\udccb \u6392\u9664\u7684\u6587\u4ef6\u548c\u6587\u4ef6\u5939\nself.exclude_patterns = [\n    'waline.md', 'link.md', '404.md', 'tag.md', 'tags.md',\n    '/about/', '/search/', '/sitemap', 'index.md',  # \u6839\u76ee\u5f55index.md\n]\n\n# \ud83d\udccb \u6392\u9664\u7684\u7279\u5b9a\u6587\u4ef6\nself.exclude_files = [\n    'blog/index.md',\n    'blog/indexblog.md',\n    'docs/index.md',\n    'develop/index.md',\n]\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#3-ai_summarypydeepseek-apiopenai","title":"3. \u5728ai_summary.py\u4e2d\u8bbe\u7f6eDeepSeek API(\u9ed8\u8ba4\u662fOpenAI)","text":"
      # \u5728ai_summary.py\u4e2d\u4fee\u6539API\u914d\u7f6e\n'deepseek': {\n    'url': 'https://api.deepseek.com/v1/chat/completions',\n    'model': 'deepseek-chat',\n    'api_key': os.getenv('DEEPSEEK_API_KEY', 'your-azure-api-key'),\n    'max_tokens': 150,\n    'temperature': 0.3\n},\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#4-mkdocs","title":"4. \u8fd0\u884cMkDocs","text":"

      \u7b2c\u4e00\u6b21\u8fd0\u884c\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u7b49\u5f85\u4e00\u6bb5\u65f6\u95f4\uff0c\u56e0\u4e3a\u7cfb\u7edf\u4f1a\u81ea\u52a8\u751f\u6210\u6458\u8981\u3002\u540e\u7eed\u8fd0\u884c\u65f6\uff0c\u7cfb\u7edf\u4f1a\u4f7f\u7528\u7f13\u5b58\u6570\u636e\uff0c\u52a0\u5feb\u751f\u6210\u901f\u5ea6\u3002

      #\u4f9d\u6b21\u8fd0\u884c\u547d\u4ee4\nmkdocs build \nmkdocs serve\n
      \u7ec8\u7aef\u8f93\u51fa\u5982\u4e0b\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_7","title":"\ud83d\udcd6 \u4f7f\u7528\u6307\u5357","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai_1","title":"AI\u6458\u8981\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_8","title":"\u6587\u4ef6\u5939\u7ea7\u522b\u63a7\u5236","text":"
      # \u542f\u7528\u7279\u5b9a\u6587\u4ef6\u5939\nconfigure_ai_summary(['blog/', 'docs/', 'tutorials/'])\n\n# \u5168\u5c40\u542f\u7528\uff08\u9664\u6392\u9664\u9879\uff09\nconfigure_ai_summary([''])\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_9","title":"\u9875\u9762\u7ea7\u522b\u63a7\u5236(\u63a8\u8350)","text":"

      \u5728Markdown\u6587\u4ef6\u7684YAML front matter\u4e2d\uff1a

      ---\ntitle: \u6587\u7ae0\u6807\u9898\nai_summary: true   # \u542f\u7528AI\u6458\u8981\n---\n
      ---\ntitle: \u6587\u7ae0\u6807\u9898\nai_summary: false  # \u7981\u7528AI\u6458\u8981\ndescription: \u624b\u52a8\u6458\u8981  # \u53ef\u9009\n---\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_10","title":"\u9605\u8bfb\u65f6\u95f4\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_11","title":"\u6392\u9664\u7279\u5b9a\u9875\u9762","text":"
      # \u5728\u9875\u9762\u7684YAML front matter\u4e2d\n---\ntitle: \u9875\u9762\u6807\u9898\nhide_reading_time: true  # \u9690\u85cf\u9605\u8bfb\u65f6\u95f4\n---\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_12","title":"\ud83c\udfa8 \u663e\u793a\u6548\u679c","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#ai_2","title":"AI\u6458\u8981\u663e\u793a","text":"
      !!! info \"\ud83e\udd16 AI\u667a\u80fd\u6458\u8981\"\n    \u672c\u6587\u8be6\u7ec6\u4ecb\u7ecd\u4e86MkDocs hooks\u7684\u5f00\u53d1\u548c\u4f7f\u7528\u65b9\u6cd5\uff0c\u6db5\u76d6AI\u6458\u8981\u751f\u6210\u3001\u9605\u8bfb\u65f6\u95f4\u7edf\u8ba1\u7b49\u529f\u80fd\u5b9e\u73b0\u3002\u901a\u8fc7DeepSeek API\u96c6\u6210\u548c\u667a\u80fd\u7f13\u5b58\u673a\u5236\uff0c\u4e3a\u6280\u672f\u6587\u6863\u63d0\u4f9b\u81ea\u52a8\u5316\u7684\u5185\u5bb9\u589e\u5f3a\u670d\u52a1\u3002\n\n# \u60a8\u7684\u6587\u7ae0\u6807\u9898\n\u6587\u7ae0\u5185\u5bb9...\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_13","title":"\u9605\u8bfb\u4fe1\u606f\u663e\u793a","text":"
      !!! info \"\ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f\"\n    \u9605\u8bfb\u65f6\u95f4\uff1a**3** \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a**1247** | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a**45**\n\n# \u60a8\u7684\u6587\u7ae0\u6807\u9898\n\u6587\u7ae0\u5185\u5bb9...\n

      \u5b9e\u9645\u6548\u679c\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#api","title":"API\u82b1\u8d39","text":"

      \u4e00\u6b21\u5927\u7ea60.03-0.05\u5143\uff08\u4e2d\u5927\u578b\u6587\u6863\uff09 \u53ef\u4ee5\u8bf4\u76f8\u5f53\u7ecf\u6d4e\u5b9e\u60e0\u4e86\uff01

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#openai","title":"\u514d\u8d39openai\u989d\u5ea6\u83b7\u53d6","text":"

      \u63a8\u8350\u4f7f\u7528\uff1achatanywhere

      \u7533\u8bf7\u597d\u540e\u5f97\u5230sk-\u5f00\u5934\u7684\u5bc6\u94a5\uff0c\u5728ai_summary.py\u7684\u591aAI\u670d\u52a1\u914d\u7f6e\u90e8\u5206\u66ff\u6362\u4e3a\u4ee5\u4e0b\u5185\u5bb9\uff1a

      'openai': {\n    'url': 'https://api.chatanywhere.tech/v1/chat/completions',\n    'model': 'gpt-3.5-turbo',  # \u6216 'gpt-4', 'gpt-4-turbo'\n    'api_key': os.getenv('OPENAI_API_KEY', 'your_openai_api_key'),\n    'max_tokens': 150,\n    'temperature': 0.3\n},\n
      # \u9ed8\u8ba4\u4f7f\u7528\u7684AI\u670d\u52a1\nself.default_service = 'openai'\n

      \u4f46\u662f\u6211\u8fd9\u91cc\u4e5f\u63a8\u8350\u4f7f\u7528DeepSeek API\uff0c\u989d\u5ea6\u5145\u8db3\u4e14\u6027\u80fd\u4f18\u79c0\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_14","title":"\u2699\ufe0f \u9ad8\u7ea7\u914d\u7f6e","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#api_1","title":"\u81ea\u5b9a\u4e49API\u670d\u52a1","text":"
      # \u652f\u6301\u5176\u4ed6AI\u670d\u52a1\nself.api_config = {\n    'url': 'https://your-api-endpoint.com/v1/chat/completions',\n    'model': 'your-model',\n    'headers': {\n        'Content-Type': 'application/json',\n        'Authorization': 'Bearer YOUR_API_KEY'\n    }\n}\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_15","title":"\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd","text":"
      # \u4fee\u6539AI\u6458\u8981\u7684\u63d0\u793a\u8bcd\ndef generate_ai_summary(self, content, page_title=\"\"):\n    prompt = f\"\"\"\u60a8\u7684\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd...\n\n    \u6587\u7ae0\u6807\u9898\uff1a{page_title}\n    \u6587\u7ae0\u5185\u5bb9\uff1a{content[:2500]}\n    \"\"\"\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_16","title":"\u7f13\u5b58\u914d\u7f6e","text":"

      # \u4fee\u6539\u7f13\u5b58\u8fc7\u671f\u65f6\u95f4\uff08\u5929\u6570\uff09\ncache_time = datetime.fromisoformat(cache_data.get('timestamp', '1970-01-01'))\nif (datetime.now() - cache_time).days < 30:  # \u6539\u4e3a30\u5929\n    return cache_data\n
      \u6ce8\u610f\u6ce8\u610f\u6ce8\u610f\uff01\uff01\uff01 \u5207\u6362api\u670d\u52a1\u540e\uff0c\u8981\u5220\u9664site/.ai_cache\u8fd9\u4e2a\u7f13\u5b58\u6587\u4ef6\uff0c\u624d\u53ef\u4ee5\u91cd\u65b0\u751f\u6210\u6458\u8981\uff01\uff01\uff01(\u8fd9\u4e2a\u95ee\u9898\u5df2\u7ecf\u89e3\u51b3\u4e86\uff0c\u5207\u6362api\u670d\u52a1\u540e\uff0c\u4f1a\u81ea\u52a8\u5220\u9664\u7f13\u5b58\u6587\u4ef6\uff0c\u65e0\u9700\u624b\u52a8\u5220\u9664)

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#star-history","title":"Star History","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/MkDocs-AI-Hooks/#_17","title":"\u8bf7\u4f5c\u8005\u559d\u676f\u5496\u5561","text":"

      \u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u5b83\u4e00\u4e2a \u2b50 Star\uff01

      \ud83d\udcdd \u672c\u9879\u76ee\u81f4\u529b\u4e8e\u8ba9MkDocs\u6587\u6863\u66f4\u52a0\u667a\u80fd\u5316\u548c\u7528\u6237\u53cb\u597d\u3002\u5982\u6709\u5efa\u8bae\u6216\u60f3\u6cd5\uff0c\u6b22\u8fce\u4ea4\u6d41\uff01","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/","title":"\u76f8\u5bf9\u5730\u5740\u7684\u4e00\u4e9b\u95ee\u9898","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u9488\u5bf9MKdocs\u4e2d\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u4e00\u4e9b\u95ee\u9898

      \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u6587\u6863\u7f51\u7ad9\u65f6\uff0c\u5e38\u5e38\u4f1a\u9047\u5230\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u95ee\u9898\uff0c\u5c24\u5176\u662f\u5728\u56fe\u7247\u3001PDF\u3001\u5176\u4ed6\u9759\u6001\u8d44\u6e90\u7b49\u7684\u5f15\u7528\u4e0a.\u4e0b\u9762\u603b\u7ed3\u4e00\u4e9b\u5e38\u89c1\u573a\u666f\u548c\u6ce8\u610f\u4e8b\u9879\uff1a

      1.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a493 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a3

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#mkdocs","title":"\u9488\u5bf9MKdocs\u4e2d\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u4e00\u4e9b\u95ee\u9898","text":"

      \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u6587\u6863\u7f51\u7ad9\u65f6\uff0c\u5e38\u5e38\u4f1a\u9047\u5230\u76f8\u5bf9\u5730\u5740\u5f15\u7528\u7684\u95ee\u9898\uff0c\u5c24\u5176\u662f\u5728\u56fe\u7247\u3001PDF\u3001\u5176\u4ed6\u9759\u6001\u8d44\u6e90\u7b49\u7684\u5f15\u7528\u4e0a\u3002\u5408\u7406\u4f7f\u7528\u76f8\u5bf9\u5730\u5740\u53ef\u4ee5\u8ba9\u4f60\u7684\u6587\u6863\u5728\u672c\u5730\u9884\u89c8\u548c\u7ebf\u4e0a\u90e8\u7f72\u65f6\u90fd\u80fd\u6b63\u5e38\u663e\u793a\u3002\u4e0b\u9762\u603b\u7ed3\u4e00\u4e9b\u5e38\u89c1\u573a\u666f\u548c\u6ce8\u610f\u4e8b\u9879\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#1","title":"1. \u56fe\u7247\u5f15\u7528","text":"

      \u63a8\u8350\u5199\u6cd5\uff1a

      ![\u56fe\u7247\u63cf\u8ff0](./img/example.png)\n
      ./img/example.png \u8868\u793a\u5f53\u524d Markdown \u6587\u4ef6\u540c\u7ea7\u76ee\u5f55\u4e0b\u7684 img \u6587\u4ef6\u5939\u4e2d\u7684\u56fe\u7247\u3002 \u5982\u679c\u56fe\u7247\u5728\u4e0a\u7ea7\u76ee\u5f55\uff1a../assets/example.png

      \u6ce8\u610f\u4e8b\u9879\uff1a

      • \u8def\u5f84\u533a\u5206\u5927\u5c0f\u5199\uff0c\u786e\u4fdd\u6587\u4ef6\u540d\u548c\u8def\u5f84\u4e00\u81f4\u3002
      • MkDocs \u4f1a\u5c06 docs \u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u539f\u6837\u590d\u5236\u5230\u7ad9\u70b9\u6839\u76ee\u5f55\uff0c\u5f15\u7528\u8def\u5f84\u5e94\u4ee5 docs \u4e3a\u6839\u76ee\u5f55\u8fdb\u884c\u76f8\u5bf9\u5b9a\u4f4d\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#2-pdf","title":"2. PDF \u6587\u4ef6\u5f15\u7528","text":"

      \u5185\u5d4c\u6216\u4e0b\u8f7d PDF\uff1a

      [\u67e5\u770bPDF](./files/example.pdf)\n

      \u6216\u4f7f\u7528 HTML \u65b9\u5f0f\u5185\u5d4c\uff1a

      <embed src=\"./files/example.pdf\" width=\"100%\" height=\"600px\" type=\"application/pdf\">\n

      ./files/example.pdf \u8868\u793a\u5f53\u524d\u6587\u6863\u540c\u7ea7\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002 ../files/example.pdf \u8868\u793a\u4e0a\u7ea7\u76ee\u5f55\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002 ../../files/example.pdf \u8868\u793a\u4e0a\u4e0a\u7ea7\u76ee\u5f55\u7684 files \u6587\u4ef6\u5939\u4e0b\u7684 PDF \u6587\u4ef6\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#3","title":"3. \u8de8\u9875\u9762\u5f15\u7528","text":"

      \u5f15\u7528\u540c\u4e00\u9879\u76ee\u4e0b\u7684\u5176\u4ed6 Markdown \u9875\u9762\uff1a

      [\u8df3\u8f6c\u5230\u5176\u4ed6\u9875\u9762](../otherpage.md)\n

      • MkDocs \u4f1a\u81ea\u52a8\u5c06 .md \u8f6c\u6362\u4e3a .html\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u7528 Markdown \u6587\u4ef6\u540d\u3002
      • \uff08\uff09\u5185\u7684\u8def\u5f84\u662f\u76f8\u5bf9\u4e8e\u5f53\u524d Markdown \u6587\u4ef6\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u53c2\u8003PDF\u6587\u4ef6\u5f15\u7528\u7684\u65b9\u6cd5\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#4","title":"4. \u9759\u6001\u8d44\u6e90\u5f15\u7528","text":"

      \u5982 CSS\u3001JS \u6587\u4ef6\uff1a

      <link rel=\"stylesheet\" href=\"../assets/style.css\">\n<script src=\"../assets/script.js\"></script>\n

      • \u63a8\u8350\u5c06\u9759\u6001\u8d44\u6e90\u653e\u5728 docs/assets \u76ee\u5f55\u4e0b\uff0c\u5f15\u7528\u65f6\u7528\u76f8\u5bf9\u8def\u5f84\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#5","title":"5. \u5e38\u89c1\u95ee\u9898","text":"
      • \u8def\u5f84\u9519\u8bef\u5bfc\u81f4\u8d44\u6e90\u65e0\u6cd5\u52a0\u8f7d\uff1a\u8bf7\u68c0\u67e5\u8def\u5f84\u662f\u5426\u6b63\u786e\u3001\u6587\u4ef6\u662f\u5426\u5b58\u5728\u3001\u5927\u5c0f\u5199\u662f\u5426\u4e00\u81f4\u3002
      • \u672c\u5730\u9884\u89c8\u6b63\u5e38\uff0c\u7ebf\u4e0a\u4e0d\u663e\u793a\uff1a\u6709\u53ef\u80fd\u662f\u8def\u5f84\u5199\u6b7b\u6216\u5927\u5c0f\u5199\u95ee\u9898\uff0c\u5efa\u8bae\u59cb\u7ec8\u7528\u76f8\u5bf9\u8def\u5f84\u3002
      • \u56fe\u7247/\u6587\u4ef6\u8fc7\u5927\u52a0\u8f7d\u6162\uff1a\u53ef\u9002\u5f53\u538b\u7f29\u56fe\u7247\u6216 PDF \u6587\u4ef6\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/Relativeaddress/#_1","title":"\u603b\u7ed3","text":"

      \u5728 MkDocs \u9879\u76ee\u4e2d\uff0c\u6240\u6709\u8d44\u6e90\u7684\u76f8\u5bf9\u8def\u5f84\u90fd\u5e94\u4ee5\u5f53\u524d Markdown \u6587\u4ef6\u4e3a\u57fa\u51c6\uff0c\u786e\u4fdd\u672c\u5730\u548c\u7ebf\u4e0a\u90fd\u80fd\u6b63\u786e\u8bbf\u95ee\u3002\u5efa\u8bae\u7edf\u4e00\u8d44\u6e90\u7ba1\u7406\u76ee\u5f55\u7ed3\u6784\uff0c\u4fbf\u4e8e\u7ef4\u62a4\u548c\u5f15\u7528\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/","title":"\u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97

      \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u7f51\u7ad9\u65f6\uff0c\u4e3a\u4e86\u63d0\u9ad8\u8bbf\u95ee\u901f\u5ea6\uff0c\u6211\u4eec\u53ef\u4ee5\u91c7\u53d6\u4ee5\u4e0b\u4e00\u4e9b\u63aa\u65bd\uff1a 1.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a257 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a6

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#_1","title":"\u52a0\u901f\u7f51\u7ad9\u8bbf\u95ee\u7684\u4e00\u4e9b\u5fc3\u5f97","text":"

      \u5728\u4f7f\u7528 MkDocs \u6784\u5efa\u7f51\u7ad9\u65f6\uff0c\u4e3a\u4e86\u63d0\u9ad8\u8bbf\u95ee\u901f\u5ea6\uff0c\u6211\u4eec\u53ef\u4ee5\u91c7\u53d6\u4ee5\u4e0b\u4e00\u4e9b\u63aa\u65bd\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#1","title":"1. \u4f18\u5316\u56fe\u7247","text":"

      \u4f7f\u7528\u5408\u9002\u7684\u56fe\u7247\u683c\u5f0f\uff0c\u5982 WebP\u3001JPEG2000 \u7b49\uff0c\u51cf\u5c11\u56fe\u7247\u6587\u4ef6\u5927\u5c0f\uff0c\u4ece\u800c\u52a0\u5feb\u52a0\u8f7d\u901f\u5ea6\u3002

      \u53ef\u4ee5\u4f7f\u7528\u5728\u7ebf\u5de5\u5177\u8fdb\u884c\u56fe\u7247\u538b\u7f29\uff0c\u5982\uff1a

      • freeconvert
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#2-jscss-cdn","title":"2. JS/CSS\u4f7f\u7528 CDN","text":"

      \u4f7f\u7528\u5185\u5bb9\u5206\u53d1\u7f51\u7edc\uff08CDN\uff09\u6765\u52a0\u901f\u7f51\u7ad9\u7684\u8bbf\u95ee\uff0c\u5c06\u9759\u6001\u8d44\u6e90\uff08\u5982\u56fe\u7247\u3001CSS\u3001JS\uff09\u7f13\u5b58\u5230\u5168\u7403\u5404\u5730\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u7528\u6237\u5c31\u8fd1\u8bbf\u95ee\uff0c\u51cf\u5c11\u5ef6\u8fdf\u3002

      \u8fd9\u91cc\u63a8\u8350

      • jsDelivr CDN \u52a0\u901f GitHub \u6587\u4ef6
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/accelerate/#3","title":"3.\u52a0\u901f\u672c\u5730\u6e32\u67d3","text":"

      \u4f18\u5316 git \u63d2\u4ef6\u7684 enabled \u914d\u7f6e \u6bd4\u5982\u6211\u914d\u7f6e\u91cc\u6709 git-revision-date-localized \u548c git-committers \u63d2\u4ef6\uff0c\u8fd9\u4e9b\u63d2\u4ef6\u4f1a\u5728\u6bcf\u6b21\u6e32\u67d3\u65f6\u8bfb\u53d6\u6240\u6709\u6587\u4ef6\u7684 git \u5386\u53f2\uff0c\u5bfc\u81f4\u672c\u5730\u9884\u89c8\u53d8\u6162\u3002 \u63a8\u8350\u505a\u6cd5\u662f\u5728\u672c\u5730\u5f00\u53d1\u65f6\u7981\u7528\u5b83\u4eec\uff0c\u4ec5\u5728 CI/CD \u6216\u7ebf\u4e0a\u6784\u5efa\u65f6\u542f\u7528\u3002 \u5177\u4f53\u5199\u6cd5\u5982\u4e0b\uff1a

      plugins:\n  - git-revision-date-localized:\n      enabled: !ENV [CI, false]  # \u53ea\u6709\u5728CI\u73af\u5883\u53d8\u91cf\u4e3atrue\u65f6\u624d\u542f\u7528\n  - git-committers:\n      enabled: !ENV [CI, false]\n

      \u68c0\u9a8c\u52a0\u901f\u6548\u679c\u662f\u5426\u751f\u6548\u53ef\u4ee5\u4f7f\u7528lighthouse\u8fdb\u884c\u6d4b\u8bd5\uff0c\u5177\u4f53\u53ef\u4ee5\u53c2\u8003\uff1a

      \u4f7f\u7528lighthouse\u8fdb\u884c\u7f51\u7ad9\u6027\u80fd\u6d4b\u8bd5

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/","title":"\u80cc\u666f\u7279\u6548","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      Note

      \u4ee5\u4e0b\u4ee3\u7801\u5747\u5728[\u4ee3\u7801]\u4e0b\u590d\u5236\u7c98\u8d34

      // \u5728LocalStorage\u4e2d\u8bbe\u7f6e\u4e0d\u663e\u793a\u96ea\u82b1\u6548\u679c\u7684\u6807\u5fd7 localStorage.

      Note

      \u4ee5\u4e0b\u4ee3\u7801\u5747\u5728docs/javascripts/extra.js\u4e0b\u590d\u5236\u7c98\u8d34

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_1","title":"\u96ea\u82b1\u2744\ufe0f","text":"
      //\u96ea\u82b1\nconst fps = 30;\nconst mspf = Math.floor(1000 / fps) ; \n\nlet width = window.innerWidth || document.documentElement.clientWidth;\nlet height = window.innerHeight || document.documentElement.clientHeight;\nlet canvas;\nwindow.addEventListener('resize', () => {\n  width = window.innerWidth || document.documentElement.clientWidth;\n  height = window.innerHeight || document.documentElement.clientHeight;\n  if (canvas) {\n    canvas.width = width;\n    canvas.height = height;\n  }\n});\n\nlet particles = [];\nlet wind = [0, 0];\nlet cursor = [0, 0];\n\nfunction velocity(r) {\n  return 70 / r + 30;\n}\n\nfunction sine_component(h, a) {\n  return [2 * Math.PI / h, Math.random() * a, Math.random() * 2 * Math.PI]; // [frequency, amplitude, phase]\n}\n\nfunction calc_sine(components, x) {\n  let sum = 0;\n  for (let i = 0; i < components.length; i++) {\n    const [f, a, p] = components[i];\n    sum += Math.sin(x * f + p) * a;\n  }\n  return sum;\n}\n\nfunction gen_particle() {\n  let r = Math.random() * 4 + 1;\n  return {\n    radius: r,\n    x: Math.random() * width,\n    y: -r,\n    opacity: Math.random(),\n    sine_components: [sine_component(height, 3), sine_component(height / 2, 2), sine_component(height / 5, 1), sine_component(height / 10, 0.5)],\n  };\n}\n\nfunction update_pos(dt) {\n  const n = particles.length;\n  for (let i = 0; i < n; i++) {\n    const v = velocity(particles[i].radius);\n    particles[i].x += calc_sine(particles[i].sine_components, particles[i].y) * v / 5 * dt;\n    particles[i].y += v * dt;\n\n    // const dist = Math.hypot(particles[i].x - cursor[0], particles[i].y - cursor[1]) + 1;\n    // particles[i].x += wind[0] * dt / dist\n    // particles[i].y += wind[1] * dt / dist;\n\n    if (particles[i].y - particles[i].radius > height) {\n      particles[i] = gen_particle();  \n    }\n  }\n}\n\nlet context_cache;\nfunction get_context() {\n  if (context_cache)\n    return context_cache;\n\n  canvas = document.createElement('canvas');\n  canvas.id = 'snow-canvas';\n  canvas.width = width;\n  canvas.height = height;\n  canvas.style = 'position: fixed; top: 0; left: 0; overflow: hidden; pointer-events: none; z-index: 256;';\n  if ((document.documentElement.dataset.darkreaderMode || \"\").startsWith('filter'))\n    canvas.style.filter = 'invert(1)';\n  document.body.appendChild(canvas);\n\n  context_cache = canvas.getContext('2d');\n  return context_cache;\n}\n\nfunction draw() {\n  const ctx = get_context();\n\n  ctx.clearRect(0, 0, width, height);\n\n  const n = particles.length;\n  for (let i = 0; i < n; i++) {\n    const p = particles[i];\n    ctx.fillStyle = `rgba(255, 255, 255, ${p.opacity})`;\n    ctx.shadowColor = '#80EDF7';\n    ctx.shadowBlur = 7;\n    ctx.beginPath();\n    ctx.arc(p.x, p.y, p.radius, 0, 2*Math.PI);\n    ctx.fill();\n  }\n}\n\nlet focused = true;\nlet disabled = false;\nlet lastTime = performance.now();\nconst requestFrame = () => setTimeout(loop, mspf);\nfunction loop() {\n  const dt = (performance.now() - lastTime) / 1000;\n\n  if (particles.length < 120 && Math.random() < 0.1) {\n    particles.push(gen_particle());\n  }\n\n  update_pos(dt);\n  draw();\n\n  lastTime = performance.now();\n  if (focused && !disabled)\n    requestFrame();\n}\n\n\nwindow.addEventListener('focus', () => {\n  console.log('snow start');\n  focused = true;\n  lastTime = performance.now();\n  requestFrame();\n});\n\nwindow.addEventListener('blur', () => {\n  console.log('snow stop');\n  focused = false;\n});\n\nwindow.addEventListener('keydown', e => {\n  if (e.ctrlKey && e.key == 's') {\n    e.preventDefault();\n    disabled = !disabled;\n    if (disabled) {\n      canvas.style.display = 'none';\n    } else {\n      canvas.style.display = 'block';\n      lastTime = performance.now();\n      requestFrame();\n    }\n  }\n});\n\nrequestFrame();\n//\u96ea\u82b1\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_2","title":"\u6a31\u82b1\ud83c\udf38","text":"
      //\u6a31\u82b1\nSakura.prototype.draw = function (cxt) {\n    cxt.save(); var xc = 40 * this.s / 4; cxt.translate(this.x, this.y); cxt.rotate(this.r); cxt.drawImage(img, 0, 0, 40 * this.s, 40 * this.s)\n    cxt.restore();\n}\nSakura.prototype.update = function () { this.x = this.fn.x(this.x, this.y); this.y = this.fn.y(this.y, this.y); this.r = this.fn.r(this.r); if (this.x > window.innerWidth || this.x < 0 || this.y > window.innerHeight || this.y < 0) { this.r = getRandom('fnr'); if (Math.random() > 0.4) { this.x = getRandom('x'); this.y = 0; this.s = getRandom('s'); this.r = getRandom('r'); } else { this.x = window.innerWidth; this.y = getRandom('y'); this.s = getRandom('s'); this.r = getRandom('r'); } } }\nSakuraList = function () { this.list = []; }\nSakuraList.prototype.push = function (sakura) { this.list.push(sakura); }\nSakuraList.prototype.update = function () { for (var i = 0, len = this.list.length; i < len; i++) { this.list[i].update(); } }\nSakuraList.prototype.draw = function (cxt) { for (var i = 0, len = this.list.length; i < len; i++) { this.list[i].draw(cxt); } }\nSakuraList.prototype.get = function (i) { return this.list[i]; }\nSakuraList.prototype.size = function () { return this.list.length; }\nfunction getRandom(option) {\n    var ret, random; switch (option) {\n        case 'x': ret = Math.random() * window.innerWidth; break; case 'y': ret = Math.random() * window.innerHeight; break; case 's': ret = Math.random(); break; case 'r': ret = Math.random() * 6; break; case 'fnx': random = -0.5 + Math.random() * 1; ret = function (x, y) { return x + 0.5 * random - 1.7; }; break; case 'fny': random = 1.5 + Math.random() * 0.7\n            ret = function (x, y) { return y + random; }; break; case 'fnr': random = Math.random() * 0.03; ret = function (r) { return r + random; }; break;\n    }\n    return ret;\n}\nfunction startSakura() {\n    requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame; var canvas = document.createElement('canvas'), cxt; staticx = true; canvas.height = window.innerHeight; canvas.width = window.innerWidth; canvas.setAttribute('style', 'position: fixed;left: 0;top: 0;pointer-events: none;'); canvas.setAttribute('id', 'canvas_sakura'); document.getElementsByTagName('body')[0].appendChild(canvas); cxt = canvas.getContext('2d'); var sakuraList = new SakuraList(); for (var i = 0; i < 50; i++) { var sakura, randomX, randomY, randomS, randomR, randomFnx, randomFny; randomX = getRandom('x'); randomY = getRandom('y'); randomR = getRandom('r'); randomS = getRandom('s'); randomFnx = getRandom('fnx'); randomFny = getRandom('fny'); randomFnR = getRandom('fnr'); sakura = new Sakura(randomX, randomY, randomS, randomR, { x: randomFnx, y: randomFny, r: randomFnR }); sakura.draw(cxt); sakuraList.push(sakura); }\n    stop = requestAnimationFrame(function () { cxt.clearRect(0, 0, canvas.width, canvas.height); sakuraList.update(); sakuraList.draw(cxt); stop = requestAnimationFrame(arguments.callee); })\n}\nwindow.onresize = function () { var canvasSnow = document.getElementById('canvas_snow'); }\nimg.onload = function () { startSakura(); }\n//\u6a31\u82b1\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_3","title":"\u7ebf\u6761","text":"
      !function() {\n    function o(w, v, i) {\n        return w.getAttribute(v) || i\n    }\n    function j(i) {\n        return document.getElementsByTagName(i)\n    }\n    function l() {\n        var i = j(\"script\"),\n        w = i.length,\n        v = i[w - 1];\n        return {\n            l: w,\n            z: o(v, \"zIndex\", -1),\n            o: o(v, \"opacity\", 0.5),\n            c: o(v, \"color\", \"0,0,0\"),\n            n: o(v, \"count\", 99)\n        }\n    }\n    function k() {\n        r = u.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n        n = u.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n    }\n    function b() {\n        e.clearRect(0, 0, r, n);\n        var w = [f].concat(t);\n        var x, v, A, B, z, y;\n        t.forEach(function(i) {\n            i.x += i.xa,\n            i.y += i.ya,\n            i.xa *= i.x > r || i.x < 0 ? -1 : 1,\n            i.ya *= i.y > n || i.y < 0 ? -1 : 1,\n            e.fillRect(i.x - 0.5, i.y - 0.5, 1, 1);\n            for (v = 0; v < w.length; v++) {\n                x = w[v];\n                if (i !== x && null !== x.x && null !== x.y) {\n                    B = i.x - x.x,\n                    z = i.y - x.y,\n                    y = B * B + z * z;\n                    y < x.max && (x === f && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), A = (x.max - y) / x.max, e.beginPath(), e.lineWidth = A / 2, e.strokeStyle = \"rgba(\" + s.c + \",\" + (A + 0.2) + \")\", e.moveTo(i.x, i.y), e.lineTo(x.x, x.y), e.stroke())\n                }\n            }\n            w.splice(w.indexOf(i), 1)\n        }),\n        m(b)\n    }\n    var u = document.createElement(\"canvas\"),\n    s = l(),\n    c = \"c_n\" + s.l,\n    e = u.getContext(\"2d\"),\n    r,\n    n,\n    m = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||\n    function(i) {\n        window.setTimeout(i, 1000 / 45)\n    },\n    a = Math.random,\n    f = {\n        x: null,\n        y: null,\n        max: 20000\n    };\n    u.id = c;\n    u.style.cssText = \"position:fixed;top:0;left:0;z-index:\" + s.z + \";opacity:\" + s.o;\n    j(\"body\")[0].appendChild(u);\n    k(),\n    window.onresize = k;\n    window.onmousemove = function(i) {\n        i = i || window.event,\n        f.x = i.clientX,\n        f.y = i.clientY\n    },\n    window.onmouseout = function() {\n        f.x = null,\n        f.y = null\n    };\n    for (var t = [], p = 0; s.n > p; p++) {\n        var h = a() * r,\n        g = a() * n,\n        q = 2 * a() - 1,\n        d = 2 * a() - 1;\n        t.push({\n            x: h,\n            y: g,\n            xa: q,\n            ya: d,\n            max: 6000\n        })\n    }\n    setTimeout(function() {\n        b()\n    },\n    100)\n} ();\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/backgroud/#_4","title":"\u7c92\u5b50","text":"
      /*\u80cc\u666f*/\nwindow.onload = function () {\n    //\u5b9a\u4e49body\u7684margin\u7531\u9ed8\u8ba4\u503c8px->0px\n    document.body.style.margin = \"0\";\n    document.body.style.background = \"255,255,255\";\n    //\u521b\u5efacanvas\u753b\u5e03\n    document.body.appendChild(document.createElement('canvas'));\n    var canvas = document.querySelector('canvas'),\n        ctx = canvas.getContext('2d') //ctx\u8fd4\u56de\u4e00\u4e2a\u5728canvas\u4e0a\u753b\u56fe\u7684api/dom\n    canvas.width = window.innerWidth;\n    canvas.height = window.innerHeight;\n    canvas.style.position = 'fixed';\n    ctx.lineWidth = .3;\n    ctx.strokeStyle = (new Color(150)).style;\n    //\u5b9a\u4e49\u9f20\u6807\u8986\u76d6\u8303\u56f4\n    var mousePosition = {\n        x: 30 * canvas.width / 100,\n        y: 30 * canvas.height / 100\n    };\n    var dots = {\n        nb: 1000,//Dot\u7684\u603b\u6570\n        distance: 50,\n        d_radius: 100,\n        array: []\n    };\n    //\u521b\u5efa\u989c\u8272\u7c7b\uff0cColor\u7c7b\u8fd4\u56de\u5b57\u7b26\u4e32\u578brgba\uff08*,*,*,.8\uff09\n    function mixComponents(comp1, weight1, comp2, weight2) {\n        return (comp1 * weight1 + comp2 * weight2) / (weight1 + weight2);\n    }\n    function averageColorStyles(dot1, dot2) {\n        var color1 = dot1.color,\n            color2 = dot2.color;\n\n        var r = mixComponents(color1.r, dot1.radius, color2.r, dot2.radius),\n            g = mixComponents(color1.g, dot1.radius, color2.g, dot2.radius),\n            b = mixComponents(color1.b, dot1.radius, color2.b, dot2.radius);\n        return createColorStyle(Math.floor(r), Math.floor(g), Math.floor(b));\n    }\n    function colorValue(min) {\n        return Math.floor(Math.random() * 255 + min);\n    }\n    function createColorStyle(r, g, b) {\n        return 'rgba(' + r + ',' + g + ',' + b + ', 0.8)';\n    }\n    function Color(min) {\n        min = min || 0;\n        this.r = colorValue(min);\n        this.g = colorValue(min);\n        this.b = colorValue(min);\n        this.style = createColorStyle(this.r, this.g, this.b);\n    }\n    //\u521b\u5efaDot\u7c7b\u4ee5\u53ca\u4e00\u7cfb\u5217\u65b9\u6cd5\n    function Dot() {\n        this.x = Math.random() * canvas.width;\n        this.y = Math.random() * canvas.height;\n\n        this.vx = -.5 + Math.random();\n        this.vy = -.5 + Math.random();\n\n        this.radius = Math.random() * 2;\n\n        this.color = new Color();\n    }\n\n    Dot.prototype = {\n        draw: function () {\n            ctx.beginPath();\n            ctx.fillStyle = this.color.style;\n            ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, false);\n            ctx.fill();\n        }\n    };\n    function moveDots() {//Dot\u5bf9\u8c61\u7684\u79fb\u52a8\n        for (i = 0; i < dots.nb; i++) {\n\n            var dot = dots.array[i];\n\n            if (dot.y < 0 || dot.y > canvas.height) {\n                dot.vx = dot.vx;\n                dot.vy = - dot.vy;\n            }\n            else if (dot.x < 0 || dot.x > canvas.width) {\n                dot.vx = - dot.vx;\n                dot.vy = dot.vy;\n            }\n            dot.x += dot.vx;\n            dot.y += dot.vy;\n        }\n    }\n    function connectDots() {//DOt\u5bf9\u8c61\u7684\u8fde\u63a5\n        for (i = 0; i < dots.nb; i++) {\n            for (j = i; j < dots.nb; j++) {\n                i_dot = dots.array[i];\n                j_dot = dots.array[j];\n\n                if ((i_dot.x - j_dot.x) < dots.distance && (i_dot.y - j_dot.y) < dots.distance && (i_dot.x - j_dot.x) > - dots.distance && (i_dot.y - j_dot.y) > - dots.distance) {\n                    if ((i_dot.x - mousePosition.x) < dots.d_radius && (i_dot.y - mousePosition.y) < dots.d_radius && (i_dot.x - mousePosition.x) > - dots.d_radius && (i_dot.y - mousePosition.y) > - dots.d_radius) {\n                        ctx.beginPath();\n                        ctx.strokeStyle = averageColorStyles(i_dot, j_dot);\n                        ctx.moveTo(i_dot.x, i_dot.y);\n                        ctx.lineTo(j_dot.x, j_dot.y);\n                        ctx.stroke();//\u7ed8\u5236\u5b9a\u4e49\u7684\u8def\u7ebf\n                        ctx.closePath();//\u521b\u5efa\u4ece\u5f53\u524d\u70b9\u56de\u5230\u8d77\u59cb\u70b9\u7684\u8def\u5f84\n                    }\n                }\n            }\n        }\n    }\n    function createDots() {//\u521b\u5efanb\u4e2aDot\u5bf9\u8c61\n        for (i = 0; i < dots.nb; i++) {\n            dots.array.push(new Dot());\n        }\n    }\n    function drawDots() {//\u5f15\u7528Dot\u539f\u578b\u94fe\uff0c\u4f7f\u7528draw\u65b9\u6cd5\uff0c\u5728canvas\u4e0a\u753b\u51faDot\u5bf9\u8c61\n        for (i = 0; i < dots.nb; i++) {\n            var dot = dots.array[i];\n            dot.draw();\n        }\n    }\n    function animateDots() {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);//\u6e05\u9664\u753b\u5e03\uff0c\u5426\u5219\u7ebf\u6761\u4f1a\u8fde\u5728\u4e00\u8d77\n        moveDots();\n        connectDots();\n        drawDots();\n        requestAnimationFrame(animateDots);\n    }\n    createDots();//\u4f7f\u7528\u521b\u5efaDot\u7c7b\u51fd\u6570\n    requestAnimationFrame(animateDots);//\u4f7f\u7528canvas\u72ec\u6709\u768460Hz\u5237\u65b0\u5c4f\u5e55\u753b\u5e03\u7684\u65b9\u6cd5\n\n    document.querySelector('canvas').addEventListener('mousemove', function (e) {\n        mousePosition.x = e.pageX;\n        mousePosition.y = e.pageY;\n    })\n\n    document.querySelector('canvas').addEventListener('mouseleave', function (e) {//\u9f20\u6807\u79bb\u5f00\u65f6\uff0c\u8fde\u63a5\u81ea\u52a8\u8fd4\u56de\u5230\u753b\u5e03\u4e2d\u5fc3\n        mousePosition.x = canvas.width / 2;\n        mousePosition.y = canvas.height / 2;\n    })\n\n}\n\n/*\u80cc\u666fend*/\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/","title":"\u9875\u811a\u8bbe\u7f6e","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u9875\u811a\u8bbe\u7f6e

      MkDocs \u652f\u6301\u81ea\u5b9a\u4e49\u9875\u811a.[\u56fe\u7247\uff1a]

      \u5728docs/overrides/partials/footer.html\u4e2d\uff08\u6ca1\u6709\u8be5\u6587\u4ef6\u65f6\uff0c\u521b\u5efafooter.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a60 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a89

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/#_1","title":"\u9875\u811a\u8bbe\u7f6e","text":"

      MkDocs \u652f\u6301\u81ea\u5b9a\u4e49\u9875\u811a\u3002

      \u5728docs/overrides/partials/footer.html\u4e2d\uff08\u6ca1\u6709\u8be5\u6587\u4ef6\u65f6\uff0c\u521b\u5efafooter.html\u6587\u4ef6\uff09\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a

      <!-- Footer -->\n<footer class=\"md-footer\">\n\n  <!-- Link to previous and/or next page -->\n  {% if \"navigation.footer\" in features %}\n    {% if page.previous_page or page.next_page %}\n      {% if page.meta and page.meta.hide %}\n        {% set hidden = \"hidden\" if \"footer\" in page.meta.hide %}\n      {% endif %}\n      <nav\n        class=\"md-footer__inner md-grid\"\n        aria-label=\"{{ lang.t('footer') }}\"\n        {{ hidden }}\n      >\n\n        <!-- Link to previous page -->\n        {% if page.previous_page %}\n          {% set direction = lang.t(\"footer.previous\") %}\n          <a\n            href=\"{{ page.previous_page.url | url }}\"\n            class=\"md-footer__link md-footer__link--prev\"\n            aria-label=\"{{ direction }}: {{ page.previous_page.title | e }}\"\n          >\n            <div class=\"md-footer__button md-icon\">\n              {% set icon = config.theme.icon.previous or \"material/arrow-left\" %}\n              {% include \".icons/\" ~ icon ~ \".svg\" %}\n            </div>\n            <div class=\"md-footer__title\">\n              <span class=\"md-footer__direction\">\n                {{ direction }}\n              </span>\n              <div class=\"md-ellipsis\">\n                {{ page.previous_page.title }}\n              </div>\n            </div>\n\n          </a>\n        {% endif %}\n\n        <!-- Link to next page -->\n        {% if page.next_page %}\n          {% set direction = lang.t(\"footer.next\") %}\n          <a\n            href=\"{{ page.next_page.url | url }}\"\n            class=\"md-footer__link md-footer__link--next\"\n            aria-label=\"{{ direction }}: {{ page.next_page.title | e }}\"\n          >\n            <div class=\"md-footer__title\">\n              <span class=\"md-footer__direction\">\n                {{ direction }}\n              </span>\n              <div class=\"md-ellipsis\">\n                {{ page.next_page.title }}\n              </div>\n            </div>\n            <div class=\"md-footer__button md-icon\">\n              {% set icon = config.theme.icon.next or \"material/arrow-right\" %}\n              {% include \".icons/\" ~ icon ~ \".svg\" %}\n            </div>\n          </a>\n        {% endif %}\n      </nav>\n    {% endif %}\n  {% endif %}\n\n  <!-- Further information -->\n  <div class=\"md-footer-meta md-typeset\">\n    <div class=\"md-footer-meta__inner md-grid\">\n      {% include \"partials/copyright.html\" %}\n\n    <font color=\"#B9B9B9\">\n      <div class=\"footer-visit-count\" style=\"display: flex; justify-content: center; align-items: center;\">\n    \u672c\u7ad9\u8bbf\u95ee\u91cf\uff1a<script async src=\"//finicounter.eu.org/finicounter.js\"></script>\n    <span id=\"finicount_views\"></span>    &nbsp;|&nbsp;\n    <footer>\n      <a href=\"https://icp.gov.moe/?keyword=20230640\" target=\"_blank\">\u840cICP\u590720230640\u53f7</a>\n    </footer>\n  </div>\n      </font>\n\n      <style>\n        .footer-visit-count {\n            height: fit-content;\n            min-height: 55px; /* \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u8c03\u6574\u6b64\u9ad8\u5ea6 */\n        }\n        </style>\n      {% if config.extra.social %}\n        {% include \"partials/social.html\" %}\n      {% endif %}\n    </div>\n  </div>\n</footer>\n

      \u9ad8\u4eae\u90e8\u5206\u81ea\u884c\u4fee\u6539\u5373\u53ef

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/footer/#_2","title":"\u9875\u811a\u7248\u6743\u8bbe\u7f6e","text":"

      mkdocs.yml\u4e2d\u6dfb\u52a0\uff1a

      copyright: Copyright &copy; 2022~2025 Wcowin # \u5de6\u4e0b\u89d2\u7684\u7248\u6743\u58f0\u660e\n

      \u5982\u679c\u60f3\u5220\u9664\u9875\u811a\u663e\u793a\u201cMade with Material for MkDocs\u201d(\u4e0d\u5efa\u8bae)

      extra:\n  generator: false  #\u5220\u9664\u9875\u811a\u663e\u793a\u201c\u4f7f\u7528 MkDocs \u6750\u6599\u5236\u9020\u201d\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/header/","title":"\u6dfb\u52a0\u9876\u90e8\u516c\u544a\u680f","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      png]

      docs/overrides\u4e0b\u65b0\u5efamain.html\u6587\u4ef6 \u6811\u72b6\u7ed3\u6784\u5982\u4e0b: [\u4ee3\u7801]`[\u4ee3\u7801]`[\u4ee3\u7801]

      \u5728main.

      docs/overrides\u4e0b\u65b0\u5efamain.html \uff0c\u9488\u5bf9main.html\u6587\u4ef6 \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:

      $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

      {#-\n    This file was automatically generated - do not edit\n  -#}\n  {% extends \"base.html\" %}\n  {% block extrahead %}\n    <link rel=\"stylesheet\" href=\"{{ 'assets/stylesheets/custom.00c04c01.min.css' | url }}\">\n  {% endblock %}\n  {% block announce %}\n     Follow <strong>@Wcowin</strong> on\n    <a rel=\"me\" href=\"https://space.bilibili.com/1407028951?spm_id_from=333.1007.0.0\">\n      <span class=\"twemoji bilibili\">\n        {% include \".icons/fontawesome/brands/bilibili.svg\" %}\n      </span>\n      <strong>Bilibili</strong>\n    </a>\n    and\n    <a href=\"https://twitter.com/Wcowin_\">\n      <span class=\"twemoji twitter\">\n        {% include \".icons/fontawesome/brands/twitter.svg\" %}\n      </span>\n      <strong>Twitter</strong>\n    </a>\n  {% endblock %}\n  {% block scripts %}\n    {{ super() }}\n    <script src=\"{{ 'assets/javascripts/custom.9458f965.min.js' | url }}\"></script>\n  {% endblock %}\n

      \u5728main.html \u91cc\u81ea\u884c\u4fee\u6539\u5373\u53ef

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/","title":"\u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe","text":"

      \u590d\u5236\u540e\u5728\u9700\u8981\u6dfb\u52a0\u53cb\u94fe\u7684.md \u6587\u4ef6\u9875\u9762\u7c98\u8d34\u5373\u53ef

      <div class=\"post-body\">\n  <div id=\"links\">\n    <style>\n      /* \u7528\u4e8e\u5927\u5c4f\u5e55\u548c\u5c0f\u5c4f\u5e55\u7684\u901a\u7528\u6837\u5f0f */\n      .card {\n        width: 45%;\n        font-size: 1rem;\n        padding: 10px 20px;\n        border-radius: 4px;\n        transition-duration: 0.15s;\n        margin-bottom: 1rem;\n        display: flex;\n      }\n      .card:nth-child(odd) {\n        float: left;\n      }\n      .card:nth-child(even) {\n        float: right;\n      }\n      .card:hover {\n        transform: scale(1.1);\n        box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);\n      }\n      .card a {\n        border: none;\n      }\n      .card .ava {\n        width: 3rem !important;\n        height: 3rem !important;\n        margin: 0 !important;\n        margin-right: 1em !important;\n        border-radius: 4px;\n      }\n      .card .card-header {\n        font-style: italic;\n        overflow: hidden;\n        width: 100%;\n      }\n      .card .card-header a {\n        font-style: normal;\n        color: #608dbd;\n        font-weight: bold;\n        text-decoration: none;\n      }\n      .card .card-header a:hover {\n        color: #d480aa;\n        text-decoration: none;\n      }\n      .card .card-header .info {\n        font-style: normal;\n        color: #a3a3a3;\n        font-size: 14px;\n        min-width: 0;\n        overflow: hidden;\n        white-space: nowrap;\n      }\n      /* \u5a92\u4f53\u67e5\u8be2\uff1a\u5c0f\u5c4f\u5e55 */\n      @media (max-width: 768px) {\n        .card {\n          width: 100%; /* \u5728\u5c0f\u5c4f\u5e55\u4e0a\u663e\u793a\u4e3a\u5355\u5217 */\n          float: none; /* \u6e05\u9664\u6d6e\u52a8 */\n        }\n      }\n    </style>\n    <div class=\"links-content\">\n      <div class=\"link-navigation\">\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://cn.mcecy.com/image/20231006/a05f708fb7b0426e7a5786669d5b1386.png\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://wcowin.work/ \" target=\"\u201c_blank\u201d\"\n                >Wcowin\u2019s blog</a\n              >\n            </div>\n            <div class=\"info\">\u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002</div>\n          </div>\n        </div>\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://twitter.com/\" target=\"\u201c_blank\u201d\">Twitter</a>\n            </div>\n            <div class=\"info\">\u793e\u4ea4\u5206\u4eab\u5e73\u53f0</div>\n          </div>\n        </div>\n        <div class=\"card\">\n          <img\n            class=\"ava\"\n            src=\"https://cn.mcecy.com/image/20231012/d96b912437fb0bec0d282dfe734b1d9b.jpeg\"\n          />\n          <div class=\"card-header\">\n            <div>\n              <a href=\"https://macapp.org.cn/\" target=\"\u201c_blank\u201d\">Macapp</a>\n            </div>\n            <div class=\"info\">\u4e00\u4e2a\u4e13\u6ce8\u4e8e\u5206\u4eabMac\u8d44\u6e90\u7684\u9891\u9053</div>\n          </div>\n        </div>\n\n      </div>\n    </div>\n  </div>\n</div>\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_1","title":"\u5982\u4f55\u52a0\u5165\u53cb\u94fe","text":"
      <div class=\"card\">\n  <img class=\"ava\" src=\"{avatarurl}\" />\n  <div class=\"card-header\">\n    <div>\n      <a href=\"{link}\" target=\"_blank\">{name}</a>\n    </div>\n    <div class=\"info\">{description}</div>\n  </div>\n</div>\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_2","title":"\u793a\u4f8b","text":"
      <div>\n  <div class=\"links-content\"> \n   <div class=\"link-navigation\"> \n    <div class=\"card\"> \n     <img class=\"ava\" src=\"https://pic4.zhimg.com/80/v2-a0456a5f527c1923f096759f2926012f_1440w.webp\" /> \n     <div class=\"card-header\"> \n      <div> \n       <a href=\"https://wcowin.work/ \" target=\u201c_blank\u201d>Wcowin\u2019s blog</a> \n      </div> \n      <div class=\"info\">\n       \u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002\n      </div> \n     </div> \n    </div> \n</div>\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/linktech/#_3","title":"\u6548\u679c","text":"Wcowin\u2019s blog \u8fd9\u662f\u4e00\u4e2a\u5206\u4eab\u6280\u672f\u7684\u5c0f\u7ad9\u3002","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/","title":"\u4e3a\u7f51\u7ad9\u6dfb\u52a0\u8bc4\u8bba\u7cfb\u7edf","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u9879\u76ee\u6df1\u53d7 utterances \u7684\u542f\u53d1.\u6240\u6709\u6570\u636e\u5747\u50a8\u5b58\u5728 GitHub Discussions \u4e2d.:octocat:

      \u652f\u6301\u81ea\u5b9a\u4e49\u4e3b\u9898.\ud83d\udd27 \u81ea\u52a8\u4ece GitHub \u62c9\u53d6\u65b0\u8bc4\u8bba\u4e0e\u7f16\u8f91.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a389 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a116

      \u5b98\u65b9\u6587\u6863\uff1aAdding a comment system

      \u8fd9\u91cc\u6211\u540c\u6837\u63a8\u8350giscus

      \u5229\u7528 GitHub Discussions \u5b9e\u73b0\u7684\u8bc4\u8bba\u7cfb\u7edf\uff0c\u8ba9\u8bbf\u5ba2\u501f\u52a9 GitHub \u5728\u4f60\u7684\u7f51\u7ad9\u4e0a\u7559\u4e0b\u8bc4\u8bba\u548c\u53cd\u5e94\u5427\uff01\u672c\u9879\u76ee\u6df1\u53d7 utterances \u7684\u542f\u53d1\u3002

      • \u5f00\u6e90\u3002\ud83c\udf0f
      • \u65e0\u8ddf\u8e2a\uff0c\u65e0\u5e7f\u544a\uff0c\u6c38\u4e45\u514d\u8d39\u3002\ud83d\udce1 \ud83d\udeab
      • \u65e0\u9700\u6570\u636e\u5e93\u3002\u6240\u6709\u6570\u636e\u5747\u50a8\u5b58\u5728 GitHub Discussions \u4e2d\u3002:octocat:
      • \u652f\u6301\u81ea\u5b9a\u4e49\u4e3b\u9898\uff01\ud83c\udf17
      • \u652f\u6301\u591a\u79cd\u8bed\u8a00\u3002\ud83c\udf10
      • \u9ad8\u53ef\u914d\u7f6e\u6027\u3002\ud83d\udd27
      • \u81ea\u52a8\u4ece GitHub \u62c9\u53d6\u65b0\u8bc4\u8bba\u4e0e\u7f16\u8f91\u3002\ud83d\udd03
      • \u53ef\u81ea\u5efa\u670d\u52a1\uff01\ud83e\udd33

      \u8a00\u5f52\u6b63\u4f20

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_1","title":"\u7b2c\u4e00\u6b65","text":"

      mkdocs.yml\u4e2d\u6dfb\u52a0custom_dir

      theme:\n  name: material\n  custom_dir: docs/overrides  #\u4e3b\u8981\u662f\u8fd9\u4e00\u884c\n
      \u53c2\u8003\u4e0b\u56fe\u65b0\u5efaoverrides\u6587\u4ef6\uff0c\u5728\u6b64\u6587\u4ef6\u4e0b\u53c2\u8003\u4e0b\u56fe\u65b0\u5efa\u8986\u76d6html\u6587\u4ef6 \u6811\u72b6\u7ed3\u6784\u5982\u4e0b:
      $ tree -a\n.\n\u251c\u2500\u2500 .github\n\u2502   \u251c\u2500\u2500 .DS_Store\n\u2502   \u2514\u2500\u2500 workflows\n\u2502       \u2514\u2500\u2500 PublishMySite.yml\n\u251c\u2500\u2500 docs\n\u2502   \u2514\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500overrides\n\u2502       \u2514\u2500\u2500assets\n\u2502       \u2514\u2500\u2500main.html\n\u2502       \u2514\u2500\u2500partials\n\u2502          \u2514\u2500\u2500comments.html\n\u2502\n\u2514\u2500\u2500 mkdocs.yml\n

      \u5728comments.html\u4e2d\u5148\u590d\u5236\u7c98\u8d34\u4e0b\u9762\u7684\u4ee3\u7801\uff0c\u540e\u6587\u4f1a\u8bf4\u600e\u4e48\u4fee\u6539

      {% if page.meta.comments %}\n  <h2 id=\"__comments\">{{ lang.t(\"meta.comments\") }}</h2>\n  <!-- Insert generated snippet here -->\n  <script src=\"https://giscus.app/client.js\"\n  data-repo=\"\u4f60\u7684\u4ed3\u5e93\u540d\u79f0\uff08\u5982Wcowin/hexo-site-comments\uff09\"\n  data-repo-id=\" \"\n  data-category=\" \"\n  data-category-id=\" \"\n  data-mapping=\"pathname\"\n  data-strict=\"0\"\n  data-reactions-enabled=\"1\"\n  data-emit-metadata=\"0\"\n  data-input-position=\"bottom\"\n  data-theme=\"preferred_color_scheme\"\n  data-lang=\"zh-CN\"\n  crossorigin=\"anonymous\"\n  async>\n</script>\n  <!-- Synchronize Giscus theme with palette -->\n  <script>\n    var giscus = document.querySelector(\"script[src*=giscus]\")\n\n    // Set palette on initial load\n    var palette = __md_get(\"__palette\")\n    if (palette && typeof palette.color === \"object\") {\n      var theme = palette.color.scheme === \"slate\"\n        ? \"transparent_dark\"\n        : \"light\"\n\n      // Instruct Giscus to set theme\n      giscus.setAttribute(\"data-theme\", theme) \n    }\n\n    // Register event handlers after documented loaded\n    document.addEventListener(\"DOMContentLoaded\", function() {\n      var ref = document.querySelector(\"[data-md-component=palette]\")\n      ref.addEventListener(\"change\", function() {\n        var palette = __md_get(\"__palette\")\n        if (palette && typeof palette.color === \"object\") {\n          var theme = palette.color.scheme === \"slate\"\n            ? \"transparent_dark\"\n            : \"light\"\n\n          // Instruct Giscus to change theme\n          var frame = document.querySelector(\".giscus-frame\")\n          frame.contentWindow.postMessage(\n            { giscus: { setConfig: { theme } } },\n            \"https://giscus.app\"\n          )\n        }\n      })\n    })\n  </script>\n{% endif %}\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_2","title":"\u7b2c\u4e8c\u6b65","text":"

      \u6253\u5f00https://giscus.app/zh-CN \u8d70\u5b8c\u8fd9\u4e2a\u9875\u9762\u7684\u6d41\u7a0b\u5c31\u4f1a\u5f97\u5230(\u8fd9\u4f1a\u5728\u4f60\u7684Github\u521b\u5efa\u65b0\u7684\u4ed3\u5e93\uff0c\u5efa\u8bae\u81ea\u5df1\u5148\u53bb\u65b0\u5efa\u4e2a Discussions)

      <script src=\"https://giscus.app/client.js\"\n        data-repo=\"[\u5728\u6b64\u8f93\u5165\u4ed3\u5e93]\"\n        data-repo-id=\"[\u5728\u6b64\u8f93\u5165\u4ed3\u5e93 ID]\"\n        data-category=\"[\u5728\u6b64\u8f93\u5165\u5206\u7c7b\u540d]\"\n        data-category-id=\"[\u5728\u6b64\u8f93\u5165\u5206\u7c7b ID]\"\n        data-mapping=\"pathname\"\n        data-strict=\"0\"\n        data-reactions-enabled=\"1\"\n        data-emit-metadata=\"0\"\n        data-input-position=\"bottom\"\n        data-theme=\"preferred_color_scheme\"\n        data-lang=\"zh-CN\"\n        crossorigin=\"anonymous\"\n        async>\n</script>\n

      \u590d\u5236\u6b64\u4ee3\u7801\uff0c\u66ff\u6362\u6700\u4e0a\u9762\ud83d\udc46\ud83c\udffbcomments.html\u4e2d\u9ad8\u4eae\u7684\u4ee3\u7801

      \u7ec8\u7aef\u91ccmkdocs server\u4e00\u4e0b

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_3","title":"\u6700\u540e","text":"

      \u5728\u4f60\u60f3\u63d2\u5165\u8bc4\u8bba\u7684\u5730\u65b9\u7684\u5143\u6570\u636e\uff1acomments: true

      ---\ntitle: \u7559\u8a00\u677f\nhide:\n  #  - navigation # \u663e\u793a\u53f3\n  #  - toc #\u663e\u793a\u5de6\n  #  - footer\n  #  - feedback  \ncomments: true  #\u9ed8\u8ba4\u4e0d\u5f00\u542f\u8bc4\u8bba\n---\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_4","title":"\u6548\u679c","text":"

      \u5b8c\u7f8e!\u5feb\u901f\u76f8\u5e94

      \u8fd9\u662f\u56fe\u7247\u2191\u2191\u2191","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkcomments/#_5","title":"\u5176\u4ed6\u8bc4\u8bba\u7cfb\u7edf","text":"

      \u628a\u60f3\u8981\u5185\u5d4c\u7684\u8bc4\u8bba\u4ee3\u7801\u653e\u5728\u76f8\u5e94\u9875\u9762\u5373\u53ef \u6bd4\u5982twikoo \u53bb\u770b\u5b83\u7684\u5b98\u65b9\u914d\u7f6e\u6587\u6863\u5f88\u7b80\u5355\u5c31\u914d\u7f6e\u597d\u4e86

      <head> \n  <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css\" integrity=\"sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X\" crossorigin=\"anonymous\" /> \n  <script defer=\"\" src=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js\" integrity=\"sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4\" crossorigin=\"anonymous\"></script> \n  <script defer=\"\" src=\"https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js\" integrity=\"sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa\" crossorigin=\"anonymous\"></script> \n\n </head>\n<body>\n  <div id=\"tcomment\"></div> \n  <script src=\"https://cdn.staticfile.org/twikoo/1.6.21/twikoo.all.min.js\"></script> \n  <script>\ntwikoo.init({\n  envId: 'https://superb-salamander-e730b6.netlify.app/.netlify/functions/twikoo', // \u817e\u8baf\u4e91\u73af\u5883\u586b envId\uff1bVercel \u73af\u5883\u586b\u5730\u5740\uff08https://xxx.vercel.app\uff09\n  el: '#tcomment', // \u5bb9\u5668\u5143\u7d20\n   //region: 'ap-guangzhou', // \u73af\u5883\u5730\u57df\uff0c\u9ed8\u8ba4\u4e3a ap-shanghai\uff0c\u817e\u8baf\u4e91\u73af\u5883\u586b ap-shanghai \u6216 ap-guangzhou\uff1bVercel \u73af\u5883\u4e0d\u586b\n  // path: location.pathname, // \u7528\u4e8e\u533a\u5206\u4e0d\u540c\u6587\u7ae0\u7684\u81ea\u5b9a\u4e49 js \u8def\u5f84\uff0c\u5982\u679c\u60a8\u7684\u6587\u7ae0\u8def\u5f84\u4e0d\u662f location.pathname\uff0c\u9700\u4f20\u6b64\u53c2\u6570\n   //lang: 'zh-CN', // \u7528\u4e8e\u624b\u52a8\u8bbe\u5b9a\u8bc4\u8bba\u533a\u8bed\u8a00\uff0c\u652f\u6301\u7684\u8bed\u8a00\u5217\u8868 https://github.com/twikoojs/twikoo/blob/main/src/client/utils/i18n/index.js\n   onCommentLoaded: function () {\n    console.log('\u8bc4\u8bba\u52a0\u8f7d\u5b8c\u6210');\n  }\n})\n</script> \n

      \u6211\u611f\u89c9twikoo\u4e5f\u597d\u770b\uff01","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/","title":"\u81ea\u5b9a\u4e49Mkdocs\u663e\u793a\u5b57\u4f53(\u971e\u9e5c\u6587\u6977)","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u6211\u76ee\u524d\u5728\u7528\u7684\u5b57\u4f53\uff1a\u971e\u9e5c\u6587\u6977{target=_blank}

      \u60f3\u5fc5\u4f60\u53ef\u4ee5\u76f4\u89c2\u4ece\u6211\u7684\u7f51\u7ad9\u611f\u53d7\u5230\uff0c\u8fd9\u6b3e\u5b57\u4f53\u7684\u7f8e\u89c2\u7a0b\u5ea6.> - \u82e5\u9700\u8981\u5728\u7f51\u7ad9\u4e0a\u4f7f\u7528\u8fd9\u6b3e\u5b57\u4f53\uff0c\u8bf7\u53c2\u9605 Issue #24.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a6 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a2328 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a21

      \u6211\u76ee\u524d\u5728\u7528\u7684\u5b57\u4f53\uff1a\u971e\u9e5c\u6587\u6977 \u60f3\u5fc5\u4f60\u53ef\u4ee5\u76f4\u89c2\u4ece\u6211\u7684\u7f51\u7ad9\u611f\u53d7\u5230\uff0c\u8fd9\u6b3e\u5b57\u4f53\u7684\u7f8e\u89c2\u7a0b\u5ea6\u3002

      \u5feb\u901f\u6559\u7a0b

      \u4ee5\u4e0b\u662f\u6458\u5f55\u7684\u90e8\u5206\u5b57\u4f53\u5b98\u65b9\u4ecb\u7ecd\u6587\u6863

      \u6ce8\u610f\u4e8b\u9879

      • \u6dfb\u5b57\u8bf7\u5728 Issue #33 \u53cd\u9988\uff0c\u5b57\u5f62\u8c03\u6574\u8bf7\u5728 Issue #14 \u53cd\u9988\uff0c\u4e0d\u8981\u53e6\u5f00\u8bae\u9898\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002
      • \u82e5\u9700\u8981\u5728\u7f51\u7ad9\u4e0a\u4f7f\u7528\u8fd9\u6b3e\u5b57\u4f53\uff0c\u8bf7\u53c2\u9605 Issue #24\u3002
      • \u6709\u5173 Magisk \u5b57\u4f53\u6a21\u5757\u7b49\u624b\u673a\u5b57\u4f53\u66ff\u6362\u6709\u5173\u7684\u95ee\u9898\uff0c\u8bf7\u79fb\u6b65\u6a21\u5757\u6a21\u677f\u7684 Issues \u91cc\u53cd\u9988\uff0c\u4e0d\u8981\u5728\u672c\u9879\u76ee\u5f00\u8bae\u9898\u3002
      • \u66f4\u591a\u7248\u672c \uff08\u53ef\u80fd\u4f1a\u968f\u65f6\u53d8\u52a8\uff09 \uff1a
      • \u971e\u9e5c\u6587\u6977\u5c4f\u5e55\u9605\u8bfb\u7248 / LXGW WenKai Screen\uff1a\u9002\u7528\u4e8e PC \u548c Android \u624b\u673a\u5c4f\u5e55\u663e\u793a\u4e14\u65e0\u9700\u7279\u522b\u5207\u6362\u5230\u7c97\u4f53\u3002
      • \u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248 / LXGW WenKai Lite\uff1a\u4e0e\u5b8c\u6574\u7248\u76f8\u6bd4\u5254\u9664\u4e00\u4e9b\u8f83\u4e0d\u5e38\u7528\u7684\u5b57\u7b26\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u5c06\u5b57\u4f53\u5d4c\u5165\u8f6f\u4ef6\u4e2d\u3002
      • \u971e\u9e5c\u6587\u6977 GB / LXGW WenKai GB\uff1a\u8fdb\u4e00\u6b65\u8c03\u6574\u5b57\u5f62\u548c\u7b14\u5f62\uff0c\u7b26\u5408 G \u6e90\u5b57\u5f62\u89c4\u8303\u3002\u5305\u542b\u300a\u901a\u7528\u89c4\u8303\u6c49\u5b57\u8868\u300b8105 \u4e2a\u6c49\u5b57\u3002
      • \u971e\u9e5c\u6587\u6977 TC / LXGW WenKai TC\uff1a\u65e7\u5b57\u5f62\u7248\u53c2\u8003\u300c\u4e00\u70b9\u5b57\u574a\u300d\u7684\u300c\u4f20\u627f\u5b57\u5f62\u6807\u51c6\u5316\u6587\u4ef6\u300d\u5bf9\u90e8\u4ef6\u8fdb\u884c\u4fee\u6539\uff0c\u9002\u7528\u4e8e\u7e41\u4f53\u4e2d\u6587\u7528\u6237\u53ca\u65e7\u5b57\u5f62\u7231\u597d\u8005\u3002
      • LXGW Bright\uff1a\u4e0e Ysabeau \u7cfb\u5217\u5b57\u4f53 \u642d\u914d\u7684\u4e2d\u82f1\u6587\u5408\u5e76\u5b57\u4f53\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#lxgw-wenkai","title":"LXGW WenKai / \u971e\u9e5c\u6587\u6977","text":"

      An open-source Chinese font derived from Fontworks' Klee One. \u4e00\u6b3e\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\uff0c\u57fa\u4e8e FONTWORKS \u51fa\u54c1\u5b57\u4f53 Klee One \u884d\u751f\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_1","title":"\u9879\u76ee\u7b80\u4ecb","text":"

      2020 \u5e74 12 \u6708\uff0c\u65e5\u672c\u8457\u540d\u5b57\u4f53\u5382\u5546 FONTWORKS \u5728 GitHub \u4e0a\u53d1\u5e03\u4e86 7 \u6b3e\u65e5\u6587\u5b57\u4f53\uff0c\u5206\u522b\u4e3a Train\u3001Klee\u3001Stick\u3001Rock-n-Roll\u3001Reggae\u3001Rampart \u548c DotGothic16\uff0c\u6839\u636e SIL Open Font License 1.1 \u6388\u6743\u8bb8\u53ef\u5f00\u6e90\u30027 \u6b3e\u5f00\u6e90\u65e5\u6587\u5b57\u4f53\u5404\u6709\u5404\u7684\u7279\u70b9\uff0c\u800c\u8fd9 7 \u6b3e\u5b57\u4f53\u4e2d\uff0c\u5b57\u7b26\u6570\u91cf\u6700\u591a\u7684\u662f Klee\u3002

      \u8fd9\u662f\u4e00\u6b3e\u6709\u7740\u65e5\u672c\u6559\u79d1\u4e66\u4f53\u98ce\u683c\u7684\u5b57\u4f53\uff0c\u517c\u6709\u4eff\u5b8b\u548c\u6977\u4f53\u7684\u7279\u70b9\uff0c\u53ef\u8bfb\u6027\u9ad8\u3002\u4e00\u4e9b DIY \u5b57\u4f53\u7231\u597d\u8005\u66fe\u5148\u540e\u7528\u4eff\u5b8b\u7b49\u5b57\u4f53\u8865\u5168\u8fd9\u6b3e\u5b57\u4f53\uff0c\u4f5c\u4e3a\u624b\u673a\u7cfb\u7edf\u7684\u7f8e\u5316\u5b57\u4f53\u79fb\u690d\u5728 iOS\u3001Android \u7b49\u624b\u673a\u7cfb\u7edf\u4e2d\uff0c\u53d7\u5230\u5f88\u591a\u73a9\u673a\u53d1\u70e7\u53cb\u7684\u6b22\u8fce\u3002\u4e0d\u8fc7\u8fd9\u6837\u8865\u5168\u7684\u5b57\u4f53\u6709\u4e00\u4e9b\u4e0d\u8db3\u4e4b\u5904\u3002 \u7b2c\u4e00\uff0c\u539f\u6709\u5b57\u4f53\u548c\u540e\u8865\u5b57\u4f53\u4e4b\u95f4\u6709\u7740\u4e00\u5b9a\u7684\u5dee\u5f02\uff0c\u81f4\u4f7f\u4e00\u4e9b\u4e0d\u540c\u7684\u6587\u5b57\uff08\u5982 Klee \u539f\u6709\u6c49\u5b57\u4e0e\u540e\u8865\u7b80\u4f53\u5b57\uff09\u6df7\u6392\u4e4b\u540e\u4f1a\u6709\u4e00\u5b9a\u7684\u8fdd\u548c\u611f\u3002 \u7b2c\u4e8c\uff0c\u7531\u4e8e\u8865\u5b57\u6240\u7528\u7684\u5b57\u4f53\u4e3a\u5546\u4e1a\u7248\u6743\u5b57\u4f53\uff0c\u8865\u5168\u4e4b\u540e\u4e0d\u53ef\u7528\u4e8e\u5546\u4e1a\u7528\u9014\uff0c\u8fd8\u4f1a\u6709\u4fb5\u6743\u7684\u98ce\u9669\u3002\u6b64\u5916\uff0c\u76ee\u524d\u73b0\u6709\u7684\u5f00\u6e90\u4e2d\u6587\u5b57\u5e93\u91cc\uff0c\u6977\u4f53\u7c7b\u5be5\u5be5\u65e0\u51e0\uff0c\u4eff\u5b8b\u7c7b\u5219\u51e0\u4e4e\u6ca1\u6709\u3002

      \u9274\u4e8e\u6b64\uff0c\u4e5f\u4e3a\u4e86\u4e30\u5bcc\u5f00\u6e90\u4e2d\u6587\u5b57\u4f53\u4e2d\u7684\u6977\u4f53\u95e8\u7c7b\uff0c2021 \u5e74 1 \u6708 20 \u65e5\u8d77\uff0c\u672c\u4eba\u5f00\u59cb\u4e86\u4e3a Klee One \u8fd9\u4e00\u9ad8\u8d28\u91cf\u7684\u65e5\u6587\u5f00\u6e90\u5b57\u4f53\u8865\u5168\u7b80\u7e41\u5e38\u7528\u5b57\u7684\u5c1d\u8bd5\u3002\u56e0\u8be5\u5b57\u4f53\u5177\u6709\u4e00\u5b9a\u7684\u300c\u6587\u827a\u6c14\u606f\u300d\uff0c\u547d\u540d \u300c\u971e\u9e5c\u6587\u6977\u300d\uff08\u5176\u5b9e\u5f53\u521d\u662f\u611f\u89c9\u8fd9\u6b3e\u5b57\u4f53\u9002\u5408\u6b63\u6587\u9605\u8bfb\u5b9a\u540d\u300c\u6587\u6977\u300d\uff0c\u540e\u6765\u53d1\u73b0\u8fd9\u6b3e\u5b57\u4f53\u53ef\u80fd\u5e76\u4e0d\u592a\u9002\u5408\u5927\u6bb5\u6b63\u6587\u6392\u7248\uff0c\u76f8\u6bd4\u4e4b\u4e0b\u66f4\u52a0\u9002\u5408\u8bd7\u8bcd\u4e4b\u7c7b\u7684\u4e2d\u7b49\u957f\u5ea6\u6587\u672c\u6392\u7248\uff0c\u6216\u8005\u6ce8\u91ca\u6392\u7248\uff09\u3002\u7531\u4e8e Klee One \u5b57\u4f53\u7684 Regular \u5b57\u91cd\u592a\u7ec6\u4e0d\u592a\u9002\u5408\u9605\u8bfb\uff0c\u9009\u53d6\u539f\u5b57\u4f53 SemiBold \u5b57\u91cd\u4f5c\u4e3a Regular \u5b57\u91cd\u3002\u7ecf\u8fc7\u957f\u65f6\u95f4\u7684\u79ef\u7d2f\uff0c\u76ee\u524d\u5df2\u53d1\u5c55\u6210\u7b80\u7e41\u65e5\u97e9\u5747\u652f\u6301\u7684 3 \u5b57\u91cd\u5b57\u4f53\u5bb6\u65cf \uff08\u867d\u7136\u62d9\u52a3\u7c97\u7cd9\u4e86\u70b9\uff09 \u3002

      \u6709\u5173\u8865\u5b57\u8fc7\u7a0b\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u672c\u4eba GitHub.io \u535a\u5ba2\u91cc\u7684\u6587\u7ae0\uff1a\u300a\u4e3a Klee \u8bd5\u5236\u7b80\u5316\u5b57\u300b\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_2","title":"\u5b57\u4f53\u9884\u89c8","text":"

      \u5386\u53f2\u7248\u672c\u7684 Release\uff0c\u8bf7\u5728 Release \u9875\u9762\u67e5\u770b\u3002\u6587\u5b57\u7248\u672c\u7684\u66f4\u65b0\u8bb0\u5f55 HISTORY.MD \u4e0d\u518d\u7ef4\u62a4\uff0c\u656c\u8bf7\u8c05\u89e3\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_3","title":"\u8865\u5b57\u8ba1\u5212","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_4","title":"\u4e3b\u8981\u6c49\u5b57\u90e8\u5206","text":"

      \u8bf7\u53c2\u9605\u300c\u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248\u300d\u52a0\u5b57\u8ba1\u5212\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_5","title":"\u5176\u4ed6\u90e8\u5206","text":"
      • \u8865\u5b8c CJK \u7edf\u4e00\u6c49\u5b57\u57fa\u672c\u533a 20992 \u4e2a\u6c49\u5b57\uff08\u7b80\u7e41\uff09 \uff08\u76ee\u524d\u5b8c\u6574\u7248\u6709 6857 \u4e2a\u5b57\u5f62\u7531 zi2zi \u6df1\u5ea6\u5b66\u4e60\u751f\u6210\uff0c\u5b57\u5f62\u8f83\u7c97\u7cd9\u3002\uff09 \uff1b
      • \u8865\u5168\u5e38\u7528\u8c1a\u6587\uff08\u97e9\u8bed/\u671d\u9c9c\u8bed\uff09\u97f3\u8282 2367 \u4e2a\u3002 \uff08\u505a\u5f97\u6bd4\u8f83\u62d9\u52a3\u3002Lite \u7248\u4e0d\u5305\u542b\u3002\uff09

      \u70b9\u51fb\u6b64\u5904\u67e5\u770b\u540e\u7eed\u52a0\u5b57\u53ca\u8c03\u6574\u8ba1\u5212\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_6","title":"\u83b7\u53d6\u5b57\u4f53","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#i","title":"\u2170. \u76f4\u63a5\u4e0b\u8f7d","text":"
      1. \u8fdb\u5165 Release \u754c\u9762\u4e0b\u8f7d\u5bf9\u5e94\u7248\u672c\u7684 TTF \u683c\u5f0f\u6587\u4ef6\uff0c\u6216\u5728\u672c\u4ed3\u5e93 fonts/TTF \u6587\u4ef6\u5939\u4e2d\u4e0b\u8f7d\u3002
      2. \u5728 Gitee \u5b98\u65b9\u955c\u50cf\u4ed3\u5e93 fonts/TTF \u6587\u4ef6\u5939\u4e2d\u4e0b\u8f7d\u3002
      3. \u8fdb\u5165 \u732b\u5543\u7f51\u3001Zfont.cn\u3001\u81ea\u7531\u5b57\u4f53 \u8fdb\u884c\u4e0b\u8f7d\u3002GitHub \u9879\u76ee\u66f4\u65b0\u540e\uff0c\u4f1a\u8054\u7cfb\u7ad9\u957f\u8fdb\u884c\u66f4\u65b0\uff0c\u66f4\u65b0\u4f1a\u7a0d\u665a\u4e9b\u3002 \u6ce8\u610f\uff1a \u5176\u5b83\u6536\u5f55\u514d\u8d39\u5546\u7528\u5b57\u4f53\u7684\u7f51\u7ad9\u4e0a\u53ef\u80fd\u4e5f\u6536\u5f55\u4e86\u672c\u5b57\u4f53\uff0c\u4f46\u53ef\u80fd\u4e0d\u662f\u6700\u65b0\u7248\u3002
      4. \u6c38\u7855\uff25\u76d8\u3001\u84dd\u594f\u4e91\uff08\u5bc6\u7801\uff1a8ppk\uff09 \u4f1a\u5728 GitHub \u9879\u76ee\u66f4\u65b0\u540e 72 \u5c0f\u65f6\u4e4b\u5185\u66f4\u65b0\u3002
      5. \u5982\u679c\u60a8\u4f7f\u7528 macOS\uff0c\u5df2\u7ecf\u5b89\u88c5\u8fc7 Homebrew\uff0c\u53ef\u4ee5\u5728\u7ec8\u7aef\u8f93\u5165\u547d\u4ee4\uff1abrew tap homebrew/cask-fonts && brew install font-lxgw-wenkai \u6765\u5b89\u88c5\u672c\u5b57\u4f53\u3002
      6. \u5982\u679c\u60a8\u4f7f\u7528 Windows\uff0c\u5df2\u7ecf\u5b89\u88c5\u8fc7 Scoop\uff0c\u53ef\u4ee5\u5728\u7ec8\u7aef\u8f93\u5165\u547d\u4ee4\uff1ascoop bucket add nerd-fonts && scoop install LXGWWenKai \u6216\u8005 scoop bucket add nerd-fonts && scoop install LXGWWenKaiMono \u6765\u5b89\u88c5\u672c\u5b57\u4f53\u3002\u4ea6\u53ef\u67e5\u770b\u5fae\u8f6f\u5b98\u65b9\u6559\u7a0b\uff1a\u5982\u4f55\u5728 Windows \u4e2d\u5b89\u88c5\u6216\u5220\u9664\u5b57\u4f53\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#ii","title":"\u2171. \u4ece\u6e90\u4ee3\u7801\u751f\u6210","text":"

      \u8bf7\u8fd0\u884c ./sources/build.bat \u6216 ./sources/build.sh\u3002\u9700\u8981\u5b89\u88c5 fontmake\uff1apip3 install fontmake \u548c fontTools\uff1apip3 install fonttools\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_7","title":"\u6ce8\u610f\u4e8b\u9879","text":"
      1. \u622a\u81f3\u76ee\u524d\uff0c\u5b8c\u6574\u7248\u672c\u5b57\u4f53\u542b\u6709\u5168\u90e8 CJK \u57fa\u672c\u533a\u6c49\u5b57\uff0c\u4ee5\u53ca\u96f6\u661f\u6269\u5c55 A~G \u533a\u6c49\u5b57\u3002 \u5982\u6709\u8865\u5b57\u9700\u6c42\uff0c\u8bf7\u5728 Issue #33 \u63d0\u51fa\uff0c\u4e0d\u8981\u53e6\u5f00 Issue\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002
      2. \u672c\u4eba\u5e76\u4e0d\u662f\u4e13\u4e1a\u7684\u8bbe\u8ba1\u5e08\uff0c\u5e76\u672a\u8003\u8651\u8bbe\u8ba1\u7f8e\u611f\uff0c\u6240\u4ee5\u770b\u8d77\u6765\u53ef\u80fd\u7565\u4e11\uff0c\u8865\u8fdb\u53bb\u7684\u5b57\u4e0e\u539f\u7248\u53ef\u80fd\u7565\u6709\u8fdd\u548c\u611f\uff0c\u4e14\u5728 Bold \u5b57\u91cd\u4e2d\u90e8\u5206\u5b57\u7684\u8f6e\u5ed3\u66f2\u7ebf\u4f1a\u6709\u6bdb\u523a\uff0cLight \u5b57\u91cd\u4e2d\u90e8\u5206\u5b57\u7684\u8f6e\u5ed3\u4f1a\u5b58\u5728\u98de\u70b9\uff1b\u6b64\u5916\u7531\u4e8e\u65f6\u95f4\u4ed3\u4fc3\uff0c\u5e76\u6ca1\u6709\u591a\u4f59\u7684\u65f6\u95f4\u7ec6\u4fee\uff0c\u90e8\u5206\u5b57\u7684\u90e8\u4ef6\u62fc\u63a5\u4f1a\u5f88\u751f\u786c\u3002\u5982\u6709\u5b57\u5f62\u4f18\u5316\u5efa\u8bae\uff0c\u8bf7\u5728 Issue #14 \u63d0\u51fa\uff0c\u4e0d\u8981\u53e6\u5f00 Issue\uff0c\u4ee5\u4fbf\u4e8e\u6574\u7406\u3002 \uff08\u4ee5\u4e0a\u4e24\u4e2a issue \u5747\u5df2\u52a0\u4e0a long term \u6807\u7b7e\uff0c\u4e14\u5747\u5df2\u5728 Issues \u9875\u9762\u7f6e\u9876\u3002\uff09
      3. \u82e5\u9700\u8981\u5728\u7f51\u7ad9\u4e0a\u4f7f\u7528\u8fd9\u6b3e\u5b57\u4f53\uff0c\u8bf7\u53c2\u9605 Issue #24\u3002
      4. \u5bf9\u4e8e\u642d\u914d\u7684\u897f\u6587\u5b57\u4f53\uff0c\u4e2a\u4eba\u63a8\u8350 Ysabeau \u7cfb\u5217\u5b57\u4f53\u3002\u53e6\u6709 Ysabeau Office \u4e0e\u971e\u9e5c\u6587\u6977\u8f7b\u4fbf\u7248\u7684\u5408\u5e76\u5b57\u4f53 LXGW Bright\uff0c\u91c7\u7528 \u5b57\u4f53\u5408\u5e76\u8865\u5168\u5de5\u5177 \u5c06\u4e24\u6b3e\u5b57\u4f53\u5408\u5e76\u800c\u6210\uff0c\u63d0\u4f9b TTF\u3001OTF\u3001WOFF\u3001WOFF2 \u56db\u79cd\u683c\u5f0f\u3002
      5. \u8be5\u5b57\u4f53\u7684\u66f4\u591a\u7248\u672c \uff08\u53ef\u80fd\u4f1a\u968f\u65f6\u53d8\u52a8\uff09
      6. \u971e\u9e5c\u6587\u6977\u5c4f\u5e55\u9605\u8bfb\u7248 / LXGW WenKai Screen \u7531\u4e8e\u539f\u7248\u300c\u971e\u9e5c\u6587\u6977\u300dRegular \u5b57\u91cd\u5728 PC \u548c Android \u5c4f\u5e55\u4e0a\u663e\u793a\u8f83\u7ec6\uff0c\u800c Bold \u5b57\u91cd\u9700\u8981\u5728\u7c97\u4f53\u6a21\u5f0f\u4e0b\u624d\u80fd\u8c03\u7528\uff0c\u7279\u5236\u4f5c\u4ee5 Bold \u5b57\u91cd\u4e3a\u57fa\u7840\u7684\uff0c\u52a0\u7c97\u540e\u7684\u300c\u971e\u9e5c\u6587\u6977\u300d\u4e0e Windows \u9ed8\u8ba4\u82f1\u6587\u5b57\u4f53 Segoe UI Regular \u7c97\u7ec6\u76f8\u5f53\uff0cPC \u548c Android \u624b\u673a\u5c4f\u5e55\u9605\u8bfb\u66f4\u52a0\u8212\u9002\uff0c\u65e0\u9700\u7279\u522b\u5207\u6362\u5230\u7c97\u4f53\u6a21\u5f0f\u3002
      7. \u971e\u9e5c\u6587\u6977 \u8f7b\u4fbf\u7248 / LXGW WenKai Lite\uff1a\u5254\u9664 v1.100 \u7248\u672c\u589e\u8865\u7684\u4e00\u4e9b\u8f83\u4e0d\u5e38\u7528\u7684\u6c49\u5b57\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u5c06\u5b57\u4f53\u5d4c\u5165\u8f6f\u4ef6\u4e2d\u3002\u82e5\u5b8c\u6574\u7248\u6709\u5b57\u5f62\u4f18\u5316\u6216\u7279\u6027\u66f4\u65b0\uff0c\u7cbe\u7b80\u7248\u4e5f\u5c06\u4f1a\u8ddf\u8fdb\u3002\u7cbe\u7b80\u7248\u4e0d\u5305\u542b\u8c1a\u6587\u3002
      8. \u971e\u9e5c\u6587\u6977 GB / LXGW WenKai GB\uff1a\u5728\u6587\u6977\u57fa\u7840\u4e0a\u8fdb\u4e00\u6b65\u8c03\u6574\u5b57\u5f62\u548c\u7b14\u5f62\uff0c\u7b26\u5408 G \u6e90\u5b57\u5f62\u89c4\u8303\u3002\u5305\u542b\u300a\u901a\u7528\u89c4\u8303\u6c49\u5b57\u8868\u300b8105 \u4e2a\u6c49\u5b57\u3002\u53e6\u6709\u4e0e\u300c\u82ab\u837d\u300d\u7b49\u540c\u6e90\u5b57\u4f53\u5408\u5e76\u7684\u300c\u7f1d\u5408\u6977\u300d\uff0c\u53ca\u4f7f\u7528\u672c\u9879\u76ee\u5b57\u4f53\u8865\u5168\u7684 GB \u878d\u5408\u7248\u3002
      9. \u971e\u9e5c\u6587\u6977 TC / LXGW WenKai TC\uff1a\u4f9b\u7e41\u4f53\u4e2d\u6587\u7528\u6237\u548c\u65e7\u5b57\u5f62\u7231\u597d\u8005\u4f7f\u7528\uff0c\u57fa\u4e8e\u8f7b\u4fbf\u7248\u5236\u4f5c\uff0c\u91c7\u7528\u65e7\u5b57\u5f62\u5199\u6cd5\uff0c\u4e3b\u8981\u91c7\u7528 Klee One \u7684\u9690\u85cf\u5b57\u5f62\uff0c\u90e8\u5206\u90e8\u4ef6\u624b\u52a8\u4fee\u6539 \uff08\u5927\u90e8\u5206\u90e8\u4ef6\u53c2\u8003\u4e00\u70b9\u5b57\u574a\u300c\u4f20\u627f\u5b57\u5f62\u6807\u51c6\u5316\u6587\u4ef6\u300d\uff0c\u501f\u52a9\u300c\u6c49\u6587\u535a\u58eb\u300d\u300c\u56fd\u5b66\u8ff7\u300d\u300c\u5b57\u7edf\u7f51\u300d \u7b49\u5de5\u5177\u6309\u90e8\u4ef6\u67e5\u5b57\uff0c\u5bf9\u5b57\u5f62\u8fdb\u884c\u4fee\u6539\uff09\u3002\u6b64\u5916\u5df2\u6709\u57fa\u4e8e Klee One \u6539\u9020\u7684\u7e41\u4f53\u4e2d\u6587\u5b57\u4f53 \u82ab\u837d / Iansui\uff0c\u91c7\u7528\u53f0\u6e7e\u5730\u533a\u7684\u6559\u80b2\u6807\u51c6\u5b57\u5f62\uff1b\u53e6\u6709\u91c7\u7528\u9999\u6e2f\u5730\u533a\u5b57\u5f62\u6807\u51c6\u7684 \u82ab\u831c\u96c5\u6977 / JyunsaiKaai\u3002
      10. \u672c\u9879\u76ee\u4e3a\u5b57\u4f53\u9879\u76ee\uff0c\u6709\u5173 Magisk \u5b57\u4f53\u6a21\u5757\u7b49\u624b\u673a\u5b57\u4f53\u66ff\u6362\u6709\u5173\u7684\u95ee\u9898\uff0c\u8bf7\u79fb\u6b65\u6a21\u5757\u6a21\u677f\u7684 Issues \u91cc\u53cd\u9988\uff0c\u4e0d\u8981\u5728\u672c\u9879\u76ee\u5f00\u8bae\u9898\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_8","title":"\u6388\u6743\u4fe1\u606f","text":"

      \u672c\u5b57\u4f53\u662f\u57fa\u4e8e SIL Open Font License 1.1 \u6539\u9020\u7684 FONTWORKS \u5f00\u53d1\u5e76\u53d1\u5e03\u7684 Klee \u5f00\u6e90\u9879\u76ee\u3002Klee \u662f FONTWORKS \u7684\u5546\u6807\u3002

      \u732b\u5543\u7f51\u63d0\u4f9b SIL Open Font License 1.1 \u975e\u5b98\u65b9\u7b80\u4f53\u4e2d\u6587\u8bd1\u672c\u4fbf\u4e8e\u7406\u89e3\uff0c\u4ec5\u4f9b\u53c2\u8003\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_9","title":"\u8bb8\u53ef","text":"
      • \u8fd9\u6b3e\u5b57\u4f53\u65e0\u8bba\u662f\u4e2a\u4eba\u8fd8\u662f\u4f01\u4e1a\u90fd\u53ef\u4ee5\u81ea\u7531\u5546\u7528\uff0c\u65e0\u9700\u4ed8\u8d39\uff0c\u4e5f\u65e0\u9700\u77e5\u4f1a\u6216\u8005\u6807\u660e\u539f\u4f5c\u8005\u3002 \uff08\u4f46\u5982\u679c\u544a\u77e5\uff0c\u6211\u4f1a\u5f88\u611f\u6fc0\u3002\uff09
      • \u8fd9\u6b3e\u5b57\u4f53\u53ef\u4ee5\u81ea\u7531\u4f20\u64ad\u3001\u5206\u4eab\uff0c\u6216\u8005\u5c06\u5b57\u4f53\u5b89\u88c5\u4e8e\u7cfb\u7edf\u3001\u8f6f\u4ef6\u6216APP\u4e2d\u4e5f\u662f\u5141\u8bb8\u7684\uff0c\u53ef\u4ee5\u4e0e\u4efb\u4f55\u8f6f\u4ef6\u6346\u7ed1\u518d\u5206\u53d1\u4ee5\u53ca\uff0f\u6216\u4e00\u5e76\u9500\u552e\u3002
      • \u8fd9\u6b3e\u5b57\u4f53\u53ef\u4ee5\u81ea\u7531\u4fee\u6539\u3001\u6539\u9020\uff0c\u5236\u4f5c\u884d\u751f\u5b57\u4f53\u3002\u4fee\u6539\u6216\u6539\u9020\u540e\u7684\u5b57\u4f53\u4e5f\u5fc5\u987b\u540c\u6837\u4ee5 SIL OFL \u516c\u5f00\u3002
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#_10","title":"\u9650\u5236","text":"
      • \u5728\u5236\u4f5c\u884d\u751f\u5b57\u4f53\u65f6\uff0c\u5b57\u4f53\u540d\u79f0\u4e0d\u53ef\u4f7f\u7528\u539f\u6709\u5b57\u4f53\u7684\u300c\u4fdd\u7559\u540d\u79f0\u300d\u3002\u672c\u5b57\u4f53\u4fdd\u7559\u540d\u79f0\u300c\u971e\u9e5c\u300d\u300cLXGW\u300d\uff0c\u57fa\u4e8e\u672c\u5b57\u4f53\u4e8c\u6b21\u884d\u751f\u7684\u5b57\u4f53\uff0c\u540d\u79f0\u4e0d\u53ef\u51fa\u73b0\u300c\u971e\u9e5c\u300d\u6216\u300cLXGW\u300d\u5b57\u6837\uff1b\u800c\u5728\u6ca1\u6709\u5bf9\u5b57\u4f53\u6e90\u4ee3\u7801\u8fdb\u884c\u4fee\u6539\u7684\u60c5\u51b5\u4e0b\uff0c\u91cd\u65b0\u7f16\u8bd1\u51fa\u6765\u7684\u5b57\u4f53\uff0c\u53ef\u4ee5\u7ee7\u7eed\u4f7f\u7528\u672c\u5b57\u4f53\u7684\u4fdd\u7559\u540d\u79f0\u300c\u971e\u9e5c\u300d\u300cLXGW\u300d\u3002
      • \u6839\u636e SIL Open Font License 1.1 \u8bb8\u53ef\u4e0e\u6761\u4ef6\u4e2d \u7b2c\u4e00\u6761\u7684\u89c4\u5b9a\uff0c \u7981\u6b62\u5355\u72ec\u51fa\u552e\u5b57\u4f53\u6587\u4ef6(OTF/TTF\u6587\u4ef6)\u7684\u884c\u4e3a\u3002
      • \u8be5\u5b57\u4f53\u4e0d\u53ef\u5728 SIL Open Font License 1.1 \u4ee5\u5916\u7684\u6388\u6743\u8bb8\u53ef\u4e0b\u53d1\u884c\u3002

      \u4ee5\u4e0a\u662f\u6458\u5f55\u7684\u90e8\u5206\u5b57\u4f53\u5b98\u65b9\u4ecb\u7ecd\u6587\u6863

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkdocsfont/#mkdocs","title":"\u57fa\u4e8eMkdocs\u7684\u7f51\u7ad9\u5b57\u4f53\u7f8e\u5316\u7528\u6cd5","text":"

      \u5728mkdocs.yml\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9

      extra_css:\n  - https://static.zeoseven.com/zsft/292/main/result.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-lite-webfont@1.1.0/style.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-tc-webfont@1.0.0/style.css\n  # - https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-webfont@1.1.0/style.css\n

      \u7136\u540e\u5728extra.css\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9

      @import url('https://static.zeoseven.com/zsft/292/main/result.css');\n\nbody {\nfont-family: \"LXGW WenKai\";\nfont-weight: normal;\n}\n\n\n/* button.md-top {\n    font-family: LXGW WenKai;\n    font-size: 16px;\n    font-weight: lighter;\n} */\n

      \u4e0d\u61c2extra_css\u7684\u7528\u6cd5\u7684\u53ef\u4ee5\u770b\u4e00\u4e0b\u6211\u5199\u7684extra_css\u90e8\u5206\u6559\u7a0b

      Tip

      \u5207\u6362\u5b57\u4f53\u540e\u53ef\u80fd\u8fd4\u56de\u9876\u90e8\u6309\u94ae\u4f1a\u5728\u4e2a\u522b\u6d4f\u89c8\u5668\u663e\u793a\u5f02\u5e38 \u5efa\u8bae\u5728extra.css\u91cc\u52a0\u5165

      button.md-top {\n  font-family: LXGW WenKai; /* \u4fee\u6539\u5b57\u4f53 */\n  font-size: 16px; /* \u4fee\u6539\u5b57\u4f53\u5927\u5c0f */\n  font-weight: bold; /* \u4fee\u6539\u5b57\u4f53\u7c97\u7ec6 */\n  color: #518FC1; /* \u4fee\u6539\u5b57\u4f53\u989c\u8272 */\n}\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/mkpdf/","title":"\u5d4c\u5165PDF","text":"

      \u5d4c\u5165PDF

      \u5d4c\u5165PDF\u4ee3\u7801 \uff0c\u6ce8\u610fPDF\u7684\u76f8\u5bf9\u5730\u5740

      <iframe src=\"../\u4e2a\u4eba\u7b80\u5386.pdf (\u76f8\u5bf9\u5730\u5740)\" width=\"100%\" height=\"800px\" style=\"border: 1px solid #ccc; overflow: auto;\"></iframe>\n

      \u6211\u7684\u5b8c\u6574\u4ee3\u7801\uff1a

      <div class=\"grid cards\" markdown>\n\n-   :octicons-bookmark-16:{ .lg .middle } __\u4e2a\u4eba\u7b80\u5386__\n\n    ---\n\n    <iframe src=\"../\u4e2a\u4eba\u7b80\u5386.pdf\" width=\"100%\" height=\"800px\" style=\"border: 1px solid #ccc; overflow: auto;\">\n    </iframe>\n\n\n</div>\n

      \u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/shubiao/","title":"JS\u5b9e\u73b0\u9f20\u6807\u6837\u5f0f","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u672c\u6587\u6df1\u5165\u63a2\u8ba8\u4e86\u76f8\u5173\u6280\u672f\u5185\u5bb9\uff0c\u63d0\u4f9b\u4e86\u5b9e\u7528\u7684\u65b9\u6cd5\u548c\u89e3\u51b3\u65b9\u6848\u3002

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a129 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a114

      \u4e0d\u5efa\u8bae\u66f4\u6539\uff0c\u56e0\u4e3a\u9ed8\u8ba4\u5c31\u662f\u6700\u7b80\u6d01

      \u5728docs/javascripts/extra.js\u4e0b\u590d\u5236\u7c98\u8d34\uff1a

      var CURSOR;\n\nMath.lerp = (a, b, n) => (1 - n) * a + n * b;\n\nconst getStyle = (el, attr) => {\n    try {\n        return window.getComputedStyle\n            ? window.getComputedStyle(el)[attr]\n            : el.currentStyle[attr];\n    } catch (e) {}\n    return \"\";\n};\n\nclass Cursor {\n    constructor() {\n        this.pos = {curr: null, prev: null};\n        this.pt = [];\n        this.create();\n        this.init();\n        this.render();\n    }\n\n    move(left, top) {\n        this.cursor.style[\"left\"] = `${left}px`;\n        this.cursor.style[\"top\"] = `${top}px`;\n    }\n\n    create() {\n        if (!this.cursor) {\n            this.cursor = document.createElement(\"div\");\n            this.cursor.id = \"cursor\";\n            this.cursor.classList.add(\"hidden\");\n            document.body.append(this.cursor);\n        }\n\n        var el = document.getElementsByTagName('*');\n        for (let i = 0; i < el.length; i++)\n            if (getStyle(el[i], \"cursor\") == \"pointer\")\n                this.pt.push(el[i].outerHTML);\n\n        document.body.appendChild((this.scr = document.createElement(\"style\")));\n        // \u8fd9\u91cc\u6539\u53d8\u9f20\u6807\u6307\u9488\u7684\u989c\u8272 \u7531svg\u751f\u6210\n        this.scr.innerHTML = `* {cursor: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' width='8px' height='8px'><circle cx='4' cy='4' r='4' opacity='.5'/></svg>\") 4 4, auto}`;\n    }\n\n    refresh() {\n        this.scr.remove();\n        this.cursor.classList.remove(\"hover\");\n        this.cursor.classList.remove(\"active\");\n        this.pos = {curr: null, prev: null};\n        this.pt = [];\n\n        this.create();\n        this.init();\n        this.render();\n    }\n\n    init() {\n        document.onmouseover  = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.add(\"hover\");\n        document.onmouseout   = e => this.pt.includes(e.target.outerHTML) && this.cursor.classList.remove(\"hover\");\n        document.onmousemove  = e => {(this.pos.curr == null) && this.move(e.clientX - 8, e.clientY - 8); this.pos.curr = {x: e.clientX - 8, y: e.clientY - 8}; this.cursor.classList.remove(\"hidden\");};\n        document.onmouseenter = e => this.cursor.classList.remove(\"hidden\");\n        document.onmouseleave = e => this.cursor.classList.add(\"hidden\");\n        document.onmousedown  = e => this.cursor.classList.add(\"active\");\n        document.onmouseup    = e => this.cursor.classList.remove(\"active\");\n    }\n\n    render() {\n        if (this.pos.prev) {\n            this.pos.prev.x = Math.lerp(this.pos.prev.x, this.pos.curr.x, 0.15);\n            this.pos.prev.y = Math.lerp(this.pos.prev.y, this.pos.curr.y, 0.15);\n            this.move(this.pos.prev.x, this.pos.prev.y);\n        } else {\n            this.pos.prev = this.pos.curr;\n        }\n        requestAnimationFrame(() => this.render());\n    }\n}\n\n(() => {\n    CURSOR = new Cursor();\n    // \u9700\u8981\u91cd\u65b0\u83b7\u53d6\u5217\u8868\u65f6\uff0c\u4f7f\u7528 CURSOR.refresh()\n})();\n
      \u5176\u4e2d\u6bd4\u8f83\u91cd\u8981\u7684\u53c2\u6570\u5c31\u662f\u9f20\u6807\u7684\u5c3a\u5bf8\u548c\u989c\u8272\uff0c\u5df2\u7ecf\u5728\u4e0a\u56fe\u4e2d\u6807\u51fa\uff0c\u76ee\u524d\u53d1\u73b0\u989c\u8272\u53ea\u652f\u6301RGB\u5199\u6cd5\u548c\u56fa\u6709\u540d\u79f0\u5199\u6cd5\uff08\u4f8b\u5982red\u8fd9\u79cd\uff09\uff0c\u5176\u4ed6\u53c2\u6570\u4e5f\u53ef\u4ee5\u81ea\u884c\u6478\u7d22\uff1a

      * {cursor: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' width='8px' height='8px'><circle cx='4' cy='4' r='4' opacity='1.0' fill='rgb(57, 197, 187)'/></svg>\") 4 4, auto}`\n

      \u5728docs/stylesheets/extra.css\u6dfb\u52a0\u5982\u4e0b\u4ee3\u7801\uff1a

      /* \u9f20\u6807\u6837\u5f0f */\n#cursor {\n  position: fixed;\n  width: 16px;\n  height: 16px;\n  /* \u8fd9\u91cc\u6539\u53d8\u8ddf\u968f\u7684\u5e95\u8272 */\n  background: var(--theme-color);\n  border-radius: 8px;\n  opacity: 0.25;\n  z-index: 10086;\n  pointer-events: none;\n  transition: 0.2s ease-in-out;\n  transition-property: background, opacity, transform;\n}\n\n#cursor.hidden {\n  opacity: 0;\n}\n\n#cursor.hover {\n  opacity: 0.1;\n  transform: scale(2.5);\n  -webkit-transform: scale(2.5);\n  -moz-transform: scale(2.5);\n  -ms-transform: scale(2.5);\n  -o-transform: scale(2.5);\n}\n\n#cursor.active {\n  opacity: 0.5;\n  transform: scale(0.5);\n  -webkit-transform: scale(0.5);\n  -moz-transform: scale(0.5);\n  -ms-transform: scale(0.5);\n  -o-transform: scale(0.5);\n}\n
      \u8fd9\u91cc\u6bd4\u8f83\u91cd\u8981\u7684\u53c2\u6570\u5c31\u662f\u9f20\u6807\u8ddf\u968f\u7684\u5706\u5f62\u989c\u8272\uff0c\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u559c\u597d\u8fdb\u884c\u66f4\u6539\uff1a
      #cursor {\n  /* \u8fd9\u91cc\u6539\u53d8\u8ddf\u968f\u7684\u5e95\u8272 */\n  background: rgb(57, 197, 187);\n}\n

      \u6ce8\u610f\u26a0\ufe0f

      \u9700\u8981\u5728mkdocs.yml\u4e2d\u5f15\u5165js\u548ccss

      extra_javascript:\n  - javascripts/extra.js\n  - javascripts/mathjax.js\nextra_css:\n  - stylesheets/extra.css\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/","title":"\u4e3aMKdocs\u6dfb\u52a0\u6587\u7ae0\u4fee\u8ba2\u65f6\u95f4\u6233","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      github/workflows/\u4e0b\u7684ci.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a203 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a51

      \u53c2\u8003\u65b9\u6cd5\uff1agit \u4fee\u8ba2\u65e5\u671f\u672c\u5730\u5316

      \u5229\u7528git -revision-date-localized\u63d2\u4ef6\u6dfb\u52a0\u4e86\u5bf9\u6dfb\u52a0\u4e0a\u6b21\u66f4\u65b0\u65e5\u671f\u548c\u5728\u6bcf\u4e2a\u9875\u9762\u5e95\u90e8\u521b\u5efa\u6587\u6863\u7684\u652f\u6301

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_1","title":"\u5b89\u88c5","text":"
      pip install mkdocs-git-revision-date-localized-plugin\n

      .github/workflows/\u4e0b\u7684ci.yml\u589e\u52a0\u9ad8\u4eae\u7684\u51e0\u884c\uff1a

      name: ci \non:\n  push:\n    branches:\n      - master \n      - main\npermissions:\n  contents: write\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - uses: actions/setup-python@v4\n        with:\n          python-version: 3.x\n      - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV \n      - uses: actions/cache@v3\n        with:\n          key: mkdocs-material-${ env.cache_id }\n          path: .cache\n          restore-keys: |\n            mkdocs-material-\n      - run: pip install mkdocs-git-revision-date-localized-plugin\n      - run: pip install mkdocs-git-authors-plugin\n      # - run: pip install mkdocs-rss-plugin           \n      - run: pip install mkdocs-material \n      - run: mkdocs gh-deploy --force\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_2","title":"\u914d\u7f6e","text":"

      \u7136\u540e\u5c06\u4ee5\u4e0b\u884c\u6dfb\u52a0\u5230mkdocs.yml\uff1a

      plugins:\n  - git-revision-date-localized:\n      enable_creation_date: true\n

      \u8be6\u7ec6\u7684\u914d\u7f6e\u8bf7\u770b\uff1amkdocs-git-revision-date-localized-plugin

      \u53ef\u9009\u7684\u914d\u7f6e\u5f88\u591a\uff1a

      plugins:\n  - git-revision-date-localized:\n      type: timeago #\u65f6\u95f4\u7c7b\u578b\n      custom_format: \"%d. %B %Y\"  # \u65f6\u95f4\u683c\u5f0f\n      timezone: Europe/Amsterdam #\u65f6\u533a\n      locale: en #\u9996\u9009\u8bed\u8a00\n      fallback_to_build_date: false #\u8bb8\u56de\u9000\u5230git \u4e0d\u53ef\u7528\u65f6mkdocs build\u6267\u884c\u7684\u65f6\u95f4\n      enable_creation_date: true #\u662f\u5426\u542f\u7528\u521b\u5efa\u65f6\u95f4\n      exclude:  #\u6392\u9664\u7684\u9875\u9762\n          - index.md\n      enabled: true #\u662f\u5426\u542f\u7528\n      strict: true\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/time/#_3","title":"\u6e29\u99a8\u63d0\u793a","text":"

      \u5bf9\u4e8e\u5927\u578b\u5355\u4e00\u7684\u6587\u6863\u5e93\uff0c\u6267\u884cmkdocs serve\u540e\u7684\u6e32\u67d3\u901f\u5ea6\u660e\u663e\u53d8\u6162\uff0c\u8fd9\u662f\u56e0\u4e3a\u6bcf\u6b21\u6e32\u67d3\u90fd\u4f1a\u68c0\u67e5\u6240\u6709\u6587\u4ef6\u7684git\u5386\u53f2\u8bb0\u5f55\u3002\u5982\u679c\u60a8\u4e0d\u9700\u8981\u8fd9\u4e2a\u529f\u80fd\uff0c\u53ef\u4ee5\u901a\u8fc7\u5c06enabled\u8bbe\u7f6e\u4e3afalse\u6765\u7981\u7528\u5b83\u3002

      \u6bd4\u8f83\u63a8\u8350\u8fd9\u79cd\u65b9\u6cd5:

        - git-committers:\n      enabled: !ENV [CI, false]\n
      \u4fee\u6539enabled\u7684\u7b56\u7565\uff0c\u8fd9\u6837\u5c31\u4e0d\u4f1a\u6bcf\u6b21\u672c\u5730\u6e32\u67d3\u90fd\u68c0\u67e5\u6240\u6709\u6587\u4ef6\u7684git\u5386\u53f2\u8bb0\u5f55\uff0c\u6e32\u67d3\u901f\u5ea6\u4f1a\u660e\u663e\u52a0\u5feb\uff0c\u53d1\u5e03\u7f51\u7ad9\u65f6\u5019\u4f1a\u6b63\u5e38\u663e\u793a\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/","title":"\u6dfb\u52a0\u5728\u7ebf\u804a\u5929","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u4ee5Tidio\u4e3a\u4f8b,Tidio\u514d\u8d39\u7248\u5df2\u7ecf\u5b8c\u5168\u591f\u7528\u4e14\u65e0\u9700\u68af\u5b50

      \u8bbf\u95eeTidio\u5b98\u7f51

      \u8981\u5728\u60a8\u7684\u7f51\u7ad9\u4e0a\u4f7f\u7528 javascript \u4ee3\u7801\u65b9\u6cd5\u5b89\u88c5 Tidio\uff0c\u60a8\u9700\u8981\u521b\u5efa\u4e00\u4e2a Tidio \u5e10\u6237.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a182 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a1

      \u4ee5Tidio\u4e3a\u4f8b,Tidio\u514d\u8d39\u7248\u5df2\u7ecf\u5b8c\u5168\u591f\u7528\u4e14\u65e0\u9700\u68af\u5b50

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#tidio","title":"\u8bbf\u95eeTidio\u5b98\u7f51","text":"

      \u8981\u5728\u60a8\u7684\u7f51\u7ad9\u4e0a\u4f7f\u7528 javascript \u4ee3\u7801\u65b9\u6cd5\u5b89\u88c5 Tidio\uff0c\u60a8\u9700\u8981\u521b\u5efa\u4e00\u4e2a Tidio \u5e10\u6237\u3002\u8981\u521b\u5efa Tidio \u5e10\u6237\uff0c\u8bf7\u8bbf\u95ee\u6211\u4eec\u7684\u7f51\u7ad9\uff0c\u7136\u540e\u5355\u51fb \u201c\u5f00\u59cb\u201d \u6309\u94ae\u521b\u5efa\u65b0\u7684 Tidio \u5e10\u6237\u3002\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528 \u201c\u767b\u5f55\u201d \u9009\u9879\u6765\u4f7f\u7528\u60a8\u73b0\u6709\u7684\u5e10\u6237\u3002

      \u5b89\u88c5\u8fc7\u7a0b\u5f88\u7b80\u5355\uff0c\u56e0\u4e3a\u5b83\u53ea\u9700\u8981\u60a8\u5c06\u4e00\u884c\u4ee3\u7801\u7c98\u8d34\u5230\u7f51\u7ad9\u4ee3\u7801\u7684\u9002\u5f53\u4f4d\u7f6e\u3002

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#_1","title":"\u627e\u5230\u5b89\u88c5\u4ee3\u7801","text":"

      \u53ef\u4ee5\u524d\u5f80\u201c\u8bbe\u7f6e\u201d>\u201c\u9891\u9053\u201d>\u201c\u5b9e\u65f6\u804a\u5929\u201d> \u201c\u5b89\u88c5\u201d \u90e8\u5206\u627e\u5230\u60a8\u72ec\u7279\u7684 Tidio javascript \u4ee3\u7801\u3002\u8fd8\u5c06\u5728\u5e10\u6237\u521b\u5efa\u4e4b\u65c5\u7684\u6700\u540e\u9636\u6bb5\u770b\u5230\u4ee3\u7801\u3002 \u6bd4\u5982\uff1a

      <script src=\"//code.tidio.co/6jmawe9m5wy4ahvlhub2riyrnujz7xxi.js\" async></script>\n

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/webtalknow/#_2","title":"\u653e\u5230\u4f60\u9700\u8981\u7684\u9875\u9762\u5373\u53ef","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/","title":"\u7f51\u9875\u5706\u89d2\u5316\u8bbe\u8ba1","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      png]

      \u5982\u4f55\u8bbe\u8ba1 \u65b0\u5efacss\u6587\u4ef6\uff0c\u5728mkdocs.\u793a\u4f8b [\u56fe\u7247\uff1aiShot_2024-04-26_12.png] [\u56fe\u7247\uff1aimage.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a66 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a213

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_1","title":"\u793a\u4f8b","text":"","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_2","title":"\u5982\u4f55\u8bbe\u8ba1","text":"

      \u65b0\u5efacss\u6587\u4ef6\uff0c\u5728mkdocs.yml\u5f15\u5165css

      :root {\n  --admonition-border-left-width: 0.2rem;\n  --base-border-radius: 0.5rem;\n}\n\n/* Change font family of filename present on top of code block. */\n/* .highlight span.filename {\n  border-bottom: none;\n  border-radius: var(--base-border-radius);\n  display: inline;\n  font-family: var(--md-code-font-family);\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  margin-bottom: 5px;\n  text-align: center;\n}\n.highlight span.filename + pre > code {\n  border-radius: var(--base-border-radius);\n  border-top-left-radius: 0;\n}\n.md-typeset pre > code {\n  border-radius: var(--base-border-radius);\n} */\n\n/* Customize admonition layout */\n/* .md-typeset .admonition {\n  border-width: 0px;\n  border-left-width: var(--admonition-border-left-width);\n}\n\n[dir=\"ltr\"] .md-typeset blockquote {\n  border-radius: 0.2rem;\n  border-left-width: var(--admonition-border-left-width);\n} */\n\n/* Grid Cards */\n.md-typeset .grid.cards > ul > li {\n  border-radius: var(--base-border-radius);\n}\n.md-typeset .grid.cards > ul > li:hover {\n  box-shadow: 0 0 0.2rem #ffffff40;\n}\n\n/* Markdown Button */\n.md-typeset .md-button {\n  border-radius: var(--base-border-radius);\n}\n\n/* Footer: Social Links */\n.md-social__link svg {\n  max-height: 1rem;\n}\n\n\n/* Forms */\n.md-search__form {\n  border-radius: var(--base-border-radius);\n}\n\n[data-md-toggle=\"search\"]:checked ~ .md-header .md-search__form {\n  border-top-right-radius: var(--base-border-radius);\n  border-top-left-radius: var(--base-border-radius);\n}\n\n[dir=\"ltr\"] .md-search__output {\n  border-bottom-right-radius: var(--base-border-radius);\n  border-bottom-left-radius: var(--base-border-radius);\n}\n\n/* Blog - index.md */\n/* div.md-content header {\n  display: none;\n}\n\n.md-post--excerpt {\n  background-color: var(--md-accent-fg-color--transparent);\n  box-shadow: 0 0 0 1rem var(--md-accent-fg-color--transparent);\n  border-radius: var(--base-border-radius);\n}\n\n.md-post--excerpt .md-post__header {\n  justify-content: center;\n}\n\n.md-post--excerpt .md-post__content > h2,\n.md-post__action {\n  text-align: center;\n} */\n\n/* Table */\n.md-typeset table:not([class]) {\n  border-radius: var(--base-border-radius);\n}\n\n\n\n\n\n.carousel {\n  width: 60%;\n  height: 100%;\n\n  border-radius: 0.4rem;\n  overflow: hidden;\n  position: relative;\n\n  /* \u5c45\u4e2d */\n  margin-left: auto;\n  margin-right: auto;\n\n  border: 0.075rem solid #7b7b7b7a;\n  box-shadow: var(--md-shadow-z1);\n}\n\n.carousel-container {\n  width: 100%;\n  height: 100%;\n\n  position: relative;\n  left: 0;\n\n  display: flex;\n\n  /* \u8fc7\u6e21\u52a8\u753b 1s */\n  transition: all 1s;\n}\n\n.carousel-hover {\n  height: 100%;\n  width: 10%;\n  position: absolute;\n  top: 0;\n\n  /* \u5b50\u5143\u7d20\u5782\u76f4\u5c45\u4e2d */\n  display: flex;\n  flex-flow: column nowrap;\n  align-items: center;\n  justify-content: center;\n}\n.carousel-hover.left {\n  left: 0;\n}\n.carousel-hover.right {\n  right: 0;\n}\n\n.carousel-hover button {\n  background-color: var(--md-accent-fg-color);\n  border-radius: 50%;\n\n  cursor: pointer;\n\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n.carousel-hover button::after {\n  display: block;\n  height: 1.5rem;\n  width: 1.5rem;\n\n  background-color: white;\n  content: \"\";\n  mask-position: center;\n  -webkit-mask-position: center;\n}\n.carousel-hover.left button::after {\n  mask-image: var(--md-tabbed-icon--prev);\n  -webkit-mask-image: var(--md-tabbed-icon--prev);\n}\n.carousel-hover.right button::after {\n  mask-image: var(--md-tabbed-icon--next);\n  -webkit-mask-image: var(--md-tabbed-icon--next);\n}\n\n/* hover \u5916\u5c42 */\n.carousel-hover:hover button {\n  opacity: 0.5;\n  transition: opacity 0.3s;\n}\n/* hover \u5185\u5c42 */\n.carousel-hover button:hover {\n  opacity: 0.8;\n  transition: opacity 0.3s;\n}\n\n.carousel-container a {\n  width: 100%;\n  height: 100%;\n\n  flex-shrink: 0;\n}\n\n.carousel-container img {\n  width: 100%;\n  height: 100%;\n\n  object-fit: cover;\n  display: block;\n}\n\n.carousel-bottom {\n  position: absolute;\n  /* \u5bbd\u5ea6\u7b49\u540c\u4e8e\u5185\u5bb9\u5bbd\u5ea6 */\n  width: 100%;\n  padding: 20px;\n\n  bottom: 0;\n\n  display: flex;\n  justify-content: center;\n  /* \u6307\u793a\u5668\u95f4\u8ddd */\n  gap: 10px;\n\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n.carousel-bottom:hover {\n  opacity: 0.8;\n  transition: opacity 0.3s;\n}\n\n.carousel-bottom .indicator {\n  height: 5px;\n  width: 20px;\n\n  background-color: var(--md-accent-fg-color);\n\n  opacity: 0.5;\n  cursor: pointer;\n}\n\n.carousel:hover .bottom .indicator {\n  opacity: 1;\n}\n.carousel:hover .shift .btn {\n  opacity: 1;\n}\n\n@media screen and (max-width: 600px) {\n  .carousel {\n      width: 100%;\n  }\n\n  .carousel-hover button {\n      opacity: 1;\n  }\n}\n
      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_3","title":"\u56fe\u7247\u5706\u89d2\u5316","text":"

      extra.css\u91cc\u5f15\u5165\uff1a

      img.img1 {\nborder-radius: 25px;\n\n}\n

      \u5728md\u6587\u4ef6\u91cc\u4f7f\u7528\uff1a

      ![image.png](https://s2.loli.net/2024/04/26/Czi9uAQhmbBlkfG.png){.img1}\n
      \u6548\u679c\uff1a

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_4","title":"\u5706\u89d2\u8fb9\u6846","text":"

      \u5706\u89d2\u8fb9\u6846\u5982\u4f55\u5b9e\u73b0

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#grid-cards","title":"\u5229\u7528\u5185\u7f6e\u7684grid cards","text":"
      <div class=\"grid cards\" markdown>\n\n-   :simple-materialformkdocs:{ .lg .middle } __Mkdocs\u6559\u7a0b__\n\n    ---\n\n    - [\u5229\u7528Mkdocs\u90e8\u7f72\u9759\u6001\u7f51\u9875\u81f3GitHub pages](blog/Mkdocs/mkdocs1.md)\n    - [Mkdocs\u90e8\u7f72\u914d\u7f6e\u8bf4\u660e(mkdocs.yml)](blog/Mkdocs/mkdocs2.md)\n    - [\u5982\u4f55\u7ed9MKdocs\u6dfb\u52a0\u53cb\u94fe](blog/websitebeauty/linktech.md)\n    - [\u7f51\u7ad9\u6dfb\u52a0Mkdocs\u535a\u5ba2](blog/Mkdocs/mkdocsblog.md)\n    - [Blogger](blog/index.md)\n</div>\n

      \u6548\u679c\uff1a

      • Mkdocs\u6559\u7a0b

        \u793a\u4f8b\u6587\u5b57

      ","tags":["Mkdocs"]},{"location":"blog/websitebeauty/yuanjiaohua/#_5","title":"\u6309\u94ae","text":"

      [Send Email :fontawesome-solid-paper-plane:](mailto:<wangkewen821@gmail.com>){.md-button}\n
      \u6548\u679c\uff1a Send Email

      ","tags":["Mkdocs"]},{"location":"develop/git/","title":"Git \u5b9e\u7528\u6280\u5de7","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      info

      \u539f\u6587\u5730\u5740:Git \u5b9e\u7528\u6280\u5de7{target=\"_blank\"}

      Git \u5b9e\u7528\u6280\u5de7 \u4e00\u3001\u57fa\u672c\u64cd\u4f5c 1.\u65b0\u5efa git \u4ed3\u5e93 [\u4ee3\u7801\u793a\u4f8b]

      [\u56fe\u7247\uff1a]

      [\u4ee3\u7801\u793a\u4f8b]

      2.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a199 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a48

      Info

      \u539f\u6587\u5730\u5740:Git \u5b9e\u7528\u6280\u5de7

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#git","title":"Git \u5b9e\u7528\u6280\u5de7","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#_1","title":"\u4e00\u3001\u57fa\u672c\u64cd\u4f5c","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#1-git","title":"1. \u65b0\u5efa git \u4ed3\u5e93","text":"
      git init\n
      git init -b main\n\ngit config --global init.defaultBranch main\n\ngit branch -m main\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#2","title":"2. \u514b\u9686\u8fdc\u7a0b\u4ed3\u5e93","text":"
      git clone http://git.example.com/someone/test.git\n\ngit clone http://git.example.com/someone/test.git test\n\ngit clone http://git.example.com/someone/test.git --depth=1 -b main\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#3","title":"3. \u63d0\u4ea4\u4ee3\u7801","text":"
      git add -a\n\ngit add -u\n\ngit add .\n\ngit commit\n\ngit commit -m \"first commit\"\n\ngit commit -am \"first commit\"\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#4","title":"4. \u67e5\u770b\u4ed3\u5e93\u72b6\u6001","text":"
      git status\n
      git status -s\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#5","title":"5. \u67e5\u770b\u63d0\u4ea4\u5386\u53f2","text":"

      https://git-scm.com/docs/git-log

      git log\n

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#6","title":"6. \u65b0\u5efa\u5206\u652f","text":"
      git branch test\n\ngit checkout test\n\ngit checkout -b test\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#7","title":"7. \u5408\u5e76\u5206\u652f","text":"
      git checkout main\n\ngit merge test\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#8","title":"8. \u5220\u9664\u5206\u652f","text":"
      git branch -d test-not-need\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#9","title":"9. \u5408\u5e76\u51b2\u7a81","text":"

      \u5f53\u4e24\u4e2a\u5206\u652f\u90fd\u5bf9\u540c\u4e00\u884c\u8fdb\u884c\u4e86\u4fee\u6539\uff0cgit \u4fbf\u4f1a\u4ea7\u751f\u51b2\u7a81\uff0c\u5e76\u6807\u8bb0\u4e3a\u672a\u5408\u5e76

      \u6b64\u65f6\u5c06\u6bcf\u4e2a\u6587\u4ef6\u8fdb\u884c\u4fee\u6539\uff0c\u786e\u8ba4\u6700\u540e\u7684\u5185\u5bb9\uff0c\u4f7f\u7528 git add \u65b9\u6cd5\u6807\u8bb0\u4e3a\u51b2\u7a81\u5df2\u89e3\u51b3

      git add .\\A.txt\n
      \u5728\u6240\u6709\u6587\u4ef6\u7684\u51b2\u7a81\u5747\u5df2\u89e3\u51b3\u540e\uff0c\u4f7f\u7528 commit \u63d0\u4ea4\u6b64\u6b21\u4fee\u6539\u3002

      git merge --abort\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#10","title":"10. \u8fdc\u7a0b\u4ed3\u5e93","text":"
      git remote\n

      \u9ed8\u8ba4\u5e94\u8be5\u4e3a\u7a7a

      git remote add origin http://git.example.com/someone/test.git\n\ngit push origin main\n\ngit fetch --all\n\ngit fetch origin\n\ngit branch --set-upstream-to=origin/main main\n\ngit branch -u origin/main main\n

      git push -u origin main\n\ngit pull\n\ngit pull origin main\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#_2","title":"\u4e8c\u3001\u5e38\u89c1\u6280\u5de7","text":"","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#1","title":"1. \u4e34\u65f6\u4fdd\u5b58\u6210\u679c","text":"
      git stash\n
      git stash pop\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#2-rebasemerge","title":"2. \u5408\u5e76\u5206\u652f\u7075\u6d3b\u9009\u62e9 rebase/merge","text":"
      git merge test\n\ngit rebase test\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#3-cherry-pick","title":"3. cherry-pick","text":"

      \u9002\u5408 hotfix

      git cherry-pick 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#4_1","title":"4. \u4fee\u6539\u4e0a\u6b21\u63d0\u4ea4","text":"
      git commit --amend\n

      \u4f1a\u540c\u65f6\u63d0\u4ea4\u6682\u5b58\u7684\u6587\u4ef6

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#5_1","title":"5. \u53d6\u6d88\u6587\u4ef6\u4fee\u6539","text":"
      git checkout .\\C.txt\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#6_1","title":"6. \u5f03\u7528\u63d0\u4ea4","text":"
      \u4fdd\u7559\u6587\u4ef6\ngit reset --soft 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n\n\u4e22\u5f03\u4fee\u6539\ngit reset --hard 12d654f1d701cbf7cd9abb98ce84eeef460a24a7\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/git/#7_1","title":"7. \u8865\u4e01\u6587\u4ef6","text":"
      git\ngit diff [file] > a.patch\ngit apply a.patch\n
      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/lighthouse/","title":"\u5229\u7528Lighthouse\u6d4b\u8bd5\u7f51\u7ad9\u6027\u80fd","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      png]

      \u53ef\u4ee5\u770b\u5230\u6211\u7684\u7f51\u7ad9\u6027\u80fd\u8fd8\u662f\u4e0d\u9519\u7684\uff0c\u5982\u679c\u4f60\u60f3\u6d4b\u8bd5\u81ea\u5df1\u7684\u7f51\u7ad9\u6027\u80fd\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4e00\u4e0b

      \u6253\u5f00\u8c37\u6b4c\u6216\u8005Edge\u6d4f\u89c8\u5668\uff0c\u6309F12\uff0c\u5728\u53f3\u4fa7\u70b9\"\u2795\"\u627e\u5230Lighthouse,\u70b9\u51fb\u5206\u6790\u9875\u9762\u8f7d\u5373\u53ef.

      \u53ef\u4ee5\u770b\u5230\u6211\u7684\u7f51\u7ad9\u6027\u80fd\u8fd8\u662f\u4e0d\u9519\u7684\uff0c\u5982\u679c\u4f60\u60f3\u6d4b\u8bd5\u81ea\u5df1\u7684\u7f51\u7ad9\u6027\u80fd\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4e00\u4e0b

      \u6253\u5f00\u8c37\u6b4c\u6216\u8005Edge\u6d4f\u89c8\u5668\uff0c\u6309F12\uff0c\u5728\u53f3\u4fa7\u70b9\"\u2795\"\u627e\u5230Lighthouse,\u70b9\u51fb\u5206\u6790\u9875\u9762\u8f7d\u5373\u53ef

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/vercel/","title":"\u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1","text":"

      \u5982\u4f55\u5c06 github pages \u8fc1\u79fb\u5230 vercel \u4e0a\u6258\u7ba1

      ","tags":["\u6280\u672f\u5206\u4eab"]},{"location":"develop/Markdown/MWeb/","title":"Markdown\u5199\u4f5c\u5e94\u7528\u63a8\u8350","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      MWeb Pro \u662f\u4e00\u6b3e\u9002\u7528\u4e8emacOS\u7684\u4e13\u4e1aMarkdown\u5199\u4f5c\u3001\u7b14\u8bb0\u672c\u5e94\u7528\u8f6f\u4ef6.\u559c\u6b22\u5199\u535a\u5ba2\u7684\u670b\u53cb\uff0c\u90a3\u4f60\u4e00\u5b9a\u4f1a\u9700\u8981 MWeb Pro \u8fd9\u6b3e\u8f6f\u4ef6.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a3 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a1009 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a64

      MWeb Pro \u662f\u4e00\u6b3e\u9002\u7528\u4e8emacOS\u7684\u4e13\u4e1aMarkdown\u5199\u4f5c\u3001\u7b14\u8bb0\u672c\u5e94\u7528\u8f6f\u4ef6\u3002\u559c\u6b22\u5199\u535a\u5ba2\u7684\u670b\u53cb\uff0c\u90a3\u4f60\u4e00\u5b9a\u4f1a\u9700\u8981 MWeb Pro \u8fd9\u6b3e\u8f6f\u4ef6\u3002\u4e3a\u60a8\u63d0\u4f9b\u6700\u4f73\u7684\u5199\u4f5c\u4f53\u9a8c\u3002

      Markdown \u8bed\u6cd5\u652f\u6301\uff1a

      \u4f7f\u7528 Github Flavored Markdown \u8bed\u6cd5\uff0c\u7b80\u79f0 GFM \u8bed\u6cd5\u3002\u652f\u6301\u8868\u683c\u3001TOC\u3001LaTeX\u3001\u4ee3\u7801\u5757\u3001\u4efb\u52a1\u5217\u8868\u3001\u811a\u6ce8\u7b49\u3002\u753b\u56fe\u5e93\u652f\u6301 mermaid, viz, echarts, plantuml, sequence, flow\u3002

      \u8f85\u52a9\u529f\u80fd

      \u652f\u6301\u622a\u56fe\u5e76\u7c98\u8d34\u3001\u590d\u5236\u5e76\u7c98\u8d34\u3001\u62d6\u62fd\u7b49\u65b9\u5f0f\u63d2\u5165\u56fe\u7247\u5e76\u76f4\u63a5\u663e\u793a\u5728\u7f16\u8f91\u5668\u5185\u3002\u5728\u517c\u5bb9 Markdown \u8bed\u6cd5\u7684\u60c5\u51b5\u4e0b\u652f\u6301\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002\u597d\u7528\u7684\u8868\u683c\u63d2\u5165\u548c LaTeX \u4e66\u5199\u8f85\u52a9\u3002

      \u8f93\u51fa\u529f\u80fd

      \u652f\u6301\u5bfc\u51fa\u4e3a\u56fe\u7247\u3001HTML\u3001Epub\u3001PDF\u3001RTF\u3001Docx\u3002\u652f\u6301\u53d1\u5e03\u5230 Wordpress\u3001\u5370\u8c61\u7b14\u8bb0\u3001Blogger\u3001Medium\u3001Tumblr\u7b49\u3002\u652f\u6301\u4e03\u725b\u4e91\u3001\u53c8\u62cd\u4e91\u7b49\u4ee5\u53ca\u81ea\u5b9a\u4e49\u7684\u56fe\u5e8a\u670d\u52a1\u3002

      \u5f3a\u5927\u7684\u7b14\u8bb0\u529f\u80fd

      \u5f3a\u5927\u7684\u6587\u6863\u5e93\u652f\u6301\u5206\u7c7b\u6811\u548c\u6807\u7b7e\u7ba1\u7406\u6587\u6863\uff0c\u6587\u6863\u53ef\u5f52\u7c7b\u4e8e\u591a\u4e2a\u5206\u7c7b\uff0c\u53ef\u4ee5\u628a\u5206\u7c7b\u6574\u4e2a\u5bfc\u51fa\u4e3a Epub\u3001PDF \u548c\u751f\u6210\u9759\u6001\u7f51\u7ad9\u3002\u975e\u5e38\u5408\u9002\u7528\u4e8e\u7b14\u8bb0\u3001\u4e2a\u4eba\u77e5\u8bc6\u6536\u96c6\u3001\u7ba1\u7406\u548c\u8f93\u51fa\u3002 \u5feb\u901f\u7b14\u8bb0\uff1a\u968f\u610f\u589e\u52a0\u7b14\u8bb0\u53ca\u56fe\u7247\u7b49\u7d20\u6750\uff0c\u652f\u6301\u4ee5\u5929\u4e3a\u5355\u4f4d\u628a\u589e\u52a0\u7684\u7d20\u6750\u7ec4\u5408\u5728\u4e00\u4e2a\u6587\u6863\u5185\uff0c\u65b9\u4fbf\u6574\u7406\u53ca\u8bb0\u5f55\u5386\u53f2\u6536\u96c6\u60c5\u51b5\u3002\u5feb\u901f\u641c\u7d22\uff1a\u76ee\u524d\u5df2\u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u8c03\u51fa\u641c\u7d22\u3002

      \u4ee5\u4e0b\u6458\u81eaMWeb\u5173\u4e8eMarkdown\u7684\u4ecb\u7ecd

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb","title":"\u6b22\u8fce\u4f7f\u7528 MWeb","text":"

      MWeb \u662f\u4e13\u4e1a\u7684 Markdown \u5199\u4f5c\u3001\u8bb0\u7b14\u8bb0\u3001\u9759\u6001\u535a\u5ba2\u751f\u6210\u8f6f\u4ef6\uff0c\u76ee\u524d\u5df2\u652f\u6301 Mac\uff0ciPad \u548c iPhone\u3002MWeb \u6709\u4ee5\u4e0b\u7279\u8272\uff1a

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_1","title":"\u8f6f\u4ef6\u672c\u8eab\uff1a","text":"
      • \u4f7f\u7528\u539f\u751f\u7684 macOS \u6280\u672f\u6253\u9020\uff0c\u8ffd\u6c42\u4e0e\u7cfb\u7edf\u7684\u5b8c\u7f8e\u7ed3\u5408\u3002
      • \u539f\u5219\u4e0a\uff0c\u9996\u5148\u662f\u8ffd\u6c42\u754c\u9762\u7b80\u6d01\u548c\u9ad8\u6027\u80fd\uff0c\u7136\u540e\u624d\u662f\u5f3a\u5927\u6613\u7528\uff0c\u529f\u80fd\u5168\u9762\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown","title":"Markdown \u8bed\u6cd5\uff1a","text":"
      • \u4f7f\u7528 GitHub Flavored Markdown \u8bed\u6cd5\uff0c\u7b80\u79f0 GFM \u8bed\u6cd5\u3002
      • \u652f\u6301\u8868\u683c\u3001TOC\u3001LaTeX\u3001\u4ee3\u7801\u5757\u3001\u4efb\u52a1\u5217\u8868\u3001\u811a\u6ce8\u7b49\u3002
      • \u753b\u56fe\u5e93\u652f\u6301 mermaid, viz, ECharts, PlantUML, Sequence, Flow\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_1","title":"Markdown \u8f85\u52a9\uff1a","text":"
      • \u652f\u6301\u622a\u56fe\u5e76\u7c98\u8d34\u3001\u590d\u5236\u5e76\u7c98\u8d34\u3001\u62d6\u62fd\u7b49\u65b9\u5f0f\u63d2\u5165\u56fe\u7247\u5e76\u76f4\u63a5\u663e\u793a\u5728\u7f16\u8f91\u5668\u5185\u3002
      • \u5728\u517c\u5bb9 Markdown \u8bed\u6cd5\u7684\u60c5\u51b5\u4e0b\u652f\u6301\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002
      • \u597d\u7528\u7684\u8868\u683c\u63d2\u5165\u548c LaTeX \u4e66\u5199\u8f85\u52a9\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_2","title":"Markdown \u8f93\u51fa\uff1a","text":"
      • \u652f\u6301\u5bfc\u51fa\u4e3a\u56fe\u7247\u3001HTML\u3001Epub\u3001PDF\u3001RTF\u3001Docx\u3002
      • \u652f\u6301\u53d1\u5e03\u5230 WordPress\u3001\u652f\u6301 Metaweblog API \u534f\u8bae\u7684\u670d\u52a1\u3001Wordpress.com\u3001\u5370\u8c61\u7b14\u8bb0\uff08Evernote\uff09\u3001Blogger\u3001Medium\u3001Tumblr\u3001\u8bed\u96c0\u3001Ghost\u3001\u5c11\u6570\u6d3e Matrix\u3002
      • \u56fe\u7247\u4e0a\u4f20\u670d\u52a1\uff08\u56fe\u5e8a\uff09\u652f\u6301 Imgur\u3001\u4e03\u725b\u4e91\u3001\u53c8\u62cd\u4e91\u3001\u817e\u8baf\u4e91 COS\u3001\u963f\u91cc\u4e91 OSS\u3001SM.MS\u548c\u81ea\u5b9a\u4e49\u7684\u56fe\u5e8a\u670d\u52a1\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_3","title":"Markdown \u7b14\u8bb0\uff1a","text":"
      • \u5f3a\u5927\u7684\u6587\u6863\u5e93\u652f\u6301\u5206\u7c7b\u6811\u548c\u6807\u7b7e\u7ba1\u7406\u6587\u6863\uff0c\u6587\u6863\u53ef\u5f52\u7c7b\u4e8e\u591a\u4e2a\u5206\u7c7b\uff0c\u53ef\u4ee5\u628a\u5206\u7c7b\u6574\u4e2a\u5bfc\u51fa\u4e3a Epub\u3001PDF \u548c\u751f\u6210\u9759\u6001\u7f51\u7ad9\u3002\u975e\u5e38\u5408\u9002\u7528\u4e8e\u7b14\u8bb0\u3001\u4e2a\u4eba\u77e5\u8bc6\u6536\u96c6\u3001\u7ba1\u7406\u548c\u8f93\u51fa\u3002
      • \u5feb\u901f\u7b14\u8bb0\uff1a\u968f\u610f\u589e\u52a0\u7b14\u8bb0\u53ca\u56fe\u7247\u7b49\u7d20\u6750\uff0c\u652f\u6301\u4ee5\u5929\u4e3a\u5355\u4f4d\u628a\u589e\u52a0\u7684\u7d20\u6750\u7ec4\u5408\u5728\u4e00\u4e2a\u6587\u6863\u5185\uff0c\u65b9\u4fbf\u6574\u7406\u53ca\u8bb0\u5f55\u5386\u53f2\u6536\u96c6\u60c5\u51b5\u3002
      • \u5feb\u901f\u641c\u7d22\uff1a\u76ee\u524d\u5df2\u652f\u6301\u5168\u5c40\u5feb\u6377\u952e\u8c03\u51fa\u641c\u7d22\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#markdown_4","title":"\u5916\u90e8 Markdown \u6587\u6863\uff1a","text":"
      • \u5916\u90e8 Markdown \u6587\u6863\u4f7f\u7528\u5916\u90e8\u6a21\u5f0f\u7ba1\u7406\u3002\u5916\u90e8\u6a21\u5f0f\u4f7f\u7528\u76ee\u5f55\u6811\u7684\u65b9\u5f0f\u7f16\u8f91\u548c\u7ba1\u7406\u4f60\u7684 Markdown \u6587\u6863\uff0c\u8fd8\u80fd\u5f88\u597d\u7684\u652f\u6301 GitBook\u3001Jekyll\u3001Hexo \u7b49\u7b49\u7f16\u8f91\u548c\u56fe\u7247\u63d2\u5165\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_1","title":"MWeb \u6587\u6863\uff1a","text":"

      \u5982\u679c\u8981\u66f4\u8be6\u7ec6\u4e86\u89e3 MWeb\uff0c\u5efa\u8bae\u4f60\u4e00\u5b9a\u8981\u53bb\u770b\u4e00\u4e0b\u5b98\u7f51\u7684\u5e2e\u52a9\u6587\u6863\uff0c\u7f51\u5740\u4e3a\uff1ahttps://zh.mweb.im/help.html\u3002\u6211\u4eec\u5efa\u8bae\u5728\u4f7f\u7528\u6587\u6863\u5e93\u4e4b\u524d\uff0c\u4e00\u5b9a\u8981\u9605\u8bfb\u4e00\u4e0b MWeb \u6587\u6863\u5e93\u8be6\u7ec6\u4ecb\u7ecd \u8fd9\u7bc7\u6587\u7ae0\uff0c\u4ee5\u4fbf\u66f4\u597d\u7684\u4f7f\u7528\u6587\u6863\u5e93\u3002

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_2","title":"\u5e2e\u52a9\u6211\u4eec\u6539\u8fdb MWeb","text":"

      \u5982\u679c\u4f60\u559c\u6b22 MWeb\uff0c\u60f3\u8ba9\u5b83\u53d8\u5f97\u66f4\u597d\uff0c\u4f60\u53ef\u4ee5\uff1a

      1. \u63a8\u8350 MWeb\uff0c\u8ba9\u66f4\u591a\u7684\u4eba\u77e5\u9053\u3002
      2. \u7ed9\u6211\u4eec\u53d1\u53cd\u9988\u548c\u5efa\u8bae\uff1acoderforart+2333@gmail.com
      3. \u5728 Mac App Store \u4e0a\u8bc4\u4ef7 \uff08\u5982\u679c\u662f\u5728 MAS \u4e0a\u8d2d\u4e70\u7684\u8bdd\uff09\u3002
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#gfm-mweb","title":"GFM \u8bed\u6cd5\u7b80\u4ecb\u548c MWeb \u6240\u652f\u6301\u7684\u6269\u5c55\u8bed\u6cd5","text":"","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_2","title":"\u56de\u8f66\u8f6c\u4e3a\u6362\u884c","text":"

      \u5b98\u65b9\u7684\u8bed\u6cd5\u89c4\u5b9a\u7ed3\u5c3e\u52a0 2 \u4e2a\u4ee5\u4e0a\u7a7a\u683c\u52a0\u6362\u884c\u624d\u4f1a\u8f6c\u6210\u6362\u884c\uff0c\u4e5f\u5c31\u662f <br /> \u6807\u7b7e\u3002MWeb \u4e2d\u6709\u4e2a\u9009\u9879\u53ef\u4ee5\u76f4\u63a5\u628a\u6362\u884c\u8f6c\u6210 <br />\uff0c\u4e0d\u7528\u52a0\u4e0a 2 \u4e2a\u4ee5\u4e0a\u7a7a\u683c\uff0c\u8fd9\u4e2a\u9009\u9879\u9ed8\u8ba4\u662f\u5f00\u542f\u7684\u3002\u5982\u679c\u8981\u5173\u95ed\uff0c\u8bf7\u5728\u8bbe\u7f6e\u9875\u9762\u5173\u95ed\u3002

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#task-lists","title":"\u4efb\u52a1\u5217\u8868\uff08Task lists\uff09","text":"

      Markdown \u8bed\u6cd5\uff1a

      - [ ] \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [ ]`\n- [x] \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [x]`\n

      \u6548\u679c\u5982\u4e0b\uff1a

      • \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 - + \u7a7a\u683c + [ ]
      • \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 - + \u7a7a\u683c + [x]
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_3","title":"\u56fe\u7247\u5927\u5c0f\u53ca\u5bf9\u9f50","text":"

      \u5b98\u65b9\u548c GFM \u90fd\u4e0d\u652f\u6301\u56fe\u7247\u5927\u5c0f\u8bbe\u7f6e\uff0cMWeb \u5f15\u5165\u7684\u7279\u522b\u7684\u8bed\u6cd5\u6765\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u3002\u5982\uff1a![\u56fe\u7247\u8bf4\u660e-w450](pic.jpg) \u8fd9\u6837\u8868\u793a\u8bbe\u7f6e\u56fe\u7247\u5bbd\u5ea6\u4e3a 450\u3002\u5176\u4e2d -w450 \u4e3a\u8bbe\u7f6e\u8bed\u6cd5\uff0c\u751f\u6210 HTML \u65f6\u4f1a\u81ea\u52a8\u79fb\u9664\u3002w \u8868\u793a\u8bbe\u7f6e\u5bbd\u5ea6\u3002 \u53ef\u4ee5\u770b\u51fa\uff0cMWeb \u5f15\u5165\u7684\u8bed\u6cd5\u7684\u7279\u70b9\u662f\u517c\u5bb9\u539f\u6765\u7684\u8bed\u6cd5\u548c\u4ec5\u652f\u6301\u8bbe\u7f6e\u5bbd\u5ea6\u3002

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_4","title":"\u591a\u884c\u6216\u8005\u4e00\u6bb5\u4ee3\u7801","text":"

      Markdown \u8bed\u6cd5\uff1a

      ```js\nfunction fancyAlert(arg) {\n  if(arg) {\n    $.facebox({div:'#foo'})\n  }\n\n}\n```\n

      \u6548\u679c\u5982\u4e0b\uff1a

      function fancyAlert(arg) {\n    if(arg) {\n        $.facebox({div:'#foo'})\n    }\n\n}\n

      \u8fd9\u4e2a\u8bed\u6cd5\u76ee\u524d\u5728 MWeb \u4e2d\u4f7f\u7528\uff0c\u5fc5\u987b\u524d\u540e\u7a7a\u4e00\u884c\uff0c\u624d\u4f1a\u6b63\u786e\u89e3\u6790\u3002\u6211\u89c9\u5f97\uff0c\u5728\u5199 Markdown \u6587\u6863\u8fc7\u7a0b\u4e2d\uff0c\u8fd0\u7528\u7a7a\u884c\u5f88\u6709\u5fc5\u8981\uff0c\u57fa\u672c\u4e0a\uff0c\u5757\u7ea7\u5143\u7d20\uff08\u6807\u9898\u3001\u5217\u8868\u3001\u5f15\u7528\u3001\u4ee3\u7801\u5757\u3001\u8868\u683c\u3001\u6bb5\u843d\u7b49\uff09\uff0c\u90fd\u5efa\u8bae\u524d\u540e\u7a7a\u4e00\u884c\u3002

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_5","title":"\u8868\u683c","text":"

      Markdown \u8bed\u6cd5\uff1a

      \u7b2c\u4e00\u683c\u8868\u5934 | \u7b2c\u4e8c\u683c\u8868\u5934\n--------- | -------------\n\u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e00\u683c | \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e00\u683c\n\u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e8c\u683c \u591a\u52a0\u6587\u5b57 | \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e8c\u683c\n

      \u6548\u679c\u5982\u4e0b\uff1a

      \u7b2c\u4e00\u683c\u8868\u5934 \u7b2c\u4e8c\u683c\u8868\u5934 \u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e00\u683c \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e00\u683c \u5185\u5bb9\u5355\u5143\u683c \u7b2c\u4e00\u5217\u7b2c\u4e8c\u683c \u591a\u52a0\u6587\u5b57 \u5185\u5bb9\u5355\u5143\u683c\u7b2c\u4e8c\u5217\u7b2c\u4e8c\u683c","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_6","title":"\u5220\u9664\u7ebf","text":"

      Markdown \u8bed\u6cd5\uff1a

      \u52a0\u5220\u9664\u7ebf\u50cf\u8fd9\u6837\u7528\uff1a ~~\u5220\u9664\u8fd9\u4e9b~~\n

      \u6548\u679c\u5982\u4e0b\uff1a

      \u52a0\u5220\u9664\u7ebf\u50cf\u8fd9\u6837\u7528\uff1a \u5220\u9664\u8fd9\u4e9b

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#latex","title":"LaTeX","text":"

      Markdown \u8bed\u6cd5\uff1a

      \u5757\u7ea7\u516c\u5f0f\uff1a\n```math\nx = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n```\n\n\u884c\u5185\u516c\u5f0f\uff1a ``\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N``\n

      \u6548\u679c\u5982\u4e0b\uff08\u5728\u8bbe\u7f6e\u9875\u9762\u4e2d\u542f\u7528 LaTeX \u624d\u4f1a\u770b\u5230\u6548\u679c\uff09\uff1a

      \u5757\u7ea7\u516c\u5f0f\uff1a

      x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n

      \u884c\u5185\u516c\u5f0f\uff1a \\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mweb_3","title":"MWeb \u753b\u56fe","text":"","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#mermaid","title":"mermaid","text":"

      mermaid \u662f\u6bd4\u8f83\u6d41\u884c\u7684\u753b\u56fe\u5e93\uff0c\u5b83\u652f\u6301\u6d41\u7a0b\u56fe\u3001\u987a\u5e8f\u56fe\u548c\u7518\u7279\u56fe\uff0c\u5b83\u7684\u5b98\u7f51\u4e3a\uff1ahttps://mermaidjs.github.io/ \uff0c\u5728 MWeb \u4e2d\u4f7f\u7528 mermaid \u7684\u8bed\u6cd5\u5c31\u662f\u58f0\u660e\u4ee3\u7801\u5757\u7684\u8bed\u8a00\u4e3a mermaid\uff0c\u4ee3\u7801\u5757\u4e2d\u518d\u5199\u4e0a mermaid \u7684\u753b\u56fe\u8bed\u6cd5\u5373\u53ef\uff0c\u4f60\u53ef\u4ee5\u628a\u4e0b\u9762\u7684\u8bed\u6cd5\u590d\u5236\u5230 MWeb \u4e2d\u67e5\u770b\u6548\u679c\u3002

      ```mermaid\nsequenceDiagram\n    participant Alice\n    participant Bob\n    Alice->John: Hello John, how are you?\n    loop Healthcheck\n        John->John: Fight against hypochondria\n    end\n    Note right of John: Rational thoughts <br/>prevail...\n    John-->Alice: Great!\n    John->Bob: How about you?\n    Bob-->John: Jolly good!\n```\n

      \u6548\u679c\u5982\u4e0b\uff1a

      sequenceDiagram\n    participant Alice\n    participant Bob\n    Alice->John: Hello John, how are you?\n    loop Healthcheck\n        John->John: Fight against hypochondria\n    end\n    Note right of John: Rational thoughts <br/>prevail...\n    John-->Alice: Great!\n    John->Bob: How about you?\n    Bob-->John: Jolly good!
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#echarts","title":"echarts","text":"

      echarts \u662f\u767e\u5ea6\u51fa\u54c1\u7684 js \u753b\u56fe\u5e93\uff0c\u5b83\u7684\u7f51\u5740\u4e3a\uff1ahttps://echarts.apache.org/zh/index.html\uff0c\u529f\u80fd\u975e\u5e38\u5f3a\u5927\uff0cMWeb \u652f\u6301 echarts \u7684\u4e00\u4e9b\u57fa\u672c\u7684\u7528\u6cd5\uff0c\u592a\u9ad8\u7ea7\u7684\u4e0d\u652f\u6301\u3002\u4f60\u53ef\u4ee5\u5c06\u4ee5\u4e0b\u8bed\u6cd5\u590d\u5236\u5230 MWeb \u4e2d\u8fdb\u884c\u5c1d\u8bd5\u3002\u4f60\u4e5f\u53ef\u4ee5\u53bb https://echarts.apache.org/examples/zh/index.html \u8fd9\u4e2a\u7f51\u5740\u67e5\u770b\u4e00\u4e9b\u4f8b\u5b50\uff0c\u8981\u6ce8\u610f\u7684\u662f MWeb \u53ea\u80fd\u89e3\u6790 option = {} \u8fd9\u79cd\u7b80\u5355\u7684\uff0c\u4e0d\u8fc7\u5e94\u8be5\u662f\u8db3\u591f\u4f7f\u7528\u4e86\u3002

      ```echarts\noption = {\n    xAxis: {\n        type: 'category',\n        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n    },\n    yAxis: {\n        type: 'value'\n    },\n    series: [{\n        data: [820, 932, 901, 934, 1290, 1330, 1320],\n        type: 'line'\n    }]\n};\n```\n

      \u6548\u679c\u5982\u4e0b\uff1a

      option = {\n    xAxis: {\n        type: 'category',\n        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']\n    },\n    yAxis: {\n        type: 'value'\n    },\n    series: [{\n        data: [820, 932, 901, 934, 1290, 1330, 1320],\n        type: 'line'\n    }]\n};\n
      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#footnote","title":"\u811a\u6ce8\uff08Footnote\uff09","text":"

      Markdown \u8bed\u6cd5\uff1a

      \u8fd9\u662f\u4e00\u4e2a\u811a\u6ce8\uff1a[^1]\n

      \u6548\u679c\u5982\u4e0b\uff1a

      \u8fd9\u662f\u4e00\u4e2a\u811a\u6ce8\uff1a1

      ","tags":["Markdown"]},{"location":"develop/Markdown/MWeb/#_7","title":"\u6ce8\u91ca\u548c\u9605\u8bfb\u66f4\u591a","text":"

      \u6ce8 \u9605\u8bfb\u66f4\u591a\u7684\u529f\u80fd\u53ea\u7528\u5728\u6587\u6863\u5e93\u751f\u6210\u9759\u6001\u7f51\u7ad9\u6216\u53d1\u5e03\u5230 Wordpress \u535a\u5ba2\u65f6\uff0c\u63d2\u5165\u65f6\u6ce8\u610f\u8981\u540e\u7a7a\u4e00\u884c\u3002

      1. \u8fd9\u91cc\u662f\u811a\u6ce8\u4fe1\u606f\u00a0\u21a9

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/","title":"Markdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      Markdown \u8bed\u8a00\u5728 2004 \u7531\u7ea6\u7ff0\u00b7\u683c\u9c81\u4f2f\uff08\u82f1\u8bed\uff1aJohn Gruber\uff09\u521b\u5efa.Markdown \u7f16\u5199\u7684\u6587\u6863\u53ef\u4ee5\u5bfc\u51fa HTML \u3001Word\u3001\u56fe\u50cf\u3001PDF\u3001Epub \u7b49\u591a\u79cd\u683c\u5f0f\u7684\u6587\u6863.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a2 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a662 | \u6709\u6548\u4ee3\u7801\u884c\u6570\uff1a61

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#markdown","title":"Markdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248","text":"

      \u6587\u7ae0\u5f00\u5934

      \u4ecb\u7ecd\u4e00\u4e0bMarkdown\uff1a Markdown \u662f\u4e00\u79cd\u8f7b\u91cf\u7ea7\u6807\u8bb0\u8bed\u8a00\uff0c\u5b83\u5141\u8bb8\u4eba\u4eec\u4f7f\u7528\u6613\u8bfb\u6613\u5199\u7684\u7eaf\u6587\u672c\u683c\u5f0f\u7f16\u5199\u6587\u6863\u3002Markdown \u8bed\u8a00\u5728 2004 \u7531\u7ea6\u7ff0\u00b7\u683c\u9c81\u4f2f\uff08\u82f1\u8bed\uff1aJohn Gruber\uff09\u521b\u5efa\u3002 Markdown \u7f16\u5199\u7684\u6587\u6863\u53ef\u4ee5\u5bfc\u51fa HTML \u3001Word\u3001\u56fe\u50cf\u3001PDF\u3001Epub \u7b49\u591a\u79cd\u683c\u5f0f\u7684\u6587\u6863\u3002Markdown \u7f16\u5199\u7684\u6587\u6863\u540e\u7f00\u4e3a .md, .markdown\u3002

      \u6b64\u7b14\u8bb0\u5b66\u4e60\u6458\u6284\u81eaMarkdown\u8bed\u6cd5\u5b66\u4e60 \u7cbe\u7b80\u7248\uff0c\u5b66\u4e60\u501f\u9274\u5927\u4f6c\u4e4b\u7ecf\u9a8c\uff08Ctrl C+V\uff09

      \u4e5f\u63a8\u8350\u770b:Markdown\u4e2d\u6587\u6307\u5357

      \u4e00\u4e9bMarkdown\u6587\u6863\u521b\u4f5c\u5de5\u5177\uff1a

      • Mac: MacDown, iA Writer \u6216 Marked 2
      • iOS / Android: iA Writer
      • Windows: ghostwriter \u6216 Markdown Monster
      • Linux: ReText \u6216 ghostwriter
      • Web: Dillinger \u6216 StackEdit
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_1","title":"\u6700\u5e38\u7528","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_2","title":"\u5206\u7ea7\u6807\u9898","text":"
      # \u4e00\u7ea7\u6807\u9898 (\u6ce8\u610f\u6709\u7a7a\u683c)\n## \u4e8c\u7ea7\u6807\u9898\n### \u4e09\u7ea7\u6807\u9898\n#### \u56db\u7ea7\u6807\u9898\n##### \u4e94\u7ea7\u6807\u9898\n###### \u516d\u7ea7\u6807\u9898  <!--\u6700\u591a6\u7ea7\u6807\u9898-->\n
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_3","title":"\u76ee\u5f55","text":"

      \u5728\u4efb\u610f\u4f4d\u7f6e\u63d2\u5165 [toc] \u663e\u793a\u5168\u6587\u76ee\u5f55\u7ed3\u6784

      \u793a\u4f8b\u89c1\u6587\u7ae0\u5f00\u5934\uff08\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u5f00\u5934\u67e5\u770b\u76ee\u5f55\uff09

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_4","title":"\u659c\u4f53/\u7c97\u4f53/\u5220\u9664\u7ebf/\u4e0b\u5212\u7ebf/\u80cc\u666f\u9ad8\u4eae","text":"
      *\u659c\u4f53*    _\u659c\u4f53_\n**\u7c97\u4f53**    __\u7c97\u4f53__\n***\u52a0\u7c97\u659c\u4f53***    ___\u52a0\u7c97\u659c\u4f53___\n~~\u5220\u9664\u7ebf~~\n<u>\u4e0b\u5212\u7ebf</u>\n==\u80cc\u666f\u9ad8\u4eae==\n

      \u659c\u4f53 \u659c\u4f53

      \u7c97\u4f53 \u7c97\u4f53

      \u52a0\u7c97\u659c\u4f53 \u52a0\u7c97\u659c\u4f53

      \u5220\u9664\u7ebf

      \u4e0b\u5212\u7ebf

      \u80cc\u666f\u9ad8\u4eae

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_5","title":"\u65e0\u5e8f\u5217\u8868/\u6709\u5e8f\u5217\u8868","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_6","title":"\u65e0\u5e8f\u5217\u8868","text":"
      * \u65e0\u5e8f\u5217\u8868\u9879 \u4e00\n+ \u65e0\u5e8f\u5217\u8868\u9879 \u4e8c\n- \u65e0\u5e8f\u5217\u8868\u9879 \u4e09\n
      • \u65e0\u5e8f\u5217\u8868\u9879 \u4e00
      • \u65e0\u5e8f\u5217\u8868\u9879 \u4e8c
      • \u65e0\u5e8f\u5217\u8868\u9879 \u4e09
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_7","title":"\u591a\u7ea7\u65e0\u5e8f\u5217\u8868","text":"
      * \u4eca\u5929`* + \u7a7a\u683c\u952e`\n* \u660e\u5929\n    * \u5b66\u4e60 `TAB(\u62164\u4e2a\u7a7a\u683c) + * + \u7a7a\u683c\u952e`\n    * \u8d2d\u7269\n        * \u9762\u5305\n        * \u725b\u5976\n* \u540e\u5929\n
      • \u4eca\u5929* + \u7a7a\u683c\u952e
      • \u660e\u5929
        • \u5b66\u4e60 TAB(\u62164\u4e2a\u7a7a\u683c) + * + \u7a7a\u683c\u952e
        • \u8d2d\u7269
          • \u9762\u5305
          • \u725b\u5976
      • \u540e\u5929
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_8","title":"\u6709\u5e8f\u5217\u8868/\u591a\u7ea7\u6709\u5e8f\u5217\u8868","text":"
      1. \u6709\u5e8f\u5217\u8868\u9879 \u4e00 `\u6570\u5b57 + . + \u7a7a\u683c\u952e`\n2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c\n    1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(1) `TAB(\u62164\u4e2a\u7a7a\u683c) + \u6570\u5b57 + . + \u7a7a\u683c\u952e`\n    2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2)\n        1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2).1\n3. \u6709\u5e8f\u5217\u8868\u9879 \u4e09\n
      1. \u6709\u5e8f\u5217\u8868\u9879 \u4e00 \u6570\u5b57 + . + \u7a7a\u683c\u952e
      2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c
        1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(1) TAB(\u62164\u4e2a\u7a7a\u683c) + \u6570\u5b57 + . + \u7a7a\u683c\u952e
        2. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2)
          1. \u6709\u5e8f\u5217\u8868\u9879 \u4e8c(2).1
      3. \u6709\u5e8f\u5217\u8868\u9879 \u4e09
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_9","title":"\u4efb\u52a1\u5217\u8868","text":"
      - [ ] \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [ ]`\n- [x] \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 `- + \u7a7a\u683c + [x]`\n
      • \u4efb\u52a1\u4e00 \u672a\u505a\u4efb\u52a1 - + \u7a7a\u683c + [ ]
      • \u4efb\u52a1\u4e8c \u5df2\u505a\u4efb\u52a1 - + \u7a7a\u683c + [x]
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_10","title":"\u8868\u683c","text":"

      \u7b2c\u4e00\u884c\u4e3a\u8868\u5934\uff0c\u7b2c\u4e8c\u884c\u5206\u9694\u8868\u5934\u548c\u4e3b\u4f53\u90e8\u5206(\u5982\u679c\u8868\u683c\u65e0\u6cd5\u663e\u793a\u53ef\u4ee5\u5c1d\u8bd5\u628a\u7b2c\u4e8c\u884c\u7684 - \u53d8\u4e3a --- )\uff0c\u53ef\u4ee5\u6307\u5b9a\u6240\u5728\u5217\u7684\u5bf9\u9f50\u65b9\u5f0f\uff0c\u7b2c\u4e09\u884c\u5f00\u59cb\u6bcf\u4e00\u884c\u4e3a\u4e00\u4e2a\u8868\u683c\u884c\u3002\u5217\u4e0e\u5217\u4e4b\u95f4\u7528 | \u9694\u5f00\u3002(\u6ce8\uff1a\u539f\u751f\u65b9\u5f0f\u7684\u8868\u683c\u6bcf\u4e00\u884c\u7684\u4e24\u8fb9\u4e5f\u8981\u6709 | )

      \u5bf9\u9f50\u65b9\u5f0f :- \u5de6\u5bf9\u9f50 - \u4e2d\u5fc3\u5bf9\u9f50 -: \u53f3\u5bf9\u9f50

      \u7b2c\u4e00\u5217|\u7b2c\u4e8c\u5217|\u7b2c\u4e09\u5217\n:-|-|-:\na11|a12|a13\na21|a22|a33\na31|a32|a33\n
      \u8868\u5934\u4e00 \u8868\u5934\u4e8c \u8868\u5934\u4e09 a11 a12 a13 a21 a22 a33 a31 a32 a33","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_11","title":"\u8d85\u94fe\u63a5","text":"

      [ ]\u91cc\u5199\u94fe\u63a5\u6587\u5b57\uff0c( )\u91cc\u5199\u94fe\u63a5\u5730\u5740, ( )\u4e2d\u7684\" \"\u4e2d\u53ef\u4ee5\u4e3a\u94fe\u63a5\u6307\u5b9atitle\u5c5e\u6027\uff0ctitle\u5c5e\u6027\u53ef\u52a0\u53ef\u4e0d\u52a0\u3002title\u5c5e\u6027\u7684\u6548\u679c\u662f\u9f20\u6807\u60ac\u505c\u5728\u94fe\u63a5\u4e0a\u4f1a\u51fa\u73b0\u6307\u5b9a\u7684 title\u6587\u5b57\uff0c\u94fe\u63a5\u5730\u5740\u4e0etitle\u524d\u6709\u4e00\u4e2a\u7a7a\u683c\u3002

      \u53f3\u8fb9\u662f\u94fe\u63a5[\u94fe\u63a5\u6587\u5b57](\u94fe\u63a5 \"title\")\n
      \u53f3\u8fb9\u662f\u94fe\u63a5[GitHub](https://github.com \"GitHub\")\n

      \u53f3\u8fb9\u662f\u94fe\u63a5GitHub

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_12","title":"\u63d2\u5165\u56fe\u7247","text":"

      \u683c\u5f0f\uff1a! [\u56fe\u7247\u6807\u9898] (\u56fe\u7247\u5730\u5740 \"\u56fe\u7247Title\u201d)

      \u5176\u4e2d\u56fe\u7247\u6807\u9898\u4f1a\u88ab\u67d0\u4e9b\u7f51\u7ad9\u548c\u7f16\u8f91\u5668\u663e\u793a\u5728\u56fe\u7247\u4e0b\u65b9

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_13","title":"\u63d2\u5165\u89c6\u9891","text":"

      \u683c\u5f0f\uff1a

      <iframe height= width= src=\"\u94fe\u63a5\">\n

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_14","title":"\u4ee3\u7801\u5757","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_15","title":"\u884c\u5185\u4ee3\u7801\u5757","text":"

      \u7528\u201c ` \u201d\u5de6\u53f3\u5305\u88f9\u4ee3\u7801

      `printf()` \u51fd\u6570  \n
      \u663e\u793a\u4e3aprintf() \u51fd\u6570

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_16","title":"\u591a\u884c\u4ee3\u7801\u5757","text":"

      \u7528\u201c ``` \u201d\u4e0a\u4e0b\u5305\u88f9\u4ee3\u7801\uff0c\u5728\u7b2c\u4e00\u4e2a\u201c ``` \u201d\u540e\u6dfb\u52a0\u8bed\u8a00\u540d\u79f0\u83b7\u5f97\u4e0d\u540c\u7684\u9ad8\u4eae\u6548\u679c

      \u5982\uff1acpp\uff0cpython\uff0cswift

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_17","title":"\u5bf9\u9f50\u65b9\u5f0f","text":"
      <center>\u884c\u4e2d\u5fc3\u5bf9\u9f50</center>\n<p align=\"left\">\u884c\u5de6\u5bf9\u9f50</p>\n<p align=\"right\">\u884c\u53f3\u5bf9\u9f50</p>\n
      \u884c\u4e2d\u5fc3\u5bf9\u9f50

      \u884c\u5de6\u5bf9\u9f50

      \u884c\u53f3\u5bf9\u9f50

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_18","title":"\u5206\u5272\u7ebf","text":"
      * * *\n***\n- - -\n---\n
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_19","title":"\u6362\u884c","text":"

      \u4e0d\u540cmarkdown\u7f16\u8f91\u5668\u53ef\u80fd\u6709\u4e0d\u540c\u7684\u6362\u884c\u65b9\u5f0f\uff0c\u6700\u7b80\u5355\u4e3a\u76f4\u63a5\u6572\u56de\u8f66

      markdown\u6587\u672c\u5185\u7684\u8fde\u7eed\u4e24\u4e2a\u6216\u591a\u4e2a\u56de\u8f66\u4f1a\u88ab\u66ff\u6362\u4e3a\u4e00\u4e2a\u56de\u8f66

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_20","title":"\u9ad8\u7ea7","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_21","title":"\u8bbe\u7f6e\u5b57\u4f53/\u989c\u8272","text":"
      <font face=\"\u5b8b\u4f53\" color=blue size=5>\u84dd\u8272\u7684\u5b57\uff5e</font>\n

      \u84dd\u8272\u7684\u5b57\uff5e

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_22","title":"\u5e38\u7528\u989c\u8272","text":"

      \u6d4f\u89c8\u5668\u652f\u6301\u7684\u6240\u6709\u989c\u8272\u8bf7\u8df3\u8f6c\u53c2\u8003

      \u73b0\u4ee3\u6d4f\u89c8\u5668\u652f\u6301\u7684140\u79cd\u5df2\u547d\u540d\u7684\u989c\u8272

      \u5e38\u7528\u989c\u8272\u540d\u79f0: * \u6309\u7f51\u7ad9\u987a\u5e8f\u6392\u5217 * orange pink gold yellow purple greenyellow lightgreen green aqua lightblue blue wheat brown white snow linen silver gray black

      \u6700\u5e38\u7528 \u5176\u4ed6 red greenyellow orange lightgreen yellow lightblue green pink aqua gold blue silver purple brown","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_23","title":"\u951a\u70b9","text":"

      \u4e5f\u5c31\u662f \u8df3\u8f6c

      1. [\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7b2c\u4e00\u6bb5](#jump1)\n2. [\u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7b2c\u4e8c\u6bb5](#jump2\uff09\n\n### <span id=\"jump1\">\u7b2c\u4e00\u6bb5</span>\n\n### <span id=\"jump2\">\u7b2c\u4e8c\u6bb5</span>\n
      <span id=\"now\">\u5f53\u524d\u4f4d\u7f6e</span>\n\u70b9\u51fb[\u8fd9\u91cc](#top)\u8df3\u8f6c\u5230\u5f00\u5934\n\u70b9\u51fb[\u8fd9\u91cc](#bottom)\u8df3\u8f6c\u5230\u7ed3\u5c3e\n

      \u5f53\u524d\u4f4d\u7f6e

      \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u5f00\u5934

      \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7ed3\u5c3e

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_24","title":"\u6ce8\u811a","text":"
      \u4f7f\u7528 Markdown[^1]\u53ef\u4ee5\u6548\u7387\u7684\u4e66\u5199\u6587\u6863, \u76f4\u63a5\u8f6c\u6362\u6210 HTML[^2]\u3002\n\n[^1]:Markdown\u662f\u4e00\u79cd\u7eaf\u6587\u672c\u6807\u8bb0\u8bed\u8a00\n[^2]:HyperText Markup Language \u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\n

      \u4f7f\u7528 Markdown1\u53ef\u4ee5\u6548\u7387\u7684\u4e66\u5199\u6587\u6863, \u76f4\u63a5\u8f6c\u6362\u6210 HTML2\u3002

      \u70b9\u51fb\u8fd9\u91cc\u8df3\u8f6c\u5230\u7ed3\u5c3e\u67e5\u770b\u6ce8\u811a\u7684\u663e\u793a\u6548\u679c

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_25","title":"\u591a\u7ea7\u5f15\u7528","text":"
      >>> \u8bf7\u95ee Markdwon \u600e\u4e48\u7528\uff1f - \u5c0f\u767d\n\n>> \u81ea\u5df1\u770b\u6559\u7a0b\uff01 - \u6124\u9752\n\n> \u6559\u7a0b\u5728\u54ea\uff1f - \u5c0f\u767d\n\n`[^_^]: # \u65e0\u6cd5\u663e\u793a\u65f6\u8bb0\u5f97\u7a7a\u884c`\n

      \u4e0d\u540c\u7f16\u8f91\u5668\u7684\u663e\u793a\u60c5\u51b5\u4e0d\u540c

      \u8bf7\u95ee Markdwon \u600e\u4e48\u7528\uff1f - \u5c0f\u767d

      \u81ea\u5df1\u770b\u6559\u7a0b\uff01 - \u6124\u9752

      \u6559\u7a0b\u5728\u54ea\uff1f - \u5c0f\u767d

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#latex","title":"LaTeX\u516c\u5f0f","text":"
      • \u5728\u6570\u5b66\u516c\u5f0f\u7684\u524d\u540e\u52a0$\u662f\u884c\u5185\u516c\u5f0f
      \u6211\u4eec\u5728\u521d\u4e2d\u6570\u5b66\u8bfe\u4e0a\u5df2\u7ecf\u5bf9\u4e00\u6b21\u51fd\u6570$y=x+a$\u6709\u6240\u4e86\u89e3\u3002\n

      \u6211\u4eec\u5728\u521d\u4e2d\u6570\u5b66\u8bfe\u4e0a\u5df2\u7ecf\u5bf9\u4e00\u6b21\u51fd\u6570\\(y=x+a\\)\u6709\u6240\u4e86\u89e3\u3002

      • \u5728\u6570\u5b66\u516c\u5f0f\u7684\u524d\u540e\u52a0$$\u662f\u72ec\u5360\u4e00\u884c\u7684\u516c\u5f0f
        \u4e0b\u9762\u6211\u4eec\u6765\u8ba4\u8bc6\u4e00\u4e0b\u4e8c\u6b21\u51fd\u6570$$y=ax^2+bx+c$$\n
        \u4e0b\u9762\u6211\u4eec\u6765\u8ba4\u8bc6\u4e00\u4e0b\u4e8c\u6b21\u51fd\u6570
      \\[y=ax^2+bx+c\\]
      \u884c\u5185\u516c\u5f0f\uff1a$\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N$\n\u5757\u7ea7\u516c\u5f0f\uff1a\n$$  x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a} $$\n$$ \\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} =\n1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}\n{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } } $$\n

      \u884c\u5185\u516c\u5f0f\uff1a\\(\\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N\\)

      \u5757\u7ea7\u516c\u5f0f\uff1a

      \\[x = \\dfrac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\\] \\[\\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} = 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}}{1+\\frac{e^{-8\\pi}} {1+\\ldots} } } }\\]

      \u6765\u770b\u770b\u4e24\u4e2a\u91cd\u8981\u6781\u9650

      \\[\\displaystyle\\lim_{x \\rightarrow 0}\\frac{\\sin x}{x} = 1\\] \\[\\displaystyle\\lim_{x \\rightarrow + \\infty}(1 + \\frac{1}{x})^x = e\\]","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_26","title":"\u5176\u4ed6","text":"","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_27","title":"\u8f6c\u4e49\u5b57\u7b26","text":"

      \u901a\u8fc7\u5728Markdown\u5b57\u7b26\u524d\u4f7f\u7528\\\u6765\u5ffd\u7565\uff08\u6216\u8f6c\u4e49\uff09Markdown\u683c\u5f0f\u3002

      Markdown\u5141\u8bb8\u60a8\u4f7f\u7528\u53cd\u659c\u6760\u8f6c\u4e49\u6765\u751f\u6210\u6587\u5b57\u5b57\u7b26\uff0c\u5426\u5219\u8fd9\u4e9b\u5b57\u7b26\u5728Markdown\u7684\u683c\u5f0f\u5316\u8bed\u6cd5\u4e2d\u5177\u6709\u7279\u6b8a\u542b\u4e49\u3002 \u4f8b\u5982\uff0c\u5982\u679c\u60a8\u60f3\u7528\u6587\u5b57\u661f\u53f7\u5305\u56f4\u4e00\u4e2a\u5355\u8bcd\uff0c\u5219\u53ef\u4ee5\u5728\u661f\u53f7\u4e4b\u524d\u4f7f\u7528\u53cd\u659c\u6760\uff0c\u5982\\*literal asterisks\\* *literal asterisks*

      Markdown\u4e3a\u4ee5\u4e0b\u5b57\u7b26\u63d0\u4f9b\u53cd\u659c\u6760\u8f6c\u4e49(\u4f46\u662fCSDN\u4e0d\u592a\u652f\u6301)\uff1a

      \\\u53cd\u659c\u6760\u2003`\u53cd\u5f15\u53f7\u2003*\u661f\u53f7\u2003_\u4e0b\u5212\u7ebf\u2003{}\u5927\u62ec\u53f7\u2003[]\u4e2d\u62ec\u53f7\u2003()\u5c0f\u62ec\u53f7\u2003 #\u4e95\u53f7\u2003+\u52a0\u53f7\u2003-\u51cf\u53f7\u2003.\u82f1\u6587\u53e5\u53f7\u2003!\u82f1\u6587\u611f\u53f9\u53f7

      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#html","title":"\u5185\u8054 HTML \u8bed\u6cd5/\u7279\u6b8a\u5b57\u7b26\u81ea\u52a8\u8f6c\u4e49","text":"

      \u5bf9\u4e8e Markdown \u4e2d\u672a\u5305\u542b\u7684\u6807\u7b7e, \u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 HTML\u6807\u7b7e\uff0c\u4f8b\u5982\u7528 HTML <a> \u6807\u7b7e\u66ff\u4ee3 Markdown \u7684\u94fe\u63a5\u8bed\u6cd5

      \u5728 HTML \u4e2d, \u6709\u4e00\u4e9b\u5b57\u7b26\u9700\u8981\u7279\u6b8a\u5bf9\u5f85\uff0c\u5982\u679c\u4f60\u60f3\u5c06\u5b83\u4eec\u7528\u4f5c\u5b57\u9762\u91cf, \u5219\u9700\u8981\u5c06\u5b83\u4eec\u8f6c\u4e49\u4e3a\u5b57\u7b26\u5b9e\u4f53

      \u7279\u6b8a\u5b57\u7b26 \u4ee3\u7801 & &amp; < &lt; > &gt; \" &quot; &#34; ' &apos; &#39;","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_28","title":"\u6ce8\u91ca","text":"
      <div style='display: none'>\n\u6ce8\u91ca\n</div>\n
      <!-- \u6ce8\u91ca -->\n
      [//]: # (\u54c8\u54c8\u6211\u662f\u6700\u5f3a\u6ce8\u91ca1\uff0c\u4e0d\u4f1a\u5728\u6d4f\u89c8\u5668\u4e2d\u663e\u793a\u3002)\n[^_^]: # (\u54c8\u54c8\u6211\u662f\u6700\u840c\u6ce8\u91ca2\uff0c\u4e0d\u4f1a\u5728\u6d4f\u89c8\u5668\u4e2d\u663e\u793a\u3002)\n
      ","tags":["Markdown"]},{"location":"develop/Markdown/markdown/#_29","title":"\u7a7a\u683c","text":"
      \u30101\u3011 &nbsp; \u534a\u89d2\u7684\u4e0d\u65ad\u884c\u7684\u7a7a\u767d\u683c\uff08\u63a8\u8350\u4f7f\u7528\uff09\n\u30102\u3011 &ensp; \u534a\u89d2\u7684\u7a7a\u683c\n\u30103\u3011 &emsp; \u5168\u89d2\u7684\u7a7a\u683c\n
      • \u30101\u3011 \u00a0 \u534a\u89d2\u7684\u4e0d\u65ad\u884c\u7684\u7a7a\u767d\u683c\uff08\u63a8\u8350\u4f7f\u7528\uff09
      • \u30102\u3011 \u2002 \u534a\u89d2\u7684\u7a7a\u683c
      • \u30103\u3011 \u2003 \u5168\u89d2\u7684\u7a7a\u683c

      \u540c\u65f6\u63a8\u8350\u8fd9\u4e2a\u7f51\u7ad9\u53bb\u5b66\u4e60\u57fa\u7840markdown\u8bed\u6cd5\uff1arunoob.com

      1. Markdown\u662f\u4e00\u79cd\u7eaf\u6587\u672c\u6807\u8bb0\u8bed\u8a00\u00a0\u21a9

      2. HyperText Markup Language \u8d85\u6587\u672c\u6807\u8bb0\u8bed\u8a00\u00a0\u21a9

      ","tags":["Markdown"]},{"location":"develop/designbeauty/db1/","title":"\u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u539f\u6587\uff1aNorman's Three Levels of Design

      [\u56fe\u7247\uff1a] \u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21

      \u5728\u4eba\u7c7b\u7684\u5185\u5fc3\u4e16\u754c\uff0c\u6709\u8bb8\u591a\u90e8\u5206\u8d1f\u8d23\u6211\u4eec\u6240\u8bf4\u7684\u60c5\u611f\uff0c\u603b\u7684\u6765\u8bf4\uff0c\u8fd9\u4e9b\u533a\u57df\u5171\u540c\u6784\u6210\u4e86\u60c5\u611f\u7cfb\u7edf.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a5 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a2163

      \u539f\u6587\uff1aNorman's Three Levels of Design

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_1","title":"\u5510\u00b7\u8bfa\u66fc\u2014\u60c5\u611f\u8bbe\u8ba1\u7684\u4e09\u4e2a\u5c42\u6b21","text":"

      \u5728\u4eba\u7c7b\u7684\u5185\u5fc3\u4e16\u754c\uff0c\u6709\u8bb8\u591a\u90e8\u5206\u8d1f\u8d23\u6211\u4eec\u6240\u8bf4\u7684\u60c5\u611f\uff0c\u603b\u7684\u6765\u8bf4\uff0c\u8fd9\u4e9b\u533a\u57df\u5171\u540c\u6784\u6210\u4e86\u60c5\u611f\u7cfb\u7edf\u3002\u5510\u00b7\u8bfa\u66fc\uff08Don Norman\uff09\u63d0\u51fa\uff0c\u60c5\u611f\u7cfb\u7edf\u7531\u4e09\u4e2a\u4e0d\u540c\u4f46\u76f8\u4e92\u8054\u7cfb\u7684\u5c42\u6b21\u7ec4\u6210\uff0c\u6bcf\u4e2a\u5c42\u6b21\u90fd\u4ee5\u4e00\u79cd\u7279\u6b8a\u7684\u65b9\u5f0f\u5f71\u54cd\u7740\u6211\u4eec\u5bf9\u4e16\u754c\u7684\u4f53\u9a8c\u3002\u8fd9\u4e09\u4e2a\u5c42\u6b21\u662f\u672c\u80fd\u5c42\uff0c\u884c\u4e3a\u5c42\u548c\u53cd\u601d\u5c42\u3002\u672c\u80fd\u5c42\u4e0e\u4eba\u7c7b\u60c5\u7eea\u4e2d\u56fa\u6709\u7684\u3001\u81ea\u53d1\u7684\u4ee5\u53ca\u7b26\u5408\u52a8\u7269\u6027\u7684\u7279\u6027\u76f8\u5173\uff0c\u8fd9\u4e9b\u57fa\u672c\u4e0a\u662f\u4e0d\u53d7\u4eba\u7c7b\u672c\u8eab\u63a7\u5236\u7684\u3002\u884c\u4e3a\u5c42\u6307\u7684\u662f\u4eba\u7c7b\u884c\u4e3a\u4e2d\u90a3\u4e9b\u53ef\u63a7\u7684\u65b9\u9762\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4e0b\u610f\u8bc6\u7684\u5206\u6790\u6240\u5904\u60c5\u51b5\u5e76\u4e14\u5236\u5b9a\u4ee5\u76ee\u6807\u4e3a\u5bfc\u5411\u7684\u7b56\u7565\uff0c\u4ece\u800c\u80fd\u591f\u5728\u6700\u77ed\u65f6\u95f4\u5185\u6216\u662f\u4ee5\u6700\u5c11\u7684\u884c\u52a8\u8fbe\u5230\u6548\u679c\u3002\u6b63\u5982\u5510\u00b7\u8bfa\u66fc\u6240\u8a00\uff0c\u53cd\u601d\u5c42\u662f\u6307\u201c\u6709\u610f\u8bc6\u7684\u601d\u8003\uff0c\u5bf9\u65b0\u6982\u5ff5\u8fdb\u884c\u5b66\u4e60\uff0c\u548c\u5bf9\u4e16\u754c\u8fdb\u884c\u5f52\u7eb3\u3002\u201d\u8fd9\u4e09\u4e2a\u5c42\u6b21\u4f5c\u4e3a\u60c5\u611f\u7cfb\u7edf\u7684\u4e0d\u540c\u7ef4\u5ea6\u72ec\u7acb\u5b58\u5728\uff0c\u53c8\u76f8\u4e92\u5173\u8054\uff0c\u76f8\u4e92\u5f71\u54cd\uff0c\u4ece\u800c\u521b\u9020\u4e86\u6211\u4eec\u5bf9\u4e16\u754c\u7684\u6574\u4f53\u60c5\u611f\u4f53\u9a8c\u3002

      \u5728\u5510\u00b7\u8bfa\u66fc\u7684\u300a\u60c5\u611f\u5316\u8bbe\u8ba1\uff1a\u4e3a\u4ec0\u4e48\u6211\u4eec\u559c\u6b22\uff08\u6216\u8ba8\u538c\uff09\u65e5\u5e38\u4e8b\u7269\u300b\uff08\u4e00\u672c\u8ba4\u77e5\u79d1\u5b66\uff0c\u8bbe\u8ba1\u5b66\uff0c\u53ef\u7528\u6027\u5de5\u7a0b\u9886\u57df\u6770\u51fa\u7684\u5b66\u672f\u4f5c\u54c1\uff09\u4e00\u4e66\u4e2d\uff0c\u4ed6\u5bf9\u60c5\u611f\u5316\u7cfb\u7edf\u7684\u8fd9\u4e09\u4e2a\u65b9\u9762\u6216\u5c42\u6b21\u505a\u4e86\u533a\u5206\uff08\u5b83\u4eec\u4e09\u8005\u7efc\u5408\u5f71\u54cd\u7740\u4eba\u7c7b\u7684\u60c5\u611f\u6216\u5fc3\u7406\uff09\uff0c\u5373\uff1a\u672c\u80fd\u5c42\uff0c\u884c\u4e3a\u5c42\u53ca\u53cd\u601d\u5c42\u3002\u8fd9\u4e09\u8005\u5728\u60c5\u611f\u7cfb\u7edf\u4e2d\u7d27\u5bc6\u4ea4\u7ec7\u5728\u4e00\u8d77\uff0c\u5e76\u4ee5\u5404\u81ea\u7279\u5b9a\u7684\u65b9\u5f0f\u5f71\u54cd\u8bbe\u8ba1\u3002\u4ee5\u4e0b\u662f\u4e09\u8005\u5bf9\u5e94\u7684\u76f8\u5e94\u4e09\u79cd\u8bbe\u8ba1\u5c42\u6b21\u3002

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_2","title":"\u672c\u80fd\u5c42\u8bbe\u8ba1","text":"

      \u672c\u80fd\u5c42\u8bbe\u8ba1-\u201c\u5173\u6ce8\u5916\u89c2\u672c\u8eab\u201d\u3002\u8fd9\u4e00\u5c42\u6b21\u7684\u8bbe\u8ba1\u5173\u6ce8\u7684\u662f\u4e8b\u7269\u4e2d\u53ef\u4ee5\u88ab\u76f4\u63a5\u611f\u77e5\u7684\u90a3\u90e8\u5206\u7279\u5f81\u4ee5\u53ca\u5b83\u4eec\u662f\u5982\u4f55\u8ba9\u7528\u6237\u6216\u89c2\u5bdf\u8005\u4ea7\u751f\u611f\u53d7\u7684\u3002\u4f8b\u5982\uff0c\u7956\u7236\u7684\u6000\u8868\u548c\u4e00\u4e2a\u5c0f\u7684\u58c1\u6302\u5f0f\u65f6\u949f\u4e00\u6837\u90fd\u5305\u542b\u4e86\u6700\u57fa\u672c\u7684\u8ba1\u65f6\u529f\u529f\u80fd\uff0c\u9664\u4e86\u5916\u89c2\uff0c\u4ed6\u4eec\u5728\u5185\u5728\u7279\u5f81\u4e0a\u6ca1\u6709\u4efb\u4f55\u4e0d\u540c\uff0c\u4f46\u662f\u672c\u80fd\u5c42\uff08\u6df1\u5c42\u6b21\u7684\uff0c\u65e0\u610f\u8bc6\u7684\uff0c\u4e3b\u89c2\u7684\u548c\u81ea\u53d1\u7684\u611f\u53d7\uff09\u7279\u5f81\u4f7f\u5b83\u5728\u62e5\u6709\u8005\u773c\u4e2d\u4ea7\u751f\u4e86\u533a\u522b\u3002

      \u5982\u4eca\u4ea7\u54c1\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7684\u5f88\u5927\u4e00\u90e8\u5206\u65f6\u95f4\u88ab\u7528\u5728\u672c\u80fd\u5c42\u8bbe\u8ba1\u4e2d\uff0c\u56e0\u4e3a\u5c5e\u4e8e\u540c\u4e00\u65cf\u7fa4\u7684\u4ea7\u54c1\u5f80\u5f80\u5177\u6709\u76f8\u540c\u6216\u76f8\u4f3c\u7684\u529f\u80fd\uff0c\uff08\u6bd4\u5982\u8bf4\u624b\u7535\uff0c\u6c34\u58f6\uff0c\u9762\u5305\u673a\uff0c\u53f0\u706f\uff09\uff0c\u6240\u4ee5\u66f4\u5177\u7279\u5f81\u7684\u5916\u89c2\u662f\u533a\u5206\u4ea7\u54c1\u548c\u7ade\u4e89\u8005\u7684\u5173\u952e\u56e0\u7d20\u3002\u8fd9\u4e5f\u5c31\u662f\u6211\u4eec\u6240\u8bf4\u7684\u201d\u54c1\u724c\u5316\u8bbe\u8ba1\u201d\u2014\u2014\u4e0d\u662f\u901a\u8fc7\u4ea7\u54c1\u63d0\u4f9b\u7ed9\u7528\u6237\u533a\u522b\u4e8e\u5176\u4ed6\u4ea7\u54c1\u7684\u5b9e\u9645\u5229\u76ca\uff0c\u800c\u662f\u901a\u8fc7\u5951\u5408\u7528\u6237\u7684\u6001\u5ea6\u3001\u4fe1\u4ef0\u3001\u60c5\u611f\u4ee5\u53ca\u7528\u6237\u60f3\u8981\u7684\u611f\u53d7\uff0c\u6765\u5f15\u51fa\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u60c5\u611f\u4e0a\u7684\u56de\u5e94\u3002\u8fd9\u53ef\u4ee5\u662f\u901a\u8fc7\u4f7f\u7528\u513f\u7ae5\u3001\u52a8\u7269\u6216\u662f\u5361\u901a\u5f62\u8c61\u7684\u56fe\u7247\u6765\u4f20\u8fbe\u5e74\u8f7b\u7684\u611f\u89c9\uff0c\u4e5f\u53ef\u4ee5\u662f\u901a\u8fc7\u5bf9\u8272\u5f69\uff08\u6bd4\u5982\u8bf4\uff0c\u7ea2\u8272\u5bf9\u5e94\u7740\u201c\u6027\u611f\u201c\uff0c\u9ed1\u8272\u5bf9\u5e94\u7740\u201d\u6050\u6016\u201d\uff09\uff0c\u5f62\u72b6\uff08\u6bd4\u5982\u786c\u8fb9\u7f18\u5f62\u72b6\uff09\u7684\u8fd0\u7528\uff0c\u751a\u81f3\u662f\u8fd0\u7528\u98ce\u683c\uff08\u6bd4\u5982\u88c5\u9970\u827a\u672f\uff09\uff0c\u8ba9\u4eba\u8054\u60f3\u8d77\u67d0\u4e9b\u7279\u5b9a\u7684\u65f6\u4ee3\u3002\u672c\u80fd\u8bbe\u8ba1\u65e8\u5728\u6df1\u5165\u4e86\u89e3\u7528\u6237/\u6d88\u8d39\u8005/\u89c2\u5bdf\u8005\u7684\u5934\u8111\uff0c\u5e76\u4e14\u901a\u8fc7\u7275\u52a8\u7528\u6237\u60c5\u7eea\u6765\u63d0\u5347\u7528\u6237\u4f53\u9a8c\uff08\u6bd4\u5982\u8bf4\u6539\u5584\u6574\u4f53\u89c6\u89c9\u5f62\u8c61\uff09\u6216\u662f\u670d\u52a1\u5546\u4e1a\u5229\u76ca\uff08\u6bd4\u5982\u8bf4\u4e3a\u4e86\u516c\u53f8\u6216\u4ea7\u54c1\u6240\u6709\u8005\u7684\u5229\u76ca\uff0c\u4ece\u60c5\u611f\u4e0a\u52ab\u6301\u7528\u6237\u4f7f\u4ed6\u4eec\u8fdb\u884c\u8d2d\u4e70\uff09\u3002

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_3","title":"\u884c\u4e3a\u5c42\u8bbe\u8ba1","text":"

      \u884c\u4e3a\u5c42\u8bbe\u8ba1-\u201c\u4e0e\u4f7f\u7528\u7684\u6109\u60a6\u611f\u548c\u6548\u7387\u6709\u5173\u3002\u201d\u884c\u4e3a\u5c42\u8bbe\u8ba1\u53ef\u80fd\u66f4\u66f4\u5e38\u88ab\u79f0\u4e3a\u53ef\u7528\u6027\uff0c\u800c\u4e24\u8005\u6307\u7684\u90fd\u662f\u4ea7\u54c1\u4e2d\u5b9e\u7528\u6027\u548c\u529f\u80fd\u6027\u65b9\u9762\uff0c\u6216\u662f\u662f\u6211\u4eec\u5728\u6240\u5904\u73af\u5883\u4e2d\u6240\u80fd\u4f7f\u7528\u7684\u4efb\u4f55\u4ea7\u54c1\u7684\u53ef\u7528\u6027\u3002\u884c\u4e3a\u5c42\u8bbe\u8ba1\uff08\u4ece\u73b0\u5728\u8d77\u6211\u4eec\u7528\u8fd9\u4e2a\u8bcd\u6c47\u6765\u4ee3\u66ff\u53ef\u7528\u6027\uff09\u7740\u773c\u4e8e\uff0c\u8bf8\u5982\uff0c\u7528\u6237\u5982\u4f55\u8fdb\u884c\u6d3b\u52a8\uff1b\u5982\u4f55\u5feb\u901f\u548c\u51c6\u786e\u5730\u5b9e\u73b0\u4ed6\u4eec\u7684\u76ee\u6807\u548c\u76ee\u7684\uff1b\u7528\u6237\u5728\u6267\u884c\u67d0\u4e9b\u4efb\u52a1\u65f6\u72af\u4e86\u591a\u5c11\u9519\u8bef\uff1b\u4ee5\u53ca\u4ea7\u54c1\u5982\u4f55\u5f88\u597d\u5730\u9002\u5e94\u719f\u7ec3\u548c\u7f3a\u4e4f\u7ecf\u9a8c\u7684\u7528\u6237\u7b49\u95ee\u9898\u3002

      \u884c\u4e3a\u5c42\u8bbe\u8ba1\u53ef\u80fd\u662f\u6700\u5bb9\u6613\u6d4b\u8bd5\u7684\uff0c\u56e0\u4e3a\u4e00\u65e6\u5bf9\u8c61\u7684\u7269\u7406\uff08\u6bd4\u5982\u8bf4\u624b\u67c4\u3001\u6309\u94ae\u3001\u628a\u624b\u3001\u63a7\u5236\u6746\u3001\u5f00\u5173\u4ee5\u53ca\u952e\uff09\u6216\u53ef\u7528\u90e8\u5206\u4ee5\u67d0\u79cd\u65b9\u5f0f\u88ab\u6539\u53d8\u6216\u64cd\u4f5c\uff0c\u5c31\u53ef\u4ee5\u5728\u8868\u73b0\u5c42\u5bf9\u5176\u8fdb\u884c\u8861\u91cf\u3002\u6bd4\u5982\u8bf4\uff0c\u8d1f\u8d23\u72ec\u7acb\u64cd\u4f5c\u7684\u4e24\u4e2a\u6309\u94ae\u88ab\u653e\u7f6e\u5728\u4e0d\u540c\u7684\u8ddd\u79bb\u4ece\u800c\u6d4b\u91cf\u7528\u6237\u8fde\u7eed\u5b8c\u6210\u8fd9\u4e24\u4e2a\u64cd\u4f5c\u7684\u65f6\u95f4\u3002\u6216\u8005\uff0c\u901a\u8fc7\u76f8\u540c\u7684\u64cd\u4f5c\u6765\u6d4b\u8bd5\u9519\u8bef\u7387\u3002\u6d89\u53ca\u884c\u4e3a\u5c42\u4f53\u9a8c\u7684\u4f8b\u5b50\u8fd8\u5305\u62ec\uff0c\u5f53\u6211\u4eec\u62ff\u51fa\u624b\u673a\u65f6\u80fd\u591f\u8fc5\u901f\u627e\u5230\u8054\u7cfb\u4eba\u5e76\u62e8\u6253\u53f7\u7801\u7684\u6109\u60a6\u611f\uff1b\u5728\u7535\u8111\u952e\u76d8\u4e0a\u80fd\u591f\u8f7b\u677e\u6253\u5b57\uff0c\u800c\u5728\u5c0f\u7684\u89e6\u5c4f\u8bbe\u5907\uff0c\u6bd4\u5982\u8bf4iPod Touch\u4e0a\u6253\u5b57\u5c31\u6bd4\u8f83\u56f0\u96be\uff1b\u4ee5\u53ca\u6211\u4eec\u5728\u4f7f\u7528\u4e00\u4e2a\u8bbe\u8ba1\u826f\u597d\u7684\u7535\u8111\u6e38\u620f\u624b\u67c4\uff08\u5c31\u50cf\u6211\u7684N64\u63a7\u5236\u677f\uff09\u65f6\u7684\u4eab\u53d7\u3002\u884c\u4e3a\u5c42\u9762\u672c\u8d28\u4e0a\u662f\u6307\u6211\u4eec\u56e0\u5b8c\u6210\u6216\u672a\u80fd\u5b8c\u6210\u76ee\u6807\u800c\u4ea7\u751f\u7684\u60c5\u7eea\u3002\u5f53\u4ea7\u54c1/\u7269\u54c1\u80fd\u591f\u5e2e\u52a9\u6211\u4eec\u7528\u4e00\u70b9\u70b9\u6709\u610f\u8bc6\u7684\u52aa\u529b\uff0c\u5e76\u4e14\u6574\u4e2a\u8fc7\u7a0b\u4e2d\u9047\u5230\u6700\u5c11\u7684\u56f0\u96be\u5c31\u80fd\u5b8c\u6210\u76ee\u6807\uff0c\u8fd9\u65f6\u6211\u4eec\u7684\u60c5\u7eea\u5f88\u53ef\u80fd\u662f\u79ef\u6781\u7684\u3002\u76f8\u53cd\uff0c\u5f53\u4ea7\u54c1\u9650\u5236\u6211\u4eec\uff0c\u8feb\u4f7f\u6211\u4eec\u6839\u636e\u4ea7\u54c1\u7684\u9650\u5236\u6765\u89e3\u91ca\u6216\u8c03\u6574\u6211\u4eec\u7684\u76ee\u6807\uff0c\u6216\u8005\u53ea\u662f\u8ba9\u6211\u4eec\u5728\u4f7f\u7528\u4ea7\u54c1\u65f6\u5bc6\u5207\u5173\u6ce8\u8fd9\u4e9b\u76ee\u6807\u65f6\uff0c\u6211\u4eec\u66f4\u503e\u5411\u4e8e\u4ea7\u751f\u4e00\u4e9b\u8d1f\u9762\u60c5\u7eea\u3002

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_4","title":"\u53cd\u601d\u5c42\u8bbe\u8ba1","text":"

      \u53cd\u601d\u5c42\u8bbe\u8ba1\u201c\u8003\u8651\u4ea7\u54c1\u7684\u5408\u7406\u5316\u548c\u667a\u80fd\u5316\u3002\u5173\u4e8e\u8be5\u4ea7\u54c1\u6211\u80fd\u8bb2\u8ff0\u4e00\u4e2a\u6545\u4e8b\u5417\uff1f\u5b83\u7b26\u5408\u6211\u7684\u81ea\u6211\u5f62\u8c61\uff0c\u6211\u7684\u81ea\u5c0a\u5fc3\u9700\u8981\u5417\uff1f\u201d\u8fd9\u5c31\u662f\u60c5\u611f\u8bbe\u8ba1\u7684\u6700\u9ad8\u5c42\u6b21\uff1b\u4ee3\u8868\u6211\u4eec\u6709\u610f\u8bc6\u6709\u601d\u60f3\u5730\u8fdb\u884c\u8bbe\u8ba1\uff1b\u6743\u8861\u5176\u4f18\u7f3a\u70b9\uff1b\u5229\u7528\u6211\u4eec\u66f4\u7ec6\u5fae\u548c\u7406\u6027\u7684\u4e00\u9762\u8fdb\u884c\u5224\u65ad\uff0c\u5e76\u63d0\u53d6\u4fe1\u606f\u4ee5\u786e\u5b9a\u5b83\u5bf9\u6211\u4eec\u4e2a\u4eba\u7684\u610f\u4e49\u3002\u53cd\u601d\u601d\u7ef4\u4f7f\u6211\u4eec\u80fd\u591f\u5408\u7406\u5316\u73af\u5883\u4fe1\u606f\u4ee5\u5f71\u54cd\u884c\u4e3a\u5c42\u3002\u6bd4\u5982\u8bf4\u667a\u80fd\u624b\u8868\u3002\u201d\u57fa\u4e8e\u8fd9\u4e00\u70b9\uff0c\u97e9\u56fd\u5927\u5b66\u7684\u7814\u7a76\u5458Jaewon Choi\u548cSongcheol Kim\u8003\u5bdf\u4e86\u7528\u6237\u4f7f\u7528\u667a\u80fd\u624b\u8868\u7684\u76ee\u7684\u4e3b\u8981\u662f\u57fa\u4e8e\u4e24\u4e2a\u4e3b\u8981\u56e0\u7d20\uff0c\u4e00\u79cd\u662f\u7528\u6237\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u6280\u672f\u521b\u65b0\u53e6\u4e00\u79cd\u662f\u5c06\u5176\u4f5c\u4e3a\u5962\u4f88\u65f6\u5c1a\u4ea7\u54c1\u3002\u4ece\u7528\u6237\u89c6\u89d2\u6765\u770b\uff0c\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u4e00\u9879\u6280\u672f\u521b\u65b0\uff0c\u8fd9\u4e0e\u4ed6\u4eec\u5bf9\u8bbe\u5907\u7684\u5b9e\u7528\u6027\u548c\u6613\u7528\u6027\uff08\u884c\u4e3a\u5c42\uff09\u7684\u770b\u6cd5\u6709\u5173\u3002\u53e6\u4e00\u65b9\u9762\uff0c\u7528\u6237\u5c06\u667a\u80fd\u624b\u8868\u89c6\u4e3a\u4e00\u79cd\u5962\u4f88\u65f6\u5c1a\u4ea7\u54c1\uff0c\u8fd9\u65e2\u548c\u4ed6\u4eec\u5c06\u5982\u4f55\u4eab\u53d7\u667a\u80fd\u624b\u8868\u7684\u8ba4\u77e5\uff0c\u4e5f\u548c\u667a\u80fd\u624b\u8868\u5c06\u4e3a\u4ed6\u4eec\u63d0\u4f9b\u600e\u6837\u7684\u81ea\u6211\u8868\u73b0\u529b\u6709\u5173\uff08\u5373\u8868\u8fbe\u81ea\u5df1\u548c\u589e\u5f3a\u5f62\u8c61\u7684\u80fd\u529b\uff09\u3002\u4eab\u53d7\u548c\u81ea\u6211\u8868\u8fbe\u90fd\u53d7\u5230\u672c\u80fd\u5c42\u7684\u5f71\u54cd\uff08\u201c\u624b\u8868\u770b\u8d77\u6765\u6f02\u4eae\u5417\uff1f\u201d\uff09\u4f46\u4e5f\u5f88\u53d7\u5230\u53cd\u601d\u5c42\u7684\u5f71\u54cd\uff08\u201c\u5f53\u6211\u7684\u670b\u53cb\u770b\u5230\u6211\u6234\u7740\u8fd9\u53ea\u8868\u65f6\uff0c\u4ed6\u4eec\u4f1a\u600e\u4e48\u60f3\uff1f\u201d\uff09\u3002

      \u53cd\u601d\u5c42\u8c03\u8282\u4e86\u884c\u4e3a\u5c42\u5e26\u6765\u7684\u5f71\u54cd\u2014\u2014\u7528\u6237\u5f88\u53ef\u80fd\u4f1a\u5fcd\u53d7\u667a\u80fd\u624b\u8868\u6613\u7528\u6027\u65b9\u9762\u7684\u56f0\u96be\u548c\u7f3a\u70b9\uff0c\u56e0\u4e3a\u4ed6\u4eec\u76f8\u4fe1\u4ed6\u4eec\u80fd\u4ece\u667a\u80fd\u624b\u8868\u4e2d\u83b7\u5f97\u5176\u4ed6\u975e\u529f\u80fd\u6027\u7684\u5229\u76ca\u3002\u82f9\u679c\u667a\u80fd\u624b\u8868\u7684\u7b2c\u4e00\u4e2a\u7248\u672c\u5145\u6ee1\u4e86\u529f\u80fd\u95ee\u9898\u548c\u53ef\u7528\u6027\u95ee\u9898\uff0c\u4f46\u8fd9\u5e76\u6ca1\u6709\u963b\u6b62\u82f9\u679c\u5728\u9500\u552e\u667a\u80fd\u624b\u8868\u7684\u7b2c\u4e00\u5e74\u521b\u9020\u51fa\u5168\u7403\u624b\u8868\u4ea7\u4e1a\u7684\u7b2c\u4e8c\u5927\u6536\u5165\uff01

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#the-take-away","title":"The Take Away","text":"

      \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u4ecb\u7ecd\u4e86\u5510\u00b7\u8bfa\u66fc\u7684\u4e09\u4e2a\u8bbe\u8ba1\u5c42\u6b21\uff1a\u8bbe\u8ba1\u7684\u672c\u80fd\u5c42\u3001\u884c\u4e3a\u5c42\u548c\u53cd\u601d\u5c42\u3002\u8bbe\u8ba1\u7684\u672c\u80fd\u5c42\u6307\u7684\u662f\u8bbe\u8ba1\u7684\u7b2c\u4e00\u5370\u8c61\uff0c\u65e0\u8bba\u662f\u4ece\u7528\u6237\u5982\u4f55\u770b\u5f85\u4ea7\u54c1\uff0c\u8fd8\u662f\u4ece\u7528\u6237\u5bf9\u4ea7\u54c1\u7684\u611f\u53d7\u3002\u884c\u4e3a\u5c42\u662f\u6307\u4ea7\u54c1\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u7684\u4f53\u9a8c\u3002\u5f53\u6211\u4eec\u60f3\u5230\u7528\u6237\u4f53\u9a8c\u65f6\uff0c\u6211\u4eec\u5e38\u5e38\u4f1a\u60f3\u5230\u8fd9\u4e2a\u5c42\u6b21\u3002\u53cd\u601d\u5c42\u662f\u6307\u7528\u6237\u5728\u4f7f\u7528\u524d\u3001\u4f7f\u7528\u4e2d\u548c\u4f7f\u7528\u540e\u5bf9\u4ea7\u54c1\u7684\u601d\u8003\u3002\u8fd9\u4e09\u4e2a\u5c42\u6b21\u90fd\u7ed3\u5408\u5728\u4e00\u8d77\u5f62\u6210\u4e86\u6574\u4e2a\u4ea7\u54c1\u4f53\u9a8c\u3002

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/db1/#_5","title":"\u53c2\u8003","text":"

      Choi, J., & Kim, S. (2016). \u201cIs the smartwatch an IT product or a fashion product? A study on factors affecting the intention to use smartwatches\u201d. Computers in Human Behavior, 63, 777-786.

      \u4f5c\u8005\uff1aAndreas Komninos

      \u8bd1\u8005\uff1a\u5b54

      \u5ba1\u7a3f\uff1aHoodie

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/my-to-desihn/","title":"\u6211\u5bf9\u8bbe\u8ba1\u7684\u4e00\u4e9b\u770b\u6cd5","text":"

      \ud83d\udcdd \u81ea\u52a8\u6458\u8981

      \u53bb\u9664\u4e0d\u5fc5\u8981\u7684\u5143\u7d20\uff0c\u4f7f\u8bbe\u8ba1\u66f4\u52a0\u7b80\u6d01\u660e\u4e86.\u5173\u6ce8\u6838\u5fc3\u529f\u80fd\u548c\u4fe1\u606f\uff0c\u907f\u514d\u8fc7\u5ea6\u8bbe\u8ba1\u548c\u5197\u4f59.\u4f18\u96c5\u4e0e\u7f8e\u611f\uff1a\u8ffd\u6c42\u4f18\u96c5\u548c\u7f8e\u611f\u7684\u8bbe\u8ba1.\u5f3a\u8c03\u7ec6\u8282\uff1a\u4ece\u5b57\u4f53\u9009\u62e9\u5230\u989c\u8272\u642d\u914d\uff0c\u4ece\u56fe\u6807\u8bbe\u8ba1\u5230\u52a8\u753b\u6548\u679c\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u7cbe\u5fc3\u7684\u8003\u8651\u548c\u628a\u63a7.

      \ud83d\udcd6 \u9605\u8bfb\u4fe1\u606f

      \u9605\u8bfb\u65f6\u95f4\uff1a1 \u5206\u949f | \u4e2d\u6587\u5b57\u7b26\uff1a398

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"develop/designbeauty/my-to-desihn/#some-of-my-thoughts-on-design","title":"Some of my thoughts on design","text":"\u5438\u5f15\u4eba\u7684\u4e8b\u7269\u603b\u8ba9\u4eba\u5fc3\u60c5\u6109\u60a6 \u5e76\u53cd\u8fc7\u6765\u4fc3\u8fdb\u4ed6\u4eec\u7684\u601d\u7ef4\u66f4\u5177\u521b\u610f
      1. \u7b80\u6d01\u4e0e\u7cbe\u70bc\uff1a\u7b80\u6d01\u3001\u7cbe\u70bc\u548c\u7cbe\u786e\u7684\u8868\u8fbe\u3002\u53bb\u9664\u4e0d\u5fc5\u8981\u7684\u5143\u7d20\uff0c\u4f7f\u8bbe\u8ba1\u66f4\u52a0\u7b80\u6d01\u660e\u4e86\u3002\u5173\u6ce8\u6838\u5fc3\u529f\u80fd\u548c\u4fe1\u606f\uff0c\u907f\u514d\u8fc7\u5ea6\u8bbe\u8ba1\u548c\u5197\u4f59\u3002

      2. \u4f18\u96c5\u4e0e\u7f8e\u611f\uff1a\u8ffd\u6c42\u4f18\u96c5\u548c\u7f8e\u611f\u7684\u8bbe\u8ba1\u3002\u6ce8\u91cd\u7ebf\u6761\u7684\u6d41\u7545\u6027\u548c\u89c6\u89c9\u4e0a\u7684\u5e73\u8861\u3002\u901a\u8fc7\u7cbe\u5fc3\u7684\u6392\u7248\u3001\u5bf9\u6bd4\u548c\u6bd4\u4f8b\uff0c\u521b\u9020\u51fa\u4ee4\u4eba\u6109\u60a6\u7684\u89c6\u89c9\u6548\u679c\u3002

      3. \u7528\u6237\u4f53\u9a8c\u81f3\u4e0a\uff1a\u4ee5\u7528\u6237\u4e3a\u4e2d\u5fc3,\u5173\u6ce8\u7528\u6237\u9700\u6c42\u548c\u884c\u4e3a\u6a21\u5f0f\uff0c\u521b\u9020\u51fa\u7b80\u5355\u76f4\u89c2\u3001\u6613\u4e8e\u4f7f\u7528\u7684\u4ea7\u54c1\u548c\u754c\u9762\u3002\u901a\u8fc7\u51cf\u5c11\u590d\u6742\u6027\u548c\u63d0\u4f9b\u65e0\u7f1d\u7684\u4ea4\u4e92\u4f53\u9a8c\uff0c\u4f7f\u7528\u6237\u4e0e\u4ea7\u54c1\u4e4b\u95f4\u7684\u4e92\u52a8\u66f4\u52a0\u81ea\u7136\u6d41\u7545\u3002

      4. \u5f3a\u8c03\u7ec6\u8282\uff1a\u4ece\u5b57\u4f53\u9009\u62e9\u5230\u989c\u8272\u642d\u914d\uff0c\u4ece\u56fe\u6807\u8bbe\u8ba1\u5230\u52a8\u753b\u6548\u679c\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u7cbe\u5fc3\u7684\u8003\u8651\u548c\u628a\u63a7\u3002\u7ec6\u8282\u7684\u5173\u6ce8\u4f7f\u5f97\u4ea7\u54c1\u7684\u6574\u4f53\u8d28\u611f\u66f4\u51fa\u8272\u3002

      5. \u521b\u65b0\u4e0e\u7a81\u7834\uff1a\u9f13\u52b1\u521b\u65b0\u548c\u7a81\u7834\u4f20\u7edf\u89c2\u5ff5\u7684\u601d\u7ef4\u65b9\u5f0f\u3002\u5c06\u4e0d\u540c\u7684\u5143\u7d20\u878d\u5408\u5728\u4e00\u8d77\uff0c\u521b\u9020\u51fa\u72ec\u7279\u7684\u8bbe\u8ba1\u89e3\u51b3\u65b9\u6848\u3002\u5728\u8bbe\u8ba1\u4e2d\u5bfb\u627e\u7a81\u7834\u70b9\uff0c\u63d0\u4f9b\u65b0\u9896\u800c\u5bcc\u6709\u521b\u610f\u7684\u4f53\u9a8c\u3002

      6. \u6545\u4e8b\u6027\u4e0e\u60c5\u611f\u5171\u9e23\uff1a\u60c5\u611f\u5171\u9e23\u548c\u6545\u4e8b\u6027\u7684\u4f53\u9a8c\u3002\u8bbe\u8ba1\u6765\u4f20\u9012\u4ea7\u54c1\u7684\u80cc\u540e\u6545\u4e8b\u548c\u54c1\u724c\u7684\u4ef7\u503c\u89c2\u3002\u901a\u8fc7\u7b80\u5355\u800c\u6709\u529b\u7684\u8bbe\u8ba1\u8bed\u8a00\uff0c\u6fc0\u53d1\u7528\u6237\u7684\u60c5\u611f\u5171\u9e23\u548c\u5bf9\u4ea7\u54c1\u7684\u8ba4\u540c\u3002

      \u3010\u26a1\u554a\uff01\u8bbe\u8ba1\uff0c\u662f\u4ec0\u4e48\u5462\uff1f\u26a1\u3011

      ","tags":["\u8bbe\u8ba1\u7f8e\u5b66"]},{"location":"en/","title":"Home","text":"\"Follow this arduous journey to reach the stars\"
      • Open articles by topic and table of contents
        • For Mac/PC, please select the topic in the tab bar above and select the article in the directory on the left
        • Mobile version, please click the icon in the upper left corner to select topics and articles
      • Search for keywords to open articles
      • If you encounter web page freezes or images cannot be displayed after opening an article, please use Scientific Internet Access to break information barriers

      Quick Chat(1) Contact Me(2)

      1. Click on the bottom right corner to chat with me online.
      2. Wechat:18939533255
      • Mkdocs Tutorial

        • Deploy static web pages to GitHub pages with Mkdocs
        • Mkdocs deployment configuration explanation (mkdocs.yml)
        • How to add friends links to MKdocs
        • Adding Mkdocs blog to website
        • Blogger
      • About

        • Mkdocs-Wcowin blog theme community
        • Message Board1
        • Blogger Learn about me2

      This site is already running

      1. The sun always warms sunflowers\u00a0\u21a9

      2. All problems in computer science can be solved by another level of indirection\u00a0\u21a9

      "},{"location":"blog/archive/2025/","title":"2025","text":""},{"location":"blog/archive/2024/","title":"2024","text":""},{"location":"blog/archive/2023/","title":"2023","text":""},{"location":"blog/archive/2022/","title":"2022","text":""},{"location":"blog/archive/2021/","title":"2021","text":""},{"location":"blog/category/%E7%BD%91%E7%AB%99%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95/","title":"\u7f51\u7ad9\u66f4\u65b0\u8bb0\u5f55","text":""},{"location":"blog/category/hello-world/","title":"Hello World","text":""}]} \ No newline at end of file