本周(06/23 ~ 06/29)是6月份的最后一周,下周二就是7月份了,要进入暑假了。

Life

#1

这周一一早就收到了公司的官方邮件,官宣老张正式下课,变成IC,官方说法留了一个辅助技术架构,背后含义懂得都懂。

然后周二和临时接管的VP,CDO还有我们杭州这里的新 manager 开了一次 all hands,正式进入我们组的 2.0 时代。

既然老张没了,那么后面势必要在保证业务继续运行的前提下,做好灾后重建,架构上该改的要改,该重构的要重构。

只是我们这堆了5年半的屎山,超过200w行的业务代码,要 remake 谈何容易…这周只能先开个头,做一下模块梳理,然后靠一线 manager 把情况和上面几个头同步一下,争取资源能让后续做灾后重建。

不过夸奖一下 mermaid 的 flowchart 做模块依赖展示还挺好用的,用类似 markdown 的方式 delcare 一下各模块的依赖关系,自动出图。

这要是人肉画图肯定是画不出来的。

#2

周三 WFH 然后中午开车去老婆家,下午 13:30 约了老婆家附近街道卫生院给屎总打疫苗。

屎总整个流程还是比较乖的,就扎针那几下哭的比较凶,后面安抚好了之后就没事了。

不过要吐槽一下这个北干街道社区医院,特么也太破了,电梯没有就算了,母婴室也烂的出奇,还没有泡奶的恒温水提供。

地面停车场也是烂的要死,一开始在大门外还以为是什么老年人棋牌社

#3

周末表哥(小姑儿子)婚礼,老婆和娃肯定不好回去,所以就只有我回去了。

周六下午的高铁回去,周六晚上订婚宴;周日中午吃完结婚宴,周日下午高铁回杭州。

挺折腾的,而且感觉我没回去也没多大事情啊 🤷‍♂️ 白折腾一趟。

另外吐槽一下高铁二等座,以后再也不抱着侥幸心理买二等座了

#4

这周在家看了 阿盖尔,呃。。。

  • 阿盖尔:神秘特工 Argylle 3/5 你这cast配AI写的剧本???亨利这发型是真的过分了

Work

#1

Asynchronous Programming with C++ | 9. Asynchronous Programming
Using Boost.Asio

  • 感觉是最好的 ASIO 入门教材?可能因为已经默认不是网络IO/多线程菜鸟了,所以 ASIO 新手需要的各种点都覆盖到了
  • 唯一不足就是还是缺乏一些深入,不过 ASIO 真要深入估计一本书都不够

Asynchronous Programming with C++ | 10. Coroutines with Boost.Cobalt

  • 介绍了 cobalt 的一些功能
  • 不过感觉有一些 asio 也已经初步提供在 experimental 了?不得不说 golang 那套设计确实影响不少借鉴者

CppCon 2022 | Taking Static Type-Safety to the Next Level - Physical Units for Matrices - Daniel Withopf https://www.youtube.com/watch?v=aF3samjRzD4&list=PLHTh1InhhwT6c2JNtUiJkaH8YRqzhU7Ag&index=28

  • 为物理单位设计一个单独类型,通过类型系统来约束运算行为
  • 他们自己的口号叫 if it compiles it works

CppCon 2022 | WebAssembly: Taking Your C++ and Going Places - Nipun Jindal & Pranay Kumar https://www.youtube.com/watch?v=ZS6OUzDFrE0&list=PLHTh1InhhwT6c2JNtUiJkaH8YRqzhU7Ag&index=35

  • emscripten + C++ 实现 WASM

CppCon 2022 | Case For a Standardized Package Description Format for External C++ Libraries - Luis Caro Campos https://www.youtube.com/watch?v=wJYxehofwwc&list=PLHTh1InhhwT6c2JNtUiJkaH8YRqzhU7Ag&index=42

  • 演讲者是 conan 的官方开发人员,这个 talk 的想法/愿景是搞一个标准的 package description format,对应的其实就是那个叫 CPS 的提案,这样各家 build system 和 package manager 都可以收敛,朝一个方向发展
  • 主要还是目前现有的方案差别太大了

C++ Weekly - Ep 327 - C++23’s Multidimensional Subscript Operator Support https://www.youtube.com/watch?v=g4aNGgLzVqw

  • C++ 23 放松了 [], 的语义,于是可以引入 multidimensional subscrip operator 了

C++ Weekly - Ep 326 - C++23’s Deducing this https://www.youtube.com/watch?v=5EGw4_NKZlY

  • 复习 C++ 23 的 deducing this

C++ Weekly - Ep 325 - Why vector of bool is Weird https://www.youtube.com/watch?v=OP9IDIeicZE

  • 复习一下 vector<bool> 这个坑,连 v.front() 返回的都不能是 refernce
  • for-range loop 里要注意引用类型

C++ Weekly - Ep 324 - C++20’s Feature Test Macros https://www.youtube.com/watch?v=4Bf8TmbibXw

  • 从 20 开始终于提供 feature test macro 了,并且这个 macro 还支持 pre 20 的 features,就有点意思…

C++ Weekly - Ep 323 - C++23’s auto{} and auto() https://www.youtube.com/watch?v=5zVQ50LEnuQ

  • C++ 23 开始可以用 auto{x} 来创建一个 x 的 拷贝了
  • talk 里面展示了一个 std::erase() 不正确的使用情况,拷贝值可以专门解决这种情况

「全球C++及系统软件技术大会」Boolan首席咨询师吴咏炜:C++性能调优纵横谈(上) https://www.bilibili.com/video/BV1Gr4y1b7vU/?vd_source=b1612988b780cebad3c7035af0de51bd

  • 跑 benchmark 的时候一定要注意目标代码没有被编译器做了什么奇怪的优化,不然没意义
  • linux 下标准库的时间戳性能还是很高的,精度也够;Windows下其实也类似,但是 Windows 整体的 resolution 要低于 Linux

「全球C++及系统软件技术大会」Boolan首席咨询师吴咏炜:C++性能调优纵横谈(下) https://www.bilibili.com/video/BV1WA4y1f7M6/?vd_source=b1612988b780cebad3c7035af0de51bd

  • 下部的优化点主要集中在同步这块,还有浮点数运算,以及一些编译器自己能做的优化

Copy-on-write with Deducing this https://brevzin.github.io/c++/2022/09/23/copy-on-write/

  • 作者也是 deducing this 的 proposal 之一,这篇文章核心是利用

    1
    2
    3
    4
    5
    6
    7
    struct X {
    int i;
    constexpr operator int() const { return i; }
    constexpr auto plus(this int x, int y) -> int { return x + y; }
    };

    static_assert(X{1}.plus(2) == 3);

    这个 trick 来简化 copy-on-write 的实现

  • 不过文章也提到了, cow 需要尽可能优化内存分配开销,所以有时候代码写的简单性能可能会有问题

#2

这周花了很多时间在研究学习 ASIO 官方的 cpp11 目录下的 examples

感觉下周差不多能看完


好了这周就这样,下周见