Zine#48
好的,我现在需要帮用户总结这篇文章的内容,控制在100字以内,而且不需要用“文章内容总结”之类的开头。首先,我得仔细阅读用户提供的文章内容,了解主要信息。 文章看起来是一个博客目录,包含了很多不同的分类,比如新闻、教程、资源、代码相关、AI相关、工具库、Emacs、摘录、多媒体等等。每个分类下都有很多子项,比如新闻类有《Writing First, Tooling Second》这样的文章,工具库部分提到了Claude HUD和Hermes Agent等。 接下来,我需要提取关键信息。用户可能希望了解这个博客的主要内容和涵盖的领域。所以,我应该概括博客的主题和分类情况。 然后,考虑如何简洁地表达这些信息。控制在100字以内,意味着要精准选择词汇。例如,“涵盖编程思维、AI工具、代码优化等主题”这样的表达既简洁又全面。 最后,确保语言自然流畅,避免使用过于正式或生硬的词汇。这样总结出来的内容才会更易于理解。 </think> 这篇文章介绍了一个包含多种分类的博客目录,涵盖了编程思维、AI工具、代码优化、设计与人文等主题,并分享了技术实践与思考的文章与资源。 2026-4-25 10:0:0 Author: taxodium.ink(查看原文) 阅读量:22 收藏

🎵 Sometimes It Snows in April - Prince

News | Article

Writing First, Tooling Second by Susam Pal

渴望建立个人网站的作者们总是长久地纠结于该使用哪种博客引擎、选择哪种静态网站生成器、挑选哪种模板语言等等。我认为,在你的网站上发表至少五篇文章之前,这些都不重要。先写纯 HTML,以后再操心工具的事。

确实,很多作者花很多时间捣鼓博客的样式、构建等,但博客文章却寥寥无几。除非本身就是为了学习技术捣鼓博客构建,否则更重要的还是多写些内容,当写得足够多,能够保持一定频率输出的时候,再慢慢考虑构建、优化样式。很多时候,直接写 HTML 就够了。如果不想写 HTML,也可以用 Markdown 或任何喜欢的纯文本格式编写,用类似 Pandoc 的工具转换成 HTML。

如果你不熟悉 HTML,推荐看 HTML is for people

总之,如果创建博客的的初衷是写文章,那就先写上几篇,再考虑其他事情吧。 (发现作者也用 Emacs,他的 Emacs for You (Emfy) 可以作为一份 Emacs 入门参考配置,解释也很详细。)

Use plain text email

文章建议用纯文本发送邮件(为什么纯文本比 HTML 更好),列出了一些推荐的邮件客户端,以及指导设置这些客户端使用纯文本发送。

此外,文章还分享了一些邮件礼仪:

  • 在适当的行宽换行,例如 72 个字左右,不要让一行的内容太长(一些邮件客户端会自动换行)
  • 引用回复的时候,引用应该在上面,而不是下面。

    答:因为它颠倒了对话的逻辑顺序。
    问:为什么不建议在邮件顶部回复?

Thank you for reading by Ginoz

如今很多人都不愿意看长文,而读者愿意花时间把自己写的文章看完,确实可以和读者说一声「谢谢」。谢谢你来看我的博客,谢谢你阅读我的内容 :) 常来呀!

摘录

对我而言,当文字被他人阅读时,写作才算完成。读者和作者同样重要。两者缺一不可,文字才能真正实现其在这个世界上的使命。

当然,我并不是说为自己而写没有意义。我也绝非在贬低那些尚未被阅读、或可能永远不会被阅读的文字。两者并非孰轻孰重。有些文字写出来就是为了不被阅读的。因为写作的本质始于我们,也为了我们。它是我们内心的一种需求,是灵魂的催化剂,是一种自我表达的方式。被阅读仅仅是这个过程的另一部分,一个可能永远无法完成的部分。而这也没关系。

被阅读是一种特权;大多数时候,这关乎运气。

Source

Interviews with the Computer Underground - Episode I: Santiago Roland, Administrator of Undernet.uy by Soldan

undernet.uy 是一个自托管、自管理的社区服务器,文章采访了其管理者 Santiago Roland,关于 undernet.uy 的创建缘由、运行情况。

文章是发布在 421 上的,这是一个刊物,涉及文化、技术、哲学、现实生活等方面,他们有三个主张:

  1. 独立思考
  2. 低科技,高生活(在采用每项技术前对其进行评估;当复杂性毫无益处时,宁可选择简单;并理解更好的生活并不需要任何事物的最新型号)
  3. 数字自主

蛮有趣的刊物,里面也有大量有趣的信息。例如我从 You Already Pay for Internet, Don't Pay for the Rest 知道了 Soulseek,一个点对点 (peer-to-peer) 模式的音乐下载客户端。

摘录

[..] 但甚至在那之前,大约 2010 年,Gmail 被曝出通过阅读邮件来投放定向广告。这真的让我很困扰;这是对通信秘密的侵犯,哈! Google 阅读你所有的信息,然后承诺会忘掉一切。但他们仍然向你投放定向广告! 2011 年,我决定停用 Gmail,并在一个没人知道的服务器上注册了邮箱:lavabit.com。那是一个承诺服务器端加密并保证不转卖数据的邮件服务。有一天,我试着登录邮箱,结果网站挂了。发生了什么? Snowden在那台服务器上有个账号! FBI 找上 Lavabit 的老板,要求提供斯诺登账号的数据。但老板是个德州人,Ladar Levinson,那种疯狂的自由派美国佬,满口 「这是一个自由的国家」,据他所说,他什么都没交。那是我第一次看到系统管理员为用户挺身而出,哈!就在那时,我意识到我必须放弃在任何总部位于美国的服务上开户的念头,因为同样的事情随时可能发生。

但正因如此,解决方案随之而来,几乎是不言而喻的:我们需要拥有自己的服务。如果他们想来没收服务器,就必须破门而入。这就是 Undernet.uy 的起源。

Source

关于「开辟自己的有机花园」与「去超市买食物」在政治和哲学层面的差异,我真的不需要赘述太多。当然,超市更方便;一切都是为了你的舒适而设计的:有空调,一切都闪闪发亮且包装精美,简直就像散步一样,毫不费力,这种反进化的方式让人异化。获取食物本是艰苦的工作;在花园里,你必须流汗,你得耕作土地,面对蚂蚁、害虫、干旱、冰雹等各种问题,而当你去超市时,你会忘记这些。区别在于,在一种情况下,你和食物之间隔着一个资本主义体系;而在另一种情况下,只有你和食物。重新建立与土地的联系(这是选择这种更自然生活方式的人所珍视的),类似于重新建立与最初那个去中心化且真实的互联网的联系。我认为,如果你想找回曾经那种互联网的感觉,唯一的办法就是在家里、图书馆、社区或任何地方,自行托管你自己的「服务器 ⸺ 有机花园」,让资本主义尽可能少地触及它。

