# 科技爱好者周刊（第 300 期）：三十年，解决人生三大问题

这里记录每周值得分享的科技内容，周五发布。

本杂志[开源](https://github.com/ruanyf/weekly)，欢迎[投稿](https://github.com/ruanyf/weekly/issues)。另有[《谁在招人》](https://github.com/ruanyf/weekly/issues/4390)服务，发布程序员招聘信息。合作请[邮件联系](mailto:yifeng.ruan@gmail.com)（yifeng.ruan@gmail.com）。

## 封面图

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051501.webp)

本周，太阳活动剧烈，引起几十年来最大的地磁暴。地球的中高纬度地区，普遍可以看到极光，就连北京这样的中纬度城市，都出现了极光，上图是长城。（[via](https://m.bjnews.com.cn/detail/1715495546129388.html)）

## 三十年，解决人生三大问题

我最近看到[一篇文章](https://huyenchip.com/2024/04/17/personal-growth.html)，很有意思，分享给大家。

文章大意是，**人的一生就是解决三个基本问题：事业、家庭和财务。**

一份有成就的事业，一个幸福的家庭，一个健康的财务状况，人生就没有遗憾了。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051513.webp)

我们的人生规划，就是朝着解决这三个问题努力。哪怕其中只有一个没有解决，你的人生就过不好。

原文作者提出了他的规划。他说，这三个问题要分阶段解决，每个阶段重点解决一个问题。而且**他估计，每个阶段要花费十年**，总共需要三十年。

**（1）第一个十年**。你搞清楚自己想干什么，找到方向，为事业打下基础，从此全力投入。

**（2）第二个十年**。你结婚、买房、养育后代。

**（3）第三个十年**。你努力赚钱，积蓄退休金。

如果将18岁成年作为起点，过完这三个十年，你就已经48岁了。

也就是说，你的目标是，到了48岁，基本解决人生三大问题。48岁以后的时间，就是自己的选择，追求梦想，照顾家人，或者继续推进事业，积累更多财富。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051607.webp)

原文作者没有解释，为什么每个阶段需要十年。我倒是觉得，十年是一个合理的时间。

如果是八年、七年、甚至五年，那样固然很好，不过难度也会相应变大，多少人能做到呢。如果更长一点，每个阶段需要十二年，甚至十五年，那样就有点太晚了，你都要退休了。更重要的是，年纪越大，人生改变的可能性越小，五十岁以后其实能做的有限。

总之，我认为，这是一个很新颖的视角，可以用作思考人生问题的框架，对我很有启发。

<u>凡事就看它是否有助于“事业、家庭和财务”，我们的目标就是在48岁前解决好这些问题。</u>

## 活动

**1、WebGPU 线下沙龙**

前端程序员怎么转向 AI？

除了构建 AI 的前端界面，还有一个更有前途、更适合前端的方向，那就是浏览器直接运行 AI 模型。

**网页跑 AI，需要调用显卡的计算能力，就会用到 WebGPU**。它是去年发布的最新标准，允许网页代码访问 GPU 功能，Chrome 浏览器已经支持。

<u>下周五（5月24日）晚上有一个难得的机会，小红书官方会主办一场 REDtech 技术沙龙，主题就是 WebGPU</u>。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051604.webp)

活动嘉宾是 W3C 资深媒体技术专家、**Web GPU 工作组负责人 François Daoust**，以及小红书前端架构团队，活动内容如下。

> 1. 浏览器如何调用显卡功能，运行 AI 和网页渲染？
> 1. WebGPU 的音视频处理技术有哪些最新进展？
> 1. 小红书如何应用 WebGPU 构建动画，支持业务的快速迭代？

大家点击[这个链接](https://hdxu.cn/LQaZE)，或者扫描上方海报的二维码，了解活动详情和**免费报名**。线下座位有100个，邀请码填写“WebGPU”，如果报名的人多，这样更容易通过，不在上海的同学可以预约线上直播。

到时，除了了解 WebGPU 在 AI 和影音方面的应用，还能跟嘉宾互动，并有机会获得小红书的周边纪念品！

**2、稀土开发者大会**

上周，周刊介绍了今年的“稀土开发者大会”，6月底将在北京举行。

它面向全国开发者，让大家聚在一起，交流分享彼此的开发经验，以及热点技术的进展。

现在，**“架构设计和业务稳定性建设”分论坛**的议题内容和演讲者名单，已经出来了（见下图）。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051605.webp)

