本博客快两年没更新了。从 Twitter 转到 Fediverse 之后,发文不再有 140 字的长度限制(现在 Twitter 也没了),因此我有些想法就直接发在 Fedi 上而不是单写一篇博客了。

干脆把最近两年在 Fedi 上发的比较长的帖子摘录整理一下吧。

语流音变

母语者一般不会注意语言里的一些既定规则,但是一旦注意到了,还是挺有意思的。维基百科上的相关条目

两个三声字组成的词,念的时候第一个字要念二声,这是毫无争议的。例:「雨伞」读出来是音同「鱼伞」。

那三个三声字组成的词,前两个字如何变调呢?汉语学习网站上说前两个字都要变成二声,如「九九九感冒灵」前两个字都读成二声。

是否所有的三字三声词都符合这个规律呢?「远坂凛」和「米老鼠」的字面声调都是 333,但是读出来的话,我会分别读成 223 和 323 的声调,好像有点不太对劲…

让 ChatGPT 列举了一些三字三声词,我发现三字词的变调和构词有关:「老手表」「土纸伞」这样 A + AA 结构的念 323,而「展览馆」「友好者」这样 AA + A 结构的念 223。

2024-06-25

GNOME 真难用

公司的新电脑预装的是 Ubuntu 22.04,与之前的 Ubuntu 20.04 相比,enshittification 的地方更多了。更多东西的默认用 Snap 分发,并且 GNOME 也在作死的道路上越走越远…

实在受不了 GNOME 的自以为是了,把工作电脑的 DE 换成了 XFCE。啊,熟悉的小老鼠!仿佛回到了十几年前刚开始用 Linux 桌面的岁月!

2024-07-08

因为 tiling window manager 的操作已经写入肌肉记忆,后来我又换成和个人电脑一样的 i3wm 了。

在 Amazon 买到二手移动硬盘

帮邻居修电脑。我让邻居买个移动硬盘,用来备份电脑里的数据。邻居就在 Amazon 上买了一个。

第二天硬盘寄到了。我一看,根目录里怎么有 .Trash 和 .Spotlight-V100 目录?邻居用的是 Windows 啊。点开来一看,里面有 500 MiB 的各类文档、照片、视频。点开「2023Tax」目录,里面有不少买教科书收据,这移动硬盘的前任主人应该是个来自 University of Saskatchewan 的学生。

所以应该是这人买了硬盘之后用了一段时间,删掉了文件(但是依然在 Trash 里)然后退货了,Amazon 又二次销售了…

2024-07-13

后来邻居找 Amazon 反馈,客服给他寄了一新的,旧的无需寄回。于是邻居把旧的 SSD 送给我了。

《吹响!悠风号 第三季》

追了快十年的动画完结了。

完播两周后我终于把《吹响!悠风号 第三季》最后两集看完了。

我没读过原作,但是从漫天评论来看,小说里黄前久美子是毫无波澜地拿到了全国大赛独奏资格的,但动画里改成了部员盲选之后由黑江真由获得独奏资格。

我觉得盲选这一部分改得还挺好的。关西大赛久美子没拿到独奏资格,部员情绪不稳,觉得真由这个转校生抢了部长的奏位置,在这种情况下泷昇无论把全国大赛独奏资格给谁都有问题:如果给真由,那军心更加动摇,可能会影响全国大赛;如果给久美子,又会显得泷昇被部员的意见所左右。改成部员隔着帆布听音投票,投出个平票,那军心也稳了,泷昇的压力也无了,久美子和真由谁技高一筹也不用争了。算是对之前各种矛盾的处理。

但是高坂丽奈你选择真由是怎么回事?!泷昇已经说了两人水平不相上下了,除你以外的部员投票也是平票;就算你耳力过人,真的听出了微妙的实力差距,你就不能考虑一下你之前的誓言吗?嘴上说着想和久美子在全国大赛一起吹独奏,实际却在最后关头做出了相反的选择。唉。

说起来,这是我第一次见到 Bangumi 上单集评论数量 1000+。

ep.12 さいごのソリスト 评论 (+1560)
2024-07-16

U2F 和 FIDO2

第一次有了 YubiKey,好好地玩了一下。

U2F 和 FIDO2 (passkey) 体验与吐槽:

  • Google 自己出的 Titan Security Key 纯粹电子垃圾,对 FIDO2 支持不完整,连 Chrome 都读不出里面的数据(Chrome 可以读 YubiKey 的数据);
  • Google 强推 1-step passkey 没法 enrol YubiKey 作为 2-step verification 的解决方法竟然是临时禁用 YubiKey 的 FIDO2 功能让它只能当 U2F 用?
  • 1Password 号称支持 passkey 但其实只实现了 resident key (RK) 而面对 non-resident key (NRK) 时不知所措?
  • 1Password 添加了 NRK 之后会提示可以 passkey sign 但是会失败,并且因为 UI 上只显示 RK 的关系无法删除这个 NRK(但是在 JSON 里可以看到),只能回滚条目的历史版本?
