这个月不少心思在工作上, 读书少一些. 首先是一本春琴抄, 这是一本我在阅读时没有感觉到任何愉悦的书, 说起来病态的美病态的美, 只剩病态, 没觉得有什么美的. 接下来时月度最佳以及年度最佳的有力竞争者, 燕食记. 这本书结构精巧文笔洗练遣词造句都有独到之处. 故事也扣人心弦. 按理说从民国写到当代, 本来多少会触及的历史伤痕也被轻巧避过. 小说里的几位主人公在烹饪上都有相当的才能, 可惜造化弄人, 和着一群普通人一样, 在大时代里砥砺前行. 可惜很多部分显然是粤语写作, 我这个在广州待了6年多的人却不懂粤语的人, 很多地方只能靠猜. 另外读了一本卡尔维诺, 在你说“喂”之前. 没觉得好. 里面除了一些广为人知的寓言外, 大多数完成度不能说很高. 而且卡尔维诺这个作家, 有些作品是真让人爱, 有些作品真是疯疯癫癫到让人读不下去(比如宇宙奇趣全集). 手上还有一本王安石传, 眼见着要读完了. 王安石本人的评价后面再说, 只是这本书的话, 读上半本的时候让我觉得是在读王安石诗歌作品赏析, 读下半本时就是各种折子的摘要. 做研究还停留在堆材料的水平, 值得批评.
听歌来说, 这个月听了很多次许靖韵的K歌之王和陈百强的一生何求.
游戏来说, 我在PS Plus订阅过期后趁打折又续上了, 决心后面多玩一点, 至少要值回订阅费. 首先玩了下Nobody saves the world, 感觉技能方面是一个穷人版的Diablo, 平衡性没做得特别好. 大概把六七个职业全刷到B了就没继续玩下去了. 因为重复性太高, 没有太多挑战性. 然后开始在死亡搁浅世界里打工. PS官网里面说这是一个genre-defying的游戏, 我觉得这个游戏不太像一个游戏, 更像是一个实景电影. 不过每天送几单快递, 做做基建, 微微有点成就感. 手机上继续玩Good Sudoku, 最近迷上了Impossible难度的无尽模式, 开局三滴血, 每填错一个掉一滴血, 每使用一次提示掉1/4滴血, 每次通关回1/4滴血. 现在能够比较稳定地解这个难度的数独了. 但是时间上没法保证, 而且我观察到我自己的状态也有很大起伏, 状态好的时候能够六七分钟解一关, 状态不好的时候能够反复把自己带进死路一个小时都解不出来. 目前的run是29, 过30指日可待.
原神抽嘉明的时候出了闲云, 看着那么多核爆的视频, 就养着呗. 至少我现在的赶路队伍已经换成了闲云/夜兰/早柚/绮良良. 后面养成了之后再下深渊, 加上二命水神和六命班尼特, 也算是有了另外一个队. 后面补嘉明命座的时候低pity歪了迪希雅, 目前拉到了90级, 但没刷圣遗物, 武器也是用的厕纸. 最近刷了下成就(因为游戏内容已经玩得差不多了), 现在是1038.
读王安石传之前只知道王安石是北宋的一个政治家文学家改革家, 读完后觉得他只能当文学家, 政治家可以当半个, 改革家实在谈不上. 文学家不提, 能和同时代的苏轼, 范仲淹和欧阳修都掰掰手腕, 明显比三苏中的另外二苏以及曾巩要高一线. 作为一个古代政治家, 能够大权独揽一手遮天, 你说他不是政治家也太不够意思. 但是他的政治地位更多是皇上的宠信和盲从所带来的, 读这本时看着他对政敌的处理, 真没什么手腕. 遇到意外也没什么担当(比如遇到东明县上访时的病遁). 和皇上讲道理也是拿历史里的故事来似是而非, 而不是真的提出解决问题的方法. 在封闭的农业社会中不懂经济不会做大蛋糕是正常的, 但是王安石的朴素集体主义来搞经济, 真让人看不下去. 至于改革家, 相比于更成功的张居正改革, 王安石的改革更像是一个对实际工作没有头绪的人瞎指挥, 被90%的官僚集团批评反对了还要冒天下之大不韪继续往前探索, 头很铁.
春节时我们一行5人去了一次菲利浦岛, 这是一个墨尔本近郊的和本土有桥梁相连的岛屿, 上面有些旅游景点. 比如我们去了A Maze’N Things, 这个小型主题公园里的有些视觉游戏有点意思, 而且午餐的炸鸡和薯条出人意料地好吃. 后面去了岛北面的Cowes海滩, 看到礁石上有很多很小的贝类, 娃玩得很开心. 另外还去了岛上的巧克力工厂, 这个景点比较不推荐, 没什么特别的意思. 可惜的是预定时岛上著名的企鹅游行的票已售罄, 只能下次再来了. 总体来说, 菲利普岛的旅游价值一般般. 实在没地方玩了可以去试试.
这个月有几次需要测试重试, 为此找到了sloxy, 但这个软件是用C写的, 每次使用都需要重新编译. 后来我找ChatGPT让它帮我用Python重写, 改写后的结果还挺好, 改了几个小缺陷(比如一个同名的系统API调用, C里面和Python里的返回类型不一样)后用起来就很顺了. 代码在这儿可以找到.
]]>先说听歌, 这张专辑挺好听, 卧虎藏龙和一生所爱的演绎都挺出彩.
读书方面, 这个月读了不少, 按喜好顺序排列一下:
Horizon Forbidden West终于玩完了主线剧情开始Burning Shores DLC, 和Frozen Wild相比这个DLC稍微差一点点, 值得称道的新机器是蛤蟆, 新机制是冷却水遇热会有大量水蒸气喷发能够把人送上天. Cauldron不如本体里面的, 新武器升级完了还没用. 现在完成了7成的成就, 主要障碍是刷到60级(因为这次是重开新档, 前面本体里很多支线剧情我没重做).
接下来是原神, 80左右的pity终于拿到了雷神, 升到了90级, 彻底没经验书没金币了. 抽夏沃蕾的命座时30多pity歪了提纳里的一命. 现在100出头的彩球, 10左右的pity, 准备看看下一个前瞻, 是否有仆人, 再决定要不要抽狐狸小姐.
节日期间, 继续游玩之旅. 不过在开始之前罹患Covid, 这是2019年疫情以来第一次被RAT确认阳性. 发烧了一两天, 昏昏沉沉, 还好后面恢复得快, 能够正常去黄金海岸. 就着发烧也顺便看完了几本书, 也算是有所收获. 发烧和咳嗽本身不痛苦, 小症状而已, 但是打喷嚏时连带后背肌肉的疼痛真是一佛出世二佛涅槃. 其他症状消失以后, 咳嗽仍持续了两三周, 不过现在已经基本完全康复了.
上次去黄金海岸还是19年2月, 印象最深的还是舟车劳顿的小姑娘坐在我肩膀上睡过去, 以及她对公园里的小游乐场的兴趣和对主题公园的兴趣一样大. 这次我们12月28号到, 5号早上回墨尔本, 算是在那边跨年了, 也在海边看过了新年的烟花. 除了在海边挖沙踏浪以外, 几个主题公园当时是跑不了的了. 上次来只去了Sea world和Wet’n’Wild, 这次还多去了一个Movie world.
这个月读书方面继续放假, 全在读之前读过的网络小说. 读完了全职高手, 正在读雪中悍刀行. 图书馆借了五本, 完全没碰, 开心就好.
这个月游戏玩得挺多的, 除了原神, 还在玩Horizon Zero Dawn和Horizon Forbidden West, NS上买了女神异闻录5皇家版, 也玩了不少. 这些大块的先放下, 试了下shapez的手机版, 感觉这种工厂类的游戏在手机上玩还是不够好, 而且$7的价格也没让我觉得值, 就放弃了, 后来在手机上找了一个类似的Builderment, 感觉很多地方还是很粗糙的, 而且end game不太够, 没继续了.
接下来是Horizon系列重玩, 直接原因是趁打折买了HFW的DLC, 就想着趁着放假干脆两个游戏都一齐玩一遍. 先是打开Horizon Zero Dawn, 重建了一个Hard难度的档, 从头玩. 反正之前这个游戏已经拿到了全成就, 就没怎么纠结着去完成所有的支线剧情和拿所有的武器, 很快就通关了. 写这篇的时候才想起来Frozen Wild没完成剧情, 不过也无所谓了. 现在在HFW里面剧情大概走了一半, 还没拿到传奇武器还在用紫弓. 比较这两作, HFW很多机制和HZD不太一样, 游戏内容也丰富了很多. 之前两个游戏是分开玩, 所以感受还不是特别强烈. 这次两个接在一起马拉松, 刚上手HZD就觉得好像不太习惯, 用harvest箭射射射也没什么用, 后来才想起来这是HFW里的farming设定. 另外, HZD里面太容易引诱一只机器动物进草丛各个击破了, 而且无限随便传送也很方便. HFW很多升级必须到合成台才能完成, 升级也更有仪式感了.
看着NS上Persona 5R打五折, 于是入手, 入手后觉得还好没在PS5上买, 因为画质实在比较一般. 目前还在第一个城堡/dungeo里打转, 目前所接触到的系统里面没有让人眼睛一亮的元素, 罢了, 先多玩玩再下论断吧.
最后说原神, 4.2前抽卡的运气都不太好, 运气最好的一次是武器池的第一个10连就出了圣显之钥, 接下来就是40抽出了草神, 其余的大都是到60-70左右才能出五星. 4.2的150抽左右出了三个水神, 4.3上半本没想抽角色, 我老婆不知为何选了绫华当手机屏保, 凑趣十连抽了一只, 小保底没歪. 后面看着彩球还多, 又下了一个十连, 出了一只刻晴. 今天想着完成纪行里的任务, 又来了一次十连, 出了娜维娅. 就这么三十抽有三个五星角色, 运气挺好. 不过, 拉三个人也给经验书和摩拉带来了很大压力, 只能用存起来的60多的树脂了. 不过眼见着剩下的150左右的粉球, 估计雷神到手没有大问题.
年底了, 活动比较多. 首先是带着娃去了Luna Park. 说起来这个本是今年复活节订的票, 两次因为天气和娃生病而推迟到了12月. 这是一个靠近海边的游乐场, 娃玩得很开心, 很多游乐项目玩了不止一次, 有些还是自己一个人尝试. 月底时全家又去了一次Cherry Hill Orchard, 感觉这次樱桃不如上次我们去的时候大, 很多时候只能靠捡漏. 摘樱桃这件事还是得看运气, 去早了樱桃还没熟, 去晚了都被人摘光了, 而且网上订票没法保证你去的是哪片樱桃林, 之前开放了多少次. 一百出头的门票, 单论吃樱桃的话, 感觉还不如买樱桃在家吃, 不过去亲近一下自然还是不错的.
上周去悉尼出差, 组里活动去开卡丁车. 赛车在游戏里面可以切视角, 可以看metrics, 可以很方便地重试/重现环境, 实际开卡丁车感觉还是完全不一样的. 我们十个人去开, 分两组, 每组一刻钟后休息一刻钟另一组上. 第二轮开完才发现左手拇指附近被蹭掉了一层皮. 顺带地, 去悉尼还去看了Ramses二世的展, 这个皇帝活了九十多岁, 有一百多个儿子, 其皇十三子即位时已经是五十岁的老人了(相似的, 康熙活了不到七十岁, 有24个孩子, 雍正即位时是45岁). 除了必定有的器皿装饰们, 还看到了一些棺椁, 很多动物(猫/幼狮/鳄鱼等)的木乃伊, 最后还有奇迹般保存了三千年的Ramses二世本人的棺材. 实物结合视频, 看完后总体感觉还不错, 虽然不一定对得起票价($50), 不过如果是和去开罗的机票比那一定是便宜太多了.
]]>这个月有点懒, 不太想读书. 读完了两本, 一本是记录老北京历史的府门儿·宅门儿, 本来期望能读到更多普通老百姓的生活, 但读下来里面更多仍是才子佳人的历史. 部分口述者的水准比较高, 其他更多只是记录下这些人存在过. 然而, 很抱歉, 我不感兴趣. 另外重读完了紫川, 这本在网络文学历史上估计能被提及, 但是和现在的作品们相比, 水准就差很多了, 作者想到哪儿就写到哪儿, 缺乏计划性, 从而导致很多地方有前后不一致的地方.
偶尔接触到了shapez这个游戏, 在网页版上玩了一天, 十个小时升到了17级, 一万多的传送带和近三千的建筑. 前期还挺有意思, 后期虽然提供了复制粘贴来快速模块化搭建建筑的方式, 但至少在更高层面的模块化方面, 游戏所的支持有限. 所以虽然地图上我有一块地方做了一群染色/并色/堆叠的建筑群, 但是每次要做新建筑的时候, 仍然只能复制过去后再调整. 没往后面玩也是因为觉得看不到后面的新创意了, 而只是靠堆砌复杂度来提升游玩时间(比如第十七关的目标产物就很扯). 相比于之前在Switch上玩的Automachef, 我觉得Automachef的复杂度更低, 而游玩的趣味性更高.
顺便的, 玩这些游戏都有让我想重学Javascript的冲动了. 对于这些重玩法而不重特效的游戏, 网页版的体验已经超越了客户端.
另外, 我还在PS5上尝试了一下星铁. 回合制的战斗让我想起了之前在网易运维过的精灵传说, 而且线性的剧情让我这个习惯了开放世界玩法的人不太喜欢. 于是还没特别深入(人物才升到40级, 除了新手池送的Bronya, 抽卡还没抽到一个五星)就放弃了. 下载了Horizon Zero Dawn, 准备回味.
这个月4.2主线剧情挺不错, 讲故事的铺垫, 转折, 推高潮, 浑如一体. 而且后面水神的传说任务也很不错, 第一次游戏内能看到神之眼的获取而不是靠描述. 那句”因为她很单纯吧, 即便承受了许多痛苦与孤独, 她也不曾质疑世界的美好”, 也正是水神这个人物的写照. 在长达500年的时间里, 孤独地支撑着这个国家的人民的幸福, 真不愧是一个英雄. 传说任务中和海的女儿的故事也混合得很恰当. 抽卡时很快就出了, 一命也很幸运地没歪. 剩下的粉球本准备留给后面用. 看过传说任务后脑子一热, 又抽了二命, 还好仍没歪. 现在小保底垫了50左右, 手上还有140左右粉球, 下个版本拿到雷神应该没大问题.
另外开始用椰羊来刷成就, 没想到之前漏了这么多成就.
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只应该被应用在部分有限场景内而不应该滥用, 否则也会导致隐式依赖, 从而破坏将架构代码化的初衷.
]]>这个月读的三本书都很棒. 首先是年度最佳Never let me go, 讲的是一群被洗脑的可怜人发现自我和面对命运的故事. 作者的节奏感掌握得真好: 前面慢慢铺垫, 后面逐渐加速直到最后的高潮. 和他的所有其他书一样, 只要熬过了前面几章, 后面读起来就是一马平川手不释卷. 最后Kathy的伙伴们都为了他们的命运奉献了自己的生命, 只留下她一个人坦然面对自己的已知的未来. 在这种环境下成长, 很难不自暴自弃. 最可怕的是, 这些人的命运在所有的克隆人里算是相对最好最人道的, 可能还有大量的生命被当牲畜一样制造出来并最后被消耗, 并没有机会得到学习和启迪的机会. 读完这本书后, 我把这部小说的电影改编也看了一遍. 这个月的第二本是椿树峁. 命运真不公平, 这一群这么有天赋的人被发配到广大天地, 白白浪费了一代人成长并为这个国家做出贡献的机会. 顺便, 可以对照这篇文章来读这部小说. 最后一本是Twelve Angry Men, 几年前看过国内改编的电影版十二公民, 这次读到原版, 又找来电影看了一遍, 感觉电影改编得差强人意. 能够把原始剧情加上适当的国内当时的背景拍出来, 而且能上映, 不容易. 但是相对于原版里的戏剧冲突和抽丝剥茧, 我只是感觉改编里的话剧演员们有点用力太猛, 让人只感觉到大部分人不能好好说话.
另外, 图书馆借了一本The Art of Horizon Zero Dawn, 翻完后想重玩这个游戏了.
除了上面提到的因为读书而看的两部电影, 另外还找到Shakespeare in Love: Bonus Feature看了一遍. 挺有趣. 等小姑娘再长大一点后给她看.
单独拿出来讲一讲Good Sudoku. 之前在Apple Arcade里面简单玩过, 最近又捡起来玩, 而且还乖乖地买了内购. 相比于之前常玩的Finger Arts家的作品, Good Sudoku的优点在于级别分得更细, 而且得分也更合理. GS里面, 对每一道题的难度有个评估和难度系数, 最后的得分是普通得分和难度系数的乘积. 而FA家的那个作品里得分和当前填写的值相关(比如你当前填了9, 就比填8的得分高). 最好的是内置的提示系统, 当你被卡住的时候能指点你, 帮助你, 从而能够让你得到学习和提高. 开始玩这个以后, 至少X-wing我能说我是熟练掌握了, Y-wing找起来还比较费劲.
上纲上线一下, 游戏作品要做好, 用户的交互只是一方面, 在这方面上, FA的那个作品已经足够好了. 但是如果能够深入挖掘用户的需求, 还是可以从一片红海里杀出来上岸的.
继续长草, 完成了全部的邀约内容. 4.1的剧情没什么意思. 手上的人物们排了一圈, 最后还差五六个人的天赋要升满. 体力准备拿来刷圣遗物, 公车上无聊准备刷圣遗物和精英. 手上两百抽, 小保底垫了70左右. 等着4.2抽水神. 武器池里面也有50左右的pity, 可以看看是否需要0+1. 不过如果水神的小保底如果歪了, 可能就不碰武器池了, 毕竟还想留资源给雷神和仆人.
在远程办公了几年后, 最近开始天天回办公室上班. 每天的日常大概是七点一刻左右起床, 七点四十五左右出门去坐公交, 大概八点半左右能够到办公室坐下吃早饭. 我挺喜欢公司的自助早餐, 每天习惯了一片抹了椰子酸奶的面包, 一份蛋糕, 一杯果汁再加一个小橘子. 接下来坐在桌前开始干活, 直到11点半的站会, 会开完了到十二点间往往会休息一会儿. 十二点开饭, 一般还行, 如果实在不对胃口就出单位往北走一条街去吃一家寿司店里的定食. 下午干活到四点半左右撤退, 五点多一点到家. 晚上除了玩游戏或者处理故障就不怎么开电脑了.
]]>读了四本书, 首先是一本比较旧的杨澜访谈录: 刀锋之上, 最大的感触不是里面各位嘉宾多厉害, 而是当时的社会环境下迸发出的生机, 大家都是在为自己好为国家献计献策. 但是现在国内的管制下, 大家都是只求自保, 不在对自己领域相关的事情发表言论. 十年, 弹指一挥间, 那种魔力已经灰飞烟灭. 第二本是婚活食堂, 没对这本有太高期待, 所以中规中矩, 杀时间可以读. 第三本中文书是薄世宁医学通识讲义, 本来对这本也没多大期待, 但是一气读完后感觉还好. 虽然没从这本书学到什么新东西, 不过将整个医学通识部分的东西讲得很易懂不是一件容易的事情. 最后一本是The Great Gatsby, 读起来比较累, 因为遣词造句比较文邹邹. 内核的故事也算是家喻户晓就不再赘述了. 读完书后又找来电影版看了一遍. 人可以为了自己的梦想做到什么程度, 付出多大的代价?
我挺喜欢的钢琴家Belle Chen有新专辑, Ravel in the Forest.
除了原神外, 这个月还玩了Death’s Door, 挺短的一个游戏, 难度不算太大, 还算喜欢. 不过可重玩性不高. 比如第一遍通关后就完全没想着去拿雨伞再打一遍了. 比如去收集种子和种种子很无聊, 完全没有解密的感觉.
这个月基本是在长草, 因为没什么游戏内容可以玩了. 邀约任务还差三个人就全完成了, 没什么特别印象深刻的内容. 常驻出了提纳里,抽钟离歪了琴(1命了), 不过后面还是一狠心把钟离抽出来了, 因为对于我这样只求人物不要求命座的, 4.0大版本后面也没什么特别想要的人物了(还剩水神雷神和仆人), 现在手上的粉球再加上每个版本的那些, 够用了.
深渊过了12-3, 不过连三星都拿不到, 估计是我林尼的使用手法有问题. 现在每天的游戏目标是用体力把人物的天赋升满, 准备完成后去刷圣遗物, 毕竟那是一个天坑.
上周六白天比较忙, 晚上窝在沙发上看书, 到八点半喂猫时才发现猫没了. 各个房间找了一圈, 未果. 拿着装猫粮的球在每个房间晃了一圈, 也没发现. 于是肯定这货是趁开关门不注意的时候溜出去了. 于是就和我太太拿着装猫粮的盒子在附近走了一圈. 路上还看到一只黄色的猫让我们兴奋了一会儿, 后来觉得那只应该不是我们家的货. 回家后将猫的家具都搬到了后院, 又将猫粮和水都放到了旁边, 这样万一猫回来他还能有吃有喝. 我们睡前还检查过一遍, 这些食物没被碰过.
周日早上六点我醒来就赶快去检查, 满心希望发现猫在他自己的睡觉的地方呼呼大睡. 但是事实是食物和水都没有被碰过的痕迹, 家具也是. 我很是失望地往回走, 准备回卧室去补觉. 这个时候听到了猫的叫声, 回头发现这货就在后院, 正隔着窗户看我呢. 这只是习惯了我早上喂食了, 所以听到我的声音, 又发现我要走, 于是急着喊我, 意思大概是你走可以, 留下猫粮. 我心情激动出去得急了, 吓到了这只, 这只赶忙跳过围栏失踪了. 我将一些猫粮撒到地上, 也回去睡了. 心想, 虽然猫还没回来, 但是发现他就在附近, 所以还是挺有希望的.
真正的改变是我老婆起床后在后院走了一圈, 听到隔壁后院一个玩具树屋上有猫叫声. 我们往有猫叫的方向扔了些猫粮, 但是看不到他的身影. 担心他是被卡到某个地方不得动弹, 我们商量后准备去找邻居. 结果邻居家大门紧锁, 喊了也没人应. 于是又回自己家了, 准备看下情况后到楼上居高临下地观察, 希望能看到他. 结果这次去后院的时候发现猫已经在我们家后院的一个灌木丛后了. 鉴于我早上失败的经历, 我把和猫一贯关系良好的老婆留在原地, 一会儿我老婆就抱着这胖货进屋了. 吃过东西, 又被我们洗完澡后, 这货在玩具沙发上呼呼大睡了一天.
经验教训:
读了五本书, 读完了三本. 第一本是Anya’s_Ghost, 这本剧情一般, 不过讨论的主题比较有意思, 而且移民的背景也可能会对小姑娘有帮助. 第二本是易中天的风流南宋, 在图书馆里翻了下, 本不太感冒, 不过想想是校友, 就借了. 这本太浅太浮光掠影了, 南宋中间一百多年发生的事情完全跳过了, 仿佛这个王朝出生后就直奔灭亡了. 接下来是12个我, 读了前三章就看不下去了. 现在瞅瞅豆瓣上的评分, 觉得自己没读下去是正确的. 另一本没读完的书是白猫一闪, 也是看在校友的份上才借的书. 读了两章, 整体就是神神叨叨, 主题和故事都云山雾罩着, 欣赏不来, 关上门就退场了. 最后一本是重读The Remains of the Day. 自己欺骗自己骗了一辈子, 骗得自己都信了. 这种自我欺骗如果到二三十岁还没意识到有问题的话, 只会有非常不幸福的人生了.
所以这个月的教训是, 不要因为是校友就盲目地借书(之前那本叶兆言的死水也是).
电影方面, 没去电影院看Oppenheimer和Barbie, 等下载, 倒是有天晚上抽空把子弹列车看完了. 整个电影看下来还是很爽的, 如果在电影院看冲击感会更强. 在没什么好电影看的现在, 这部算是不错了.
进度来说, 4.0前一两天把所有地区探索度全刷到100%了. 感谢穿山甲. 4.0两个小保底都没歪, 拿到了夜兰和林尼(虽然都是70多抽才出). 两个新人物都升到了90级(捡星螺很痛苦). 用夜兰换下了草神队里的行秋, 感觉伤害高了一丢丢. 夜兰手上拿了西风, 足够用了. 日常跑图的时候除了草夜久, 还带上了早柚. 现在在纠结要不要因为林尼而抽钟离, 因为莱依拉目前跟的是草神队(而且盾的刷新时间有点短). 现在的想法是等4.1前瞻后再试试, 如果4.1没有特别想抽的人, 就可以试试小保底. 毕竟手上的230抽要留给水神和雷神. 林尼目前还在等纪行的弓, 不过材料都准备好了, 到手就可以升到满级.
枫丹的地图很喜欢, 水下探索挺有趣, 整体色调也不像须弥的地底或者像渊下宫那样黯淡. 剧情故事也很用心, 水神的角色疯疯癫癫, 但是知进知退, 很难得. 另外两个支线剧情任务也很有意思, 至少这种比须弥的森林书要好太多了. 探索度自己玩了一周到了80%左右后找来视频刷到了100%.
最后想夸一下原神的文案策划和音乐. 文案来说, 里面的很多短句很有记忆点, 比如枫原万叶这个名字, 感觉就是一幅画或者一首短诗; 四神中, 雷神的台词们每一句都很厉害, 菊花花老师的声优表演也很棒. 至于稻妻剧情高潮时的那句”总会有地上的生灵, 敢于直面雷霆的威光”, 更是让人印象深刻. 须弥主线剧情里那句”千朵玫瑰带来的黎明”, 同样能一句话就让人满怀期待进入春天. 至于音乐表演, 官方PV里广为人知的神女劈观, 也有爱好者二创的杯中明月. 官方赞助的演出们用了都是各个国家的传统乐器, 比如听惯了游戏里的那个版本, 听斬霧破竹和智妙明論之林也会有不同的感受.
这段我也想不到该拿什么当主题了, 要讨论的事情是日本核废水的排放. 但是这个在我看来很简单的事件在国内的宣传机器的发酵下已经变成了一个庞然大物.
说这个事情很简单, 那是因为利用核能的大国都在排放核废水. 关于这个废水中的放射性同位素的含量和限额, 也有固定的国际标准. 如果哪个国家不放心, 大可以和日本协商, 做好检测工作. 如果实在认为日本拿到的数据不可信, 大可以出人出力去建立一个检测点. 如果到时候有违规排放, 也有相应的国际准则来去遵守. 这本就是一个通过按部就班, 遵守程序就可以得到完美解决的事情. 但是在国内的宣传机器下, 这件事情变成了一个大可以拿来宣战的理由.
世界本就是参差多态的, 一个健康的社会也不应该只有一种声音, 如果你只听到了一种声音, 那么要么是你耳聋, 要么是这个社会不健康.
]]>这个月读过的书都比较平庸. 一本是风情日本, 大概是一群游记小杂感的合集, 没主线没主题, 随便翻翻尚可. 后一本是陈楸帆的人生算法, 实在是不推荐. 故事本身没大问题, 但是叙事手法让我想起之前高中时读过的那些范文们, 大而空, 没有文字的美感, 也没有带来阅读的愉悦感. 整个阅读的体验大致就是这是啥和这又是啥.
Apple Music里面加了藤田惠美的HEADPHONE CONCERT 2022, 冷たい雨真好听.
这个月主要是在刷探索度, 完成了璃月/渊下宫/层岩巨渊的探索度. 冒险等级快到56了. 另外, 七圣召唤里所有角色和NPC都完成了认真胜负. 预计在4.0开始前能完全补完须弥的探索度, 以及邀约任务的全剧情. 3.8没抽卡(小保底又垫了几张, 得了一个瑶瑶).
这次想重点说下七圣召唤的卡组. 用的是草神加雷神加八重神子. 这个阵容雷神和神子都可以后台挂雷, 草神速切后站场输出. 这个阵容要说差也就是差在了对单能力稍差, 而且没有扩散的能力. 因为草神的技能设计就是为了对群和后台穿透, 如果是对单(比如30血的无相雷), 这个优势就没法发挥. 就是用这个阵容, 我刷通了所有角色的认真胜负对战. 唯一有点障碍的是NPC阿扎莱的认真胜负, 这个阵容试了几次都没过, 后面是换成债务处理人/神子/砂糖的阵容才过了.
最近工作中完成了一个小hack, 自己觉得很开心, 记录一下. 一个容器镜像里面只有两个二进制文件, 一个是自己build出来的go二进制, 另外一个是openssl. 我想在这个容器运行时把它的/etc/hosts文件打印出来. 但是这个容器里什么命令都没有. 后来翻了好久openssl的help, 用下面这个办法解决了:
docker exec -t 34d14a31ebce openssl enc -base64 -in /etc/hosts
准备入澳洲籍, 直接原因是惊涛骇浪和潜在的台海战争风险. 上个月交了材料, 这个月收到邮件说是要面试, 里面大段说了要带上哪些材料, 对于笔试只是简单提了下. 我的理解也就是这是当面去检查材料原件的. 于是约了时间, 请了年假, 去到移民局办公室才知道这是笔试考场. 首先跟工作人员确认了考试不过还有补考机会, 然后就放心大胆上考场了. 20道单选, 题目都很简单, 我觉得甚至从没在澳大利亚生活过的人都能够通过这个测试. 而我也顺利地通过了测试.
Canva的python代码库里有很多时候为了类型检查而使用了enum模块, 我对此有一些不同的看法.
首先, 对于Python代码而言, 我不认为类型检查能够在多大程度上帮助我们自己. 很多时候类型检查只是减少了assertion的使用, 但是对于可读性而言, assertion和type annotation孰高孰劣本身就是见仁见智的. 而且, 对于大多数业务代码而言, 真正的检查应该远比类型检查要严格. 而将输入值的检查切为类型检查和assertion/validation两部分, 是有待商榷的. 我觉得, 与其将开发资源投入道类型检查上, 不如投入到单元测试上, 这样更能保证代码的质量和可读性. 而为了类型检查而使用enum更是不必要. 业务代码应该这个时候老老实实地检查输入的值, 而不是满足于一个enum.
我们这次因为enum而导致的一个小故障的原因是类似下面的代码:
class CapacityProvider(enum.Enum):
COMPUTE_CORE = "compute-core"
HIGH_FREQUENCY_CPU = "high-frequency-cpu"
...
# Only available in the ml-canva ECS cluster
ML_HIGH_MEMORY = "high-memory"
ML_COMPUTE_CORE = "compute-core"
这儿没有检查enum的唯一性, 想当然地认为后面在比较CapacityProvider的实例时比较的是COMPUTE_CORE
和ML_COMPUTE_CORE
, 而实际上enum比较的是对应的值. 如果坚持使用enum, 合理的做法是在设计上避免重复值, 而且使用@enum.verify(enum.UNIQUE)
这个装饰器来避免后续代码变更时引入重复的值:
@enum.verify(enum.UNIQUE)
class CapacityProvider(enum.Enum):
COMPUTE_CORE = "compute-core"
HIGH_FREQUENCY_CPU = "high-frequency-cpu"
...
# Only available in the ml-canva ECS cluster
ML_HIGH_MEMORY = "high-memory"
ML_COMPUTE_CORE = "compute-core"
此时, Python会抛出ValueError
. 当然, 我觉得更合理的值是将这个CapacityProvider类处理成一个字典:
VALID_CAPACITY_PROVIDERS = {
"COMPUTE_CORE": "compute-core",
"HIGH_FREQUENCY_CPU": "high-frequency-cpu",
"ML_COMPUTE_CORE": "compute-core",
"ML_HIGH_MEMORY": "high-memory",
}
这样维护成本也低, 而且也不容易出现前面讨论的错误.
]]>仍然是玩游戏中抽空读书, 这个月好歹读了三本. 第一本是一本漫画, Revenge of the Librarians, 基本算是文艺杂志副刊里四格漫画的合集, 不过挺可爱的, 很多地方卖梗, 要是书读得少一点, 翻这本漫画都找不到笑点. 第二本是小说逸语 : 钱锺书《围城》九段, 挺一般, 基本就是把自己和钱先生当时的沟通记录了一下而已, 不值得读. 最后一本是浪客美食家, 仍然挺一般的, 每个小故事铺排起来, 没个主线, 所以读起来比较平淡, 唯一印象比较深的是漏雨的U形吧台这篇.
66天升到了55级, 应该算是比较快的了. 当然到了现在仍旧是55级, 毕竟经验曲线过了55后很陡峭. 成就数也很讨巧的是555.
蒙德探索度满了, 雪山探索度满了, 璃月72%, 稻妻没动还是95%. 渊下宫的键纹收集全了, 不过探索度还没满(87%). 草神瞳收集全了, 梦之树升了一半出头. 甘露池满了. 剧情来说, 沙漠和绿洲的主线都完成了. 人物来说, 新到手万叶, 加上之前的草行久和琴, 有了5个满级人物, 旅行者已经完成了80级突破, 不过懒得花经验书去拉了. 80级有莱依拉和香菱. 抽卡来说, 找了个抽卡分析的助手看了看: 常驻池第三次随到五星武器依次是41的风鹰剑, 16的天空之卷和80左右的狼末). 限定池里面之前小保底歪了琴是第75抽, 大保底这次又是75拿到万叶, 现在里面已经垫了近60, 手上还有130左右的彩球, 准备跳过3.8, 继续等着抽水神或雷神. 另外, 卡牌升到了9级, 目前两个牌组, 一个草雷反应擅长对群, 一个水火擅长对单. 后面还得慢慢摸索.
顺便评论几句游戏内容:
最近工作中花了两周用go写了一个mongodb的代理服务器.
做mongodb代理的目的是要对所作的所有查询做审计, 而且要支持用SCRAM认证. 市面上有几个半成品(dvara, Mongoproxy, 不过都不算特别好用, 而且代码都比较旧. 唯一比较新的是teleport里面的实现, 不过仍然不能很方便地拆分出来.
上来写的时候一开始是参考了Mongoproxy, 不过很快代码就被我砍得只剩一点了, 后面主要参考了teleport的实现, 但是在这儿犯了一个错误. 因为我脑子里面想的是这种针对单用户的代理服务器, 维持一个客户端连接和一个服务器端连接就足够了. 所以在改teleport代码的时候, 在请求处理的地方砍掉了一些代码. 但是恰好mongodb的客户端就是会起多个连接访问数据库的.而好死不死, 服务器端那边大概是为了比较容易区分不同的客户端, 所以只会在客户端第一次请求时接受客户端的metadata. 按理说这么要求没毛病, 但是服务器端比较独断地对后续同一连接过来的客户端metadata直接返回一个报错. 这导致我理想状况中的单连接代理服务器不能正常工作. 我看到这个报错是不太理解, 加了很多日志读了很多文档查了很多源码也仍是如此. 我当时的想法是代理服务器里应该分析每个请求, 然后丢弃掉metadata, 不过折腾了好久也没能顺着这条路走下去(而且这样魔改太多也太不好看). 后面用官方已不再维护的mongoreplay工具分析请求才理解了这个设计. 然后回头改了代理服务器实现, 对每个客户端连接都新开一个到服务器的连接就好了.
顺便的, 当时用的是mongo-go-driver这个库. 因为是顺着teleport的实现用的, 发现这个库有一个高级API和底层API, 而底层API的文档基本没有, 只能靠读源码. 而使用这个库的时候, 库会默认帮你起两个额外的到服务器的连接, 一个用于监控网络质量, 一个用于服务发现和更新. 而我的代理服务器如果也这样的话, 新增加的连接数就会很夸张. 比如客户端连过来5个连接, 我起5个或7个到服务器的连接都还好说, 但是如果起15个就不太好看了. 钻了很久源码, 后面自己把核心的TCP连接部分拿出来自己写了一份后就好了. 客户端来5个连接, 我就建立五个到服务器的连接.
最后是单元测试, 犯懒不想自己写单元测试于是让ChatGPT帮我生成了一份. 好处是生成的像模像样, 缺点是写出的代码里有个BUG, 导致跑测试时会卡死. 仔细分析了很久才发现我自己实现的代码里需要对网络读两次, 而ChatGPT生成的mock里, 没有记录上次读取位置的指针. 提示ChatGPT去修这个问题, 修好后稍加润色就可以合并进代码库了.
]]>玩游戏中抽空读了两本书, 一本是水浒寻宋, 作者自娱自乐地旁征博引, 我在读惯了金批水浒后读这种觉得也别开生面. 毕竟金批水浒里大多批注讲的是如何更好地写文章, 让文字更具有故事性. 而这本更像是在一点点考据, 比如水浒里面说足球, 那么足球在宋朝时的发展如何, 又比如水浒里提到住店, 那么宋朝时的住店是什么样的情况等等. 另外一本是忆闻, 这本说了许多名人八卦, 读起来比较轻松. 印象最深的是不显山不露水的陈岱孙, 文革中也没吃太多苦.
那是一个金色的下午, 在海边, 我找到了一滴来自龙的眼泪. 里面包含一个令人哀伤的关于欺骗于背叛, 王座与刺杀的故事. 恶人得逞, 天理不彰. 但善恶业报终有时, 在游戏的结尾, Link一定会为被恶龙杀掉的人们复仇, 并救出被困住的公主.
这是我在玩王国之泪时站在天空岛上等龙来时无聊驺出来的一句. 目前完成了六十多个神庙, 地下的图开了一半左右, 完成了风神庙和水神庙, 在攒钱买上火山的衣服. 刷Twitter/Reddit时偶尔看到那些洋气的机器人, 也没觉得特别眼红. 毕竟这好歹是一个单机游戏.
有几个神庙的印象比较深刻, 比如一个自己搭过山车过滑轨的, 当自己折腾出来的车带着Link到达终点时成就感很足. 另一个光着身子进去开着车去撞一群机器人, 感觉自己变成了一个大反派. 不过目前我还没遇到像荒野之息里我特别喜欢的双子山对称神庙和Korok森林里的命运乃群星之数那样的神庙.
不过老实说有点玩不下去, 毕竟还在打原神这份工.
继续重度玩原神, 主阵容是草神配久岐忍和行秋, 大多数时候再配上一个三命的莱依拉或其他一个工具人, 大世界随便走. 草神, 久岐忍刷到了90级, 行秋和莱依拉也刷到了80级, 世界等级53. 深渊因为压纪行, 所以才到6-1. 游戏内进度风岩雷神瞳都拿全了. 现在开始刷宝箱, 稻妻有三四个岛的探索度到100%了, 准备先刷完稻妻的探索度后开始回头刷蒙德(刚刚做好了蒙德的寻宝罗盘), 再去璃月. 草神瞳和森林书再慢慢整吧, 毕竟这也是一个联网单机游戏.
攒了一百二三十的彩球, 想等雷神复刻或者水神刚上的时候抽. 前一段时候看着彩球比较多没忍住(而且毕竟有公司报销90%的大小月卡, 原石收入稳定), 大概60抽的时候小保底歪了琴, 想着虽然没什么用但好歹也是一个五星, 也拉到了70级. 新四星草盾绮良良也抽到了, 大世界探索的时候爬山方便了很多. 现在大保底垫了20抽, 准备万叶复刻的时候再来个十连, 有就有没就没. 另外蓝球也攒了大概50左右的pity, 不知道下一个五星是谁呢?
最近工作中出了两个小事故, 虽然没到导致canva down的P0级别, 但自己仍很是懊恼. 事故原因是因故要改ALB里面Listener rule的priority, 想由之前配置文件里指定priority改成自动设置priority. 脚本在运行过程中应该去根据tag寻找到对应的rule. 但是在写切换的过程中tag的定义方式被我改过两次, 而线上的rule的tag只改了一次, 所以导致部署时没识别之前的rule, 而是重新生成了新的rule, 这个时候可能会导致rule将流量没送到有正常target的target group. 后面引以为鉴吧, 操作线上环境时还是应该多一点敬畏. 虽然自己dev/staging都测试通过, 但是还是有各种各样的corner case没有考虑到.
]]>