Life

#1

这周杭州气温有所回落,但是依然闷热。

周三下班后照常和同事去了乐刻,但是可能是热身不太充分或者前面有氧跑步结束后没有足够的休息就开始继续高强度的力量训练,导致做完几组力量训练后感到胸闷气急和头晕。

赶紧和同事说目前非常不舒服后,同事也说我脸色看起来非常苍白,并且赶紧扶着我到窗台开窗换气通风。

一个同事去拿葡萄糖的功夫,我就感到一阵眩晕,然后便把半小时喝的水混杂着下午吃一些零食全都吐了出来。

呕吐持续了半分钟,不过还好呕吐之后感觉舒服多了。

健身房的店主也有点被吓到,立马搬着凳子到入口走廊透风处,示意我坐到那边休息一下;坐下后有个同事递给我葡萄糖补充,其他两个同事拿着扇子帮我换气…

一个有经验的同事说可能是我力量训练的时候强度太大了,并且没有正确踩到呼吸节奏,导致闭气缺氧。

还好经过十几分钟的休息后没什么大碍…

#2

因为六月份的大组团建还省了一些经费,所以这周四全组团建聚餐。

选的一家网红店(名字依稀记得叫啥乔街深夜食堂),虽然点评评分挺高的(4.7左右)但是食物感觉实在太一般了,而且性价比非常低。两斤的小龙虾要198元,而且还不好吃…

还好不是自己掏钱,不然感觉亏了几千块。

不过这家店大概以后都不会再来了

#3

美剧 PeachMaker

趁着 Better Call Saul 更新的间隙先刷了一下新自杀小队的衍生剧 PeaceMaker。

风格依然是 James Gunn 的招牌式插科打诨喜剧;银河护卫队也是出自 Gunn 导之手。

剧本感觉还行,整体流畅,但是实话说整体上没有给人留下很深刻的印象;流水线的观感太重了。

不知道最后两集有没有什么惊喜

#4

周日晚上重启了家庭影院,老婆选了杰出公民

前半部分有点沉闷,但是中间开始随着矛盾冲突加剧,导演/编剧的野心慢慢开始显露。

整体上还是一部不错的佳作的,而且难得老婆也喜欢。

电影的分析就不扯了,年纪大了,现在只喜欢感受电影,不再去试图强行理解电影 XD

Work

#1

周二的时候帮同事解决了一个 name lookup 导致的编译问题。

同事在重构某个逻辑得时候给某个 model 对象加了 operator<< 重载以支持序列化到 nlohmann/json 对象里。

但是对应的 test 文件编译时会抛出模板实例化相关的错误。

我一开始看这个问题的时候也觉得很奇怪,甚至一度怀疑是另外几个点导致的问题。尝试了几遍都没解决。

后来注意到编译错误中间有 nlohmann/json adl 相关的提示错误,转而想到可能 name lookup 的问题:即编译器在 name lookup 过程中在某个 scope 找到了函数重载 operator<< 并停止;但是这个函数并不是我们提供的重载,于是导致错误。

为了验证猜想,我在 test case 里加了一个 using 把我们加的重载引入到了当前 scope。如预期般,编译通过。

于是我给同事讲了一下 C++ 的名字查找的规则和一些坑,以及这里的问题和一些建议;收到了同事的连连称赞

#2

本周

  • 继续刷了五节《性能工程高手课》的课程
    收获的价值依然较小
  • 读完了 Database Internals | Chapter 4 Implementing B-Trees
    但是很可惜,在脑海里串不起整体的脉络
  • 读完了 《大规模分布式存储系统 ch2:单机存储系统》
    目前感觉还行,但是小错误感觉不少
  • 看了几页 Software Engineering at Google | Chapter 9 Code Review
  • 看完了 CppCon 2020 | Constructing Generic Algorithms: Principles and Practice - Ben Deane
    虽然过去好久都没有在实际生产代码里写过一个 generic algorithm,但是这个 talk 里将的一些设计上的 insight 具有一定价值。不过我一直没搞懂一开始的那个算法题的约束到底是啥…

#3

这周业界的一个重磅消息大概就是 Google 推出了 Carbon 号称要接替 C++。

这个语言的目标很有意思,要能直接兼容 C++ 的代码,同时保持高性能;但是 ABI 稳定性是不是他的目标。

不愧是 Google 在委员会吃了闭门羹之后的措施…

虽然这个语言看起来很没有 taste,但是对它的未来我觉得很微妙。

首先是这个语言要解决的问题很“小众”:将 big tech 中那些巨大无比的 C++ 代码逐渐转换,并且将语言的发展控制在自己手里,以便在需要的时候为了性能可以大幅更改 core lang 和标准库,即使以破坏兼容为代价

对绝大多数的公司的程序员来说,这个需求都是不成立的。

但是从另一面来说,Google 作为巨无霸级别的 big tech,对于安利/推广一些设计品味很糟,但是专注某个细分工程领域的东西时常有奇效。

所以这可能也会带来一定的分裂。

不过未来还长,后面到底怎么样实在不好说。

#4

周日抽了点时间看了一下 facebook/grace

号称 graceful restart & zero-downtime deploy

方案上没有什么新意,依然是大家都能想到的:创建一个子进程继承现有的 listen fd,然后子进程 ready 之后通知父进程退出

graceful shutdown 用的是 facebook/httpdown

不过实现代码有大半都是在折腾 golang net pkg types 和 linux facilities 的转换…而且实现质量给我一种很一般的感觉,不知道是不是因为作者是三哥…

但是这个 lib 目前处于 archived 状态,估计可能有更好的实现已经取代了这个库;回头研究研究


好了这周就这样,下周见