2024-07-21

性能不够就加钱

尴尬,我周末去没手机信号的山里露营了,没想到 dabr.ca 竟然挂了,而且没有自主恢复!

服务器从建站以来就稳定运行,我上次露营也是两年多前了。没想到「服务器挂掉」和「管理员断网了」这两件小概率事竟然撞在了一起…

我一回到有信号的城镇就收到了大量来自机器和人类的报警,于是立刻顶着巨大的延迟和丢包,在手机上手动重启了 EC2。几分钟后站点总算恢复了…

回家到电脑再看看具体故障原因是什么…

2024-07-28

后来发现是性能不足,把 EC2 从 t3 升级到 c8g 就没问题了。

手机屏幕坏掉时才觉得辅助功能真好用

Pixel 9 Pro 看着挺不错的,想买。再过两周就能买到了。

就在刚才,我的 Pixel 7 突然坏掉了。正常使用过程中,它突然屏幕一黑,只剩下顶上一条闪着诡异的绿光。长按电源键重启也没有用,应该是屏幕本身坏掉了。查了下,Pixel 8 开始才有 USB-C 视频输出的功能,所以我也没法外接显示器和键鼠来操作。

连接电脑能看到 USB 还活着,但是我把 USB debugging 关了所以没法 adb…

是花钱修一下屏幕呢,还是过两周不用手机的生活呢?

手机虽然屏幕不亮了,但是触摸功能是好的。于是我先是用手势解锁了手机(重启之后一定要通过手势解锁一次不能用指纹),然后通过语音打开了 TalkBack 功能,再进到设置里,成功把 USB Debugging 打开了。之后就可以通过 scrcpy 走 adb 通过电脑来操作手机了!

家属之前因为散瞳而被迫像盲人一样通过语音来操作手机,我想着万一我哪天突然失明了这个技能也挺有用的,因此我也练习过 TalkBack 的使用。没想到今天虽然眼睛没坏但是屏幕坏了,这个技能居然用上了!

Developer options
2024-07-29

最近几天因为手机屏幕坏了,我在家时通过 scrcpy 在电脑上操作手机,出门时通过 TalkBack 读屏器操作手机。

今天去 Shell 加油,发现 Shell 的 app 辅助功能做得非常差,主界面最大的 Pay 按钮居然是个 unlabelled image,并且顺序是在五个按钮的最后,根本没有上下文可以猜到它是什么。我听着 TalkBack 的声音找了半天,最后还是凭借着记忆盲按才点到了它。

此外,我用的 Fcitx for Android 输入法也没有做好读屏器支持,TalkBack 并不能识别出它打开了一个数字键盘,我切换成 Gboard 之后才成功输入了 pump #,不过之后的步骤还是因为各种 unlabelled image 没能成功。

明眼人的产品经理和程序员做出来的应用,如果没有专门的团队去做辅助性功能方面的完备性检查,可能就是这样的结果吧…

Screenshot of Shell Android app with a TalkBack pop-up titled "Add label"
2024-08-02

漂亮的蜘蛛网

上周有一只蜘蛛在玻璃移门外侧住下了,织了一张很大、很漂亮的网,在阳光下闪闪发光。

晚上室内有灯光而室外黑暗,有些昆虫就会在飞向光芒的过程中扑到网上而被粘住。蜘蛛感觉到了猎物,便迅速爬过去,熟练地吐丝把猎物裹起来,然后捧在手里一口一口地吃掉。我们每天早上都能看到蜘蛛在吃不同的虫子。有只大蛾子把网挣破了,蜘蛛还会把网补好。

今天早上再去看时,发现蜘蛛搬走了,连网也拆得干干净净,仿佛从未来过。心里有些失落…

2024-08-06

每次登录都要短信验证码到底方便了谁

有些网站的账号逻辑真的很奇怪,每次登录都要 SMS OTP,而重置密码也只要收一次 SMS OTP。

相当于平时登录需要用户名 + 密码 + OTP 三个因素,但是重置密码只要用户名 + OTP 两个因素。

对于使用密码管理器的用户来说,密码反而是不容易泄露的东西,但 SMS OTP 可以被 SIM swap attack 偷走。这种奇怪的账号逻辑的实际效果就是使平时登录更麻烦,但是让黑产更方便…

