|
2026年4月 · 最近在干些什么
从 ESP32 到云服务器:一个 90s 个人博客的诞生
网站框架搭建
从 ESP32 到云服务器
心血来潮打算做一个偏 WEB 1.0
风格的个人博客。上一次开放个人博客还是在疫情之前。最初服务器部署在
ESP32-S3 上,后来迁移到了云服务器——ESP32 的性能还是有些力不从心。
近两年越来越偏爱中古硬件,因此整体采用接近 Windows 95
时代的技术风格:纯静态 HTML 构建,1024×768 分辨率最佳,特别针对 IE5.5
做了兼容性优化。
组件化模板 & 自动化构建
网站采用 PowerShell 构建脚本驱动,HTML 模板分离到
src/components/ 目录。header、banner、sidebars、footer
各自独立,通过 placeholder
注入数据。构建时自动扫描博客元数据(date、title、tags),支持草稿模式(<!-- draft: true -->)。
脚注 & 自定义 TOC
实现了
[^N]
脚注系统,引用自动转上标锚点,定义列表渲染在文末,双向跳转。支持跨行定义和多段落脚注。文章顶部可用
<!-- toc: 标题 | #锚点 -->
自定义侧边栏目录,为空时回退到标题自动提取。
|
留言板进化
CGI + TXT 存储
留言板采用 CGI 处理提交,pipe 分隔的 txt 文件存储。构建时读取最后 20
条留言注入页面,无需数据库。支持填写邮箱、显示/隐藏 IP(复选框)。
邮件回复通知
留言中 @用户名 会自动检测并发送邮件通知。支持 QQ Foxmail
SMTP(端口 465 SSL),邮件模板为 90s 复古风格——表格布局 + 3D 边框 +
Win95 配色。回复按钮自动填入 @mention。
博客编辑器
开发了 Web
端编辑器(/cgi-bin/editor.py),格式化工具栏、表格生成、脚注插入、字符计数、新窗口预览。兼容
IE5.5(TextRange 选区回退、String.trim
polyfill)。支持中英双语内容编辑和文章列表管理。
|
中英双语 & 国际化
全站支持中英双语切换,构建脚本支持 -Lang 参数
全部 8 篇博文及首页完成英文翻译,英文内容目录分离至
blog/en/
双侧边栏、归档页、标签云全部双语化
新增英文版侧边栏(sidebar-left-en.html、sidebar-right-en.html)
修复归档/标签页语言切换 URL 占位符问题
|
工具箱 & 实用功能
新增工具箱页面(/cgi-bin/toolbox.py):Base64/URL
编解码、MD5/SHA
哈希、时间戳转换、字符字数统计、大小写转换、密码生成器(随机/PIN/可记忆单词)、IP
查询
站内搜索(免 JS),CGI 全文匹配 search_index.txt
RSS 订阅源 + sitemap.xml,修复中文乱码
文章标签云页面,支持按标签筛选
文章归档页,按年-月分组展示
自定义 404 页面
服务器日志记录与旧日志自动 gzip 压缩
|
其他改进
全站文件统一 UTF-8 编码,修复 UTF-16LE 兼容问题
去除主内容区全局 <center> 包裹,标题独立居中
/index.html → / 301 重定向
老网站收藏 扩充至 26
个站点(OldWeb.today、ClassicReload、Marginalia Search 等)
新增功能示例文章,覆盖全部功能用法
侧边栏增加最新文章列表 + 更新日志
博客底部上一篇/下一篇导航,按日期自动排序
web_server.py 新增 nolog 参数
|
修 Bug 记录
脚注跨行匹配:多行定义不再被 </font> 截断
editor.py CGI POST 重复读取:stdin 被消费两次导致表单字段丢失
留言板 Email 输入框 name 属性重复,邮箱从未被保存
RSS 中文乱码:Get-Content 需显式指定
-Encoding UTF8
路径穿越漏洞:/cgi-bin/../../data/ 可绕过保护目录
构建脚本 $ 字符转义错误导致脚注定义移除失败
editor.py 换行符往返编辑时 \r 残留导致多余空行
|
—— 写于 2026 年 4 月 27 日,一个漫长的四月周末
|
|