+++ title = "稻草人周刊 Vol.70" subtitle = "被赋予的自由不是自由" tags = [ "软件", "技术", "自由", "健康", "生活",] date = 2026-03-02T00:18:59 draft = false toc = true toot = "https://akk.eltr.ac/objects/e6aa34de-da81-4aa2-9612-371465d5275b" +++ {{< music album=true cover="https://img.eltr.ac/geedeapro/posts/weekly/70/Dark_Side_of_the_Moon.png" title="The Dark Side of the Moon" artist="Pink Floyd" apple="https://music.apple.com/cn/album/the-dark-side-of-the-moon-50th-anniversary-remastered/1665303755?l=en-GB" spotify="https://open.spotify.com/album/4LH4d3cOWNNsVw41Gqt2kv" >}} 这是一张上世纪七十年代发行的摇滚专辑,是 Pink Floyd 乐队发行的第八张录音室专辑,名为《月之暗面》。我最喜欢的一首是 Brain Damage(脑损),不过,我建议你一定要从头到尾把专辑听一遍。专辑不长,只有十首歌,一共四十多分钟。这首 Brain Damage 和下一首 Eclipse(日食)连接非常顺滑,让不仔细听的人觉得是同一首歌,整张专辑都用这样的衔接串联了起来,最后以心跳声结束。 > And if the dam breaks open many years too soon
> 如果大坝早了许多年破裂 > > And if there is no room upon the hill
> 如果山丘上已经没有位置 > > And if your head explodes with dark forebodings, too
> 如果你的头脑也因不详的预感爆开 > > I'll see you on the dark side of the moon
> 我和你会在月之暗面相见 ## 连接 ### FLOSS 和 FOSS > [!note] 📜 > [FLOSS and FOSS](https://www.gnu.org/philosophy/floss-and-foss.en.html) by Richard Stallman 如果你不知道这个作者是谁:他开发了 Emacs 编辑器,还编写了 GNU GPL 开源协议,是自由软件基金会的创始人。 本文解释了 FLOSS 和 FOSS 的区别,以及相关术语的政治倾向。简单来说,自由软件社区有两个政治派别:自由软件运动派(free software movement)和开源派(open-source)——这两个概念完全不一样,不应该混淆。自由软件是指可以自由运行、研究、更改,以及分发未更改或更改后副本的软件。开源的概念是后来(1998 年)出现的,一开始是为了避免人们混淆「Free」的意思(可能会被误以为是「免费软件」),不过开源的意思很快发生了改变,与自由软件运动分道扬镳。许多人把开源当成自由软件的商业概念,好让商业公司对自由软件的实用价值(practical benefits)感兴趣,而忽视了「自由」,很快「开源」就变成了强大、可靠软件的代名词,人们对「自由」的关注减少了。 很不幸,我最初接触到的概念就是「开源」,而非「自由软件」。 既然有两派之分,自然也有中立派。中立派使用「自由和开源软件」这个词,即 FOSS(Free and Open-Source Software)。这个词没能解释「Free」的真正含义,所以有人会使用法语或西语单词「Libre」来准确表达「自由」的意思,继而有了 FLOSS(Free/Libre Open-Source Software)这个词。Richard Stallman 在文中表示,自由软件运动的参与者不会使用 FOSS 或 FLOSS,因为这个词把 Free Software 切分开了,把注意力给了 Open-Source;应该使用 Free Software 或者 Libre Software 这个词。 至于我的态度,抛开别的不谈,如果只用言简意赅的程度来评判,我不得不说,「自由软件」是更好的词。此外,FOSS 和 FLOSS 作为缩略词,理解门槛会更高一些,而且中文里还是尽可能少夹杂英文比较好[^2]。 ### 被赋予的自由不是自由 > [!note] 📻 > [《独树不成林》308 - 女权是否意味着争取选择自由?](https://www.xiaoyuzhoufm.com/episode/699e1a79a22480add6f62ed7) 播客从女性主义展开,回顾和分析了现代的人权进程,关于「自由选择的权利」。 播客中重要的观点是:被赋予的自由不是自由。一个思想停留在前现代的老妇人,没有自我意识,明明知道自己的丈夫对她不好,甚至恶语相向,却还要求死后跟丈夫葬在一起,并教育子女成为和他一样的受害者。这类人无疑是可怜的,但没有办法被拯救,即便他们在政治层面拥有了自由,他们也无法真正行使自由,甚者,他们根本不觉得自己是自由的,或者完全不会思考「自由」这个概念。 对于受过现代教育的人而言,自由也不见得总是好事。因为自由太广泛,选择的数目太多,人们获得的不是选择自由,而是选择困难。这种选择困难小到购买家电时陷入纠结,难以找到最好的选项;大到面对分叉的人生道路时,因无法在可能性之间做出选择,而荒废宝贵的时间。自由甚至妨碍了人们好好生活。许多人感到焦虑痛苦,就是因为有着无止尽的选择,每天都在为上一个选择而后悔,为下一个选择而纠结。这么看来,陈腐、老旧的生活方式,由于不需要支付选择自由的代价,反而是轻松的人生。 播客并没有给出解决方案,兴许也不会有适用于所有人的解决方案。争取自由(各种意义上的自由)都是要付出代价的,轻松的做法当然是服从长辈、听信权威、享受大科技公司的产品,把选择的代价外包出去,但别忘了,在「自由」和「轻松」之间选择,也需要拥有选择的自由。 ### 永远不要买 .online 域名 > [!note] 📜 > [Never Buy A .online Domain](https://www.0xsid.com/blog/online-tld-is-pain) 作者在 Namecheap 上买了很便宜的 `.online` 域名,用来做产品的主页,网站上只放了一些介绍,和 App Store 的链接。某天他发现网站被标记为「危险网站」,整个浏览器页面都是红色的,绕过警告强制打开后,发现无法正常访问网站,状态显示 `serverHold`。排查后发现 DNS 没有解析,原因是这个域名被列进了「安全浏览黑名单」(Safe Browsing blacklist)。 在邮件联系了注册商和注册局之后,作者得知他必须在谷歌搜索控制台(Google Search Console)验证域名所有权,才能申请重审,但这无法做到,因为验证身份需要更新 DNS 记录,而他的域名因为被列入黑名单而根本没有被解析。 所以,教训就是:不要买看起来很奇怪的 TLD。 ### 跟*蠢货*相处会变老得更快 > [!note] 📃 > [Negative social ties as emerging risk factors for accelerated aging, inflammation, and multimorbidity](https://www.pnas.org/doi/10.1073/pnas.2515331123) 这是一篇科学研究,我只读了摘要部分,所以会有疏漏。 简单来说,负面的社会联系(negative social ties)会加速衰老和增加疾病发病率,其中衰老是通过基于 DNA 甲基的衰老生物钟测量的(DNA methylation-based biological aging clocks)。文中把这种负面的社会联系称作 Hassler(纠缠者),并发现研究中 30% 个体都报告他们的社交网络中,至少有一位 Hassler。Hassler 一般占据社交圈的外围,属于弱连接。女性、烟民、不健康者和有着恶劣的童年经历的人,更容易遇到 Hassler,这形成了规律:在社交层面易受攻击(vulnerable)、在健康层面易受病扰的人更容易遇到 Hassler。所以,我猜,如果要尽可能少遇到这类人,应该要变得足够自信和强大才行。 社交网络中每多一个 Hassler,衰老的速度就会增加 1.5%,大概会变老 9 个月。不同的人影响也不同,亲属和非亲属 Hassler 与健康有着有害的联系,而如果伴侣是 Hassler 的话,则没有。如果 Hassler 数量众多,对健康的影响就不只是变老那么简单。 我最近在使用一个 App 分析我锻炼时的「最大摄氧量」,这个 App 会对比同龄人中的平均数据,并计算出我的身体年龄(当然和研究中使用的方法不一样,软件算法也不能和科学研究相提并论)。春节回到家之后,App 计算得出的我的身体情况明显下滑,并表示我正在快速衰老(Aging Quickly),而我刚回到自己家一天,这个数据就开始慢慢回升了。尽管没有太多科学依据,但我觉得这是我远离了一大群 Hassler 导致的,当然还有睡眠的影响,在老家的时候总是睡不好。 ## 星群 ### 互联网电话册 在一个电话界面拨号,就能接通某个个人网站。Internet Phone Book 是每年发布一次的刊物,收录了各种有趣的个人网站,每个网站都有「电话号码」。我是在 [Elle](https://ellesho.me/page/) 的主页发现这个网站的,他的互联网电话号码是 `677`。 不过我找了半天,也没有找到提交网站的地方,内容兴许都是创始人亲自挑选和收录的吧。 ![Intert Phone Book: Dial-a-Site](https://img.eltr.ac/geedeapro/posts/weekly/70/1Capture_2026-03-01_21.53.00.png "Internet Phone Book 的拨号页面") 访问:[Internet Phone Book](https://internetphonebook.net/) ### SplatHash 一个用户生成模糊图片的哈希算法,与 BlurHash 类似,不同的是,这个算法能给任何图片生成固定 16 字节大小的哈希,也可以表示为 22 个字符的 `base64` 编码字符串,而且,它的解码速度非常快,占用非常小。目前主要提供 Go 语言、TypeScript 和 Python 实现的程序。 这个算法也有缺点,是我的个人观点:生成出来的模糊图片太丑了。 ![](https://img.eltr.ac/geedeapro/posts/weekly/70/comparison.png "SplatHash 算法结果与 ThumbHash 和 BlurHash 的对比") 访问:[junevm/splathash](https://github.com/junevm/splathash) ### Stop Tahoe Update Stop Tahoe Update(停止 Tahoe 更新)是由社区维护的项目,帮助不想更新到 macOS Tahoe 的用户留在 Sequoia 等稳定版本上。目前这个项目提供了 Device Management 的配置文件,通过这个配置文件,用户能够推迟 macOS 更新最长 90 天,具体效果是: 1. 阻止「今晚安装」和「立即安装」的提示。 2. 阻止系统设置中「有新版本」的数字提示。 3. 检测并选择性阻止 macOS 系统应用的安装。 我的 Mac Mini 安装了 Tahoe,但我的主力机 MacBook 还是 Sequoia,我也不打算更新。我时常会收到系统更新提示的骚扰,这个项目帮助很大。顺带一提,我觉得这句话我永远也说不够:*macOS Tahoe 毁了 Safari!* 访问:[travisvn/stop-tahoe-update](https://github.com/travisvn/stop-tahoe-update) ## 当下 ### 平淡无奇的日常 本周是待在老家的最后一周,周末就回家了。回去之前除了每天给弟弟补习英语,偶尔出门闲逛,坐在及其不舒服的桌椅上看剧和玩网,以及读读书和写写代码之后,就没干别的了。 唯一的例外是周二出门和高中同学玩剧本杀,两三年没见面,感觉大家都没怎么变。不过,倒是有不少人惊讶我瘦了好多,还挺爽的。剧本是不用带脑子玩的类型,很俗套的家庭纠葛,结婚、争彩礼嫁妆、离婚、分财产和抚养权…… 不过倒是有很多吵架和演戏的情节,非常戏剧化,玩得还算开心。 *我真的是个内向者吗?* 在老家的几周,每天都想出门闲逛,但又找不到地方去。回家之后,倒是每天都想在家待着,要逼自己多出门走走,取个快递、倒倒垃圾之类的。在家多快乐,走出书房就可以去吧台给自己冲杯咖啡,冰箱里没有被喜好囤积的老人塞满不知道是什么的冻货,每个地方都是干净整洁的。 ### 就决定是你了,口呆花! [Weepinbell](https://codeberg.org/eltrac/weepinbell) 稳步开发中(指周日的时候突然想起来自己打算用 Clojure 写个 Webmention 接收端,这才 `cd` 进项目目录)。周中把 [Webmention 规范](https://www.w3.org/TR/webmention/)里有关接收端的部分仔细读了一遍,发现这真的是一项非常简单的技术规范,门槛并不高,只是知名度太少,导致普通用户没有开箱即用的选择。 简单到什么程度呢?大概就是发送端只需要向接收端发送一个 POST 请求(只包含 `source` 和 `target` 两项数据,表单格式,不用 JSON),而接收端也只需要处理这一个 POST 请求,检查一下 URL 是否合法、有没有自己引用自己的情况、爬一下 `source` 看看是不是真的引用了 `target`。除了规范要求 Webmention 验证应该异步进行之外,就没有太多其他的技术规范了,收到 Webmention 之后要怎么存储、怎么展示、作何处理,都是接收端自己决定。 用 Clojure 编写 Web 应用的体验也很好,可以直接偷 Java 生态的库来用(比如,我验证 URL 的时候就用到了 `apache.commons.validator`,提取域名的时候用到了 `java.net`)。由于需要异步编程,还研究了一下 `clojure.core.async` 库,发现 Cloure 竟然支持和 Go 语言类似的并发模型,有 `go` 和 `chan`,没想到偷完 Java 生态,还能偷 Go 的异步编程最佳实践来用,而且能复用编写 Java 和 Go 两门语言的程序的经验,真的很舒服了。 处理 Webmention 很显然需要一个消息队列:把所有待处理的 Webmention 都放在一个 `channel` 里(在 Go 语言里是`c := make(chan type)`,在 Clojure 里是 `(def c (chan))`),然后启动一个或多个 `goroutine` 从 `channel` 里取出 Webmention 对象,爬取 `source` 验证是否包含引用,确认无误之后存入数据库,这些都可以轻松地异步执行。不过 Clojure 里应该是没有 `goroutine` 这个东西了,不知道底层是不是 Java 那臃肿的 `Thread`。无论如何,能够直接写 `(go ...)` 进行并发就已经很好了。 至于存储,我还在思考选用什么数据库。尽管在部署应用时常用 SQLite,但开发时我只用过 MySQL 和 MariaDB。我想,这正好是尝试新技术的机会,而且 Webmention 相互没有关联,数据结构并不复杂,兴许用 NoSQL(非关系型数据库)很合适,正好可以试试 MongoDB。另外的选择是用 SQLite 存储 JSON 数据,或者直接把所有 Webmention 都放在一个 JSON 文件里。这些都是下周要去做的事情了。 最后解释一下为什么项目名字叫 Weepinbell 吧。因为不想起名字,又受 [Repokemon](https://cheeaun.github.io/repokemon/) 启发,决定选一个宝可梦的名字。一开始想取 Web(网络/蜘蛛网)的意思,选个配色和 Clojure 的蓝绿色调相似的宝可梦,所以看上了滴蛛(Dewpider)。不过本人很讨厌蜘蛛,而且 mention 这个词也完全没体现出来。最后翻来翻去,选择了口呆花(Weepinbell)的名字。因为前两个字母 `We` 和 Webmention 的前两个字母相同,而后面的 `bell` 一词意为「铃铛」,可以表示「通知」,而 Webmention 本身的用途就是通知,通知作者他的内容被另一个站点上的内容引用了。 ## 切片 - “哈!你用浏览器编辑文本。” —— NeoVim 的主要贡献者 TJ DeVries 在 [2024 年 VimConf](https://www.youtube.com/watch?v=5u604lTkGAY) 劝告 (Neo)Vim 用户们不要用这种话说服别人使用 (Neo)Vim。 ![](https://img.eltr.ac/geedeapro/posts/weekly/70/1Capture_2026-02-23_18.40.29.png) ~~可是,VS Code(以及 Cursor 等 VS Code 分支)就是浏览器啊!~~ *逃离现场。* - 看到日本网站丑丑的设计反而觉得有点喜欢,大概是因为喜欢多样性,扁平、单色、冷静、克制的设计看太多了,不免有些乏味。([相关链接](https://sabrinas.space/))最近在 IndieWeb 上闲逛的时候,也看到了一些不太主流的设计,我想这是个性的体现,比在主题商店找到的好看模板更吸引人。 - 想把旧电脑的硬盘拆下来做成移动硬盘,硬盘盒已经买好了,结果我拆电脑的时候被父亲撞见。 他:电脑留给我用,硬盘我给你买一个。 我:啊?现在硬盘贵得很…… 他:没事,要好多钱你给我说嘛。 于是我现在有了一个 2TB 大小的移动 SSD,目前用来备份 iCloud、S3 储存桶和服务器,兴许还会存点音乐和剧什么的吧。感觉可以做一个末日[^1]生存包,存一些音乐和《老友记》全集,应该能维持很长一段时间的 san 值健康。 - 又买了管道疏通剂,尝试疏通浴室的地漏。用完一整瓶疏通剂之后才发现,水排得慢并不是因为管道堵塞,而是滤网的设计缺陷。说是设计缺陷毫不夸张,因为那个金属滤网上有一个类似盖子的结构,会在安装上之后挡住排水口,只留下非常小的缝隙;而盖子旁边是环形的凹槽,那里会积水,大概是和管道形成了类似连通器的结构,凹槽水满了之后会从盖子的缝隙流到管道里。 这貌似是给水量不大但有排水需求的场所使用的滤网,能够有效拦截固体避免堵塞,但根本没办法在淋浴时有效排水,房东装这房子的时候是怎么想的? 室友:能不能把滤网翻过来用? 如果忽略掉那个朝上的盖子,洗澡时小心不要踩在上面的话,排水就很顺畅了…… 忍了半年的积水问题,竟然是这个原因吗…… [^1]: 指断网。 [^2]: [用词](/glossary/#:~:text=battries%2Dincluded-,%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6,-%E5%8F%AF%E4%BB%A5%E8%87%AA%E7%94%B1%E8%BF%90%E8%A1%8C)页面已更新。