2023年终总结:Progressive

往年的总结通常都是年头 1 号开个 draft,然后鸽到第二年一月中甚至春节才开始写,所以虽然写着创建时间是 1 号,但是实际上文章通常 2 月份才会出现在博客上,今年决定还是准时一点,圣诞节就把 draft 创建好了,争取 1 号发出来。

0x1 关于工作

Github Activity
Github Activity

今年依然是变化不小的一年,不过主要的开发工作已经从去年的技术探索转变为输出成产品了,相比于之前,现在会更多地使用已经被广泛使用的框架或开发思路将产品落地。

不过仍然有值得一提的东西,此前我在负责开发一款使用 CRDT 存储 Block 数据的数据库 OctoBase,由于考虑到需要兼容前端已存在的 CRDT 库 yjs,因此直接采用了官方推荐的 Yrs,但是这玩意写的毛病有点多,本身的接口设计和内部实现都是无法在多线程环境下安全使用的,而且有一大堆内部 panic 难以被 catch,直到年中的时候终于腾出时间彻底重写了内部的 CRDT 实现,现在相关的库被提取到 y-octo 这个仓库下面。彻底重写之后 OctoBase 的操作性能也得到了大幅提升,在此前受限于 Yrs 无法多线程操作的限制,OctoBase 在进行任何 CRDT 操作的时候都需要对 Doc 上读写锁,现在已经没有任何限制了,不需要上锁使得各种的读写操作延时大幅下降。

我的博客全文在上次重构完之后一直放在一个 Self-Hosted 的 AFFiNE 里写,我还把我一个 OneNote 笔记库导入进去了用于测试,此前在 M1 上用 OctoBase 全量读取一遍所有文章(包括没有公开的老博客导出的隐藏文章和没写完的,以及所有 OneNote 导入进来的,大概有 800 篇左右)并编译为带样式的 Html 需要大概 50 到 60 秒,而且只能用上一个核心,现在却只需要 不到 5 秒就能做完所有的事情,并且能吃满 M1 的所有核心。目前配合预编译的博客模版,在 Cloudflare Worker 上使用编译成 wasm 的 OctoBase 读取文章并编译为博客,从我把博客修改完到 Worker 编译并发布到 R2 只需要不到 20 秒,舒服得很。

不知道为什么,写了半天又在写博客的更新,但是工作本身确实没什么值得聊的,使用的都是现成的技术,并无新奇之处,硬要说的话,临近年末的时候又开始有一些数据分析相关的事情,久违地写了些几百行的 SQL 查询,这个还是有点意思的,同时也明确地意识到,Postgres 确实还是跟真正的分析型数据库有极大不同的,保证 ACID 意味着很多优化都没办法做,查询过程中的计算量稍大就寄了,我想过段时间或许可以写一篇博客。

另外一个值得一提的事情是今年我正式在新加坡工作了,开发体验而言比国内好的不只一星半点,在国内碰到任何问题都需要先怀疑一下网络,新加坡做任何开发都是无比通畅的,虽然搞开发这么多年各种翻墙折腾了这么久,已经熟练得不能再熟练了,但是老司机也会有剐蹭的时候不是么,没有阻碍总是好的。

另外也是由于网络质量,我有很多服务程序都不需要依赖独立的 VPS 了,我把手上的几台 NUC 改造成了 PVE 集群,并配置好 Nomad,之后只需要发布一个配置就能轻松把之前放在多台服务器上的容器自动迁移到 Self-Hosted 的集群上,这为我省了一大笔钱,而且维护也更简单了,而且 PVE 的 HA 很好用,只要集群有任何故障,里面的虚拟机可以自动迁移,即使迁移失败,虚拟机内的 Nomad 也会将容器自动迁移到集群内的其他服务器或者公有云的 vps 上,我认为现在这套方案便捷性和稳定性还是很好的,至于数据方面,我现在在多个虚拟机里跑了 Resilio Sync,并用它在不同的硬盘之间自动冗余数据,我的重要数据现在至少都有 3 份备份了,这个方案或许也可以写一篇文章,之后看看吧。

0x2 关于生活

去年的英国旅游依然另外难以忘怀,但是今年因为各种事情没去成,但是依然去了一些地方玩,年初的时候趁放假跟朋友去云南玩了几天,年中的短假去香港暴饮暴食了几天,年末则去了一趟蒙古,总体而言感觉还行,不过坐车花的时间还挺多的,有点累,下次旅游感觉还是找个风景好的地方住固定的地方连续玩几天比较舒服。

但是今年玩的游戏变少了,年初的时候把拖了好久的《ReLieF 献给亲爱的你》推完了,由于演出和画面过于精良所以我给了 8 分,但是实际上本作的剧本只能说中规中矩,称不上很好。但是凡事都要有对比的,如果和年底推的《Looper》比那 Relief 可以称得上神作了,这么说吧,如果 Looper 是轻小说,那绝对配得上“买画送厕纸”的评价,龙骑士剧本拉稀不是一天两天的了,冲这画风花了几个小时推的我真是傻逼。另外一个冲画风推的就是《爱因斯坦携爱献上》,但是是个设定甩我一脸的剧本,不过跟 Looper 相比好歹也算是在认真讲故事了,就冲这点也能给个 6 分。此外还玩了不到 30%主线的《赛博朋克 2077》,因为有点晕 3D 所以进度很慢,《底特律:成为人类》的节奏比较慢,没那么晕 3D,所以玩了大概一半左右,此外今年还在 Steam 上买了好多游戏,都还没开始玩,希望明年有时间能通关一些。

