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

封面图

进入四月以后,印度的新冠肺炎患者激增,全国氧气的库存迅速耗尽。政府不得不用气罐车,向重症地区运送液氧。有的地区没有高等级公路,只能将气罐车装在火车上运过去。(via[3]

本周话题:显卡缺货与异业竞争

最近,我想再配一台电脑,结果发现买不到显卡。加密货币的价格暴涨,导致显卡早就被抢购一空。
家用计算机的显卡挖矿,六个月据说就可以回本,以后就都是利润了。如果多块显卡组成矿机,利润相当可观。所以,显卡都被用来挖矿了,市场已经没有现货了,只能买二手显卡。
幸好,我去年买过一块显卡,还能凑合用。看了一下二手市场的行情,不由感慨地发了一条推特:
"去年,我花2000元买过一块显卡,现在用了一年再卖掉,可以卖到5000元。"
网友在下面回帖,他一年前400元买的显卡,今年2000元卖掉了。就是缺货到这种程度。
我不由感叹,矿工高兴了,DIY 市场却遭殃了。如果你只是一个普通的电脑爱好者,可能根本不关心比特币,对挖矿没有任何兴趣,突然之间,你莫名其妙就受到了波及,想要组装一台理想配置的电脑,用来玩游戏或处理大数据,就这样组不成了,真是飞来横祸。
一个其它领域的、跟你原本不相干的事情,突然就对你产生了重大影响。这在经济学上,叫做“异业竞争”。 某个行业的变化产生了溢出效应,波及到了另一个行业。这样的事情,最近好像越来越多了。
我举几个例子。智能手机的出现,使得电信公司很受伤,因为人们都用聊天软件联系,传统电话和短信的使用量急剧下降。再比如,外卖的兴起,影响了方便面的销售。
本周我还看到一条新闻[4],上海机场的董事长说,海南岛的免税政策对机场影响很大。以前,人们购买免税商品,首先想到的是机场,但是现在不用出国、在海南岛也能购买免税商品,下一步甚至北京上海也要开市内免税商店,这对机场的收入有很大影响。
总之,现在的世界高度关联,异业竞争比以前多得多、快得多。 不仅本行业的变化会影响你,世界上不知哪一个角落发生的事情,也会从天而降影响你。
这就是互联网时代,每个人的生活变得不确定,随时都会被意想不到的方式影响。有些是好的影响,有些是坏的影响,也无从准备或预防。只能尽量壮大自己,接受变化。

Vue3 原理剖析

本周的课程资料是一个前端进阶课程,专门为想提升自己 Vue.js 水平的同学准备的。
大家都知道,Vue.js 是国内使用最广泛的前端框架之一,3.0 版出来以后,各方面都有很大改进,配套工具也在不断完善,目前来看,还处在上升期。新项目的加入,加上老项目的升级,市场份额有进一步上升的趋势。
根据一些最近找工作的同学反馈,面试当中 Vue 相关问题,几乎每次都有,尤其是大厂的面试。大家普遍比较关心,怎么准备 Vue 的面试。
老实说,一些具体的开发问题,跟项目经验相关,除了多做项目,没有太好的准备方法。比较可行的面试准备,还是多投一点时间在 Vue 的原理上面,搞懂 API 想要解决的问题,以及设计思路。打好了基础,不管是哪一类问题,至少不会太失分,也有利于长远发展。
本周的课程就是“开课吧”提供的 《Vue3 原理解析》,由 Vue3 源码贡献者崔效瑞老师主讲,带大家自己实现一个迷你版本的 Vue.js,让你站着 Vue 设计者的角度思考问题,精准找到学习关键点,快速顺畅地理解原理。
课程的直播时间是 周五(4月30日)晚上 19:50。如果你想长假里面,静下心来,学一点东西,这是一个非常合适的学习内容。听完课以后,正好利用假期,自己动手实践一下。
报名的同学还可领取《原理讲解+项目实战:带你高效掌握ES6》资料包,里面不仅包含 ES6 核心新特性的讲解,还有基于 ES6 class 的贪吃蛇游戏实现,通过实例教你如何在实际项目中拆分类,帮你提升面向对象的编程思想!
微信扫描下面二维码,就可以免费报名参加。
完成课程以后,还可以领取另外两份开课吧精心制作的学习资料:《Vue3 & React17 进阶知识地图》和《Vue 面试题高薪问答攻略》。

科技动态

1、火星制氧实验[5]
美国宣布,毅力号火星车成功完成制氧实验,在火星上制造了10克氧气,耗时一个小时,可以供一个宇航员呼吸10分钟。上图为探测车里面的制氧机。这个实验为人类探索火星,铺平了基础。
氧气对于宇宙飞行非常重要,不仅用于呼吸,还用于燃料的助燃。发射一个四名宇航员的火星飞船,需要7吨燃料和25吨氧气。人类要想火星旅行,必须解决氧气供应。火星大气包含95%的二氧化碳,本次实验使用太阳能,对二氧化碳进行电解,从中获得氧气和一氧化碳。
2、美国制造的代价[6]
Purism 是一家美国的 Linux 开源硬件厂商,他们的最新 Linux 手机有两个型号:Librem 5 和 Librem 5 USA。规格完全相同,唯一区别是,前者的主要零件在中国制造,后者完全在美国制造。
如果你喜欢“美国制造”,就要承担更高的价格,猜猜看贵多少?
Librem 5:799 美元,Librem 5 USA:1999美元。
北京 MAD 建筑事务所设计的海口市云洞图书馆4月12日正式开馆,每天接受400人预约入馆。这是海口市规划的16座“海边的驿站”之中第一座完工的。这座一体成型的白色混凝土建筑,被英国《泰晤士报》称为“2021年最期待建成的建筑作品”。
它的南侧是图书阅览室,北侧是公共驿站,提供咖啡厅、卫生间、休息区等服务。设计师的想法是,这是一座位于陆地与海洋之间的建筑,通过它消融海与地之间的边界。
建筑物充满各种大小不一的洞,游客可以通过这些洞看天望海,同时也借此实现自然采光和自然通风。
整个建筑是数字建模,先搭建一个中空的骨架,然后混凝土一体浇灌,局部采用 3D 打印。
4、一句话消息
“新视野号”探测飞船[7](New Horizons)在发射15年之后,今年四月到达了距离太阳50个天文单位的地方(太阳到地球的距离为1个天文单位)。它是第五个飞出太阳系、进入柯伊伯带(kuiper belt)的飞行器。也就是说,以目前的科技,飞出太阳系需要15年。
英国[8]通过一项法律,所有成年人死亡后默认同意捐献自己的器官,除非签署过不愿捐献的声明。
美国国防部[9]选择了三家公司,开始设计核动力推进器,为太空作战提供快速机动的能源。
温州市交通执法大队[10]发现,执法车出动后,总是抓不到违法运载的货车,对方似乎能够精准地避开执法车的巡查线路和时段。检查后发现,车辆被人安装了烟盒大小的 GPS 跟踪器,通过磁铁吸附在车底。
一家创业公司[11]推出了数字画框。挂在墙上,它会自动将精选的艺术品推送到显示屏,定时更新。
Facebook[12] 正在研发一种腕带,可以将运动神经电信号转换为数字信号,从而感知手和手指的位置和活动,实现新型的人机交互。

文章

1、为什么游戏里做一扇门这么难?[13](中文)
很多游戏开发者认为,实现一扇门是最让人痛恨的事情,各种各样的 bug 因此产生。“门不仅要能打开,还要能关上,有时还需要开锁或者被撞开,打开之后还得能来回摇摆。”
2、Z 字形斑马线(中文)
国内多地启用 Z 字形斑马线,让行人过马路的路线从直线变为“Z”字型,目的是减缓行人速度,拉长过马路的时间,让他更注意两边的车况,防止交通事故。这种设计到底有没有用,是有争论的。
3、云巴会在国内流行吗?[14](中文)
4月16日,国内首条“云巴”在重庆璧山正式通车,这是比亚迪公司主导的一个“小运量的高架有轨电车系统”。本文介绍这种交通系统的背景和前景。
4、视频分辨率与码率的关系[15](中文)
视频文件的清晰度主要由码率、分辨率、帧数等指标决定。本文介绍这几个指标的概念,以及它们之间的关系。
5、消失的除法指令[16](中文)
学习汇编的时候,观察到一个现象,C 语言的除法操作,编译得到的汇编代码是一条乘法指令。这是为什么?(@cj1128[17] 投稿)
6、Serverless 数据库比较[18](英文)
这篇文章比较了三个 Serverless 云服务商的数据库服务(DynamoDB、 FaunaDB 和 Upstash),看看它们的性能如何。
7、如何在命令行操作 GitHub Actions?[19](英文)
GitHub 的命令行工具现在支持 GitHub Actions 了,用起来非常方便,这篇是官方的介绍文章。
8、我的复古网站[20](英文)
作者将他的个人网站,做成 WIndows 95 的样子,把个人博客放在上面,很有意思。本文介绍他是怎么做的。
9、从头开始编写 RPC[21](英文)
RPC 指的是远程函数调用,是服务器通信的常见方法。本文介绍 RPC 的概念,然后用 C 语言演示一个简单的例子。

工具

1、MetricsGraphics.js[22]
一个基于 D3 的图表库,用来处理时间序列数据。特点是 API 简洁易用,生成的图表清晰漂亮。
2、ClearURLs[23]
一个浏览器插件,自动删除 URL 里面的访问者追踪参数。
3、regexploit[24]
某些正则表达式有性能漏洞,可能会引发 DDOS 攻击。这个工具可以找出有漏洞的正则表达式,参见教程[25]
4、NPlayer[26]
一个支持弹幕的网页视频播放器。(@woopen[27] 投稿)
5、JS image carver[28]
一个采用接缝裁剪(seam carving)算法的在线工具,可以任意改变图片的高度和宽度,而不会扭曲图像。
它的原理是找出那些对图片主要内容贡献最少的像素,将它们删除,不断重复这个过程,直到达到指定的高度和宽度,详见这篇教程[29]
6、LuckDraw[30]
一个大转盘/ 九宫格的页面抽奖组件,多端适配,有 JS / React / Vue / 小程序的等版本。(@buuing[31] 投稿)
7、GoGoCode[32]
一个 JavaScript 代码的 AST 抽象语法树的处理工具,便于方便地转换代码。(@kuangyanit[33] 投稿)
8、Storyteller[34]
如何写软件教程,是一个令人头痛的问题。Storyteller 是一个在线工具,提供一个教程编辑器,以无代码的方式制作交互式教程。(@netweng[35] 投稿)
9、Varlet[36]
Vue3 的 Material Design 移动页面组件库。(@BeADre[37] 投稿)
10、chore-cli[38]
一个 TypeScript 项目的脚手架工具。(@iwfan[39] 投稿)

资源

1、lofi.cafe[40]
这个网站是一个制作精良的在线电台,播放工作学习时放松精神的背景音乐,可以根据音乐风格切换房间。
2、学习 iOS 开发指南(2021版)[41]
这篇英语长文向初学者介绍如何学习 iOS 开发,大家关心的各种问题都能在里面找到解答,比如应该学习 Object-C 语言还是 Swift 语言。
3、山内溥家族基金会[42]
任天堂第三代传人山内溥有一个家族基金会,基金会官网非常有创意,很有任天堂游戏的感觉,我从没见过这样的网站,值得参观。
4、免费的 Python 书籍[43]
这个仓库收集网上的 Python 免费书籍(英文)。
5、HelloZooKeeper[44]
ZooKeeper 的中文教程,从最基础的安装使用到背后原理和源码,使用有趣诙谐的文字讲解。ZooKeeper 是大型分布式计算的配置服务工具。(@521xueweihan[45] 投稿)

图片

1、石头宠物[46]
1975年,一个美国人加里·达尔(Gary Ross Dahl)在酒吧里,听到了朋友们抱怨养宠物很麻烦。他想到,为什么石头不能作为“宠物”呢?一块石头,不用喂食,不用遛,不用洗澡,也不会死或生病,是完美的宠物。
他很认真地对待这个想法,开始动手设计。石头是来自墨西哥海滩的光滑小卵石,每块仅花费一美分。它们像活宠物一样放在定制的纸板箱中出售,带有稻草和呼吸孔。他还花时间写了一本石头宠物的使用说明书。
石头宠物于1975年圣诞节前正式上市,引发了公众的好奇,销售非常好。但是,圣诞节过后,销量就开始下降,1976年2月价格打折。最终,达尔以每只4美元的价格,售出了超过100万只石头宠物,成为百万富翁。
2、三轴陀飞轮[47]
陀飞轮是豪华手表才有的调速装置,主要用于抵消地心引力对机芯运作造成的误差。三轴陀飞轮则是陀飞轮的最高境界,整个装置沿三个轴同时旋转。
国外网友使用廉价的 3D 打印,制作出简易的三轴陀飞轮模型,目前正在众筹。

文摘

1、代码的马斯洛金字塔[48]
马斯洛金字塔是美国心理学家马斯洛提出的一个心理学模型,认为人类的心理需求从下往上分为5个层次,一旦实现了下层的需求,就会追求上一层的需求。
这五个层次依次是:生理需求、安全需求、社交需求、尊严需求、自我实现。
代码质量也可以用金字塔模型表示,从下往上有五个层次。
(1)第一层:正确(Correct)
代码是否执行预期的工作?是否考虑了边缘情况?是否经过充分测试?是否有可维护性?是否有可接受的性能?
(2)第二层:安全(Secure)
代码是否存在漏洞?数据是否安全存储?个人识别信息(PII)是否得到正确处理?是否对用户的输入进行了全面的验证?
(3)第三层:可读(Readable)
代码是否易于阅读和理解?测试足够简洁吗?变量、函数、类的名称是否适当?使用领域模型是否可以清晰地映射现实世界,以减少认知负担?是否使用一致的编码风格约定?
(4)第四层:优雅(Elegant)
代码是否利用了众所周知的编程模式?能否更简单简洁地实现所需的功能?你会为编写这些代码感到兴奋吗?你为这些代码感到骄傲吗?
(5)第五层:利他主义(Altruist)
别人能否从这些代码学到东西?这些代码是否会激励其他工程师进行改进?它是否会让世界变成一个更好的地方?

言论

1、
我最近禁止了安卓手机的所有动画,手机的零延迟让我震惊,仿佛一瞬间它就变快了。
-- Hacker News 读者[49]
2、
旅行不是为了看到不同的事物,而是为了学会不同地看待事物。
(You don't travel to see different things, you travel to see things differently.)
-- Ben Davenpor[50],风险投资家
3、
在泰国工作的人,都说那是一个很糟糕的地方;在泰国休假的人,都说那个地方好极了。
-- 网友
4、
面向对象编程的哲学思想是,通过对语言建模来适应问题,而不是对问题建模来适应语言。
-- 《C prime plus》教材
5、
入职以后,公司给每位员工发了一台电脑,表面上看是每个人拥有了一台电脑,其实是给每个电脑配了一个人。
--网友[51]

历史上的本周

2020年(第 105 期):线上行业会赢
2019年(第 53 期):DNA 相亲会
2018年(第 2 期):为什么写周刊?

References

[1]
 ruanyf/weekly: 
https://github.com/ruanyf/weekly
[2]
 《谁在招人?》: 
https://github.com/ruanyf/weekly/issues/1709
[3]
 via: 
https://scroll.in/article/992928/how-grave-is-indias-oxygen-emergency-worse-than-the-government-admits
[4]
 新闻: 
https://finance.sina.com.cn/tech/2021-04-23/doc-ikmxzfmk8574665.shtml
[5]
 火星制氧实验: 
https://new.qq.com/rain/a/20210422A02OXP00
[6]
 美国制造的代价: 
https://puri.sm/posts/librem-5-and-librem-5-usa-what-are-the-differences/
[7]
 “新视野号”探测飞船: 
http://pluto.jhuapl.edu/News-Center/News-Article.php?page=20210415
[8]
 英国: 
https://www.organdonation.nhs.uk/get-involved/news/organ-donation-law-change-due-to-come-into-effect-in-england-on-20th-may/
[9]
 美国国防部: 
https://www.c4isrnet.com/battlefield-tech/space/2021/04/13/heres-whos-designing-a-nuclear-powered-space-vehicle-for-darpa/
[10]
 温州市交通执法大队: 
https://www.thepaper.cn/newsDetail_forward_12072623
[11]
 一家创业公司: 
https://www.qonos.ae/
[12]
 Facebook: 
https://arstechnica.com/gadgets/2021/03/facebook-finally-explains-its-mysterious-new-wrist-wearable/
[13]
 为什么游戏里做一扇门这么难?: 
https://www.yystv.cn/p/7800
[14]
 云巴会在国内流行吗?: 
https://finance.sina.com.cn/tech/2021-04-16/doc-ikmxzfmk7228054.shtml
[15]
 视频分辨率与码率的关系: 
https://support.shangzhibo.tv/hc/kb/article/1028655/
[16]
 消失的除法指令: 
https://cjting.me/the-missing-div-instruction-part1/
[17]
 @cj1128: 
https://github.com/ruanyf/weekly/issues/1738
[18]
 Serverless 数据库比较: 
https://news-app-two-omega.vercel.app/
[19]
 如何在命令行操作 GitHub Actions?: 
https://github.blog/2021-04-15-work-with-github-actions-in-your-terminal-with-github-cli/
[20]
 我的复古网站: 
https://ash.ms/2019-10-02/retro-website-launch/
[21]
 从头开始编写 RPC: 
https://alexanderell.is/posts/rpc-from-scratch/
[22]
 MetricsGraphics.js: 
https://github.com/metricsgraphics/metrics-graphics
[23]
 ClearURLs: 
https://github.com/ClearURLs/Addon
[24]
 regexploit: 
https://github.com/doyensec/regexploit
[25]
 教程: 
https://blog.doyensec.com/2021/03/11/regexploit.html
[26]
 NPlayer: 
https://nplayer.js.org/
[27]
 @woopen: 
https://github.com/ruanyf/weekly/issues/1734
[28]
 JS image carver: 
https://trekhleb.dev/js-image-carver/
[29]
 这篇教程: 
https://trekhleb.dev/blog/2021/content-aware-image-resizing-in-javascript/
[30]
 LuckDraw: 
https://100px.net/
[31]
 @buuing: 
https://github.com/ruanyf/weekly/issues/1724
[32]
 GoGoCode: 
https://github.com/thx/gogocode
[33]
 @kuangyanit: 
https://github.com/ruanyf/weekly/issues/1730
[34]
 Storyteller: 
https://storyteller.webzard.io/
[35]
 @netweng: 
https://github.com/ruanyf/weekly/issues/1728
[36]
 Varlet: 
https://github.com/haoziqaq/varlet
[37]
 @BeADre: 
https://github.com/ruanyf/weekly/issues/1727
[38]
 chore-cli: 
https://github.com/iwfan/chore-cli
[39]
 @iwfan: 
https://github.com/ruanyf/weekly/issues/1737
[40]
 lofi.cafe: 
https://lofi.cafe/
[41]
 学习 iOS 开发指南(2021版): 
https://matteomanferdini.com/become-an-ios-developer/
[42]
 山内溥家族基金会: 
https://y-n10.com/
[43]
 免费的 Python 书籍: 
https://github.com/pamoroso/free-python-books
[44]
 HelloZooKeeper: 
https://github.com/HelloGitHub-Team/HelloZooKeeper
[45]
 @521xueweihan: 
https://github.com/ruanyf/weekly/issues/1733
[46]
 石头宠物: 
https://en.wikipedia.org/wiki/Pet_Rock
[47]
 三轴陀飞轮: 
https://www.myminifactory.com/crowdfunding/tourbillon-mechanica-tri-axial-crowdfunding-250
[48]
 代码的马斯洛金字塔: 
http://www.dein.fr/2015-02-18-maslows-pyramid-of-code-review.html
[49]
 Hacker News 读者: 
https://news.ycombinator.com/item?id=26846740
[50]
 Ben Davenpor: 
https://m.facebook.com/HanksWorldWide/photos/pb.160385744474061.-2207520000.1564413746./238546423324659/
[51]
 网友: 
https://dig.chouti.com/link/29787991
继续阅读
阅读原文