查看原文
其他

科技爱好者周刊:第 97 期

阮一峰 阮一峰的网络日志 2024-03-31

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

本杂志开源(GitHub: ruanyf/weekly[1]),欢迎提交 issue,投稿或推荐你的项目。

周刊讨论区的帖子《谁在招人?》[2],提供大量就业信息,欢迎访问或发布工作/实习岗位。

封面图:美国缅因州的河流中,自然形成了一个大冰盘,直径90米。(出处[3]

刊首语

上海现在有很多付费自习室,提供一个安静的学习环境,有的收费要超过20元/小时。生意应该很不错,否则不会开这么多家。

网上有一个视频[4],采访那些顾客,为什么来自习?

答案都是一样的:为了考试。各种各种的考试:研究生入学、公务员、会计上岗证、司法考试、CFA、注册会计师……

受访者说,来到收费自习室,可以保证全心备考,而且看到别人那么努力,也能激励自己。

我不怀疑他们的学习精神,也相信自习室肯定有一定的效果。但是更赞同视频下面的一条留言。

“我真觉得,这些人,其实挺迷茫的……听上去感觉好像一个个都挺有上进心的,但是其实,没几个人真的知道自己要干嘛……”

我也是这个感觉,那么多年轻人参加各种各样的考试,忙忙碌碌,只是为了掩盖人生找不到目标。

如果你真的知道自己想要什么,你就不会花钱找一个地方,只为了坐下来背书。许多人对自己应该做什么,毫无想法,迷茫困惑,不知道怎么才能改变现状,但是又觉得必须做一些事,所以才选择参加考试,然后安慰自己,我没有浪费时间。

这样是不行的, 考试根本不是出路。如果你不知道人生怎么办,就算考过了,你依然不知道。 很多证书对于求职根本没用,在企业的眼里,资历是靠经历和项目证明的,不是靠证书。退一步说,如果某张证书确实有用,也会因为成千上万的人去考,而很快贬值。

我的建议就是,不要去参加考试,而要努力寻找那些你有兴趣去做、并且能够为此获得收入的事情。

免费前端视频

随着企业陆续复工,招聘市场逐渐恢复正常。但是,这一段时间的招聘岗位还是比以前要少很多,往年三四月的面试旺季已经往后延迟。

如果你的前端开发基础还不够扎实,现在正好可以利用起来,相当于有一个特别长的准备期,来准备一下面试的内容。

应对面试需要两大要点, 一是技术栈的熟练掌握,另一个就是了解面试的相关技巧。吃透了这两点,等疫情完全结束,就有机会拿到好的 offer!

本期周刊为大家提供一批免费的视频资料,内容分别是大牛的面试技巧分享和 Vue 这个前端常用框架的讲解。以下视频资料均由 开课吧 独家提供。

视频一:《一小时带走前端大牛复盘的求职策略》 :大厂面试章法(简历、目标公司、如何描述做过的项目),面试技巧的分享,面试题的详解等。

视频二: 《Vue3 响应式原理剖析》:Vue3 响应式初体验、Vue2 & Vue3 响应式原理对比、Vue3 响应式实现、源码分析等。

视频三: 《Vue 源码剖析之整体流程》:Vue 源码调试环境搭建、入口文件剖析、Vue 初始化流程分析、Vue 源码学习整体流程总结等等。

感兴趣的读者,长按下方二维码两次,现在就能免费领取这三个视频教程。温馨提示:资料数量有限,仅提供259份。

扫二维码,成功添加小助理,即可领取面试礼包。

资讯

1、算错小数点[5]

西班牙造船厂由于算错了一个小数点,导致制造的潜艇超重了70吨(设计重量2200吨)。西班牙海军非常担心,如果它出海将无法浮出水面。

目前,补救方案有两种,一种是将潜艇的船体长度延长大约5至6米,以增加浮力。另一种是不得不减少潜艇的重量70吨,但是这很可能影响战斗系统或推进系统等关键功能。

2、洞螈[6]

过去八年,欧洲科学家在波斯尼亚和黑塞哥维那东部的山洞里面,发现了大量的洞螈,大概有几十条。这种动物长约20厘米~30厘米,长得像迷你的龙,是两栖类动物,只分布在欧洲中部山区漆黑无光的山洞内部。

由于长期不见光,它的眼睛已经退化了,被皮肤覆盖了,是一种没有眼睛的动物,没有视觉,只靠敏锐的嗅觉、水下听觉、以及对周围运动的感知来弥补视觉的丧失。

科学家发现,这种动物的活动范围非常有限,几年时间中,只移动了不到10米。由于长期不动,它们的代谢极低,寿命长达一个世纪,每12年才繁殖一次。

3、带有脸部信息的口罩[7]

疫情期间,口罩是必备物品。随之而来的一个问题是,苹果手机的 Face ID 无法识别出戴口罩的人脸,必须脱下口罩,手机才能开机。

国外的一个创业者,因此发明了一款带有面部信息的口罩。他的思路是,先提取用户被口罩遮挡部分的面部信息,然后印制到口罩外侧,戴上后即拼凑成完整的脸部。据他说,这种办法可以兼容Face ID,但没有大规模测试,目前售价高达40美元一个。

4、连体翼飞机[8]

空中客车公司在新加坡航空展上,放出了长达二米的连体翼飞机模型,表示他们正在研发这种机身和机翼一体化的飞机,并且已经于去年6月在法国试飞了。

这种飞机机翼与机身融合,可以减少空气阻力,有利于降低燃油消耗并减少碳排放。空中客车公司表示,与目前的客机相比,这种飞机可能将燃油消耗降低多达20%,并为不同的推进系统和机舱设计提供了可能性。不过,这种飞机的设计和制造都较为复杂。

5、独轮车环游地球[9]

英国青年埃德·普拉特(Ed Pratt)最近成为第一个骑独轮车环游世界的人。2015年3月,当时19岁的他从英国出发,经过3年时间,路经了欧洲、中东、中亚、中国、东南亚、澳大利亚、新西兰和美国之后,他终于回到了起点。

他的交通工具就是一辆独轮车,为了省力,选择了36英寸(91厘米)的轮胎。他的所有装备也放在独轮车上(下图),一路上一共换过5次轮胎,平均每个轮胎可以使用8000公里。

6、 一句话消息

•英国一项研究[10]发现,中年人最不幸福的年龄是47.2岁,所以这个年龄可能就是中年危机的最高潮。

•数码相机[11] 2019年的全球出货量只有1,500万台左右,比2018年减少20%,是2001年(1,475万台)以来的最低点。相比巅峰时期的2010年(1亿2,146万台),销量只剩下八分之一。

•德国大众汽车公司[12]宣布,不再参与电动汽车以外的赛车活动。汽车公司参与赛车,主要是为了推销汽车,大众公司将逐步停止内燃机汽车的生产,也就不需要参与汽油车的赛车了。

•日本科学家[13]2016年发明了第一代动态投影机,在投射表面涂一层红外线涂料,就可以使得弯曲表面也获得清晰不变形的投影效果(下图)。目前第二代[14]问世了,已经不需要涂料,可以直接投影在弯曲表面。

文章

1、Shopify 采用 React Native[15](英文)

Shopify 决定放弃原生应用,改用 React Native 开发他们的手机 App,这篇文章详细解释了为什么。

主要原因有三个,一是节省开发成本、缩短开发周期;二是他们在 Web 上已经采用 React,对这项技术比较熟悉;三是他们的 App 不是那么复杂。

2、Internet Explorer 曾有过的创新[16](英文)

微软已经放弃了自己的 Trident 浏览器引擎,改用谷歌的 Blink 引擎。本文回顾了历史上 Internet Explorer 浏览器的众多创新,数量非常多。

3、静态网站为什么需要 HTTPS[17](英文)

本文总结了对 HTTP 网页进行攻击的方法。

4、我编程20年的指导原则[18](英文)

一个编程20年的资深程序员,总结自己编写软件的原则,其中一条是:安全性 > 可用性 > 可维护性 > 代码简洁 > 性能 。另一条是,除非已经完全理解了所要解决的问题,否则不要动手写代码。

5、41种 SaaS 产品营销策略[19](英文)

提供 SaaS 服务的公司越来越多,如何才能有效地推广自己的服务?这篇长文总结了41种 SaaS 营销方法。

6、松本行弘谈 Ruby 语言的设计[20](英文)

Ruby 语言创始人松本行弘的访谈,介绍他对设计 Ruby 语言的想法,内容包括静态类型和动态类型的处理、未来 Ruby 的发展方向。

7、软件认证浪费时间和金钱[21](英文)

作者提出一系列理由,认为各种软件资格证书并无意义,不值得为了它们花费时间和金钱。

8、TypeScript 的问题[22](英文)

作者记录了他使用 TypeScript 过程中,觉得不够满意的地方。有些是可以解决的,有些属于语言的核心设计,很难解决。

9、我使用 Google Cloud Run 的经历[23](英文)

谷歌云的 Cloud Run 服务可以“按需启动”的方式运行 Docker 容器,作者使用这个服务部署自己的 Serverless 应用,每月的费用不足一美元。

10、OT 还是 CRDT?[24](英文)

网页编辑器 TinyMCE 项目打算增加多人实时协作功能。目前,编辑器同步有两种主要算法:OT 和 CRDT。本文比较这两种算法各自的特点,并附有参考链接。

工具

1、netgraph[25]

一个 Go 语言写的 HTTP 抓包分析器,带有 Web 界面。(@ga0[26] 投稿)

2、qier-progress[27]

一个网页顶部进度条的 JS 库。(@vortesnail[28] 投稿)

3、pyprotect[29]

一个 Python 代码的加密器,可以防止别人看脚本源码。(@ga0[30] 投稿)

4、简易数学函数作图工具[31]

一个在线生成数学函数图形的网页小工具。(@DoctorLai[32] 投稿)

5、Jane[33]

一个超级轻量的静态博客系统,使用 Kotlin 语言。(@pandolia[34] 投稿)

6、akshare[35]

一个基于 Python 的开源金融数据接口库,目的是实现股票、期货等金融产品从数据采集、数据清洗到数据下载的工具,满足金融数据科学家、数据科学爱好者在数据获取方面的需求。(@jindaxiang[36] 投稿)

7、Sitdown[37]

一个将 HTML 源码转换为 Markdown 的 JS 库,可以定制规则。(@LinFeng1997[38] 投稿)

8、GoatCounter[39]

一个开源的访客统计软件。

9、Language Learning with Netflix[40]

Chrome 浏览器插件,可以在 Netflix 的视频页面上同时显示原文和英语字幕,适合学习外语,需要用户有 Netflix 收看资格。

10、Clipboard History Pro[41]

Chrome 浏览器插件,用来管理系统的剪贴板,可以查看剪贴板的历史记录。

资源

1、货币汇率 API[42]

该网站提供免费货币汇率的 JSON API。

2、GameBoy 模拟器教程:使用 JavaScript 语言[43]

这组系列文章讲解,如何用 JavaScript 语言模拟 GameBoy 的硬件,可以用来了解硬件知识。

3、初学者的安卓学习资源[44]

这是 HN 的一个帖子,讨论初学者应该参考哪些安卓学习资源。

4、黑客的贝叶斯方法:以 Python 为例[45]

免费的英文电子书,讲解贝叶斯概率在 Python 语言中的应用。

5、Go 101[46]

免费的英文电子书,介绍 Go 语言的基本语法。

图片

1、微塑料污染[47]

人类大量使用塑料制品,然后随意丢弃,导致废塑料以塑料纤维的形式,进入了饮用水。

世界自然基金会最近的一项研究得出结论,人们每周可能摄入5克塑料纤维,相当于一张塑料信用卡的量,可以填满一个汤匙。这些塑料纤维进入人体的消化系统,大部分会被排解掉。

每个月食用21克塑料,相当于小半碗饭。

半年食入125克塑料,相当于一大碗。

每年食入250克塑料,相当于一盆菜。

每10年食入2.5公斤塑料,相当于一个救生圈。

一生中食入20公斤塑料,相当于两个垃圾桶。

2、香槟的压力[48]

历史上,英国采用二次发酵法制作葡萄酒,在已发酵的葡萄酒中加入糖和糖蜜以使酵母再次发酵,然后将其密封在瓶中以产生冒泡的混合物。

这种方法的问题在于它产生了难以置信的压力。在酒瓶中,内部压力大约是大气压的六倍,是汽车轮胎的三倍。这相当于每平方厘米的玻璃上承受超过5公斤的重量,只有特别坚固的瓶子才能承受这种压力,每年大约有4%~40%的葡萄酒会因为酒瓶爆炸而损耗。

因此,香槟酒工人只好戴着铁的保护面罩,来制造葡萄酒,防止受到爆瓶的伤害。

3、澳大利亚一家停车场的创意[49]

下面的标记都是真实的,利用视觉错位涂绘。(@StevenLikeWatermelon[50] 投稿)

文摘

1、过早优化的谬误[51]

Tony Hoare 曾经说过:“过早的优化是万恶之源”。经过 Donald Knuth 大师的推荐,这句话已成为软件工程师的名言。

不幸的是,它被误解扭曲了。许多软件工程师将这一准则理解成“你永远不应该优化代码!”,认为没有必要进行优化。

Tony Hoare 和 Donald Knuth 的真正意思是,代码微优化(例如,一条特定语句消耗多少 CPU 周期)之前,开发者应该担心其他问题。而且,原话并不是说:“在开发的早期阶段,关注程序的性能是有害的。” 他只是反对过早的优化。

以下几点理由,可以解释为什么不能忽视软件性能。程序员正确的做法应该是,在软件开发的早期阶段,就关注性能问题。

(1)性能问题不容易在软件开发的最后阶段解决。20%的代码占用了80%执行时间,它们可能散布在整个源代码中,不容易一次性修改解决。

(2)许多工程师相信,到软件发布时,CPU 的性能将会提高,以弥补部分代码的性能低下。尽管在1990年代确实如此,但在最近十年 CPU 性能非常有限。

(3)软件工程师认为,他们的时间比 CPU 时间更有价值。因此,浪费 CPU 周期以减少开发时间是对的。但是,他们忘记了,用户的时间比他们的时间更有价值。

(4)优化可能会导致产品延迟进入市场,并降低利润,这是正确的。但这种想法忽略了性能不佳的产品可能很难销售,尤其是在市场竞争激烈的情况下。

(5)有些程序员认为,几乎没有必要确保在软件的设计阶段,就使用最佳算法,先实现功能再说,因为以后总是可以替换更好的算法。所以,无需担心软件在开发阶段的性能,以后可以通过更好的算法对其进行提高。不幸的是,更好的算法在后期不一定可以实现,而且代码往往因为牵扯太多,无法轻易替换其中某个部分。

2、为什么物体潮湿时会变暗?[52]

你是否想过,为什么向地上倒了一摊水,土地就变暗了?

首先,我们要知道,物体的亮或暗,取决于反射的光的数量。反射的光线多,就比较亮;反射的光线少,就比较暗。

当我们向土地倒水的时候,湿的那块地的表面就有一层水。在此之前,光可以100%击中那块地,现在必须穿过那层水才能被地面反射。有一些光会被水面反射,还有一些光会在水中被吸收,所以地面接受的光量就比以前少。

另外,光进入水中后,一部分光会出现漫反射,反射到人眼的光量进一步减少。

以上两个原因,使得一个物体变湿以后,人眼接收到的光量要小得多。这就是为什么物体潮湿时看起来更暗的原因。

言论与数字

1、

为了解决气候变暖,人类生活的所有方面需要彻底的改变。

我们需要少吃肉,通过体外细胞培养的方式人工生产蛋白质,每个家庭的家用电器减少到两台,完全淘汰干衣机,2030年全面过渡到电动汽车,2050年将全球人口限制在84亿以内,到2100年下降到69亿。

-- 《气候问题已经绝望》[53]

2、

互联网诞生之前,程序员没有 StackOverflow、Slack、Reddit、Youtube、网络教程。编程遇到问题的时候,手边必须有语法手册和系统手册,如果你没有这两本书,就只能去图书馆或书店找书。

-- 推特用户[54]

3、

每个内容托管平台都将消亡。Geocities、LiveJournal、what. cd 、Yahoo Groups 已经消亡。有一天,Medium、Twitter、甚至 GitHub Pages 也将消亡,只要它们不再增长或者找不到有效的商业模式。

-- 《制作持久耐用的网页》[55]

4、

我从小公司跳槽到大公司。我发现,大公司的很多工作都在学习他们庞大的自定义领域,而不是学习某种的公开技术。

-- HN 读者[56]

5、

Git 从2005年4月3日开始开发,4月6日完成开发,对外宣布,4月7日上线使用。

-- 维基百科[57]

6、

微软好于谷歌的一个地方,就是它没有广告业务。

-- HN 读者[58]

回顾

去年的本周:《周刊第 46 期》

References

[1] ruanyf/weekly: https://github.com/ruanyf/weekly
[2] 《谁在招人?》: https://github.com/ruanyf/weekly/issues/1106
[3] 出处: https://www.theguardian.com/us-news/2020/jan/19/maines-giant-spinning-ice-disc-looks-like-its-reforming
[4] 一个视频: https://www.bilibili.com/video/av80434643
[5] 算错小数点: https://o.canada.com/news/spain-builds-submarine-70-tons-too-heavy
[6] 洞螈: https://www.sciencealert.com/scientists-don-t-think-this-olm-bothered-to-move-much-in-7-years
[7] 带有脸部信息的口罩: https://tech.sina.cn/2020-02-17/detail-iimxyqvz3474565.d.html
[8] 连体翼飞机: https://www.reuters.com/article/us-singapore-airshow-airbus-design/airbus-unveils-blended-wing-body-plane-design-after-secret-flight-tests-idUSKBN20509H
[9] 独轮车环游地球: https://www.outsideonline.com/2407533/unicycle-travel-gear
[10] 英国一项研究: https://www.bloombergquint.com/global-economics/middle-age-misery-peaks-at-age-of-47-2-economist-says
[11] 数码相机: https://finance.technews.tw/2019/12/30/digital-camera-shipments/
[12] 德国大众汽车公司: https://www.thedrive.com/news/31162/volkswagen-axes-all-non-electric-racing-programs-worldwide
[13] 日本科学家: http://www.k2.t.u-tokyo.ac.jp/vision/DPM/
[14] 第二代: http://www.k2.t.u-tokyo.ac.jp/vision/MIDAS/index-e.html
[15] Shopify 采用 React Native: https://engineering.shopify.com/blogs/engineering/react-native-future-mobile-shopify
[16] Internet Explorer 曾有过的创新: https://schepp.dev/posts/today-the-trident-era-ends/
[17] 静态网站为什么需要 HTTPS: https://www.troyhunt.com/heres-why-your-static-website-needs-https/
[18] 我编程20年的指导原则: https://medium.com/@alexewerlof/my-guiding-principles-after-20-years-of-programming-a087dc55596c
[19] 41种 SaaS 产品营销策略: https://apollodigital.io/blog/saas-marketing
[20] 松本行弘谈 Ruby 语言的设计: https://evrone.com/yukihiro-matsumoto-interview
[21] 软件认证浪费时间和金钱: http://tomaytotomato.com/certs-waste-of-time/
[22] TypeScript 的问题: https://blog.logrocket.com/is-typescript-worth-it/
[23] 我使用 Google Cloud Run 的经历: https://alexolivier.me/posts/deploy-container-stateless-cheap-google-cloud-run-serverless
[24] OT 还是 CRDT?: https://www.tiny.cloud/blog/real-time-collaboration-ot-vs-crdt/
[25] netgraph: https://github.com/ga0/netgraph
[26] ga0: https://github.com/ruanyf/weekly/issues/1095
[27] qier-progress: https://github.com/vortesnail/qier-progress
[28] vortesnail: https://github.com/ruanyf/weekly/issues/1093
[29] pyprotect: https://github.com/ga0/pyprotect
[30] ga0: https://github.com/ruanyf/weekly/issues/1094
[31] 简易数学函数作图工具: https://helloacm.com/tools/math-plot-graph/
[32] DoctorLai: https://github.com/ruanyf/weekly/issues/1102
[33] Jane: https://jane.pandolia.net/
[34] pandolia: https://github.com/ruanyf/weekly/issues/1108
[35] akshare: https://github.com/jindaxiang/akshare
[36] jindaxiang: https://github.com/ruanyf/weekly/issues/1109
[37] Sitdown: https://github.com/mdnice/sitdown
[38] LinFeng1997: https://github.com/ruanyf/weekly/issues/1111
[39] GoatCounter: https://www.goatcounter.com/
[40] Language Learning with Netflix: https://chrome.google.com/webstore/detail/language-learning-with-ne/hoombieeljmmljlkjmnheibnpciblicm?hl=en
[41] Clipboard History Pro: https://chrome.google.com/webstore/detail/clipboard-history-pro-bes/ajiejmhbejpdgkkigpddefnjmgcbkenk
[42] 货币汇率 API: https://currencyscoop.com/
[43] GameBoy 模拟器教程:使用 JavaScript 语言: http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-CPU
[44] 初学者的安卓学习资源: https://news.ycombinator.com/item?id=22030169
[45] 黑客的贝叶斯方法:以 Python 为例: https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
[46] Go 101: https://github.com/go101/go101/releases
[47] 微塑料污染: https://graphics.reuters.com/ENVIRONMENT-PLASTIC/0100B4TF2MQ/index.html
[48] 香槟的压力: https://www.atlasobscura.com/articles/history-of-champagne
[49] 澳大利亚一家停车场的创意: http://architypereview.com/project/eureka-tower-car-park-signage/
[50] StevenLikeWatermelon: https://github.com/ruanyf/weekly/issues/1058
[51] 过早优化的谬误: https://ubiquity.acm.org/article.cfm?id=1513451
[52] 为什么物体潮湿时会变暗?: https://aryankashyap.com/why-are-some-things-darker-when-wet
[53] 《气候问题已经绝望》: https://www.thenewatlantis.com/publications/after-climate-despair
[54] 推特用户: https://twitter.com/rkunboxed/status/1207301873218154497
[55] 《制作持久耐用的网页》: https://jeffhuang.com/designed_to_last/
[56] HN 读者: https://news.ycombinator.com/item?id=21982577
[57] 维基百科: https://en.wikipedia.org/wiki/Git#History
[58] HN 读者: https://news.ycombinator.com/item?id=21853885


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存