相比之下今年看的动画片质量显著提升,年初有《冰海战记》第二季,4 月有《天国大魔境》、《魔法使的新娘》第二季和《我推的孩子》,7 月有《无职转生》第二季,10 月有《葬送的芙莉莲》,可以说每一季都能看到不错的番,还是很爽的,上一次每个季度都有想看的番应该已经是 19 还是 20 年的时候了,很怀念那时候深夜开一瓶可乐,然后抱着被子在床上看《异度入侵》的时间,不过这里的重点不是番,而是心情,那段时间是我这几年少有的没什么烦恼看个番就能开心好久的时间。此外还看了一些厕纸龙傲天番,因为没什么意思大多都没看完,就不列了。

总而言之今年的生活相比以前还是比较有生活气息的,以前在杭州的时候一来出门到处都要扫码,其次杭州难吃的店很多,想要找味道还行的店要跑很远,所以基本上不怎么想出门,大部分情况下出门都是被同事拉去吃饭了。今年由于买了相机(尤其是换了好几次,不过还好新加坡这边二手市场繁荣,机子很好出,没亏多少钱),所以出门次数多了一些,数了下总共拍了 6000 来张照片了,感觉倒也还行,我也未在追求拍到什么大片,拿来记录生活挺不错的,以前用手机拍的时候总会担心电量花得快,相机有单独的电池就不用担心这个事情了,随便拍。

而且今年的花销也变少了,之前租房一个月需要花几千块钱,在新加坡由于有公司帮忙租,所以省了不少,只是不知道明年还会不会继续,因为现在空置了几个房间了,如果要自己租,在新加坡的生活成本就很高了,之前找过一下想要租跟杭州类似的房子至少要 1w 多,那就有点蛋疼了,因为工资并没有涨,现在每个月攒的钱变多了只是因为房租这一块没掉了而已。

0x3 关于 Side Project

想了想,还是决定再加一个 Side Project 的章节,今年由于直接在住处办公,省掉了通勤时间(虽然在杭州也是,但是中午和晚上经常出去吃,因为好吃的店少,经常要跑好远,回到家都八九点了),所以多出不少时间搞 Side Project,今年主要搞了一个基于 ffmpeg 的图像 Pipeline,可以 decode 一个视频,并对其所有帧做任意的处理,然后把处理完的图片继续喂给 ffmpeg 做压缩。

Self Hosted Gitea Activity
Self Hosted Gitea Activity

通常来说,其实平时那些做 BDRip 的也是差不多的流程,区别是他们需要用 AviSynth 或者 VapourSynth 做处理,然后插件都是各种的 Python 插件或者 C++ 插件,而我的 Pipeline 是纯 Rust 的。而且由于我在公司里写 y-octo 的时候仔细研究了一下跨机器通信,我把这个通讯实现抄了一份到我的 Pipeline 里,现在我的 Pipeline 可以在一台机器上 decode 和 encode,在另一台或者多台机器做各种其他的画面计算了,诸如光流插帧、老婆 2x 降噪,或者插个 inspector 去分析每一帧的数据,以及各种乱七八糟的后处理。另外一个好处是由于依赖只有 ffmpeg,剩下的逻辑都是纯 rust 的,所以可以做到静态编译。

但是现在的问题是刚开始实现的时候没考虑到有些帧处理需要 lookahead,现在如果想要 lookahead 的话会把其他过程给堵住,虽然现在我写的处理帧中间件的每个 process 都是重计算的,有十几二十帧堵在上个 process 不会影响编码性能,但是这仍然需要解决;第二个问题是现在的内部处理全都是 YUV4444 的,但是其实有一些过程却需要 RGB 或者不需要 Alpha 通道,这个也需要优化一下,看看今年能不能把这问题弄完,如果弄完了打算把这框架开源了。

另外今年把所有 Side Project 从 Azure DevOps 迁移到 Self Hosted 的 Gitea 了,虽然 Azure 的 免费 CI 性能不错,但是 CI 配置写起来太蛋疼了,界面也很难用。虽然迁移到 Gitea 后要自己弄 CI,但是在无墙环境下自己搭一套 CI 还是很快的,前面也提到了,我用手头的几台 NUC 组了 PVE 集群,简单配置下就能跑 CI 的时候自动创建虚拟机了,而且我 cpu 核心多,编译起来可比 Github 或者 Azure 白送的 CI 快多了。Gitea 今年更新了全文索引功能,也很好用。

今年大概就这样了,今年买了不少东西,但是存款还是有一定的上涨,所以总体而言存款进度是有一定的前进的,但是由于现在的房子公司不知道还会不会续租,所以明年的房租花销情况并不明朗,今年回家就不添置更多东西了,可能只会把冰箱给换了吧,家里的老冰箱用了好像也有十几年了,该换了。

</2023>

<2024>