Source

How Do We Get Developers to Read the Docs by Ibrahim Diallo

这篇文章主要是关于 API 文档的,API 文档主要面向两类读者,一类是 API 的使用者,一类是 API 的维护者。对于使用者来说,他只需要知道怎么用,他不太关心背后的细节;对于维护者,他会关心更多为什么,希望尽可能多地了解 API 的设计细节,从而避免出错。两者对于文档的需求是不同的,使用者期望的是清晰简洁的文档,快速知道 API 的作用、需要什么参数、用例;维护者则期望更多技术细节,API 是怎么设计的、如何变迁的、为什么需要某个参数。一个糟糕的文档是企图平等地服务于这两类读者,结果就是,对于使用者来说不够简洁,不能快速浏览;对于维护者来说又不够深入和严谨。

作者认为,对于使用者,最好的文档首先是 API 本身,保持 API 的一致性,遵循清晰且可重复的模式,让用户可以推断 API 的使用。例如如果存在一个这样的 API /users/orders/1234/cancel ,如果设计的好的话,用户可以推断,可能也存在一个 /users/orders/1234/update API。其次,在写文档的时候要保持克制,不要阐述过多的细节,用户不需要知道你为了兼容旧版本的 API 做了什么,你只要告诉他「兼容旧版本」就足够了。作者的这句话我觉得讲得很精辟:「就像你不会为了解释每一行代码而写注释一样,文档也不会从过多的信息中获益。(Source)」

作者的建议是将额外信息折叠起来 (例如利用 <details>),这样文档可以保持简洁,让使用者得以快速浏览获取信息;对于维护者,他们可以展开折叠部分,了解更多细节。而在文章组织上,也采取由浅入深的结构,先解释是什么,接着是怎么用,最后才是为什么,而「为什么」这个部分还可以折叠起来。作者又来了一个精辟的比喻:

把这想象成一个设计良好的错误信息。一条好的错误信息会用通俗易懂的语言告诉你出了什么问题。一条极佳的错误信息还会包含可展开的堆栈跟踪,但它不会先向你展示堆栈跟踪。

你的文档也承担着同样的工作。先给人们他们正在寻找的答案,然后为那些愿意深挖的人提供深度内容。

Source

另外考虑将给维护者看的内容拆分到别的文档里,通过拆分,可以保持使用者文档的简洁,而在编写维护者文档时也可以写得很深入,不用去考虑初学者。

文档的目标不是完整性。完整性是你写给自己的,为了让自己觉得完成了工作。文档的目标是在正确的时刻,将正确的信息传递到正确的人的脑海中。

Source

以我自己为例,我之前写过一篇关于 Emoji 正则匹配的文章,你可以对比一下前后两个版本:

在归档版本,关于「Unicode character class escpae」、一些 String 的相关方法是直接呈现在正文的,看起来内容很多,但会显得比较杂乱。这些属于补充信息,在当前版本里我放到了 <details> 里,读者感兴趣的话可以自己点开看,减少一些干扰。另外如果有人点进这篇文章,大概率是希望直接得到一个答案,而不是看我一顿分析,所以我在文章开头就给出了答案,如果读者只需要一个答案就可以关闭页面走人了,如果愿意了解背后的细节就可以继续往下看。

On screwing up by Sean Goedecke

工作中可能会出现你「搞砸」了某些事情的时候,此时可能会有很大的情绪波动,比较常见的是给自己找借口掩盖事实,或者坦白错误、自贬身价并乞求原谅。不管是那种情绪,都不要在情绪冲动的时候做什么,先花一些时间让情绪平复下来,再理性地行动。

至于行动,则是客观地、实事求是地描述问题,及早告知相关人员,及早处理问题,总之不要掩藏问题。

根据我的经验,科技公司的经理会原谅错误,但他们不会原谅被当成傻瓜。特别是,他们不会原谅被剥夺了关键信息。

Source

Humanities in the Machine by Blain Smith

文章分享了很多奠定了现代计算基础的人的故事,包括 Tony HoareAda LovelaceEdsger W. DijkstraAlan TuringGrace HopperDennis RitchieBrian KernighanRichard Stallman。这些都人都极具人文素养和人文精神,而不局限在计算机领域。

文章建议技术人员多涉猎人文方面的内容,除了关心「是否有效」,还应该关心「是否美好」。

摘录

那些奠定计算基础的人们拥有一种超越技术才华的共同特质。他们对清晰度的追求不仅限于代码,还延伸到与他人的沟通中。他们意识到自己的工作存在于更广阔的背景下,他们构建的系统将被那些生活受其影响的人们所使用。他们不仅问「它是否有效」,还问「它是否美好」,并且他们明白「美好」的含义远不止于功能上的正确。

这种性情不需要学位,但确实需要超越偶然的兴趣。周末读一本哲学书只是爱好。而投入严肃且持久的时间去钻研文学、历史、伦理,去参与人类数千年来关于如何生活得更好、如何公正对待彼此的漫长对话,则完全是另一回事。它会改变你审视问题的方式,改变你思考问题的方式,改变你愿意发布的产品,以及你拒绝妥协的底线。

Source

你所处领域的奠基人们阅读哲学、撰写散文、学习古典语言,并对意识、美以及人类思维的本质提出疑问。他们做这些事并不是因为有闲暇时间,也不是因为有人强迫。他们这样做是因为他们隐约或明确地意识到,要建造值得人类信任的机器,必须理解「人」意味着什么。

这种理解不会来自另一个教程、另一个业余项目或另一个 Hacker News 帖子。它将来自长期、缓慢、有时甚至艰难的人文探索。去读哲学吧。读文学。读历史。研究人类如何思考伦理、权力、沟通,以及如何构建经得起时间考验的事物。沉浸在这些思想中,直到它们重塑你对待自己工作的方式。

