Replying to f6XF

之前有一个对 Matrix 有所了解,却对他们的“科技实力”过度夸大,相信各种夸张的阴谋论的人,对我说:“你这样公开指出 Matrix 的各种太空骗局,疫情骗局,化学尾迹之类,我怕他们会特别「照顾」你……” 他的意思是,他们会暗害我。在疫情封控期间,还有另一些人有类似的说法,建议我别说话。我还真是有点怕有人暗害我,所以有些事情当时没有挑明。

但我现在不怕了。我已经不怕死,他们能奈我何?世界已经被 Matrix 操纵了至少一百年,人类已经沦落到今天的地步。疫情的三年,封控的两月,基本的人身自由和健康权益被以各种借口残酷地侵犯,世界层出不穷的各种怪事,各种大戏继续上演。继续在这样的世界上活下去,本来已经没有了意义,死又有什么可怕的呢?也许“死后”我才发现自己从一个教室样子的地方醒来,全班同学在对我鼓掌,老师对我说:“你真是好样的!祝贺你,以优异的成绩毕业了。这堂课的主题叫做「不要迷信权威」。” 也许,人生就是这样一堂课,一场梦,我们是来学东西的。

所以我感谢这些人的好意,但我觉得他们这样的想法是不明智的,对于大家和自己都不好。我们正在被一个秘密犯罪团伙侵害,却有人觉得我们作为受害者,不应该声张,不应该让其他人知道这件事。这样的畏惧心理,只会让这个团伙更加嚣张,肆无忌惮。这当然不是对待犯罪分子的正确态度。这就像一个女孩子在公交车上遇到流氓,却因为怕被“报复”,所以忍气吞声,不敢公开与之对抗,让大家都来唾骂这流氓,将他绳之以法。如果她当时果断使用防身术,这流氓最后被大家打残废了,事后流氓会报复她吗?不会的,因为流氓也知道自己是流氓,被揭穿,挨打是活该的。

Matrix 的成员当然知道自己是犯罪团伙,他们制造出这些大戏来残害民众,被人看穿,揭发也是活该的。所以实际上没有人会暗害我,也没有人会暗害那些声援我,转述这些信息的人。我只是一个普通的民众,我手里没有任何机密文件,我只是看到一些大家都能看到的事情,我说出来了而已。一旦我说出来,很多人就都知道了,这些事情每个人都看得见。暗害我又有什么用呢?他们不能暗害所有知道这信息的人。要是我们任何人遇到莫名其妙的危害,那其他人就更确信这个犯罪团伙的存在了,就会有更多的人站出来说话。我们的朋友,家人,老师,学生,所有认识我们的人,都不会放过他们。

这就像《皇帝的新装》里的那个小孩,他说:“可是皇帝什么衣服都没穿啊!” 结果大家都知道是怎么回事了。请问,有人会去暗害这个小孩吗?当然不会。

要明白的是,这些人是犯罪分子,他们是见不得光的,而且他们没有很厉害的武器。他们仍然必须假装这个世界是有法律的,所以他们甚至不能妨碍我的日常生活。否则他们就会被察觉,人们就会更加确认他们的存在。甚至微博都不能明显地删除我谈论 Matrix 的帖子,否则就等于承认了微博是 Matrix 的成员之一。“言论自由”是一个假象,但 Matrix 必须继续演出它。至少他们得演出其中的一部分,不能赤裸裸地暴露自己害怕人们知道某些事情,不然人们就会更加确信这些事情是真的。

我曾经还因为这些人的说法,开始胆怯,有段时间不敢用微信跟朋友聊这些事,聊这些事都用 telegram。但后来有个朋友跟我说,干嘛要用 telegram 啊,又不是只有你一个人知道这些事,其实完全没有必要担心的。虽然微信一直在监视信息,但他们不能让大家明显地察觉他们在监视信息,他们也不能根据这些信息进行任何不利于我的动作。他们甚至不能阻止这些信息到达指定的接收者,否则他们在监视信息的事实就会赤裸裸地暴露出来,他们想阻碍人们知道什么样的信息,就会被发现,进而既成事实。所以何必怕在微信说这些事呢,自己给自己添麻烦而已。而且微信上聊这些的人如果多起来,反而会让 Matrix 害怕。因为他们是见不得光的,所以偏要在微信说这些事,就是要让他们知道:“我们都知道!” 听了她的话,我才恍然大悟,我确实没必要担心的。

所以,那些人的“忠告”或者“建议”,让我“保护自己,不要说话”,我觉得其实是在对我变相进行恐吓,是在助长犯罪团伙的气焰。当有人再三给我这样的信息,后果就是被我删除,因为我已经分不清他们是朋友,学生,还是 Matrix 雇佣来封我的嘴的人。我不需要这样的“朋友”,我不需要他们的“建议”,我不认识这样的人。

