summaryrefslogtreecommitdiff
path: root/content/weekly/65.md
blob: a1ad90e26fc724c58a70450385dd7a18ad2bcc9d (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
+++
title = "稻草人周刊 Vol.65"
subtitle = "坏的 AI 使用者将会受到公开羞辱"
tags = [
    "AI",
    "编程",
    "自由软件",
]
date = 2026-01-26T10:15:25
draft = false
toc = true
toot = "https://akk.eltr.ac/objects/3365225b-fc10-4afb-b963-757689ce820e"

+++

{{< music cover="https://img.eltr.ac/geedeapro/posts/weekly/65/mlp-album-cover.png" title="This Day Aria" artist="from My Little Pony" apple="https://music.apple.com/cn/album/this-day-aria/1646671002?i=1646671183&l=en-GB" netease="https://music.163.com/#/song?id=28077570" spotify="https://open.spotify.com/track/4QogUq9Sgfoh33oSTondjr" >}}

来自《我的小马驹:友谊是魔法》第二季的一首歌曲,其实从歌曲的风格、质量和剧情的设计来看,就不难理解这部动画为什么如此受成年人喜爱了。

<!--more-->

## ⋈︎ · 连接

### Ghostty 的 AI 政策

> [!note] 📃
> [AI Usage Policy - ghostty-org/ghostty](https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md)

我日常使用的终端模拟器是 Ghostty,这个项目在前不久正式成为了非盈利软件并接受捐赠(参见[第 58 期周刊](/posts/weekly/58/)),这周他们团队发布了 AI 使用政策,以下是我最喜欢的一句话:

> Bad AI drivers will be banned and ridiculed in public.
>
> 坏的 AI 使用者会被封禁并且被**公开羞辱**。

### 亮色模式「膨胀」

> [!note] 📜
> [Light Mode Infffffflation](https://willhbr.net/2025/10/20/light-mode-infffffflation/)

作者观察到了一个有趣的现象,在 macOS 上,亮色模式正在变得越来越亮。在以前,系统 UI 没有亮色模式和暗色模式的选项,那个时候的 UI 除了个别是黑色背景,大部分都偏向中性的灰色。到后来,UI 界面变得越来越白,暗色模式也随之出现。作者表示,由于 macOS 的某次更新让 UI 变得太亮,他一直保持使用暗色模式,尽管他有些想念以前的灰色 UI。

令我震惊的是,iOS 26 竟然开始使用 HDR 技术让一些元素变得比 100% 的白色还要更亮,简直是邪恶至极,又多了一个讨厌 iOS 26 和 macOS Tahoe 的原因。

白色的确会让人感觉更干净,黑色越深也让人感觉越酷,这种审美倾向使得亮色模式变得越来越亮。说不上有什么社会危害,但对我的眼睛非常不友好。作者建议,如果要设计 UI 界面,可以大胆一些,选择 50% 的灰色。我们的眼睛都会谢谢你的。

### 你的订阅现在成了我的周末项目

> [!note] 📜
> [Your App Subscription Is Now My Weekend Project](https://rselbach.com/your-sub-is-now-my-weekend-project)

比起「现在有了 AI 人人都能做副业当程序员开发软件」的说辞,我更喜欢这篇文章作者的态度。他 Vide Code 了一些解决自己需求的小软件,用来代替订阅制软件,并且承认他清楚这些软件的质量无法承受更多的用户,他不会将它们商用甚至推荐任何人使用。他仅仅是用来解决自己的需求而已。

不过,LLM 编程工具并不是免费的,Vibe Coding 实际上很烧钱。从我有限的经验来看,开发规模稍大一些的软件时,使用自然语言编程所耗费的精力比自己亲手写要多得多,描述需求就是很累人的,因为需要完成想法到指令的转换——*说真的,为什么有人比起自己敲代码,会更愿意去做对接沟通和审查工作的事情?* 所以,长期而言,我很怀疑作者能不能用这种方式维持自己的数字生活。对于其他想要做此尝试的人:作者本身就是软件工程师,只是没有编写 macOS 应用的经验而已,而 LLM 编程工具只是帮他补足了这方面的空缺。

### Tree-sitter 和 LSP 有什么区别?

> [!note] 📜
> [Explainer: Tree-sitter vs. LSP](https://lambdaland.org/posts/2026-01-21_tree-sitter_vs_lsp/)

前几天折腾 NeoVim 插件和配置,经常接触到 LSP(Language Server Protocol)和 Tree-sitter 这两个东西。我感觉它们提供了类似的能力,但似乎略有不同。这篇文章解释了两者在应用层面的区别,读完之后有豁然开朗的感觉。

简单来说,Tree-sitter 常被用来实现代码语法高亮,它看起来像是一个语法解析器,但实际上是个「解析器生成器」——给它一门编程语言的语法描述,它就可以生成这门语言的语法解析器程序。比起使用正则表达式匹配语法结构,Tree-sitter 能够容忍语法错误——这很重要,因为在编写代码的时候,代码在大部分时候都处于「有语法错误」的情况。如果使用正则表达式实现语法高亮,编写代码的时候,屏幕上代码的颜色就会一直变化。一些插件也可以调用 Tree-sitter 来查询代码中是否存在特定的语法对象。

而 LSP 是一个开放的协议,是编辑器和语言服务器(Language Server)通信的协议。语言服务器从名称上来看,似乎就会做更多的计算和分析。Rust 的官方语言服务器名为 `rust-analyzer`,就是「Rust 分析器」的意思。编辑器里显示的错误和警告,例如未被使用的符号定义、不够现代的 `for` 循环写法等等,都是语言服务器提供的。还有代码补全、通过函数引用寻找定义、显示某个标准库函数的文档,也是语言服务器的能力。~~所以我不理解那些非要用 IntelliJ IDEA 写 Java 代码的人,真要伺候这门语言也完全可以换个好点的编辑器,IDEA 有超过一半的功能都可以用 Java 的语言服务器代替,另外一部分功能学会命令行也能用,而且更快,不会在臃肿的 GUI 迷宫里迷路。~~

如果用人类语言类比,我感觉 Tree-sitter 像是趣广泛的语言学爱好者,知道 à、en 和 dans 是法语里的介词,但不知道是什么意思。给他一个法语句子他能划分出句子成分,但是自己不会写也读不懂。~~天哪,这简直就是我。~~ 语言服务器除了能读懂语法,还能指出用词不当和句式杂糅等问题,对一门语言有最官方和全面的了解。

从功能上看,LSP 优于 Tree-sitter,但后者速度更快,代码高亮和基础的语法分析应该用它。

## ⁂ · 星群

### Open-source comments

在 Fedi 上表达了对评论系统的纠结,[@lok](https://rex.cat/@lok) 给我推荐了这个网站。简单来说,这是一个罗列了几乎所有开源、自托管评论系统的数据库,可以按标签筛选、搜索和按条件排序。

*我不知道什么时候产生了技术栈偏见,看到了后端用 Java 写的就避而远之,看到 Node.js 也总想换别的,看到 Go 就像看到家人了一样。嗯…… 大概也不算好事。* 不过,如果我一定要选的话,我大概会更偏向于使用用 Go 写的 Remark42。

如果你的博客也是静态网站,有使用新评论系统的打算,可以参考这个网站。

访问:[Open-source comments](https://lisakov.com/projects/open-source-comments/)

## ↯ · 当下

### 成为~~密码学黑客~~

上周更新了邮箱地址到 `hi@eltr.ac`,突然想到自己的 GPG 密钥对也应该更新,毕竟密钥上还用的是旧邮箱信息。一开始我不知道能够直接用 `gpg --edit-key` 增加 UID,所以生成了一个新的密钥对。正好,我之前的密钥一直是储存在本地的,日常使用也是直接使用主密钥签名,这并不是最佳实践,甚至可以说十分危险,新建一个「干净」的密钥也是好事。

开始讨论之前要简单解释几个名词。PGP 是 Pretty Good Privacy 的缩写,是一个非自由软件,用于加密、认证和签名,为通信和数据交换提供隐私保障,其原理是非对称加密算法——用户生成一对公钥和私钥,公钥可以加密信息,但是只有私钥可以解密,这种非对称性也能用于验证互联网上某人的身份。OpenPGP 是一个开放的协议,而 GPG(GNU Privacy Guard)是实现了这个协议的自由软件。在应用层面,OpenPGP 可以给 Git commit 签名以验证代码提交者的身份,可以签名或者加密电子邮件保证隐私,可以直接加密本地存储的文件以避免明文储存敏感信息…… 关于 OpenPGP 还有很多值得探索的,这里点到为止。

一般来说,OpenPGP 的最佳实践是**离线**创建一个只有签发(Certificating)能力的主密钥,并且储存在永远离线的介质上;同样在离线情况下,使用主密钥签发具有其他能力的子钥,比如签名(Signing)、认证(Authenticating)和加密(Encrypting),并且子钥的有效时间应该较短,可以每年或者每半年更换一次。原则上,只有需要签发新的子钥的时候,才应该使用主密钥,日常都应该使用私钥,并且主密钥应该从联网的设备上删除。

不过就算是私钥,一旦暴露也会对自己的数据身份造成威胁,应该有更安全的、不可导出的、兼顾存储安全和使用便捷性的解决方案。事实上也确实有,那就是实体密钥。最常见的实体密钥是 Yubikey,支持 OpenPGP、Passkey 和多种协议,但是国内买一个 Yubikey 实在是太贵了,要六七百。联邦宇宙上[有人推荐](https://m.isle.moe/notes/ahsra74gop)了国产且开源固件的 Canokey,价格不到两百,而且支持的协议也完全够我用,于是我几乎没有犹豫就下单了。

![Canokey 是一个扁扁的塑料方片,其中一端有 Type-C 接口,中间是铜色的金属点](https://img.eltr.ac/geedeapro/posts/weekly/65/airpods-vs-canokey.jpeg "为了方便直观地比较大小,我放了个 AirPods 4 在这。")

我把加密子钥和认证子钥导入了 Canokey,把签名子钥留在了 MacBook 上,因为我需要频繁给 Git commit 签名,一直插着 Canokey 大概也不太合适。目前我的 GPG 密钥对信息是这样的。[^1]

```shell
➜  ~ gpg --list-secret-keys
[keyboxd]
---------
sec#  ed25519 2026-01-22 [SC] [expires: 2029-01-21]
      2DF03B76B4588E9DE7A80FEF8CF13C15FE112E87
uid           [ultimate] Eltrac (Eltrac's Master Key) <hi@eltr.ac>
ssb   ed25519 2026-01-22 [S] [expires: 2026-07-21]
ssb>  rsa3072 2026-01-22 [E] [expires: 2026-07-21]
ssb>  rsa3072 2026-01-25 [A] [expires: 2027-01-25]
```

主密钥我离线储存在加密的 U 盘和离线硬盘上,有两份,目前大概还做不到异地备份,但暂时也足够安全了。

关于 GPG,我还有很多要探索的,就放在之后再谈吧。

### 博客的改动和未来发展

这周我购买了 Contabo 的一台 VPS,安装配置了 Akkoma(一个联邦宇宙软件,Pleroma 的分支),迁移了自建的 Linkding 和 Forgejo,安装了 Uptime Kuma。我还迁移了博客的对象存储到 Cloudflare R2,你大概会觉得图片加载慢了一些。

详细的相关内容,可以阅读《[极客死亡计划书 III](/posts/site-report-3/)》。值得在这里一提的是,我的 Uptime Kuma 站点名字叫作「How's Eltrac?」(Eltrac 还好吗?),域名是 [hows.eltr.ac](https://hows.eltr.ac/)——这下这个 $45 的域名也算是玩回本了(并不)。

### 有没有中文博客圈的 Hacker News?!

我开始讨厌 Giscus,但是我四处翻找都没能发现令我满意的评论系统,这真是静态博客最不可忽视的缺陷之一了。

最近在 Hacker News 上看英文文章的时候,突然开始羡慕英文博主能够大大方方地不添加评论区,因为他们可以把链接提交到 Hacker News 上,大家在这个网站上讨论页面内容,甚至有不少博主会引导访客到 Hacker News 上讨论。于是我在 Fedi 上发了一条[帖子](https://akk.eltr.ac/objects/88bdf774-6ad6-4f78-8fff-5bb970f64446):

> 希望中文独立博客圈有类似 Hacker News 的网站,这样我就不用纠结要使用什么评论系统了,大家都在一个网站上讨论文章内容就好,还能把写作和社交这件事情很好地分开。

中文博客圈的 RSS 聚合网站和导航网站已经够多了,如果有一个类似于 Hacker News,能让大家围绕一个 URL 展开讨论,并且足够开放和自由的平台就好了!V2EX 和 LinuxDo 这样的论坛似乎很多人喜欢,可我也很难融入那里的氛围,而且也不是为了「讨论其他网站上的内容」而生的。

*已经在考虑自建一个支持 ActivityPub 的中文 Hacker News 替代了*。

[^1]: 如果你不熟悉 GPG 的命令行界面,其中 `sec` 表示私钥(Secret Key),而 `ssb` 表示子私钥(Secret Subkey);`#` 表示没有在本地设备上找到这个私钥,`>` 表示这个私钥储存在卡片上。