孕育了洛夫莱斯的「诗意科学」、霍尔的「古典思维」、迪杰斯特拉的手写散文以及霍珀对「计算机必须与人交流」的坚持的这一传统并未消亡。但随着这一领域与其根源渐行渐远,它正一代代地衰落。你有机会扭转这一局面。这不一定意味着重返校园,而是要足够认真地对待人文科学,让它们进入你的职业生活、你的设计决策、你的代码审查,以及你与那些将使用你所构建之物的人们的对话中。

我们制造的机器反映了制造者的思想。如果这些思想仅由技术知识滋养,那么机器在技术上将是称职的,但在人文精神上却是空洞的。如果这些思想开阔、充满好奇心,并植根于人类思想的悠久传统,那么机器将会变得更好。它们将不负那些依赖它们的人们。

选择权一如既往,掌握在你的手中。

Source

Cool Bit

Land Of Lisp by Conrad Barski

Land Of Lisp 是 Conrad Barski 写的一本 Lisp 教程,这个网站是用来推销这本书的,蛮有趣的。

网站一开始是个视频,里面的歌词蛮有趣的:

Now I eat parentheses for breakfast.
And if my program isn't done,
I eat parentheses for lunch.

如果视频不足以打动你,作者还制作了漫画,讲述人类被 Bugs 征服,无论用 Java、C# 还是 ruby 等语言都无法击败 bugs,但在「Land Of Lisp」有强大武器可以击败任何 bugs,于是主角去「Land Of Lisp」寻求帮助。漫画里穿插了很多 lisp 的语法介绍,蛮有趣的。

除了 Land Of Lisp,还看到一本关于 Lisp 的书: The Genius Of Lisp

The art of interacting incorrectly by Isabel Fish

马年快乐,来欣赏一下各种神奇的马。

错误交互的艺术 (The Art of Interacting Incorrectly) 是一个通过颠覆技术使用方式,挑战我们与技术之间无缝交互的项目。该项目借鉴了 Eadweard Muybridge 的 运动中的马 (A Horse In Motion),通过非常规方法创作出各种赛马奔跑的动画,探讨了干扰技术如何能促进更具思考性和参与性的互动。通过将使用笔记本电脑的熟悉场景以陌生感呈现,其旨在为我们与日常数字化工具的体验重新注入一种新奇感。每一段动画都融合了所使用介质的局限性、独特性和质感。

你也可以来 画马 :P

鹅玉

鹅玉的博客,喜欢她博客的设计,里面有很多她画的插画,看起来像是手账本,又像是儿童故事书,可爱。

OBSOLETE SOUNDS

OBSOLETE SOUNDS 是正在消失的声音和已经灭绝的声音的集合。例如可以听到操作 Sony Walkman 的声音、冰川融化的声音。除了 OBSOLETE SOUNDS,导航上还有很多可以探索的内容。

MadCSS

MadCSS 是一场比赛,这次参加的有 16 位开发者,举办方会给出基础的 HTML 和目标 UI,选手只能使用 CSS 和 HTML,2 分钟构思、15 分钟实现,最后谁的实现和目标 UI 最接近谁就获胜。

决赛视频: One Last Battle (16:59) by Syntax

100 jumps

想起了微信小游戏刚流行时的「跳一跳」游戏,玩法一模一样。不过 100 jumps 难度低一点,连续 3 次获得 perfect 评级的话,还会额外加一条命。

Git Shitstorm: How to Make Any Developer Lose Their Mind by Einenlum

在你隔壁同事起身去洗手间的空隙,在他电脑上装上一个可执行文件 Git Shitstorm,然后修改 git 指令,变成 alias git='git-shitstorm && git' 。 Git Shitstorm 在 90% 的时间里都是正常的 git 操作,但有 10% 的概率会从仓库里提取内容然后提交少量改动,这会让你的同事摸不着头脑,他肯定很难发现你改了 git 命令,每次他尝试修复,也有概率触发 git-shitstorm,可以让你的同事非常抓狂,哈哈哈。

以上只是玩笑,真这么干了,被同事爆揍一顿,或者被辞退了可不怪我。为了避免被同事这么搞,离开工位的时候记得锁屏 :)

Code Related

A Career in Computing by Bruce Eckel

作者经常被问到,应该学习 C++ 还是 Java?

答案是应该都去学,都去尝试和接触一下,编程是需要终身持续学习的,不是选择了一门语言就一劳永逸。

摘录

我想说的是,除非你准备好致力于终身学习,否则不要进入这个行业。有时编程看起来像是一份高薪且可靠的工作 ⸺ 但确保这一点的唯一方法就是不断让自己变得更有价值。

Source

我还认为,除了编程之外博学多才,能极大地提高解决问题的能力(就像掌握多种编程语言能显著提升编程水平一样)。我多次遇到过只接受过计算机科学训练的人,他们的思维局限性似乎比那些拥有数学或物理背景的人更大,后者往往思维更严谨,且不容易满足于「在我这儿能运行」的解决方案。

在我组织的一次会议上,其中一个议题是列出理想求职者应具备的特质清单:

  • 将学习视为一种生活方式。例如,你应该掌握不止一种语言;没有什么比学习另一门语言更能让你看清一门语言的优势和局限性了。
  • 了解获取新知识的途径和方法。
  • 研究现有技术。
  • 我们是工具的使用者。
  • 学会做最简单的事情。
  • 了解业务(阅读杂志。从《Fast Company》开始,它的文章简短有趣。然后你可以看看是否想读其他的)。
  • 你个人对错误负责。「在我这儿运行正常」不是一个可以接受的策略。自己去找 Bug。
  • 成为领导者:一个善于沟通并能激励他人的人。
  • 你在为谁服务?
  • 没有标准答案 ⸺ 而且总有更好的方法。展示并讨论你的代码,不要带入个人情感。你不是你的代码。
  • 这是一个趋向完美的渐进旅程。

尽你所能去冒险 ⸺ 最好的冒险是那些让你感到恐惧的,但在尝试的过程中,你会感受到前所未有的生命力。最好不要预设特定的结果,因为如果你太执着于某个结果,往往会错过真正的可能性。我最精彩的冒险都始于「让我们做一个小实验,看看它会带我们去向何方」。

有些人会对这个回答感到失望,并反问道:「是的,这些都很有趣且有用。但说真的,我到底该学什么?C++ 还是 Java?」我会重复这句话来挡掉这些问题:我知道在你们看来,所有的 0 和 1 应该让一切都变得确定,所以这类问题应该有一个简单的答案,但事实并非如此。这不在于做了一次选择就一劳永逸,而在于持续的学习,以及有时大胆的选择。相信我,这样你的生活会更精彩。

Source

