这里记录每周值得分享的科技内容,周五发布。
本杂志开源(GitHub: ruanyf/weekly[1]),欢迎提交 issue,投稿或推荐科技内容。
周刊讨论区的帖子《谁在招人?》[2],提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。

封面图

厦门市山海步道长达23公里,通过高架道路,将市内多个公园串联起来。(via[3]

本周话题:当音乐还是稀缺的时候

上周,磁带的发明者、飞利浦公司的荷兰工程师 Lou Ottens 去世[4]了。
这让我想起了往事。这里的年轻读者,可能从没有听过磁带,但是20多年前,它是我们接触流行音乐的唯一渠道。
那时,电台的音乐频道会播歌,要想反复听,就必须录音,或者购买歌手的专辑。我记得,最早一盒是7元,后来涨到了10元。对于学生是很贵的东西,买一盒要下很久的决心,买来以后会反复听几百遍。
现在完全不一样了,一个新专辑在网上发布,很少有人连着听几百遍吧,不知名歌手的专辑可能根本没人听。因为音乐实在太多了,随便一个流媒体网站,都是上百万的曲库,大家已经不会在一张专辑上花太多的时间了。
音乐家应该会怀念磁带的年代。那时,生活中缺乏音乐,人们才会那么投入地去听,歌手也会投入地创作。那时的歌曲真的会影响人生,甚至影响社会。
美国歌手鲍勃·迪伦因为他的歌词,得到诺贝尔文学奖。“一个人要经历多少旅途,才能长大 / 一只鸽子要飞过多少海洋,才能看到沙滩 / 一门大炮要发射多少次,才有和平 / 我的朋友啊,答案就在风中飘荡”,成了一个时代的标志。要是他生在现在,到处是快餐文化,这种歌即使写出来,也不会有太大反响,最多就是在社交媒体上转发一阵子。
音乐的黄金年代,其实是它稀缺的年代。 现在的音乐就像流水线上的产品,丰富到大家都不在乎了。歌手出一张专辑,跟发一条朋友圈差不多。
如果看得远一点,真正出大师的年代,是音乐更稀缺的时候。巴赫、贝多芬和莫扎特的年代,根本没有录音技术,想听音乐必须去现场。但是,偏偏那个年代出现了最伟大的音乐家,后世的技术提升了,却没人赶得上他们,这是为什么?
我猜想,原因可能跟稀缺有关系。稀缺意味着竞争少,所有问题都没有解决,你可以探索各种可能性和解决方案,容易出大师,影响后世。顺便说一下,也许有人会问,为什么更早以前没有出现著名音乐家?因为欧洲人在17世纪才掌握了成熟的炼钢技术,可以制作钢丝琴弦,能够确定准确的音高了。
稀缺年代不仅诞生大师,也会诞生大公司。 现在的科技大厂,都是新技术的早期诞生的。PC 的稀缺诞生了微软和苹果,互联网的稀缺诞生了 BAT,手机 App 的稀缺诞生了美团和字节跳动。等到不稀缺的时候,再想变成巨头就难了。
这告诉我们,如果你真想做一番大事,就应该投入那些刚刚开始发展、供给还很稀缺的领域。否则,想要成功就好像在互联网年代当一个歌手。

React 源码剖析

React 框架是2013年发布的,至今已经七年了。从那时起,它就一直是全世界最流行、最多人使用的前端框架。
很多同学都有疑问: React 学起来并不简单,为什么会这么流行?
最主要的原因可能是,它有很多前所未有的重大创新,一发布就引起轰动,引领了业界的潮流。学会了 React,就等于多了一种思维,而且它的原理非常清晰,对于大项目的组织开发非常有利。
(图片:2013年 React 发布现场。)
但是不得不说,React 发展到今天,变得越来越抽象,想要掌握它的 API,难度早就今非昔比。有些地方可能光看示例,都不一定能明白,必须要查看源码,才能彻底搞懂。
本周介绍的课程,就是一门 《React 源码剖析专题课》。它选择了国内开发者的几个常见难点,讲解它们的源码,从根源上解决疑惑,提升你的 React 开发水平。
讲课内容适合有一定基础的前端工程师,最好已经学过一遍 React,或者开发过项目,可以听听看。
该课程由腾讯课堂“双认证”机构——京程一灯[5]提供,原价98元,周刊读者只需 0.02元的报名费。微信扫描下方二维码,加入课程群,即可报名。
前50位报名的同学,还会再送价值 98元 的大厂面试经验专题课,帮助大家应对前端面试。

科技动态

1、北海航线[6]
去年,一艘俄罗斯油轮从中国出发,跟在核动力破冰船后面,进入北冰洋航行,2月19日抵达偏远的北极码头萨贝塔(Sabetta)。这是历史上首次在2月份穿越北极。
这条北海航线以前只能在夏季通航,现在有望全年通航,实现另一条太平洋到大西洋之间的稳定航线,将亚洲到欧洲的海运时间缩短一半。它产生巨大经济利益的同时,也反映了北极地区正在加速变暖,越来越多的人类活动将可能使得北极生态发生恶化。
2、太阳能睡眠舱[7]
由于大量接收难民,德国很多城市都有无家可归的流浪者,冬季的严寒使得他们的生存成了问题。乌尔姆市的志愿者制造了太阳能睡眠舱,解决流浪者的夜间避寒问题。
睡眠舱具有很好的隔热性,并且配备了太阳能电池板,用以提升舱内温度。设计人员说,这种睡眠舱只能供紧急状况使用,不能当作永久住房,流浪者还是应该优先考虑室内的庇护所。
3、氢化镁燃料[8]
氢气是一种环保新能源,但是很难储存,因为它太轻了容易逃逸,而且难以压缩体积,储存和运输的成本都很大。德国科学家研发了固态的氢化镁糊剂,尝试解决这个问题。
氢化镁在常温下是一种糊剂,温度上升到250°C才会分解,所以即使车辆在烈日下暴晒,也仍然安全。使用时加入自来水,水会与氢化镁发生了剧烈的放热反应,从而释放氢气。
它的优点是能量密度是锂电池的十倍,也就是说,同样能量的锂电池体积是它的十倍。而且添加燃料非常简单,只要用新的燃料盒替换原来的即可。下图就是氢化镁发电机,右下角的白色盒子就是燃料盒。
4、可以当显示器的衣服[9]
《Nature》杂志刊载了复旦大学高分子系的一项成果,可以在纺织品上动态显示不同的色彩、图案。也就是说,每件衣服都相当于一块显示屏。
这种织物不仅可以充当显示器,而且可以多次清洗、折叠,有很大的实用价值。它的原理是将光活性纤维和导电纤维编织在一起, 形成发光单元,然后使用电路控制。织物里面还集成了键盘和电源,可以与手机通信。
5、一句话消息
一个英国人[10]最近拍到了清晰的海市蜃楼照片,一艘船悬浮在海面的空气中。
《华尔街日报》[11]说,Telegram 的资金快用完了,下个月即将到期的债务就有7亿美元。一直很好奇,Telegram 的商业模式是什么?现在这个样子,放开让大家使用,没有会员和广告收入,明显不可持续啊。
在线会议软件 Webex[12] 发布了实时会议翻译功能,支持100多种语言,可以让不同国家的人使用不一样的语言开会。
欧盟和英国[13]即将出台《维修权法》,要求厂商必须让自己的产品变得更容易维修,从而延长产品寿命,减少电子垃圾。很多评论认为,这部法律针对的是苹果公司。

文章

1、城市路线牌的设计[14](中文)
本文讨论了路线牌的设计问题。
2、沙发过弯问题[15](英文)
1966年,一个数学家提出一个问题,在一个直角走廊里面,能够通过的沙发最大可以有多大?
3、我是如何感染寄生虫的[16](中文)
作者详细记录了因为使用生鱼肉而感染寄生虫的过程,以及随后的检测和治疗,有大量照片。
4、浏览器是如何校验证书的?[17](中文)
本文介绍了浏览器怎么处理 HTTPS 的证书,它的校验机制是什么,内容较为通俗全面。(@cj1128[18] 投稿)
5、使用 FFmpeg 将短视频转为 GIF 和 WebP 动画图片[19](英文)
在某些场合,动画图片的兼容性要好于视频。本文是一个教程,介绍如何使用 FFmpeg 将视频转成动画图片。
6、为什么 Java 后端程序员不愿意改用 Kotlin?[20](英文)
作者所在的团队从 Java 跳船到了 Kotlin。但是,大部分 Java 后端团队不愿意这样做,作者讨论了原因。
7、ECMAScript 2021 的新语法[21](英文)
今年6月份即将发布的 ECMAScript 2021 标准,本文介绍里面新增的语法点。
8、为什么应该使用 ISO 8601 日期格式[22](英文)
世界上有各种各样的日期格式,作者认为大家应该统一使用 ISO 8601 格式,即yyyy-mm-dd hh:mm:ss

工具

1、LinkDOM[23]
JSDOM 的一个替代品,使用 JavaScript 解析 HTML 字符串,返回一个 DOM 对象,在上面实现了 DOM 接口。它比 JSDOM 体积更小、速度更快、内存占用更少。
2、SVG Waves[24]
一个在线工具,可以生成 SVG 的波浪图片,各种细节都可以定制。
3、NodeGui[25]
一个类似 Electron 的跨平台桌面应用开发框架,底层技术是 Node.js + Qt5。
4、ffmpeg-python[26]
FFmpeg 的 Python 包装库,将复杂的命令行参数转成易用的 API。
5、SVG 俄罗斯方块[27]
在一个 SVG 文件里面,实现俄罗斯方块小游戏。原理是 SVG 可以内嵌<script>标签。
6、ghostwriter[28]
一个 Markdown 桌面编辑器,支持 Windows 和 Linux。设计思想是保持强大功能的同时,对写作产生最小干扰,提供全屏的简洁模式。
7、Image Renamer[29]
一个使用 EXIF 信息的图片文件批量改名工具,支持 MacOS 和 Windows。(@Arman19941113[30] 投稿)
8、Github Star Count[31]
一个 Chrome 浏览器插件,在网页的 GitHub 仓库链接后面,插入该仓库的 Star 数目。(@chinazhangchao[32] 投稿)
9、Issues Translate Action[33]
一个 GitHub Actions 脚本,定时运行脚本机器人,将非英语的 Issue 自动翻译成英语。(@tomsun28[34] 投稿)

资源

1、低地轨道可视化[35]
这个可视化作品,可以让大家感受一下地球低轨道太空的实际状态,看看有多少太空垃圾。
2、奇怪的词源[36]
这个网站收集各种 IT 单词的来源。
3、Web Browser Engineering[37]
一本正在写作中的开源书籍,介绍如何使用1000行 Python 代码,实现一个简单的网页浏览器。
4、DOS Zone[38]
DOS 游戏仓库,收集的所有 DOS 游戏都可以在浏览器里玩。
5、通过 VS Code 学习 Vim[39]
免费的英文电子书,通过 VS Code 的 Vim 插件,教你如何使用 Vim。

图片

1、Windows XP 的壁纸山坡[40]
Windows XP 的默认壁纸,大概是世界上观看次数最多的照片之一。那是一座真实的小山坡,位于加利福尼亚州索诺玛市12号高速公路旁,当年是一片草地,现在被一排排葡萄架覆盖着。
现年79岁的摄影师查尔斯·奥雷尔(Charles O'Rear)那时经常在高速公路上路过这座小山坡。他是《洛杉矶时报》的特约摄影师,并有25年为《国家地理》杂志拍摄的经历。
1996年一个星期五的下午,他将车停在路边,为田园诗般的风光拍了一张照片。然后,他将这张照片卖给一家图片社,微软发现了这张照片,永久买断后(具体金额未公开,据说超过6位数美元),然后将其用作 Windows XP 的默认桌面壁纸。
全世界的用户非常喜欢这张壁纸,它出现在各种场合。人们从未意识到这是一个真实的就在湾区的山坡,而是猜测它是计算机生成的图形,或者是在欧洲拍摄的。
可惜的是,仅仅在照片拍摄数年后,这座绿色小山丘变成了葡萄园,已经无法复现当初的样子了。
如果你想知道这座小山的确切位置,可以在 Google Map 输入坐标“38.249069, -122.410126”。

文摘

1、珠穆朗玛峰的高度[41]
2015年4月25日,尼泊尔发生了8.1级大地震,造成近万人死亡。
地震之后,许多科学家推测珠穆朗玛峰可能会变矮。过去曾多次参与测量珠穆朗玛峰的印度很快提出,希望与尼泊尔合作,重新测量珠穆朗玛峰的高度。
尼泊尔政府拒绝了,表示将独立测量珠穆朗玛峰。历史上,尼泊尔人从未独立对其进行过测量,都是由外国测量队伍完成。
政府指定36岁的测量工程师乔塔姆(Khim Lal Gautam)带领一个小组,完成此次任务。乔塔姆本人就是在喜马拉雅山区出生并长大。
他们需要爬到珠穆朗玛峰顶,放置一个 GPS 信号接收器和天线。在此之前,需要先搜集海平面数据,然后从孟加拉湾(Bay of Bengal)开始逐步测量,之字形地向北推进,把沉重的装备从这个山头扛到那个山头,直到那最高峰出现在视线中为止,确定了大本营周围的大地水准面细节,才能算出高度。
2019年3月22日,天气预报晴。当天有许多登山队,预计将有223名登山者登上珠穆朗玛峰。由于携带的设备较多,为了避免堵塞道路,乔塔姆和一个同事,以及一个向导,不得不在凌晨3点开始向顶峰攀登。另外80人的队伍在大本营等着接收他们的信号。
珠穆朗玛峰的峰顶很小,只能站六个人。大多数登山者登顶以后,拍几张照片就下撤了,一般只会待几分钟。因为下山比上山更危险,必须留出足够的时间。但是,乔塔姆必须在峰顶调试设备,部署 GPS 接收器,以及部署用来测量积雪厚度的透地雷达,并要确保能够接通卫星信号。他最终在零下43度的珠穆朗玛峰顶,待了1小时45分钟。
当他开始下山,下降到8,200米后,乔塔姆(Gautam)筋疲力尽,几乎走不动了。他已经连续23个小时没有进食,携带的氧气也耗尽了。有一阵子,他失去了知觉,一位从山顶下来的美国登山者踢了他一脚,确认他是否还活着,他才醒过来,慢慢继续往下爬。他后来说,如果不是那个人把他踢醒,他会在山上丧生。
稍后,乔塔姆回到第二营地时,直升机将他们接走了。
2019年10月,中国宣布与尼泊尔合作,共同确定珠穆朗玛峰的高度。
2020年5月27日,中国测量队从北坡登上珠穆朗玛峰,放置了卫星测量设备。
2020年12月8日,中国和尼泊尔政府共同宣布珠穆朗玛峰的新高度:8848.86米,比以前宣布的高度略高。

言论

1、
有些计算机语言,运算可能会返回空值(null),这是一个设计错误,因为会中断类型系统,你将无法依靠编译器来检查代码的有效性。
任何可能为 null 的值都是等待爆炸的炸弹。我们必须依靠运行时手动检查来确保所处理的值不为 null。即使是静态类型语言,null 也剥夺了类型系统的许多好处。
-- 《可变状态是新的 Goto》[42]
2、
项目做完了,员工都闲着,老板会让这些人立即投入到下一个项目中。毕竟每天都在烧钱,是不可能等主创人员想清楚再开工的。
反过来,这些人力也会给项目负责人带来压力,必须尽快做决策,以免让员工闲着没事干。这种情况下,能做出多少正确的决策?
-- 《独立游戏开发是一种什么样的体验?》[43]
3、
互联网使得报纸的销量再也回不去了。以《纽约时报》为代表的一些报纸,开始尝试网上付费订阅,但是免费的新闻到处都是,读者为什么要付费看新闻呢?
《纽约时报》的办法就是,报纸不仅仅提供新闻,实际上是提供信条和观点,卖给志趣相投的人。
-- 《后新闻时代的报纸》[44]
4、
各种聊天软件(Signal、Telegram、WhatsApp 等)都有相同的问题:它们都是有围墙的花园,用户只能跟安装了同样软件的人交流。这就像给不同域的人发送电子邮件,都需要单独的邮件客户端一样,比如Gmail 用户只能与 Gmail 用户通信。
-- 《聊天软件共同的问题》[45]
5、
大约10年前,一群运维工程师对开发工程师有很大意见,觉得开发工程师不关心自己的代码是否能够真正有效运行,交付后就不管了。同时,运维工程师还觉得遭受管理层的虐待,管理层要求运维团队全天候待命,但几乎没有提供内部的支持和认可。
这些工程师引发了一场称为 DevOps 的革命,即开发工程师和运维工程师需要更加紧密地合作,以支持通过 Internet 运行复杂软件这一日益复杂的任务。
-- 《运维工程师的口述历史》[46]
6、
你能想象吗,智能手机问世只有不到5000天。与人类历史相比,5000天实在太过于短暂。然而这短短的5000天,我们的生活已经发生了如此惊人的变化。
-- 凯文·凯利[47]

历史上的本周

2020年(第 99 期):疫情导致的研究生扩招
2019年(第 47 期):吃播算不算正式工作?

References

[1]
 ruanyf/weekly: 
https://github.com/ruanyf/weekly
[2]
 《谁在招人?》: 
https://github.com/ruanyf/weekly/issues/1652
[3]
 via: 
https://new.qq.com/omn/20191229/20191229A0LH8J00.html
[4]
 去世: 
https://www.npr.org/2021/03/10/975598869/lou-ottens-inventor-of-the-cassette-tape-has-died
[5]
 京程一灯: 
https://www.yidengxuetang.com/
[6]
 北海航线: 
https://www.jiemian.com/article/5718015.html
[7]
 太阳能睡眠舱: 
https://www.distractify.com/p/ulmer-nest-homeless-sleeping-pods
[8]
 氢化镁燃料: 
https://www.inceptivemind.com/powerpaste-high-density-safe-easily-transportable-hydrogen-energy-fuel/17468/
[9]
 可以当显示器的衣服: 
https://www.jiqizhixin.com/articles/2021-03-11-4
[10]
 一个英国人: 
https://www.bbc.com/news/uk-england-cornwall-56286719
[11]
 《华尔街日报》: 
https://www.wsj.com/articles/telegram-app-is-booming-but-needs-advertisersand-700-million-soon-11615806001
[12]
 在线会议软件 Webex: 
https://business-review.eu/tech/cisco-webex-breaks-through-language-barriers-and-launches-real-time-translation-217869
[13]
 欧盟和英国: 
https://www.bbc.com/news/business-56340077
[14]
 城市路线牌的设计: 
http://www.disansheng.com/index/details/2073
[15]
 沙发过弯问题: 
https://www.math.ucdavis.edu/~romik/movingsofa/
[16]
 我是如何感染寄生虫的: 
https://www.douban.com/note/797086502/
[17]
 浏览器是如何校验证书的?: 
https://cjting.me/2021/03/02/how-to-validate-tls-certificate/
[18]
 @cj1128: 
https://github.com/ruanyf/weekly/issues/1672
[19]
 使用 FFmpeg 将短视频转为 GIF 和 WebP 动画图片: 
https://mattj.io/posts/2021-02-27-create-animated-gif-and-webp-from-videos-using-ffmpeg/
[20]
 为什么 Java 后端程序员不愿意改用 Kotlin?: 
https://medium.com/google-developer-experts/why-are-java-server-side-developers-not-adopting-kotlin-8eb53e06ee99
[21]
 ECMAScript 2021 的新语法: 
https://2ality.com/2020/09/ecmascript-2021.html
[22]
 为什么应该使用 ISO 8601 日期格式: 
https://kirby.kevinson.org/blog/iso-8601-the-better-date-format/
[23]
 LinkDOM: 
https://github.com/WebReflection/linkedom
[24]
 SVG Waves: 
https://www.softr.io/tools/svg-wave-generator
[25]
 NodeGui: 
https://github.com/nodegui/nodegui
[26]
 ffmpeg-python: 
https://github.com/kkroening/ffmpeg-python
[27]
 SVG 俄罗斯方块: 
https://www.xul.fr/svgtetris.svg
[28]
 ghostwriter: 
https://github.com/wereturtle/ghostwriter
[29]
 Image Renamer: 
https://github.com/Arman19941113/image-renamer
[30]
 @Arman19941113: 
https://github.com/ruanyf/weekly/issues/1674
[31]
 Github Star Count: 
https://chrome.google.com/webstore/detail/github-star-count/jahogeehepfohgakggfeeimokcgnmdid
[32]
 @chinazhangchao: 
https://github.com/ruanyf/weekly/issues/1675
[33]
 Issues Translate Action: 
https://github.com/tomsun28/issues-translate-action
[34]
 @tomsun28: 
https://github.com/ruanyf/weekly/issues/1678
[35]
 低地轨道可视化: 
https://platform.leolabs.space/visualization
[36]
 奇怪的词源: 
https://www.thestrangeroots.com/posts/
[37]
 Web Browser Engineering: 
https://browser.engineering/index.html
[38]
 DOS Zone: 
https://talks.dos.zone/t/collections/44653
[39]
 通过 VS Code 学习 Vim: 
https://www.barbarianmeetscoding.com/boost-your-coding-fu-with-vscode-and-vim/table-of-contents/
[40]
 Windows XP 的壁纸山坡: 
https://www.sfgate.com/travel/article/Windows-XP-Bliss-Hill-Sonoma-Charles-O-Rear-15976588.php
[41]
 珠穆朗玛峰的高度: 
https://www.recordnepal.com/wire/features/nepali-surveyors-arduous-journey-to-get-to-8848-86/
[42]
 《可变状态是新的 Goto》: 
https://web.archive.org/web/20210224005240/https://medium.com/better-programming/goto-destroys-lives-7636dd9201dd
[43]
 《独立游戏开发是一种什么样的体验?》: 
https://www.yystv.cn/p/7626
[44]
 《后新闻时代的报纸》: 
https://www.city-journal.org/journalism-advocacy-over-reporting
[45]
 《聊天软件共同的问题》: 
https://stuker.com/2021/whatsapp-and-most-alternatives-share-the-same-problem/
[46]
 《运维工程师的口述历史》: 
https://www.protocol.com/enterprise/oral-history-hugops
[47]
 凯文·凯利: 
https://3g.163.com/dy/article/G09O4IN10531G0IB.html
继续阅读
阅读原文