成为独当一面的忍者

随笔 2022-12-31 2872 字 1038 浏览 点赞

这里是2022。

[火影]

有一段时间,我一直在 youtube 追一档《火影忍者》的解说视频。在讲到佩恩攻打木叶村,他是这样说的:纲手并不知道,从妙蛙山修炼回来的鸣人已经成为可以独当一面的忍者了

其实我没有那么喜欢看《火影》,以前尝试看过一百来集,最终被它的“热血”劝退。我全身上下已经没有热血细胞运作了。不管什么样的豪言壮语都不能点燃我,什么荣誉,什么梦想,什么成就,到了我这里悉数变成“三十功名尘与土”。可也蛮搞笑的是,我既没有三十年,也没有功与名,我拿什么视作尘土。

[Go]

Go 语言是我们组在 2022 年敲定的未来路线,当然,这或多或少也受到了公司技术栈倾向的影响。我是 2018 年末开始学 Go,但一直没机会用到工作上,只是日常生活中给自己写一些小工具。一方面是,编译成二进制后没有环境依赖,方便我到处拷贝随意运行;另一方面,对抗语法遗忘。

在年初的时候,我幸运的先尝到螃蟹。启动的是一个小项目,核心逻辑是基于 Mysql binlog 日志将数据同步到 clickhouse 中。我本来以为会很顺利,结果还是踩了很多坑。写 toy tool 跟完成一个稳定且长期运行的项目还是有着本质不同,在大流量背景下必须关注程序吞吐量先不谈,“可维护性”格外重要。最初我跟上游约定的协议是 map[string]string,后来上游为了兼容自己的逻辑,将协议改成了 map[string]interface{}。看上去一个很小的改动,我也同意了,但后来在 interface{} 上我反复栽跟头,引发了好几次事故。最后在处理流程中增加了“类型校验+类型转换”模块才终止风波。“风波被终止”是比较武断的结论,因为上游趋于稳定也再没有大的变更。但 interface{} 给我留下了极深的恐惧。用 interface{} 作为上下游协议等同于没有协议,我永远不知道自己会从中间件中读到什么。

此外还遇到嵌套 channel 导致数据饿死在通道中,ctrl+c 一下,优雅退出的时候饿死的数据正常写进了 clickhouse;不当使用全局 sync.Map 引发内存泄漏……最终我学会了使用 dlv + go tool pprof 定位这些问题。也还是有没解决的:打印日志程序突然卡死。不管是 dlv 还是 strace 都看到代码卡在写日志,我起初以为是标准输出的缓存写满(怀疑类似《docker hang问题排查》),执行 cat /proc/${pid}/fd/1 却没有输出。最后没有找到稳定的复现路径,这个问题就搁置了。
image.png

因为项目小,后期基本我在负责,Go 1.18 出来后我立即升级,率先用上了泛型。尽管在我看来,Go 的泛型还极不完整,可聊胜于无,我开始更愿意封装公共函数。有了前期的铺垫,核心项目开始用 Go 重构,越来越多的同事参与进来,他们之前没用过 Go,问了我不少语法相关的问题。我有的知道,有的不太确定,也有的完全不会,显然基础不够扎实,还得补一补。

总之,自己业余时间学到的东西终于在工作中实践,是一件很爽的事儿。

[刷剧]

今年刷了很多剧,最喜欢的是《星期三》和《初恋》。野口也英含泪吃那不勒斯意面那场戏我反复看了很多遍,摧心剖肝。同样印象深刻的吃戏,是在《天下无贼》结尾处,公安告诉王丽别等了,王丽继续平静地吃北京烤鸭,眼泪突然掉下来。

但其实,让我呼吸急促的是另两部剧:《难以置信》和《她和她的她》。都是关注女性题材的剧。我本没有要有意关注“女性”话题,但随着美国收回堕胎权引起热议,后来又是伊朗女性因未佩戴头巾丧生,关注的几个播客纷纷参与进来讨论,我接触到了更多相关题材的影视作品。很早之前还读过《房思琪的初恋乐园》,奇怪的是,我关注作者的文笔去了,华丽词藻与信手拈来的比喻是我对它的唯一记忆,故事本身没有给我太大的震撼感。

影视作品天生容易引起人类共情吧。当我看到小女孩说“如果不公平的事情再次发生,我会早一点说谎”的时候心碎了一地。自然界没有给予她们“孔武有力”,于是她们从出生起就成为了弱势群体,没有选择。在历史上,她们也总被侵略者拿来鼓舞士气,他告诉他的士兵,破城之日他们就会拥有更多的女人金钱还有土地。很悲惨是不是?她们被迫跟一堆“物质”并列。

[读书]

我以前只读“闲”书。跟书的内容无关,是我只用“闲读”的心情去看完一本书。我觉得自己读书跟有的人刷抖音有的人打游戏一样,都只是为了打发时间。但我最近有了不一样的心态,是受到了《哈佛公开课·幸福课》的影响。讲师 TalBen Shahar 说,优秀的人都是终身学习者,并且他们对生活中的任意小事都充满兴趣。我开始觉得我读一本书也应该从中获取到一点东西,不一定是安生立命之计,但应该要有自己的思考。我决定以后每读完一本书都要有两百字左右的总结。勤思考,也许会有惊喜;倘若没有,好像也不会损失什么。

[程序与设计]

今年在工作上做了一些所谓的“设计”——其实不太想描绘得高大上。而这些设计,建立在一个观点之下,那就是:那是极端情况,暂时不用考虑。而事实却是,这些极端情况在某一天突然出现,我束手无策。飙升的流量如钱塘江海潮一样拍过来,尽管进程没有宕机,但业务基本不可使用。我也没有针对极端情况的预案,只能等流量恢复常态。等待过程极其煎熬,秒针每一次向前发出哒的一声,都像是在抽我耳光。我们就应该考虑极端情况,避免彼时束手无策。要以高标准设计程序,尽可能避免每一次意外。

[起风了]

《起风了》是我很喜欢的一首歌。过去我一直不明白为什么“从前初识这世间”和“如今走过这世间”之后都是“万般流连”,一度觉得这段歌词缺少推敲。偶尔哼起来,我会故意把副歌的第二段改成:如今走过这世间,不再流连。可是不是的。当我需要抉择去与留时,也会忍不住选择留恋不放手。人真是奇怪的生物啊,好像很难做到知行合一。所以即使我找不到一丁点热血细胞,我还是想变得更强大。强大到跟鸣人一样,可以站在最前保护村子。强大到跟他一样,可以成为独当一面的忍者。

明天不会更好,可明天的我要更好。



本文由 Guan 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论