我每周会分享一下我这周看到的好内容,加上我自己的一些个人理解和评注,这算是一种比较轻的持续输出方式,前面三期为:
这是第 6 期。
创造者和实施者
这篇文章讲述了这两个角色之间的差别。
作者认为演员是实施者,作家是创造者;类比起来开发工程师是创造者,而支持工程师算实施者;工程师是创造者,而程序员是实施者。
虽然工程师需要具备一些开发者的技能,比如写代码,但从根本上,工程师的能力,和代码无关,而是创造一个脑子中的世界的能力。当然,这种划分并非完全分开,每个人每天都会同时做一些工程师和程序员的工作。
…
画家,作曲家,作家,建筑师,工程师,企业家,甚至一些精神领袖,都像创造者。对于精神世界里面创造一些东西,他们游刃有余。对于现实世界里面的实现,他们却未必擅长。
…
世界需要那些在思维世界不受现实羁绊而翱翔的人,也需要把这些想法变成现实的人。或许我们并没有如此幸运在自己一个人身上在两种能力都无比优秀,或许他们的思维方式本身就是互斥的。理解这种差异,才能知道自己最强的领域,并且和自己互补的人相互欣赏,组成团队达成合作,一起拼出一幅图景。
我仔细想了想,工作内容决定了身份和角色,也许还有一个维度是深度,上限决定了有的事成与不成。
比如同样是演员,好的演员表演出来有自己的理解和风格。
所以,我认为关键点在于独创性?比如你做的事情另一个人也能做出来,那大概率是实施者。画家,作曲家,作家,建筑师,工程师,企业家这些人做的事情换一个人也许不能复制,那就是创造者。
这个世界不缺实施者,但是缺创造者。
思考一下自己的两种属性的比例,我认为自己在工作上基本还属于实施者,但在写作的过程中我也算个创造者,暂且不论写出来的东西如何,至少这是一种有独创性的活动 :)
一个 Linux 漏洞
The Dirty Pipe Vulnerability — The Dirty Pipe Vulnerability documentation
这个文档详细描述了一个 Linux 内核漏洞的发现过程。
作者的应用出现了一个诡异的 Bug,这个 Bug 有个很诡异的现象,每当月底的时候,他们的日志文件压缩后都有几位校验码不对,这导致解压软件就无法解压,作者时不时被这个 Bug 所困扰。
但是这种偶发性的问题其实很难问题根源,光是发现那个出现日期的规律就已经过去了几个月。
作者先查遍了应用层的代码,使用排除法一层层分析,最终怀疑到是内核的问题。然后写了一个简单的 C 程序去验证果然是内核 Bug:
文中还详细解释了内核中 Pipe 和 page cache 的关联,对比内核版本之间的改动发现是由于一个很简单的 C 语言结构体里变量未初始化造成的,当然修复也就是两行代码:
作者最后尝试写 POC,可以利用这个漏洞可以去覆盖一个没有读权限的文件,这甚至会影响到 Andriod 设备,不过 Google 也已经合并了这个修复。
判断程序员水平的一个很好方法就是给个隐藏的 Bug,看他的分析方法和思路、如何使用各种工具,这比考八股算法靠谱多了。
看完这篇 Bug 分析我感觉像是看完了一篇侦探小说!🤣
写博客 10 年得到的经验
ferrucc.io | Everything I’ve learned in 10 years of Blogging
这篇文章很长,这第一句就把人吓唬住:
I’m 21, but I’ve been blogging for almost 10 years.
I grew up doing this.
我完整地看完了这篇文章,不得不说这个小伙写作很好,行文流畅。里面写的很多确实和我的经验是一致的:
很多人自己建博客,在样式和设计上花了很多时间,折腾完之后就没写几篇,而最难的是长期持续地写出好内容。
好文章是修改出来的,他这里说 50 % 花费在写上面,其他时间做润色、画图、重写,这些是重要的细节。
这篇文章虽然长,但是读起来比较容易读,因为作者是意大利人,所以不会用那种俚语之类的,非母语写作有时反而能写出受众范围更大的文章;另外一个原因是每段都相对短,可能就一两句话,这也是现在很多人写长文所采用的方式。