Vanilla CSS is all you need by Rob Zolkos

作者观察了几个成熟的项目,发现它们慢慢放弃了 Tailwind,转而拥抱原生 CSS 的实现。原生 CSS 已经足够强大,它不需要额外构建,也可以让类名可读性更好(不过命名是个难题)。

文章里的 <mark> 样式很不错,抄了,你可以在 搜索页 玩玩看。如果你也用 pagefind,并且也打算使用这个样式,可以参考 我的步骤

Why Senior Engineers Let Bad Projects Fail by Lalit Maganti

当在公司里看到一个「烂项目」要不要去给这个项目的人提出建议?

文章中的「烂项目」是那些 UX(用户体验)复杂、解决不存在的问题、设计过度复杂、性能底下、只是为了晋升的项目。

是否提建议,要评估「烂项目」对自己和公司的影响程度;也取决于自己是否能够介入(无法介入也可以做一些防御措施);以及自己是否真的具备做出判断的专业知识。

文章中关于影响力的说法蛮有趣的,作者说把影响力当作一张储蓄卡,当你帮助别人的时候就会获得一定的影响力额度,而有些事情会消耗影响力,不同的事情需要的额度不同,只有当你的储蓄额度足以支持你的花费时,你才能影响别人。相反,如果储蓄额度为零,甚至负债,你可能还会受到很多阻碍。

The Git Commands I Run Before Reading Any Code by Ally Piechowski

作者分享了 5 个他在阅读代码前会执行的 Git 命令,挺实用的。

摘录
  1. git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -20

    找到过去一年,改动最频繁的 20 个文件。

    如果发现一个没人愿意负责的文件出现了高频变动,那你就知道这里大概是有个坑了,可能积累了大量的负债。

  2. git log -i -E --grep="fix|bug|broken" --name-only --format='' | sort | uniq -c | sort -nr | head -20

    和第 1 条命令类似,但过滤了包含 bug 相关关键字的提交。

    如果第 1 条命令和第 2 条命令得到的文件有重合,那说明那个文件风险很高,一直在修补,但从未消停。

  3. git shortlog -sn --no-merges

    按提交次数排名的每一位贡献者。

    每一位贡献者按提交次数排名。如果某个人占了 60% 或更多,那就是你的 ⸺ 「公交因素」(bus factor)。如果他们在六个月前离职了,那就是一场危机。如果总提交记录中的头号贡献者没有出现在最近 6 个月的时间窗口内( git shortlog -sn --no-merges --since="6 months ago" ),我会立即向客户指出这一点。

    我还会观察尾部数据。如果有 30 位贡献者,但去年只有 3 位活跃,说明构建这个系统的人并不是现在维护它的人。

    Source

  4. git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c

    按月统计的代码提交次数,看看项目是否正在消亡。

    稳定的节奏是健康的。但如果单月提交次数下降了一半,那意味着什么?通常是有人离职了。如果曲线在 6 到 12 个月内持续下滑,说明团队正在失去动力。周期性的峰值后紧跟着沉寂的月份,意味着团队是在分批发布,而不是持续交付。

    Source

  5. git log --oneline --since="1 year ago" | grep -iE 'revert|hotfix|emergency|rollback'

    回滚和热修复的频率。

    一年几次是正常的。每隔几周就出现一次回滚,意味着团队不信任其部署流程。这是更深层次问题的证据:不可靠的测试、缺失的分段环境(staging),或者部署流水线导致回滚操作异常困难。零次也是一种信号:要么是团队非常稳定,要么是根本没人写描述性的提交信息。

    Source

    除了这些命令外,如果是从 zip 包获取的 Git 仓库,最好检查一下 .git/config ,看看有没有奇怪的配置,例如 core.fsmonitor 可以让你在执行 git 命令的时候,执行任意指定的程序;也可以检查一下依赖项,看看有没有奇怪的依赖。

How I remember link and image Markdown syntax by Lynn Fisher

作者分享了她是如何记忆 Markdown 的链接和图片链接语法的:

利用谐音:「Put the path in parentheses.」既然链接在括号里,那描述文字自然就只能在方括号里了。而拍照的时候,往往会大喊一声「茄子! (Cheese!)」,所以图片就在前面补一个 ! 就好了。

我也想了一个:

Markdown 链接是先写方括号还是括号呢?我想到「方括号」里「括号」两个字是在「方」的后面,所以应该先写方括号,再写括号。链接中必不可少的是 URL,URL 放哪里呢? 放「括号」里呀,所以是放到后面的括号里。

Nice Select by Adam Argyle

作者整合了很多现代的 CSS 特性去自定义 <select> ,做出来挺好看的,也可以了解到很多相关的 CSS 特性。

Building Typographic Scales in CSS with :heading(), sibling-index(), and pow() by Always Twisted

原来标题的字号大小有排版比例,学习了。

摘录

排版比例使用的比例(大多)借鉴自音乐音程。这些比例创造了「和谐」的比例感,因为它们基于同样的数学关系,而正是这些关系让优秀的音乐听起来悦耳。

常用比例:

  • 小三度 (1.200) - 细微
  • 大三度 (1.250) - 均衡
  • 纯四度 (1.333) - 略显张力
  • 纯五度 (1.500) - 醒目
  • 黄金比例 (1.618) - 非音程,但常用

这些比例是指数级的,而非线性的。每个标题级别都是在前一个级别的基础上乘以比例,而不是相加。

以下是使用大三度比例 (1.25) 时,各标题级别的指数级增长情况:

h6: 1rem × 1.25⁰ = 1rem
h5: 1rem × 1.25¹ = 1.25rem
h4: 1rem × 1.25² = 1.563rem
h3: 1rem × 1.25³ = 1.953rem
h2: 1rem × 1.25⁴ = 2.441rem
h1: 1rem × 1.25⁵ = 3.052rem

其模式为:基础大小 × 比例 ^ 指数。

这就是 pow() 发挥作用的地方。

Source

Using CSS animations as state machines to remember focus and hover states with CSS only by Patrick Brosset

作者通过 CSS 动画,不依赖任何 JS,使得元素能够记住 focus 和 hover 的状态。

大致原理

利用了两个动画属性:

  • animation-play-state 控制动画的运行状态
  • animation-fill-mode: forwards 让动画结束之后,保持在结束时候的状态
.remember-focus {
  animation-name: remember-focus;
  animation-duration: .00001s;
  animation-timing-function: linear;
  animation-fill-mode: forwards;
  animation-play-state: paused;
}