2024-09-06

我的第一块智能手表

戴了二十多年的传统手表,我终于买了我的第一只智能手表 Google Pixel Watch 3。以后感到口袋里手机振动的时候,不需要再掏出手机看通知了,抬手就可以看了!

代价就是要每天充电了。我之前戴的手表是太阳能电波表,不需要换电池也不需要手动校时,非常省心。

我虽然是右撇子,但是从小手表都是戴在右手。今天开始尝试人生中第一只智能手表,也开始尝试左手戴手表…

几个小时后——果然还是不习惯,切换到了右手。舒服多了!

2024-09-11

横跨加拿大之旅

五天四夜的观光火车横跨加拿大之旅顺利结束了!

从山清水秀的东部,到一望无际的中部,再到重峦叠嶂的西部,每睡一天醒来,外面的景色都会有变化。与飞机旅行相比,火车旅行没有舱内娱乐系统,也没有 Wi-Fi,大部分路程甚至没有信号,就连手机时区也得自己手动调。与之相对的,食物是真的好吃,一日三餐都是 fine dining 的水平。包间小了点,但是有独立卫生间还是挺不错的,淋浴的体验也很好。

用餐的时候是四人拼桌,餐车旁边还有两个活动车厢,里面有棋盘、拼图和各种桌游,也算是鼓励线下交友?我和家属两个人大概是所有乘客里最年轻的几个之一,其他大部分乘客都是银发退休族,我们也算是聆听了不少长者的智慧。

过了几天悠闲的生活,整天就是吃/睡/看风景/和别的乘客聊天/读小说。平时我只在马桶上和睡前会读小说,在火车上这几天没别的事情干,于是读完了 4.5 本小说!

最后特别感谢 @kyo 的博客《五天四夜,坐观光火车横跨加拿大之旅》的种草!图片为我们在车厢里举着种草文的合影

Foreground: a hand holding a phone showing a web page. Background: a cabin on a train with two bunder beds.
2024-09-19

天下乌鸦一般黑

因为讨厌在 Instagram 刷到自己刚在 Google 搜过的东西的广告,所以我决定改用 DuckDuckGo。

用了一两个月 DDG 之后这一现象并没有消失,感觉 Instagram 还有别的方式获取我的数据对我针对性地投放广告,光靠停用 Google 是不够的。

用 DDG 几个月有好多次出现 DDG 搜不到我想找东西但是隐身窗口开 Google 第一页就有的情况。我印象中 DDG 就是买的 Google 的索引数据然后做了匿名化,但现在看来并不是这样…(经提醒:DDG 买的是 Bing 的数据)

感觉还是得把默认搜索引擎改回 Google…

2024-10-14

世界是个巨大的草台班子之银行存钱记

因为 ATM 怎么都不识别我的钞票所以我去人工柜台存了钱。桂圆倒是人挺好,看我手里拿着一堆 $20 的钞票,一看就是来存钱的,主动让我插队去她那儿优先办业务,一分钟存完搞定。

当时我就发现一件事:直到我拿着存款小票离开银行的时候,我的钞票还是明晃晃地放在大理石台面上,并没有放进什么类似超市收银机的抽屉的之类的机器里,可见人工柜台存款与 ATM 不同,这套系统不需要验证钞票真的入账就可以更改账户余额。

几天后我发现银行账户里有两笔人工存款交易,其中一笔与我拿到的小票是一致的,另一笔是 $20。我对照了一下我自己的账本,发现真的差了 $20。存钱的时候我懒得数有多少张(塑料钱太难数了),想着银行数钱肯定比我准,就直接把钞票给桂圆了,没想到桂圆当时真的数错了。之后他们大概是发现账对不上了,就给我账户里补了 $20…

要是银行没有自己修正错误,等我对账的时候发现了,我大概只会怀疑我自己 cash handling 出了问题而不是银行……

2024-10-21

Linux 内核移除俄罗斯相关的贡献者

r/linux 对此事的评论里有一条「人们终于了解到了什么是制裁」。

我因为工作原因,早就见识了制裁(sanctions)是个多么暴力和无情的工具。以美国的 OFAC 为例,只要你在名单上,你就要被制裁;哪怕是中国人的拼音姓名常见的同名同姓也会让你在 KYC 的时候被卡住,需要人工介入。

我知道的 OFAC 最离谱的一个案子:HSBC 在不知情的情况下参与了涉及到伊朗的转账,然后被 OFAC 罚了 $375M。这件事离谱的地方在于:HSBC 总部在英国,出事的分行在迪拜,只是因为 HSBC 在美国也有业务,所以就被 OFAC 搞了,说它 KYC 做得不够彻底,没有发现客户与伊朗之间的联系…

