MkDocs 开发工具
2026-04-02
- https://www.mkdocs.org/
- https://github.com/mkdocs/mkdocs
- BSD-2-Clause license
- 21.9K stars
- Python
- 当前版本:Version 1.6.1 (2024-08-30)
- https://squidfunk.github.io/mkdocs-material/
- https://github.com/squidfunk/mkdocs-material
- MIT license
- 26.4K stars
- Python
MkDocs 是一个用 Python 编写的、快速、简洁且功能强大的静态网站生成器,专门用于创建项目文档。
它的核心设计理念是简单易用,其主要特点包括:
- 文档即源码:使用易于编写的 Markdown 格式来撰写内容,通过一个 YAML 配置文件 (
mkdocs.yml) 来管理网站导航和设置。
- 即时预览:内置开发服务器,支持在编写文档时实时预览更改。
- 主题化:拥有丰富的主题系统(如广受欢迎的 Material for MkDocs 主题),可以轻松定制网站外观。
- 插件化架构:这是其早期获得成功的关键,允许通过插件扩展其功能(如支持代码文档生成、SEO优化等)。
核心工作流程非常简单:
- 在
docs 文件夹中编写 Markdown 文件。
- 配置
mkdocs.yml 文件,定义网站结构。
- 运行
mkdocs build 命令生成一个完整的静态网站(通常是 HTML、CSS、JS 文件)。
- 可以轻松地将生成的站点部署到 GitHub Pages、Netlify 等托管服务。
MkDocs 因其极低的学习成本和优雅的输出效果,长期以来是 Python 生态乃至更广技术社区中创建项目文档的首选工具之一。
项目的崩塌与生态分裂始末
The Slow Collapse of MkDocs
这篇文章复盘了 Python 静态站点生成器 MkDocs 从 2014 年诞生到 2026 年陷入“慢速崩塌”的全过程。
核心矛盾在于:创始人回归后推行破坏生态的激进重构(v2),与社区长期维护者及插件生态爆发激烈冲突,最终导致项目分裂。
核心冲突:技术路线与社区治理的撕裂
- v2 激进重构:创始人 @lovelydinosaur 主导的 MkDocs 2.0 计划移除插件系统,改为私有开发模式,被社区视为“开倒车”和背离开源精神。
- 生态断裂:Material for MkDocs(最受欢迎的主题)因 v2 不兼容宣布进入维护模式,并另起炉灶开发 Zensical。
- 权力斗争:前核心维护者 @oprypin 因权限被削与创始人产生激烈冲突,甚至上演了短暂的 PyPI 仓库“夺权”闹剧。
时间线:从繁荣到分裂
| 时间 |
关键事件 |
影响 |
| 2014-2021 |
项目诞生,@waylan 长期单核维护 |
项目成熟但进展缓慢 |
| 2021-2024 |
@oprypin 接手,进入活跃维护期 |
功能迭代稳定,生态繁荣 |
| 2024 |
创始人回归,@oprypin 被削权出走 |
核心开发停滞,社区分裂 |
| 2025-2026 |
MkDocs v2 公布(无插件),Material 停更 |
生态彻底崩塌,替代品涌现 |
当前格局:三分天下
MkDocs 的生态位已被三个竞品瓜分:
- ProperDocs (@oprypin):MkDocs 1.x 的延续,强调向下兼容和插件生态。
- https://properdocs.org/
- https://github.com/ProperDocs/properdocs
- BSD-2-Clause license
- 80 stars
- Python
-
Zensical (@squidfunk):Material 团队重写,性能更强,旨在成为下一代标准。
- https://zensical.org/
- https://github.com/zensical/zensical
- MIT license
- 4.1K stars
- Rust
Zensical is a modern static site generator designed to simplify building and maintaining project documentation. It's built by the creators of Material for MkDocs and shares the same core design principles and philosophy – batteries included, easy to use, with powerful customization options.
-
MaterialX (@jaywhj):Material for MkDocs 的社区延续版本。
- https://jaywhj.github.io/mkdocs-materialx/
- https://github.com/jaywhj/mkdocs-materialx
- MIT license
- 87 stars
- Python
根本原因复盘
- 治理失败:创始人长期缺席后突然回归“夺权”,无视社区贡献者的历史功绩和现有生态。
- 技术独裁:在未达成共识的情况下,强行推行破坏性变更,且拒绝公开协作。
- 生态反噬:当核心工具(Material)与上游(MkDocs)决裂,用户被迫用脚投票,导致项目事实性死亡。
开发工具
2025-09-29
Ubuntu 上 VSCode 打不开,应该是哪里报错了。
没空折腾,就直接安装一个 Subline Text 满足基本文档编辑需求。
-> % wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo tee /etc/apt/keyrings/sublimehq-pub.asc > /dev/null
-> % echo -e 'Types: deb\nURIs: https://download.sublimetext.com/\nSuites: apt/stable/\nSigned-By: /etc/apt/keyrings/sublimehq-pub.asc' | sudo tee /etc/apt/sources.list.d/sublime-text.sources
Types: deb
URIs: https://download.sublimetext.com/
Suites: apt/stable/
Signed-By: /etc/apt/keyrings/sublimehq-pub.asc
-> % sudo apt update
-> % sudo apt search sublime
-> % sudo apt install sublime-text
- Ctrl + Shift + P,输入 Install Package Control
- Ctrl + Shift + P,输入 Package Control: Install Package,弹出来的搜索框中输入 ChineseLocalizations,选中点击安装。
- 几秒之后,等中文包安装好,UI 就换成中文显示了。
备注:快捷键
Shift + Alt + Up/Down: 多行编辑
开发工具
2025-05-24
几年前就用过 sunny,这次因为一些特殊场景又要用到网络穿透,又捡起来了。
- 先在他们官网上创建隧道(选择本地地址,还有远程端口)
- 下载 sunny 程序(他们定制的 ngrok 客户端)
- 执行他们隧道管理页面提供的命令 sunny --server=free.idcfengye.com:4443 --key=xxxx 就行了
如果临时使用一下的话,nuhup + & 就够:
nuhup sunny --server=free.idcfengye.com:4443 --key=xxx &
如果要求更高,那就用 systemd 保活:
sudo vim /etc/systemd/system/sunny-eqr.service
sudo chmod 644 /etc/systemd/system/sunny-eqr.service
sudo systemctl enable sunny-eqr.service
sudo systemctl start sunny-eqr.service
sudo systemctl status sunny-eqr.service
需要吧把注删除
[Service]
ExecStart=/home/catroll/Documents/Mine/sunny --server=free.idcfengye.com:4443 --key=xxx
Restart=always
RestartSec=3
# 每10秒检查一次 (程序不支持 watchdog 协议)
# WatchdogSec=10
# 启动前等待2秒
ExecStartPre=/bin/sleep 2
# 自定义停止命令
ExecStop=/usr/bin/pkill -f sunny
# 限制最大内存使用
MemoryMax=512M
# 限制CPU使用率
CPUQuota=80%
先配置 ssh 证书信任,然后就关闭密码登录,后续就通过证书认证。
# 将自己的公钥配置到服务器上(在本地执行)
ssh-copy-id -i /path/to/id_rsa -p 10022 admin@free.idcfengye.com
# 修改服务器 ssh 配置(在服务器执行)
# PermitRootLogin no
# PasswordAuthentication no
sudo vim /etc/ssh/sshd_config
sudo systemctl restart sshd
# 测试链接情况(在本地执行)
ssh -i /path/to/id_rsa -p 10022 admin@free.idcfengye.com
DB 开发工具 macOS
2024-06-24
今天,办公电脑出了故障(电源坏了),我切换到 MacBook 工作。
用了很多年的 HeidiSQL 没有 Mac 版本,只能用跨平台的 DBeaver 社区版了。
brew install --cask dbeaver-community
-
安装目录:
Windows: C:\Users\nosch\AppData\Local\DBeaver
MacOS: /Applications/DBeaver.app/
-
配置文件目录:
Windows: C:\Users\nosch\AppData\Roaming\DBeaverData
Ubuntu: ~/snap/dbeaver-ce/current/.local/share/DBeaverData
MacOS: ~/Library/Application Support/DBeaverData
$ tree -a
.
├── .workspaces
├── drivers // 驱动相关,忽略
├── secure
│ └── secure_storage
├── settings
│ └── global-settings.ini
└── workspace6
├── .metadata // 忽略
└── General
├── .dbeaver
│ ├── credentials-config.json
│ ├── data-sources.json
│ └── project-settings.json
├── .project
└── .settings
└── org.eclipse.core.resources.prefs
PS: 默认给我创建的工作区叫做:workspace6
PS:用户配置在 workspace6/General/.dbeaver/ 目录,连接信息在 data-sources.json 中,但是密码是加密的,保存在 credentials-config.json 中。
-
创建第一个 MySQL 数据库连接时,需要下载 MySQL 驱动。
DBeaver 支持几十种不同的库,包括 NoSQL,例如 MongoDB 和 Redis,不过 NoSQL 功能需要付费,每个月几十刀。
从 HeidiSQL 导出配置文件到 DBeaver
我之前有一个脚本导出 HeidiSQL 数据库配置到 JSON 文件中。
这次直接写一个脚本来从 JSON 同步到 DBeaver 配置文件。
配置文件同步
ln -sf ~/Documents/Mine/Sync/DBeaver ~/Library/DBeaverData/workspace6/General
开发工具 计算机网络 VPN NAT iptables
2023-04-23
2021/05/09,VPN 与 NAT 讲了我使用 Windows route 命令和 Linux iptables 命令做 NAT,实现 Windows 机器的 VPN 流量走 Linux 的指定网络设备。
现在情况可能会发生一些新的变化,所以这里记录一下我的几点思路。
开发工具
2023-03-31
之前用过 Sunny-Ngrok,注册一个账号,有免费的套餐,有很多种方式部署使用。
刚发现现在要搞实名认证,而且只有付费才能使用。
在网上搜索了一下,发现一个好用的内网穿透工具:内网云。免费,然后更方便。
不需要注册,用的 SSH 方案,只需要一行 ssh 命令,做一个远程端口转发,就能实现内网穿透。
给了我这样的开发者非常大的便利。希望能一直用下去~
ssh -R 80:127.0.0.1:8080 sh@sh3.neiwangyun.net
Welcome to network server by neiwangyun.net
current server node : sh3.neiwangyun.net
----------------------------------------------------------
Basic Tunnel Information
username : sh
type : anonymous
subdomain : sxxelgxzm6efshsh3.neiwangyun.net
remote_ip : 121.60.84.218
bandwidth : 2 Mbps
expire_time : 2 hours
unid : d8scvjne5lt2c3svr2rny...
----------------------------------------------------------
Local Server
local server: 127.0.0.1:8000
----------------------------------------------------------
Access to the Tunnel
cname : not support
http : http://sxxelgxzm6efshsh3.neiwangyun.net
https : https://sxxelgxzm6efshsh3.neiwangyun.net
ipport : sxxelgxzm6efshsh3.neiwangyun.net:25207
----------------------------------------------------------
Ctrl+C Exit Process
Git 开发工具
2022-01-17
读到微信公众号文章 本地如何配置多个 GitHub/Gitee 账号?,想起了几年前,面对这样的需求,我自己也是这么操作的。
Linux Curl dig 开发工具 DNS
2021-12-17
:) 本文正在编辑中,暂时不提供浏览...
开发者 开发工具 在线服务
2021-11-18
编辑器
SSH
数据库 GUI
Redis GUI
虚拟化与容器
- VirtualBox
- Vagrant
- Docker
编程相关
- gitg
- Beyond Compare 可以一直试用
- Meld Linux 下的简化版 Beyond Compare
其他
在线服务
Git 开发工具
2021-08-04
看到有篇文章说是 git “新增”了 switch 和 restore 两个命令,仔细一看,原来就是 2019 年就引入了的两个命令,不过我确实没有用过。
这里重新整理一下现在 git 的命令。
git version
git version 2.30.2
apt list --installed | grep ^git
git-doc/hirsute,hirsute,now 1:2.30.2-1ubuntu1 all [已安装]
git-extras/hirsute,hirsute,now 6.1.0-1 all [已安装]
git-flow/hirsute,hirsute,now 1.12.3-1 all [已安装]
git-man/hirsute,hirsute,now 1:2.30.2-1ubuntu1 all [已安装,自动]
git-svn/hirsute,hirsute,now 1:2.30.2-1ubuntu1 all [已安装]
git/hirsute,now 1:2.30.2-1ubuntu1 amd64 [已安装]
gitg/hirsute,now 3.32.1-1 amd64 [已安装]
gitk/hirsute,hirsute,now 1:2.30.2-1ubuntu1 all [已安装]