.remember-focus {
  animation: remember-focus .00001s linear forwards paused;
}

动画设置了极短的 持续时间,这样状态的变化看起来就是马上发生的;初始的时候,动画是 暂停 的。当 focus 或者 hover 的时候,让动画运行,因为动画时间很短,动画会马上结束,并保持在结束状态。

.remember-focus:focus {
  animation-play-state: running; (running)
}

动画可以使用很多 CSS 属性,例如:

@keyframes remember-focus {
  from {
    background: red;
  }
  to {
    background: blue;
  }
}

很佩服作者能够想到这样的思路!

JPEG compression by Sophie Wang

一篇解释 JPEG 压缩原理的交互式文章。

JPEG 是一种巧妙的图像压缩算法,它利用了人类的感知偏差和自然图像的结构。它在编码前进行基变换,使得重写后的图像表示集中了人类最敏感的信号 (亮度),从而可以丢弃剩余的细节,而不会严重降低视觉保真度。

Source

The Value of z-index by Amit Sheen

文章分享了几个很不错的组织 z-index 的方法。

  1. 使用 CSS 变量命名 z-index。这样当需要给 toast 设置 z-index,就直接用 var(--z-toast) ,而不用纠结具体数值。
  2. 对于同一个 z-index 层级內的元素,考虑用 --z-top--z-bottom 去进一步做区分。
  3. 使用相对值: calc(var(--z-overlay) - 1)

另见: Unstacking CSS Stacking Contexts by Gabriel

AI Related

Thoughts on slowing the fuck down by Mario Zechner

LLM 可以快速地产出代码,如果一味追求速度,可能也在快速地积累代码负债。作者建议慢下来,参与架构、API 的代码实现,而不是全部委托给 LLM,从而保持对代码库的理解和掌控感。

摘录

机器 (Clanker) 与人之间有一个更重要的区别。人是瓶颈。人无法在几小时内吐出 2 万行代码。即使人频繁犯错,每天能引入代码库的错误 (booboos) 数量也是有限的。这些错误累积的速度非常缓慢。通常,如果错误带来的痛苦太大,厌恶痛苦的人类就会花时间去修复它们。或者那个人被解雇,由别人来修复。这样痛苦就消失了。

Source

显然,将任务委托给智能体并没有错。好的智能体任务具有几个共同属性:它们可以被限定范围,这样智能体就不需要理解整个系统;闭环可以完成,也就是说,智能体有办法评估自己的工作;输出不是任务关键型的,只是一些临时工具或内部软件,不涉及任何人的生命安全或收入。或者你只是需要一个「小黄鸭」来碰撞想法,这基本上意味着将你的想法与互联网的压缩智慧和合成训练数据进行碰撞。如果满足以上任何一点,你就为智能体找到了完美的任务,前提是你作为人类是最后的质量把关人。

[…]

核心在于:让智能体去处理那些枯燥乏味、无法让你学到新知识的琐事,或者去尝试那些你平时没时间顾及的各种方案。然后,你再评估它的产出,采纳其中合理且正确的想法,并完成最终的实现。当然,最后一步你同样也可以交给智能体来做。

Source

我想建议的是,慢下来才是正道 (slowing the fuck down is the way to go)。给自己留出思考的时间,去想想你到底在构建什么,以及为什么要构建它。给自己一个说「不」的机会 ⸺ 也许我们根本不需要这个功能。根据你实际的代码审查能力,为自己设定一个每日允许智能体生成的代码量上限。

任何定义系统灵魂 (gestalt) 的东西,比如架构、API 等等,请亲手编写。或许可以开启自动补全来找回一点怀旧感,或者与你的智能体进行结对编程。让自己沉浸在代码中。因为亲手编写或亲眼见证代码一步步构建的过程所产生的「摩擦感」能让你更好地理解自己想要构建什么,以及系统的「手感」如何。这正是你的经验和品味发挥作用的地方,也是目前的尖端模型尚无法取代的。慢下来,去感受这种摩擦带来的阵痛,正是你学习和成长的契机。

Source

What is agentic engineering? by Simon William

既然我们已经有了能够编写可用代码的软件,那么我们人类还剩下什么可做的呢?

答案是:还有太多事情要做。

编写代码从来不是软件工程师的唯一活动。这门手艺的核心一直是弄清楚该写什么代码。任何给定的软件问题都有数十种潜在的解决方案,每种方案都有其权衡。我们的工作是权衡这些选项,并找到最适合我们特定环境和要求的方案。

Source

编程的本质是思维,不是语言 by Andy Stewart

编程其实是一种思维方式,也是一种沟通方式。你是用汇编,还是用 C 语言,还是用自然语言去指挥计算机,关系都没有那么大。关键在于,你有没有真正的编程思维。你能不能把问题拆开,能不能描述边界,能不能发现错误,能不能一步一步把系统构建出来。如果这些能力没有,那就算你手写汇编,也未必是一个真正会编程的人。如果这些能力有了,那你不管是写 C,写 Python,还是和 AI 对话,本质上都是在编程。所以我越来越觉得,未来真正重要的,不是你会不会某一种语言,而是你有没有计算机的编程思维。

Source

AI makes you boring by Viktor

向 AI 模型输入提示词并不等同于阐述观点。你虽然能得到生成的结果,但就构思而言,这些结果是可有可无的。真正重要的是思考的过程。

Source

如果是和 LLM 对话,探讨某个问题,从而加深或拓宽自己对问题认识,我想 LLM 还是有帮助的。

The machine didn't take your craft. You gave it up. by David Abram

我从事这一行已经很多年了,工作中最困难的部分从来都不是敲击键盘写代码。我最头疼的始终是理解系统、调试那些莫名其妙的错误、设计在高负载下不会崩溃的架构,以及做出能避免日后数月痛苦的决策。

这些问题都不是大语言模型所能解决的。它们可以提供代码建议、帮助编写样板代码,有时还能充当探讨想法的参谋。但它们并不理解系统,它们的「脑子」里没有上下文,更不知道为什么某个决策是对还是错。

最重要的是,它们不会做选择。这部分工作仍然属于你。软件开发的真正核心,也是体现个人价值的地方,在于从一开始就知道应该构建什么,以及为什么要构建它。

Source

真正的危险在于人们停止思考。真正的陷阱是工程师让工具去承担本该由他们自己构建的认知负荷 ⸺ 这是理性的自我放弃。

Source

AGENTS.md outperforms skills in our agent evals by Jude Gao