<u>如果你参与应用的架构设计，需要后端能够快速缩放，又要保证业务稳定性，同时还要时刻监控关键指标，那么这个分论坛一定很合适你。</u>

大家看它的演讲阵容就知道了，全是国内头部应用的真实案例和实务操作，挺精彩的。

详细的分论坛信息和大会安排，点击[官网链接](https://conf.juejin.cn/xdc2024/?utm_source=ryf)，或者扫描上面海报的二维码，购票也是这个链接。

最后提醒一下，**今天是限量早鸟票的最后一天！** 下周，早鸟票就没了，票价就涨了，想要现场参加大会的同学不要错过了。

## 科技动态

1、[蒙娜丽莎的地点](https://www.theguardian.com/artanddesign/article/2024/may/11/where-mona-lisa-was-painted-mystery-solved-geologist-claims)

达芬奇的世界名画《蒙娜丽莎》是一个谜。人们不知道，它是什么时候画的、为什么达芬奇会画、画里女子到底是谁……

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051510.webp)

一位地质学家最近声称，她找到了一部分的答案，那就是这幅画的地点。

她认为，这幅画的地点是意大利科莫湖东南端的莱科市，理由是莱科的地质环境跟画的背景很像。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051511.webp)

达芬奇用灰白色绘制背景的湖畔岩石，这是石灰岩的颜色，莱科的岩石就是石灰岩，而意大利其他的石灰岩地区都没有湖。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051512.webp)

另外，背景里还有一座桥，正好跟莱科14世纪的一座古桥相吻合。

2、[沙发充电插座](https://www.core77.com/posts/132116/An-Unusual-Furniture-Design-Niche-Behind-the-Sofa-Consoles)

很多人喜欢坐在沙发上玩手机，但是常常找不到插座充电。

因此，现在就流行一种新家具，是沙发后面装一个木架，木架上面有插座。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051003.webp)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051004.webp)

这个架子放在沙发后面，很简单就解决了找不到插座的问题。

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051005.webp)

3、[金属轮胎](https://www.theverge.com/2023/9/14/23873153/nasa-bike-tire-shape-memory-price-smart-specs)

一家美国创业公司发布了自行车的“金属轮胎”，轮胎里面不是空气，而是金属弹簧。

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091605.webp)

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091606.webp)

这家公司介绍，它采用美国宇航局发现的镍钛诺合金。这种合金具有记忆功能，能够记住加热后锻造的形状，同时重量非常轻而且坚韧，适合做成弹簧替代轮胎。

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091607.webp)

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091608.webp)

这种“金属轮胎”的优点是不用充气，耐用性好。缺点是价格贵，不含轮圈的价格是500美元一对，是普通的优质自行车轮胎的10倍。

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091609.webp)