我知道有很多人看到类似的信息,可能心里已经明白,却因为害怕被暗害,不敢告诉其他人,甚至不敢点赞。我也曾经是这样的人,但是我现在不再畏惧了。如果世界继续这样被 Matrix 操纵,人生本来就没有了意义。人生如戏,把想说的话都说出来,造福世界,又何乐而不为呢?我希望大家也都明白这个道理,我们其实很安全。让越多人知道这些事,我们越是安全。

《系统配置:YAML vs GUI》

又看了一点 Kubernetes 的配置方法,发现它的问题已经比较明显了。很多人都说 Kubernetes 配置很繁琐,而且很多人以为这种系统就是这么繁琐,但我觉得这是因为设计思路的错误导致的。

为了理解这个问题,可以比较如下这两幅图。图 1 是 Kubernetes 文档里的一段配置,图 2 是 macOS 的配置中心。它们都是在「配置」系统,可以表达的内容都差不多。然而很显然,macOS 的配置中心比较直观,而 Kubernetes 的配置方式繁琐而容易出错。为什么会这样呢?难道 macOS 这样的 GUI 配置有什么不可取代的地方?我觉得是的。

macOS 配置中心的这个 GUI,其实表达的就是类似于 YAML 那样的“树状”嵌套结构。然而使用 GUI 的时候,用户每次只会看到这棵树的一级,或者比较小的一部分。用户可以根据需要,一层层的点开,用直观的下拉菜单,滚动条,按钮,文本框等方式输入需要的参数。这种 GUI 和 YAML 的不同点在于,用户的操作受到 GUI 的导航和限制,所以无法把内容填进错误的位置,也无法把配置的名称写错。用户可以从界面上直接看到有哪些地方可以改,参数应该是什么样的形式,而不需要去查文档。

图 3 是我最近常用的 Vivaldi 浏览器的配置页面,也差不多。左边分了大类之后,右边是 GUI 的组件。配置什么属性,它有哪些选项,那些是合法的值,都一目了然,不会弄错。那个调整上下文菜单的地方,还可以使用拖拽的方式来选择自己常用的功能,拖动调整顺序,都比较方便。这样的方式,你不可能把本来没有的功能写进上下文菜单里。要是这个用 YAML 来配置,就会很麻烦了。

Kubernetes 的 YAML 设计,相当于把这些 GUI 配置的内容都用 YAML 的形式实现,全都堆在一起,很不容易找到需要的信息,不知道它们表达的是什么意思。这种 YAML 配置甚至可以有几层的“继承”关系,跟面向对象语言的 class 继承一样,每一层都可以设置同样的 key,各种 override,所以到后来你可能都不知道到底那个地方设置的 value 在起作用了。

用户很难记得这 YAML 应该是什么样的格式,哪个 key 应该在哪个 key 的下一级,哪些应该在同一级,每个地方可以有哪些选择,那些配置的 key 应该叫什么名字,很容易拼错。如果有一点差错,Kubernetes 就找不到需要的内容,配置就不能起作用。而且 Kubernetes 对此经常没有提示和报错,只是静悄悄地把配置里写错的地方忽略了,结果你就不知道到底是哪里写错了,所以不起作用。只好用反复试错的方式来进行,就非常繁琐了。

我已经在 Kubernetes 这些 YAML 配置里看到了等价于“变量定义”,“文件系统目录”等概念,只不过用更糟糕而不方便的形式实现了出来。如果你继续往下看文档,会发现 Kubernetes 居然可以在配置文件里调度并发计算,所以俨然这个 YAML 配置会发展成为一个“编程语言”。这正好对应了 Guy Steele 之前总结出的规律——任何配置文件发展到一定阶段,都会变成一种糟糕的编程语言。Kubernetes 这种基于 YAML 的配置,可能会变成最糟糕的编程语言,比 shell 脚本还要糟糕。

所以 Kubernetes 所谓的「Infrastructure as YAML」这个理念,我觉得是相当糊涂扯淡的。YAML 比 JSON 只是语法简单了一些,但它们的问题是一样的,因为没人能记得里面应该是怎么样的结构。同样的原因,基于 JSON 文件配置的一些软件也很难配置,比如 Visual Studio Code。很简单的一些配置,你都得到网上搜索现成的 JSON 配置,拷贝到 vscode 的配置文件里,而且还要担心放错了地方不起作用。

这些软件的配置方式可以说是非常糟糕的设计,比 Unix 和 Emacs 等传统的配置文件还要糟糕。

Reply to this note

Please Login to reply.

Discussion

No replies yet.