blob: 4ad9e8530b74e55e57cfb6d767e2205e43c652f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
+++
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 <br />
> 如果大坝早了许多年破裂
>
> And if there is no room upon the hill <br />
> 如果山丘上已经没有位置
>
> And if your head explodes with dark forebodings, too <br />
> 如果你的头脑也因不详的预感爆开
>
> I'll see you on the dark side of the moon <br />
> 我和你会在月之暗面相见
<!--more-->
## 连接
### 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`。
不过我找了半天,也没有找到提交网站的地方,内容兴许都是创始人亲自挑选和收录的吧。

访问:[Internet Phone Book](https://internetphonebook.net/)
### SplatHash
一个用户生成模糊图片的哈希算法,与 BlurHash 类似,不同的是,这个算法能给任何图片生成固定 16 字节大小的哈希,也可以表示为 22 个字符的 `base64` 编码字符串,而且,它的解码速度非常快,占用非常小。目前主要提供 Go 语言、TypeScript 和 Python 实现的程序。
这个算法也有缺点,是我的个人观点:生成出来的模糊图片太丑了。

访问:[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。

~~可是,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)页面已更新。
|