























各位早上好,这里是终于上完这辈子所有的课不必再听老登吹牛的 Eltrac,端午假期好好地在家躺了三天(指背靠在人体工学椅上没日没夜地玩《饥荒》),现在一不小心又把节律打乱,正在让大脑强制开机。当然,另一个好消息是,现在可以(暂时)全心全意地关注自己,然后准备继续投简历和面试了。

Le Rouge et Le Noir
La raison dit oui 理性说是
Le cœur n’y est pas 心却不在场
Unis pour la vie 为生活联合
Faut-il faire comme si ? 我们应该如此吗?
D’autres font comme ça 就像众人一样
📺
Clojure 作者 Rich Hickey 在 2011 年 Strange Loop Conference 上发表的演讲,内容是为何以及如何创造简明(Simple)的软件系统,而不只是关注于使用容易(Easy)且熟悉的工具。
演讲开头对比了 Simple 与 Easy 的区别,前者是客观的,表明系统没有把一个以上的实体交织在一起;后者是相对的,一部分人熟悉某个事物,所以觉得它容易。此外还有 Construct(构造)和 Artifact(产物)的区别,前者是源代码和工具,后者是交付给用户的东西。容易使用的开发工具不应该阻碍软件开发者交付简明好用的软件产物。
Rich Hickey 对比了软件开发中复杂的东西和简明的东西。比方说,状态是复杂的,如果要排错,就需要复现系统中所有的状态;不可变的值是简明的,它没有把数据和时间交织在一起。再者,方法是复杂的,因为它把命名空间、数据和行为交织在一起;函数和多态是简明的。1
[1]
与类无关的方法(函数)如何与多态一起替代传统 OOP 语言(如 Java)中将方法与类绑定的机制,可以阅读《 从 CLOS 审视 Java 面向对象编程 》。文中的例子是 Common Lisp 的对象系统,其中有关多态的设计与 Clojure 相似。 ↩︎
使用这些工具编写软件,就能让创造简明的软件系统变得容易——Simple Made Easy。要保证软件质量,首要的是让系统尽可能简明,这对用户更好,也对后续的开发、拓展和维护更好,而「有了测试就有了安全网」的观点是次要的,复杂的系统有测试的保护依旧会失败,如今 Bug 的典型特征就是:它通过了类型检查,通过了测试,但它还是存在!简明的系统可以让 Bug 更容易被发现和修复。
ℹ️
根据泄露的 OpenAI 财政资料,他们在 2025 年获得了 $130.7 亿美元的营收,总计花费 $340 亿美元,在操作过程中损失 $209.2 美元,再加上利息,净亏损是 $385.3 亿美元。
Hacker News 上的评论有相当一部分在讨论,一个刚起步的科技公司损失这么多钱是否正常,观点意外地两极分化,看起来应该有充足事实资料支撑的讨论竟然无法让人达成一致,我想没人想去查资料,大家说的都是不可靠的经验之谈。我也不是会计,不懂财政,就不献丑了。
有趣的是这篇文章的最后一句话。
OpenAI is no longer just asking investors to believe that ChatGPT can become a default interface for work and consumer software. It is asking them to believe that the world’s most expensive product roadmap will eventually produce operating leverage before capital markets tire of funding the gap.
OpenAI 不再只是要求投资者相信 ChatGPT 可以成为工作和消费者软件的默认界面,还是在要求他们相信,世界上最贵的产品路线,最终会在资本市场厌倦了用资金填补空缺之前产出经营杠杆。
Ed Zitron 对此事的 分析 指出,OpenAI 在 2025 年的支出增长了八倍,对微软还有三十多亿美元的债务。
I’m not sure how this company finds a way toward any kind of sustainability or profitability.
我不确定这家公司要怎么找到达成任何一种可持续性和营收能力的道路。
由于文档很长,Ed Zitron 会在下个月给出更详细的分析,拭目以待吧。
顺带一提,Anthropic 这边有报道称他们有能力实现营收,这说明 LLM 不是只能烧投资者的钱、难以持续下去的昂贵技术吗?Ed Zitron 对此也有 分析 :根据报道,Anthropic 的营收在 2026 第二季度有增长,有趣的是,他们可能不会在第二季度过后保持营收能力,因为他们在五月和六月与 SpaceX 达成了 合作 ,使得数字在短期内上升了。实际上,他们的商业模式没有多大变化。
如果说我已经在认知和道德侧面 批评 了大语言模型这项技术目前被开发和使用的方式,我很期待继续跟进 Ed Zitron 的报道,看看 “AI” 热潮是否真的具有经济可行性。
ℹ️
📜
我自己在写 Commit 描述的时候,的确经常纠结某个改动究竟应该算作 refactor 还是 fix,比方说,我修复问题的方式可能是重构了代码。从我自己的体验来看,refactor 几乎是乱葬岗,不知道怎么分类的 Commit 都会被我当成重构,导致真正重要的、架构意义上的重构泯然于众人了。我不知道自己浪费了多少时间思考某个 Commit 应该是什么类型。
Summer Evans 指出 Conventional Commits 是有害的,它把关注点放到了不重要的类型上,而不是变更范围(scope)。贡献者、调试者和事件响应人都更关注范围而不是类型。人们需要知道哪一部分代码发生了变化,会不会影响他们的工作,哪些改动可能导致了生产环境出错等等。这些都和 Commit 是修复、重构还是新特性无关。
说起来,我也经常只写上 fix: ... 了事,不重视范围。
此外,使用 Conventional Commits 生成更新日志、自动提升版本号等等,都是有害的。Commits 面向开发者,而更新日志面向用户,比方说,回溯(revert)某个 Commit 会出现在 Git log 中,但不应该出现在更新日志里,因为对用户来说,被回溯的改动就是从未发生的改动。
总之,用 Scoped Commit 代替 Conventional Commits,不再关注类型。网站还列出了 Linux 、 FreeBSD 、 Git 、 Go 和 nixpkgs 的例子,可用作参考。
📜
某些非常小的容器可能没有安装 curl,要在里面临时发 HTTP 请求(比方说,测试与某个网站的连通性),可以用 Bash 的 /dev/tcp 文件。顾名思义,dev 是设备文件,tcp 就是 TCP 网络协议。这是个特殊的文件,实际上并不存在与文件系统中。
/dev/tcp 并不了解 HTTP 协议,但 HTTP 协议是建立在 TCP 协议之上的,所以可以用 /dev/tcp 手搓一个简单的 HTTP 请求,就像这样:
exec 3<>/dev/tcp/service/8642
printf 'GET /health HTTP/1.1\r\nHost: service\r\nConnection: close\r\n\r\n' >&3
cat <&3
其中,/dev/tcp/ 后面的 service 是主机名,8642 是端口号。剩下的部分就是各种稀奇古怪的 Linux 文件描述符和重定向:常识是 > 表示将输出重定向,< 表示将输入重定向,但 <> 是什么?文件描述符 0 是 stdin,1 是 stdout,2 是 stderr,但 3 是什么?
/dev/tcp/service/8642 可被视作一个 Socket(常见译名貌似是「套接字」…… 我就用原文好了),exec 3<> 做的就是把文件描述符 3 的输入和输出都重定向到后面的 Socket 文件里,可以看到后面的命令要么是将输出重定向到 3,要么是将输入重定向到 3。标准的文件描述符只定义了 0 到 2,剩下的 3 到 9 都是用户定义的,所以这里可以用来当一个输入输出的缓冲区。
值得一提,printf 里写的 Connection: close 是必须的,否则 TCP 连接会一直保持,不会自己关闭。
挺有趣的知识。
📜
ℹ️
Apple 的开发者新闻上前不久公布了一条小的消息,iCloud+ 的「隐藏邮箱地址功能」生成的隐私邮件别名,将会从原本的 @icloud.com 变成 @private.icloud.com,原先生成的地址不会受到影响。
原本 iCloud 邮箱也是在 icloud.com 域上的,如果新的邮箱别名全都被单独放在了 private.icloud.com 域上,服务商就可以没有风险地屏蔽 private.icloud.com,禁止用 Apple 隐私邮箱的用户注册。简单来说,现在 iCloud+ 的隐藏邮箱功能即将变得无用。
现在还可以创建 icloud.com 域上的邮箱别名,但我的建议是,不要再给 iCloud+ 续费了,换成自己的域名邮箱,或者用
DuckDuckGo Email Protection
。
在网站上引入免费的 Google Fonts,也引入了跟踪器,这可能违反了 GDPR 法案。FontSelf 是 Google Font 的可自托管版本,还有简单的子集选择器(可以创建体积更小的字体文件)。
如果不想自托管,可以试试 Bunny Fonts ,这是一家位于斯洛文尼亚的欧洲服务商,极客死亡计划就使用他们家的服务。如果你感兴趣,可以用 我的优惠链接 注册。
访问: FontSelf
引入一段 JavaScript 代码,在自己的网站上加入一个「广场」,同时在线的网站访客就可以一起互动,比如走动、在长椅上坐下、发信息聊天等等。TownSquare 可以自托管,也可以注册使用他们的服务。
访问: TownSquare
浴室地漏又堵了…… 每次都是我通的,上次排水不畅了一两个月,每个人洗完澡之后,洗澡水都会留在浴室里一两个小时,恶心得要命。我请同室买管道疏通剂通管道,一点效果都没有,最终还是我通的,通完之后排水很顺畅。我不理解为什么有人连疏通剂都不会用,并不是什么技术活儿。
过了大概两三周,又堵了。卡在地漏上的头发看起来也只有我一个人会扣,我不清理的话,就会一直卡在那。同室刚刚洗完澡,它仅仅是把地漏的盖子移开了,水根本下不去,地上、水里和地漏孔上全是头发,水上还浮着各种不知道是什么的渣…… 我讨厌地漏,为什么会有头脑正常的人用地漏这种一定会堵而且没有人愿意清理的东西?下次租房一定要找一间有蹲便的,我宁愿天天刷厕所。我已经迫不及待离开这个鬼地方了。
我现在非常想上厕所,但是厕所里全是某个恶心的生物留下的皮肤代谢物和脱落的毛发,还有满地的水。我觉得我要买雨靴了。
在 QQ 看通知的时候意外瞟到了好久之前加过的群,至少有三年没打开看了。点进去的原因是看到最近的一条消息是「不喜欢写 java」。本 Java 头号黑粉马上来劲了,不过我应该清楚即时聊天群组里是不会有高质量讨论的,最后失望离去。
对话开始貌似是因为一个大一新生说「我觉得现在学 Java 好啊」「没有 C 语言的指针」。有些幼稚的理由,但我突然意识到自己大一的时候貌似也因为类似的原因喜欢过 Java(短暂也非常羞耻的一段时间),当时应该是被酣畅淋漓的面向对象思考爽到了,就像我现在被酣畅淋漓的函数式思考爽到一样。
下午回到家想上厕所,打开厕所门,一滩崭新的同室洗澡水映入眼帘,其中漂浮着棕灰色的皮肤代谢物和绝赞人类毛发。我真的 [数据删除] 死我的生活了。
到家时大概是六点半,吃过饭之后,同室的洗澡水还在厕所漂着。大概是晚上八点,我才终于把已经堵得水泄不通(字面意义)的地漏捅开,看到水终于流下去的时候我真的 [数据删除] 死了。
我站在厕所外面等着疏通剂和水以及各种肮脏有机物发生化学反应,刺鼻的气味熏得我鼻子很酸。我全身是汗,我看着镜子里把头发竖起来的自己,又低头看看套在脚上的塑料袋,想不明白:
“我上辈子究竟是造了什么孽。”
如果你好奇地漏里卡的是什么东西:无他,就是那些没人扣的毛发和堵在细细管道里的皮肤代谢物组合成的一坨坨不可名状的糊糊。我很想给读者展示一下我从里面掏出来的战绩,不过还是不恶心各位了。
通完了…… 立马下单了更细的防堵滤网和一次性的滤网贴,但其实我更想要的是 [数据删除] 的冲击钻。希望短时间内不要再 [数据删除] 的堵住了!
本想要打开《饥荒》发泄,毕竟正好上次玩的时候准备好了打天体后裔的前置材料,想着暴揍 Boss 一顿就可以……
我已经忘记自己死了几次了。之前看玩家社区骂这个 Boss 设计的时候我还想为 Klei 辩护,现在我理解了。现版本的薇洛都能算半个战斗专精角色了,在有小熊扛伤害的前提下还是频频出错。凭实力我只能打完启迪战争瓦器人,把天体后裔达到第二阶段的时候,我的怨念已经积攒到了忍无可忍的程度——尝尝代码的滋味吧影子电线怪!
不过谁叫我用一个人的战力打一个被设计给多人一起解决的 Boss 呢?
面试准备得其实挺充分的,技术问题也只有一个不太确定,没回答上来,不过我完全忘记了准备另一个面试常见问题——「你还有什么问题问我们的吗?」空气凝固了五秒之后,我说:“暂时没有。”把面试官整笑了。面试结束后我立马知道自己应该问什么了,接下来就是一边做家务一边时不时攻击床垫,一直闪回刚才发生的事情。说实话我也接受了即便没有通过也没什么大不了的这个事实了,毕竟是第一次面试。
复盘的时候我意识到,尽管我自认为已经摆脱了很多学生思维了,做事也相当结果导向,但是在面试中还是问了什么答什么的被动状态,换句陈词滥调来讲的话,就是「不知道怎么推销自己」。
好了,这事儿就这么翻篇吧,就当作脱敏练习吧。
过去的两天里发生了什么……?
觉得自己很懂英语可能是很多计算机老登的通病,至少我已经遇到过两三个了(这里说的老登是那些空有学位或阅历,但缺乏真学识和素养的)。比方说,我的某个老师喜欢在不提及任何上下文的情况下抛出一个缩略词,让学生猜是什么意思。他还喜欢反复提及包含 X 的缩略词,因为他觉得 X 实际上指代 ex- 这个音节而非 x 这个字母是很专业的知识。
他还因此声称英语里没有 X 开头的单词,我都不忍心揭穿它,我当下不查字典就能举出三个例子:Xavier、Xannax 和 Xylophone,其中 X 的发音是 /z/。查字典之后,找到了 X-ray,勉强算吧。
某些老登还有种奇妙的幻想,觉得学生只在课堂上学习知识(事实上学生在除了课堂的任何地方学习知识)。有一次他问「钩子」的英文是什么,我回答 Hook 之后,他问我是在英语课还是专业课上学到的这个词…… 如果你问我为什么要在课上和老登互动,是因为教务处的人掌握了数数这项核心技能,我被迫到课,而这个老登有着「别人不看着他,他就讲不下去」的毛病——Attention whore, I’d say。
发现自己开始讨厌这样的文章:一个自然段只有一句话,写完之后就换行,很少出现行数超过二的段落。这些文章里,有时候一段话里只有几个字,比如「恰恰相反」「事实并非如此」;很多时候,由关联词串起来的一整句话会被拆成两部分,变成两个段落。此类文章还有个显著的特点:不交代背景、出发点、上下文,抓住一个点之后就开始抛结论,一个结论被拆成好几个短段落,让人觉得像是推理过程。
就像在文章里看到「AI 时代」这个词我会直接关闭标签页一样,看到这样的文章我也会直接退出。写得像短视频文案的文章还不如那些全篇都是代码片段和操作流程的博客文章。
看人写的文字是最能读出一个人思考能力的,比如我现在就在看着组员写的架构文档感到无语。我想不明白他是怎么忽略了我写的注释,保留了他用 LLM 生成的毫无逻辑、与实际需求毫不相关的文字,完全误解了我描述的架构设计、画了个满是错误的架构图的。他还让我多写点错别字和病句,以此降低 “AI” 率。
我不想管了。明天还有实训安排,直到今天下午六点,具体的安排(什么时间、内容是什么、要到哪里去…… 以及所有正常应该通知的事情)都没有出来。真是厉害啊,老师们。
期末周也近了,考试安排也是都没出来,我都不知道在面试的时候应该跟 HR 说自己什么时候能到岗。真是厉害啊,会数数的教务处老师们。
我通常克制在文章里用表情符号,但这是送给你们的:😅
实训安排出来了,安排是:没确定什么安排。课表上写的是十七十八周,你们负责的老师也喜欢在截止时间前赶工吗? 据辅导员称,原本负责老师设想的是十九、二十周(这两周是考试周,我不考试的吗?),开会讨论之后,可以勉强提前到十八、十九周。
由于他们自己的失职,没能在课表时间之前确定实训安排,所以耽误了一些学生的实习时间(后这明显是更重要的事情),而他们对此给出的解决方案是:可以骗企业说自己是某个重要项目的核心成员,所以必须完成实训才能去实习;或者,选择自修,去参加实习,事后提供实习 Offer 和后续的就业 Offer,并根据 Offer 打分——相当于是说,如果之后没有找到工作(不只是实习),就不给这个实训课的分数。
这我就不得不再给你们送一个表情符号了:😅
对这届高考考生的建议:考虑报某个大学的某专业之前,尽量找大三、大四的学生问问这个专业的老师都是些什么货色,并不是有博士学历的就是好老师(甚至不能说是及格的老师)。除此之外,顺便打听打听毕业设计的和毕业要求,如果是工科专业再看看实训安排是什么样的。
对还没高考的高中生的建议:高分不是为了好前途,是为了去个好点的学校离傻逼远点。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。