写在前面
2012年,开始在新浪工作的时候,想使用一个新的、短一些的域名来继续记录生活和技术相关的事情,就用注册了 soulteary.com
这个和网络昵称一致的域名,并顺手将高中时积累的一部分内容也迁移了过来。和之前不同的是,网站内容开始坚持原创,避免发布网络上的重复内容。起初记录的都是一些编程细节、或者一些自己写的小工具,随着工作中接触了越来越多的基础设施、工程效率相关的内容,以及需要自己组建和带团队之后,网站的内容便开始进行了转变,从尽可能浅显的方式去讲述如何去搭建一些技术设施、搭配案例去解决具体问题的一些思路和方案、以及一直以来兴趣相关的:软件、硬件、游戏、感悟。(相信你能看到这段文字,应该也和上面的内容有一些渊源)
建立这个网站的初衷,是用来记录个人点点滴滴的成长历程、学习过程中的收获,并希望在分享的过程中能够帮助到和自己有相同经历或诉求的人,不论我们年龄相差多少,不论我们是否在同一时空。在写文章的这些年里,不论是邮件、私信,亦或者群聊中,也确实结识和帮助到了不少读者,想来还是比较欣慰的。
当然,这里也是我个人的试验田,这个网站这些年“从前到后”帮助和测试了不少目前已经投入生产的技术方案,解决了许多现实中的具体工程问题。如果你只是对网站本身的技术选型的故事感兴趣,可以翻至文末小节,查阅网站的“时间轴”。
运行数据
截止最近一篇文章《使用小尺寸大模型和 Dify 清洗数据:Qwen 2.5 7B》发布,网站已经运行了六千二百七十二天了,比《西游记》里唐僧师徒取经一个来回还要久。 在过去十七余年中,网站一共积累了一千三百二十四篇文章内容,包含一百六十三万字词(四百六十三万余字符),打印出来差不多相当于一套中文《水浒传》的厚度。其中汉字内容有一百二十八万,大概有《西游记》狮驼洞中小妖总数的十六倍。
在今年新增了五十四万字,包含十二万多汉字,文章中代码纯度约占77%。为了直观的了解网站内容状况,我将这些数据进行了一些可视化呈现。
关于内容中的“关键词”
根据过去所有文章使用的关键词为线索,绘制了一张词云,其中字号大小表示了关键词的出现频率,这里面五花八门的关键词其实让我也蛮意外的。
为了探究近况,我用最近三年的文章数据绘制了另外一张图片,相比较上图,看起来“技术的味道”更浓了一些。
关于内容的“发布周期和数量”
前文中提到过,网站中的内容,由两个时期构成。上学期间的内容相对自由,数量看起来非常多,然而放到今天来看颇显稚嫩,有许多非常粗浅和不完善的地方。工作之后,在认识到技术需要严谨、以及强烈认同始终需要追求当下最优解后,成文速度和数量虽然变少,但是质量却高了不少。
在2015年重新回到北京后,在美团和阿里云度过了充实的三年多时光,遗憾的是虽然有对内进行分享,但是却没有整理成可以对外发布的文章,回想时会感觉丢失了宝贵的三年。也正是因为这个原因,随后离开阿里云后,重新开始积累和输出内容,在最近的四年里,每年大概会写四十到五十篇内容,多数内容围绕实用的技术方案展开,在2020年岁末总结的时候,网站实现了100万独立IP/年的访问量。如那篇总结中提到的,在有了数字验证之后,接下来写文章便的更加随意,不追热点,不做夸张的标题党,安安静静,单纯的记录和分享技术方案和细节,还有一些生活中的“碎片”。
倘若把视角切换到以自然月为粒度,仅展示有数据的月份,便能够更清晰的看到,2017年之后贯彻求精而不求多,文章发布频率和数量非常稳定的在每个月4~6篇。当然也有特殊的时候,在19年和20年有两个低谷,分别是颇为曲折的第一届和第二届智源大会的召开准备,而21年的第三届智源大会也让我五月份整整一个月没有进行内容分享。
关于内容的“发布时间点”
写了这么久的文章,其实我也很好奇,我到底喜欢在什么时候进行内容整理和发布,于是我做了下面的三张图表。
这三张图表中的数值有些许差异,从所有的文章进行分析看,我的发布时间点非常非常平均,而如果对比三年内和今年的发布习惯来看:相比前一年我喜欢在周一和周五发布内容,目前我更多的会选择从容一些的周二和周六作为发布的时间点,让内容中的干货更扎实,而不是匆匆按下发布按钮。
当然,为了了解我到底喜欢在每周的几点发布文章,我还做了三张新的图表:图一是今年内我的文章发布时间点,可以看到已经能够保持相对健康的时间点,在凌晨零点到早晨九点前一般很少发布文章;而在最近三年的图二中,发布时间则平均了非常多,也出现了一些熬夜发布的数据点;至于图三,从打满了每周七天、每天24小时的点来看,这些年来我应该是已经“看过了24小时任何一个时间点窗外的风景”。
网站历史
优化 CI 性能
- 2022年8月 2022年,全面拥抱 Golang 之后,在下半年写下了今年第一篇优化更新记录,网站构建工具版本也升级到了 0.101.0。
- 2021年11月 2021年岁末,继续针对构建系统进行优化,在关于本站页面中添加了“站点数据动态统计”功能,并将 Hugo 升级到了 0.89.4,将构建速度又提升了 2秒,并进行了网站前端体验的细节优化。
- 2021年4月 第二季度初,对构建系统做了选型切换,使用 Golang 重写了 CI 工具,简化掉了之前定制的代码高亮方案,并将 Hugo 升级到了 0.82,在之前的基础上进一步提升了整体性能(构建+渲染),具体可以翻阅站点优化日志。
优化 Hugo 性能
- 2020年12月 年末,再次进行服务器运行环境的相关升级,对服务器相关组件进行了升级,将 Hugo 升级到了 0.79。同时将 Lighthouse 随时间降低对分数重新提升至了 100 分。
- 2020年11月 时隔接近两年,将 Hugo 升级到了 0.78,相关构建脚本运行时升级到最新。CI 构建速度得到进一步提升,并将部分原来使用 JavaScript 在客户端生成的内容切换至使用 Go 在生成模版时进行渲染。
- 2019年1月 月末对网站进行再次重构,Hugo 升级到了 0.53,并对部分内容进行了整理。相同环境下完整构建时间由 24秒 降低到20秒,产物减少接近1500个页面。
省心的 Hugo 时代
- 2019年1月 月初因为工作需求,对网站站点模版进行了升级和重构,将 Hugo 从 0.20.7 升级到了 0.52,解决了不少兼容性问题,在验证构建产物靠谱之后,将模版复用到了集团网站:美团技术博客。
- 2018年5月 趁着五一长假,升级了网站的架构,更新了 “DataBridge” 的实现,简化了 Docker 镜像实现,将 Traefik 作为新的服务网关,也对博客内容进行了一次去水。
步入 SSG 时代
- 2017年6月 重新设计了网站的架构,简化了海外主机依赖,使用国内两台阿里云 ECS 节点进行替换,在控制成本的前提下,提供高可用和不俗的访问性能。同时,也采用 Hugo 替换掉了使用了十多年的“动态 CMS”系统,搭配之前编写的 “DataBridge”,Markdown 内容的组织形式和书写格式可以保持相对通用,向后兼容。
- 2015年1月 为了节约成本,使用阿里云最便宜的北京节点作为内容前端缓存机器,将复杂的程序跑在海外主机。引入了新的技术栈:OpenResty,搭配 Redis 一起解决了当时阿里云便宜的 ECS 的 IO 性能非常糟糕的问题。
- 2015年1月 期望使用 Markdown 作为文章记录的格式,开始尝试使用 Ghost 作为网站主要的程序,对 WordPress 的内容进行了迁移测试。同时,在写了七、八年文章后,不希望文章数据被绑定在某一个固定的程序中,于是开始筹划制作 WordPress、Ghost、Hexo 等当时流行的 “DataBridge”,进行数据解耦。
海外漂流
- 2014年11月 年末网站丢包严重,影响访问,尝试使用“便宜大碗”的 Vultr、Digital Ocean 等主机作为备机,但可访问性也不高,于是开始考虑将网站整体迁移回国内。
- 2014年4月 海外机房访问体验变差,此时国内服务器依旧比较贵,将之前海外部署的部分迁移回了小张的香港机房。网站架构进行了比较激进的切换:Tengine、Redis、HHVM 作为运行环境,搭配个人定制的 WordPress。
- 2013年10月 此时海外服务器“便宜大碗”,Linode 使用的 KDDI 线路体验也非常丝滑,虽然已经完成了重新备案,但还是将部分网站迁移到了 Linode 的海外机房。网站整体架构比较简单,在 2009 年的网站技术选型上添加了 Memcached ,编写了定制化的缓存逻辑,内容更新和高速缓存两不耽误。
- 2012年10月 因为换手机号导致,之前的备案号掉了,偷懒临时使用 @大喵 经营的 MT 主机(庙)。
告别过去
https://promiseforever.com / promiseforever.net
- 2012年10月 断舍离,停用了两个 promiseforever 的域名,只保留了 soulteary.com 这个域名。
- 2012年7月 在新浪云工作的时候,完成了网站现在的界面风格,并将网站迁移到了 Sina App Engine(PaaS)平台上,程序切换为 WP For SAE,为网站添加了 Memcached。
- 2009年6月 在使用了两年多的梦游主机后,出于访问速度和程序定制化的考虑,更换了 @小张 的北京主机(特殊机器免备),选择使用 Apache 和 PHP 搭建 WordPress 使用。
- 2007年8月 使用国内免费空间和新浪博客等工具写了一段时间文章后,感觉这类平台产品使用限制过多,在学长 @slyar 的推荐下使用了 MEYU 梦游主机(配置是 4 线 256M),网站采用 sa-blog 搭建。
其他网站
- 2019年6月 将最后运行在容器中的 Ghost 应用迁移至了 Hugo。