Q:为什么这些开发者的名字要从维护者列表里被移除? A:因为他们的雇主(例:Baikal Electronics)在 OFAC 制裁名单上。

Q:为什么华为的员工不用被移除?明明华为也被制裁了! A:因为 Baikal Electronics 在 SDN 名单上,而华为是 Non-SDN。不是同一个名单

Q:为什么我还是如此愤怒? A:因为 Greg K-H 没有对移除做出足够详细的解释,事情发酵之后嘴臭王 Linus Torvalds 又亲自下场喷人。

2024-10-23

YouTube 有声音但是 Prime Video 没有

电视机接音响,YouTube 有声音但是 Prime Video 没有。我在 debug 的过程中学到了新知识:

  • 我原以为用光纤传递红色激光的 optical audio 接口的名字就是 S/PDIF,但其实那个接口叫 TOSLINK (Toshiba Link);
  • S/PDIF (Sony/Philips Digital Interface) 是 TOSLINK 里的数据协议,但它不光可以通过 TOSLINK 传输,也可以用更古老的 RCA 接口传输;
  • 常见的 3.5 mm 音频接口和 RCA 接口传输的是模拟信号,音响是个笨设备,插上就能响,但 TOSLINK + S/PDIF 是数据信号,如果音响无法完成从数字→模拟的转化的话(比如无法解码 Dolby Digital 和 DTS),就不会响。
2024-10-29

再见 Google Timeline

Google Timeline 的网页版也要死了,以后只有手机上可以看位置历史了。今年早些时候我就知道这个新闻,当时说是会慢慢地给现有的用户发邮件,邀请他们做做数据迁移。

现在临近 2024-12-08 的大限,我的 Google 账号还是没有收到迁移邮件。亲友的 Google 账号都收到邮件并且完成迁移了,我的小号也收到了,但是主号至少还是没有收到。从亲友收到的邮件来看,不仅有单独的邀请迁移的邮件,并且在 monthly update 里也会出现大红字提醒迁移。然而我的 monthly update 邮件里依然岁月静好…

我的 Google 账号是被漏掉了吗?

点击亲友转发的迁移邮件里的链接没有用,手动到手机应用里也找不到迁移入口。


Google Takeout 倒是能导出 Google Timeline 的数据,里面记录从 2010 年到 2024 年共 15 年的位置数据,那 864 MiB 的 JSON 文件,会把我的 NeoVim 直接卡死…


Keep your Timeline? Decide by May 26, 2025

终于轮到我了!原来不是所有的账号的大限都是相同的…

2024-11-23

git-delta

这两天把 diff-so-fancy 换成 git-delta 了。

起因是想把 Linux 里的 nvim 的配置在 Git for Windows 里使用,然后发现 Perl 写的 diff-so-fancy 难以工作,搜了一下发现有个 Rust 写的 git-delta 是个更功能更丰富的 diffFilter——单文件,全平台,用 winget 也可以方便地安装。赞美 RIIR?

git diff feat. git-delta
2024-11-26

小小 Python 脚本竟然导致电脑卡死

写完一个 Python 脚本想跑一下,结果发现整个电脑卡死了,鼠标键盘全部没有反应,就连状态栏里的时间都不走了。

原来是我忘记写 shebang 了,而第一行 import foo 被 bash 执行了,于是 ImageMagick (/usr/bin/import) 被叫出来捕捉全屏幕,造成了卡死的假象…

2025-01-04

从「一」到「龟」

发现一个好玩的:在正则表达式里用 [一-龟] 匹配所有常用汉字。

Unicode 里的 CJK 字符有接近十万个,但是常用字都在 BMP 的 0x4E00 到 0x9FFF 这个区间里,约两万个。在这个区间里,第一个码点 0x4E00 对应的是「一」,最后一个码点 0x9FFF 对应的是生僻字「鿿」。如果从后往前看,则会发现 0x9F9F 对应的是常用汉字「龟」,之后的 96 个码点基本都是生僻字。

于是就可以打 [一-龟] 来等效 [\u4E00-\u9F9F],在大部分需要匹配汉字的场景都已经足够了…

2025-01-06

Google Contacts 数据损坏事件

我的 Google Contacts 不知道什么时候坏掉了,很多联系人的头像、名字、信息全部交织起来了。看到 Family 分组里我爸的头像还在,但是名字变成我高中同学;我妈的头像也在,但是信息变成了一个 Facebook 陌生人?各种电话号码也不见了……

