Pensieve: 2311

2023-11-26 13:51

所读所玩

这个月有点懒, 不太想读书. 读完了两本, 一本是记录老北京历史的府门儿·宅门儿, 本来期望能读到更多普通老百姓的生活, 但读下来里面更多仍是才子佳人的历史. 部分口述者的水准比较高, 其他更多只是记录下这些人存在过. 然而, 很抱歉, 我不感兴趣. 另外重读完了紫川, 这本在网络文学历史上估计能被提及, 但是和现在的作品们相比, 水准就差很多了, 作者想到哪儿就写到哪儿, 缺乏计划性, 从而导致很多地方有前后不一致的地方.

偶尔接触到了shapez这个游戏, 在网页版上玩了一天, 十个小时升到了17级, 一万多的传送带和近三千的建筑. 前期还挺有意思, 后期虽然提供了复制粘贴来快速模块化搭建建筑的方式, 但至少在更高层面的模块化方面, 游戏所的支持有限. 所以虽然地图上我有一块地方做了一群染色/并色/堆叠的建筑群, 但是每次要做新建筑的时候, 仍然只能复制过去后再调整. 没往后面玩也是因为觉得看不到后面的新创意了, 而只是靠堆砌复杂度来提升游玩时间(比如第十七关的目标产物就很扯). 相比于之前在Switch上玩的Automachef, 我觉得Automachef的复杂度更低, 而游玩的趣味性更高.

顺便的, 玩这些游戏都有让我想重学Javascript的冲动了. 对于这些重玩法而不重特效的游戏, 网页版的体验已经超越了客户端.

另外, 我还在PS5上尝试了一下星铁. 回合制的战斗让我想起了之前在网易运维过的精灵传说, 而且线性的剧情让我这个习惯了开放世界玩法的人不太喜欢. 于是还没特别深入(人物才升到40级, 除了新手池送的Bronya, 抽卡还没抽到一个五星)就放弃了. 下载了Horizon Zero Dawn, 准备回味.

原神

这个月4.2主线剧情挺不错, 讲故事的铺垫, 转折, 推高潮, 浑如一体. 而且后面水神的传说任务也很不错, 第一次游戏内能看到神之眼的获取而不是靠描述. 那句”因为她很单纯吧, 即便承受了许多痛苦与孤独, 她也不曾质疑世界的美好”, 也正是水神这个人物的写照. 在长达500年的时间里, 孤独地支撑着这个国家的人民的幸福, 真不愧是一个英雄. 传说任务中和海的女儿的故事也混合得很恰当. 抽卡时很快就出了, 一命也很幸运地没歪. 剩下的粉球本准备留给后面用. 看过传说任务后脑子一热, 又抽了二命, 还好仍没歪. 现在小保底垫了50左右, 手上还有140左右粉球, 下个版本拿到雷神应该没大问题.

另外开始用椰羊来刷成就, 没想到之前漏了这么多成就.

IaC的一点思考

Infrastructure as Code是一种将架构代码化的方式, 好处是可以完整地定义代码的运行环境, 并且理论上可以比较好地重建这一环境. 常用的工具比如Cloudformation和Terraform. 供职单位目前也在开发一个内部的IaC工具, 目前仍处于雏形阶段, 所以暴露了一些问题, 让我对IaC有更深入的思考.

我最近要部署一个运行在测试环境应用到某一个生产环境的EKS集群中去, 这个集群运行在一个之前没初始化过的AWS账号里, EKS集群也是由另外一个组负责. 所以踩了不少坑. 首先, 这个自用的IaC工具的触发比较特殊, 在CI中要运行一个内部工具来提交到我们内部的发布系统中去, 再触发这个内部的IaC工具. 这个内部IaC工具提供的可视化界面是ArgoCD, 一个在我看来很不合格的CICD工具. 所有这些moving parts都有自己的特性和怪癖们, 所以在部署和调试部署的时候就很痛苦. 这是这一套系统的第一个大问题, 依赖的工具链太长太多, 质量参差不齐.

这个IaC工具的第二个严重的问题是资源的核对. 在所有我用过的IaC工具中, 如果资源定义被错误修改过, 那么后续运行部署的时候应该会报错. 但是这个内部的IaC工具在我们的一个DynamoDB表定义被错误修改后, 从没有提示我们这一错误. 直到我将这份代码部署到生产环境时才发现. 这让我们对已有的代码不再有信心, 也违背了IaC的初衷.

第三个问题是IaC工具对运行环境中其他资源的依赖也应该是显式的而不是隐式的. 比如, 你要部署一套ECS服务, 你的Cloudformation template里不一定会包含VPC的定义. 但是, 你需要通过引用output或者提供部署参数的方式将这些依赖列举出来, 而不是在运行过程中查询这些资源是否存在, 不存在的时候再报错. 所以我回头比较Cloudformation和Terraform的时候, 我觉得Terraform里提供这些data source只应该被应用在部分有限场景内而不应该滥用, 否则也会导致隐式依赖, 从而破坏将架构代码化的初衷.