科技爱好者周刊#331:你可能是一个 NPC
这里记录每周值得分享的科技内容,周五发布。
本杂志开源[1],欢迎投稿[2]。另有《谁在招人》[3]服务,发布程序员招聘信息。合作请邮件联系[4]([email protected][5])。
封面图
南京城北万象汇商场,与红山动物园合作,架设了一个38米高的长颈鹿。(via[6])
你可能是一个 NPC
最近,美国发生了一起轰动的大案,一家医疗保险公司的 CEO 当街被人击杀[7]。
嫌疑人很快抓到了,是一个26岁的青年,名为路易吉·曼吉奥内(Luigi Mangione)。
媒体纷纷挖掘这个青年的背景,发现他是一个作家[8]的粉丝。
就在几个月前,他向作家打赏200美元,并进行了多次视频通话。
媒体就去采访作家,询问两人在通话中说了什么。
作家详细地回忆了他们的通话内容。其中有一段,我觉得很有意思,分享给大家。
曼吉奥内对作家说,他很喜欢作家的一篇文章《你可能是一个 NPC》[9]。
NPC 指的是电子游戏的“非玩家角色”,比如路人、门卫、警察等等,用来模拟现实环境,由程序控制,一举一动都是设计好的,没有自主意识。
作家的那篇文章提出,人类越来越像机器人,彷佛 NPC 那样,行为逻辑都是预设好的。
曼吉奥内高度认同这个观点。他前不久去日本旅行,认为日本充满了 NPC。他说了一件亲身见闻。
一天早上,他在街上看到一名男子癫痫发作,倒在地上。他跑到最近的警察局求助,警察就跟着他去现场。
路上遇到了红灯,警察立刻就停下来,坚持要等绿灯再过马路,即使那时马路上根本没有汽车。
曼吉奥内很不理解,病人正在发病,神智不清,可能有生命危险,警察却坚持遵守交通规则。救人难道不是更重要的事情吗?
他由此认为,日本人“缺乏自由意志”,规则怎么说就怎么做,不会自主行事,就是活着的 NPC。
他还观察到,日本存在一种“隐蔽族”(hikikomori),他们不出门,一个人整天待在卧室里,用电子游戏、上网、视频来消磨时间。
曼吉奥内认为,这些人也是 NPC,他们失去了对生活的控制,无法参与社会生活,就选择放弃,等于丧失了生活的自主权。
他观察到,这种现象不仅存在于日本,正在向全世界蔓延,世界各地越来越多的人正在成为 NPC。他们要么无法自主的生活,要么无法选择自己的行为,而是根据规则和指令来行事,就像被程序控制一样。
科技公司推动和加剧了这种趋势,互联网使得人们越来越分心,把时间都花在网上肤浅的娱乐,不再集中注意力于自己的生活,把生活都交给程序,无法形成自主的意识和行为。
以上就是曼吉奥内的观点,我认为是很真实的观察。一方面,人工智能使得机器人越来越像人类,另一方面,人类的自主性在消退,越来越像机器人。现实与游戏、人类与机器人,越来越难以区分了。
AI 编程挑战赛,即将报名截止
这几期的周刊一直在介绍,正在举行的全国 AI 编程挑战赛。
它的报名马上就要截止了。
(1)应用赛道的作品提交,到1月5日截止。如果你有好的创意,能用 AI 做出可运行的作品,就可以报名参加。
(2)如果你善于刷题,可以报名参加算法赛道,但不能用 AI 来解算法题。
我是鼓励大家参加。大赛有丰厚奖品,设了20万的奖金池,获奖者还有机会拿到岗位 offer。就算没得奖,也是一个很好的锻炼,能够动手编程、熟悉 AI。
大赛由豆包 MarsCode 和稀土掘金技术社区共同主办。详细介绍和报名方法,请看前两期的周刊[10],或者点击这里[11]。
科技动态
1、观鸟神器[12]
一个美国女子发明了一种观鸟神器,在网上引起了轰动。
她在墨镜上挂了一个托盘,上面洒了鸟食。小鸟就会停在上面,完全没有意识到,就停在她的鼻子前面。
这种观鸟神器,简单又体验独特,怎么以前没人想到。
2、自豪版本规范[13]
一个开发者提出自豪版本规范(pride versioning),对软件版本进行编号。
如果你对新功能感到非常自豪,就发一个大版本(递增第一个版本号),否则就发一个小版本(递增第二个版本号)。
如果你对某个地方感到尴尬和羞耻,就发一个补丁版本进行改正(递增第三个版本号)。
3、能量收集电子贺卡[14]
一位国外的程序员,制作了一张可以收集能量的电子贺卡。
这张贺卡就是信用卡大小,上面有电路,但是不带电池,通过收集周围环境的能量,LED 灯会闪烁。
最简单的方式,就是放在灯光下,它会收集光能。
你也可以用 USB 供电。
它甚至可以放在路由器或微波炉旁边,吸收 WIFI 和微波的能量。
4、糖打印机[15]
你想过用糖来 3D 打印吗?有人就真的做出了一台糖打印机。
它用热风枪,将白砂糖吹塑成型,打印出各种形状。
下面是它打印的一颗钉子。
它可以打印出很复杂的形状。
这些东西都可以食用,因此这种机器在食品行业应该很有用,在夜市可能也会很轰动。
文章
1、我的几何人生[16](中文)
著名华人数学家丘成桐,回顾自己的成长道路。
2、编程十年的感悟[17](中文)
“代码写多了才意识到,程序员的竞争力并不是写代码,也并不是哪门语言或者框架, 其核心竞争力是通过技术解决问题的能力”。(@ramsayleung[18] 投稿)
3、我给博客添加 dark mode[19](中文)
作者介绍他为博客添加 dark mode 的处理方法和注意事项。(@Spike-Leung[20] 投稿)
4、七个最佳的生产力 Docker 镜像[21](英文)
本文介绍七个可以自己用 Docker 镜像架设的生产力服务。
5、不可变 Linux 发行版[22](英文)
越来越多的开发者开始使用不可变的 Linux 发行版(immutable Linux distro),即系统文件在运行期间不可更改。这样会让系统更稳定,也更容易迁移和回滚。
6、macOS 命令行内置的工具程序[23](英文)
本文介绍 macOS 内置的一些命令行工具程序,比如 security、open、pbcopy、pbpaste 等。
工具
1、YunoHost[24]
一款虚拟机软件,内置了常见的云服务,可以一键启用,省去了安装云服务的麻烦,参见介绍文章[25]。
2、MarkItDown[26]
微软官方推出的工具,将各种格式的文件(主要是 Office 文件)转成 Markdown 格式。标题是 GitHub 仓库链接,下面是线上体验[27]。
3、爱幕[28]
在线字幕编辑器,支持音频提取和字幕翻译,免费使用,自己部署需付费。(@zhw2590582[29] 投稿)
4、Beautify Screenshots[30]
截图美化工具。(@cxhello[31] 投稿)
5、单词收藏助手[32]
Chrome 插件 + 微信小程序,在网页上收藏单词,建立自己的词库,然后通过小程序加强记忆。(@yuuk[33] 投稿)
6、Free Open Graph Image Generator[34]
根据模版制作“网页分享图”(open graph)的在线工具。(@javayhu[35] 投稿)
7、Kyanos[36]
一个命令行的网络流量采集和分析工具,具有较强的数据过滤和分析能力。(@hengyoush[37] 投稿)
8、在线 Excel 协同编辑器[38]
一个开源的类 Excel 电子表格网页应用,支持多人协同编辑。(@nusr[39] 投稿)
9、红枫云盘[40](maple-file)
一个多协议云端文件存储的客户端,支持安卓和 macOS,基于 Flutter + Go 开发。(@honmaple[41] 投稿)
10、GitHub Cards[42]
将 GitHub 用户个人数据转换成卡片图。(@iAmCorey[43] 投稿)
AI 相关
1、GCOP[44]
基于 AI 的 Git 提交消息生成和工作流程优化工具。(@Undertone0809[45] 投稿)
2、github-assistant[46]
该网站可以对 GitHub 代码库提问,由 AI 来回答,比如“过去30天谁的提交次数最多”。
3、Liubai[47]
开源的微信机器人,在微信里面同时调用三个 AI 模型,完成各种任务。(@yenche123[48] 投稿)
4、AI OCR[49]
在线免费 AI OCR(图片文字识别)工具,所使用的前端代码和 AI 提示词见这里[50],灵感来自 llama-ocr[51]。(@ringcrl[52] 投稿)
5、Smart Alt Text Generator Generator[53]
上传图片,生成 SEO 友好的 alt 描述,支持多种语言。(@wang1309[54] 投稿)
6、AI 调色盘生成器[55]
该网站可以根据输入的关键词,生成对应的色彩组合。
资源
1、WebSpy.Site[56]
网站流量分析平台,根据域名查询网站流量情况。(@wincatcher[57] 投稿)
2、PNGFree.ai[58]
免费的百万级 PNG 图片库。(@shawnlee000[59] 投稿)
图片
1、无头鸡[60]
1945年,一个美国科罗拉多州的农民杀鸡时,砍掉了一只五个半月大的鸡的大部分头部。
但是没有砍到颈静脉,并且一只耳朵和大部分脑干完好无损。因此,这只鸡虽然没有脑袋了,仍然可以保持平衡并笨拙地行走。
农民发现这只鸡没有死,就决定继续养它,用滴管给它喂食。
后来,这只鸡被巡回展出,门票是25美分,每月为主人带来4,500美元收入。
1947年3月,它死于巡回展出途中。
2、Windows 3.1 时钟[61]
市场上出现了 Windows 3.1 时钟,钟面就是 Windows 3.1 的桌面,看上去很有怀旧感。
注意,上图的钟面不是液晶屏,而是印刷上去的。它是石英钟,使用一节五号电池。
文摘
1、长期软件开发[62]
有些领域的软件会持续运行几十年,比如发电厂、起搏器、飞机、桥梁、重型机械的软件。它们可能几年都不会改动,然后推出一个新的大版本。
如果一个软件的开发周期长达几十年,需要长期维护,那么最好做到下面几点。
(1)尽量减少依赖。
软件的依赖项越多,长期越难以维护。依赖包括开发时依赖和运行时依赖,都是越少越好。
现在,很多软件在运行时会调用云服务,这也不利于长期维护。
(2)完备的测试用例。
测试对于重构、删除/添加功能,会提供极大的帮助。当你中断3年后,重新开始开发,测试也会让你快速了解系统。
(3)减少复杂性。
复杂性是软件开发的头号敌人,会让最好的程序员和团队都铩羽而归。
由于熵增定律和人类行为,除非你有意识地遏制,否则复杂性总是会增加。
因此,你需要养成严格的开发习惯:尽早和频繁地重构,删除不必要的或重复的代码,花时间简化。
(4)编写简单无趣的代码。
代码越简单越好,重点是代码的运行逻辑要显而易见。你永远不会后悔编写了简单的代码。
那些看上去很聪明、很高深的代码,会让后期的调试和理解变得复杂。特别注意那些高性能代码,只有当你正确理解它们时,它们才有效。
另外,那些眼下时髦、被热炒的明星技术,如果没有得到充分验证,也需要规避。
你最好只使用至少有10年历史的可靠技术。有一条规则是,某项技术的寿命与它们当前的年龄成正比,即存在越久的东西越可能继续存在。
(5)日志、遥测和文档
如果软件不是持续更新,开发者的注意力就会转到其他地方,不会立即跟进,所以需要有日志和遥测,能把运行过程记录下来。
文档则可以帮助我们理解几年前、甚至十几年前,编写原始代码时的想法。可能的话,记录所有事物,不仅仅是代码,还有理念、想法和为什么。
(6)团队
团队人员变化是很常见的。在许多地方,在一个团队呆三年,就已经很久了。虽然你可以用良好的文档和出色的测试,来抵消这种人员变化,但这很困难。
软件长寿的最简单办法之一,就是让开发成员长期稳定,保持工作十年。这意味着,你必须给你的程序员提供良好待遇,否则人们会离开。
在某些地方,软件是外包公司或咨询顾问写的,他们将代码丢到你的系统中后离开。对于长期运行的软件,这是非常糟糕的安排。
(7)开源
让你的代码暴露在外界的眼光,是保持代码可靠的好方法。一个有趣的事实是,只有质量良好的代码,人们才愿意对外分享,也就是说,如果不开源,人们会愿意在组织内部接受质量更差的代码。
开源代码有更高的标准、更多的测试,这是让代码不过时的绝佳机制。
言论
1、
银行的 API 特别难用,设计得也很奇怪。我在为银行工作时,发现了原因。
API 不是银行通信的方式,文件才是。银行执行的指令,不是通过我们习惯的 API 传送,而是通过文件接收。
-- 《为什么软件工程师与银行整合如此痛苦?》[63]
2、
美国有很多问题,绝非理想的社会,但是第三世界国家的很多人,尤其是低收入人群,尽管对美国的真实情况一无所知,依然非常向往。
在他们心目中,美国有财富、空间、自由、人性化管理等等。这不是真实的美国,而是美国在他们心目中的投影,他们向往的其实是自己想象中的生活方式。
这是美国的一个很大的优势,尽管自身的诸多问题,依然能够对其他国家的人民产生吸引力。
-- 《美国比欧洲好吗?》[64]
3、
产品经理的职责就是三件事:(1)了解用户需求;(2)提出解决方案;(3)安排任务执行。
-- 《产品经理的 AI》[65]
4、
一个生物学家说过:“每个细菌的梦想都是变成两个。” 这是生活的基本真理:你经历的一切只是使自己更加重要的一种手段。
-- Sean Carroll[66],进化生物学家
5、
我喜欢科学的一点是,无论你喜不喜欢,它都会让你相信。
-- 肖恩·卡罗尔[67],物理学家
往年回顾
YouTube 有多少个视频?(2023 #284)
AI 聊天有多强?(2022 #234)
政府的存储需求有多大?(2021 #184)
未来的游戏业比现在大100倍(2020 #134)
(完)
References
[1] 开源: https://github.com/ruanyf/weekly[2] 投稿: https://github.com/ruanyf/weekly/issues[3] 《谁在招人》: https://github.com/ruanyf/weekly/issues/5610[4] 邮件联系: mailto:[email protected][5] [email protected]: mailto:[email protected][6] via: https://k.sina.cn/article_2645833223_p9db4360702701st94.html[7] 被人击杀: https://finance.sina.com.cn/stock/usstock/c/2024-12-11/doc-inczawih7483083.shtml[8] 一个作家: https://www.gurwinder.blog/p/the-riddle-of-luigi-mangione[9] 《你可能是一个 NPC》: https://www.gurwinder.blog/p/why-you-are-probably-an-npc[10] 周刊: https://www.ruanyifeng.com/blog/2024/12/weekly-issue-329.html[11] 点击这里: http://zjsms.com/iUNhdBEk/[12] 观鸟神器: https://www.newsweek.com/woman-creates-wearable-contraption-watch-birds-close-1998391[13] 自豪版本规范: https://mastodon.online/@nikitonsky/113691789641950263[14] 能量收集电子贺卡: https://www.keacher.com/xmas24/[15] 糖打印机: https://candyfab.org[16] 我的几何人生: http://paper.people.com.cn/rmrb/pc/content/202412/21/content_30047414.html[17] 编程十年的感悟: https://ramsayleung.github.io/zh/post/2024/编程十年的感悟/[18] @ramsayleung: https://github.com/ruanyf/weekly/issues/5765[19] 我给博客添加 dark mode: https://taxodium.ink/setup-blog-color-scheme.html[20] @Spike-Leung: https://github.com/ruanyf/weekly/issues/5766[21] 七个最佳的生产力 Docker 镜像: https://www.xda-developers.com/best-docker-containers-productivity/[22] 不可变 Linux 发行版: https://linuxblog.io/immutable-linux-distros-are-they-right-for-you-take-the-test/[23] macOS 命令行内置的工具程序: https://weiyen.net/articles/useful-macos-cmd-line-utilities[24] YunoHost: https://yunohost.org[25] 介绍文章: https://www.xda-developers.com/yunohost-guide/[26] MarkItDown: https://github.com/microsoft/markitdown[27] 线上体验: https://markitdown.pro[28] 爱幕: https://aimu.app[29] @zhw2590582: https://github.com/ruanyf/weekly/issues/5759[30] Beautify Screenshots: https://postspark.app[31] @cxhello: https://github.com/ruanyf/weekly/issues/5752[32] 单词收藏助手: https://chromewebstore.google.com/detail/单词收藏助手-划词翻译-收藏单词/hlchmmedadpbeefeikleobfgjdieclho[33] @yuuk: https://github.com/ruanyf/weekly/issues/5744[34] Free Open Graph Image Generator: https://og.indiehub.best[35] @javayhu: https://github.com/ruanyf/weekly/issues/5771[36] Kyanos: https://github.com/hengyoush/kyanos/blob/main/README_CN.md[37] @hengyoush: https://github.com/ruanyf/weekly/issues/5773[38] 在线 Excel 协同编辑器: https://github.com/nusr/excel[39] @nusr: https://github.com/ruanyf/weekly/issues/5775[40] 红枫云盘: https://github.com/honmaple/maple-file[41] @honmaple: https://github.com/ruanyf/weekly/issues/5781[42] GitHub Cards: https://github.cards[43] @iAmCorey: https://github.com/ruanyf/weekly/issues/5750[44] GCOP: https://github.com/Undertone0809/gcop[45] @Undertone0809: https://github.com/ruanyf/weekly/issues/5754[46] github-assistant: https://github-assistant.com[47] Liubai: https://github.com/yenche123/liubai[48] @yenche123: https://github.com/ruanyf/weekly/issues/5761[49] AI OCR: https://functions-ocr.edgeone.app[50] 这里: https://github.com/TencentEdgeOne/pages-templates/blob/main/examples/functions-ocr/functions/ocr/index.js[51] llama-ocr: https://github.com/Nutlope/llama-ocr[52] @ringcrl: https://github.com/ruanyf/weekly/issues/5769[53] Smart Alt Text Generator Generator: https://ai-alttext.com/[54] @wang1309: https://github.com/ruanyf/weekly/issues/5762[55] AI 调色盘生成器: https://colorify.rocks[56] WebSpy.Site: https://webspy.site[57] @wincatcher: https://github.com/ruanyf/weekly/issues/5757[58] PNGFree.ai: https://pngfree.ai[59] @shawnlee000: https://github.com/ruanyf/weekly/issues/5770[60] 无头鸡: https://en.wikipedia.org/wiki/Mike_the_Headless_Chicken[61] Windows 3.1 时钟: https://rmcretro.store/products/windows-3-1-style-clock[62] 长期软件开发: https://berthub.eu/articles/posts/on-long-term-software-development/[63] 《为什么软件工程师与银行整合如此痛苦?》: https://blog.svapnil.com/p/where-bank-apis-fall-short[64] 《美国比欧洲好吗?》: https://walkingtheworld.substack.com/p/us-is-better-than-europe[65] 《产品经理的 AI》: https://productme.org/posts/ai-for-product-managers[66] Sean Carroll: https://nautil.us/the-sean-carrolls-explain-the-universe-1171296/[67] 肖恩·卡罗尔: https://nautil.us/the-sean-carrolls-explain-the-universe-1171296/