Notes on Software Engineering at Google (1)

前言:这本书看的断断续续的,如果不留点笔记可能很快就忘了,所以还是要记录一下。本书作者免费发布 pdf 版本,可以在 Software Engineering at Google (一下可能简称为 SWE)免费下载。因为是个笔记,所以行文可能逻辑比较断裂。 什么是软件工程 Nothing is built on stone; all is built on sand, but we must build as if the sand were stone. —Jorge Luis Borges 第一部分主要是在讲软件工程的定义,Software Enginner (以下可能简称为 SE)与 Programming 的区别。 最核心的一个想法是,你的代码的生命周期是多久?Google 的新项目往往默认项目会存在十年——这样一来,基础组件升级、依赖变化、团队组成都可能会变化,从而最终影响决策、影响设计。 这一点上国内很多项目肉眼可见的做的不好,最典型的莫过于百度的博客。当然这不意味着个 Google 的产品做得多好,但是这个思维方式确实很有用。当你设计的时候想的是要用十年,很多设计和决策就就和短期项目完全不同了。 我猜可能有很多人会有不同意见,比如像下面这个图里的例子 我觉得也并非不可调和,业务驱动的产品,很多时候就是需要快速试错,上线一个 demo 能用就行——这种情况就是定位为 demo,定位为 programming 就好了。另一方面,这也和从业人员对 SE 了解太少,公司无法做到将 SE 融入到日常有关,如果 […]

Network Tracing Hands on

eBPF 提问:以下哪个内核可以运行 ebpf? ZStack C74 ZStack C76 CentOS 7.7 ZStack experimental repo 中的内核 (分别对应了 3.10.0-693 3.10.0-957 3.10.0-1062 4.18.0-240) 答案:有三个内核可以支持 C74 是不支持的,C76 有有限的支持,C77 支持程度更好一点,experimental kernel 里是 4.18.0,对 ebpf 支持已经很完善(当然了,ebpf 还处于快速发展阶段,因此还是版本越高越完善) https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/7.6_release_notes/index#technology_previews_kernel https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.7_release_notes/new_features#enhancement_kernel 检查自己安装的内核: grubby –info=ALL 在 ZStack 管理的计算节点上安装来自 experimental 的 4.18 内核: yum –disablerepo=\* –enablerepo=zstack-experimental-mn install kernel-4.18.0 在 ZStack 管理节点上安装来自 experimental 的 4.18 内核: yum –disablerepo=\* –enablerepo=zstack-experimental-mn install […]