AGENTS.md 是项目根目录的一个文件,提供持久的上下文信息。 Skills 是一系列的 markdown 文件,封装了相关领域知识,提供给模型在需要时查阅。

但是 Skill 没法保证可靠的触发,有时模型并不会查阅 Skills,相比而言 AGENTS.md 是模型始终会去加载的,会更稳定。有的事情 Skills 做不好的话,可以试试放到 AGENTS.md 中,比较一下效果。

Less human AI agents, please. by Andreas Påhlsson-Notini

人工智能代理已经太像人类了。这并不是在浪漫的意义上,不是因为它们会爱、会恐惧或会做梦,而是在更平庸、更令人沮丧的层面上。目前的实现方式一次又一次地展示了它们的人类起源:缺乏严谨性、缺乏耐心、缺乏专注力。面对棘手的任务,它们会向熟悉的领域漂移。面对硬性约束,它们开始与现实讨价还价。

Source

Tools

一些话 | 摘抄

风格感觉 by 史蒂芬·平克

Just below the surface of these inchoate intuitions, I believe, is a tacit awareness that the writer’s goal is to encode a web of ideas into a string of words using a tree of phrases. Aspiring wordsmiths would do well to cultivate this awareness.

我认为,在这些模糊直觉的表象之下,隐藏着一种心照不宣的领悟:作者的目标,在于借助层级分明的短语结构,将纷繁交织的思绪编织成线性的文字。有抱负的文字工作者应当刻意培养这种意识。

另一个更常见的表达:

写作之难,在于把网状的思维,通过树状的结构,用线性的文字展开。

明月高悬夜空 by 费尔南多·佩索阿

明月高悬夜空,眼下是春天。
我想起了你,内心是完整的。

一股轻风穿过空旷的田野向我吹拂。
我想起了你,轻唤你的名字。
我不是我了:我很幸福。

明天你会来和我一起去田野里采花
我会和你一起穿过田野,看你采花。

我已经看到你明天和我一起在田野里采花,
但是,当你明天来到并真的和我一起采花时,
对我来说,那将是真实的快乐,
也是全新的事情。

来自豆瓣 2026 周历第十三周

Boy I was wrong about the Fediverse

人们总在讨论驱动 Bluesky 和 ActivityPub 的协议,因为我们都是技术宅,内心深处坚信更优越的协议终将胜出。这想法挺天真的。它完全违背了人类历史 ⸺ 无论技术水平如何,更方便的东西总是会赢。

Source

我从未想过会从一个半数网民都没听说过的联邦式社交网络上(federated social network)的陌生人那里获取新闻。我从未预料到很多事情。但在这样一个地方,人们只是……分享他们所知道的东西,这其中有一种宁静的美感。没有品牌合作,没有互动指标,没有算法诱导你走向愤怒。只有一位研究了二十年北极政策的人,在凌晨两点发帖,仅仅是因为他们觉得你应该了解正在发生的事情。这就是我在 1996 年得到承诺的那个互联网。为了到达这里,竟然花了三十年的时间,并经历了美国新闻业的彻底崩塌。

Source

Maintaining the long-term view by Protesilaos

在雨中做事并不舒服,至少在需要鼓起意志力开始工作时是这样。不过,过去的经验很有帮助,因为你知道最初的不适感很快就会消失。难点在于,不要在最初的几秒钟内丧失决心。有一个充分的行动理由也很有帮助,甚至是必不可少的:它迫使你走出舒适区,让你更投入地追求积极的结果。如果你不相信这项事业,你就很难应对挑战。信念赋予了一个人战胜一切困难的力量。

支撑我努力的是对自身处境的长期理解。我不认为安逸是理所当然的。生活从来都不容易,除非是在婴儿时期受父母照顾的时候。我接受所有中间过程中的问题,将它们视为我生命这一宏大进程的一部分。我有自己的土地,并随之不断改进。它最终会成为一个体面且安全的地方。就像一颗橡子发育成脆弱的幼苗,然后长成纤细的小树,直到最终成为一棵雄伟的橡树。

[…]

当你处于「行动」模式时,耐心是自然而然的。[…]

相反,当你仅停留在抱负和痴心妄想的层面时,你没有参考标准,对有限资源的经济性缺乏感知,因此也就没有耐心的空间。 […]

Source

A lunch without alcohol by Protesilaos

我不谈论我的生活选择。我没兴趣让任何人改变观点或接受我的生活方式。我为什么戒酒是我自己的事:简而言之,比起在餐桌上赢得那些毫无意义的关注,我更看重长期健康。

Source

我的生活方式可以概括为「多做少说」,或者更确切地说是「先精通,后传授」。如果我认同某种理念,我会将其融入到我的行动中。如果它是行之有效的,那么我本身就是其功效的化身。我不需要宣扬显而易见的事。他人自然会注意到效果并尝试效仿。如果他们看不出其中的门道,那说明他们还没准备好。我觉得脱离行动的空谈会削弱人的力量,它不可避免地会演变成过度思考和随之而来的焦虑不安,陷入恶性循环。

Source

We use Chatbots to hide our UI problems by Ibrahim Diallo

当客户找上你的聊天机器人时,并不是因为他们觉得聊天机器人很酷,而是因为你让他们失望了。

在整个过程中,由于某些原因,他们找不到物流信息。他们在迷宫般的常见问题解答(FAQ)中迷失了方向。他们在尝试解决一个简单问题时遇到了阻碍。当他们打开聊天窗口时,已经感到沮丧或困惑。他们不想要另一层复杂性,他们想要一个快速、简单的解决方案。

你的聊天机器人只是覆盖在你造成的伤口上的一块止血贴。去修复你的用户界面吧。让信息易于查找。停止将基础功能隐藏在菜单和迷宫之后,到头来你可能根本不需要那个昂贵的聊天机器人。

Source

Pablo Picasso

Good artists borrow, great artists steal.

Why I Write by George Orwell

摘录

我之所以提供这些背景信息,是因为我认为如果不了解一个作家的早期成长经历,就无法评估其写作动机。他的题材将由他所处的时代决定 ⸺ 至少在像我们这样动荡、变革的时代是如此 ⸺ 但在他动笔之前,他就已经形成了一种永远无法完全摆脱的情感态度。毫无疑问,他的职责是磨练自己的性情,避免停留在某个不成熟的阶段或某种乖戾的情绪中;但如果他完全摆脱了早期的影响,他也就扼杀了写作的冲动。撇开谋生的需要不谈,我认为写作(至少是散文写作)有四大动机。这些动机在每个作家身上都不同程度地存在,而且在同一个作家身上,其比例也会随着生活环境的变化而时常波动。它们分别是:

