编译 datadog-agent 源代码
datadog-agent 核心部分是 Go 写的,涉及编译、测试等还有一些 python 代码,使用 invoke 来调度执行。 invoke 看起来是跟 cmake 差不多,执行 invoke agent.build, invoke test 就完成了编译,测试。
编译出可执行文件还需要 api key, 注册 Datadog 账号后可以生成。
《Code Complete》 Ch6 (2/2)
五一前后读了 Ch6 前半部分,特别有印象的是其中对 ADT, consistency 的强调。这周继续读完后半部分,较多 inheritance 相关讨论,也谈到代码复用。一个基本意思是说,“继承”关系处理起来更复杂,要想在程序中用得好,就会延伸出很多 dos and don’ts. 然而篇幅占得多不等于说使用中就总是要优先考虑继承,恰恰相反,如果两个类的关系可以用“包含”关系描述,就应该使用包含,程序也更简单。判读究竟是“继承”还是“包含”,则通过 “is a” or “has a” 代入。
可能是这一章的定位使然吧, “Working Classes” (可以工作的类), 偏向于概念/原理/认知角度的探讨,具体例子不太多,部分内容在其余章节有更详细阐述。
SQL 通用表表达式 (CTE)、窗口函数
这周工作跟 SQL 打交道较多。ChatGPT 让 SQL 书写变得更方便,并且接触到以前不了解的功能特性。用了 CTE、窗口函数、再加上一些条件表达式,才发现 SQL 原来很强大,有一个修复错误数据的需求,以前都是不假思索地用程序扫描数据,做一点业务判断,最后执行数据更新。这次借助窗口函数、子查询等,直接用 SQL 就生成了 UPDATE SQL, 方便很多。