文章 链接到标题 技术 链接到标题 Avoid Load-bearing Shell Scripts | Ben Congdon
尽量避免使用[[Shell]] 来实现某些功能,虽然在 demo or 早起阶段,[[Shell]] 可以非常快速的实现一些功能,但是随着时间的推移,它会变得非常庞大,且无法测试,迟早需要重写它,重写的越晚,成本就越高。
拿我们内部的功能举例,我们需要进行磁盘的管理,早期的时候,因为磁盘分区比较简单,所以直接使用 shell & lsblk & parted 就可以工作,而且工作的还不错,后来慢慢的,加了更多的分区类型,shell 维护起来就非常的痛苦了,我们需要进行大量的命令行解析的工作,且要处理大量的异常场景,比如某个磁盘的某个属性的值不存在。中间配合 sed & awk 做了很多黑魔法,虽然它现在工作的很好,我们也围绕这个功能写了大量的端到端测试,但是我对这部分代码仍然是没有底。
crates.io Postmortem: Broken Crate Downloads | Inside Rust Blog
[[crates.io]] [[事故分析]],一个错误的 PR 导致 13min 宕机,其中分析为什么的阶段,连续的 Why 的答案也很无奈,大家都一样(此处不能用“草台班子”):没有单元测试、没有 reviewer、没有测试环境、全手动测试。
因为在社交媒体上使用了“草台班子”有所不妥,此处说明,我理解的草台与人无关,特指流程上的草台。此处是我的臆想,如果一个人说:我所在的公司,(部分代码)没有单元测试、没有 reviewer 直接合并代码、全手工测试,可能会被大家叫草台班子吧。
Top 10 common Dockerfile linting issues
使用 hadolint 遇到的常见 [[Dockerfile]] lint 问题,其中大部分都是包管理器的使用问题,什么时候应该使用 cache,什么时候不应该使用 cache。其中 DL3027 推荐使用 apt-get/apt-cache 替代 apt ,理由是 apt 是面向最终用户的接口,可能会发生变化,前者更稳定。