(一) 纯粹的利己主义。渴望显得聪明,渴望成为谈资,渴望死后留名,渴望向儿时冷落过你的长辈报复,等等。如果假装这不是动机,而且是一个强烈的动机,那是虚伪的。作家与科学家、艺术家、政治家、律师、军人、成功的商人共有这一特征 ⸺ 简而言之,就是人类社会的整个上层精英。绝大多数人并不是极度自私的。大约三十岁以后,他们就放弃了个人抱负 ⸺ 在许多情况下,他们甚至几乎放弃了作为个体的意识 ⸺ 主要为他人而活,或者干脆被沉重的劳役所淹没。但也有少数天赋异禀、意志坚定的人,他们决心将自己的生活贯彻到底,作家就属于这一类。我想说,严肃作家总体上比新闻记者更虚荣、更以自我为中心,尽管他们对金钱的兴趣较小。

(二) 审美热情。对外部世界,或者对文字及其妥帖安排之美的感知。享受声音交织带来的冲击,沉醉于精炼散文的力度或精彩故事的节奏。渴望分享某种自认为有价值且不容错过的体验。在许多作家身上,审美动机可能很微弱,但即便是小册子作者或教科书编纂者,也会有出于非功利原因而偏爱的词句;或者他可能对排版、页边距宽度等有着强烈的坚持。只要水平在铁路指南之上,没有任何一本书能完全脱离审美考量。

(三) 历史冲动。渴望看清事物的真相,发掘真实的事实并将其储存起来供后世使用。

(四) 政治目的 ⸺ 这里是在最广泛的意义上使用「政治」一词。渴望将世界推向某个特定方向,改变他人对所应追求的社会形态的想法。再次强调,没有任何一本书能真正摆脱政治偏见。认为艺术不应与政治挂钩的观点本身就是一种政治态度。

Source

The 49MB Web Page by Website Carbon

我访问《纽约时报》想扫一眼四条新闻标题,结果迎面而来的是 422 个网络请求和 49 MB 的数据。页面足足花了三分钟才稳定下来。这也难怪每个神智正常的科技从业者都会在亲友的系统上安装广告拦截器。

为了真正理解 49 MB 网页是什么概念,让我们快速回到几十年前。加载这个页面所消耗的数据量已经超过了 Windows 95(28 张软盘)的大小。那个曾经运行全球的操作系统,竟然能完美塞进如今的一个网页加载量中。 2006 年,iPod 占据统治地位,数字音乐弥足珍贵。一首 192 kbps 比特率的标准高质量 MP3 歌曲大约占用 4 到 5 MB。这一个页面大约相当于 10 到 12 首完整长度的歌曲。我为了读几段文字,实际上下载了相当于一整张专辑的数据。根据 国际电信联盟 的数据,当时的全球平均宽带网速约为 1.5 Mbps。你的浏览器会持续加载这个「庞然大物」好几分钟,这段时间足够你走开去冲杯咖啡了。

Source

前阵子我把字体移除了,使用系统默认字体,目前一个页面一般也就几百 KB (有的页面有图片就会大一些),相比之前应该是会快一些。

多媒体

幽灵塔

最初买这本书是被开头几页宫崎骏的漫画吸引了。

读起来挺轻松的一本悬疑类小说,作者是 江戶川亂步,被成为日本推理小说鼻祖,名字是不是听着很熟?如果你看过 名偵探柯南 的话,你应该有印象,江戶川柯南的名字就取自江户川乱步。整本书读起来也像是一部柯南剧集,也是一个不错的故事。

书里还涉及了换脸,让我想到了伊坂幸太郎写的 《金色梦乡》,两本书的人物都是通过「改头换面」获得一个新身份得以「重生」。

影视

挽救计划 Project Hail Mary (2026)

满怀期待去看,但不如原著好看,科幻感不强,更像是一部爆米花电影,推荐阅读原著。不过里头的 Rocky 还是蛮还原的,用机器声重复「Good Good Good」、「Bad Bad Bad」也很可爱。里面的歌也还不错:

  • Sunday Morning Coming Down by Kris Kristofferson
  • Two Of Us by The Beatles

超时空辉夜姬! 超かぐや姫! (2026)

作画精美的一部动画,喜欢里面的人物形象和声优的声音。音乐也不错,看了一下演唱是 ryo,难怪觉得好听,因为 supercell 的声音和歌我就很喜欢。剧情一般,没啥触动。什么时候也能像动画一样进入虚拟世界玩耍就好了。

接近终点 Sirât (2025)

有点像是公路片,喜欢影片里的画面和色调。影片经常播放着电子舞曲,听着有些低沉,总给人一直不安的感觉。影片的前半段是欢快明亮的,而后半段儿子意外去世后就变得消沉压抑,最后主角们进入了雷区,一个不小心就被炸死,也让人觉得很紧张。

主角们是一群逃离社会群体的人,四处寻找地方跳舞、狂欢,想建立属于他们的自由的乌托邦。但影片里无处不在暗示战争就在周围(例如开头军队驱散人群、收音机播报的新闻,最后进入的雷区),现实是无法逃避的。

春天情书 (ハル) (1996)

找电影看,翻了翻待看列表,看到「春天情书」,最近也正好是春天,就选择了这部电影。

除了男主的网络昵称是「春天(ハル)」,其他和春天似乎都没啥关系。

影片讲述了两个人在一个电影 BBS (Bulletin Board System, 電子佈告欄系統) 中认识,然后一直通过电子邮件交流,电影一方面展示了两个人的生活,一方面则展示着两个人的通讯。两个人在生活中多少都有一些悲伤和失意,但在网络世界中,通过电子邮件相互倾诉,找到了一些喘息的空间。

电子邮件相比即时通讯是有些「慢」的,但正因为这一点「慢」,让人可以有空间、时间去斟酌内容,而不像即时通讯一般,想到什么就直接发送。

影片的节奏是缓慢的,缓缓地叙述着两个人的生活,在网络上相互分享着生活的点滴,开心的、难过的、真实的、带着谎言的……

早期网络上,个人信息很少,交流时不知道对方是谁,对方的性别、年龄、样貌…都是通过对话去猜测、认识和想象,往往对对方都会带有一些美好的想象吧。

