本周(02/26 ~ 03/03)是2月份最后一周;因为本周2月天数略大于3月,所以归入2月

Life

#1

这周是复工的第二周,但是感觉工作上的一些负面是想影响到了我的情绪和心态,不仅导致每天上班后的心情变得比较诡异,非工作时间的学习状态也变得不是很对头。

明显感觉这周学习进度不太理想,姑且还是暂时算作我还在假期综合症期间吧。

#2

极氪新款001上市后就决定试驾购买,恰好老蔡有个小弟在离我家很近的店做🥇销售,所以比较顺利地搭上了话,并且约了周日早上9:30的试驾。

和媳妇儿楼下小笼包店吃完早饭到体验店的时候其实已经9:40了,刚好遇到了店里有辆车被副店长开到了湖州给顾客上门试驾…

吐槽一下这个副店长做事不靠谱,大白天的开车百来公里跑去给自己的客户试驾这也太离谱了

在店里喝了杯咖啡一直等到快11点才终于坐上试驾车,一次体验了一把正常行驶的空悬调整,弹射起步和急速加速,还有极限变道和极限转弯(这一把是老蔡小弟操作的,我的水平显然还不好做这个)

那个感觉只有一个爽字;并且第一次弹射之后我媳妇儿坐在老板位上也默默寄上了安全带。

安全小贴士💡:坐后排也应当系安全带哦

轮到我自己开的时候感觉只有一个字:稳。不知不觉开到快 80kmh 都稳得和2、30kmh 一样,而且那个极限加速是真的爽飞

试驾结束后就下定了,考虑到绿色还没亲眼看,所以先定了媳妇儿中意的灰黑以及搭配的内饰,ME版

约了周二上午去工厂里看一下绿色在做最后的锁单提交

#3

本周观影

  • 首尔之春 5/5 政治没有公平正义,只有赢家输家
  • 盗火线 Heat 5/5 这风格感觉至少影响了一个时代同类型电影,看帕西诺和德尼罗在荧幕做对手可不是年年有;那年的方基莫还略显青涩
  • 代号47 Hitman: Agent 47 3/5 剧本完成度不太行,但是开场前十五分钟的枪战和动作戏合我胃口。Spock 你个浓眉大眼的也跳反了啊

Work

#1

本周学习进度

Design Patterns in Modern C++ | 6. Adapter

  • 用了一个很生硬的例子讲了 adapter pattern…

Design Patterns in Modern C++ | 7. Bridge

  • 说 pimpl 就是 bridge pattern 的应用…看完我还是不懂 key point…

CppCon 2021 | C++ Standards Committee - Fireside Chat Panel

  • 和委员会委员们面对面Q&A + 说话的艺术…
  • 感觉有点像和领导one-one,听了很多很有道理的话但是最后实际上对结果没有什么影响…

CppCon 2021 | Design Patterns: Facts and Misconceptions - Klaus Iglberger

  • 先“吐槽”了一下如今 std::make_unique 除了语义部分之外重要性大大下降;并且指出 make_unique 并不是一个 design pattern
  • 然后讲 design pattern 的意义是针对那些为人熟知的问题引入一些贴身的抽象,并且这些抽象的目的(intent)很重要
  • 最后大篇幅阐明了 design pattern 并没有过时,并且也不针对 OO,并且C++标准库的实现也大量应用了 design patterns

CppCon 2021 | Beyond struct: Meta-programming a struct Replacement in C++20 - John Bandela

  • 用 TMP 实现 meta_struct 定义类的同时提供类型信息,并且(在此基础上)实现静态反射
  • 算是个 PoC,但是视频里没看到分享的 repo 地址

std::index_sequence and its Improvement in C++20 https://www.fluentcpp.com/2021/03/05/stdindex_sequence-and-its-improvement-in-c20/

  • 核心点就是 C++ 20 开始 lambda 支持模板参数了,可以直接利用 lambda 作 std::index_sequence<I…> 展开了
  • 文章里体面提到的传统 for_each 处理 tuple 的做法以后可以不需要再单独写一个 for_each_impl 了

C++ Weekly - Ep 262 - std::string’s 11 Confusing Constructors https://www.youtube.com/watch?v=3MOw1a9B7kc

  • std::string 的重载坑
  • 印象中 std::string 的重载设计问题是吐槽最多的

Escape analysis hates copy elision https://quuxplusone.github.io/blog/2021/03/07/copy-elision-borks-escape-analysis/

  • 核心就是 copy elision 有时候会阻碍编译器的 escape analysis,导致编译器无法确认某个变量是否被泄漏到另外一个 scope 从而选择保守的策略
  • 文章里的 sample 其实很重要的一点是 S::make() 是没有函数体的,这是模拟函数不会被内联,如果加上一个内联函数体,让编译器有更充分的上下文,最终生成的指令是完全一致的
  • 从另一个层面上说这也是局部性原理的一个佐证

c++ tip of week 216 inject singleton https://github.com/tip-of-the-week/cpp/blob/master/tips/216.md

  • 总结一下就是如果某个类要用某个 singleton,不要直接在内部使用,这样会直接显式依赖这个 singleton,可以通过 ctor 参数讲 singleton 传递进来,类内部存 singleton 的 reference
  • 这样测试场景下可以用 mock 类直接注入替代;不过这里的注入还是通过手动完成的

#2

继续复(重新学)习深度学习入门的第四章

研究了好久 numpy 的几个 api,看了几篇 posts 终于明白了 numpy array 的 axis 行为语义…

感觉回头得专门抽个时间吧 numpy 过一遍

#3

本来想着研究一下 clangd 的 config file 但是发现全局配置无法解决工程 compile database 相对路径问题,遂放弃

然后鬼使神差想着优化一下 esl 的 clang-tidy checks,于是有了 https://github.com/kingsamchen/esl/pull/14

中间发现之前一直在 pre-commit hook 里使用的 git diff --no-ext 居然是错误的,估计是升级了 windows 上的 git 才出现的,ubuntu 22.04 可以确认这个命令不会出错…

正确的版本是 git diff --no-ext-diff


好了这周就这样,下周见