这什么恐怖故事啊。看了下,这些信息错乱的联系人的最后编辑时间都是 2025-11-25,但是根据日记,那天我并没有做什么特别的操作。

还好我有定期导出 Google Takeout 的习惯。最近一次导出是一月份,里面的信息已经是错乱的了;上一次导出是 Nov 8,里面的联系人信息是正常的。

对比了一下 vCard 导出,感觉应该是哪里的数据库错乱了。联系人 A 的姓名字段是联系人 B 的电话;联系人 C 的电话字段是联系人 D 的网址;联系人 E 的邮箱字段里是联系人 F 的生日……头像和姓名也只是字段而已,才会出现张冠李戴的问题。

2026-01-28

后来我也没找到数据损坏的原因(神秘!)。但我自此之后定期导出 vCard 并做版本管理了。

永久日光节约时!

我一直觉得日光节约时(DST)和非公制单位一样,是阻碍人类文明进步的绊脚石!

今年 BC 省终于废止一年两次改时间这个愚蠢的制度了!普大喜奔!

在使用 tzdata 的系统(如 Linux 和 macOS)里,America/VancouverAmerica/Los_Angeles 是两个不同的时区,所以这次 BC 采用永久夏令时可以单独改前者而不影响后者。但是 Windows 不使用 tzdata,而且有且只有一个 Pacific Time (US & Canada) 时区(对应 America/Los_Angeles)。不知道微软打算怎么改…

Windows Date & Time -> Time zone dropdown
2026-03-03

Project Hail Mary

喜欢的小说改成电影了,真开心呀!

The Martian 我觉得电影改得挺好的,但是 Project Hail Mary 的电影不如小说。

受到电影长度限制,原著里几个重大难题被大量简化,节奏太快了,冒险经历显得轻飘飘的,但是又在莫名其妙的地方哭哭。

虽然小说里确实说 Rocky 是 dog-sized spider,但是到电影里真的就变成狗了,还是哈士奇性格的,过于闹腾;而那 TTS 的声音偏偏让我想到 Interstellar 里的 TARS,十分出戏。

AO3 上的同人文倒是挺有意思的,讲 Beetles 到达地球之后的故事:The Long Journey Home

2026-03-21

财务报表

一直想在 Beancount 里查看 AWS 支出情况,但是觉得写解析器好麻烦……

现在有了 Codex,花了两个小时写了一个生成器,效果非常好!

图为 dabr.ca 的 AWS 支出情况…

Screenshot of Fava for a ledger named "AWS Costs"
2026-04-02

本页面推荐使用 1024x768 分辨率浏览

翻维基百科的时候顺着参考文献找到了一些古老的新浪娱乐页面,仿佛跨入了时光机。

新浪娱乐的一些古早页面,仿佛让我回到了二十多年前那个「本页面推荐使用 1024x768 分辨率浏览」的时代……侧边栏的广告还在卖手机铃声呢(图二)。

这些 21 世纪初的页面,大部分链接居然还是能正常使用而没有 link rot 掉。这在简中互联网里可不常见啊……

2026-04-12

BitLocker 与强迫症

TIL BitLocker 在开启的时候,会把 NTFS Volume Label 复制到 FVE metadata 里,但是之后更改 NTFS 卷名的时候,这个 metadata 不会更新。

比如一开始一个卷叫 Foo,开启之后 BitLocker 之后,改名叫 Bar,这时候 metadata 里依然叫 Foo,通过 blkid 之类的工具可以读到。

除了重做 BitLocker,没有更改这个 metadata 的方法……

2026-04-26

我纠结了好久要不要重做 BitLocker 来改名。后来想想还是算了。

喜欢写代码的 CEO 和量子物理学家

Ghostty 真的挺好用的,已经换掉 Alacritty 了。

Ghostty 的作者是 HashiCorp 的创始人之一,当了四年的 CEO 之后又当了五年的 CTO,然后转职 IC 干了两年。

第一次听说 C-suite 转 IC 的,看来这位是真的热爱写代码…

(读 Ghostty Is Leaving GitHub 有感)

2026-04-29

从 Alacritty 换到 Ghostty 之后没有 hint mode 了,不能用键盘去点链接了。因祸得福我发现了 tmux-fzf-links,不仅能用键盘点链接,还能开文件。屏幕上有类似 foo.txt:123 这样的文字的时候,它能直接调用 nvim foo.txt +123 定位到那一行,太爽了。

而且因为是用 tmux capture-pane 实现的,不会有 hint mode 那样 URL 折行了就被截断的问题。

这个 tmux 插件的作者是个量子物理学家…

2026-04-30

欢迎留下评论。评论前,请先阅读《隐私声明》。