小屋也算是迎来一周年纪念日了,真是可喜可贺可喜可贺。
其实我自己早已记不清小屋到底是什么时间建的了,最早使用的主题的相关仓库都已经删掉了,没法通过查 commit 记录来获取时间,所以就用了小屋的发布时间来作为小屋的建立时间。
这篇文章也是 7 月初就开了草稿――因为我知道自己有多能拖更 拖了多久了都,8 月再开坑包写不完的。开坑的契机则是看到首页侧边栏的建站时间已经变成了一年(dayjs 的相对时间默认逻辑似乎是满 10 个月就显示一年),才意识到已经建站快一周年了。
回望过去一年#
新的一年开始前,总得回头看看吧。有的博主会把过去一年以来的站点数据都搬上来,不过我在从 Hexo 迁移到 Astro 之后,直到最近部署了 GoatCounter 为止,将近半年的时间里没有使用网站统计工具,我之前用的自建 Unami 也把库都删了,所以这里没什么可以放的。不过也可以放一点 GoatCounter 一个月以来的访问统计数据:
第二名真是毫不意外,这种东西看的人就是多。第三名倒是有些小意外,没想到 Typst 会是第三名虽然和前两名有断崖般差距。从 GoutCounter 的操作系统统计数据来看,GoatCounter 统计到的大部分访问量应该都是活人贡献的,毕竟 AI 爬虫怎么想都会用 Linux 吧()。
统计的部分到这里就差不多了,一个月的数据也没啥好看的,只写这么点东西也不够一篇文章的量,索性再详细聊聊里写过的东西吧。去年 8 月的暑假,抱着分享我辛辛苦苦写的的想法,先是去了 CSDN,结果我当时没有密码管理器,把以前注册的账号密码给忘了;然后去了博客园,结果当时博客园正处于困难阶段,到处筹钱,加上还要实名申请发博客的功能,也就放弃了这个选项;最后便盯上了独立博客,使用搜索引擎找到了静态博客里用得最多的 Hexo,挑了个还将就的主题 Fluid,便使用 GitHub Pages 搭建了这个博客,发布了我的。
显然,这种专业性稍微强一点的东西,除了和我一样被计算数学折磨的冤种外,是没什么人看的。于是我就水了一个,顺便给博客加上了 Twikoo 评论系统,以及去 Bing 把博客给收录了(还)。
Fluid 主题挺美观的,该有的什么 SEO 啊什么 PWA 啊都有,但一些花里胡哨的功能就比较欠缺了。在后,我决定换成一个自带更多花里胡哨功能的主题。Hexo 博客里,比较出名的就是张洪Heo 的了。我从星港的主题链接了解到了 Solitude 主题,其效果足够炫酷,所以最终选择了这一主题。
Solitude 主题的持久度比较高,我用了刚好半年时间(2024.09 - 2025.03)。刚开始对于这个主题我还是非常喜欢的,经过了一番简单的魔改,把它变成了自己喜欢的样子。但很快,Hexo 的弊病就暴露出来了。
Hexo 是一个比较古老的静态站点框架――React 和 Hexo 是同一时代的产物,而 React 就是现代 Web 框架本身。所以,Hexo 使用的是现代 Web 框架以前的字符串拼接技术生成 HTML,并且至今也只支持直接使用 CommonJS。后者在 hexo-highlighter-shiki 的初步开发中给了我不小苦头,最后还是抄了别人的代码,靠 ESBuild 打包解决了问题。在和 Shiki 进行搏斗的时候,我在文档里看到 Astro 是默认使用 Shiki 进行代码高亮渲染的,所以心中也就种下了改用 Astro 写一个自己的博客主题的想法。
真正付诸实践则是在 25 年的 1 月初,此时的我考研失败,只有毕业论文需要花时间,于是便开始鼓捣起了博客。当时的我对 Astro 几乎没有了解,对 TypeScript 的了解仅限于给 Solitude 魔改和贡献时的那一小点积累,从 GitHub 上拉了 Fuwari 的源码下来就直接边抄边写边学,少量借用 LLM 补全,花费两个多月完成了一个基本可用的博客主题 Astral Halo。
在完成绝大部分需要的功能以后,博客的开发也就放慢了脚步(事实上,抛开周年纪念前的小装修不谈,上次修改博客源码已经是一个月前了)。博客文章也放慢了脚步,六月七月都是月更状态。并不是我没写东西,只是单纯没写完不能发出来,比如拖了大半年的的中下两篇其实都写了一半多点,还有另外两篇完成度比较高但是一直拖着没写完的文章没发。开的只有标题和一点点思路的坑也有四五个,没有整理和扩充的随笔草稿也一大堆,只是单纯的不想动。除去杂谈和经验以外,我还是希望写点新的东西的,比如找一个自己比较感兴趣又比较小众的东西,深挖一下历史,然后写出来,目前开的坑有:排版、终端、TSF1 作品。写完不一定会发出来,尤其是最后那个肯定是含 NSFW2 内容的,发出来需要做一些心理准备。
新的开始#
可能有人注意到了,小屋文章的永久链接不一样了。小屋最初使用 Hexo 的 abbrlink 插件,为每个文章生成随机字符串,作为永久链接使用。当时的考量是这样一来,修改标题也不会影响链接,不会导致标题和链接对不上。后来我才发现这是个伪需求――我压根不会去改已发布文章的标题,文章更新量也轮不到我费心思去想不重复的标题。所以正好在一周年之际,我把博客文章的永久链接换成了有意义的英文字符串。
当然永久链接需要处理的事情也不能少――我在修改旧文章永久链接时,也加上了对旧永久链接的重定向,就像之前我更换博客主题并舍弃部分主题特定文章时那样。好在文章不算太多~~(拖更还骄傲上了)~~,花了一点时间挨个在 astro.mjs 里加上了路径重定向。此外,我还删掉了一些现在看来并无用处的和重复的标签,重新整理了一遍过去的文章。
下一步准备使用 API 重构一下目前使用 RSS 制作的 GoToSocial 的碎语页面,目前出于半成品状态,正在和一些 corner case 进行搏斗。此外还准备把图片灯箱3库从虽然超轻量但是功能太少不好用的 Medium Zoom 换成 GoToSocial 前端也在用的 PhotoSwipe,以便适配修改后的碎语页面,顺便还自动适配了 Artalk 的评论里的图片灯箱功能 虽然只有我能直接发图片。还有一个受纸夜姐姐4启发的使用 Typst 来直接编写博客文章的想法,不过目前 Typst 的手机端编辑体验实在烂透了,暂时不做过多打算。
此外,本站也正式开源了。但这不是中文通常意义下的「开源」,而只是公开网页构建必须源代码。这意味着你可以从这份源代码中构建一个原封不动的本站同款站点,但你不会看到我在我自己博客站点分支中的实际提交,而是定期同步的、清理了与网站生产构建无关部分的提交。用这种方式来开放源代码获取,是因为我当初把草稿部分也纳入了 Git 管理,因此我的实际提交中包含不少我还没写完的草稿,这些内容我不想公开。公开则是因为我写了 GoToSocial 的贴文展示页面,而这部分代码我不准备放到 Astral Halo 的主线中。
后话#
这篇文章最后一行字编写于 2025-08-19 04:22:00 (UTC+8:00),从七月初断断续续写到现在,只能说拖延症和死线冲刺还在发力。