4、[冰岛的总统选举网站](https://uxdesign.cc/how-do-you-accidentally-run-for-president-of-iceland-0d71a4785a1e)

冰岛即将举行总统选举，报名资格是最少需要1500人的签名支持。

政府架设了[一个网站](https://island.is/forsetaframbod)，让公民在网站上，向支持的候选人提交电子签名。

但是，这个网站出了一个乌龙事件。

![](https://cdn.beekka.com/blogimg/asset/202404/bg2024043009.webp)

它的签名页有一个“注册”按钮（下图的蓝色按钮），很多人点击注册了。

![](https://cdn.beekka.com/blogimg/asset/202404/bg2024043010.webp)

殊不知，签名只需要身份证，不需要注册。这个按钮实际上是“总统候选人”注册。你点击后，会显示一张表格，填完以后你就变成总统候选人了。

于是，冰岛现在就有了82个总统候选人，要知道以前选举的候选人，最多一次也只有9个。网站发现闯祸了，赶紧把 UI 改了。

我在想，要是有一部电影，讲述因为网站出错，一个普通人变成了总统，那就好玩了。

## 文章

1、[一个不知名的开源项目可以带来多少收入？](https://mp.weixin.qq.com/s/3i-bOEtM78xKSku5ndqp7Q)（中文）

三年前，作者决定做一个开源的开发工具。三年过去了，这个项目怎么样了，赚了多少钱。（[@zhouyanliang](https://github.com/ruanyf/weekly/issues/4458) 投稿）

2、[5个改善用户体验的 HTML 属性](https://www.htmhell.dev/adventcalendar/2023/4/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202312/bg2023120502.webp)

本文介绍5个不常用的 HTML 属性。

3、[现代 JavaScript 框架是如何工作的](https://nolanlawson.com/2023/12/02/lets-learn-how-modern-javascript-frameworks-work-by-building-one/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202312/bg2023120302.webp)

作者通过示例，解释反应式的 JavaScript 前端框架的核心原理，并且自己实现了一个最简框架。内容还可以，但是写得不易读。

4、[Emoji 正则匹配](https://taxodium.ink/post/emoji-regexp/)（中文）

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051505.webp)

本文介绍一个 JS 技巧，如何用一个简单的正则表达式匹配 Emoji 表情符号。（[@Spike-Leung](https://github.com/ruanyf/weekly/issues/4452) 投稿）

5、[Linux 容器的底层技术](https://www.annwan.me/computers/what-why-how-containers/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202403/bg2024032803.webp)

一篇非常简单的文章，列出了容器技术底层依赖的几个 Linux 技术。

6、[Steam Deck 的五个杀手级功能](https://www.jonashietala.se/blog/2023/10/24/the_killer_features_of_the_steam_deck/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202310/bg2023102406.webp)

作者非常喜欢便携式游戏机 Steam Deck，列出了五个他最喜欢的点。

## AI 相关

1、[Veo](https://deepmind.google/technologies/veo/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051502.webp)

谷歌本周发布的“文生视频”模型。

2、[Jan](https://jan.ai/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024050105.webp)

ChatGPT 的替代品，可以在桌面和服务器运行，接入各种 LLM 模型，让初学者也能轻松上手。

## 工具

1、[GitUI](https://github.com/extrawurst/gitui)

![](https://cdn.beekka.com/blogimg/asset/202401/bg2024011508.webp)

终端里面的 Git 图形界面，将各种 git 操作可视化，使用 Rust 语言开发。

2、[Outline](https://github.com/outline/outline)

![](https://cdn.beekka.com/blogimg/asset/202401/bg2024011701.webp)

一个开源的在线知识库软件，支持多人合作。

3、[Vnt](https://github.com/lbl8603/vnt)

一个开源工具，将不同网络下的多个设备虚拟到一个局域网下，类似与 tailscale、zerotier、n2n。（[@lbl8603](https://github.com/ruanyf/weekly/issues/4444) 投稿）

4、[DashPlayer](https://github.com/solidSpoon/DashPlayer)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051506.webp)

一款专为英语学习打造的开源视频播放器，支持生成双语字幕，进行精听或泛听练习。（[@solidSpoon](https://github.com/ruanyf/weekly/issues/4454) 投稿）

5、[字幕工具箱](https://zm.i8k.tv/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051508.webp)

这个网站收集了一些字幕相关的工具，纯前端处理，无需安装任何插件或软件。（[@mzhren](https://github.com/ruanyf/weekly/issues/4464) 投稿）

6、[封面图片生成器](https://spacexcode.com/coverview/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051108.webp)

一个制作简单封面图的 Web 工具。（[@fantingsheng](https://github.com/ruanyf/weekly/issues/4439) 投稿）

另外，还有一个类似的 Logo 制作工具“[Logo 厨师](https://www.logocook.shop/)”。（[@gdfsdjj145](https://github.com/ruanyf/weekly/issues/4455) 投稿）

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051507.webp)

7、[Easy Voice Toolkit](https://github.com/Spr-Aachen/Easy-Voice-Toolkit)

一个简易的语音工具箱，提供音频处理、语音识别、合成等音频工具，使用 Python 语言开发。（[@Hao4Wang](https://github.com/ruanyf/weekly/issues/4471) 投稿）

8、[Segmentify](https://segmentify.app/zh)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051509.webp)

一个 Figma 插件，使用浏览器 GPU 能力运行 AI SAM 模型，快速分割图片，从图片中提取元素至 Figma 文件。（[@janily](https://github.com/ruanyf/weekly/issues/4472) 投稿）

9、[Web-Tracing](https://github.com/M-cheng-web/web-tracing)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051504.webp)

一个开源的前端埋点工具，提供项目监控。（[@M-cheng-web](https://github.com/ruanyf/weekly/issues/4451) 投稿）

10、[Technitium DNS](https://technitium.com/dns/)

![](https://cdn.beekka.com/blogimg/asset/202401/bg2024011706.webp)

一款开源 DNS 服务器，带有 Web 管理面板。

11、[QR code designer](https://github.com/kochrt/qr-designer)

![](https://cdn.beekka.com/blogimg/asset/202305/bg2023053102.webp)

一个 Web 工具，用来设计二维码，可以嵌入各种文字和图形，另有一个[类似工具](http://jsfiddle.net/lachlan/r8qWV/)。

12、[BullMQ](https://github.com/taskforcesh/bullmq)

![](https://cdn.beekka.com/blogimg/asset/202211/bg2022111202.webp)

Redis 的 JS 客户端，号称强大且快速。

## 资源

1、[LaTeX 入门与进阶](https://latex.lierhua.top/zh/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051107.webp)

网友写的中文书籍，介绍如何使用 LaTeX 和宏包编写。（[@immotal](https://github.com/ruanyf/weekly/issues/4436) 投稿）

2、[URLhaus 数据库](https://urlhaus.abuse.ch/browse/)

![](https://cdn.beekka.com/blogimg/asset/202405/bg2024051503.webp)

这个数据库专门收集各种恶意 URL 网址，目前已经收集了280万个，可以免费查询和下载。

3、[数据科学导论](https://rafalab.dfci.harvard.edu/dsbook-part-1/)（Introduction to Data Science）

![](https://cdn.beekka.com/blogimg/asset/202403/bg2024030201.webp)

开源的英文教材，源于哈佛大学同名课程，使用 R 语言学习数据科学。

4、[引脚定义](https://pinouts.org/)

![](https://cdn.beekka.com/blogimg/asset/202309/bg2023091204.webp)

一本免费英文电子书，收集了130种电子产品常见组件（比如 USB 口）的引脚定义。

## 图片

1、[愤怒的小鸟原型](https://mymodernmet.com/angry-bird-cardinal-photo/)

著名游戏《愤怒的小鸟》的主角，是一群彩色的麻雀。

![](https://cdn.beekka.com/blogimg/asset/202311/bg2023113012.webp)

这种小鸟的原型是北美红雀（cardinal），它们长得简直跟游戏里面一模一样。

![](https://cdn.beekka.com/blogimg/asset/202311/bg2023113013.webp)

![](https://cdn.beekka.com/blogimg/asset/202311/bg2023113014.webp)

2、[《异星工厂》的 3D 图像](https://alt-f4.blog/ALTF4-65/)

[《异星工厂》](https://www.factorio.com/)（Factorio）是一个策略类游戏，要求玩家在一个荒芜的星球建造出一个完整的生产系统（即建造各种各样的工厂）。

原始游戏是 2D 图像。

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070301.webp)

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070302.webp)

[FUE5](https://github.com/FUE5BASE/FUE5) 是一个社区项目，目标是使用 Unreal 引擎将这个游戏变成 3D 的样子，效果非常出色。

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070305.webp)

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070303.webp)

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070304.webp)

![](https://cdn.beekka.com/blogimg/asset/202307/bg2023070306.webp)

## 文摘

1、[11,000行的单个源码文件](https://austinhenley.com/blog/11000lines.html)

我曾经遇到过一个超过11,000行的源码文件，它是 VBScript 代码的电子表格应用程序，公司所有员工需要的各种表格都在这个程序里面。

这个文件包含了你能想到的软件开发的所有噩梦。

多年来，无数人对这个文件进行了更改，但他们不是程序员，而是从 IT 支持到业务分析师各种人都有。你无从追踪每个人更改了什么地方。

整个文件看起来是从上到下执行，但我从未真正确认。代码的大致逻辑是，获取一些用户数据，然后检查数据是否满足某些条件，再执行各种动作，包括显示表单、访问共享驱动器上的文件、运行 SQL 查询、向硬编码地址发送电子邮件等等。

文件里面许多变量似乎没有从未使用到，变量名也难以搞清楚含义，同义词到处都是。

有趣的是，一个变量可能在第200行-210行使用，然后突然又在第8544行再次使用，其他地方就找不到踪迹了。

很多逻辑似乎是多余的，可能是复制粘贴进来的，然后从未清理过。一旦我清理它，代码突然就出错了，直到今天，我有时躺在床上还想知道是什么原因造成的。

它没有版本控制。关于代码更改的唯一线索，是看它抛出的错误提示和代码注释，但是我学会了不要信任那些注释。

它没有测试环境。如果我进行了更改，就必须在生产环境中对其进行测试。程序的所有状态都基于用户的权限，我们只有冒充报告错误的人，才能看到他们看到的内容。

它没有单元测试。如果我修改了一个地方，也没法知道会不会出错，可能要等到一周后，才有用户报告遇到了一个错误。

这个故事的寓意是什么？

我不知道，也许是它告诉我们，现实生活中真的有这样可怕的代码存在。

## 言论

1、

参观日本就像参观2000年代初期：随处可见的 CD 店，百货商店兴旺发达，人们还在使用厚重的笔记本电脑。

-- [《访问日本的感想》](https://alexanderweichart.de/5_Archive/1.-Projects/Notes/Notes-on-Japan)

2、

人工智能背后的实际技术，主要是一小部分巧妙的技巧，使用神经网络有效地对数据进行处理，神经网络本身并不神奇，并且开发过程很好理解，但是除非你有大钱购买硬件，并且使用每个人的私人数据进行训练，否则你的模型就没什么用。

-- [Hacker News 读者](https://news.ycombinator.com/item?id=40359459)

3、

不要将技术博客的写作视为打造“个人品牌”，它肯定对此有所帮助。但是，写作最重要的功能是，它是提升个人知识和批判性思维的一个工具。

-- [《为别人而写，但主要是为自己而写》](https://jack-vanlightly.com/blog/2022/1/25/write-for-others-but-mostly-for-yourself)

4、

今天的创业公司还面临一个资金过剩的风险。许多创业公司资金充足，就过度招聘并迅速扩张，但并没有真正的增长或实际需求。

他们没有安排最好的工程师来创造最好的产品，而是从一开始就忙于招募和处理臃肿的团队和人员扩张的烦恼。

-- [《遵循精益创业的方法》](https://www.june.so/blog/lean-startup-method-2024)

5、

瓶装水的保质期，指的是塑料瓶的保质期，而不是水的保质期。纯净水是不会变质的。

-- [BusinessInsider.com](https://www.businessinsider.com/does-bottled-water-go-bad-yes-but-it-probably-wont-harm-you-2023-3) 

## 往年回顾

[训练材料用完之日](https://www.ruanyifeng.com/blog/2023/05/weekly-issue-253.html)（2023 #253）

[英国的名校签证，伯克利的计算机教育](https://www.ruanyifeng.com/blog/2022/04/weekly-issue-203.html)（2022 #203）

[机器翻译是对译者的侮辱吗？](https://www.ruanyifeng.com/blog/2021/04/weekly-issue-153.html)（2021 #153）

[信息的半衰期](http://www.ruanyifeng.com/blog/2020/04/weekly-issue-103.html)（2020 #103）

（完）


