一周杂记 in Week 1 May 2022
Life
#1
这周前三天休息,后三天工作(周六调休),这强行凑出来的假期还真是挺累人的。
本来打算周六休一天假,凑一个双休,不过转念一想这几天工作任务也不是很繁重,而且本周还有一天的 WFH 额度还没用,所以干脆在家办公好了。
在家办公好处是早上可以晚点起,经常都是睡到快九点才起来。不过因为不在办公室,所以经常晚上会习惯性的加班,尤其是遇到一些神奇的问题的时候,比如这次。至于具体内容先按下不表,后面再讲 XD。
#2
假期还没结束的时候一个人在家看了 _Uncut Gem_,第一次看亚当桑德勒演不太喜剧的剧情片。
这片整体我不太喜欢,太聒噪了,我查了一下评论好像是这个导演的一贯风格。
整体剧情还行,不过我可能更喜欢拍成 Snatch 那种黑色幽默。
#3
杭州常态化核酸的影响感觉显现出来了,差不多每天都要盘算一下是今天抽个时间做核酸还是明天做。
对于我这种不坐公共交通通勤的还好,要坐公交地铁的人估计是亚历山大。
小区周围的超市和饭店,其实都已经不怎么看核酸了,毕竟损失客源是实实在在砍在自己身上的。
公家的超市雇员,反正大家都是拿死工资的,少点人来短期内对自己没有什么影响。
#4
前两天包子亲自发大字报之后,除非他下台,否则动态清零是不会取消了。
而且会议核心都开始将要批斗人了,所以地方除了层层加码,也只能层层加码了。
万万没想到我自己在有生之年居然还能亲自经历一次瘟革。
Work
#1
Lumper 第一阶段已经完成了,即目前可以做到把目标程序运行在隔离空间环境里,并且目标程序是环境里第一个进程。
#2
看完 _Software Engineering at Google | Chapter 6 Leading at Scale_,讲的如何领导多个团队,即 lead a team of teams
领导多个团队比领导一个团队更加复杂,需要面临的挑战也更多。
需要学会合理 delegate tasks
如何 prioritize 避免自己 overwhelmed:只做 top 20% 的事情(在多个团队 leader 这个位置上)
注:因为现在不带人,也没有带过那么多人的经历,所以某些内容看起来无感。
#3
看完 Database Internals | Chapter 2 B-Tree Basics
这章主要讲了 B-Tree 的一些基础概念和性质
#4
本周学会了一个 vim 粘贴代码的小技巧。
默认情况下往 vim 里粘贴代码,会触发 auto-indentation,而且这个 indentation 有点莫名其妙,一般都会破坏你的预期格式。
可以在粘贴前用 :set paste
进入粘贴模式,然后按 i
进入编辑模式后粘贴内容。
完毕后使用 :set nopaste
退出粘贴模式。
#5
周六在家办公的时候遇到一个蝴蝶效应型的玄学问题:某个 auto-relpy 的 test case 一直失败,但是在同事 Jarvis 那边是好的。
研究了半天找不到原因,遂在 team channel 里说了这个事情。
然后 Ken 说他也遇到过,需要在 vm 环境里把 kafka 的 docker image 跑起来就能通过。
这里首先发现我们的 Vagrantfile 写的有问题,安装 docker & kafka image 的任务所属的 tag 在外部设置了 export TEST=none
之后就不会触发,导致环境里缺了 docker 和 kafka。
其二是为什么八竿子打不着的 kafka 会触发这个 bug。
带着疑问吃完饭后我又把相关服务的日志拉出来研究了一个多小时,最后发现是因为两端都设置了 auto-reply 并且 auto-reply 在发送 reply mail 之后会设置 redis key 表明已经 reply 了这个人,下次就跳过。但是发送邮件之后 smtp 相关的 session 会因为 mta 找不到 kafka 无法创建 topic 而进入阻塞等待,超时时间是 3s。而在这3s内,对端收到了 reply 邮件之后回信的 session 会因为上一个还在阻塞,所以触发 MTA 重新创建一个 smtp worker 进行通信。
于是在 redis 被设置前,两边就这么来回 ping/pong 导致发送了好几封 auto-reply,于是 tests 验证不通过。
随着系统模块的增加以及模块自身的复杂度上升,整体的复杂度都是超线性增长的;于是一个环节的问题往往经过几个组建的放大之后,在一个看起来毫不相关的组件里暴露时,就会产生这种看起来非常玄学的问题。
这周就这样,下周见