嘟文摘录(2024-06~2026-04)
<p>本博客快两年没更新了。从 Twitter 转到 <a href="https://wzyboy.im/post/1486.html">Fediverse</a> 之后,发文不再有 140 字的长度限制(现在 Twitter 也没了),因此我有些想法就直接发在 Fedi 上而不是单写一篇博客了。</p> <p>干脆把最近两年在 Fedi 上发的比较长的帖子摘录整理一下吧。</p> <h2>语流音变</h2> <p>母语者一般不会注意语言里的一些既定规则,但是一旦注意到了,还是挺有意思的。<a href="https://zh.wikipedia.org/wiki/%E8%AE%8A%E8%AA%BF">维基百科上的相关条目</a>。</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>两个三声字组成的词,念的时候第一个字要念二声,这是毫无争议的。例:「雨伞」读出来是音同「鱼伞」。</p> <p>那三个三声字组成的词,前两个字如何变调呢?<a href="https://studycli.org/zh-CN/learn-chinese/tone-changes-in-mandarin/#1_Third_tone_changes">汉语学习网站</a>上说前两个字都要变成二声,如「九九九感冒灵」前两个字都读成二声。</p> <p>是否所有的三字三声词都符合这个规律呢?「远坂凛」和「米老鼠」的字面声调都是 333,但是读出来的话,我会分别读成 223 和 323 的声调,好像有点不太对劲…</p> <p>让 ChatGPT 列举了一些三字三声词,我发现三字词的变调和构词有关:「老手表」「土纸伞」这样 A + AA 结构的念 323,而「展览馆」「友好者」这样 AA + A 结构的念 223。</p></div> </div> <div class="timestamp"><span>2024-06-25 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/1c07032e-f845-4060-8d54-1ec8e16d7a2f"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>GNOME 真难用</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>公司的新电脑预装的是 Ubuntu 22.04,与之前的 Ubuntu 20.04 相比,enshittification 的地方更多了。更多东西的默认用 Snap 分发,并且 GNOME 也在<a href="https://flameshot.org/docs/guide/wayland-help/#gnome">作死的道路</a>上越走越远…</p> <p>实在受不了 GNOME 的自以为是了,把工作电脑的 DE 换成了 XFCE。啊,熟悉的小老鼠!仿佛回到了十几年前刚开始用 Linux 桌面的岁月!</p></div> </div> <div class="timestamp"><span>2024-07-08 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/1ac3066a-ddfd-40d9-8ba8-f00f28c87fa9"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <p>因为 tiling window manager 的操作已经写入肌肉记忆,后来我又换成和个人电脑一样的 i3wm 了。</p> <h2>在 Amazon 买到二手移动硬盘</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>帮邻居修电脑。我让邻居买个移动硬盘,用来备份电脑里的数据。邻居就在 Amazon 上买了一个。</p> <p>第二天硬盘寄到了。我一看,根目录里怎么有 .Trash 和 .Spotlight-V100 目录?邻居用的是 Windows 啊。点开来一看,里面有 500 MiB 的各类文档、照片、视频。点开「2023Tax」目录,里面有不少买教科书收据,这移动硬盘的前任主人应该是个来自 University of Saskatchewan 的学生。</p> <p>所以应该是这人买了硬盘之后用了一段时间,删掉了文件(但是依然在 Trash 里)然后退货了,Amazon 又二次销售了…</p></div> </div> <div class="timestamp"><span>2024-07-13 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/c10b01ad-435d-4d3f-b573-906d9e2c026a"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <p>后来邻居找 Amazon 反馈,客服给他寄了一新的,旧的无需寄回。于是邻居把旧的 SSD 送给我了。</p> <h2>《吹响!悠风号 第三季》</h2> <p>追了快十年的动画完结了。</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>完播两周后我终于把《吹响!悠风号 第三季》最后两集看完了。</p> <p>我没读过原作,但是从漫天评论来看,小说里黄前久美子是毫无波澜地拿到了全国大赛独奏资格的,但动画里改成了部员盲选之后由黑江真由获得独奏资格。</p> <p>我觉得盲选这一部分改得还挺好的。关西大赛久美子没拿到独奏资格,部员情绪不稳,觉得真由这个转校生抢了部长的奏位置,在这种情况下泷昇无论把全国大赛独奏资格给谁都有问题:如果给真由,那军心更加动摇,可能会影响全国大赛;如果给久美子,又会显得泷昇被部员的意见所左右。改成部员隔着帆布听音投票,投出个平票,那军心也稳了,泷昇的压力也无了,久美子和真由谁技高一筹也不用争了。算是对之前各种矛盾的处理。</p> <p>但是高坂丽奈你选择真由是怎么回事?!泷昇已经说了两人水平不相上下了,除你以外的部员投票也是平票;就算你耳力过人,真的听出了微妙的实力差距,你就不能考虑一下你之前的誓言吗?嘴上说着想和久美子在全国大赛一起吹独奏,实际却在最后关头做出了相反的选择。唉。</p> <p>说起来,这是我第一次见到 Bangumi 上单集评论数量 1000+。</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/c8943a4fca360ea8111d1ee6db7b74e90d069474f3d645fb6c2bfb508270faaa.png"><img src="https://files.dabr.ca/c8943a4fca360ea8111d1ee6db7b74e90d069474f3d645fb6c2bfb508270faaa.png" alt="ep.12 さいごのソリスト 评论 (+1560)"></a> </figure> </div> <div class="timestamp"><span>2024-07-16 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/7143c6b9-af83-4c86-a1d7-c1d97af4a3ce"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>U2F 和 FIDO2</h2> <p>第一次有了 YubiKey,好好地玩了一下。</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>U2F 和 FIDO2 (passkey) 体验与吐槽:</p> <ul> <li>Google 自己出的 Titan Security Key 纯粹电子垃圾,对 FIDO2 支持不完整,连 Chrome 都读不出里面的数据(Chrome 可以读 YubiKey 的数据);</li> <li>Google 强推 1-step passkey 没法 enrol YubiKey 作为 2-step verification 的<a href="https://www.reddit.com/r/yubikey/comments/1b7mn8b/cant_add_yubikey_for_2fa_on_google_anymore_due_to/">解决方法</a>竟然是临时禁用 YubiKey 的 FIDO2 功能让它只能当 U2F 用?</li> <li>1Password 号称支持 passkey 但其实只实现了 resident key (RK) 而面对 non-resident key (NRK) 时不知所措?</li> <li>1Password 添加了 NRK 之后会提示可以 passkey sign 但是会失败,并且因为 UI 上只显示 RK 的关系无法删除这个 NRK(但是在 JSON 里可以看到),只能回滚条目的历史版本?</li> </ul></div> </div> <div class="timestamp"><span>2024-07-21 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/9fd740db-a2d0-4175-89f4-e879fc278f7c"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>性能不够就加钱</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>尴尬,我周末去没手机信号的山里露营了,没想到 dabr.ca 竟然挂了,而且没有自主恢复!</p> <p>服务器从建站以来就稳定运行,我上次露营也是两年多前了。没想到「服务器挂掉」和「管理员断网了」这两件小概率事竟然撞在了一起…</p> <p>我一回到有信号的城镇就收到了大量来自机器和人类的报警,于是立刻顶着巨大的延迟和丢包,在手机上手动重启了 EC2。几分钟后站点总算恢复了…</p> <p>回家到电脑再看看具体故障原因是什么…</p></div> </div> <div class="timestamp"><span>2024-07-28 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/660979c8-b491-413e-81b0-d9dba41a0fdf"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <p>后来发现是性能不足,把 EC2 从 <a href="https://github.com/dabr-ca/infra/pull/35/changes">t3.micro 升级到 c8g.large</a> 就没问题了。</p> <h2>手机屏幕坏掉时才觉得辅助功能真好用</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>Pixel 9 Pro 看着挺不错的,想买。再过两周就能买到了。</p> <p>就在刚才,我的 Pixel 7 突然坏掉了。正常使用过程中,它突然屏幕一黑,只剩下顶上一条闪着诡异的绿光。长按电源键重启也没有用,应该是屏幕本身坏掉了。查了下,Pixel 8 开始才有 USB-C 视频输出的功能,所以我也没法外接显示器和键鼠来操作。</p> <p>连接电脑能看到 USB 还活着,但是我把 USB debugging 关了所以没法 adb…</p> <p>是花钱修一下屏幕呢,还是过两周不用手机的生活呢?</p> <p>手机虽然屏幕不亮了,但是触摸功能是好的。于是我先是用手势解锁了手机(重启之后一定要通过手势解锁一次不能用指纹),然后通过语音打开了 TalkBack 功能,再进到设置里,成功把 USB Debugging 打开了。之后就可以通过 scrcpy 走 adb 通过电脑来操作手机了!</p> <p>家属之前因为散瞳而被迫像盲人一样通过语音来操作手机,我想着万一我哪天突然失明了这个技能也挺有用的,因此我也练习过 TalkBack 的使用。没想到今天虽然眼睛没坏但是屏幕坏了,这个技能居然用上了!</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/dd5947b4f2c4f6beddf32c4f23a0134a69e1b5ba7f1a27aad4a1dd6ae3c2b714.png"><img src="https://files.dabr.ca/dd5947b4f2c4f6beddf32c4f23a0134a69e1b5ba7f1a27aad4a1dd6ae3c2b714.png" alt="Developer options"></a> </figure> </div> <div class="timestamp"><span>2024-07-29 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/a09cfb41-80b0-4a44-85e1-b5ddcb6dc011"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>最近几天因为手机屏幕坏了,我在家时通过 scrcpy 在电脑上操作手机,出门时通过 TalkBack 读屏器操作手机。</p> <p>今天去 Shell 加油,发现 Shell 的 app 辅助功能做得非常差,主界面最大的 Pay 按钮居然是个 unlabelled image,并且顺序是在五个按钮的最后,根本没有上下文可以猜到它是什么。我听着 TalkBack 的声音找了半天,最后还是凭借着记忆盲按才点到了它。</p> <p>此外,我用的 Fcitx for Android 输入法也没有做好读屏器支持,TalkBack 并不能识别出它打开了一个数字键盘,我切换成 Gboard 之后才成功输入了 pump #,不过之后的步骤还是因为各种 unlabelled image 没能成功。</p> <p>明眼人的产品经理和程序员做出来的应用,如果没有专门的团队去做辅助性功能方面的完备性检查,可能就是这样的结果吧…</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/2440db21f22e5c98e48d3d92ecfe490a36a51ea1240dfaaaeada6d830e30aea5.png"><img src="https://files.dabr.ca/2440db21f22e5c98e48d3d92ecfe490a36a51ea1240dfaaaeada6d830e30aea5.png" alt="Screenshot of Shell Android app with a TalkBack pop-up titled "Add label""></a> </figure> </div> <div class="timestamp"><span>2024-08-02 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/b7e7c95b-70c3-404c-bc6d-8e25014223ec"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>漂亮的蜘蛛网</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>上周有一只蜘蛛在玻璃移门外侧住下了,织了一张很大、很漂亮的网,在阳光下闪闪发光。</p> <p>晚上室内有灯光而室外黑暗,有些昆虫就会在飞向光芒的过程中扑到网上而被粘住。蜘蛛感觉到了猎物,便迅速爬过去,熟练地吐丝把猎物裹起来,然后捧在手里一口一口地吃掉。我们每天早上都能看到蜘蛛在吃不同的虫子。有只大蛾子把网挣破了,蜘蛛还会把网补好。</p> <p>今天早上再去看时,发现蜘蛛搬走了,连网也拆得干干净净,仿佛从未来过。心里有些失落…</p></div> </div> <div class="timestamp"><span>2024-08-06 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/e00f558a-3f38-4684-a700-262871c89684"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>每次登录都要短信验证码到底方便了谁</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>有些网站的账号逻辑真的很奇怪,每次登录都要 SMS OTP,而重置密码也只要收一次 SMS OTP。</p> <p>相当于平时登录需要用户名 + 密码 + OTP 三个因素,但是重置密码只要用户名 + OTP 两个因素。</p> <p>对于使用密码管理器的用户来说,密码反而是不容易泄露的东西,但 SMS OTP 可以被 SIM swap attack 偷走。这种奇怪的账号逻辑的实际效果就是使平时登录更麻烦,但是让黑产更方便…</p></div> </div> <div class="timestamp"><span>2024-09-06 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/836c5ba1-fbe3-432e-8fd9-718b74941495"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>我的第一块智能手表</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>戴了二十多年的传统手表,我终于买了我的第一只智能手表 Google Pixel Watch 3。以后感到口袋里手机振动的时候,不需要再掏出手机看通知了,抬手就可以看了!</p> <p>代价就是要每天充电了。我之前戴的手表是太阳能电波表,不需要换电池也不需要手动校时,非常省心。</p> <p>我虽然是右撇子,但是从小手表都是戴在右手。今天开始尝试人生中第一只智能手表,也开始尝试左手戴手表…</p> <p>几个小时后——果然还是不习惯,切换到了右手。舒服多了!</p></div> </div> <div class="media"> <div class="gallery-grid gallery-grid--cols-2"> <figure class="gallery-item"> <a href="https://files.dabr.ca/bc3de1953841840b9d17aba347ca1fce93054da1317ce8d691e90072c3039d8d.jpg"><img alt="Pixel Watch 3 at Best Buy" src="https://files.dabr.ca/bc3de1953841840b9d17aba347ca1fce93054da1317ce8d691e90072c3039d8d.jpg" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/273c71da7c34f0d3d0ceb5c67da554d5da4985fcbba718ec19c0ce76f2a383fa.jpg"><img alt="Pixel Watch 3 box opening" src="https://files.dabr.ca/273c71da7c34f0d3d0ceb5c67da554d5da4985fcbba718ec19c0ce76f2a383fa.jpg" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/d973b848b5f734d41186273d79cd2dda13681a690bf5359a3b37b742c77eb0d1.jpg"><img alt="Pixel Watch 3 box opening" src="https://files.dabr.ca/d973b848b5f734d41186273d79cd2dda13681a690bf5359a3b37b742c77eb0d1.jpg" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/8754e0ff5f9cc73e6d67a7f149ab9cd4b807c59106bae056af5bca763ec90ced.jpg"><img alt="Pixel Watch 3 on the wrist" src="https://files.dabr.ca/8754e0ff5f9cc73e6d67a7f149ab9cd4b807c59106bae056af5bca763ec90ced.jpg" loading="lazy"/></a> </figure> </div> </div> <div class="timestamp"><span>2024-09-11 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/f5f4b25e-d36d-4a4a-91a5-834a40dcd97b"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>横跨加拿大之旅</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>五天四夜的<a href="https://www.viarail.ca/en/explore-our-destinations/trains/rockies-and-pacific/toronto-vancouver-canadian">观光火车横跨加拿大之旅</a>顺利结束了!</p> <p>从山清水秀的东部,到一望无际的中部,再到重峦叠嶂的西部,每睡一天醒来,外面的景色都会有变化。与飞机旅行相比,火车旅行没有舱内娱乐系统,也没有 Wi-Fi,大部分路程甚至没有信号,就连手机时区也得自己手动调。与之相对的,食物是真的好吃,一日三餐都是 fine dining 的水平。包间小了点,但是有独立卫生间还是挺不错的,淋浴的体验也很好。</p> <p>用餐的时候是四人拼桌,餐车旁边还有两个活动车厢,里面有棋盘、拼图和各种桌游,也算是鼓励线下交友?我和家属两个人大概是所有乘客里最年轻的几个之一,其他大部分乘客都是银发退休族,我们也算是聆听了不少长者的智慧。</p> <p>过了几天悠闲的生活,整天就是吃/睡/看风景/和别的乘客聊天/读小说。平时我只在马桶上和睡前会读小说,在火车上这几天没别的事情干,于是读完了 4.5 本小说!</p> <p>最后特别感谢 <a href="https://m.cmx.im/@kyo">@kyo</a> 的博客《<a href="https://thirdshire.com/the-canadian-train/">五天四夜,坐观光火车横跨加拿大之旅</a>》的种草!图片为我们在车厢里举着种草文的合影</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/13d957669c8de35c2f73caf09fdfb1c493713145a4c25fb19ce51ef5788879d3.JPG"><img src="https://files.dabr.ca/13d957669c8de35c2f73caf09fdfb1c493713145a4c25fb19ce51ef5788879d3.JPG" alt="Foreground: a hand holding a phone showing a web page. Background: a cabin on a train with two bunder beds."></a> </figure> </div> <div class="timestamp"><span>2024-09-19 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/409d2514-aabe-4f6a-9e6b-75a2989db403"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>天下乌鸦一般黑</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>因为讨厌在 Instagram 刷到自己刚在 Google 搜过的东西的广告,所以我决定改用 DuckDuckGo。</p> <p>用了一两个月 DDG 之后这一现象并没有消失,感觉 Instagram 还有别的方式获取我的数据对我针对性地投放广告,光靠停用 Google 是不够的。</p> <p>用 DDG 几个月有好多次出现 DDG 搜不到我想找东西但是隐身窗口开 Google 第一页就有的情况。我印象中 DDG 就是买的 Google 的索引数据然后做了匿名化,但现在看来并不是这样…(经提醒:DDG 买的是 Bing 的数据)</p> <p>感觉还是得把默认搜索引擎改回 Google…</p></div> </div> <div class="timestamp"><span>2024-10-14 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/1b93f304-79a1-4584-8544-9b440aaca15e"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>世界是个巨大的草台班子之银行存钱记</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>因为 ATM 怎么都不识别我的钞票所以我去人工柜台存了钱。桂圆倒是人挺好,看我手里拿着一堆 $20 的钞票,一看就是来存钱的,主动让我插队去她那儿优先办业务,一分钟存完搞定。</p> <p>当时我就发现一件事:直到我拿着存款小票离开银行的时候,我的钞票还是明晃晃地放在大理石台面上,并没有放进什么类似超市收银机的抽屉的之类的机器里,可见人工柜台存款与 ATM 不同,这套系统不需要验证钞票真的入账就可以更改账户余额。</p> <p>几天后我发现银行账户里有两笔人工存款交易,其中一笔与我拿到的小票是一致的,另一笔是 $20。我对照了一下我自己的<a href="https://wzyboy.im/post/1063.html">账本</a>,发现真的差了 $20。存钱的时候我懒得数有多少张(塑料钱太难数了),想着银行数钱肯定比我准,就直接把钞票给桂圆了,没想到桂圆当时真的数错了。之后他们大概是发现账对不上了,就给我账户里补了 $20…</p> <p>要是银行没有自己修正错误,等我对账的时候发现了,我大概只会怀疑我自己 cash handling 出了问题而不是银行……</p></div> </div> <div class="timestamp"><span>2024-10-21 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/e72d5e53-a2ff-4ac7-bc5a-564e6e7a1551"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>Linux 内核移除俄罗斯相关的贡献者</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>r/linux 对此事的评论里有一条「<a href="https://www.reddit.com/r/linux/comments/1g9seh9/several_linux_kernel_driver_maintainers_removed/lt8q6j5/">人们终于了解到了什么是制裁</a>」。</p> <p>我因为工作原因,早就见识了制裁(sanctions)是个多么暴力和无情的工具。以美国的 OFAC 为例,只要你在名单上,你就要被制裁;哪怕是中国人的拼音姓名常见的同名同姓也会让你在 KYC 的时候被卡住,需要人工介入。</p> <p>我知道的 OFAC 最离谱的一个<a href="https://ofac.treasury.gov/recent-actions/20121211_33">案子</a>:HSBC 在不知情的情况下参与了涉及到伊朗的转账,然后被 OFAC 罚了 $375M。这件事离谱的地方在于:HSBC 总部在英国,出事的分行在迪拜,只是因为 HSBC 在美国也有业务,所以就被 OFAC 搞了,说它 KYC 做得不够彻底,没有发现客户与伊朗之间的联系…</p> <p>Q:为什么这些开发者的名字要从维护者列表里被移除? A:因为他们的雇主(例:Baikal Electronics)在 <a href="https://lore.kernel.org/lkml/e7d548a7fc835f9f3c9cb2e5ed97dfdfa164813f.camel@HansenPartnership.com/">OFAC 制裁名单</a>上。</p> <p>Q:为什么华为的员工不用被<a href="https://web.archive.org/web/20260204152059/https://github.com/torvalds/linux/pull/988">移除</a>?明明华为也被制裁了! A:因为 Baikal Electronics 在 SDN 名单上,而华为是 Non-SDN。<a href="https://lore.kernel.org/lkml/f90bba20e86dac698472d686be7ec565736adca0.camel@HansenPartnership.com/">不是同一个名单</a>。</p> <p>Q:为什么我还是如此愤怒? A:因为 Greg K-H 没有对移除做出足够详细的解释,事情发酵之后嘴臭王 Linus Torvalds 又亲自下场喷人。</p></div> </div> <div class="timestamp"><span>2024-10-23 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/1459c80f-7354-4bc6-a67c-b7ec3bbd69e2"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>YouTube 有声音但是 Prime Video 没有</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>电视机接音响,YouTube 有声音但是 Prime Video 没有。我在 debug 的过程中学到了新知识:</p> <ul> <li>我原以为用光纤传递红色激光的 optical audio 接口的名字就是 S/PDIF,但其实那个接口叫 TOSLINK (Toshiba Link);</li> <li>S/PDIF (Sony/Philips Digital Interface) 是 TOSLINK 里的数据协议,但它不光可以通过 TOSLINK 传输,也可以用更古老的 RCA 接口传输;</li> <li>常见的 3.5 mm 音频接口和 RCA 接口传输的是模拟信号,音响是个笨设备,插上就能响,但 TOSLINK + S/PDIF 是数据信号,如果音响无法完成从数字→模拟的转化的话(比如无法解码 Dolby Digital 和 DTS),就不会响。</li> </ul></div> </div> <div class="timestamp"><span>2024-10-29 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/c4c9a174-afea-4187-a1f2-2619dfad61b2"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>再见 Google Timeline</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>Google Timeline 的网页版也要死了,以后只有手机上可以看位置历史了。今年早些时候我就知道这个新闻,当时说是会慢慢地给现有的用户发邮件,邀请他们做做数据迁移。</p> <p>现在临近 2024-12-08 的大限,我的 Google 账号还是没有收到迁移邮件。亲友的 Google 账号都收到邮件并且完成迁移了,我的小号也收到了,但是主号至少还是没有收到。从亲友收到的邮件来看,不仅有单独的邀请迁移的邮件,并且在 monthly update 里也会出现大红字提醒迁移。然而我的 monthly update 邮件里依然岁月静好…</p> <p>我的 Google 账号是被漏掉了吗?</p> <p>点击亲友转发的迁移邮件里的链接没有用,手动到手机应用里也找不到迁移入口。</p> <hr> <p>Google Takeout 倒是能导出 Google Timeline 的数据,里面记录从 2010 年到 2024 年共 15 年的位置数据,那 864 MiB 的 JSON 文件,会把我的 NeoVim 直接卡死…</p> <hr> <blockquote> <p>Keep your Timeline? Decide by May 26, 2025</p> </blockquote> <p>终于轮到我了!原来不是所有的账号的大限都是相同的…</p></div> </div> <div class="timestamp"><span>2024-11-23 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/c6ed5554-2642-44f9-8bbc-81106004dd85"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>git-delta</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>这两天把 diff-so-fancy 换成 <a href="https://github.com/dandavison/delta">git-delta</a> 了。</p> <p>起因是想把 Linux 里的 nvim 的配置在 Git for Windows 里使用,然后发现 Perl 写的 diff-so-fancy 难以工作,搜了一下发现有个 Rust 写的 git-delta 是个更功能更丰富的 diffFilter——单文件,全平台,用 winget 也可以方便地安装。赞美 RIIR?</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/93ec2bb1fbe6e64142c7271e606f1dea1058abfe1c5a3d1193ac5623cba5ff3c.png"><img src="https://files.dabr.ca/93ec2bb1fbe6e64142c7271e606f1dea1058abfe1c5a3d1193ac5623cba5ff3c.png" alt="git diff feat. git-delta"></a> </figure> </div> <div class="timestamp"><span>2024-11-26 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/8b09cd67-65ae-4d91-ac8f-948cdf679c3c"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>小小 Python 脚本竟然导致电脑卡死</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>写完一个 Python 脚本想跑一下,结果发现整个电脑卡死了,鼠标键盘全部没有反应,就连状态栏里的时间都不走了。</p> <p>原来是我忘记写 shebang 了,而第一行 <code>import foo</code> 被 bash 执行了,于是 ImageMagick (<code>/usr/bin/import</code>) 被叫出来捕捉全屏幕,造成了卡死的假象…</p></div> </div> <div class="timestamp"><span>2025-01-04 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/472b655b-1d4c-4e10-9e0f-d915166b2e9a"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>从「一」到「龟」</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>发现一个好玩的:在正则表达式里用 <code>[一-龟]</code> 匹配所有常用汉字。</p> <p>Unicode 里的 CJK 字符有接近十万个,但是常用字都在 BMP 的 0x4E00 到 0x9FFF 这个区间里,约两万个。在这个区间里,第一个码点 0x4E00 对应的是「一」,最后一个码点 0x9FFF 对应的是生僻字「鿿」。如果从后往前看,则会发现 0x9F9F 对应的是常用汉字「龟」,之后的 96 个码点基本都是生僻字。</p> <p>于是就可以打 <code>[一-龟]</code> 来等效 <code>[\u4E00-\u9F9F]</code>,在大部分需要匹配汉字的场景都已经足够了…</p></div> </div> <div class="media"> <div class="gallery-grid gallery-grid--cols-3"> <figure class="gallery-item"> <a href="https://files.dabr.ca/90c4fc7e820936e92cf1a881adc244a8864ef819d22d65952f842084b4aa139e.png"><img alt="All CJK blocks in Unicode. From: https://en.wikipedia.org/wiki/Template:CJK_ideographs_in_Unicode" src="https://files.dabr.ca/90c4fc7e820936e92cf1a881adc244a8864ef819d22d65952f842084b4aa139e.png" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/03b081c435f294944c1a3895d5796d06376819a1e97dbc27b4c2850020a8f8fd.png"><img alt="Code points from 0x9F70 to 0x9FFF. From: https://en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs,_part_4_of_4" src="https://files.dabr.ca/03b081c435f294944c1a3895d5796d06376819a1e97dbc27b4c2850020a8f8fd.png" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/21287bc4f377343f1cdd45192b1b4e4e4fa76436b2f10f4ad782c843e61223f7.png"><img alt="re.findall" src="https://files.dabr.ca/21287bc4f377343f1cdd45192b1b4e4e4fa76436b2f10f4ad782c843e61223f7.png" loading="lazy"/></a> </figure> </div> </div> <div class="timestamp"><span>2025-01-06 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/2b4db4f5-c237-4e1a-aa6b-8485ae44bb27"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>Google Contacts 数据损坏事件</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>我的 Google Contacts 不知道什么时候坏掉了,很多联系人的头像、名字、信息全部交织起来了。看到 Family 分组里我爸的头像还在,但是名字变成我高中同学;我妈的头像也在,但是信息变成了一个 Facebook 陌生人?各种电话号码也不见了……</p> <p>这什么恐怖故事啊。看了下,这些信息错乱的联系人的最后编辑时间都是 2025-11-25,但是根据日记,那天我并没有做什么特别的操作。</p> <p>还好我有定期导出 Google Takeout 的习惯。最近一次导出是一月份,里面的信息已经是错乱的了;上一次导出是 Nov 8,里面的联系人信息是正常的。</p> <p>对比了一下 vCard 导出,感觉应该是哪里的数据库错乱了。联系人 A 的姓名字段是联系人 B 的电话;联系人 C 的电话字段是联系人 D 的网址;联系人 E 的邮箱字段里是联系人 F 的生日……头像和姓名也只是字段而已,才会出现张冠李戴的问题。</p></div> </div> <div class="timestamp"><span>2026-01-28 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/bd81a163-80cc-46b4-89e8-bb2542dffe36"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <p>后来我也没找到数据损坏的原因(神秘!)。但我自此之后定期导出 vCard 并做版本管理了。</p> <h2>永久日光节约时!</h2> <p>我一直觉得日光节约时(DST)和非公制单位一样,是阻碍人类文明进步的绊脚石!</p> <p>今年 BC 省终于废止一年两次改时间这个愚蠢的制度了!普大喜奔!</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>在使用 <a href="https://www.iana.org/time-zones">tzdata</a> 的系统(如 Linux 和 macOS)里,<code>America/Vancouver</code> 和 <code>America/Los_Angeles</code> 是两个不同的时区,所以这次 <a href="https://news.gov.bc.ca/releases/2026AG0013-000209">BC 采用永久夏令时</a>可以单独改前者而不影响后者。但是 Windows 不使用 tzdata,而且有且只有一个 <code>Pacific Time (US & Canada)</code> 时区(对应 <code>America/Los_Angeles</code>)。不知道微软打算怎么改…</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/c4/3f/bb/c43fbbe310a027e0e7eeac09656a64a17bfce4fa991a92c32b627e78a84a7941.png"><img src="https://files.dabr.ca/c4/3f/bb/c43fbbe310a027e0e7eeac09656a64a17bfce4fa991a92c32b627e78a84a7941.png" alt="Windows Date & Time -> Time zone dropdown"></a> </figure> </div> <div class="timestamp"><span>2026-03-03 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/e7e20502-7a09-4d76-82ba-3fcbcc4b0458"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>Project Hail Mary</h2> <p>喜欢的小说改成电影了,真开心呀!</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>The Martian 我觉得电影改得挺好的,但是 Project Hail Mary 的电影不如小说。</p> <p>受到电影长度限制,原著里几个重大难题被大量简化,节奏太快了,冒险经历显得轻飘飘的,但是又在莫名其妙的地方哭哭。</p> <p>虽然小说里确实说 Rocky 是 dog-sized spider,但是到电影里真的就变成狗了,还是哈士奇性格的,过于闹腾;而那 TTS 的声音偏偏让我想到 Interstellar 里的 TARS,十分出戏。</p> <p>AO3 上的同人文倒是挺有意思的,讲 Beetles 到达地球之后的故事:<a href="https://archiveofourown.org/works/68584716/chapters/177570376">The Long Journey Home</a></p></div> </div> <div class="timestamp"><span>2026-03-21 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/427f1abe-f748-4f36-901b-d2e51a186038"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>财务报表</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>一直想在 Beancount 里查看 AWS 支出情况,但是觉得写解析器好麻烦……</p> <p>现在有了 Codex,花了两个小时写了一个<a href="https://github.com/wzyboy/beanaws">生成器</a>,效果非常好!</p> <p>图为 dabr.ca 的 AWS 支出情况…</p></div> </div> <div class="media"> <figure class="media-item"> <a href="https://files.dabr.ca/1b/ec/fa/1becfa5c70db88e71efe72d3f899e932962a959a527a4ef3543ff5a4ff29637b.png"><img src="https://files.dabr.ca/1b/ec/fa/1becfa5c70db88e71efe72d3f899e932962a959a527a4ef3543ff5a4ff29637b.png" alt="Screenshot of Fava for a ledger named "AWS Costs""></a> </figure> </div> <div class="timestamp"><span>2026-04-02 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/1c91fbc0-3a25-4f6b-8d9e-6933145d8dda"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>本页面推荐使用 1024x768 分辨率浏览</h2> <p>翻维基百科的时候顺着参考文献找到了一些古老的新浪娱乐页面,仿佛跨入了时光机。</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p><a href="https://ent.sina.com.cn/f/tlbb/index.html">新浪娱乐的一些古早页面</a>,仿佛让我回到了二十多年前那个「本页面推荐使用 1024x768 分辨率浏览」的时代……侧边栏的广告还在卖手机铃声呢(图二)。</p> <p>这些 21 世纪初的页面,大部分链接居然还是能正常使用而没有 link rot 掉。这在简中互联网里可不常见啊……</p></div> </div> <div class="media"> <div class="gallery-grid gallery-grid--cols-2"> <figure class="gallery-item"> <a href="https://files.dabr.ca/5f/cf/8d/5fcf8dccb46d2b3c6276dd5f7184ee471c781e5720d1ad887fe98c2552d836d0.png"><img alt="Screenshot of https://ent.sina.com.cn/f/tlbb/index.html" src="https://files.dabr.ca/5f/cf/8d/5fcf8dccb46d2b3c6276dd5f7184ee471c781e5720d1ad887fe98c2552d836d0.png" loading="lazy"/></a> </figure> <figure class="gallery-item"> <a href="https://files.dabr.ca/95/dc/5b/95dc5b6b9c2e816501c2345b746cdd9f271aed287d3d57d68d9d58165266b469.png"><img alt="Screenshot of https://ent.sina.com.cn/s/m/2002-08-09/162595017.html" src="https://files.dabr.ca/95/dc/5b/95dc5b6b9c2e816501c2345b746cdd9f271aed287d3d57d68d9d58165266b469.png" loading="lazy"/></a> </figure> </div> </div> <div class="timestamp"><span>2026-04-12 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/ba2de464-d4fb-49d4-addb-9f1feed5d48e"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <h2>BitLocker 与强迫症</h2> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>TIL BitLocker 在开启的时候,会把 NTFS Volume Label 复制到 FVE metadata 里,但是之后更改 NTFS 卷名的时候,这个 metadata 不会更新。</p> <p>比如一开始一个卷叫 Foo,开启之后 BitLocker 之后,改名叫 Bar,这时候 metadata 里依然叫 Foo,通过 blkid 之类的工具可以读到。</p> <p>除了重做 BitLocker,没有更改这个 metadata 的方法……</p></div> </div> <div class="timestamp"><span>2026-04-26 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/5f9eee10-970b-4b58-b827-5e2e1f6b2394"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <p>我纠结了好久要不要重做 BitLocker 来改名。后来想想还是算了。</p> <h2>喜欢写代码的 CEO 和量子物理学家</h2> <p>Ghostty 真的挺好用的,已经换掉 Alacritty 了。</p> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>Ghostty 的作者是 HashiCorp 的创始人之一,当了四年的 CEO 之后又当了五年的 CTO,然后<a href="https://www.hashicorp.com/en/blog/mitchell-s-new-role-at-hashicorp">转职 IC</a> 干了两年。</p> <p>第一次听说 C-suite 转 IC 的,看来这位是真的热爱写代码…</p> <p>(读 <a href="https://mitchellh.com/writing/ghostty-leaving-github">Ghostty Is Leaving GitHub</a> 有感)</p></div> </div> <div class="timestamp"><span>2026-04-29 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/50280a7d-92c0-4a77-92a1-a809795cd484"> <span class="link-text">View in Fediverse</span> </a> </div> </article> <article class="tweet-card"> <div class="text"> <div class="full-text"><p>从 Alacritty 换到 Ghostty 之后没有 hint mode 了,不能用键盘去点链接了。因祸得福我发现了 <a href="https://github.com/alberti42/tmux-fzf-links">tmux-fzf-links</a>,不仅能用键盘点链接,还能开文件。屏幕上有类似 <code>foo.txt:123</code> 这样的文字的时候,它能直接调用 <code>nvim foo.txt +123</code> 定位到那一行,太爽了。</p> <p>而且因为是用 tmux capture-pane 实现的,不会有 hint mode 那样 URL 折行了就被截断的问题。</p> <p>这个 tmux 插件的<a href="https://github.com/alberti42">作者</a>是个量子物理学家…</p></div> </div> <div class="timestamp"><span>2026-04-30 </span></div> <div class="view-on-twitter"> <a class="twitter-link" href="https://dabr.ca/objects/2b99b2ca-ff54-4b1e-9ff5-1ec6d7e7dfc5"> <span class="link-text">View in Fediverse</span> </a> </div> </article>