后来两人相约见面一次,竟然是一个在新干线上,一个在新干线下,相互挥手帕和录像,憧憬、兴奋、想见面却又害怕靠近,之后反反复复地翻看录像,珍惜地收藏着。

里面网友见面会相互确定一个物件,例如报纸、软盘,也很有趣,但也会很担心自己拿出了信物,对方看到自己后不想相认吧。

概括来说,这是一个早期网络恋爱故事,豆瓣有个热评也很精准「那些 豆邮(1) 的日子。」

推荐一看。(^ー^)

制片人 The Producers (1967)

在写 Album#36 - Quicksand 的时候,了解到 Bialystocks 乐队的名字出自这部电影,就找来看了看。

这是一部喜剧电影,比较荒诞,里面的演员演的我都挺喜欢的,尤其是 Max Bialystock 和 Leo Bloom。 Bialystock 是一个自私自利的人,是戏剧的制作人;Leo 是一个会计师,是一个实诚又有些神经质的人。两人的演技都很棒,我会更喜欢 Leo 一些。

Leo 过来帮 Bialystock 算账,发现 Bialystock 募资了 60000,实际只花了 58000,剩下 2000 自己拿去玩了,但是这部剧失败了,投资人投资失败了,也不需要分红。 Leo 就发现了一个漏洞,如果你募资超过需要的资金,例如对外募资 100 万,说是需要的成本,但实际拍戏只用 5 万,并且让这部剧注定失败,这样剩下的 95 万就可以私吞。这本来只是 Leo 的假想,实诚的他根本没想过去实践,但被 Bialystock 听到了,穷困潦倒的 Bialystock 看到了搞钱的大机会,就忽悠 Leo 加入他去实施这个计划,电影就是叙述了整个计划的实施过程,蛮搞笑的。

Bialystock 忽悠 Leo 的那一段我蛮喜欢的。 Bialystock 带着 Leo 在公园散步、在湖上泛舟,最后 Leo 终于被忽悠进去了,在喷泉上大喊「I'll Do it!」,喷泉汹涌喷发,很有激情。

迈克尔·杰克逊:巨星之路 Michael (2026)

值得去影院一看的电影,去享受 2 小时的音乐和舞蹈。

看完电影才知道 Michael 原来这么喜欢动物,养了羊驼、猩猩、长颈鹿……;他喜欢看 彼得潘,以致于他后来还建造了彼得潘里面的梦幻岛 (Neverland)。 Michael 的童年并不开心,被父亲硬拉着排练,没法和其他孩子一起玩, Neverland 大概是用来弥补他自己童年的缺憾的。

Michael 也是一个友善和充满爱心的人,小的时候演出,跑到那个坐着轮椅的女孩前唱歌;救了实验室里的猩猩出来,当作朋友陪伴在身边;超市里有粉丝认出他来了,他也很开心地给其他人签名;他很关心医院里那些生病的儿童,很有耐心的和孩子聊天;他自己头皮烧伤了,但却在医院里安慰着其他烧伤的病人;

Michael 也是一个有些调皮的人,也许是受到了卓别林的影响,从他的一些 MV 可以看出来,例如: ThrillerGhosts,都给人有种恶作剧的感觉。

电影主要剧情还是他和父亲的冲突,Michael 想单干,做他自己想做的音乐,走自己的路,但父亲用家庭去束缚着他,逼迫他留在 Jackson Five,利用着他为自己牟利。最后 Michael 摆脱了父亲,影片的最后他在舞台上唱着 Bad,这首歌的歌词也像是一种对父亲的质问,推荐看看 Bad 的 MV

不过电影作为一部人物传记,剧情还是有点单薄,主要还是聚焦在 Michael 和父亲的关系上,关于他的音乐、专辑、舞蹈,他遇到的挫折和困难,讲得还不够多。

异国日记 違国日記 (2026)

一部治愈系动画,节奏比较慢,讲述了双亲意外身亡的「朝」寄居在她的阿姨「槙生」家中,慢慢从悲伤和困惑中走出来的故事。里面的角色都挺喜欢的,尤其是「槙生」这个角色。

游戏

Balatro

Balatro,又称小丑牌,前阵子看到打折就买来玩了玩,很上头。

Balatro 是一个 Roguelike 游戏,随机生成关卡、小丑牌、卡牌,每个关卡会有一个目标分数和限制条件,需要找到一个套路可以尽可能得到高分,达到目标分数。爽点就是找到了一个套路后,看卡牌分数不断叠加,比较有成就感吧。

类似的还有 幸运房东浣熊推币机苦痛之环杀戮尖塔……

这类游戏前期可能比较困难,因为很多道具没有解锁,没法形成套路,多玩几局解锁足够道具后,一旦形成套路就会很爽。但道具和套路就那些,久了之后也会有些枯燥。

所有小丑牌里,我最喜欢的是「流浪者」,钱少于等于 4 块的时候,每次出牌都会生成塔罗牌,很爽。

宇宙機器人

PS5 春季打折,宇宙机器人优惠了不少,就买了来玩。清明节期间就和女朋友一起轮流玩,设计有趣,轻松快乐。小机器人很可爱,那些遗落在各个星球的机器人,在被找回的时候还撅着屁股等着被踢一脚,有点欠。

主流程相对来说比较简单,而每个星球还有一些挑战关卡,就比较难,因为中间没有存档,需要很多次试错,操作熟练后才能通过。又让我想起了 《贤者之书》 里的那段话:

简单说,你的每一个行动收获的不是成功,也不是失败,只不过是完成人生拼图时不可或缺的一片。没有别的更深或更浅的意思。

Source

行动了就会有收获,「成功」也好、「失败」也好,都是一种反馈和经验。就像游戏里那些小挑战,很多坑都是通过一次次的「失败」了解的,当摸清了所有的坑,一次次地减少「错误」,最终就能通过挑战。挑战里的坑,虽然旁观女朋友玩我也知道,但实际操作起来就不是那么回事, p还是得自己亲自经历,才知道怎么操作更好。总而言之,多行动。

游戏还致敬了很多游戏 IP,例如地平线:西之绝境、古墓丽影、战神。扭蛋可以收集很多角色手办,每一个都设计了一些互动,也很有趣。

Webmentions (加载中...)

如果你想回应这篇文章,可以在你的文章或社交媒体帖子中链接这篇文章,然后提交你的 URL,你的回应随后会显示在此页面上。 (关于 Webmention)



    文章来源: https://taxodium.ink/48.html
    如有侵权请联系:admin#unsafe.sh