Quantcast
Channel: 阮一峰的网络日志
Viewing all 692 articles
Browse latest View live

一个老程序员的30年生涯回顾(译文)

$
0
0

前几天,我读到一篇文章,一个60多岁老程序员回顾自己的人生。

读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感。下面就是这篇文章的翻译。

====================================

一个老程序员的30年生涯回顾(译文)

原文网址:hackernoon.com

作者:Chris Fox

1、

1967年,我13岁时开始学习编程。

1988年,我正式进入了软件行业,通过编程养活自己。那一年,我34岁。

2、

1989年,我加入微软公司,那是微软为程序员提供单人办公室的最后一年。我们编程时,几乎没有干扰,这真是太好了。当时,微软的观念是必须为程序员创造不受打扰的环境,让他们全身心地投入工作。

3、

1990年5月,Windows 3.0 发布,公司出现了真正的变化。

突然之间,我与一个吸烟的同事共用一个办公室,他整天在电话里大声聊天。更糟糕的是,我们开始有更多的会议。

4、

接下来的20年,情况越变越糟。程序员像农奴一样被使用,许多人饱受压力、精疲力尽,每周工作70个小时以上。但是实际上,其中真正用来完成工作的时间只有4-6个小时,其余时间都为通过质量检查系统苦苦挣扎,设法应付各种质量措施。

5、

到了2009年,一切都变得混乱了。程序员对代码质量的热爱,完全被复选框式的机械处理取代了。在2008年末,我的主管要求我,代码都必须有单元测试,以便在系统中为该项目勾选"具有单元测试"的那个框。不久,他又要求我尝试"测试驱动的开发"(TDD)的新编程模式。

最后,当他们要求我做结对编程时,第二天我就因为愤怒而辞职了。

6、

离开微软后,我去了西雅图市中心的 Real Networks 公司工作。在西雅图,交通堵塞是一个大问题,我一般在早上高峰时间之后的9:30去上班,这样只要开车30分钟,就能到公司,还算不错。

7、

不久,我所在的团队开始尝试敏捷开发,每天早上8:30举行一次"站立会议"。这正好赶上早高峰,30分钟的通勤时间变成了90分钟,我必须在早上7:00出门才行。我几乎没有办法准时到达,并且感到非常疲倦。我询问是否可以稍微推迟会议。不行,你难道不知道站立会议必须在早晨举行吗?

为此,我只能(无偿地)多花了额外的时间开车去上班。

8、

这种会议真是很荒谬,每个程序员报告自己正在做的事情。大部分时候,我们做的事情跟昨天相同,偶尔会做一些新的事情,但没有什么特别可说的。会议上,产品经理会表现出生机勃勃、欢快愉悦的情绪,听起来很投入,而实际上我知道他们上班时很多时间都在脸书上玩游戏。

9、

许多次,我听到"故事"(Story)这个词。我问,"故事"是什么意思?回答是用户场景或者使用案例的新名称。随着我对敏捷开发的了解越多,遇到的重命名和名词重定义就越多。我看不出来这能对工作带来多少的新价值,唯一带来的就是更多的会议。

我建议不要使用"故事"这个名词,结果被冷淡地告知,"故事"是敏捷开发的一部分,我们将紧跟这种新的开发方法。

10、

我的原计划是,2019年65岁时退休,然后搬到东南亚国家享受退休生活。但是,经历过了沉闷的站立会议、白板上的迭代看板、一系列高压力的工作、对"故事"的不停谈论,我越来越对这个工作感到恶心。

2010年11月15日,56岁时,我退休了。

11、

我在越南买了一栋房子(上图),然后收拾行装,离开了美国。我非常喜欢这栋漂亮的新房子,准备在那边弹吉他,阅读物理书籍,体验截然不同的文化,放松身心。

12、

在越南过了一段日子以后,生活变得很闲,我只好把时间用来学越南语,否则就太无聊了。

13、

一位朋友建议我可以试试 iPhone 和 iPad 开发,软件工具是免费的。我怀念编程,就买了一台 MacBook,学习了 iOS、Objective-C 和 Xcode,很快就写出了一个可以出售的 App。我又回到了这个行业。

14、

2011年到2016年,我一开始为自己写 iOS 和 MacOS 应用程序,然后出售。这样也不错,但是我想挣更多的钱,就开始通过自由职业网站的中介,接一些客户的活。

15、

2017年,我获得了一家加利福尼亚公司的远程工作,为他们做服务器端开发。我学习了 C#、Entity 框架、ASP. NET。当推荐我的人离职了,我就接管了服务器端和数据库开发。这样已经持续了30个月。这是一段很棒的经历,让我掌握了一些最新技能,我喜欢服务器端和数据库编程。

这些时间我一直是一个人工作,但也是团队的一员。整个开发部门都是远程的,浏览器客户端开发人员在悉尼,我在越南。我们通过 RESTful API 协作,彼此都是独立工作。

16、

回顾我的30年程序员生涯,软件行业发生了翻天覆地的变化。

现在的软件业有更多时尚的行话和术语,比如用户故事、技术债务、敏捷、重构、迭代、里程碑等等。在我看来,所谓迭代,就是说这段时间你会过度劳累,没有其他含义。

奇怪的是,他们用各种办法监督程序员,但是招聘的时候,职位要求依然写着,需要具有独立工作精神、高度主动性的人。这真是讽刺。

17、

现在的软件业还流行开放办公室,这意味着完全不可能集中精力。你的工作被持续不断地打断,没法关门保持沉默和集中注意力。如果你戴着耳机,就意味着你的团队合作精神不够。

18、

最后,测试已经变味了。以前,我在微软公司,我们没有那么认真对待测试。微软经常开玩笑说,任何人都不应该使用偶数版本的软件,因为它是测试版,适合那些愿意向我们报告错误的客户。比如,请勿使用2.0版,因为2.1版将修复客户报告的所有2.0版的错误,至少是比较严重的错误。

现在的软件业提倡测试驱动开发这种荒谬方法。我在许多地方都读到,在软件开发中,没有什么比单元测试更重要了,甚至比交付成果的本身还要重要。单元测试是设计,是定义API的地方。测试覆盖率不到100%,就是存在欠缺,100%覆盖率是程序员的荣誉, 开发人员应该负责测试他们的产品。我们不再需要黑匣子测试流程,也不需要测试工程师。

我认为,这些态度充满了狂热主义。每个人都有盲点,总是会存在忽略编写测试的案例与忽略编写代码的案例。

19、

我喜欢编程,喜欢解决问题和开发功能,从小开始直到现在都是如此。

以前,我选择服从那些流行的做法,但是现在不会了。我不会在开放式办公室工作,不会持续一个星期听所谓的专业术语,不会将各种新词用来描述旧事物,不会结对编程,不会参加频繁的会议,不会在意对团队协作精神的要求,也不会嘲笑那些独自工作的人。

20、

我喜欢服务器端开发,未来希望还可以做这方面的工作。同时,我正在转向技术写作,学习远程工作所需的新技能。

我喜欢现在这种一点不疯狂的环境。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月19日

科技爱好者周刊:第 87 期

$
0
0

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

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

封面图:美国创业公司耐能,演示彩色印刷的 3D 脸部照片骗过人脸识别(via)。

刊首语

多年前,我推荐过一篇文章,给所有新加入互联网行业的工程师。它的题目叫做《不要自称为程序员》,其中说得最好的、最核心的建议是下面这段话。

企业最关心的(或者说唯一在乎的)事情,就是增加收入、降低成本。

企业实际上需要的不是程序员,而是能够帮助它们增加收入、降低成本的人。

企业雇佣你,是为了让你帮它们完成某个可以增加收入、降低成本的项目,而不是为了让你追求个人的软件成就。

那篇文章可以帮你了解行业的真相,理解很多事情,减少一些幻想。时隔多年,依然推荐。

今天,我想再推荐另外一篇文章《新工程师要干的五件事》,谈的是新人应该怎么做。如果说前一篇文章是"道",这篇文章就是"术"

它提到,新人加入一个开发团队时,要干五件事。前面四件事是了解技术架构、了解开发流程、补强基础知识、从微小的改善入手(比如关掉几个 issue)。这些都是常识,但是第五件事,很多新人都没意识到,你应该要去做,而且完全有能力做,那就是 你要为团队写文档

国内的现状是,项目文档很少,或者索性没有,因为大家的精力都被开发占据了,没有余力写文档。新人了解技术细节的方式,就是别人跟你口头说一下,然后自己去看代码。你正好趁着熟悉代码的过程,补写一些文档。不需要写得很好,只要忠实记录代码的线索、架构的细节,能为以后的人(包括你自己)节省一点时间就可以了。

我自己的体会是,写文档对一个人的锻炼是很大的。(1)可以熟悉项目;(2)可以提高表达能力;(3)可以提高技术能力,因为只有理解了代码才能表达出来,文档越清晰,就代表思路越清晰;(4)可以提高个人影响力,文档写得越好,看的人就越多。久而久之,你就会成为项目的代言人,别人有问题就会来找你。

总之,新人要重视写文档,主动为整个团队写文档,对个人成长有帮助,对团队也会有帮助。不停地写,大量地写,现在就开始写。长期中,你会意识到这给自己带来的巨大价值。

彩云小译

我们每一期的周刊,一大半的内容是英语的。很多朋友问,怎样才能快速有效地阅读这些英语文章?答案很简单,就是使用翻译工具。

不管什么文章,自动化工具一秒以内就能给出全文翻译,让你快速了解大意,有兴趣再去精读原文,这样就效率很高。尤其是科技类文章,专有名词多,语法比较规范,最适合使用翻译工具。

今天就向大家介绍一款国产的翻译工具----彩云小译。它有 Chrome 浏览器插件,也有手机 App,下载安装后一键就能实现网页的双语显示。

我使用之后,觉得翻译质量不错,而且可定制性也很高,不仅能够英译中,也能中译英,还支持翻译日语。在设置里面打开"自动翻译",点开网页就能直接显示中文,还支持单词的"划词翻译"。目前,Chrome 插件商店的用户评价高达4.6(满分5分)。

它还有一个特色功能,支持视频字幕翻译。有的网页视频可以外挂字幕(srt 文件),彩云小译能够把英文的文本字幕,实时变成双语字幕。如果是没有字幕的视频,可以安装它的同传软件,就能捕捉系统麦克风的声音,翻译成中文。

此外,如果你想自己开发,还可以调用它的 API,每月100万字之内的翻译都是免费的。

资讯

1、18000年前的狗

西伯利亚冻土带融化,使得科学家可以得到很多保留在冻土中的标本。最新的发现是一个18000年前的狗。这只狗死的时候只有两个月大,保存状况非常好,毛皮、鼻子和牙齿都完好无损。

DNA 测序发现它跟现在的狗不一样,属于狼到狗之间的过渡品种,因此算是已知最古老的狗。早前的一项研究认为,人类在20,000至40,000年前开始训化狼,使其变成狗。

2、酒驾锁

加拿大魁北克地处高寒地带,喝酒的人非常多,酒驾每年造成100人死亡、220人重伤和1,800人轻伤。为了遏制酒驾,魁北克最新规定,如果十年内两次酒驾,该人以后每次开车之前都必须向呼吸分析仪吹气,一旦发现喝过酒,汽车发动机将无法点火。

发动机与呼气分析仪之间有联锁装置,可以获取后者的读数。如果警察发现没有安装联锁装置,驾驶员将受到严厉处罚,第一次发现罚款1500美元,第二次发现拘禁90天,第三次发现终身拘禁。这是目前全世界对酒驾的最严厉立法。

3、下一代充电头

笔记本电脑的电源体积有望大幅缩小,新一代电源使用 GaN(氮化镓)取代传统的硅,使得大功率电源可以做得很小。上图左侧是传统的 5w 苹果手机充电器,后面两个是 30w 和 45w 的新型充电器,可以看到它们的体积非常小。

氮化镓的能源效率更高,转化为热能的能量比较少,这意味着这种充电器不会烫手或爆炸。

4、人脸识别的医院挂号

国内大医院的专家门诊很难挂号,半夜排队都不一定能挂到,很多黄牛都在倒卖专家门诊号。为了解决黄牛屡禁不止的问题,复旦大学附属上海肿瘤医院推出专家号的人脸识别系统。

预约挂号的人在挂号机前提交患者的身份证,挂号机会用摄像头拍摄人脸,如果身份证照片与人脸不一致,将无法进一步操作,这样避免了黄牛拿别人的身份证挂号。考虑到家属、亲友代挂号的情况,医院还规定每位患者可以绑定一位代挂号人的身份认证信息。

5、2019年度颜色

Pantone 是全球著名的配色公司。该公司每年都会评选本年度的最佳颜色,已经持续了21年。今年的最佳颜色是"经典蓝",即比亮蓝色更暗一些的蓝色。

该公司称,"经典蓝"是蓝莓、百事可乐饮料罐和天空的颜色,是"一天结束时那种美丽的颜色"。这种颜色"无侵略性"、"易于相处"、显示"诚实",表露出"对可靠、稳定的基础的渴望",让人感到"提供了庇护所"。同时,该公司还认为,蓝色已经不再代表忧郁,年轻人不再将蓝色与悲伤联系在一起,"我们认为那是老一辈的反应。"

6、皮肤薄膜

日本花王公司推出了一种皮肤薄膜。只要在脸上喷涂一层极细的白色粉末,随后用手掌轻轻按压,不一会儿就会形成一层超细薄膜,覆盖于皮肤,使得肌肤十分细滑,而且不易脱落,根本看不出来,好像什么都没涂一样。而且这种薄膜有毛细管,透气性好,不影响皮肤的呼吸。

它可以用来掩盖色斑,皮肤保湿,另外也可以直接在上面化妆,卸妆时只要直接撕下即可。该产品价格不菲,每罐售价高达5万日元(约合人民币3239元)。

7、一句话消息

  • IBM 公司统计发现,一名客服可以支持 5400 个Mac用户或者242个 PC 用户。原因只有5%的 Mac 用户向客服求助,而PC 用户的求助率达到40%。每当一个最终用户选择 Mac 而不是 PC时,可以为 IBM 可以节省273美元至543美元。

  • 一些法国议员提出,黑色星期五购物节(西方的双十一)会导致浪费和过度消费,应该立法禁止。

  • 美国加州规定,初中上课不得早于上午8点,高中不得早于8点半,目的是让学生多睡一会。

  • 微软宣布,将在明年底发售下一代游戏主机 Xbox Series X。它的造型是一个竖向的长方体,顶部有散热的栅格,性能是 Xbox One X 的四倍。另外,PS 5 也将在明年发售。

  • Oracle 公司制作了一个树莓派集群,包含1060个树莓派 3B+。

  • 以色列科学家开发出一种图像处理技术,可以从水下照片中"去除水",包括水波和光影。下面是原图和"去水"后的图片。

  • 俄罗斯一个健美运动员为了制造凸起的二头肌,向手臂注射凡士林,结果在体内结块,导致肌肉坏死,不得不动手术取出。

文章

1、如何绕过 GitHub 的 OAuth 认证(英文)

作者介绍他如何通过发出一个HEAD请求,来绕过 GitHub 的 OAuth 认证,获取没有授权的数据。GitHub 为这个漏洞支付给他25000美元的奖金。

2、Pixar 的技术(英文)

本文通过图片,介绍 Pixar 公司如何制作动画电影。

3、CSS 打印样式10分钟教程(英文)

一篇简短的教程,讲解如何使用 CSS 设置网页打印时的样式。

4、JSON 解析器的最大嵌套层数(英文)

JSON 数据结构可以嵌套多少层,标准没有提及。作者就写了一个脚本,去测试每种语言的 JSON 解析器最多可以解析多少层嵌套的 JSON,然后将结果列成表格,比如 V8 可以解析5713层。

5、20行 Shell 脚本的马尔可夫链(英文)

马尔可夫链的含义是根据概率推测下一项最可能的结果。本文使用20行 Shell 脚本实现一个简单的马尔可夫链。

6、Linux 软件包的打包方式(中文)

本文以一个最简单的 Hello World 程序为例,解释如何打包成一个 RPM 软件包。

7、实时协同编辑的实现(中文)

本文以作者自己开发的 ShowMeBug 应用为例,介绍如何实现多人同时编辑一篇文档。(@windy 投稿)

8、我对 Rust 语言的第一印象(英文)

本文是一篇 Rust 语言的入门教程,作者整理了自己的学习笔记,讲解了基本语法。

9、什么是瀑布式开发?(英文)

瀑布式开发是敏捷开发之前的传统方式,将整个过程发成几个大步骤,每个步骤完成以后才能推进下一步。本文是马丁·福勒大师解释,瀑布式开发的含义,以及为什么敏捷开发优于它。

10、为什么 Python 3 升级需要这么长时间?(英文)

这篇文章探讨了,为什么 Python 2 升级到 Python 3 花了这么长时间(超过10年)?主要原因有两个,一是企业升级的成本很高,且有很大风险,二是 Python 3 一开始的时候优点并不多, 没有足够的升级诱因。

11、海盗湾正在尝试高质量的视频流播放(英文)

海盗湾是世界最大的 BitTorrent 文件下载分享网站,现在添加了一个视频播放功能,可以跳到一个叫做 BayStream 的新平台上,播放热门的视频文件。

工具

1、 vy

一个命令行的极简风格的 IDE。

2、必收

一个收集和订阅外部内容的应用,有手机端和桌面端,可以收藏网址、微信文章、头条文章等。(@sinner-xing 投稿)

3、invidious

Youtube 的开源前端,等于为 Youtube 换了皮肤,可以自己搭建实例。

4、p2

一个极简的 PDF 文件转 PNG 图片的开源服务器,我觉得挺好用,查看 Demo

5、Same Page 2

Chrome 浏览器插件,让浏览同一个网页的访问者互联聊天,源码在 GitHub。

6、Joplin

一个笔记和待办事项软件,支持桌面、手机和命令行,可以多端同步。

7、code-surfer

一个以幻灯片的形式展示源码的工具。

8、配色可用性查看工具

这个网站可以查看,某个配色方案对于不同视力障碍人群的可用性,比如色盲、白内障、青光眼患者能不能看到,并给出该方案的评分。

9、远程浏览器

该网站提供免费的远程浏览器,用户可以在本地浏览器里面打开远程浏览器,再通过后者访问网站。该站的代码开源

10、zim

一个桌面端的 Wiki 编辑器,让你维护一个储存在本地的 Wiki。

资源

1、交互式线性代数教程

一个免费的线性代数英文教程,可以在线阅读,也提供 PDF 下载。

2、逐行剖析 Vue.js 源码

一组中文的系列文章,从初学者的角度,将 Vue.js 分成九个模块讲解源码。(@NLRX-WJC 投稿)

3、机器学习的数据集

维基百科的一个列表,收集各种用于机器学习训练数据的数据集,总数有几百个。

4、微积分图说教程

一篇英文的微积分入门教程,使用图片解释微积分的基本概念。

5、古埃及女王头像的 3D 打印源文件

古埃及女王 Nefertiti 的头像制作于公元前1345年,是柏林博物馆的镇馆之宝。现在,这个头像的 3D 打印源文件放上了网,可以免费下载。这次扫描的精度非常高,可以打印出跟原件完全一致的复制品。

图片

1、Basecamp 广告

Basecamp 公司最近在谷歌的搜索页上,做了一个广告,题目叫做"我们不想投放此广告"。

我们是这个搜索词排名第一的公司,但谷歌允许其他公司在我们上面做广告。所以我们在这里页面,一家很小的独立公司向一家大型科技公司支付赎金。"

2、世界上最危险的桥

俄罗斯贝加尔湖地区有两座大桥,铁路桥用来通行火车,旁边的 Kuandinsky 大桥通行汽车和行人。

这座桥只有两米宽,单车道,没有护栏或任何安全措施,司机一不小心就会掉到下面的河里。

该桥建成三十年来从来没有维修过,整个桥面的木板都腐烂了,遇到下雪天,桥上的积雪非常滑,而且还有强风,堪称世界上最危险的桥。

文摘

1、锂电池的问题

电动车使用锂电池。锂电池的优点是能量效率高,可以达到60%-80%,内燃机的能量效率为20%-60%。

锂电池的缺点是能量密度。目前,每公斤锂电池可以储存0.2度电,而每公斤汽油储存储存的能量相当于2度电,即汽油的能量密度是锂电池的10倍。可以计算一下,60升的汽车油箱可以加40多公斤汽油(汽油密度是每升0.72公斤),换成储存同样能量的锂电池,需要400多公斤。

这就是说,一辆电动汽车需要携带0.4顿的锂电池,才能达到汽油车携带的能量。

锂电池的寿命也是一个问题。手机的锂电池大约可用3年,充电/放电周期超过500次,汽车锂电池的寿命不能这么短。为了使电池寿命尽可能长,阴极和阳极需要三种最佳材料:钴,镍和石墨。

更大的问题是锂元素的储量不足。锂元素主要来自安第斯山脉的"锂三角"(阿根廷,智利和玻利维亚之间的区域),中国和澳大利亚也拥有一些储量。智利占世界锂储量的三分之一,号称"锂的沙特阿拉伯"。开采锂矿对环境污染很大,在智利的一些地区,65%的水用于锂生产,它们都可能被化学品污染。

石墨、镍、钴的开发也都对环境有破坏性。全世界一半的钴是在刚果民主共和国生产的。2014年,联合国儿童基金会表示,大约有4万名儿童在该国南部的矿井中工作,其中许多人开采钴。

锂的回收率目前很低。澳大利亚只有2%的锂电池被回收利用,其余的则留在垃圾填埋场腐烂。问题不是公众把手机扔进垃圾桶,而是从锂电池回收锂的成本很高,高于开采锂矿,而且回收的锂也不纯。

另外,制造锂电池需要大量能量,有研究报告称,制造一辆电动汽车的碳排放,比制造汽油车多一吨。

很明显,在气候灾难中,锂电池不是解决世界能源问题的灵丹妙药,我们需要解决电池问题的新技术。

2、我吃了毒蘑菇

2006年7月18日,星期二,一个永生难忘的日子。下班后我去纽约的一个公园散步。走出树林时,我发现了一些刚长出来的白色蘑菇。

我摘了三个回家,用橄榄油炒熟,作为配菜食用。老实说,它们没有那么好吃,味道很平淡。

晚饭后,我去跳舞,向我的朋友吹嘘,我采了一些野蘑菇作为晚餐。一个朋友问我:"它们都是白色的吗?"

我说:"是的。"

她说:"妈妈告诉我不要吃全白蘑菇。"

我说:"我很好,我知道我在做什么,我没有不适。"

回家后,我又吃了一些玉米片,喝了一些苹果汁,然后在晚上11点左右睡觉。当时,我的感觉很好。

大约在凌晨4:30和5:00之间,我醒过来,感觉不适。以前食物中毒时,我有同样的感觉。我去了洗手间,一下子就强烈呕吐,还有腹泻。那一刻,我知道我可能错食了毒蘑菇。

接下来的三个小时中,我不断地去洗手间。到了早晨7:30,我疼得在床上滚来滚去。我找到了一本蘑菇方面的书籍,发现我可能吃了一种叫做鹅膏菌的毒蘑菇。它的中毒症状是,食用后6~8小时出现呕吐、腹泻或严重便秘。它会破坏肝脏,50%到80%的食用者死亡。

我立刻打电话给毒物控制中心。他们建议我回到昨天摘蘑菇的地方,随身带一个以进行识别,然后自己去当地的急诊室。

我强撑着出门回到公园,在地上捡了一个蘑菇。出门前,我还拿了前一天晚上扔进垃圾桶的一根蘑菇茎。然后,开车去急诊室。

大约 9:30,我到了医院,接待员问:"我能为您做什么?"我说,我觉得自己不小心吃了毒蘑菇。她让我坐着等。

等了20分钟后,有人来接我。他们给我静脉注射以补充体液,同时去鉴定我带来的蘑菇。一阵子以后,有人过来说,康奈尔大学的真菌学家已经确定了,我确实是鹅膏菌蘑菇中毒。

接着,他们做的第一件事是,让我喝一杯黑色的木炭饮料。大约半小时后,急诊医生告诉我,他们找了救护车,将我送往纽约的斯特朗纪念医院。我之所以被送往这家医院,是因为他们是纽约州北部唯一可以肝脏移植的医院,治疗毒蘑菇的方法通常是肝移植。如果我发生肝脏衰竭,在那里可以立刻移植肝脏。

到达斯特朗纪念医院后,我被直接送往急诊室,每2小时抽血一次,以监测肝脏和肾脏的毒素水平。他们正准备对我进行所有必要的测试,以备万一肝脏衰竭时为我做移植。他们还给了我大量的青霉素和水,补充体液。整个晚上,我都无法入睡。

第二天,医生们不停问我问题,看我是否清醒。如果发生肝脏衰竭,我将会神志不清。有一次,一位医生进来问我"圆周率Pi是什么?"。由于没有睡眠,我的头脑很乱,差点回答不了。

这天晚上,我被送进重症监护室。医生要求我签署授权书,紧急时,家人可以允许对我进行肝脏移植。不知何故,到了深夜,我的肝脏里面的毒素水平达到了峰值,然后竟然开始下降,这意味着我可能可以在没有肝移植的情况下康复。到了清晨,毒素水平没有再上升,我被送回了病房。

后面的一天,尽管我的肝脏毒素数量下降了,但肾脏的毒素数量仍没有下降。我还处在观察状态中,医生评估我是否需要肾脏透析。

到了星期天,各种指标都接近正常了,我体内所有的管子都移走了,我起床在护士站附近走了几步,护士们鼓掌。

7月24日,星期一,我出院了。我感到很幸运,真的很幸运。我后来才知道,2006年美国有三个鹅膏菌蘑菇中毒的病例,我是唯一的幸存者,其他两个都死了。

言论与数字

1、

我们都知道,如果可以回到过去,改变任何一件小事情,都将极大地改变未来。然而,几乎没有人想到,今天只要小小改变,就会改变自己的未来。

-- BenSassiAladin@Twitter

2、

在产业界中,您需要证明你的产品,并最终赚钱,这样才能成功。

学术界不是这样。学者发表的论文几乎没有用处,但是只要其他学者引用,他就成功了。

-- HN 读者

3、

你知道,Instagram 被10亿美元收购时,只有12个员工吗?

-- HN 读者

4、

纳德拉(Nadella)接手微软 CEO 时,遇到的最严重历史遗留问题是:公司充满了大量早就功成名就和发财的老员工,你怎样领导公司走向不一样的未来呢?

-- 《一个微软前员工的思考》

5、

我口袋里有一个小设备,可以访问几乎全部的人类知识。我却用它与不认识的人进行毫无意义的争论,并看猫的照片。

-- HN 读者

招聘信息

周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。

1、黑帕云

黑帕云是位于武汉光谷的创业公司,主要构建新型无代码企业应用搭建平台,帮助企业业务人员将业务快速数字化。可以通过公众号米高说(migaoshuo) 了解更多情况。

招聘岗位:前端架构师、资深 SaaS 产品经理。欢迎加入创始团队,联系方式为 mechiland@gmail.com

2、 易路软件

易路软件聚焦企业人力资源 SaaS 领域,致力于以复杂薪酬计算为核心的"移动互联网+员工服务"研发及运营。工作地点:上海闵行区。

招聘前端工程师,参与公司产品研发,包括不限于 PC 端、H5、小程序、Node 服务。详细要求和联系方式看这里

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月20日

GitHub Actions 教程:定时发送天气邮件

$
0
0

2019年11月,GitHub 正式开放了 GitHub Actions 这个功能,现在不用申请就能使用。

GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,但也可用作代码运行环境。功能非常强大,能够玩出许多花样。

我写的《GitHub Actions 入门教程》 已经介绍了它的基本用法。本文紧接前一篇教程,给出一个简单实用的例子:每天定时运行一次脚本,获取天气预报,然后发送电子邮件。

完整代码可以从 GitHub 仓库 ruanyf/weather-action 获取。

第一步:获取天气预报

网站 wttr.in 支持命令行请求天气预报。


$ curl wttr.in

上面的命令会返回,你的 IP 地址所在位置的天气。

它还允许 URL 里面指定城市。


$ curl wttr.in/Shanghai

返回的数据可以通过curl命令-o参数,保存成文件,以便后面发送。


$ curl -o result.html wttr.in/Shanghai

wttr. in 允许定制天气预报的格式和内容,详见它的文档,这里就不展开了。最后封装好的脚本weather.sh,完整代码看这里

第二步:发送邮件

拿到天气预报以后,只要放在邮件里面,发出去就可以了。

我用的是网易 163 邮件的免费发送服务,需要在它的网站上开通,本地的配置请看下一步。

第三步:配置 GitHub Actions

触发 GitHub Actions 需要在项目仓库新建一个.github/workflows子目录,里面是 YAML 格式配置文件,文件名可以随便取。GitHub 只要发现配置文件,就会运行 Actions。

配置文件的第一部分是触发条件。


name: 'GitHub Actions Weather Bot'
 
on:
  push:
  schedule:
    - cron: '0 21 * * *'

上面代码中,name字段是配置文件的描述,on字段是触发条件。我们指定两种情况下触发,第一种是代码 Push 进仓库,第二种是定时任务,每天在国际标准时间21点(北京时间早上5点)运行。

接着,就是运行流程。


runs-on: ubuntu-latest
steps:
  - name: 'Checkout codes'
    uses: actions/checkout@v1

上面代码中,运行环境指定为最新版的 Ubuntu。流程的第一步是从代码仓库获取代码。

拿到代码以后,就可以获取天气预报了。


- name: 'Get weather report'
  run: bash ./weather.sh

上面代码中,run字段就是所要运行的命令。

最后,发送邮件。


- name: 'Send mail'
  uses: dawidd6/action-send-mail@master
  with:
    serveraddress: smtp.163.com
    serverport: 465
    username: ${{ secrets.MAILUSERNAME }}
    password: ${{ secrets.MAILPASSWORD }}
    subject: Shanghai Weather Report
    body: file://result.html
    to: yifeng.ruan@gmail.com
    from: GitHub Actions
    content_type: text/html

上面代码中,发送邮件使用的是一个已经写好的 action,只要配几个参数就可以用。参数之中,邮件 SMTP 服务器的用户名和密码,使用的是加密变量,需要在项目的settings/secrets菜单里面设置。

完整的配置文件看这里。更具体的语法解释可以参考《GitHub Actions 入门教程》

写好配置,推送到仓库以后,就可以每天清早收到一封天气预报邮件了。在这个基础上不难扩展,可以定时执行各种脚本(比如每5分钟检查一次某个网站是否在线),然后将结果发到指定的渠道,这里就有一个发到社交媒体 Telegram 的例子

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月22日

如何撤销 Git 操作?

$
0
0

Git 版本管理时,往往需要撤销某些操作。

本文介绍几种最主要的情况,给出详细的解释。更多的命令可以参考《常用 Git 命令清单》一文。

一、撤销提交

一种常见的场景是,提交代码以后,你突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。


$ git revert HEAD

上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。

git revert 命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写。


$ git revert [倒数第一个提交] [倒数第二个提交]

git revert命令还有两个参数。

  • --no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。
  • --no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。

二、丢弃提交

如果希望以前的提交在历史中彻底消失,而不是被抵消掉,可以使用git reset命令,丢弃掉某个提交之后的所有提交。


$ git reset [last good SHA]

git reset的原理是,让最新提交的指针回到以前某个时点,该时点之后的提交都从历史中消失。

默认情况下,git reset不改变工作区的文件(但会改变暂存区),--hard参数可以让工作区里面的文件也回到以前的状态。


$ git reset --hard [last good SHA]

执行git reset命令之后,如果想找回那些丢弃掉的提交,可以使用git reflog命令,具体做法参考这里。不过,这种做法有时效性,时间长了可能找不回来。

三、替换上一次提交

提交以后,发现提交信息写错了,这时可以使用git commit命令的--amend参数,可以修改上一次的提交信息。


$ git commit --amend -m "Fixes bug #42"

它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。

这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,--amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。

四、撤销工作区的文件修改

如果工作区的某个文件被改乱了,但还没有提交,可以用git checkout命令找回本次修改之前的文件。


$ git checkout -- [filename]

它的原理是先找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。

注意,工作区的文件变化一旦被撤销,就无法找回了。

五、从暂存区撤销文件

如果不小心把一个文件添加到暂存区,可以用下面的命令撤销。


$ git rm --cached [filename]

上面的命令不影响已经提交的内容。

六、撤销当前分支的变化

你在当前分支上做了几次提交,突然发现放错了分支,这几个提交本应该放到另一个分支。


# 新建一个 feature 分支,指向当前最新的提交
# 注意,这时依然停留在当前分支
$ git branch feature

# 切换到这几次提交之前的状态
$ git reset --hard [当前分支此前的最后一次提交]

# 切换到 feature 分支
$ git checkout feature

上面的操作等于是撤销当前分支的变化,将这些变化放到一个新建的分支。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月24日

科技爱好者周刊:第 88 期

$
0
0

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

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

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

封面图:白化病袋鼠,育儿袋里面的小袋鼠是正常的。(出处澳大利亚政府官方 Instagram

刊首语

最近,我读到两段话,都是用蛇比喻企业管理。

第一段话出自 Netscape 公司的首席执行官 James Barksdale。

在 Netscape,我们有三条规则。

第一条规则是,如果你看到一条蛇,不要打电话给管理委员会,不要打电话给朋友,不要组建一个团队,不要召开会议,你要做的就是杀死蛇。

第二条规则是,不要跑回去玩那条死蛇。太多的人浪费了太多时间,为那些已经做出的决定。

第三条规则是,所有机会一开始的时候,看起来都像蛇,需要找到出问题的地方。

他的意思是,第一个看到问题的人,就要立刻着手解决,不要拖延。

第二段话出自亿万富翁 Ross Perot 评论通用汽车公司的管理。

我来自一个环境,如果谁看到一条蛇,就会杀死它。

但是,在通用汽车公司,如果你看到蛇,做的第一件事就是雇用一个咨询顾问,讨论这个问题。然后,成立了一个委员会,研究怎么做。讨论了几年,最有可能的结果是什么都没做。因为这条蛇还没有咬任何人,所以你就放任它在工厂地板上爬行。

我们需要建立一个环境,让第一个看到蛇的人杀死它。

我觉得,这两段话都说得很好,值得分享给大家。

不过,他们这样说的前提是,你有能力杀死蛇。但是我觉得,很多时候遇到的是大蛇,你根本没有能力杀死它,尤其对于小企业和个人的人生,你遇到的问题都比你强大。这时唯一的对策,大概只能是不管蛇,认准自己的方向,拼命往前跑(发展壮大),希望能摆脱它。

Vue.js 免费课

周刊现在每周会有一个推广栏目,向大家介绍一门软件开发的培训课程。本周的 Vue.js 免费课是由 开课吧 带来的。

大家知道,Vue.js 是前端的主流框架之一,入门快、新手易于上手,并且作品的效果毫不逊色,所以在国内占有很大的市场,就业面很宽。目前这个阶段,Vue.js 属于前端开发的主要技能之一,面试经常会考察到。

相应地,Vue.js 的培训非常多,几乎令人目不暇接。目前,Vue.js 3.0 的预览版已经发布,正式版的发布日期在明年一季度。很多针对老版本的课程,很快就会过时。

开课吧的免费课程 《Vue.js 3.0 数据响应式原理》 ,完全基于新版本的代码,介绍了 UI 层和 Model 层数据双向响应的实现原理,2.0 版和 3.0 版的底层差异,主讲老师还会教大家如何自己动手搞定 Vue3 响应式实现,以及相关的源码分析。

微信扫描下方二维码(手机端可以长按两次),添加小助理,就能领取免费的听课资格。

开课吧总部在北京,是国内最大的职业教育平台之一,在 IT 培训方面投入很大,网上搜索一下可以看到他们的更多介绍。

资讯

1、《蒙娜丽莎》

上图是今年10月24日法国卢浮宫《蒙娜丽莎》画像前的情景。每天都有3万人来卢浮宫看这幅画,参观体验非常糟糕。大多数人只能隔着人群,远远看到一个影子。即使你好不容易挤到前面,看两眼就会被挤开。

卢浮宫是全世界展览面积最大的画廊,除了《蒙娜丽莎》,大部分展厅的观众并不多。整个卢浮宫并没有人满为患的问题,只有《蒙娜丽莎》才有这个问题。

《纽约时报》特别发表文章,呼吁卢浮宫取下《蒙娜丽莎》,为她单独新建一个展览馆。移除《蒙娜丽莎》将更有利于推广其他展品,对博物馆的长远发展更好。建设新馆,当然会花很多钱,但是《蒙娜丽莎》会有融资困难吗?这幅画不管在什么地方,都会让那个地点成为世界的热点,源源不断的游客会自动涌来。

2、骨髓移植的 DNA 问题

美国内华达州警察局的 DNA 分析实验室(上图),遇到了一个棘手的问题。一个白血病患者进行骨髓移植四年后,他的血液、嘴唇、脸颊都出现了骨髓捐助者的 DNA。也就是说,此人身上现在同时有两个人的 DNA。更麻烦的是,他的精子里面所有的 DNA,都来自捐助者,这意味着这些精子产生的后代从生物学意义来说,都不是他的后代。

警察局的法医说,随着器官移植和生物工程的增加,一个人同时携带多种 DNA 恐怕会越来越常见。犯罪现场获得的 DNA,以后必须考虑这种可能性。

3、抗酒精的细菌

为了消灭细菌,医院通常使用酒精消毒液。洗手和擦拭医疗器具,都需要使用酒精,并且浓度不是一般家用的23%,而是高达70%。酒精会破坏细菌的细胞膜,导致细菌迅速死亡。

但是,墨尔本大学的一项长期研究发现,澳大利亚两家医院收集的细菌标本中,已经出现了越来越多能够耐受酒精的细菌,它们可以忍受高浓度酒精的冲洗,然后生存下来。2009年至2015年收集的细菌标本的存活率,比2004年之前收集的高十倍。因此,单纯的酒精擦拭可能已经不足以消毒,必须同时使用其他方法。

4、美国太空部队

美国太空部队于2019年12月20日正式成立,保卫美国在宇宙空间的安全和利益,成为美国的第六个军种。前五个是陆军,海军,空军,海军陆战队,海岸警卫队。上面是它的官网,还比较简陋。

根据《太空部队法》,美国太空部队"为美国在太空的行动提供自由",并且负责进行太空操作。已经有天体物理学家提出,太空部队应该承担卫星碎片清理和小行星撞击地球的防御任务。

特朗普总统在成立仪式上说:"太空是世界上最新的战斗领域。美国在太空方面的优势绝对至关重要。我们现在处于领导地位,但还不够领先。不久之后,我们将会领先很多。"

5、Mac Pro 顶配超过5万美元

苹果公司新型 Mac Pro 电脑开始接受订购,起价为5,999美元,顶配为52,599美元,是有史以来最昂贵的 Mac 电脑。

如果你还要配苹果的 Pro Display XDR 显示器,它的顶配价格为 5,999美元。另外,显示器架子是999美元(单独出售),整个 Mac Pro 的总价就变成了59,597美元。这还是只是一个显示器的价格,Mac Pro 最高支持8个显示器。跟这种价格相比,早先发布的16英寸 MacBook Pro 的顶配为6,099美元,显得很便宜。

6、猪猴混合体

中国科学院动物研究所做了一个突破性的实验,创造出世界上第一个"猪猴混合体"生物。研究团队将猴子的胚胎干细胞,在受精五天后注射到猪的胚胎中。最后,母猪生出了十只仔猪,其中两只仔猪身上测到了猴子的 DNA,成为"猪猴混合体"。可惜的是,所有仔猪都在一周之内死亡,原因不明。

在"猪猴混合体"的仔猪体内,心脏、肝脏、脾脏、肺和皮肤等多个部分发现了猴子细胞,但比例很低,在千分之一和万分之一之间。该研究的最终目的是,希望在猪身上培育出人体器官,用于人体移植。

7、一句话消息

  • 美国教育部公布官方数据,美国大学毕业生第一年收入最高的各校专业排名,前十名里面有九个是牙医专业。

  • "中国环流器二号M"完成制造,明年开始试验。这是可控核聚变反应堆的关键装置,可以产生2亿度的高温,为核聚变提供高温环境。

  • Instagram 用户 Joemanweng 访问谷歌台北分公司,一般公司的卫生间贴的都是公司信息或心灵鸡汤,但是谷歌卫生间贴的是如何找到代码 Bug。

  • 黎巴嫩搭建了一棵巨大的圣诞树,高度近30米,由12万个回收的塑料饮料瓶组成,希望引起人们对回收塑料垃圾的重视。

  • 研究人员发现,美国南部的两种橡树会吸附空气中的碳颗粒,因此可以用来清洁城市空气。

  • 一项研究提出,夜晚的灯光对昆虫有巨大影响。因此,城市的灯火越亮,昆虫的数量越稀少。

文章

1、如何写出可复用的 CSS 样式表?(英文)

Tailwind CSS 框架的作者谈自己如何一步步探索,写出与 HTML 代码彻底分离的、可以复用的 CSS 样式表。

2、如何自己实现一个 React 框架(英文)

本文一步步用简单的代码讲解,如何自己从头实现 React 框架。

3、我如何创建一个每月获利6万美元的手机 App(英文)

作者介绍如何一个人开发一个手机 App,让用户使用银行卡通过 Stripe 的 API 进行付款。目前,每月处理的资金量为600万美元,利润为6万美元。

4、新能源汽车的未来在哪?(中文)

中科院院士、新能源汽车专家欧阳明高的演讲,分析电动车技术与电动车行业目前的形势与展望。

5、亲手触摸月球,会是什么感觉?(中文)

月球尘埃是很好的隔热材料,所以徒手压在最热的月球土壤上,可能不会感到太烫,但是岩石就不一样,会非常烫。

6、隧道掘进机示意图(英文)

本文收集了大量动画图片,展示各种隧道掘进机的工作原理。

7、我如何制作 3D 网页?(英文)

作者的主页是一个 3D 网页,他介绍了这是怎么制作的。

8、最佳旅行电子设备2019版(英文)

本文列出作者选择的2019最佳旅行时携带的电子产品。

9、我们制作 HTML5 游戏的所有工具(英文)

作者是专业的 HTML5 游戏开发商,介绍了他们团队使用的工具。

10、Makefile 教程(英文)

本文教你学会编写 Makefile 文件。

工具

1、EasyDB

一次性云端数据库,可以免费使用24小时。如果想永久保存数据,需要付费。

2、Sourcetrail

可视化源码浏览器,可以对 C、C ++、Java、Python 源代码进行静态分析,并以图形可视化的形式呈现。

3、texme

一个轻量级的 JavaScript 脚本,可以把 Markdown + LaTeX 文档直接渲染成网页。

4、linjiashop

一个开源的 Web 商城项目,基于 Spring Boot 和 Vue.js,支持 Web 端和移动端。(@enilu 投稿)

5、NBAsh

命令行的 NBA 直播查看工具,包括比分和球员统计。(@rogerzhu 投稿)

6、resumd

一个在线的简历编辑器,可以分享给他人一个可编辑的简历,也可以导出 PDF。(@timqian 投稿)

7、MQTTX

一款跨平台的 MQTT 消息网关的开源桌面客户端,可以用来测试消息收发。(@ysfscream 投稿)

8、KubeSphere

一个开源的容器管理平台,构建在 Kubernetes 之上,帮助企业管理容器环境。(@FeynmanZhou 投稿)

9、mdr

一个命令行的 Markdown 文件阅读器。

10、react-mosaic

一个基于 React 的浏览器窗格框架,可以让网页显示多窗格的效果。

资源

1、软件 bug 大事记

该网页收集历史上各种软件 Bug 导致的重大事件的新闻报道。

2、自托管软件列表

该网站收集各种可以自己架设服务的软件。

3、社交媒体挖掘

免费书籍,介绍如何使用 Python 数据收集和分析社交媒体数据。

4、软件架构编年史(中文)

系列文章的中译,逐篇回顾软件架构的历史发展,从单层架构到多层架构,再到更复杂的架构。(@Y024 投稿)

5、谷歌工程实践文档(中文)

谷歌官方的工程实践文档的中译,目前官方只放出了代码评审(Code Review)的部分,后续会跟进翻译。(@xindoo 投稿)

图片

1、旋转式监狱

20世纪初,两名美国工程师发明了旋转式监狱。牢房围绕着一根大柱子,呈圆柱形,最外面还有一层可以旋转的铁网。

只有当铁网的门与牢房的门对齐时,犯人才可以出来。由于铁网只有一扇门,一次只能放一间牢房的犯人出来,所以这种监狱的犯人很难逃脱。由于它很像松鼠笼,所以又称为"松鼠笼监狱"。

美国一共造了16所这样的监狱,但是由于太不方便,到了1930年就几乎全部停止了使用。目前,有4所旋转式监狱保留了下来,都改为了博物馆。

2、颠倒的苹果 Logo

早年的苹果笔记本电脑,上盖的苹果 Logo 从旁观者的角度看是颠倒的。

之所以这样设计,是因为虽然旁观者眼中 Logo 位置颠倒,但是打开笔记本的那一刻,对笔记本的使用者来说,Logo 位置是正的。

苹果的设计团队发现,如果让旁观者看到正确的 Logo,使用者就会看到颠倒的 Logo。这时使用者可能会反复尝试,从错误的一边打开笔记本电脑。乔布斯因此拍板决定,用户比旁观者更重要。

显然,乔布斯后来改变了看法。现在的苹果笔记本,旁观者看到的 Logo 都是正的。

文摘

1、耐克鞋的问题

2019年10月12日,肯尼亚选手 Eliud Kipchoge 在奥地利维也纳,创造了马拉松世界最佳成绩1小时59分40秒。他穿的是耐克跑鞋。

女子马拉松世界记录 2小时14分04秒,选手穿的也是耐克跑鞋。

新式的耐克跑鞋,自2016年开始席卷了马拉松界。仅在过去的13个月,诞生了有史以来最快的五个马拉松成绩,跑者穿的都是耐克跑鞋。其他跑鞋公司虽然在努力追赶,但是面临专利障碍。

国际田径联合会现在面对一个严肃的问题,是否应该对跑鞋进行限制,否则可能会影响到明年夏天的日本奥运会马拉松比赛。

我们知道,较厚的鞋底会产生更多的弹力,所以可以制造出更强弹力的鞋子。以前跑鞋的鞋底不超过31毫米,耐克当前的 Vaporfly 跑鞋的鞋底达到36毫米。

但是,鞋底并非越厚越好。1960年,一位名叫阿贝比·比基拉(Abebe Bikila)的埃塞俄比亚选手,甚至赤脚赢得了奥运会马拉松。这里的关键是,跑鞋的重量最小时,你的跑步效率更高。鞋底厚的跑鞋,重量都很重,会影响跑步效率。

这种情况在2016年发生了改变。耐克在那一年推出了 Vaporfly 跑鞋,包含一种新的鞋底泡沫 Pebax,重量轻,几乎就像赤脚跑步一样。它所提供的能量回馈比大多数跑鞋的鞋底泡沫多30%。这使 Pebax 几乎像腿部肌肉一样起作用,不会造成选手的肌肉疲劳在20英里后使腿部衰弱。

耐克鞋的鞋底还包括碳纤维板。该板可能会增加能量的回馈,或者可能会改善跑步过程中的脚部功能。无论是哪个方面,该板在耐克的专利申请中都被突出提及。

受耐克公司支持的专家们在科学期刊上发表了论文,表明 Vaporfly 鞋可以将马拉松时间提高多达3%。这对于顶尖选手,是极大的成绩提高,可以决定他们能否得到金牌。不过,也有人认为,这些论文只是耐克公司的营销策略,但是事实是选手们确实穿着这种鞋子,创造了好成绩。

国际田联承认这是一个问题,特别是在东京奥运会即将到来之际。它在一份声明中说:"很显然,某些形式的技术会为运动员提供与这项运动的价值观背道而驰的帮助。"它已任命一个技术委员会来研究鞋的问题,在接下来的两个月中将提交报告。有的学者提出,应该限制鞋底高度,并禁止在鞋底中添加类似弹簧的装置。

2、我的裁员经历

20世纪初,硅谷互联网泡沫破灭时,我大学毕业刚刚一年多,在一家小公司开发 SaaS 产品。

我清楚地记得911事件发生的那天,办公室笼罩在一片不详的气氛中。时间一天天过去,公司的业务深受打击,从未恢复。

我一般是早上去健身房,然后上午10点到公司,一直工作到晚上7点。我清楚记得,911事件过去九个月后,有一天公司的技术副总裁打电话给我,当时我刚做完锻炼,他问我什么时候可以到办公室,让我一到公司就直接去他的办公室。

那一天,公司大约有85%的员工被解雇了,而我属于"幸运儿"之一,留了下来,但后面的事态并没有好转。

随后发生的事情就像是电视剧。管理层知道我们现有的产品已经走到了尽头,但是85%的员工被解雇,使得剩下的风投资金还能支撑一段时间,因此他们决定转向,看看能不能找到新的机会。整个公司剩下的15个人,坐在会议室,尝试头脑风暴,提出新的产品创意。不用说,那根本无济于事。

过了不久,公司的 CEO 就下台了。我是通过他的人脉被带进公司的,我大约在六个月后第二轮被裁员。感谢技术副总裁待我不错,我得到了3个月的遣散费。

我花了9个月的时间寻找另一份工作,最后在纽约的一家金融科技公司找到了新工作,直到今天。

回顾我的经历,大学毕业后第一份工作就遇到了大裁员、公司倒闭和解雇,对我来说是一段非常痛苦的经历。但是,这也是宝贵财富,我因此多了一份难得的历练,对商业、技术和企业管理都有了更深的认识。它们让我成长了很多,在后来的经历中给了我巨大帮助。

言论与数字

1、

有人认为,日本善于复制其他国家的东西。我不这样认为,日本人所做的是重塑事物。他们对别人的发明进行研究,直到完全理解为止。某些情况下,他们比原始发明人更了解它。基于这种理解,他们将在更精致的第二代版本中进行重新发明。

不过,只有那种东西变化不大时,该策略才能奏效,音响和汽车行业就是两个例子。当目标行业快速发展时,这种策略就很困难,因为重新发明需要几年时间(,而原始发明已经被淘汰了)。

-- 乔布斯(1985)

2、

2015年,欧洲的法语拼单词比赛冠军是一个不懂法语的新西兰人,他花了9周把法语词典背了下来。此前,他还得过英语拼单词冠军。夺冠后,他上台发言,还需要同声翻译。

-- CBC 新闻

3、

20年前,美国政府宣传说,对手是日本,现在说对手是中国。我毫不怀疑,2040年,我们将被告知对手是印度,2060年对手则是一些成长中的非洲国家。

-- HN 读者

4、

我父亲喜欢每天早晨去同一家咖啡店,向朋友们甚至路上的行人,展示他儿子的攀岩照片。那些人几乎总是问:"他为此得到报酬吗?" 父亲好不容易才忍住不反问:"你做过什么有趣的事吗?"

-- HN 读者

5、

孩子出生可能会降低一个人的雄心。事实是,一旦有了孩子,你可能更关心他们,而不是自己。

一个人的注意力是零和游戏,只可能有一个项目是你最关心的事。有了孩子,你最关心的事情通常就是你的孩子,而不是你正在从事的项目。

-- 《不要雇佣有小孩的人》

6、

有些雇主青睐有家庭的男人,因为那样的男人偏好稳定,而且很需要钱!

-- 读者对《不要雇佣有小孩的人》一文的留言

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月27日

Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程

$
0
0

有时,Bash 脚本需要创建临时文件或临时目录。

常见的做法是,自己在/tmp目录里面生成一个文件,这样做有很多弊端。本文介绍如何安全地处理临时文件。

一、临时文件的安全问题

直接创建临时文件,尤其在/tmp目录里面,往往会导致安全问题。

首先,/tmp目录是所有人可读写的,任何用户都可以往该目录里面写文件。创建的临时文件也是所有人可读的。


$ touch /tmp/info.txt
$ ls -l /tmp/info.txt
-rw-r--r-- 1 ruanyf ruanyf 0 12月 28 17:12 /tmp/info.txt

上面命令在/tmp目录直接创建文件,该文件默认是所有人可读的。

其次,如果攻击者知道临时文件的文件名,他可以创建符号链接,链接到临时文件,可能导致系统运行异常。攻击者也可能向脚本提供一些恶意数据。因此,临时文件最好使用不可预测、每次都不一样的文件名。

最后,临时文件使用完毕,应该删除。但是,脚本意外退出时,往往会忽略清理临时文件。

二、临时文件的最佳实践

脚本生成临时文件,应该遵循下面的规则。

  • 创建前检查文件是否已经存在。
  • 确保临时文件已成功创建。
  • 临时文件必须有权限的限制。
  • 临时文件要使用不可预测的文件名。
  • 脚本退出时,要删除临时文件(使用trap命令)。

三、mktemp 命令的用法

mktemp命令就是为安全创建临时文件而设计的。虽然在创建临时文件之前,它不会检查临时文件是否存在,但是它支持唯一文件名和清除机制,因此可以减轻安全攻击的风险。

直接运行mktemp命令,就能生成一个临时文件。


$ mktemp
/tmp/tmp.4GcsWSG4vj

$ ls -l /tmp/tmp.4GcsWSG4vj
-rw------- 1 ruanyf ruanyf 0 12月 28 12:49 /tmp/tmp.4GcsWSG4vj

上面命令中,mktemp命令生成的临时文件名是随机的,而且权限是只有用户本人可读写。

Bash 脚本使用mktemp命令的用法如下。


#!/bin/bash

TMPFILE=$(mktemp)
echo "Our temp file is $TMPFILE"

为了确保临时文件创建成功,mktemp命令后面最好使用 OR 运算符(||),指定创建失败时退出脚本。


#!/bin/bash

TMPFILE=$(mktemp) || exit 1
echo "Our temp file is $TMPFILE"

为了保证脚本退出时临时文件被删除,可以使用trap命令指定退出时的清除操作(详见后文)。


#!/bin/bash

trap 'rm -f "$TMPFILE"' EXIT

TMPFILE=$(mktemp) || exit 1
echo "Our temp file is $TMPFILE"

四、mktemp 命令的参数

-d参数可以创建一个临时目录。


$ mktemp -d
/tmp/tmp.Wcau5UjmN6

-p参数可以指定临时文件所在的目录。默认是使用$TMPDIR环境变量指定的目录,如果这个变量没设置,那么使用/tmp目录。


$ mktemp -p /home/ruanyf/
/home/ruanyf/tmp.FOKEtvs2H3

-t参数可以指定临时文件的文件名模板,模板的末尾必须至少包含三个连续的X字符,表示随机字符,建议至少使用六个X。默认的文件名模板是tmp.后接十个随机字符。


$ mktemp -t mytemp.XXXXXXX
/tmp/mytemp.yZ1HgZV

五、trap 命令的用法

trap命令用来在 Bash 脚本中响应系统信号。

最常见的系统信号就是 SIGINT(中断),即按 Ctrl + C 所产生的信号。trap命令的-l参数,可以列出所有的系统信号。


$ trap -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT
 4) SIGILL   5) SIGTRAP  6) SIGABRT
 ... ...

trap的命令格式如下。


$ trap [动作] [信号]

上面代码中,"动作"是一个 Bash 命令,"信号"常用的有以下几个。

  • HUP:编号1,脚本与所在的终端脱离联系。
  • INT:编号2,用户按下 Ctrl + C,意图让脚本中止运行。
  • QUIT:编号3,用户按下 Ctrl + 斜杠,意图退出脚本。
  • KILL:编号9,该信号用于杀死进程。
  • TERM:编号15,这是kill命令发出的默认信号。
  • EXIT:编号0,这不是系统信号,而是 Bash 脚本特有的信号,不管什么情况,只要退出脚本就会产生。

trap命令响应EXIT信号的写法如下。


$ trap 'rm -f "$TMPFILE"' EXIT

上面命令中,脚本遇到EXIT信号时,就会执行rm -f "$TMPFILE"

trap 命令的常见使用场景,就是在 Bash 脚本中指定退出时执行的清理命令。


#!/bin/bash

trap 'rm -f "$TMPFILE"' EXIT

TMPFILE=$(mktemp) || exit 1
ls /etc > $TMPFILE
if grep -qi "kernel" $TMPFILE; then
  echo 'find'
fi

上面代码中,不管是脚本正常执行结束,还是用户按 Ctrl + C 终止,都会产生EXIT信号,从而触发删除临时文件。

注意,trap命令必须放在脚本的开头。否则,它上方的任何命令导致脚本退出,都不会被它捕获。

如果trap需要触发多条命令,可以封装一个 Bash 函数。


function egress {
  command1
  command2
  command3
}

trap egress EXIT

六、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年12月29日

科技爱好者周刊:第 89 期

$
0
0

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

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

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

封面图:澳大利亚西部是世界上日照最充足的地区之一,三分之一的房屋装有太阳能发电装置。

刊首语

前不久,我认识了一个朋友,他以前在某个小型电商公司做网络销售,负责提高网站的销售额。

他提到,老板那时每个月要他们填报表,自己给自己设指标,下个月要销售多少。

他说,这个怎么估计呢,我也不知道下个月会销售多少,受到太多不可控因素的影响了。我每次都拍脑袋填一个数字,就像卖保险一样,不清楚下个月会有多少人来买,只能尽力去做。

毫不意外,下个月你很努力了,可能也卖不好,销售额平平,怎么办呢?最后他只好离开了。

听了他的故事,我就想,销售这样的工作,你是否能够成功,根本不是自己能够决定的,运气的成分要比努力更大一些。我能想到的另一个这样的行业,大概就是证券业,业绩主要取决于市场有没有行情。如果遇到大熊市,业绩就不会好。

相比那些取决于外部因素的工作,还有一些工作基本不受外部因素的影响,只取决于你自己的能力,软件开发就是这样的工作。基本上,一个程序员如果能够成功,运气的成分比较小,个人实力才是主要因素。

一个人选择职业的时候,真的应该考虑这些问题。这个职业受外部因素的影响有多大,外部因素对你是否有利?

这么说吧,如果你不是在一个经常下雨的地方,就不要去卖伞。

前端框架免费视频

本周的培训推广是 Vue 和 React 两个前端框架的免费视频课,由国内最大的职业教育平台之一"开课吧"提供。感谢他们对周刊的支持。

目前,Vue 和 React 覆盖了国内 90% 以上的企业级前端开发。如果想进大厂,不管是面试还是工作,肯定都会遇到。下面两个免费的专题视频,一个是 Vue 的路由实现,另一个是 React 基础知识,可以帮助初学者更好地掌握这两个框架,学习起来也很方便,随时随地都可以看。

(1)《vue-router 前端路由原理剖析》。涉及的知识点:通过 Vue.use() 开发 Vue 插件,前端路由原理,Vue 的响应式机制,实现自己的 vue-router。

(2)《React 最佳实践入门》。涉及的知识点:React 中的 MVVM 架构,JSX 相关使用,函数式组件及 React Hooks,基于 React 的 TidoList 开发。

微信扫描下方二维码(手机端可以长按两次),添加小助理就能领取免费的视频课。

资讯

1、3D 打印小区

美国一家建筑业创业公司正在墨西哥南部,开发一个 3D 打印小区。一旦建造完成,将有50座 3D 打印房屋,其中前两座已经完成。

房屋的面积为46.5平方米,并不算大,但包含两间卧室、一个客厅、厨房和浴室。它使用 Vulcan II 3D 打印机,只需要24小时就可以打印出一栋房子。除了速度快,其他优点还包括零废料和更好的调色。下图是打印现场。

2、自动驾驶卡车送货

自动驾驶创业公司 Plus ai 宣布,该公司的自动驾驶卡车在三天时间里行驶了4500公里,完成了一次长途送货,车上是2吨黄油。不过,车上并不是完全无人,而是坐着一个安全员,随时观察行驶情况。

Plus ai 还说,它的自动驾驶卡车送货,已经持续了一年,现在是第一次对外宣布。现在的目标是,2022年开始大规模商业推广。

3、恐龙尾巴

北京中国地质大学的邢立达老师,一次在缅甸密支那的市场上发现了一块奇特的琥珀。后来确认,这块琥珀有9900万年历史,里面是一根恐龙的尾巴。这是人类第一次发现,琥珀里面包含了恐龙的一部分身体。

那只恐龙只有麻雀大小,身上有羽毛,但还没有进化成鸟。尾巴的所有细节----骨头,肉,皮肤和羽毛----都保存下来了。而且,尾巴里面仍然含有液体,表明这是在活着的时候,被困在粘性物质之中。下面是尾巴的 CT 扫描图片。

4、虚拟旅行

随着 VR、高速无线网、无人机、漫游车技术相继成熟,实时的虚拟旅行已经可以变成现实。以色列的一家创业公司正在尝试把实时 VR 与无人机结合起来,让用户坐在家里亲身体验身处异地的感觉。

用户戴上 VR 头盔,按下按钮让远程的无人机起飞,无人机的摄像头会传回拍到的景像,实时的360度视角,无人机下方也能看到,全彩高清。这家创业公司已经制作了,专门向 VR 头盔提供实时360度三维视频的无人机,通过超快5G无线网络将视频传给用户。

5、激光清洁玻璃

有人发现,特斯拉公司申请了汽车玻璃的激光清洁专利。根据专利文件,特斯拉打算用摄像头检测车辆玻璃上的污垢,包括挡风玻璃、侧面玻璃、后方玻璃和摄像头玻璃。一旦检测到就发射激光,清除污垢,直到表面干净为止。

激光头安装在引擎罩、挡泥板和 B 柱等处。这项技术的主要目的是为了自动驾驶时,摄像头具有清晰的道路视野。并且,玻璃涂了氧化铟锡涂层,防止激光束透过玻璃,照射到乘客。特斯拉公司认为,激光清洁比清洁剂和刮水器更好用。

6、人类的自然寿命

澳大利亚科学家在《自然》杂志发表论文,认为人类的自然寿命是38岁。所谓自然寿命,就是在野生状态下人类的平均寿命。目前,人均寿命的提高完全是生活水平和医疗条件改善导致的。

研究人员发现,基因的 DNA 有42处与哺乳动物的最大寿命有关。他们一共研究了252种脊椎动物的基因组,发现最长寿的哺乳动物是弓头鲸,寿命为268岁。巨型海龟的寿命为120岁,非洲象为65岁。

7、一句话消息

  • 意大利研究团队构建了一个社会模型,每个人的技能、智力、能力都是平均分布,彼此相差不远,但是社会的发展都是随机事件驱动。模型发现,运行四十年后,财富分布是80:20,即20%的人口拥有大约80%的财富,与真实社会很相似。这说明,运气完全可以解释为什么有些人成功。

  • 哈佛大学的研究人员开发了一个人工智能的乳腺 X 光照片解读系统,发现早期癌症的成功率,高于研究团队请来的全部五个专家。以后看病,门诊和报告解读完全可能都交给计算机。

  • 以色列媒体报道了一桩匪夷所思的诈骗案。一家中国风投准备投资以色列创业公司,走漏消息被骗子知道了。骗子分别注册了双方的相似域名,都是末尾加s,然后给双方写信。风投和创业公司以为互相通信,其实都在跟骗子通信。最后,风投的100万美元汇入了骗子的指定账户。

  • 澳大利亚研究人员发现,零重力环境下放置一天,80%的癌细胞会死亡。下一步,他们打算将癌细胞送入太空,进行观察。

  • 密歇根州立大学的一位博士生,为了毕业需要发表论文,但是得到了许多拒稿信。答辩时,她就穿着17封拒稿信做成的裙子,表示自己一路的艰辛。

  • 欧洲保险公司拒绝对煤炭项目出售保险,导致欧洲无法新建火力发电厂了。

  • 澳大利亚全国都在发生森林大火,下面是截止2020年1月1日这次森林大火的地点。火灾的原因是天气高温,导致森林异常干燥。这些火灾使得澳大利亚人意识到,气候灾难就在身边。

文章

1、苹果和 Nvidia 分手了(英文)

Nvidia 公司的并行计算平台 CUDA 将不再支持 Mac 电脑,而 Mac 电脑一贯是使用 AMD 公司的 GPU,这到底是怎么回事。

2、如何使用 Bash 命令进行数据处理?(英文)

处理数据文件,现在主要使用 Python 语言。但是,命令行的 Bash 命令也可以用于数据处理,简便又快速,本文讲解几个主要的命令。

3、我在南极科考的三个月(中文)

谷帅目前在杜克大学环境学院念博士,主攻海洋生物地球化学循环,因为科研项目,他第一次前往南极,在美国的南极科学考察站----帕尔默科考站,度过三个月的科考时光。

4、氢燃料的优点、缺点和可行性(英文)

本文较系统地讨论了,氢气作为清洁能源的前景。

5、文本注释工具评论(英文)

作者网络阅读的时候(包括网页、PDF 和 Kindle),需要做笔记。他点评了市场上目前的各种笔记工具,介绍了自己的选择。

6、我在5天内重拍 Mac 系统默认壁纸(中文)

从 OSX 10.9 版本开始,MacOS 每个版本的命名都是美国加州的一个地名,同时会发布一张或者一套该地拍摄的系统壁纸。我想尝试重新拍摄 Mac 每个版本的默认壁纸。(@baochuquan 投稿)

7、谷歌的 AGPL 许可证政策(英文)

威力最大的开源许可证是 AGPL,它规定只要网络服务含有 AGPL 代码,整个服务的代码都必须以 AGPL 许可证开源。谷歌和苹果都明确规定,自家产品不得包含任何 AGPL 代码。

8、如何制作一个 NFC 纽扣(英文)

本文介绍作者如何把 NFC 芯片用树脂封装成一颗纽扣,然后手机就能从这颗纽扣读取数据。

9、使用 GitHub Actions 创建 Docker 镜像(英文)

本文通过详细的解释,介绍如何实现 GitHub 仓库发布新版本时,自动生成 Docker 镜像并提交到 DockerHub。

10、脸书的防广告拦截器措施(英文)

脸书页面上有很多广告帖。

为了防止广告拦截器,实际的 HTML 代码是下图那样,并且还插入了动态生成的随机字符,使得你不可能写出 CSS 选择器,将广告帖屏蔽。

工具

1、Legra.js

一个 JS 库,可以生成乐高积木的图案。

2、hello.js

一个专门用于 OAuth2 登录的 JavaScript 库。

3、slap

一个命令行下的文本编辑器。

4、JSONCrush

一个 JSON 数据的压缩工具,可以把压缩后的 JSON 数据附加在 URL 上面。

5、Eternal Terminal

一个类似 SSH 的服务器远程登录工具,但是可以自动重新连接而不会中断会话。

6、Sweet Home 3D

一个开源的室内设计 3D 软件。

7、roughViz.js

一个生成手绘风格的网页图表的 JS 库。

8、AnonAddy

一个匿名邮件的转发工具,特点是允许开设无限个邮件账户。比如,你的用户名是johndoe,系统会分配给你一个二级域名johndoe.anonaddy.com,你可以在这个域名上开设无限个邮件账户。

9、Arya

Arya 是一款基于 Vue 的在线 Markdown 编辑器,粘贴 HTML 自动转换为 Markdown,支持 PPT 预览,以及绘制流程图、甘特图、时序图、任务列表、五线谱等功能。(@nicejade 投稿)

10、Drumbot

机器学习的鼓点机器人,可以根据用户输入的节拍,自动生成新的旋律。

资源

1、deploy-your-own-saas

该仓库收集可以自己部署的开源 SaaS 服务。

2、Python 开发最佳实践指南

开源的中文电子书,翻译自英语原版,介绍 Python 语言的用法。

3、Swift 的 iOS 开发教程

免费电子书,介绍如何用 Swift 语言进行 iOS 编程。

4、编译器设计基础

免费的英文电子书,PDF 格式。从最基础的内容讲起如何写编译器,偏重数学知识。

5、死亡的微软产品

该网页列出微软公司所有已经死亡的产品,其中我最怀念的是微软的 Encarta 百科全书。

图片

1、改变驾驶规则的那一天

1968年9月3日之前,瑞典的车辆都跟英国一样,在道路左边行驶。但是,瑞典政府决定,从9月3日那一天开始,全国变成在道路右边行驶,这样就跟欧洲大陆其他国家保持一致。

9月3日的凌晨1点至凌晨6点,全国道路关闭,只允许紧急服务或特殊许可的车辆。从凌晨4:50开始,车辆必须切换到道路右边行驶。

当天全国的交通一片混乱,到处都是道路堵塞,上图是那一天的情景。最麻烦的是公交车,所有公交车都必须改装,车门从位于车辆左侧,改成位于车辆右侧。

2、互联网诞生的地方

1969年10月29日,互联网诞生于加州大学洛杉矶分校 Boelter Hall 大楼三楼的3420室。

那天晚上10点半,一位名叫 Charley Kline 的研究生坐在 ITT 电传打字机前,有史以来第一次,将数据发给560公里以外斯坦福研究所的比尔·杜瓦尔(Bill Duvall)的电传打字机。这是美国 ARPANET 网络的起源,ARPANET 则是后来互联网的雏形。

上图:3402室已经恢复成1969年的样子,供人参观。

上图:那时采用的电传打字机终端,现在 Unix 系统里面的缩写 tty 指的就是这个东西。

值得一提的是,那天晚上 Charley Kline 想把命令 LOGIN 传给 Bill Duvall,但是只传了前两个字母LO,等到第三个字母G时,系统就崩溃了。两个人电话沟通以后,修复了 BUG,20分钟后,总算把这个单词传过去了。

3、Sydney Mead

美国科幻小说画家 Sydney Mead 2019年12月30日逝世,享年86岁。他负责了许多经典电影的概念设计,比如《银翼杀手》、《Tron》。

他的官网上有很多这一类的美术作品,值得一看。

文摘

1、生活就是一场庞氏骗局

我刚刚意识到,生活本质上是一个巨大的庞氏骗局,而且这个金字塔正濒临崩溃。

这个社会中,相对少数的老年人通过大量年轻人的经济贡献来维持生活。年轻人交的税,使得政府可以发送养老金,养活老年人。等到年轻人变老的时候,又通过更年轻的人交的税维持生活。

但是从1950年代开始,随着出生率的下降和预期寿命的持续增加,老年人不断变多,年轻人的比例下降。根据世界卫生组织,全球老年人的比例从1955年的10.5%,增加到1995年的12.3%,2025年将达到17.2%。最终,我们将生活在一个世界里,更少的年轻人来支持更多的非常老的人。那时会怎样?

没有任何一个庞氏骗局,能幸免于难。

美国目前的医疗总费用超过1万亿美元,占国内生产总值的14%。随着人口老化,这笔钱还将不断上升。从长远来看,控制医疗保健成本,确保每个人都能负担得起基本医疗服务,是必不可少的。但是,未来很可能没有办法保证,每个人都得到基本医疗服务。我们唯一的希望在于生物医学研究,研究重点必须针对预防,而不仅仅是治疗,因为预防总是比治疗疾病便宜。

2、埃博拉病毒的发现者

1973年,Muyembe 在比利时大学博士毕业。他本可以留在欧洲,但是决定返回祖国刚果民主共和国。那时还称为扎伊尔,刚刚脱离比利时独立。

回到非洲后,他的工作条件非常差。没有实验室,没有老鼠可以实验,工作起来非常困难。他不再能够进行医学研究,只好转为调查流行病。

1976年,他接到命令,被派去刚果中部,调查一种刚刚爆发的神秘疾病。那种病的症状很类似黄热病、伤寒或疟疾,但是死亡率高得多,已经有很多人死了。

Muyembe 来到当地的一家医院,空空荡荡,只有一个母亲和一个婴儿。到了晚上,婴儿也死了,于是医院完全空了。

第二天早上,当地人听说首都派来了医生,于是涌来医院排队,希望医生给他们吃药。Muyembe 对这些病人进行抽血检查,但是整个医院没有一副手套。他一针扎下去,取出针头的时候,血液大量涌出来。他第一次看到这种现象,而且手指上也沾满了鲜血。他赶紧洗了手,太幸运了,没有被感染。

Muyembe 立即知道,这是他以前从未见过的疾病。死亡的人很多,一旦感染,很快就会死亡。他开始使用长针,获取肝脏的样本,也看到了同样的事情,血液从扎针处涌出。

当地的一些比利时修女已经接种了黄热病和伤寒疫苗,但也感染了这种疾病。他说服患有这种疾病的一位修女,与他一起飞回首都金沙萨。然后,他在修女去世前采集了血样,将其送到比利时。

在那里,科学家用电子显微镜试图找出罪魁祸首。他们看到了一条蛇状的细丝,与其他病毒相比,该细丝非常大,与已知的病毒都不一样。血样又被送到了美国疾病预防控制中心(CDC),那里是世界最先进的病毒实验室。CDC 证实这是一种引起出血热的新病毒。科学家以发现地附近的一条河流的名字,将这种病毒命名为埃博拉病毒。后来确认,扎伊尔的埃博拉病毒是目前世界上致死率最高的病毒。

言论与数字

1、

2019年可能会是过去十年里最差的一年,但却是未来十年里最好的一年。

-- 王兴,时间是2018年12月7日

2、

每个女人平均生2.1个孩子,才能保证总人口不下降。目前全世界一半国家的生育率低于这个数字。

-- 《全球生育率崩溃》

3、

只要没有人愿意构建一种不复杂的、并且为普通民众提供尽可能多的功能的数据库,Access 数据库就难以淘汰。

-- 《微软为什么杀不死 Access 数据库?》

4、

唐·瓦伦丁(Don Valentine)是美国风投行业的创始人之一。他在1960年代预感到,硅半导体会蓬勃发展,建议他当时的雇主投资半导体公司,被拒绝以后,他决定自己投资。

他成立的投资公司叫做红杉资本(Sequoia Capital),1970年代投了苹果公司,1980年代投了思科、甲骨文和雅虎,1990年代投了谷歌,2000年代投了Airbnb 和 LinkedIn,2010年代投了 Stripe、Square 和 WhatsApp。

-- 《华尔街日报》的唐·瓦伦丁讣告

5、

比特币从来都不是货币,而是一种新型的金融博彩游戏,就像老式的连环信一样,购买者都相信,下一波购买浪潮很快就会到来。

-- 《比特币的11年》

6、

大多数会议都是浪费时间。在我看来,最浪费时间的会议是"状态更新"会议,大家聚在一起分享自己的工作。

-- 《为什么站立会议是无用的?》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月 3日

如何写一份有效的技术简历?

$
0
0

现在找工作的程序员很多,都需要写简历。

我见过很多简历,写得很糟糕,看不出这个人的亮点在哪里。一个人总是有亮点的,对不对。

一些同学私下找我,让我帮忙修改简历。我在这里把自己的看法写出来,开发者的简历应该怎么写,效果最好。以后再有人找我,就让他看这篇文章。

如果你按照本文的建议,我保证你会写出一份令人印象深刻的简历,拿到面试的机会大大增加。

一、以项目为主体,设计你的简历

根据一项研究,招聘人员(尤其是大公司的)在2018年仅花费大约7.4秒,分析一份简历。几秒钟的时间,如果找不到感兴趣的点,他就会 Pass 你的简历。

所以,你动手写简历之前,脑袋里面要有一个观念: 简历是用来传递信息的,一定要突出重点内容。不要写得密密麻麻,堆砌各种无关的信息,这样只会埋没你的长处,让招聘人员抓不到重点。

那么,你应该把什么信息,放到简历上面呢?

对于开发者来说,你的项目就是你的简历。你需要突出你的项目,和项目涉及的技能,让招聘人员一目了然。 简历的主体,至少一半以上的内容,应该是你做过的项目,或者取得的成就,这是最有证明能力的东西。

如果你是学生,简历不必写你的绩点、上过的课程、得过的奖学金,当过学生会干部,组织过社团活动、通过四六级考试等等。那些东西对企业没用,缺乏有针对性的证明能力。

你也不要描述自己的工作态度,比如"具有团队合作精神"、"积极进取"、"努力工作",这是默认你应该做到的,不是得分项。

二、针对企业的需要,突出你的技能

下一个问题是,项目经历应该怎么写,才能一眼打动企业的招聘人员?

大家要这么想,企业招聘的目的,是找到帮他解决问题的人,或者说,招聘帮他干活的人。如果你让他看到,你可以胜任他的工作,他就会想要你。

企业也没有把握什么人能胜任,他只能假设,如果你掌握了工作所需要的几种核心技能,就是初步合格的人选。

所以,企业在简历上寻找的,就是你有没有他需要的那几种技能。这才是招聘人员最关心的信息。 所以,简历应该突出的就是,你拥有企业想要的技能,你的经历证明你可以胜任。

企业想要的技能,往往是一些特定的技术。你应该在简历里面包括这些技术的关键字,而且要写得详细一点,不要只写技术的大类。比如,应聘 Java 岗位,就不要只写掌握 Java,而要写掌握 Spring 或者 Hibernate。

注意,写技术名词的时候,不要拼错单词,也不要写错大小写,比如把 jQuery 写成 Jquery,把 TypeScript 写成 Typescript,这会显得不专业。

三、项目的三要素

事实上,项目信息的写法有一个公式。

项目 = 产品 + 技术 + 结果

据说,谷歌要求应聘者描述经历时,每段经历必须提供下面三个信息:

  • 做了什么产品
  • 用到了什么技术
  • 取得了什么结果

比如,"领导了 X 功能的开发,使其集成到 Y 产品,带来额外的 Z 收入"。

除了三个基本信息,项目描述还要注意下面几点。

(1)主要介绍新项目,你过去3年~4年的经历最关键。不要详细描述较旧的项目。

(2)突出项目规模,比如用户数量、数据有多少 TB、每天的收入金额或交易量。

(3)最好都用动词开头,这样让人感到简洁有力。为了避免单调,动词也可以适当变化,"开发"、"实现"、"部署"、"完成"这些词都可以换着用。

四、量化你的项目,给出数字

最后一点,每个项目的描述都需要量化,最好能给出数字。这能够大大提高简历的可信度和专业性,给招聘人员留下深刻印象。

请看下面这些改写的例子,加入了量化,效果好了很多。

改写前:

设计和实现 CRM 系统的 X 功能。

改写后:

设计并实施了 X,这是 CRM 系统的一项新功能,可使2万名用户轻松跟踪他们的业务支出。

改写前:

结合使用 OAuth 和 JavaScript,实现了社交网站登录和个人资料的自动填充。

改写后:

通过使用 OAuth 和 JavaScript,实现了社交网站登录和个人资料自动填充,将网站的转化率提高了20%。

改写前:

使用 Ajax 技术减少页面加载时间。

改写后:

使用 Ajax 技术减少了30%的页面加载时间。

改写前:

与同事合作,部署了一些 Web 应用程序,并排查故障。

改写后:

与后端工程师团队合作,一起开发、部署、故障排查了7个的 Web 应用程序。

改写前:

参与了将网站前端转为 React 框架的工作。

改写后:

与一个同事合作,在一周内,将网站前端转换为 React 框架。

改写前:

使用 Less 开发了一个客户端的全新 CSS 样式。

改写后:

使用 Less 开发了一个客户端的全新 CSS 样式,使文件大小减少了70%,将首屏显示的时间减少了2倍。

五、小结

应聘 IT 行业,难度其实是不高的。因为整个行业非常缺工程师,尤其是中高级工程师。

企业自己也知道,不太容易招到水平很高的高级工程师。因为大家都在抢人,遇到合适的人选,出手稍慢,可能就被其他公司截走了。所以,只要你的水平能满足企业的最低要求,他们就愿意招你,至少会给面试机会。

作为应聘者,你只要能证明自己具有合格的项目开发能力,就肯定可以很轻松地拿到 Offer。因此,你真正要做的是:提高自己的能力,多做项目。然后,按照上面的几点建议,把项目信息忠实地反映在简历上,就一定能够顺利地找到工作。

(正文完)

人工智能 AI 学习大礼包

人工智能 AI 现在是整个 IT 领域最热的热点,人才相对稀缺,薪酬待遇上升得很快。人才市场的 AI 招聘越来越多,投身这个领域的开发者也变得越来越多。许多同学都希望往这个方向发展,学习相关知识。但是,人工智能不太容易自学,涉及的理论知识太多了,需要阅读大量专业书籍,不断动手编码实践。

这里有一个 价值 3000元 的人工智能学习大礼包 ,针对学习者的实际需要,与企业招聘和岗位要求结合紧密,内容包括以下四个部分:(1)Python 学习资料,(2)人工智能数学基础,(3)数据处理与框架技术,(4)机器学习与深度学习。

各种形式的文件都有:视频课程、专业书籍 PDF 版、知识图谱、项目实战等。其中的视频课程。下面是课程相关的人工智能学习路径(点击看大图)。

这些资料是咕泡学院提供的。该学院成立于2016年,与腾讯、科大讯飞等头部企业展开深度合作,在课程中注入更多贴合企业实际的项目实战,打造可实现商用的真人工智能课程。学院在线学习人数已经突破40万人次,向一线互联网大厂输送了18000多名高薪程序员,其中不乏阿里P7、百度、腾讯、科大讯飞、深蓝科技等大公司。所有课程均由技术专家研发设计,保证全程直播授课,课程源码全部共享 。

微信扫描下方二维码(手机端长按识别两次),就可以免费获得这个 3000元 的人工智能学习大礼包。

目前,阿里、华为、蚂蚁金服、字节跳动、大众点评等知名互联网业也同咕泡学院达成合作,为学员提供优质内推服务,让每一位学员都能高薪就业。

如果你看了这些资料以后,希望进一步系统学习,并得到老师的指导,可以通过上面的微信客服,报名学习咕泡学院的精品课程 《人工智能 AI 高薪就业实战班》 ,课程的详细介绍欢迎点击下载《招生简章》(PDF 文件,1.6MB)。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月 8日

科技爱好者周刊:第 90 期

$
0
0

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

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

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

封面图:沙漠餐厅,阿联酋迪拜,出自 Instagram

刊首语

程序员当久了以后,如果项目顺利,一般都有机会组建或者负责团队,开始管人。

管人其实比开发更难。技术是死的,人是活的,随时会变。把大家团结起来,一起奋斗,很不容易。

我认识的许多程序员,都不愿意管人。一个创业的朋友开一个工作室,他说这几年有好几次机会做大,但是都放弃了,因为不知道怎么管人。 他说,我可以管好自己,但我不知道怎么管好别人。

首先,招聘或者解雇,都是非常麻烦的事情。然后,绩效的评估,奖金的分配,很容易产生矛盾。只要有人心怀不满,就会有内耗,影响企业或团队的发展。万一出现"删库跑路"这种极端情况,更是要命的打击。

马云和任正非强在哪里?不是技术,而是管理和市场判断,他们都非常善于管人,尤其是管理大型组织。任正非就说过,我最大的本事就是一桶浆糊,把几万人粘成一股绳。

所以,程序员应该对自己有一个清醒的认识,管人和技术是两种不同的能力。如果你不善于管人,就不要去任职管理岗位;如果你在创业,就应该请专门的经理人,负责企业管理。

反过来说,对于那些不是程序员、不精通技术的人,只要你善于管理,那么你可以去找程序员,跟你一起技术创业。

验证码识别服务 2Captcha

许多网站登录时都有验证码(又称 Captcha 测试),防止脚本登录。验证码有很多类型,最常见的就是字符识别(下图),那些歪歪扭扭的字符,计算机不容易准确识别,人类可以做到。

国内外有很多验证码识别服务,用于抓取数据,或者特定目的的脚本,比如秒杀商品。最近,2Captcha 联系我,希望开发中国市场,想在这里宣传一下他们的服务。它创始于2013年,一直运行至今。在行业里面,有不错的口碑和信用,是一个可靠的服务提供商。

2Captcha 最大的特色是,不管字体多么扭曲的验证码,都可以正确识别,包括 ReCaptcha 这种难度较高的验证码(下图),因为他们采用真人识别!任何人都可以去平台接活,按照工作量获取报酬。目前,"识别员"主要来自印度、俄罗斯、委内瑞拉、菲律宾等国家,覆盖了全球所有时区,官方承诺随时都有足够的"识别员"在线。2Captcha 希望有更多中国人去他们的平台,以提高中文验证码的识别准确率。

开发者只需要把验证码图片发到他们的服务器,就会有真人识别这些图片。每次验证码识别需要12秒~14秒,开发者使用前一次请求返回的 ID 轮询服务器,拿到识别结果。2Captcha 的收费相当便宜,1000次识别最低只要0.5美元(不到人民币4元),中国用户可以使用支付宝付款。如果识别不正确,他们保证退款。

除了文字验证码,下面这样的图片验证码也可以识别,详见他们的 API 文档。如果遇到开发困难,或者对文档有疑问,可以联系他们的客服,会提供技术支持

最后,他们也向国内用户开放推荐提成。如果你推荐他人使用该服务,可以提成5%~10%;如果你是一个开发者,你开发的软件集成了 2Captcha,可以获得软件产生的费用的10%。

资讯

1、英尺的标准

我们知道,美国不使用国际度量衡,而是使用英尺。但是,你可能不知道,美国的英尺也跟世界其他地方的英尺不一样。

1893年,美国政府规定,1英尺等于1200米除以3937,即0.3048006米。但是,其他国家的英尺长度都是0.3048米。因此,美国英尺比国际英尺长了0.0000006米。虽然只是小数点后第7位不一样,但是对于土地测量来说,会导致很大的误差。

1959年,美国决定采用国际英尺,但这不是强制规定,有40个州直到今天还在使用美国英尺,其他州则使用国际英尺。比如,俄勒冈州和华盛顿州就不一样,连接两州的桥梁施工,不得不考虑这种差异。2019年10月,美国政府宣布,2022年彻底结束美国英尺的使用,所有州都一律使用国际英尺。

2、程序员收入最高的美国技术公司

美国一家数据公司发布,2019年工程师年薪最高的技术公司排名,分成初级工程师、中级工程师、高级工程师、资深工程师、首席工程师五档。年薪包括工资、奖金和股票。

3、无家可归者的宿舍城市

随着加州房价的上涨,无家可归的流浪者越来越多。据统计,加州2018年的无家可归人口约为13万,占美国全国总数的近四分之一。一个民间组织提出设想,花费30亿美元,建设一个300英亩(约1.2平方公里)的城市,专门对无家可归者开放,可以容纳15万人。

该组织说,符合条件的流浪者都可以免费入住,并随时可以自由离开,你想一直住下去也可以。这座城市将提供高密度的宿舍住房,睡觉和淋浴都是免费的,每栋宿舍楼都有活动区,吃饭由每个街区的公共食堂提供。

每位入住者将领到一个带 RFID 功能的腕带,充当大门钥匙,还可以用来领取药品。入住者还将获得工作和技能培训,帮助他们离开这座城市。

4、自变形机器人

麻省理工学院发明了一种叫做 M-Blocks 2.0 的自变形机器人。这种机器人是一个个小方块,可以根据所要解决的问题自动变形,比如一会变成一根直线,一会变成一个金字塔。

每个方块的六个面上都有类似条形码的系统,供其他方块识别并与之通信。方块内部有磁铁,可以相互粘附形成坚固的结构。研究团队的原型产品是16个方块组成的变形机器人,设想中将来会有100万个方块组成的大型机器人,火灾的时候可以自动变形为梯子,让受困的人爬出来。

5、机器狗葬礼

最近,日本千叶县的一座寺庙举行了一场特殊的"葬礼",哀悼索尼公司生产的机器狗AIBO。当天,56条机器狗并排"躺"在祭坛上,而它们的原主人等也到场参加了"祭奠"。

主办这场葬礼的是一家电器修理公司。旧款 AIBO 自1999年起共销售了约15万台,目前已经停止生产,改成了新款,但是很多老年人仍然希望修好旧款机器狗。有些机器狗实在无法修好,只能用来"捐献"零件,因此就举办了这场特殊的"葬礼",抚慰那些遭分解的 AIBO 及其主人。

这种葬礼已经举办了8次,每次先由机器人进行致词,随后由2条 AIBO 机器狗朗读佛经,最后再由寺院的住持为"去世"的 AIBO 们诵经超度。

6、排队领取密码

圣诞节前夕,德国法兰克福附近的一所大学,出现了奇特的一幕。师生们在学校 IT 办公室前面排着长队,带着身份证,领取上网密码,38000多人必须在一周内领完。

该校的校园网前几天被恶意病毒感染,全部瘫痪,与外部的网络连接已经断开,每台计算机都必须下线杀毒,为此 IT 部门特别制作了1,200多个装有杀毒软件的 U 盘。而且是杀毒两次,工作日先杀一次,周末收到杀毒软件更新版后再杀一次。

所有人的密码都必须重置。由于电子邮件服务器也被感染,无法通过电子邮件发送,只能让所有人凭身份证到现场领取。

7、一句话消息

  • 国际自然保护联盟发布研究报告,气候变暖使得海洋温度上升,直接导致全球海水的氧气含量下降,海洋生物面临缺氧的问题。

  • 上海警方首次使用警用巡逻机器人参与2020跨年夜安保工作。它有4个广角高清摄像机、1个红外热成像及1个变焦高清摄像机,具有人脸识别功能,还可以用中英文语音播放不同的防范宣传内容,自带的升降式云台最高可升至1.8米。

  • 美国一家 App 数据分析公司 发布《2019年全球最受欢迎的安卓应用》,数据来自谷歌 Play 商店,共分十类。下面是游戏类和社交类的排名。

  • 美国电影《爱尔兰人》的主要演员全部年过70,但是电影情节主要发生在主人公四五十岁时,所以全片都使用人工智能算法,对演员影像进行"减龄"处理。

文章

1、我如何找回失去的域名?(英文)

作者拥有的域名,被域名管理当局错误地回收。本文记录了他如何维权,不断投诉,最终要回域名的故事。如果你也失去对域名的控制,可以参考他的做法。

2、飞机上网的原理与现状(英文)

本文介绍民用航班上网的解决方案,以及存在的问题。

3、日本旅行指南(英文)

一个美国程序员在日本住了一年以后,写的一份日本旅游的简单指南。

4、Mithril 框架入门(英文)

Mithril 是一个前端 JS 框架,只有 9.5KB,如果你感到 React 或 Vue 太重,应该看看这个框架。

5、二元一次方程的新解法(英文)

古代巴比伦人在4000年前,就发现了一元二次方程的求解公式(上图)。本文提出了一种新解法,可以简化这个公式的推导过程。

5、Cloud Run 托管网站(英文)

Cloud Run 是谷歌云的一个 Serverless 服务,特点是直接抓取 Docker 镜像文件运行,不用自己部署文件。

本文介绍作者如何使用这个服务,部署自己的静态博客网站。此外,网上还有一份 Cloud Run 介绍,也可以参考。

6、大炮 DDOS 攻击分析(英文)

大炮 DDOS 攻击指的是,将恶意脚本通过大型网站分发。只要有人访问被感染的大型网站,就会加载恶意脚本,然后他的浏览器就会向目标网站快速发出大量请求。这样的用户一多,就形成了 DDOS 攻击,导致目标网站下线。

7、手机如何提高数码照片的质量?(英文)

这篇文章很长,详细介绍了旗舰手机采用的各种措施,让用户拍出更高质量的照片。

8、为什么他能成为谷歌新当家?皮查伊的登顶之路(中文)

随着两位创始人的隐退,印度人皮查伊成为谷歌的最高管理者。皮查伊1972年出生在印度,但家境并不算富裕,小时候家里都没有冰箱,他父亲是个电气工程师,母亲是名速记员。印度理工学院毕业后,来到斯坦福大学就读数学和半导体物理。

9、Git 原理解释(英文)

本文用通俗的示例和图片,解释 Git 进行版本管理的原理。

10、瑞典视频制作女孩 Simone Giertz 的故事(英文)

《连线》杂志的长篇文章,介绍29岁的瑞典女孩 Simone Giertz,她在 Youtube 发布视频,拍摄自己如何制造各种机械装置。她的最新作品是把一辆特斯拉汽车,改装成小卡车。去年,她得了良性脑瘤,目前还在接受化疗。从她身上,可以看到国外年轻人在干什么。

工具

1、Elementary OS

一个基于 Ubuntu 的 Linux 发行版,目标用户是不懂计算机的人,用户界面高度模仿 MacOS。

2、Koko Analytics

一个 WordPress 插件,用于收集和分析用户访问数据,不使用任何外部服务。

3、si78c

早期电子游戏《太空侵略者》的命令行移植版,使用 C 语言编写。

4、VirtScreen

Linux 系统的虚拟桌面 App,可以起一个 VNC 服务,然后用 iPad 或其他设备的 VNC 客户端连接上去,就可以形成扩展桌面。(@liangguo 投稿)

5、cairoshell

Windows 系统的一个可定制的桌面环境。

6、knDB

一个轻量级的 Node.js 数据持久化库。(@Knove 投稿)

7、舒尔特方块游戏

舒尔特方格是数字1-25随机分布在25个方格里面,用户按照从小到大的顺序,依次指出每个数字的位置,根据耗时判断注意力水平的高低,详见百度百科。这个游戏最好在手机上玩。(@jwenjian 投稿)

8、svg-text-animate

一个将英语或数字字符,转为 SVG 动画的 JS 库。(@oubenruing 投稿)

9、githuber-md

WordPress 的 Markdown 编辑器插件。

10、docker-slim

一个 Docker 镜像文件的瘦身工具,据称最好情况下,可以让镜像文件体积缩小为原来的30分之一。

11、Cloudflare workers

Cloudflare 正式发布 workers 功能了,允许网站直接部署在它的边缘网络,即 CDN 的每个节点上面。这应该是目前 serverless 最好的方案了。

12、openEuler

华为发布自家的 Linux 发行版 openEuler,基于 CentOS。这是早先的华为 EulerOS 系统的开源版。根据介绍,主要特点是 ARM64 的完美支持和极高的安全性。

资源

1、深海

这个网站可以不停往下拉,看看每个深度的海底都有些什么生物。上图是海底45米。

2、概率、统计和随机过程导论

免费的英文本科生《概率和统计论》教科书。

3、椭圆曲线加密教程

椭圆曲线加密的优点是,密钥较小,但是加密强度保持不变,比特币就是采用这种加密方法。本文是英文教程,解释椭圆曲线加密的原理。

4、2019年度最佳视觉错觉

这是视觉错觉作品比赛的官方网站,评选出了2019年度的最佳作品,都是视频。

5、火星地图

美国宇航局的火星在线地图,谷歌也有一个类似的网站

图片

1、老虎照片

日本那须野生动物园的推特帐号,总是放他们养的一只老虎的照片。这只老虎的表情有点奇怪,不太像老虎,不知道怎么养成了这样。

2、旧金山的地形

旧金山的北面是金门大桥(golden gate bridge),通往马林郡(Marin County);东面是海湾大桥(bay bridge),通往奥克兰。

文摘

1、等几年,再用新框架

在技​​术领域,每个月都有一个新框架。例如,iOS 就有一个新的 UI 框架 SwiftUI。

我的建议是,等待几年再去学习它。不要担心会错过机会,这不是飞机航班,你仍然随时可以登机。任何时候,你都不应该因为害怕落后于潮流,而做出决定技术决定。如果你学习一个 UI 框架,它就应该对你的业务带来帮助,而不是为了学而学。

新技术总是被其制造商大肆宣传,他们不会说:"我们的新东西是平庸的",他们有动机大肆炒作,以光彩照人的方式谈论自己的产品,这对他们有好处。一些在职业生涯早期的开发人员,也会加入炒作,他们是第一次见到这样的东西,因此非常兴奋。总之,新框架总是有自己的支持者,你问他们这个框架好不好,他们总是会说这很棒。

但是,新框架总是有这样或那样的问题,很少像承诺的那样好。它在某些方面可能会很好,而在其他方面则很糟。文档通常不完整,如何有效使用框架也没有形成规范。一旦你使用了它,团队的其他人也必须学习它,才能让整个团队适应你的代码,这给团队带来了额外的负担。因此,等待几年消除所有这些问题是有意义的。

如果你急于采用一个框架,可能会花费很多时间来研究它,之后很可能会发现,它根本不起作用。或者它确实有效,但不适用于你。再或者它以某种方式工作,但在性能或者向后兼容性上有严重问题。新框架就是一个未知数。

如果你采用了新框架,结果它无法正常工作,而你又必须切换回去,就要付出两次过渡成本。

新框架的出现并不会立即使旧框架过时。例如,Swift 1.0 是2014年发布,但真正可用是在2016年。这也不意味着你2016年就要使用它,因为2016年的版本是最早可投入生产的版本,真正成熟可能要等到2018年的版本。因此,新的语言、工具或框架不会淘汰旧的语言、工具或框架。过渡期会有很多年,在此期间,你可以随时采用新技术。没必要在出现的那年就赶上潮流。

2、激光武器

美国国防部终于制造出了第一批可以用于实战的激光武器,马上就会装备军队,在诸如悍马车、导弹驱逐舰、战斗机上面部署。

激光以前就用于战场。自从1970年代以来,激光一直用来标记目标,为导弹提供肉眼看不到的瞄准点。激光还用于对目标进行测距,通过发出激光,计算光束到达物体所需的时间,由此可以确定两个位置之间的精确距离,这些信息可用于炮弹的发射。

但是,激光还从来没有直接作为杀伤性的武器,用于战争。传统武器通过炸药释放能量,而激光以电磁形式传输破坏性能量。直接向目标传送能量。

简单说,激光武器将光线集中在高度聚焦的光束之中,然后可以将其指向目标。激光能将能量传递到目标表面,该能量会在目标表面产生热量的快速积累。足够强的激光束会导致金属和其他固体物质融化,易燃液体点燃,弹头爆炸等等破坏。

想象一下激光武器对准飞机的情况。激光可能会燃烧穿过飞机的表面并进入油箱,从而引起火灾。或者,它可能会烧掉飞行员的皮肤,杀死飞行员。激光还可以引爆舰载弹药。甚至有可能激光直接烧断飞机的机翼使其坠毁。

子弹和炸药要占据储藏空间,发射完了就没了,相比之下,激光的优点是只要发射器能够运行,它就可以一直发射下去。激光沿直线传播,与炮弹不同,不受风和重力的影响。激光以光速运行,敌人很难有时间做出反应。

激光武器的缺点是,它的开发很困难,需要大功率及其大量能量,在发射前必须有地方储存能量,怎么储存这么多能量呢。激光设备相当精密,而武器必须坚固耐用,它是否能在战争的严酷环境中正常工作,现在还存在疑问。

激光也是光,理论上敌方可以用镜子,将激光反射回发射方。但是反射镜的表面必须非常干净,且具有高反射性,这在战争时不容易做到。

(图片:美国陆军战车上的激光发射装置)

激光武器的最大缺陷也许在于,它在大气中传播时,会聚集尘埃、水和其他微小颗粒,从而使得光线散射,能量减弱。据估计,足以将一个人切成两半的激光,最终会减弱到只能使他严重晒伤的程度,不一定会使其失去工作能力。随着激光穿过云、雾或烟,问题变得更加严重。传统武器(比如炮弹)本身具有的能量,会全部在目标上释放,与距离无关,但是激光武器的发射距离越远,能量就越弱。

第一种在部队部署的激光武器是美国海军的 AN/SEQ-3 LaWS 激光武器系统。该系统的功率是30千瓦,主要用来对付无人机。该武器的成本为4000万美元,于2014年部署在海军舰艇上。尽管它可以用于战争,但目前还未使用过。

(图片:2014年部署海军的激光发射器,用于击落无人机)

现在,军队开始采购300千瓦的激光武器。据报道,陆军、海军和空军都希望拥有激光武器。陆军要求激光武器能够击落巡航导弹,最终还可以击落炮弹和火箭,为地面部队提供了防御保护。空军希望激光武器可以安装在任何飞机上,以保护飞机免受导弹袭击。美国海军希望安装在军舰上的激光武器,用来防御反舰巡航导弹。

(图片:未来携带激光武器的战斗机)

言论与数字

1、

如果蜜蜂从地球消失,人类将只剩下四年的生命。没有蜜蜂,就没有授粉;没有授粉,就没有植物;没有植物,就没有动物;没有动物,就没有人。

-- 爱因斯坦

2、

过去十五年,迪斯尼收购了四家电影公司,成为内容生产的霸主:皮克斯(Pixar,2006),漫威(Marvel,2009),卢卡斯影业(Lucasfilm,2012),21世纪福克斯(21st Century Fox,2019)。

但是,迪斯尼没有亚马逊、Netflix、苹果那样深厚的技术背景。现在,迪斯尼推出了线上视频点播服务"Disney+",开始弥补这个缺陷。

-- 《迪士尼的流媒体服务首秀》

3、

我最近试图启动一个 React Native / TypeScript 项目,但是整个生态系统使我非常困惑。网上不同的教程建议使用各种不同的工具来创建项目,某些项目模板由于过时,甚至无法编译。所有这些工具没有统一的、及时更新的文档,令我感到这真是一场噩梦。

-- HN 读者

4、

1955年,英国历史学家帕金森发现,1914年至1928年之间,英国海军舰只的数量减少了三分之二,船员数量减少了三分之一,但官僚的人数每年仍激增近6%。他得出一个结论,官僚组织会自我膨胀,这被称为"帕金森定律"。

-- BBC

5、

也许未来,数据会像人员一样无法自由移动,每进入一个国家,都要经过虚拟海关或边境检查站。

-- 《数字民族主义上升的威胁》

6、

机器解析 PDF 文件,就是一场噩梦。文本块不是按顺序的,可以以任意顺序出现在文档中,句子和单词都可能在中间被打断。

-- 《英国政府要求以 HTML 发布文档,而不是 PDF》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月10日

FFmpeg 视频处理入门教程

$
0
0

FFmpeg 是视频处理最常用的开源软件。

它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具。本文介绍 FFmpeg 命令行如何处理视频,比桌面视频处理软件更简洁高效。

如果你还没安装,可以根据官方文档 先完成安装。

一、概念

介绍 FFmpeg 用法之前,需要了解一些视频处理的基本概念。

1.1 容器

视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。

常见的容器格式有以下几种。一般来说,视频文件的后缀名反映了它的容器格式。

  • MP4
  • MKV
  • WebM
  • AVI

下面的命令查看 FFmpeg 支持的容器。


$ ffmpeg -formats

1.2 编码格式

视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。

常用的视频编码格式如下。

  • H.262
  • H.264
  • H.265

上面的编码格式都是有版权的,但是可以免费使用。此外,还有几种无版权的视频编码格式。

  • VP8
  • VP9
  • AV1

常用的音频编码格式如下。

  • MP3
  • AAC

上面所有这些都是有损的编码格式,编码后会损失一些细节,以换取压缩后较小的文件体积。无损的编码格式压缩出来的文件体积较大,这里就不介绍了。

下面的命令可以查看 FFmpeg 支持的编码格式,视频编码和音频编码都在内。


$ ffmpeg -codecs

1.3 编码器

编码器(encoders)是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式视频/音频的编码和解码。

以下是一些 FFmpeg 内置的视频编码器。

  • libx264:最流行的开源 H.264 编码器
  • NVENC:基于 NVIDIA GPU 的 H.264 编码器
  • libx265:开源的 HEVC 编码器
  • libvpx:谷歌的 VP8 和 VP9 编码器
  • libaom:AV1 编码器

音频编码器如下。

  • libfdk-aac
  • aac

下面的命令可以查看 FFmpeg 已安装的编码器。


$ ffmpeg -encoders

二、FFmpeg 的使用格式

FFmpeg 的命令行参数非常多,可以分成五个部分。


$ ffmpeg {1} {2} -i {3} {4} {5}

上面命令中,五个部分的参数依次如下。

  1. 全局参数
  2. 输入文件参数
  3. 输入文件
  4. 输出文件参数
  5. 输出文件

参数太多的时候,为了便于查看,ffmpeg 命令可以写成多行。


$ ffmpeg \
[全局参数] \
[输入文件参数] \
-i [输入文件] \
[输出文件参数] \
[输出文件]

下面是一个例子。


$ ffmpeg \
-y \ # 全局参数
-c:a libfdk_aac -c:v libx264 \ # 输入文件参数
-i input.mp4 \ # 输入文件
-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数
output.webm # 输出文件

上面的命令将 mp4 文件转成 webm 文件,这两个都是容器格式。输入的 mp4 文件的音频编码格式是 aac,视频编码格式是 H.264;输出的 webm 文件的视频编码格式是 VP9,音频格式是 Vorbis。

如果不指明编码格式,FFmpeg 会自己判断输入文件的编码。因此,上面的命令可以简单写成下面的样子。


$ ffmpeg -i input.avi output.mp4

三、常用命令行参数

FFmpeg 常用的命令行参数如下。

  • -c:指定编码器
  • -c copy:直接复制,不经过重新编码(这样比较快)
  • -c:v:指定视频编码器
  • -c:a:指定音频编码器
  • -i:指定输入文件
  • -an:去除音频流
  • -vn: 去除视频流
  • -preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
  • -y:不经过确认,输出时直接覆盖同名文件。

四、常见用法

下面介绍 FFmpeg 几种常见用法。

4.1 转换编码格式

转换编码格式(transcoding)指的是, 将视频文件从一种编码转成另一种编码。比如转成 H.264 编码,一般使用编码器libx264,所以只需指定输出文件的视频编码器即可。


$ ffmpeg -i [input.file] -c:v libx264 output.mp4

下面是转成 H.265 编码的写法。


$ ffmpeg -i [input.file] -c:v libx265 output.mp4

4.2 转换容器格式

转换容器格式(transmuxing)指的是,将视频文件从一种容器转到另一种容器。下面是 mp4 转 webm 的写法。


$ ffmpeg -i input.mp4 -c copy output.webm

上面例子中,只是转一下容器,内部的编码格式不变,所以使用-c copy指定直接拷贝,不经过转码,这样比较快。

4.3 调整码率

调整码率(transrating)指的是,改变编码的比特率,一般用来将视频文件的体积变小。下面的例子指定码率最小为964K,最大为3856K,缓冲区大小为 2000K。


$ ffmpeg \
-i input.mp4 \
-minrate 964K -maxrate 3856K -bufsize 2000K \
output.mp4

4.4 改变分辨率(transsizing)

下面是改变视频分辨率(transsizing)的例子,从 1080p 转为 480p 。


$ ffmpeg \
-i input.mp4 \
-vf scale=480:-1 \
output.mp4

4.5 提取音频

有时,需要从视频里面提取音频(demuxing),可以像下面这样写。


$ ffmpeg \
-i input.mp4 \
-vn -c:a copy \
output.aac

上面例子中,-vn表示去掉视频,-c:a copy表示不改变音频编码,直接拷贝。

4.6 添加音轨

添加音轨(muxing)指的是,将外部音频加入视频,比如添加背景音乐或旁白。


$ ffmpeg \
-i input.aac -i input.mp4 \
output.mp4

上面例子中,有音频和视频两个输入文件,FFmpeg 会将它们合成为一个文件。

4.7 截图

下面的例子是从指定时间开始,连续对1秒钟的视频进行截图。


$ ffmpeg \
-y \
-i input.mp4 \
-ss 00:01:24 -t 00:00:01 \
output_%3d.jpg

如果只需要截一张图,可以指定只截取一帧。


$ ffmpeg \
-ss 01:23:45 \
-i input \
-vframes 1 -q:v 2 \
output.jpg

上面例子中,-vframes 1指定只截取一帧,-q:v 2表示输出的图片质量,一般是1到5之间(1 为质量最高)。

4.8 裁剪

裁剪(cutting)指的是,截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)。


$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]

下面是实际的例子。


$ ffmpeg -ss 00:01:50 -i [input] -t 10.5 -c copy [output]
$ ffmpeg -ss 2.5 -i [input] -to 10 -c copy [output]

上面例子中,-c copy表示不改变音频和视频的编码格式,直接拷贝,这样会快很多。

五、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月14日

我对中国科技行业的看法(译文)

$
0
0

@danwwang 是彭博社的一个技术分析师,写了一篇2019年回顾,详细谈了他对中国科技行业、中美贸易战的看法。

我觉得,他的那篇文章有很多启发,总体比较客观,中国的劣势和优势都谈到了。下面就是主要部分的翻译,插图是我配的。

我对中国科技行业的看法

作者:@danwwang

原文网址:https://danwang.co/2019-letter/

1、

2019年,我从香港搬到了北京。

北京不适宜步行,天气也不好,但它是一个令人着迷的地方。

世界上有几个地方感觉像是世界的中心,北京就是其中之一。(其他的地方还有旧金山,东京和华盛顿特区。)我的朋友说:北京是一个散发出阴郁力量感的城市,孟买和那不勒斯也给人这种感觉。

2、

北京到处都是令人生畏的建筑物,每栋大楼的入口都散发着一种神秘感。

外国人应该记住,北京是一个纯粹依靠政治意愿维持的城市。请问世界上还有哪个主要城市远离重要的河流或水域?

古代的中国皇帝,选择北京将北方的平原与南方的稻田连接起来。这座城市已经连续800年成为中国的首都。

3、

对于那些想要过上快乐生活的人,北京可能不适合他们。亚洲有许多适合生活的地方:香港是一个热带小岛,新加坡基本类似,台北很宜居,东京也不错。

北京吸引的是中国最聪明的人,然后吸引着世界上许多有趣的人。现在旧金山和纽约的人们,对话内容非常局限,谈来谈去就是十几个话题,而北京是众多重要故事的中心。

4、

中国的一个问题是,向世界输出的成功的文化产品太少了。

刘慈欣的《三体》三部曲算一个成功的文化输出。2019年,我可以再添加一个例子:抖音(TikTok)。两者都是好东西。

令人失望的是,过去的十年中,中国没有创造出更多刺激世界其他地区的文化产品。毕竟在这期间,中国的人均 GDP 翻了一番。下一个十年是否会有所不同,我们能在中国看到一系列激动人心的全球性文化创作?北京最好可以回答这个问题。

5、

我大部分时间都在思考中国的技术发展轨迹。

在聚灯光下,中国的技术努力看起来非常壮观。中国是除美国之外唯一能够发展出互联网巨头的国家,中国的互联网巨头可以跟硅谷相提并论。中国的移动互联网体验肯定比美国消费者能够体验到的要好得多。

中国公司已经在某些工业技术方面建立了坚实的地位,包括太阳能发电、移动基础设施设备和高铁。中国还在消费电子领域取得了不错的成绩,从智能手机到无人机。中国公司在人工智能和量子计算等新兴技术方面处于领先地位。

6、

虽然这些成就并非微不足道。但它们也不是翻天覆地的巨大成就。

首先看互联网公司。我感到奇怪的是,世界似乎已经认定,消费者互联网是技术的最高形式。我认为,微信、Facebook、Snap 之类的社交软件,对于推动技术和人类文明进步,并没有很高的重要性。

Facebook 和腾讯这样的公司,反而可能对人类技术发展产生负面影响。他们开发的软件提供了有趣的、拖累生产力的工作干扰。这两家公司将本来应该进入诸如材料科学或半导体制造等研发密集型领域的聪明孩子,引入到了广告优化和游戏开发中。

7、

旧金山和北京的互联网公司,在商业模式创新和利用网络效应方面具有很高的水平,但这不一定会导致研发和创造新的人类知识。

顺便说一句,这就是为什么我认为北京的互联网公司如此努力的一个原因。因为这些公司没有拥有任何真正的超出对手的知识产权,因此成功的唯一途径就是残酷的争分夺秒的市场竞争,让竞争对手失去市场。

中国确实拥有活跃的消费者互联网,但这不意味着中国处于世界领先的技术地位,我们应该放弃这种观念。玩线上游戏、在线购物、食品外卖的大量人口,并不能使一个国家成为技术或科学领导者。

8、

尽管阿里巴巴和腾讯在软件开发技术方面,给人留下深刻的印象,但他们的业务成功很大程度上取决于中国的市场规模和社会监管环境。

移动支付的普遍存在,主要原因不仅是技术创新(虽然确实有大量技术创新),还包括针对普通民众的金融服务不完善和信用卡的不普及。电子商务之所以在中国行之有效,是因为中国建立了一流的基础设施,并且有许多农民工可以在人口稠密的城市地区运送商品。

许多中国互联网公司都是优秀的公司,但他们的成就主要是消费者互联网,在我看来,他们在科学和工业上取得的成就并不显著,算不上那种人类技术文明的里程碑式的公司。另一方面,即使把消费者互联网视为最重要的技术领域,美国公司在这方面看起来做得也不差。

9、

在制造业方面,中国拥有强大的实力。一些公司已经在钢铁、太阳能发电和电信设备等行业中占据领先地位。

不过,要想真正成为德国、日本、韩国和美国那一类行业巨头,中国公司还有很长的路要走。实际上,我怀疑中国公司应该整体上视为表现不佳的公司。很少有中国品牌成为全球成功的品牌,而在航空和半导体等技术含量更高的行业,中国公司仍远远落后。日本和韩国的世界知名品牌,要比中国多很多,事实上,中国的全球品牌寥寥无几。难道我们不应该对世界第二大市场有更多期望吗?

10、

中国在人工智能、量子计算、生物技术等新兴技术领域的成就,目前还尚无共识。但我们认为,中国公司可能会领导这些技术领域,这是一个合理的说法。

不过,到目前为止,这些领域的产品不像真实的科技项目,更像商业行为或投机。人工智能在目前阶段,主要是一些模糊的产品或附加服务,行业总收入难以确定,其他领域的许多项目也是如此。

我认为,如果只看到中国在新兴技术领域的发展,可能会忽视其在现有技术上的弱点。以半导体、机床和民航技术为例,它们可以通过更清晰的技术和商业标准进行衡量,中国在这些方面并不出众。

11、

对于投机式科学项目的关注,揭示了中国技术行业的另一个问题:太强调量化投入。

大部分对中国技术的评论都集中在专利注册、研发支出、期刊出版数量的增长。因为这些数据很容易找,所以人们经常围绕它们设计"创新"指标。

但是,这些都只是投入。如果这些投入不提供产出,那么它们就是无关紧要的。事实上,无论中国还是世界其他地方,这一类指标跟实际的产出往往是不相关的。根据这些指标,中国专利注册数量和 R&D 支出已经超越世界其他地区,但中国公司的商业表现并不是如此。

12、

中美贸易战提供了最清晰的证据,表明中国的技术基础脆弱。

当美国政府决定限制对特定公司的技术出口时,中兴通讯濒临破产,华为受到了重大打击。这表明,大多数中国公司的创新非常薄弱,在掌握基础技术方面总体上并未取得重大成功。

其中最重要的瓶颈是半导体。如果没有 CPU、GPU 和 FPGA 这样的特殊芯片(大部分来自美国供应商),即使是像华为这样大的公司也会很困难。

13、

冷静看待的话,中国的技术行业既有优点也有缺点。

优点是,中国是美国之后唯一建立互联网巨头的国家,这使它处于继续发展数字技术的有利位置。它已在某些硬件技术(例如智能手机)和许多类型的工业品上开发了可靠的品牌,生产出良好的消费产品。

缺点是,中国企业在建立全球品牌方面表现不佳。在汽车、半导体和航空等涉及研发密集型技术的行业中,即使在国内市场,中国公司的地位也很弱。在许多方面,中国的技术成功太像纸老虎了。

14、

但是我认为,中国的长期前景是光明的。

中国拥有两个很重要的优点。首先,中国工人生产世界上大多数商品,这意味着他们正在吸收来自生产过程的大部分知识。第二,中国是一个庞大而充满活力的市场。有了这两点,在屡次受到美国制裁之后,中国公司已经坚定了掌握重要技术的决心。

15、

技术是一种实践性的产品,必须不断实践,才能使知识保持在当前水平。日本的伊势神宫,每20年就要拆毁原来的宫殿,在旁边的土地重新造一遍,就是为了让后代人不会失去建造宫殿的知识。

我最近还看到一篇报道,美国政府忘记了如何生产 "Fogbank",这是生产氢弹的必不可少的机密材料,因为相关专家已经退休。然后,政府不得不花费数百万美元来恢复生产知识。

我认为,难以衡量的过程知识比易于观察的工具和知识产权更重要。如果人类不是继承了过去2,000年的各种生产过程的知识,那么我们将几乎没有有意义的进步。

16、

如今,中国工人生产世界上大多数商品,这意味着他们在技术学习过程中的参与程度超过其他任何人。

很少有中国公司是世界领先的品牌,但是中国的工人正在使用最新的工具制造世界上许多最先进的产品。他们正在获取生产过程中的知识,而我的假设是,他们将比其他任何人都更容易开发下一代技术。更具体地说,中国工人将能够复制他们当前使用的大部分外资设备,利用自己的知识产权,制造具有全球竞争力的下一代产品。

17、

这就是消费电子领域已经发生的事情。过去的十年中,苹果公司每年在深圳和其他中国城市培训100万名工人,以制造世界上最复杂的消费电子产品。苹果公司对外宣传,中国工人只从事组装工作,而且大部分是国外零件,苹果则保留所有利润。这样说是真实的,但是却遗漏了很多。

首先,即使100万人中的大多数员工学到很少,也有数千名生产线工程师成为全球电子装配领域最出色的专家。结合这一事实和在智能手机供应链上投资的数十亿美元,难怪深圳正在推动当今硬件的创新,创造出各种出色的消费电子产品。

第二,中国品牌能够利用相同的苹果供应链,并学习如何制造出非常好的手机。现在,中国品牌约占全球智能手机销售量的40%(尽管它们的利润很小)。

第三,据一位学者称,在十年间,中国在每部手机的增值中所占份额,估计从4%上升到25%。中国不再只负责组装,而是已经找到了如何制造手机更有价值的部分。

18、

通过整合智能手机供应链,中国公司学习了如何制造复杂的组件,使其成为可出口的品牌产品。中国在开发手机的底层软件方面仍然远远落后,但是如果撇开这一点,这不是一个很好的成功故事吗?

一旦中国公司的能力接触到了技术前沿,这些公司就会开始自己推动技术向前发展。现在,中国公司在智能手机的所有后续技术(例如消费级无人机)方面也处于领先地位。

这影响的不仅仅是中国的电子供应链,从家具到重工业的许多商品的设计和生产都在中国。这些生产中心使研发与制造之间的紧密连接成为可能,从而缩短了生产循环中的知识流通。

19、

大多数跨国公司都将生产转移到中国,因此中国现在占全球制成品总出口的约五分之一。

美国、德国和日本的公司喜欢说,他们在本国保留了最有价值的工作。大多数情况下,这是正确的。但他们押注,正在接受培训的中国劳动力将无法消化外国技术并加以复制,无法创造出中国的品牌。这种赌注至少在包括高铁、造船和电信设备在内的技术上都失败了。

我认为,随着中国经济的发展,中国人吸收和学习能力还会进一步提高。

20、

劳动力的技术学习是推动中国企业能力发展的一个供应方因素,中国企业还受益于需求方面的因素:中国的国内市场太大了。人们往往会忘记这一事实。

中国公司在建立全球品牌方面,的确还没有取得很大的成功,但你可以解释为,他们专注于本国这个全球增长最快的大型市场。

中国的市场规模会压倒许多缺陷,例如教育系统窒息了创造力。而且,尽管消费者互联网公司在战略上并不重要,但因为市场规模大,使得中国公司在购买上游组件、开发产品方面比欧洲和日本的公司更可靠。

今天的中国是一个庞大的内部市场,由充满活力的公司,富有创造力的工人以及政府对技术的浓厚兴趣组成。就像19世纪下半叶的美国一样,美国主要依靠国内需求建立了世界上最大的市场。

21、

然后有一个意志的问题。

中国一直渴望摆脱依赖美国技术,长期以来这都是一个异想天开的任务。但是在美国制裁出现以后,中国的私人公司正在更仔细地思考如何保持持续供应。

一家公司告诉我,美国的政治行动现在像大地震一样难以预测,对供应链造成巨大影响。每家公司都必须培育非美国的,最好是中国本国的替代品。技术部门对待这种想法最严肃,因为美国只需控制很少的组件,就会使得像智能手机或基站这样复杂的产品无法生产,这也意味着只需要集中力量,找到少数那几个核心组件的替代方法,就能保持生产。

22、

二战后,美国回应苏联和日本崛起,主要方法是加强自身的创新。但到目前为止,美国对中国的技术进步做出的反应,却是遏制对中国企业的供货。

结果就是,美国的制裁没有引发自己的技术创新,反而刺激了中国进一步发展自己的创新。

中国的技术基础一直很脆弱,但是现在中国人已经意识到了问题所在,将不断设法解决。中国工程师正在尝试替换美国现有的技术,这比从头发明新技术相对简单。而且在技术史上,很少产品只有一条制造途径。

23、

从长远来看,任何国家都很难垄断关键技术。

古巴比伦在农业上做不到这一点,中国人在火药上做不到这一点,英国也未能保持对纺织技术的控制。18世纪英国对纺织工业实施出口管制之后,美国公司只是雇用了一些记住其设计的人,就能恢复生产。其中之一塞缪尔·斯莱特(Samuel Slater)只凭记忆,就在美国复制出了纺织机。他在英国被称为"叛徒斯莱特(Slater the Traitor)",在美国被誉为"美国工业革命之父"。

我在加利福尼亚工作时听到的一句话是,知识以啤酒的速度传播。工程师喜欢共享,很难阻止技术知识的传播。如果这个原则不成立,就不会有硅谷这样的技术集群。

24、

尽管中国经济有一些问题,这个国家仍然感觉像一个非常乐观的地方。国际调查始终表明,中国人对未来感到乐观。

中国工人正在使用最新的工具来生产世界上大多数商品。从长远来看,我的假设是他们将能够复制工具并制造出同样好的最终产品。他们之所以能够这样做是因为国内市场巨大且充满活力。今天的中国拥有一个庞大的工业体系,几乎不缺少向后和向前的任何一个生产环节,这意味着它是一个几乎完整的学习循环。政府和企业受到掌握大多数技术的紧迫感的激励。

但我也认识到,这种假设是理论性的,有很多不确定因素。(1)也许工人无法充分理解他们使用的工具,也就无法复制并改进它。(2)尽管国内市场很大,但政策不一定会鼓励竞争,中国的生产率增长十年来一直在放缓。(3)当中国劳动力仍然比发达国家便宜很多时,很难看到投资开发世界上最好的软件和机器人系统的理由。因此,让我们拭目以待,中国未来如何应对这些实际的挑战。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月16日

科技爱好者周刊:第 91 期

$
0
0

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

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

[通知] 下周五(1月24日)是除夕,周刊暂停一周,祝大家新年如意。

封面图:摄影师意外拍到了蓝鲸排泄的照片,出处英国《每日邮报》

刊首语

最近,我读完了《我在印度的701天》,作者是孔子学院派到印度理工学院的汉语老师。

原文是天涯论坛的一个长篇连载,后来结集出版。如果你想了解当代印度社会的第一手观察,从一个中国人的视角,我推荐这本书。

书中提了一个问题,世界第二大运动是什么?

世界上最有市场的运动是什么?人人都知道:足球。但世界上市场第二大的运动呢?

答案可能众说纷纭,但正确答案是:板球。

足球在全球有33~35亿球迷,板球球迷数量则有20亿~30亿,仅次于足球,光印度一个国家就有不下十亿板球球迷。板球世界杯也是仅次于足球世界杯、奥运会之后的世界第三大赛事,与橄榄球世界杯齐名。

作为证据,作者提供了下面的数据:印度板球超级联赛正式队员的平均年薪超过250万美元,印度国家队的队长多尼的年薪是3100万美元!作为比较,2016年篮球巨星科比·布莱恩特的年薪是2100万美元,足球巨星梅西的年薪是2500万欧元。

这是非常惊人的,因为印度是一个收入很低的国家。人均 GDP 只相当于中国的四分之一,很多普通人的月收入只有1000到2000人民币。但是,印度高收入阶层的收入水平,不输给世界任何地方。

我看了这本书才知道,孟买和德里的房价跟北京一样高,甚至更高。印度民众如果靠工资想在孟买买房,不吃不喝需要300年。

为什么很穷的国家能诞生高收入的体育行业和昂贵的房地产?

我认为,这些行业的高价格都是人口导致的供需引发的,跟人均收入没有关系。印度人口马上就要到14亿,超过中国,成为世界人口最多的国家。印度人对板球的热爱、对住宅的需求,支撑了天价的产生。

中国的人口增长已经停滞了,人均收入看上去也不会快速增长。因此我认为,总的来说,今后一段时间,印度市场的机会将比中国多。

前端免费教学视频

春节假期马上就要开始了,大家对年后的求职和就业可能有很多打算。下面是本周的培训推广,向大家介绍一门很有针对性的前端免费教学视频。

近十年来,前端开发一直是热门行业,招聘需求量非常大。而且,前端开发比后端容易入门,成为很多人转行或者零基础小白入门的首选方向。当然,最主要的原因是前端工程师的高薪资。

《前端全栈程序员:小白165天逆袭成为 Web 工程师》 是一门免费视频课程,讲解内容为前端开发基础知识和深入前端三大核心框架实战,覆盖了前端开发所需的关键技术和技能,适合零基础和刚入门想要提升开发技能的同学。

上面课程主要针对 Web 网站开发,想要从事移动端小程序开发的同学,可以关注下面两门课程,假期里看看,分别是 《小程序入门》《2019 小程序新语法课程》

以上课程由"职坐标"提供,它是腾讯课堂上面唯一一家双认证("严选课程"和"官方"认证)的前端培训机构,由多名资深讲师辅导,培训以就业和跳槽加薪为导向。

微信扫描下方二维码,加入职坐标 Web 前端学习群,即可免费获得200本前端学习资料;回复"小程序"还可获得职坐标专属福利----68元小程序课程的1元体验券,名额只有199个,感兴趣的同学抓紧时间。

资讯

1、机器人乐队

《北京日报》报道,2019年4月,全球首支中国风机器人乐队在清华大学对外亮相,乐队名字叫"墨甲",包含三位机器人乐手,分别是演奏排鼓的"开阳"、演奏竹笛的"玉衡"和演奏箜篌的"瑶光"。该项目由清华大学美术学院与清华大学未来实验室联合发起。

三个机器人分别采用了吹奏、拨弦、打击三种截然不同的演奏技法。演奏的乐曲全部是原创音乐,为乐队量身打造的。设计师认为,机器人乐手有一些人类不具备的优点,比如吹奏竹笛时,机器人的气流可以随意调节,比人类的气息长得多。另外,人类只能用两只手打鼓,机器人有四只手臂,可以同时在四个不同音高的鼓上演奏。

2、山地重力储能

太阳能和风能这样的绿色能源,最大的问题就是间歇性,不能保证持续供电,需要有能量储存机制。锂电池的成本昂贵,大规模储电不可行。奥地利科学家提出一个新设想,叫做山地重力储能。用电低谷时将砂石运到山顶,用电高峰时让砂石从山顶掉落,转动涡轮以发电,跟水力发电机制类似。

跟水力储能相比,这个方案的优点是对场地要求低,不需要建造一个大坝。而且,砂石比水便宜,也不会蒸发,因此可以无限期地使用。缺点是能量效率比较低,损耗会很大。

开发团队认为,该技术比较适合孤立的岛屿,比如夏威夷,那里的能源供应成本很高,由于旅游业,能源需求经常是季节性的。

3、C919 试飞

2019年12月27日,中国国产的大客机 C919 在上海浦东机场进行了第6架样机的试飞,在空中飞行了2小时5分钟,完成了30个试验点,安全返回了地面。这是 C919 的最后一架样机,标志产品原型阶段已经完成,下一步就是大强度的试飞测试。

目前,六架样机分别在上海浦东、西安阎良、山东东营、江西南昌等地进行测试。首批正式的飞机零组件也已经开工投产,目标是2021年获得国家认证,然后交付给客户。C919 项目2009年4月完成初始设计,2015年11月在上海首次展示,2017年5月首次试飞。

4、大众汽车徽标更换

2019年9月,大众汽车公司披露了新的徽标设计,完全变成了平面 2D 图案,线条更简单,对比性更高。底色采用全新色调,并且允许其他颜色的变化,使用上更加灵活开放,可以让数字界面更具弹性且活泼。历史上,大众汽车的徽标曾经修改过11次。

与大众汽车一样,奥迪汽车在2018年底也申请了两个新的徽标,同样把图案"压扁"成 2D 图形。奥迪汽车没有说明新徽标的用途。外界猜测可能用于新产品,比如电动汽车。

5、彩色打印机的秘密跟踪标志

2017年,美国政府的一份绝密报告泄漏出来,FBI 后来成功抓到了将这份报告打印、并携带出办公室的泄密者。这份报告的打印件被外界拿到以后,专家们发现了一个有趣的东西:打印件的页面上,出现了大量规则的黄点。它们用肉眼几乎看不见,但是在蓝光下可见(上图)。FBI 就是根据这些秘密标记,抓到了泄密者。

专家们分析这些点的位置以后,认为这是一种编码,内容为打印页面的确切日期和时间:2017年5月9日06:20,还有打印机的序列号(下图)。这个事件证实了很久以来的一种猜测:彩色打印机厂商会在页面上添加隐形标志,但是从不对外界透露。

6、嫦娥四号登月一周年

2019年1月3日10时26分,嫦娥四号在月球背面着陆,至今已满一周年。为了纪念这个事件,中国探月工程项目发布了一系列月球高清照片,这是嫦娥四号和它携带的玉兔二号月球车拍摄的。总共有 17,239 个数据文件,大小为 20.9 GB。

中国计划在2020年下半年启动嫦娥五号任务,将2千克的月球岩石带回地球。如果成功,这将是1976年苏联 Luna 24 任务以来第一批带回地球的月球样本。

7、一句话消息

  • Facebook 将发布一个工具,可以检测出深度伪造的视频,比如发现下图的人脸是合成的,以防用户上传伪造的视频到它的网站。

  • 科学家认为,乌鸦可能是灵长类动物以外最聪明的动物。

  • 谷歌公布澳大利亚2019年上升最快的搜索词是"我附近的火情"(Fires near me),因为澳大利亚生了空前的森林大火,许多居民被迫不停搜索火势的蔓延情况。

  • 以色列一个创业公司开发出反无人机系统,可以检测和跟踪4公里以内的无人机。该系统价格很高,但是该公司宣传说,这比一个大型机场关闭一个小时的费用低。

  • 华为公司将云和 AI 调整为第四大事业群 BG。前三个 BG 是电信运营商、企业业务、消费者业务。

  • 一加手机 在拉斯维加斯 CES 展览会上,展出一架用手机做的钢琴,键盘是一加 7T 手机做成的。

文章

1、我的创业产品如何被2.2万美元收购?(英文)

一个印度大学毕业生自述,他如何找到创业的点子,做了一个小产品,然后把它卖掉。

2、神曲背后的创业公司(英文)

本文介绍一家北京创业公司,专门为社交媒体制作病毒式传播的音乐作品,比如抖音的《学猫叫》。

3、Intel 与 AMD 的比较(英文)

2019年10月,微软发布 Surface Laptop 3 笔记本电脑。这台电脑非常罕见地有两种配置,一种是 Intel 的 CPU + GPU,另一种是 AMD 的 CPU + GPU。本文就对这两种配置进行了比较,结果是 CPU 方面 Intel 略占上风,GPU 方面 AMD 较好。

4、实用的 RESTful API 最佳实践(英文)

本文介绍了20多个 RESTful API 的最佳实践。

5、过去10年的20大科学发现(英文)

《国家地理》杂志的长文,回顾21世纪10年代人类取到的20大科学发现。

6、如何使用 Docker Compose 安装 PostgreSQL(英文)

一篇简短扼要的教程,如何使用 Docker Compose 很方便地安装 PostgreSQL。

7、CSS Class 的顺序不重要(英文)

本文解释为什么 HTML 元素的 class 属性值的顺序不重要。

8、网页游戏的 JavaScript 脚本剖析(英文)

网页游戏的 JavaScript 主循环应该怎么写,这篇文章一步步进行了讲解。

9、Unity 与 Unreal 引擎的比较(英文)

Unity 与 Unreal 是两种 3D 游戏、VR、AR 的常用开发工具,本文对它们进行全面的比较,看看哪一个更好。

10、网页第三方追踪原理(英文)

很多网站通过第三方 Cookie 追踪用户,本文以 Facebook 为例,介绍它如何通过一张1像素的图片,追踪用户访问过哪些网站。

工具

1、Pixlr X

一个基于 Canvas 和 WebGL 的在线图像编辑器。

2、微软数学

微软公司的手机 App,通过摄像头拍摄数学公式,给出相关资料,甚至方程式的解。

3、Nitter

该网站是一个开源的推特 Web 客户端,参见代码仓库。同时提供推特用户的 RSS,可以通过下面网址获取指定用户的 RSS:https://nitter.net/[username]/rss

4、repl.it

该网站提供了一个新功能,可以在浏览器里面自动加载并运行各种 GitHub 仓库。这里有一个 C++ 写的命令行扫雷游戏,直接在浏览器运行。

5、Gitpod

浏览器里面的 IDE 编辑环境,一键加载 GitHub 仓库,内部使用的是 VSCode Web 版,支持主要的编程语言。

6、Happy Hues

该网站提供一系列配色方案,可以实时切换、定制,查看效果。

7、sizle

一个在线制作 PPT 的网站。

8、Lasting Paper

一个 Kindle 阅读器的桌面客户端,可以自动同步高亮文本和注释。

9、Hidden Bar

Mac 电脑的软件,可以隐藏/展开系统状态栏的图标。

10、magicCss

一个实现各类图形的 CSS 库。(@ifrontend-xyz 投稿)

11、Edge 浏览器(Chromium 核心)预览版

微软公司发布了使用 Chromium 核心的新 Edge 浏览器,可以从本地的谷歌浏览器直接导入书签,历史等信息。还能从微软自己的或谷歌的扩展商店下载插件。(@jwenjian 投稿)

资源

1、随机过程导论

美国德州大学奥斯汀分校的免费电子教科书,PDF 格式。这里还有同一个老师写的概率论、梳理统计、随机过程的上课讲义

2、SICP(JavaScript 语言版)

经典计算机教材 SICP 的 JavaScript 语言版,新加坡国立大学改编的。

3、人工智能简介

芬兰政府发布免费课程《人工智能简介》,向欧洲的普通公民介绍人工智能知识。内容涵盖了从AI的哲学含义到诸如贝叶斯概率之类的技术主题,大概需要六周的时间才能完成,每个部分需要5到10个小时。

4、学习编程的安卓 App

这篇文章介绍10个专门用来学习编程的安卓 App,主要侧重于 Java 学习。

5、快速

这个英文网页专门收集发生得很快的事情,其中有两件与中国相关。

  • 深圳。1998年至1999年的一年中,深圳增加了100万居民(增长了22%),从440万人增加到540万人。
  • 瑞幸咖啡。Luckin Coffee成立于2017年10月。第一家门店于2018年1月1日开业。在245天后的2018年9月3日,他们在中国拥有1000家直营店。

图片

1、飞碟屋

1965年,一位朋友委托芬兰建筑师 Matti Suuronen 设计滑雪小屋,要求构造简单、价格便宜、而且加热效率高。小屋设计出来以后,有着椭圆形塑料舷窗和折叠式,很像外星飞碟。

这种小屋进行了量产,作为便携式度假屋,在全世界销售。它高4米,宽8米,有一个大房间和一个小浴室,当时的售价是1.2万美元到1.4万美元(相当于现在的8.4万美元到10.5万美元)。

这种小屋一共生产了96座,目前还存在67座。

2、2D 咖啡馆

日本东京有一家 2D 咖啡馆,以白色作为唯一色调,设计的时候考虑了视觉效果,使得整个咖啡馆看上去就像平面图片一样。

有些东西确实是画出来的,比如窗帘和盆栽,但是桌椅都是实物。

文摘

1、水泥的由来

人类最早的建筑物是用泥土做墙,上面加一个茅草的屋顶。你就有了一个小屋。

这种建筑物很不牢固,无法建得很高,或者建成多层建筑。它往往会被雨水冲走,实际上无法在潮湿的环境中使用,也无法抵挡动物和其他人类的入侵。

石头是比泥土更理想的建筑材料,但是裁切形状很不方便,也很难将石头牢固地堆叠起来。要是有液态的石材就好了,能够倒入模具中,制造出任何想要的形状!或者有一种和石头一样强度的胶水,将较小的石头粘起来就好了!

这种技术其实早就存在,实际上,它可能是人类已知的最古老的工艺。这种物质就叫做水泥。

水泥的主要原料是石灰石,它跟贝壳是同一类物质,都是碳酸钙。石灰石是一种沉积岩,通常就是由破碎的贝壳形成的,贝壳经过数世纪的压缩,最终变成了石灰石。

石灰石加热到大约1,000摄氏度时,会产生一种叫做生石灰的粉末,即碳酸钙释放了二氧化碳,变成了氧化钙。生石灰是一种腐蚀性物质,触摸它会灼伤你的皮肤。但是,它有一个最奇怪的特性,与水混合时,它会发生剧烈反应,放出大量热量,足以将水烧开!结果就变成了熟石灰,即氢氧化钙。

现在,你将石灰水浆倒入模具中,然后将其暴露在空气里,就会发生更令人惊奇的事情:几个小时内,这种混合物凝固了,并变得坚硬。氢氧化钙从空气中吸收了二氧化碳,又变回了碳酸钙!换句话说,通过与水和空气混合,石灰石粉末(一种基本的水泥)已经变成了岩石!

纯石灰的水泥太脆,无法使用。但是,加入砂石以后,则变得非常坚固。水泥、水和沙子混合在一起,就产生了砂浆,它是一种胶水,可以将砖石砌成的墙固定在一起。

水泥还可以添加砾石或卵石,制成混凝土,再将其倒入模具以某种形状固定。"水泥"和"混凝土"这两个词经常混为一谈,但从技术上讲,水泥是制造砂浆和混凝土的原料粉末;混凝土是水泥通过添加石料制成的物质,是人行道、建筑物等的组成部分。

自从史前时代,人类就知道这种技术:石灰石的窑化工艺,比陶器和金属加工更古老,甚至比农业还古老。过去的数千年中,人们创造的主要是更好的水泥配方。

纯石灰水泥需要空气凝固,因此如果浇得太厚或在水下(例如,在河中浇筑桥柱的基座),就无法凝固。罗马人是水泥的主要使用者,他们发现在石灰中添加火山灰,会产生可以在水下凝固的水泥。他们使用这种"罗马水泥"来建造所有建筑,许多都保留到了今天。

19世纪中期以来,使用最广泛的水泥是波特兰水泥。它的生产过程是将石灰粘土浆加热到一定程度,使其融合在一起,成为一种称为"熟料"的物质。熟料最初被认为是废料,直到发现将其磨成粉末后,所形成的水泥比罗马水泥更坚固!

但是,无论配方如何,所有水泥都有一个缺点:它们抗压性好,但是无法受力,因此不能当作房梁承重。罗马人使用拱门解决了这个问题,拱门将力沿着两边分散了。

中世纪的建筑商创造了尖的哥特式拱门,它的承重更好,可以造得比圆形的罗马拱门还要高。

二十世纪,一种新的建筑方式出现了:用钢筋加固混凝土。钢筋具有较高的抗拉强度,因此这种"钢筋混凝土"在压缩和拉伸下都很坚固。

2、(by 马未都)

人一生中可以不直接摄入糖,吃淀粉类的、水果类的东西都可以在身体内转化成糖。这个糖足够用了,如果不是救急,人不要轻易去吃糖,或者多吃糖。

多吃糖对身体没好处,会堆积脂肪,让身体变得虚弱。但是糖又能够救急,有的人昏厥后,给他灌一杯糖水,立刻就清醒了;有的人觉得头晕脑胀、什么事都坚持不下去,或者饿得心慌的时候,喝一杯糖水马上就舒服了,这就是糖的作用,它可以迅速在体内增加能量,让人进入极佳的生存状态。

人到了中年以后,糖是有百害而无一利的。有医生告诉我,糖是万恶之源。今天中国糖尿病病人的数量非常大,我的很多朋友聚会,在饭桌有个程序----几个人全撩起肚皮,先给自个儿打一针胰岛素,这就是糖尿病的苦恼。现在糖尿病越来越多发,向年轻人发展去了。过去糖尿病还是富贵病、老年病,现在很多年轻人都有糖尿病,为什么呢?糖的摄入量太大,吃糖也会上瘾。

以我有限的观察,吃糖上瘾的民族第一是美国,第二是中东。我是一个特别喜欢吃甜的人,小时候多甜都不怕!我曾经去过土耳其,过去有一种很甜的果脯叫做伊拉克蜜枣,那个东西巨甜,土耳其那里所有的蜜饯更厉害,甜得你吃一口就给顶住了,可人家都一盘子一盘子地吃。我在美国看美国人吃饭,先吃好大的牛排,吃完后要一大盘冰激淋。那种冰激淋我尝了一口,太甜了!可他们全给吃了,所以美国人的身体状况,不比中国人强。今天美国占有全世界最优良的医疗设备,它的医疗成本是全世界最大的,但他们人均寿命不比中国人长,中国人就是因为摄入糖分少,饮食习惯比他们好。

言论与数字

1、

如果一项技术足够流行,就会有人将其添加到烤面包机中。

-- 一位作者评论 Toasteroid 面包机。这种面包机可以将天气预报打印在烤面包片上。

2、

现在30岁以上的人,是最后一代亲身体验过没有互联网、没有智能手机、没有 ATM 机的世界的人。

-- HN 读者

3、

学术界非常传统,经常惩罚那些不遵守常规的人,而产业界则会奖励不守常规的人。

-- 《自然》杂志对6,000多名研究生的调查

4、

如果我只能给其他程序员一个建议,那就是编写小的代码块,你要多写小方法、小功能、小程序。

我自己写C#时,当函数接近15或20行代码时,我会感到不舒服。我的限制是,一个函数最多最多就是24行代码,因为传统终端就是24行一屏。

-- 《80/24规则》

5、

20世纪70年代,挪威政府希望与瑞典沃尔沃汽车公司达成一项股权协议。挪威获得沃尔沃40%的股份,而沃尔沃将获得挪威大陆架上石油开采权。沃尔沃的股东于1979年1月拒绝了该计划,他们认为价格太低了,挪威的石油并不值钱。

后来,挪威的石油产生了巨大财富,一部分被保存在挪威的主权财富基金中,2018年该基金达到1万亿美元。而沃尔沃公司2010年被中国的吉利公司收购。

-- 维基百科

6、

我曾在甲骨文公司工作多年,这家公司完全是销售驱动的,销售人员通常会骗客户,并保证产品具有它所没有或没有得到很好支持的功能,把产品卖出去之后,再聘请昂贵的顾问使得产品能够跟演示的一致。

如果说苹果是设计师文化,谷歌是工程师文化,那么我想说,甲骨文公司是销售文化。

-- HN 读者

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月17日

Deno 运行时入门教程:Node.js 的替代品

$
0
0

这几天假期,我学习了一下 Deno。它是 Node.js 的替代品。有了它,将来可能就不需要 Node.js 了。

这篇文章就是 Deno 的一个初步介绍,尝试回答为什么 Node.js 不能满足需要,以及 Deno 能够带给我们什么?

以下内容主要基于 Bert BelderRyan Dahl 的最新演讲。

0、

进入主题之前,先说一下 Deno 这个词怎么发音。

两种发音,"德诺"和"蒂诺",我都听到过。看起来,"蒂诺"这个发音应该更合适一些,因为 Deno 的标志是一只恐龙。恐龙(dinosaur)的英文缩写正是 dino。

1、

Deno 是 Ryan Dahl 在2017年创立的。

Ryan Dahl 也是 Node.js 的创始人,从2007年一直到2012年,他后来把 Node.js 移交给了其他开发者,不再过问了,转而研究人工智能。

他始终不是很喜欢 Python 语言,久而久之,就想搞一个 JavaScript 语言的人工智能开发框架。等到他再回过头捡起 Node.js,发现这个项目已经背离了他的初衷,有一些无法忽视的问题。

2、

首先,过去五六年,JavaScript 语言脱胎换骨,ES6 标准引入了大量新的语法特性。其中,影响最大的语法有两个:Promise 接口(以及 async 函数)和 ES 模块。

Node.js 对这两个新语法的支持,都不理想。由于历史原因,Node.js 必须支持回调函数(callback),导致异步接口会有 Promise 和回调函数两种写法;同时,Node.js 自己的模块格式 CommonJS 与 ES 模块不兼容,导致迟迟无法完全支持 ES 模块。

其次,Node.js 的模块管理工具 npm,逻辑越来越复杂;模块安装目录 npm_modules 极其庞杂,难以管理。Node.js 也几乎没有安全措施,用户只要下载了外部模块,就只好听任别人的代码在本地运行,进行各种读写操作。

再次,Node.js 的功能也不完整,导致外部工具层出不穷,让开发者疲劳不堪:webpack,babel,typescript、eslint、prettier......

3、

由于上面这些原因,Ryan Dahl 决定放弃 Node.js,从头写一个替代品,彻底解决这些问题。deno 这个名字就是来自 Node 的字母重新组合(Node = no + de),表示"拆除 Node.js"(de = destroy, no = Node.js)。

跟 Node.js 一样,Deno 也是一个服务器运行时,但是支持多种语言,可以直接运行 JavaScript、TypeScript 和 WebAssembly 程序。

它内置了 V8 引擎,用来解释 JavaScript。同时,也内置了 tsc 引擎,解释 TypeScript。它使用 Rust 语言开发,由于 Rust 原生支持 WebAssembly,所以它也能直接运行 WebAssembly。它的异步操作不使用 libuv 这个库,而是使用 Rust 语言的 Tokio 库,来实现事件循环(event loop)。

4、

你可能会问,为什么使用 Rust,而不是 C++(Node.js 的开发语言)?

主要原因是 Rust 提供了很多现成的模块,对 Deno 项目来说,可以节约很多开发时间。

5、

Deno 本身也是 Rust 的一个模块。如果你想在 Rust 里面使用 V8 引擎,就可以加载 Deno。它等于是一个 V8 的包装层,提供一些底层 API,让你跟 V8 引擎互动。

6、

Deno 只有一个可执行文件,所有操作都通过这个文件完成。它支持跨平台(Mac、Linux、Windows)。

7、

Deno 具有安全控制,默认情况下脚本不具有读写权限。如果脚本未授权,就读写文件系统或网络,会报错。

必须使用参数,显式打开权限才可以。

  • --allow-read:打开读权限,可以指定可读的目录,比如--allow-read=/temp
  • --allow-write:打开写权限。
  • --allow-net=google.com:允许网络通信,可以指定可请求的域,比如--allow-net=google.com
  • --allow-env:允许读取环境变量。

8、

Deno 支持 Web API,尽量跟浏览器保持一致。

它提供 window 这个全局对象,同时支持 fetch、webCrypto、worker 等 Web 标准,也支持 onload、onunload、addEventListener 等事件操作函数。

此外,Deno 所有的异步操作,一律返回 Promise。

9、

Deno 只支持 ES 模块,跟浏览器的模块加载规则一致。没有 npm,没有 npm_modules 目录,没有require()命令(即不支持 CommonJS 模块),也不需要package.json文件。

所有模块通过 URL 加载,比如import { bar } from "https://foo.com/bar.ts"(绝对 URL)或import { bar } from './foo/bar.ts'(相对 URL)。因此,Deno 不需要一个中心化的模块储存系统,可以从任何地方加载模块。

但是,Deno 下载模块以后,依然会有一个总的目录,在本地缓存模块,因此可以离线使用。

10、

由于 Deno 只支持从 URL 加载模块,导致 Node.js 的模块加载写法都会失效。


import React from "react";
import { Box, Grid } from "@material-ui/core";
import { initializeApp } from "firebase/app";

上面的写法在 Deno 里面都是非法的。

Deno 的所有模块都要通过入口脚本加载,不能通过模块名加载,所以必须带有脚本后缀名。

11、

Deno 原生支持 TypeScript 语言,可以直接运行,不必显式转码。

它的内部会根据文件后缀名判断,如果是.ts后缀名,就先调用 TS 编译器,将其编译成 JavaScript;如果是.js后缀名,就直接传入 V8 引擎运行。

12、

Deno 内置了开发者需要的各种功能,不再需要外部工具。打包、格式清理、测试、安装、文档生成、linting、脚本编译成可执行文件等,都有专门命令。

执行deno -hdeno help,就可以显示 Deno 支持的子命令。

  • deno bundle:将脚本和依赖打包
  • deno eval:执行代码
  • deno fetch:将依赖抓取到本地
  • deno fmt:代码的格式美化
  • deno help:等同于-h参数
  • deno info:显示本地的依赖缓存
  • deno install:将脚本安装为可执行文件
  • deno repl:进入 REPL 环境
  • deno run:运行脚本
  • deno test:运行测试

13、

Deno 的安装可以参考官网首页,但是你可以直接去 GitHub 仓库的发布页,下载编译好的可执行文件(上图)。

下载 Deno 以后,查看一下版本。


$ deno --version
deno 0.31.0
v8 8.1.108
typescript 3.7.2

命令行直接运行deno,就会进入 REPL 环境。


$ deno
> console.log(1,2,3)
1 2 3
undefined
> 

14、

下面,运行一个 TypeScript 的远程脚本,这是官网给出的例子


$ deno run \
https://deno.land/std/examples/curl.ts \
https://example.com

上面例子中,Deno 执行远程脚本curl.ts,用这个脚本去抓取网址example.com。但是,运行后报错,表示没有网络通信的权限。

我们给予 Deno 网络通信的权限,就可以顺利执行。


$ deno run --allow-net \
https://deno.land/std/examples/curl.ts \
https://example.com

15、

现在,Deno 最新版本是 0.31。根据规划,1.0 应该会在今年上半年发布。

Deno 还处在密集开发中,功能不稳定,不建议用于生产环境。但是,它已经是一个可用的工具,大家可以多试用,熟悉它的用法。我相信,设计上的诸多优点,将会使它比 Node.js 更具优势。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月26日

科技爱好者周刊:第 92 期

$
0
0

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

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

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

封面图:土星的卫星土卫二,表面被厚厚的冰层覆盖,已经证实冰层之下有液态水的海洋。

刊首语

最近,我有一个猜想。

我们知道,人眼有"视觉暂留"现象:影像消失后,人眼仍能保留影像100毫秒~400毫秒。这就是电影的原理,每秒播放24张图片,影像就动起来了。

我就想问,那么有没有"听觉暂留"呢?我们听到的声音是连贯的,有没有可能其实也是一个个分离的片断?

查了一下,还真有听觉暂留,叫做"哈斯效应"。如果两个声音相隔5毫秒~35毫秒之间,人耳会认为这是一个声音。

相比"视觉暂留"的至少100毫秒,"听觉暂留"要短得多,最短只有5毫秒,足足相差了20倍。

我猜想,这会不会跟信息的传输速度有关。视频的信息量比较大,音频的信息量比较小,如果人体神经系统的信号传播速度是恒定的,那么传输视频就会多耗时。为了把所有视频信息传输完,视觉就暂留久一点。

一个有趣的经验是,4分钟的 MP3 文件(44.1kHz 抽样)体积大概是 4MB 左右,而4分钟的 1080P 视频(H.264编码)体积是 80MB 左右,相差也约是20倍。

资讯

1、消灭小儿麻痹症有可能失败

1988年,世界卫生组织决心在全球消灭脊髓灰质炎(小儿麻痹症),这是人类历史上规模最大的公共卫生行动。经过30年艰苦的努力,2016年只有三个国家还存在小儿麻痹症的病例:尼日利亚,阿富汗和巴基斯坦。

但是,2019年的形势非常不乐观。阿富汗和巴基斯坦出现了116个病例,是2018年的四倍。更糟糕的是,非洲有12个国家/地区报告了196个病例,引发这些病例的病毒不是自然发生的,而是活疫苗衍生的。这就是说,那些儿童服用的疫苗里面,包含的一种灭活毒株恢复了毒力和传播能力。

这意味着,世界卫生组织必须给已经口服疫苗的儿童,再服用一次新的疫苗,而且必须尽快,否则小儿麻痹症可能重新爆发,导致前功尽弃。

2、耐克撤离亚马逊

2019年11月,世界最大的体育用品公司耐克宣布离开亚马逊。它将从亚马逊网站撤出所有产品,在自家的在线商店独家销售。这是与亚马逊分手的最大零售商。越来越多的公司选择这条路,不再需要电商平台带来的流量,而是自建网店,其中包括劳力士和 LV 这样的世界名牌。

事实上,今天任何一家公司都可以自建像亚马逊一样的网店。在美国,你可以使用 Shopify 建店,在社交媒体做广告,使用 Stripe 处理支付,通过 ShipBob 管理库存和订单,用 Returnly 处理退货,用 DarkStore 提供当日送货服务。这些 SaaS 服务的成本只需要几百美元,让你可以向消费者提供跟亚马逊一样的服务。

3、中国人口真正突破14亿,你知道意味着什么?

2020年1月17日,国家统计局发布,截至2019年末,中国大陆总人口突破14亿人,为140005万人,比上年末增长467万人。其中,农村人口有5.5亿,城镇人口8.48亿。

中国大陆人口突破14亿, 这是什么概念呢?欧盟28国的总人口是5.12亿,美国加拿大3.64亿,日本1.27亿,澳大利亚新西兰0.3亿。这些国家的人口加在一起是10.33亿。另外亚洲四小龙加在一起不到9000万,这就是全世界发达社会的总盘子,它们一共大约有11.2亿人口,比中国大陆少2亿多。

中国大陆的14亿人的人均 GDP,2019年首次突破1万美元。最新排名还没出来,2018年中国的人均 GDP 排在世界第67位,前面的国家有墨西哥(66名)、俄罗斯(60名),后面两名是土耳其和保加利亚。

4、电动椅

平衡车公司 Segway 推出了最新的概念产品 S-Pod,这是一个两轮的电动椅,具有自我平衡能力。用户坐在上面,使用操纵杆控制方向,最高时速可以到40公里。但是,如果达到这个速度,乘客应该会感到非常害怕。

Segway 说,S-Pod 的灵感来自电影《侏罗纪世界》的观光车,不过实际上更像电影《瓦力》里面的飞行椅。它还不能上马路,Segway 建议在封闭的园区使用,比如机场、主题公园和购物中心。这个产品最快也要到2021年或更晚的时间才会上市。

5、丹尼索瓦人

近日,美国权威的《考古学》杂志评选兰州大学的丹尼索瓦人研究成果,为2019年全球十大考古发现的第五名。该研究成果同时入选《科学》杂志的2019年十大科学发现。

1980年,甘肃省夏河县的藏族僧人在当地的白石崖溶洞内,发现了一个古人类的下颌骨化石,与现代人有明显差异。这个化石先送到了当地的活佛,后来又送到了兰州大学。直到2010年,才真正展开研究。

研究人员确认,该化石距今16万年,属于丹尼索瓦人。这个发现震惊了所有人,因为这是第一次在阿尔泰山地区以外的地方,发现丹尼索瓦人的化石。同时,这也是青藏高原地区已知最早的古人类活动踪迹。这意味着,早在十多万年前,丹尼索瓦人就已经从中亚来到了青藏高原,并在那里生活了下来,而且有能力在该地区严酷的冬季御寒。

7、一句话消息

  • Facebook 开始招聘社区评论员,帮助鉴别虚假帖子。系统会先过滤出可疑的用户,然后把他们的帖子发给社区评论员,评判是否为虚假帖子。

  • 路透社报道,美国二手车价格2019年平均为8657美元,比2010年增加了75%。相比之下,同期新车价格只增加25%。很多穷人因为买不起二手车,生活出现了困难。

  • 中国政府1月19日宣布禁塑令。2020年底,将禁止生产销售超薄塑料购物袋、超薄聚乙烯农用地膜、一次性发泡塑料餐具、一次性塑料棉签、含塑料微珠的日化产品。无法回收的塑料制品,终止要开始退出历史了。

文章

1、void 运算符在 ES6 的运用(英文)

JavaScript 语言的 void 运算符,不是一个很有用的运算符。但是作者提出,它在 ES6 中可以用来提示某个操作具有副作用。

2、使用 pyhttptest 轻松测试 RESTful API(英文)

本文介绍了一个 Python 工具 pyhttptest,可以很方便地对 REST API 进行测试。

3、CSS 圆形的写法(英文)

本文总结了使用 CSS 在网页上生成一个圆形的四种方法,然后讨论了这些方法的应用。

4、北极何时出现第一个无冰的夏天(英文)

北极没有陆地,就是一块巨大的海冰大陆。本文是长篇科学报道,介绍气温上升对北极的影响,科学家分析合适北极的海冰最快会在什么时候完全融化。

5、我制作了室外电脑椅(英文)

本文作者介绍他如何制作一把室外的电脑椅。

6、海耶达尔的 Kon-Tiki 航行(英文)

一般认为,南太平洋岛屿的原住民来自东南亚,但是挪威航海家海耶达尔认为,南美洲印第安人也有可能乘坐木筏到达那里。为了证明这是可能的,他于1947年进行了一次实验,亲身乘坐一艘名为 Kon-Tiki 的木筏,在没有任何现代动力的情况下,从秘鲁漂流到复活节岛,历时97天。

本文介绍了他的这次壮举。海耶达尔后来写过一本书《Kon-Tiki Voyage》,记录这次航行,中译本为《孤筏重洋》,推荐阅读。

7、Git 的提交信息怎么写?(英文)

提交代码的时候,需要写提交信息。本文介绍如何规范地写提交信息。

8、JavaScript 设计模式(英文)

一组系列文章,通过 JavaScript 语言的例子介绍各种设计模式,同时也给出 TypeScript 语言的示例。

9、ES6 模块字符串打造 HTML 模板库(英文)

本文提出,由于 ES6 引入了模板字符串功能,专门的网页模板库已经没必要了。

10、我为什么从谷歌离职?(英文)

作者在谷歌工作了四年,由于晋升失败,开始认识到只有那些看得见的工作成绩,才会对晋升有帮助,最终对这个工作产生了厌倦。所有想了解工程师如何在大型互联网公司生存下来的人,都应该读读这篇文章。

工具

1、极客阅读

一个安卓 App,技术阅读的入口,汇聚了国内外技术博客、产品动态、公众号文章。(@wxyudl 投稿)

2、微信 Markdown 编辑器

一款个微信公号文章的的编辑器,可以将 Markdown 编辑器,基于 wechat-format ,开放了一些可定制项目格式转为富文本格式,再贴到微信编辑器。(@acbin 投稿)

3、Hammerspoon

Mac 电脑的自动化操作工具,使用 Lua 语言编写脚本。

4、Killersheep

一个 Vim 游戏,主要目的是展示 Vim 8.2 的新功能。

5、WhoisXML API

该网站提供各种网络信息查询,比如 IP 地理地址、Whois、DNS 等。

6、Raileo

该网站提供网站状态监控服务。免费账户可以监控三个网址,监控内容包括:运行时间监控、性能监控、SSL 监控和页面大小监控。

7、SketchyComponent

一个手绘风格的安卓组件库。(@5A59 投稿)

8、c8

一个 Node.js 的命令行工具,可以生成当前脚本的代码覆盖报告,即哪些代码是实际执行的,哪些没有执行。

9、dockerpi

一个 Docker 镜像文件,可以在 x86 计算机上运行树莓派环境。这里的重点是树莓派是 ARM 架构,所以等于在 x86 架构上模拟 ARM 架构。

10、Boost Note

一个笔记软件,有 Web 版和跨平台的桌面 App。

11、playwright

一个支持 Chrome、Safari、Firefox、Edge 的浏览器自动化工具,即一个自动化脚本对所有浏览器都有效,由 Puppeteer 团队出品。

资源

1、2020年的技术趋势

该网站列出并详细介绍了2020年重要的60种技术趋势。

2、undraw

一个免费的插图网站,可以在上面寻找合适的插图,用于商业用途。

3、CVE 搜索

CVE 是严重的计算机 Bug 的一个编号系统。这是 CVE 的官方搜索系统,可以查找已经编号的 Bug,比如搜索 WordPress,可以返回2392条结果。

4、101道 NumPy 练习题

NumPy 是用于数据分析的 Python 模块,这里有101道练习题,帮你学会使用这个模块。(@ketra21 投稿)

5、iNaturalist

美国《国家地理》杂志发起的一个全球性协作项目。全世界的用户拍摄自己周围大自然的照片,上传到网站,由专家进行鉴定。以后,其他用户打开地图时,就能在该位置看到这些照片,上图就是大黄蜂的照片。目前,已经有83万爱好者加入了这个项目,上传了3000万张照片。

图片

1、最安全的旅行方式

有三种指标,可以衡量某一种旅行方式的死亡风险。

  1. 每十亿次出行的死亡人数
  2. 每十亿小时出行的死亡人数
  3. 每十亿公里出行的死亡人数

下表是1990-2000年英国的统计数据。

可以看到,按照公里算,飞机是最安全的方式,但是按照出行次数算,飞机的死亡率是小汽车的三倍。另外,三种标准都显示,公共汽车非常安全。

2、垃圾回收利用

以色列新建了一家垃圾处理厂,可以将腐烂的食物、塑料袋、脏纸、垃圾瓶等等回收利用。

步骤1:未经处理的垃圾运进来。

步骤2:将垃圾分类、干燥、切碎,然后磨成棕灰色的小碎屑。

步骤3:将小碎屑融化、粉碎并转化为热塑线。

步骤4:将塑料线切成粒料,塑料制造商将用它们来制造各种产品。

第5步:根据客户要求的颜色,做成圆形或圆柱状的颗粒。

步骤6:制成最终的塑料制品,比如笔架或垃圾桶。

文摘

1、天气模型

天气预报主要依靠天气模型。由于模型和计算能力的进步,天气预报的准确度可以每十年提高大约一天。换句话说,今天的五天预报大约与1990年代的三天预报一样准确。

目前,主要有两种天气模型:覆盖全球的全球模型和覆盖某个地区的高分辨率模型。全球模型主要关注影响整个大陆的天气现象,例如冷锋和大风暴。由于全世界的天气是互相影响的,全球模型会对整个星球建模。

最常见的全球模型有两个:美国模型和欧洲模型。它们都有自己的优缺点。

美国模型正式名称是全球天气预报系统模型,简称 GFS。它由美国国家气象局创建和运营,每天运行四次,对未来16天的天气做出预测。过去四年中,美国模型背后的计算能力增长了十倍,该模型现在每秒能够处理10的15次方的计算,运行它的超级计算机是世界上最快的30大超级计算机之一。

欧洲模型正式名称是欧洲中距离天气预报中心模型,简称 ECMWF。它以它的运营机构命名,背后是34个参与天气建模的国家的合作。欧洲模型拥有强大的计算能力,甚至比美国模型更强大,所以通常认为它是更好的全球模型。2012年,欧洲模式准确预测了飓风桑迪的路径,使它赢得了比美国模式更好的名声。

1979年,欧洲模型使用的第一代超级计算机,计算能力大约是现代智能手机的十分之一,但是今天它拥有的计算能力换算成智能手机,大约会堆成20英里高。下图是欧洲模型的超级计算机的一小部分。

欧洲模型只能对10天内的天气做出预测。一般认为,十天是准确天气预报的"实际极限 "。一到两天的天气预报最准确,三到五天中等准确,其后的可靠性越来越差。虽然平均而言,欧洲模型更准确,但美国模型有时会得到更好的预测。当模型之间的预测不一致时,气象学家会了解每个模型的优势和劣势,对这两种模型的预测以及其他模型的结果,进行综合考虑。当预测结果相差很大时,明智的做法是降低天气预报的置信度,并将各种可能性都告诉大众。

最后,关于高分辨率模型,它们专注于预测更短时间范围和更短距离的复杂天气过程,比如预测雷暴或降雪的结构和危害。全球模型的单个预测网格是六到十英里,高分辨率模型可以分析两到三英里内的天气变化。

言论与数字

1、

我使用树莓派 4 时,发现 CPU 温度大约为 73 度。我拿一个2英镑的硬币放在 CPU 上,温度在几秒钟内下降 10 度。

-- HN 读者,谈如何给树莓派 4散热

2、

我的梦想是,能够负担得起世界一流城市的生活,同时仍能完全控制自己的时间。

-- 《我出售了自己创立的 SaaS 业务》

3、

2018年,9.8%的美国人搬过至少一次家。这是自1947年有这项统计以来的最低值,美国的人口流动正在不断下降。

-- 《纽约时报》

4、

如果你有一只宠物,你会将它一生都锁在笼子里吗?经常不给它吃东西,告诉它外面的世界很可怕,不如待在笼子里?

可悲的是,这就是许多人对待自己内心创造力的方式。

-- 《释放你的创造力》

5、

大多数互联网公司的看法是,如果你是免费用户,那么我们就可以把你当作产品的一部分,来使用你。

-- HN 读者

6、

苹果公司的市值等于丹麦(世界第28大经济体)的净资产,用户数量等于中国人口。所以,如果把苹果公司看成一个国家,它将是一个超级大国,对世界人民的生活、政治和文化产生了深远的影响。

--《欢迎来到库比蒂诺共和国》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年1月31日

科技爱好者周刊:第 93 期

$
0
0

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

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

封面图:火星表面的沙丘,出处美国宇航局

刊首语

这段假期,我在家常常玩电子游戏。

有人说过,世界上有两种游戏。一种是追求明确目标的游戏,比如战胜所有对手,完成目标就取得了游戏胜利;另一种是没有明确目标的游戏,只是为了讲一个故事,或者体验在游戏世界的漫游。

我发现,我对第一种游戏越来越厌倦,对不停地"打怪、升级、做任务、收集宝物"这种模式,尤其没有兴趣。我更喜欢在游戏中漫游和探索,好比在一个陌生的城市观光,没有一定要做的任务,也没有一定要克服的障碍,不需要收集任何东西,不必与任何人作战,也不担心哪个角落会跳出敌人,如果看到感兴趣的东西,就停下来好好欣赏。

有一个很老的游戏,叫做《亲爱的艾丝特:爱与死之书》(Dear Esther),据说是文学性最强的游戏,甚至有的评论家说,这不是游戏,而是一部可以玩的小说,"这是压抑、孤独、沉寂以及心如灰烬的表白或遗书"。玩家身处一个无人海岛,景色优美而荒凉,背景音乐伴着海风时断时续,你在这个岛上漫游,没有目标,耳边是一个陌生男人在不停朗读,他写给亡妻的信。你根据这些信,以及现场发现的线索,自己去推测到底发生了什么。这种游戏很对我的胃口。

在我心目中,好的游戏应该是这样的:玩家处在一个故事之中,漂亮的虚拟世界使得这个故事引人入胜。它会吸引你想留在其中,探索各个角落,等着知道故事的结局。游戏过程就是一次旅行,与周围的物体互动,大部分时间你就是悠闲地探索环境,等待将要发生的情节。

我想,未来会有越来越多这一类游戏,就是一本实境化的数字小说。表面上,你在玩游戏,实际上是在读小说,把自己变成小说人物、亲身体验小说世界、参与其中的情节。

50 天进阶 Python 高手

这次放假的时间比较长,正好用来学一些线上课程。

Python 语言作为行业的基础工具,在业内有广泛应用。网上的学习材料很多,入门也容易,是培训学习的热门方向。如果你想在短时间内,提高自己的 Python 水平,或者觉得自学不成体系,也没有人指导答疑,那么不妨看一下极客时间的课程。

极客时间是国内著名的 IT 领域知识服务平台,有完整的 Python 学习服务。其中,《Python 进阶训练营》 是专门为 Python 初学者入门后提高水平,量身定做,尹会生老师主讲,除了课程本身的手把手指导以外,还提供一系列配套服务。

《Python 进阶训练营》 适合有语法基础的同学,熟悉实务,尽快在实际项目上手。尹会生老师将用 50 天时间,帮助大家在原有水平上,短期内系统提升 Python 开发技能。课程采用线上直播授课的方式,搭配 7 周的实战作业、助教随时答疑、班主任学习追踪的服务。

课程从一个简单的单线程爬虫案例开始,逐步扩展为多线程爬虫,紧接着对收集到的数据进行存储、清洗、分词以及情感分析,最后再通过 Web 前端直观地展示出来。学完后不仅能掌握一系列 Python 高阶开发技能,如果后续想转向 Web 开发、数据分析与处理、NLP、人工智能等领域的话,这次训练营也为你打下了坚实的基础。

点击查看详细的课程大纲)

极客时间对接大量互联网公司,培训合格后, 一年内提供 2 次一线大厂和 TGO 鲲鹏会 600 多家企业内推服务。

这个培训的原价 ¥3600,优惠价 ¥1999,使用口令: PYRUANYFE,还可以再省 ¥200,到手仅需 ¥1799 。微信扫描下方二维码,可以了解训练营详情,咨询并报名。

资讯

1、深圳法院判决人工智能作品有版权

深圳市南山区人民法院最近裁定,人工智能产生的作品可以获得版权保护。该案件是腾讯起诉上海英讯科技有限公司,未经授权就复制腾讯机器人 Dreamwriter 撰写的财经文章。法院裁定,被告败诉,必须撤消侵权,并向腾讯支付1500元人民币的赔偿。

Dreamwriter 是一款腾讯2015年开发的新闻写作软件,自动生成证券走势、企业业绩等财经新闻,发表在腾讯财经网站上。

人工智能产生的作品是否应受版权保护一直有争议,美国的判例法明确规定,版权法仅保护基于人类智力的知识劳动成果,很显然人工智能作品不存在智力创造。澳大利亚一家法院在2012年的一宗案件中也宣布,在计算机干预下生成的作品无法受到版权保护。

2、中国自主建设的卫星通信系统

2020年1月11日,中国自主建设的第一个卫星移动通信系统----天通系统正式商用,目前由中国电信运营,号段为1740,有手持终端(操作系统为安卓)和车载终端等多种终端类型。用户也可以安装手机应用,去连接终端,实现卫星通信。

该系统从2018年3月开始试运行,至今已有近3万用户,年套餐费用是1000元一年,包含750分钟时长的通话费。

卫星通信可以保证在任意一个地点,都能与外界通信,对于海上和无人地区作业意义重大,主要有海事通信卫星和铱星两个系统。天通系统目前只有一颗卫星"天通一号"(2016年8月6日发射),只能覆盖中国全境,做不到全球通。而且,一颗卫星的信号连通成功率和通信速度,都不如多颗卫星。

3、韩国出现 AI 面试补习班

由于韩国大企业开始使用人工智能评估面试者,补习班业者就相应推出了 AI 面试辅导,提供模拟软件,帮助应聘者更好地应对表情识别技术。比如,微笑的时候,最好不要张大嘴,而是用眼睛微笑。

一次3个小时的 AI 软件面试模拟,费用最高为100,000韩元(约人民币600元)。

4、解剖青蛙模型

高中生物课都有青蛙解剖实验,但是现在野生青蛙的数量正在减少,而且青蛙也是有益的生物,应该得到保护。美国佛罗里达州的高中正在尝试使用青蛙模型,进行解剖。

这种模型相当逼真,外观和触感都接近真实青蛙。切开腹部,可以看到肌肉组织和内脏,并有假的青蛙卵,但是皮肤不带有粘液。模型的另一个好处是不需要刺激性的甲醛,并且是环保材料制作的,可以回收以后重复使用。它的价格是150美元一个。

5、"WiFi万能钥匙"申请商标注册失败

2019年12月,北京市高级人民法院做出终审判决,认为"WiFi万能钥匙" 这个商标包含 WiFi 这个词,容易使消费者对服务内容和服务性质产生误认,属于带有欺骗性的标志,不得作为商标使用。

"涉案商标由图形、英文字母"WiFi"和中文"万能钥匙"构成,其中"WiFi"是一种将电子终端以无线方式互相连接的技术,而"万能钥匙"则是对建立连接时密码破解的通俗称呼,将涉案商标使用于指定服务上,容易使消费者对服务内容和服务性质产生误认,带有欺骗性。"

6、一句话新闻

  • 美国航空管理局 提出一个设想,所有无人机都必须有远程 ID,以供无线电识别。未来那些无法回报 ID 的无人机都会被击落。

  • 尼尔森公司调查发现,88%的美国人一边看电视,一边使用手机;71%的美国人会在手机上查找,正在观看的电视节目;41%的美国人忙于向朋友/家人发送有关正在观看的节目的消息。

  • 国外网友推荐安装高亮度 LED 玉米灯,价格不高,可以让室内亮如白昼,有利于提高工作效率。

  • 一项调查发现,美国民众对技术公司的正面评价,仅次于教堂。

文章

1、React 的开发团队个人简介(英文)

这是 React 官网的团队介绍页面,10个成员每人一张照片和一段自述,写得很有意思。

2、我们为什么选择 Go 语言?(英文)

可汗学院的后端是用 Python 2 写的,本文介绍为什么他们不升级到 Python 3,而是选择用 Go 重写。

3、Instagram 的第一张照片(英文)

Instagram 的照片 URL 是按顺序编号的,所以可以找到第一张上传的照片。那是创始人凯文·西斯特罗姆(Kevin Systrom)在2010年7月16日下午2点24分上传的,内容是拖鞋和一条狗,描述中写着"测试"。

4、Epic Games CEO 的故事(英文)

Epic 游戏公司是热门游戏 Fortnight 的开发商,本文介绍了它的49岁 CEO 蒂姆·斯威尼(Tim Sweeney)。他的个人财富价值达到了72亿美元,排名世界第244位。他是程序员出身,没有结婚也没有子女,使用个人财产购买了美国数万英亩的林地,加以保护。

5、我的 SaaS 产品失败分析(英文)

作者启动了一个自己的 SaaS 产品,失败以后进行了分析,主要是对技术栈的选择和任务的优先级进行了检讨。

6、服务器的定义(英文)

我们经常提到服务器,但是到底什么是服务器?这篇文章讨论了服务器的含义,它既可能是硬件,也可能是软件,取决于上下文。

7、为什么 npm 锁文件是一个安全隐患?(英文)

Node.js 的模块管理系统 npm,会自动生成锁文件package-lock.json。作者提出,下毒者可以偷偷修改这个锁文件,加入恶意模块,而很难被发现。

8、2019年十大产品创新(英文)

国外网站评选的年度最佳产品创新,我最喜欢其中两个产品。

  • 罗技的残疾人游戏手柄,各个按钮可以分离,用脚或肘来按。
  • 阿迪达斯的可循环运动鞋,穿旧了就直接送去粉碎,当作原料接着制造新鞋。

9、Mac Pro 使用体验(英文)

Lunar 是一家电影动画工作室,本文是他们使用最新的 Mac Pro 的总结。

10、互联网用户追踪技术(英文)

本篇长文对各种互联网用户追踪技术进行总结。

工具

1、monica

一个个人的 CRM(客户关系管理)系统,可以自己架设服务,管理你的所有人际关系。

2、普通话声调训练

老外学习汉语普通话,最难掌握的就是四个声调。这个网址提供在线的声调训练,先听老师的录音,然后你跟着读一遍。浏览器会录下你的声音,判断声调发音是否正确,不过它的准确性似乎有点问题,有时会认不出正确发音。

3、kutt

开源的短链接生成器,基于 Node.js,允许自定义短链接、设置链接密码,还提供访问统计。

4、tesseract.js

一个 JavaScript 语言的 OCR 库,可以在网页运行,识别图片中的文字。它支持100多种文字,包括中文。这里还有一篇教程,介绍 Python 语言如何使用这个库。

5、sshelper

一个安卓的 SSH 服务器应用,使你可以 SSH 登录到安卓手机。(@ch-cn 投稿)

6、Pic Hance

一个将低分辨率图片增强为高分辨率的工具,可以将分辨率增加4倍(即长和宽各增加一倍)。

7、cats-of-jasnah

一个为2岁~4岁婴儿开发的网页游戏,让孩子选有多少只符合条件的猫,比如红色的猫有多少只。

8、linkding

一个自己架设的网址书签服务。

9、darktable

一个数码照片的后期处理软件,可以视作 Lightroom 的开源版。

10、digiKam

数码照片管理的跨平台桌面软件。

资源

1、Find yourself a hobby

该网站会随机显示一个业余爱好,以及介绍材料。如果你不知道自己有什么爱好,可以看看这个网站,也许能找到感兴趣的事。

2、区块链背后的密码学

中文的密码学入门介绍,向非专业读者介绍了密码学的基本概念,没有涉及到技术细节。(@ifrontend-xyz 投稿)

3、CoreUI Icons

一套开源图标,有1500多个,支持 SVG、PNG、Webfonts 多种格式。

4、RosettaGit

该网站收集一些典型的编程任务,然后用尽可能多的计算机语言,给出这些问题的实现。目前,它一共收集了13个编程任务,4392种解决方案,涉及749种计算机语言。

5、计算机科学入门

英文的免费电子书,从最基本的二进制开始讲起,直到操作系统的底层原理工具。

图片

1、 树根桥

印度有一种利用榕树树根做成的"树根桥",单单是梅加拉亚邦,就有74座。

当地居民利用榕树的气根,先在河或山沟两岸种上幼苗。一旦气根发芽冒出地面,就会将它们缠绕在竹子或棕榈骨架上,指向对岸。到达另一侧后,再把它们植入土壤中。整个过程需要几十年。

这种桥可以延伸50米,持续数百年。由于树是活的,所以这些桥也是活桥,在当地潮湿的天气中不会腐烂,使用寿命比木桥或铁桥都长。

榕树的根还会对负荷起反应,走的人越多,它也会越长越多,纠缠在一起,形成高度复杂的结构,变成一座稳定而安全的桥梁。世界其他地方也有这种桥梁,但都不如印度普遍。

2、英语流利程度

《经济学家》杂志绘制了一幅全球英语流利程度图。下图中,颜色越深就表示英语越流利,灰色的国家则是英语为母语。

根据这张图,中国人的英语水平高于俄国人,我表示怀疑。

文摘

1、马格德堡水桥

德国有一座水桥,桥上走的不是车,而是船。

这座水桥横跨易北河。由于易北河的地势高于两侧两条平行的运河,所以工程师认为建一座通船的水桥,连接两条运河,要比修建船闸更经济。这座水桥是世界同类桥梁中最大的。

有趣的是,不论大船还是小船,甚至没有船的时候,桥面受到的压力(几乎)总是相同的。只要船能浮起来,桥就不会塌。这是为什么?

理由是浮力(基本)抵消了船的重量。你可以设想,假定水里面有一部分水是静态的,固定不动,由于水块整体上保持静止,因此该块的总受力必须为零。这意味着向上的浮力的大小等于向下的重力。

现在,用同样体积的钢块取代那块水。因为钢块比水块重,所以钢会下沉。但是受到的浮力还是一样的,总是等于被排出的那部分水的重量。

回到桥梁本身,如果水里有东西漂浮,那么水底受到的作用力会更大吗?

让我们做一个实验。天平上防一个装满水的烧杯,显示的重量为329克。

然后有一个瓶子,重量为54克。

现在把瓶子放到烧杯里面,一些水会溢出,因为烧饼原来是满的。

可以看到,去掉溢出的水以后,烧杯的重量为332克,几乎没变,跟原来的329克基本一致。这就是说,54克瓶子的重量,基本上都变成了溢出的水。

如果瓶子减去一些重量,变成23克,再放到烧杯里。烧杯的重量也几乎没变。

现在,我们把烧杯想象成那座水桥,瓶子就是船。当船进入水桥的时候,水位会上升,这部分被排出的水就是船的重量。由于水桥连着两条运河,上升的那部分水会流到两条运河里面,因此桥受到的重力基本没变。即船的重量会由整条水路承担,而不仅仅是桥面承担,如果水路很长,每个部分增加的重力就可以忽略不计。

2、惠勒决议

1938年6月13日,美国参议院通过了决议,正式限制无线电广播电台的功率,美国的 AM 广播电台最大功率不得超过50000瓦特。这个决议是惠勒参议员提出的,通常称为惠勒决议(Wheeler resolution)。

惠勒参议员认为,功率超过50千瓦的 AM 广播电台违背了公众利益,会导致政治经济权力和社会影响力集中在极少数人的手中。此外,大功率电台会抑制小功率电台,剥夺小电台的收入,使得这些电台无法充分有效地为社会、宗教、教育、公民、社区服务。

这个决议通过时,FM 广播和电视台尚不存在,而且 AM 电台全美国不到700个。但是,它规定的限制一直沿用了下来。

二战时,支持者更进一步提出,高功率电台可能会导致像意大利墨索里尼、德国希特勒这样的独裁者的崛起。

这个决议导致了美国没有全国性的电台,而有许许多多地方性的小电台。

言论与数字

1、

埃隆·马斯克(Elon Musk)的项目,似乎都是为人类失败做准备。

发电厂无法可靠供电时,太阳能电池板必不可少。沙特阿拉伯无法供应石油时,电动汽车必不可少。地面互联网关闭时,星联计划提供卫星上网。地球无法居住时,就移居火星。

-- 推特用户

2、

在软件行业,很多人对敏捷开发的理解就是,最短时间内提供最大价值的所有方法。

-- 推特用户

3、

一个项目有太多的工程师是一个严重的问题。产品经理可能想增加更多的工程师,并行完成工作任务。但是实际上,任何一个项目的并行任务的数量都是有限的。

一旦项目工程师过多时,工程师的时间将从开发转向计划、同步和协调。

-- Nicholas C.Zakas

4、

加拿大皇家约克地铁站(Royal York Station)的装饰工程,合理的工期应该是3到6个月,但是政府根本不管,导致工程队似乎希望干上20年到30年,直到退休为止。

-- 一个加拿大人 对《为什么加拿大建筑成本如此之高?》的评论

5、

如何才能画一幅完美的画?

很简单。先让自己变得完美,然后自然地画,所有的专家都这样做。

-- 《禅与摩托车维修艺术》

6、

蒂姆·库克的专业是削减成本,改善供应链并提高利润。他担任苹果公司 CEO 后,对产品而言是灾难性的。

他的第一件事,就是将内存焊接到笔记本电脑的主板上。过去,你可以自己升级 MacBook Pro 的内存,价格为50美元~100美元,远低于苹果收取的内存升级费。库克似乎在这个地方看到了利润损失,此外,内存焊接可以为苹果公司节省了几美元的零件费用。

-- 《Mac Pro 和苹果公司的滑坡》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月 7日

科技爱好者周刊:第 94 期

$
0
0

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

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

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

封面图:真空垃圾箱,自动打包垃圾,通过地下管道发往收集站,出处维基百科

刊首语

硅谷著名的风险投资家 Naval ,在推特说了一句金句,一万多人点赞。

他说:"既懂得制造,又懂得销售,你就是无敌的。"

他的意思是,一家成功的公司,必须同时具备两种能力:优秀的制造能力和优秀的销售能力。 成功的公司,不仅要懂得如何创造出优秀的产品,还要懂得如何把产品卖出去。

这就是为什么公司会设置 CEO 和 CTO 两个角色。一般来说,CEO 负责销售(包括融资)和管理,CTO 负责制造。这两个角色里面,只要有一个没做好,公司就成功不了。

Naval 接着说, 这个世界上,最厉害的人就是既懂得制造,又懂得销售的人。这样的人可以创造出一个行业。 举例来说,马斯克(Elon Musk)就是这样的人,他懂得技术,可以让工程师为他造出想要的东西,他也懂得销售,能让整个世界为特斯拉汽车疯狂。乔布斯也是这样的人,懂得顾客想要什么,以及苹果公司能造出什么,几乎凭一己之力让苹果公司变成世界市值最高的公司。

如果我们把自己的人生看成是一个项目,人生成功也是如此,既要有真才实学,也要懂得推销自己。

Naval 说,通常情况下,Maker(制造者)学习 sales(销售)比较容易,Sales 学习 make 比较难。比如,程序员学习运营,要比运营人员学习编程容易。所以,我的想法是,大学最好主修一些跟 make 相关的课程(比如计算机),然后辅修一些跟 sales 相关的课程(比如经济),这样的搭配比较合理。

面试专题课《三步吃透浏览器原理》

2020年对于很多人来说,会是不易的一年。在这个非常时期,为了帮助那些还在自学前端开发的同学,应对疫情结束后的面试季,本周有一个面试专题课消息: 《面试必备:三步吃透浏览器原理》

浏览器是前端开发的宿主环境,只有熟悉浏览器的各种特性,了解原理,才能实现各种网页效果。本次专题课针对浏览器的底层,重点介绍网页引擎的执行机制,下面就是课程大纲。

(1)浏览器架构及原理:多进程架构,TCP/UDP 处理,HTTP 请求流程,网页渲染流程。

(2)JS 执行机制及 V8 原理:变量提升、调用栈、原型链、编译及解释执行过程、垃圾回收机制、EventLoop、promise、async/await。

(3)浏览器页面及安全知识要点:虚拟 DOM、渲染流水线、性能优化、同源策略、XSS 攻击、XSRF 攻击。

讲师是现任某大厂高级前端开发工程师的董老师,他本身就是面试官。除课程本身的知识点指导之外,他还会拓展讲解一些经典大厂面试题,以及大家感兴趣的面试经验。

本次专题课由北京的京程一灯主办。他们是腾讯课堂前端培训 TOP 机构之一,目前与腾讯课堂联合运营,专注培养年薪40万的高级前端工程师,毕业生平均薪水可以达到25.5K。

专题课的开始时间是下周二(2月18日),原价98元,扫描下图二维码进群领取优惠券, 前88名进群报名仅需1元。 感兴趣的同学,欢迎抓紧报名,毕竟疫情一过去,面试季就会马上开始了。

(扫码进群即可领取优惠券)

资讯

1、VR 建模去世的女儿

韩国 MBC 电视台播出纪录片《与你相见》,讲述了一个技术团队利用8个月打造的VR(虚拟现实)系统,帮助一位母亲与已去世女儿重逢的故事,场面十分感人。

3年前的一天,张智星7岁的女儿娜燕得了血癌去世,她从此无法走出悲伤。韩国一家VR 制作公司得知此事后,便派出公司最优秀的技术人员,与张智星合作,使母女二人在虚拟世界得以重逢,母亲给娜燕补上了一场生日。结尾,张智星哄着女儿入睡,并目送她变成一束光离开。下面就是这段9分半钟的纪录片。

2、还原3000年前的声音

Nesyamun 是一个古埃及的祭司和抄写员,死亡时间大约是公元前1100年。他的木乃伊在19世纪被发现,然后运到了英国。

最近,英国研究人员对木乃伊进行 CT 扫描后,对他的声道进行了 3D 建模,然后 3D 打印了出来。他的发声器官结合当代的语音合成系统,我们就可以听到他3000年前说话是什么声音。

这项技术原来用于为事故或癌症后,失去声带或喉部语音功能的人,提供语音重建。科学家说,本次尝试使得以后我们可以听到早已死去的人的声音。

3、无气轮胎

日本轮胎巨头普利司通开发了一种无气轮胎。这种轮胎不需要充气,内部填充的是热塑纤维,可以承受约2.2吨的重量,能够用于卡车。

无气轮胎不会漏气,不会爆胎,也不怕刺穿,主要缺点是弹性不如充气轮胎,会更颠簸。虽然这种轮胎价格较贵,但是普利司通认为,它的维护成本低,寿命更长,因此还是值得的。普利司通同时也推出使用这种轮胎的自行车。

4、无人驾驶的空中客车飞机

2019年12月,空中客车公司在法国图卢兹机场试验了无人驾驶的 A350 飞机起飞。当飞机进入直飞跑道,自动驾驶仪就会接手,让飞机向前滑行,在起飞加速时将飞机的机头抬高。飞机上有三个摄像头,自动识别跑道的中心线,防止飞机偏离方向。

飞机驾驶员坐在驾驶室,但是手不碰操作杆。他只是一名观察员,作用是出现问题时接管飞机。由于空中的自动飞行、下降时的自动着陆,都是成熟的技术,所以只要无人起飞能够实现,实现完全无人驾驶的民航客机就可以做到了。

5、藤壶罚款器

美国俄克拉荷马大学的停车场引入了一个新的装置,叫做藤壶罚款器。这是一家创业公司专为非法停车或未支付停车费设计的产品。

学生停车逾期时,就把这个大塑料板放在车辆的挡风玻璃上。它的吸盘会牢牢吸住玻璃,只有交钱以后才能拿下来。如果强制把车开走,藤壶罚款器会发出峰鸣声。停车场认为,这比直接拖走车辆更方便。

6、一句话消息

  • 欧洲专利局拒绝一项人工智能产生的塑料容器设计,理由是专利的发明者必须是人,不能是机器。

  • 沃兹尼亚克是苹果公司创始人之一,最近展示了他戴的电子管手表。这种手表非常耗电,只能抬腕点亮,如果一直点亮,会在一分钟内耗完电池。

  • 英国发行电子游戏《古墓丽影》的邮票,该游戏是英国公司开发的。

  • 挪威首都奥斯陆 2019年没有任何一个行人或骑自行车者,死于交通事故。原因是该市的主要路段禁止机动车,没有禁的地方车速也不得超过30公里/小时。

文章

1、过去十年的十大科学发现(英文)

《新科学家》杂志评选的2010年到2019年的科学发现,排在第一位的是,欧洲核子研究中心(上图)发现希格斯玻色子。

2、提早退休(英文)

这是维基百科的条目,介绍正在兴起的一种社会运动,能否通过高度储蓄,实现提前退休?具体做法是,年收入的50%以上都储蓄,目标是把每年的消费压低到你个人财富总额的4%。

3、程序员工资高的原因(英文)

律师和医生需要多年训练,才能拿到高薪,相比之下,程序员年纪轻轻就能拿到高薪,原因是什么?他分析了几个原因,并提出程序员应该做好低收入的准备,不会一直拿这种薪水。

我觉得,他忽略了一个事实,律师和医生可以做到退休,而且越到后面,薪水越高。程序员很难做到退休。如果计算整个职业生涯的收入,程序员可能一点都不高。

4、如何扫描二维码连入 WiFi(英文)

安卓和 iOS 现在都允许扫描二维码,然后连入 Wifi。因此,可以将 WiFi 密码设得非常长,提高安全性。本文介绍如何通过 qrencode 这个工具,生成二维码。这里还有一个 Web 工具,可以在线生成 WiFi 的登录二维码。

5、如何生成非矩形的视频画面(英文)

本文是一篇简单的教程,讲解使用 ffmpeg 命令行工具,利用遮罩生成上图那样的非矩形的视频画面。

6、我亲身经历的东莞 3D 打印(中文)

一篇知乎的帖子。公司自己采购一台工业级光固化 3D 打印机,综合成本为1元/克,比深圳/东莞的外包采购价格还要贵50%,难道珠三角都在做亏本买卖吗?可怕的是,这样计算出的成本,还没考虑固定资产折旧。更可怕的是:他们不仅成本低,而且质量高、服务好。这到底是为什么?(@Ouroboros725 投稿)

7、GitHub 用户 Dash O'Pepper

作者使用 GitHub API 时,意外发现有一个用户 Dash O'Pepper 的用户名是连词线(-),这个用户名无法在 Web 界面显示,但是他居然有13个 followers。

8、11款开源数据库简介(英文)

这篇文章介绍11种主要的开源数据库,每一种的特点和适用场景。但是不包括 MySQL,因为作者假设你在寻找 MySQL 的替代品。

9、我的十年回顾(英文)

著名 JavaScript 程序员、Redux 作者 Dan Abramov 回顾自己的过去十年,从一个没有上大学的俄罗斯高中毕业生,到 Facebook 公司 React 团队的重要成员。

10、令人困惑的时间和时区(英文)

这个网页收集了许多关于时间和时区的有趣事实,比如尼泊尔时间是国际标准时加上5小时45分,再比如日本在海参崴东面,但是日本的时间晚于海参崴。

工具

1、Snip

将打印的数学公式转成 LaTex 代码的工具。

2、Gmail 分析器

命令行工具,可以显示你的 Gmail 邮箱的统计数据。

3、age

一个命令行工具,使用公钥/私钥对文件进行解密和加密,用法很简单。

4、蚁阅

开源的 Web 端 RSS 阅读器,基于 Python。(@guyskk 投稿)

5、stpyv8

一个引入 V8 引擎的 Python 模块,使得 Python 程序里面可以写 JavaScript 代码。

6、NodeTube

一个可以自己架设的 Youtube 替代品,可以上传视频在网页观看,基于 Node.js。

7、tauri

一个使用各平台的 WebView 控件,构建跨平台桌面应用的 JavaScript 框架。(@mantou132 投稿)

8、GitHub-Chart

Chrome 浏览器插件,可以三维显示 GitHub 的提交统计。(@ryuzheng 投稿)

9、Generative Placeholders

获取占位图像的网站,所有生成的图像都是艺术化的几何图形。

10、Terrastruct

一个在线的架构图、流程图工具。

资源

1、技术大会演讲指南

一组英文系列文章,教你怎么准备技术大会的演讲。

2、Waking-Up

一个应届生整理的仓库,收集后端校招面试的准备材料。(@wolverinn 投稿)

3、深入深度学习

免费英文电子书,介绍深度学习。

4、神经网络原理简介

一个分成三个部分的神经网络简介,主要介绍数学原理,使用最简单的例子。

5、实时极光照片

世界各地的用户将自己拍到的极光照片,上传到该网站。上图是2020年1月6日芬兰的极光。

图片

1、悬浮天桥

荷兰城市埃因霍温的高速公路上,有一座天桥,看上去好像悬浮在空中。车辆都从桥下过,桥上供行人和自行车使用。

2、世界最脆弱的书

1990年,考古人员在阿富汗北部的佛塔里面,发现了一个陶罐。它已经封闭了2000年,打开以后,里面是一卷佛经。高海拔的干旱气候使得它没有腐烂,但是特别脆弱,人类的呼吸气流都有可能让它破裂。

佛经的发现地点,位于古代的丝绸之路。佛经正是经过这条路,从印度传入了中国的中原地区。考古学家想要解读这卷佛经,把它送到了美国国会图书馆,希望图书馆可以展开这卷脆弱的纸。

古书保管专家确认它抄写在白桦树皮上,为了解开它,现在卷烟纸反复练习。然后,将它移到一间加湿的房间,软化了桦树皮,使其不太因为太脆而破裂。2006年6月,他们开始解开这卷佛经。每一口呼吸都小心翼翼,轻轻将树皮展平。

最后,经过翻译,原始文本的75%至80%都被解读了,但是标题和结尾部分都没有保存下来。内容是关于释迦牟尼时代的15位佛教信徒的生平。现在,整个卷轴都已经数字化,你可以在国会图书馆的网站上看到它的照片

文摘

1、人类与生物灭绝

30万年前,地球上至少有九种人类:欧洲的尼安德特人,亚洲的丹尼索瓦人,印度尼西亚的直立人,非洲中部的罗德西亚人,南非的纳雷迪人,菲律宾的吕宋人,印度尼西亚的弗洛雷斯人,中国的马鹿洞人,以及非洲南部的智人。

一万年前,其中八种人类都消失了,类似于生物的大规模灭绝。但是这个时期并没有明显的环境灾难,火山爆发、气候变化、小行星撞击都没有。造成这种灾难的唯一原因,就是智人走出了非洲,向全世界扩散,导致了第六次生物大规模灭绝。

智人是独特的危险物种。他们猎杀了猛玛象和树懒直至灭绝,破坏了平原、沼泽和森林以供耕种,改变了地球一半以上的土地面貌,还改变了地球的气候。

DNA 证据显示,智人跟尼安德特人见过面,并有杂交。丹尼索瓦人的 DNA 也保留在现在的许多亚洲人中。许多证据证明,其他古老的人类只有在遇到智人后才消失。

那么,为什么我们的祖先"智人"会消灭其他的亲戚,导致大规模灭绝呢?

答案在于人口增长。人类像所有物种一样以指数方式繁殖。一旦智人互相合作,我们就没有天敌。由于没有天敌控制智人的人数,所以智人开始利用所有可用的资源。智人为了自己的进一步增长,将不可避免地导致与其他部落在粮食和领地方面发生冲突。

智人消灭其他人类,可能不是有计划的进行,而是不断的遭遇战。但是,最终结果还是一样,智人消灭了敌人,并占领了对方的土地。欧洲的考古记录表明,尼安德特人的消失过程持续了几千年。这表明,尽管尼安德特人输掉了战争,但要坚持这么长时间,他们肯定赢得了许多场与智人的战役。

今天,我们抬头仰望星空,想知道茫茫宇宙中,是否还存在其他智能生物。但是实际上,地球上就存在过其他智能生物,但是他们都被我们消灭了。

2、谁从大学骗局中受益?

高等教育是一桩大生意。现在,超过一半的英国年轻人上大学,如果计算一下学生投入的金钱(大部分是借来的),高等教育为英国经济带来了大约950亿英镑的收入,比法律业、广告业、航空业对经济的贡献都要高。

仅仅是利物浦大学一家,在2015/16年度就为利物浦市贡献了6.52亿英镑的产值,当地每57个工作岗位之中,就有一个是利物浦大学带来的。利物浦大学还只是利物浦市5家高等院校之一。

大学除了创造就业机会、带来学生经济(夜总会、咖啡馆、房屋出租等等)以外,还能带来大量资金,比如政府对高等教育的直接补贴,或者政府支持的学生贷款。

根据一份研究报告,英国目前的高等教育贷款余额大约有200亿英镑,其中只有大约一半会偿还,剩下的(准确估计为47%)都将成为坏账,最终由政府承担。而且,随着政府对高等教育的拨款减少,永远无法偿还的学生债务将会相应增加。

有人也许会说,只要高等教育能为学生创造价值,政府债务的增加就是值得的。但在2018年,英国国家统计局的报告称,只有57%的大学毕业生在从事高技能工作,其他毕业生的工作根本不需要大学教育。这个比例是有史以来最低的,国家统计局认为这是因为"年轻人可获得的高技能就业机会数量有限,难以找到相关工作"。

目前的情况就是,毕业的学生数量越来越多,学位的价值却越来越低。高等教育的主要受益者,实际上是通过那些学生借来的钱在进行重建的城市。

这种情况下,受害者是学生,他们已经成年了,梦想获得一份不错的工作,所以来读大学。他们或多或少被迫离开家人,并承担巨大的债务负担(平均每人超过50,000英镑),他们必须这样做才能获得一个学位。但是,高等教育的作用实际上已经变得越来越小。

更糟糕的是,政府完全知道这一切,它首先使年轻人背负了贷款,然后贬低了他们的教育价值,最后那些无法偿还的学生贷款会全民承担,现在的年轻人正是未来的纳税人,从而对年轻人进行了惩罚。

言论与数字

1、

SQLite 的代码托管在 Fossil 上,永远不会迁移到 Git。Fossil 专为支持 SQLite 开发而设计,并且做得非常好。与 Git / GitHub 相比,Fossil 填补了不同的市场。

-- drh,SQLite 和 Fossile 的创始人

2、

互联网就像一个坑坑洼洼的道路系统,路上到处都有修路工人。

上路时,你的车辆可能被劫持,也可能有黑手伸入车窗偷走你的东西,甚至你不知不觉时,车辆就被卖掉了,供他人使用。你都没有注意到那些犯罪的人,压根不会指责和追究他们的责任。

-- GNU:net

3、

胜利者永远不会被问,他是否讲了真话。

-- 希特勒

4、

一张网页的大小,目前通常是50MB,而不是5KB。

-- HN 读者

5、

世界正变得越来越自动化。因此我认为,并非每个人都需要学习编程,而是每个人都需要学习和理解如何实现自动化。

-- 《不学习编码,学习自动化》

6、

你消费得越多,就需要消费更多。一旦停止消费,你就会感到无聊。

-- 《我无聊,怎么办?》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月14日

科技爱好者周刊:第 95 期

$
0
0

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

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

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

封面图:日本北海道公路上的狐狸,出处 Facebook

刊首语

知乎有一个问题《疫情给中国带来的积极意义是什么?》,有人在下面说,疫情改变了很多观念。

  1. 90%以上的会都是可以不开的。
  2. 许多班是可以不加的
  3. 许多养闲人的工作岗位是可以没有的。

这一次,大部分互联网公司,包括阿里和腾讯,被迫实行全员远程办公。没有这么多的会议、也没有人在办公室加班的情况下,公司基本都能正常运作,各种项目也在推进,虽然进度可能有所拖延。

那样的话,我问大家,管理层会怎么想?

如果我是高管,我就会注意到这个事实:既然远程办公,公司也能正常运作,那么平日那些开不完的会、加不完的班,就意味着很多都是无效劳动,公司存在大量冗余岗位,凭空增加了很多成本。

平日看上去,那么多人都在工位上忙碌,其实相当一部分劳动,对公司来说价值不大。更糟糕的是,无效劳动会自我膨胀,带来更多的无效劳动,那些冗余岗位为了彰显工作绩效,填满上班时间,会去推动一些不是很有必要的项目,让自己显得很忙碌,进而导致更多的会议和加班。

我的预测就是,疫情过去以后,远程办公的互联网公司会增加,那些没有远程办公的公司会裁员,裁掉一部分冗余岗位。

免费前端视频

随着复工的一再延迟,这一段时间企业的招聘岗位显著减少,往年三四月的面试季节已经往后推迟。

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

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

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

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

视频二: 《一步到位 Vue 精讲》 :Vue 基础,Vue-router 路由的使用,Vue-cli 脚手架的使用等。

视频三: 《Vue 美食城项目》:二十分钟手把手教你完成一个基于 Vue 开发的小项目。

感兴趣的读者,长按下方二维码两次,现在就能免费领取这三个视频教程。整个过程不要求发朋友圈、不要求转发链接,通过后立即发送专属观看链接。

温馨提示:资料数量有限,仅提供299份。

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

资讯

1、冰下探测器

美国宇航局正在南极冰层下面,测试冰下探测器。这个装置可以贴着冰层前进,收集各种数据。因为它主要依靠水流作为动力,所以能耗较小。不过,它不是为了探测地球,而是为了探测木星的卫星欧罗巴而准备的。

欧罗巴,又称木卫二,是木星的卫星,发现者是伽利略。它表面有一层薄薄的冰外壳,下面有可能存在巨大的液态水海洋。如果确实有海洋,再加上合适的温度和碳物质,星球内部将有可能孕育生命。

美国宇航局计划2025年发射欧罗巴飞船(Europa Clipper),需要几年时间才能到达木星。然后,一旦有机会,将从飞船发射这个探测器发射到欧罗巴,让其进入冰层下面,进行探测。

2、保证命中的步枪

以色列一家公司最近展示了高科技智能步枪,美军正在考虑是否采购。这种步枪最大的特点是带有智能瞄准系统,一旦锁定目标,就会自动判断能否命中。只有在保证命中的情况下,它才允许开火。

这种枪有两个好处 ,一是提高命中率,节省弹药;二是使用简单,只需5分钟训练,就能上手,不必是神枪手,也能百发百中。但是,这样的话,其实也不需要人了,做成远程操作的自动射击系统就可以了。

3、手机的通用充电器

2020年1月30日,欧洲议会通过决议,要求欧盟制定措施,保证手机采用通用充电器。理由是为了减少电子垃圾,如果每种电子产品都只能使用自家的充电器,这会造成许多浪费,欧盟希望一种充电器标准可以适用于多种设备。

这个决议明显针对苹果公司,因为只有 iPhone 使用专利的 Lightning 充电器。苹果公司已经发表声明:"强制所有智能手机使用一种充电器,将扼杀创新,而不是鼓励创新,这将损害欧洲乃至全世界的消费者。"

4、最清晰的太阳表面照片

2020年1月29日,美国国家科学基金会发布史上最清晰的太阳表面照片。这是直径4米的 Daniel K. Inouye 太阳望远镜拍摄的,这个望远镜在夏威夷毛伊岛一座3000米的高山顶上。

这张照片拍摄于2019年12月10日,是望远镜对准太阳后收到的第一束光。照片上,每个类似细胞的结构都有得克萨斯州的大小,它们是太阳内部剧烈运动的标志。这些剧烈运动将能量从太阳内部,源源不断地向宇宙辐射。

这个太阳望远镜由于聚焦太阳,会产生大量的热量,必须有冷却措施。超过7英里的管道将冷却剂送到整个天文台,并用夜间产生的冰块降温。

5、无人机放羊

新西兰地广人稀,放羊往往要花很多精力,羊群很容易走散。三年前,一位牧羊人购买了无人机,原来打算拍照,后来发现可以用来放羊。

他先让羊熟悉无人机的声音,但是羊无动于衷。于是,他录制了狗叫的声音,放在无人机上播放,羊群立刻受到了惊吓,被驱赶开了。接着,他在无人机的飞行路线下面,放好了零食,羊群很快发现,跟着无人机跑能吃到零食。现在,对于牧羊人来说,一只无人机可以管理300只羊,它就像一条训练有素的牧羊犬,更容易操控和监视。

一条相关的无人机新闻是,上海警方最近在高速公路收费口,用无人机喊话:"请大家打开车窗,扫描空中的二维码"。

6、一句话消息

  • 一家英国公司提出一种新颖的能源储存方案:利用冷冻空气储存能源。电力充足时,将空气冷冻成液态;电力不足时,就加热冷冻空气,使其变成气体。空气膨胀得如此之快,可以使发电机涡轮旋。

  • 英国科学家发现,空气污染会导致抑郁症和自杀率上升。主要原因是,脏空气中的细颗粒物可以通过血流和鼻子到达大脑,导致大脑炎症增加,损害神经细胞,以及刺激激素产生,出现不良的心理健康。据估计,如果改善空气质量,可以减少15%的抑郁症。

  • E-Ink 公司开发出了一种新型的彩色电子墨水屏,能够显示约5,000种颜色。预计明年会出现相关的电子产品。

  • 欧洲航天局委托一家瑞士公司,2025年发射一个太空清洁飞船,专门移除轨道上的太空垃圾。几十年来,人类遗弃的卫星碎片数量众多,已经对新的发射任务形成巨大威胁。

文章

1、C 语言主函数 main() 怎么写?(英文)

一篇 C 语言基础教程,讲解main()函数的语法知识。

2、如何使用 CSS 网格 Grid 制作简历?(英文)

本文通过一个制作简历的例子,展示 CSS 网格语法的灵活和方便。

3、过去十年最佳的15张太空照片(英文)

Vox 评选的15张照片,可以了解太空探索的最新进展。上图是冥王星表面的照片。

4、日期版本的方案

有人正式提出了"日期版本"(ChronVer)的方案,软件版本按照年月日编排。理由是用户更在乎最新版本的发布时间,而不是版本号。这里还有一篇文章,介绍日期版本的一些现有实例

5、我如何用机器学习生成甲虫图片(英文)

作者介绍自己如何用数据训练,生成不存在的甲虫图片,甚至可以生成跟某张人像最接近的甲虫(下图)。

6、从头构建一个 BitTorrent 客户端(英文)

本文介绍 BitTorrent 点对点下载的原理,并给出 Go 语言的实现。

7、区块链的共识机制(英文)

本文使用图片和例子解释,区块链作为一个分布式数据库,如何取得写入数据的共识,以及51%攻击是什么。

8、GitHub Actions v2 的新语法(英文)

本文介绍 GitHub Actions 新引入的一些语法,主要介绍的是如何提供命令的输入(input)、如何使用命令的输出(output)。这里还有一篇 JavaScript 项目的实例,可以作为参考。

9、如何在主机和 Docker 容器之间复制文件(英文)

软件以 Docker 容器发布的情况越来越多,docker cp命令可以在容器内外复制文件。

10、JavaScript 新的管道运算符(英文)

本文介绍目前处在阶段一的 JavaScript 管道运算符(|>)语法提案。

工具

1、sscaffold-css

一个极简的 CSS 默认样式库,目的是为 HTML 裸标签提供美观的样式。

2、Wayback Machine 插件

Chrome 浏览器插件,互联网档案馆的官方版本,可以查看一个网页的历史版本,包括那些已经无法访问的网页。

3、inlets

一个反向代理服务器,可以将内网的服务映射到公网。

4、jql

一个命令行的 JSON 数据查询工具,有更简单的查询语法。

5、Broot

一个命令行的目录树浏览工具,可以作用ls命令的替代品。

6、Snowpack

一个 JavaScript 工具,可以将 node.js 模块转成单个的 JS 文件,替代 Webpack 这样的打包工具。

7、Hexo Cheatsheets Theme

一个 Hexo 的主题,可以用来制作速查表(cheatsheet)网站,参见 devhints.io 的例子。(@glazec 投稿)

8、萤火虫

网页模拟黑夜中萤火虫飞舞的效果。

9、png

一个 Node.js 模块,用于 PNG 图片的解码和编码。(@vivaxy 投稿)

10、showdoc

一个技术文档网站的服务端,适合展示团队的技术文档、API 文档。(@star7th 投稿)

资源

1、A Compiler Writing Journey

一个英文介绍,一步步讲解如何写一个最小的 C 语言编译器。

2、industry-machine-learning

这个仓库收集各行业应用机器学习和数据科学的真实案例。(@ketra21 投稿)

3、SQL 谋杀之谜

一个英文的 SQL 初级教程,以游戏的方式,让你利用学到的 SQL 概念和命令来找出谋杀凶手。(@gofromzero 投稿)

4、应用密码学

免费的英文电子书,斯坦福大学的研究生教材。

5、谷歌的 Python 课程

谷歌公司开发的免费 Python 课程,内容包含 Python 语言知识、Git 和计算机自动化。(@ketra21 投稿)

图片

1、Null 岛

零度经线和零度纬线的交点,在西非沿岸的大西洋里面。它称为 Null 岛,因为两个零的坐标在数学里面可以称为 Null。

这个地方实际上没有岛屿,但是早期的科幻小说和动画片虚构了这个地方存在一个岛屿。目前,那里只有一个观察天气和海洋浮标。

2、切尔诺贝利事故的隔离区

1986年4月26日,苏联的切尔诺贝利核电站 4号反应堆发生爆炸,这是世界上最严重的核事故。下图就是发生爆炸的核反应堆。

当时,35万人被疏散。事故周围直径30公里的地区,被划为禁区。

30多年过去了,在没有人类干扰的情况下,禁区的自然生态得到了充分恢复,成为了欧洲状况最好的自然保护区之一。摄影师拍摄了数十张照片,下面就是其中的几张。

文摘

1、彼得·诺顿的故事

彼得·诺顿(Peter Norton),生于1943年,是一个大型机程序员。

1981年,IBM 公司发布第一台个人电脑不久,他就买了一台。并在次年开发了极为成功的软件工具套件 Norton Utilities。其中的杀手级应用程序是 UnErase,让文件删除变成了垃圾桶风格,如果你改变主意,随时可以将文件恢复。

他后来又开发了多种软件产品,还出版了大量文章(包括长期连载的《PC Magazine》杂志专栏)和书籍,成为了著名的 PC 软件程序员。下图是1985年出版的他的专著《IBM PC 编程》,封面是他的上半身,卷起了袖子,双臂交叉着。这是那一年最畅销的电脑书,被电脑程序员称为"粉红色衬衫书"。

1990年,他将自己的软件公司 Peter Norton Computing 卖给了Symantec,这使Norton 系列软件产品成为了赛门铁克公司的产品线。

出售公司后,彼得·诺顿(Peter Norton)的个人形象成为了 PC 维护的代名词,印在 Norton 系列软件的包装上。

这种带着领带、卷起袖子的样子,成为了他的经典姿势,很有象征意义。这代表着他是专业人士,随时准备着手处理可能导致计算机故障的问题。这种姿势保持了许多年。他本来不戴眼镜,不知为何照片上都戴眼镜,这增加了他的权威感。

下面是1991年防病毒软件 Norton AntiVirus 的广告,那时它才刚诞生不久。后来成为了 Norton 最著名的产品。

他也印上了 Norton 软件赠送给用户的马克杯。

他甚至还变成了电脑图标。

整个90年代,双臂交叉的彼得·诺顿如此有名,几乎出现在所有诺顿相关的软件产品和书籍中。

2001年,Symantec 公司将彼得·诺顿完全从产品包装上移除,那是一个时代的终结。产品包装上开始出现快乐、自信的计算机用户。

上面那些用户的照片,始终给人一种不真实的感觉,仿佛是拟人化的道具。

再后来,Norton 软件的包装就没有任何照片了。现在,Norton 软件的用户可能都不知道彼得·诺顿是谁。

至于彼得·诺顿本人,出售公司以后,他将大量精力用于慈善事业和收集艺术品。他对朋友说,很高兴不再扮演软件专家的角色。

2、日本的战争气球

第二次世界大战末期,日本即将战败。出于绝望,日本开始发动一个高空气球攻击计划,希望借助太平洋上空平流层的冬季气流,将携带炸弹的气球放飞到美国。这种高空气球是有史以来第一个跨越大洲攻击的武器。

气球的直径为10米,里面充了氢气,发射场位于日本本州岛的东海岸。1944年11月到1945年4月,日本一共发射了9300多个气球炸弹,预计其中10%会到达美国,这跟实际情况相差不远,美国已经发现的有300多个,不包括落在野外没有被发现的气球。

气球的飞行高度距离地面9公里,大约三天可以飞过太平洋到达美国,全程超过8,000公里。当气球的飞行高度超过12公里时,高度计会启动一个阀门以排出氢气,让气球下降一些高度。三天以后,预计已经到达美国时,气球会自动向地面释放炸弹,然后启动最后一颗炸弹,在空中炸毁气球本身。

日本知道,由于天气原因,气球炸弹起到的破坏作用不会很大,攻击的主要目的是希望在美国引起恐惧和惊慌。

1944年11月4日,美国海军就在太平洋海岸发现了第一个气球。空军试图拦截气球,但收效甚微,因为气球飞得太高,而且速度惊人,战斗机只摧毁了不到20个气球。有一些炸弹在美国本土爆炸,没有引起太大的破坏。

美国政府最担心的是,气球会引发太平洋沿岸的森林野火,战争时期没有足够人手去灭火。另外,美国知道日本正在研发生物武器,担心气球用来散布毒气或细菌。为了防止民众恐慌,并且不让日本得知气球的效果,美国政府阻止新闻媒体报道气球消息,但是后来出现伤亡以后,美国政府允许新闻界对公众发布警告,保证公众了解到这一威胁。

一开始,没人相信气球直接来自日本本土。人们认为,气球一定是从靠近加州的海洋里的潜水艇发射的。气球携带的一些沙包,送到美国地质调查局进行调查。地质学家对沙袋中的沙子进行物理和化学检查,并参考硅藻和其他微观海洋生物的类型和分布。结论是,沙子不可能来自美国的海滩,也不是来自太平洋中部,一定来自日本。地质学家最终确定沙子来自日本一宫市附近,空中侦察机在那里发现了两个氢气制造厂,很快在1945年4月被B-29轰炸机摧毁。

1945年5月5日,俄勒冈州的一个孕妇和五个孩子被气球炸死,这是美国唯一的死于气球攻击的伤亡者。当时,他们一家正在森林野营。寻找野餐地点时,孩子们看到一个奇怪的气球躺在地上,就跑过去检查。他们碰到了炸弹,并且不小心引爆了。事后检查发现,气球已经在那里躺了几个月。

现在爆炸点有一块纪念碑。一些日本平民参观了这座纪念碑,对死亡表示歉意,并且在纪念碑周围种了几棵樱桃树,以示和平。

言论与数字

1、

我刚进入甲骨文公司时,在新入职培训中问 CEO 拉里·埃里森:"甲骨文的五年计划是什么?" 他的回答很简单:"我们没有五年计划,连六个月计划也没有。"

我后来发现,甲骨文实际上没有书面计划,只有预算。我们的工作就是弄清楚拉里心里想要什么。

-- 贝尼奥夫,Salesforce 创始人

2、

人类现在每年生产的晶体管,比大米和小麦的粒数总和多1000倍。

-- 《能量和信息基础设施》

3、

世界血浆市场的70%来自美国。美国有巨大的商业献血量,血液占美国出口的 2%,比玉米或大豆出口更多。

-- 《贫穷美国人的血液是美国的主要出口品》

4、

我进过众多印度教寺庙,不过这一家连手机、硬币和皮带都不允许带入,还是头一遭。

不让拍照、不让乱投硬币尚可理解,我问为什么不能带入皮带,他们说:"因为无法判断你的皮带是不是牛皮。"

-- 《我在印度的701天》

5、

孙正义的愿景基金的剧本基本上是这样的:

第一步,以高估值投资一批有趣的初创公司;

第二步,以更高的估值进行1-2次后续融资,通常唯一的投资者是愿景基金以前投资的公司,比如 WeWork;

第三步,向愿景基金的投资人展示会计收益,以及巨大的内部收益率;

第四步,募集更多的资金。

-- 《阿美公司和愿景基金有什么共同点?》

6、

生物学正在变成一种工程学科。经过一千年,我们终于可以通过生物工程,进行设计、扩展和转化生物。

-- 《生物学正在吞噬世界》

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月21日

RDF 和 SPARQL 初探:以维基数据为例

$
0
0

维基百科有一个姐妹项目,叫做"维基数据"(Wikidata)。你可以从维基百科左侧边栏点进去。

"维基数据"将维基百科的所有数据,整理成一个可以机器处理的数据库,方便查询。比如,山西省人口最多的地区是哪一个?

这种问题在维基百科查询,非常费时,必须人工从一个个条目提取信息。但是,维基数据可以只执行一条命令,就返回答案(详见后文)。因为它提供结构化数据,可以机器查询。

但是,维基数据不是关系型数据库,而是 RDF 数据库;查询语言不是 SQL,而是 SPARQL。我粗浅地学了一点 RDF 和 SPARQL,本文就是学习笔记,演示如何使用维基数据查询信息。

一、RDF 的含义

大家都知道,关系型数据库是目前使用最广泛的数据库,将数据抽象成行和列的表格关系。

但是,现实世界不像表格,更像网络。各种事物通过错综复杂的关系,连接在一起,组成一张网。

网络在数学里面称为图(graph),每样事物就是图的一个节点,节点之间的关系就是将它们连在一起的那条边。如果数据库以图的方式储存数据,就称为图数据库。

RDF 就是图数据库的一种描述方式,或者说是一种使用协议。它以"三元组"( triple)的方式,描述事物与事物之间的直接关系。

"三元组"是 RDF 的核心概念,指的是两个事物和它们之间的关系,在语法上呈现为"主语 + 谓语 + 宾语"。

天空是蓝色的。

上面这句话,就是一个 RDF 三元组。"天空"(主语)和"蓝色"(宾语)是两种事物,它们通过颜色关系(谓语)连接在一起。

RDF 要求,谓语(即事物之间的关系)必须有明确定义。大家这样想,如果谓语是给定的,就可以用主语去查询宾语,或者用宾语去查询主语。比如,颜色关系是给定的,那么就可以向数据库进行下面的查询。

查询一:天空 + 颜色 = ?

查询二:? + 颜色 = 蓝色

任何组织和个人,都可以定义自己的谓语。RDF 要求每套谓语必须有一个明确的 URL,通过 URL 区分不同的谓语。RDF 官方定义了一套常用的谓语,URL 如下。

https://www.w3.org/1999/02/22-rdf-syntax-ns

使用的时候,只要引用这个 URL,别人就知道用的是哪一套谓语。

URL 比较冗长,引用不方便。RDF 允许指定一个前缀,代表 URL 地址,比如上面那个官方谓语的 URL,通常用前缀rdf表示。


PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

每个 URL 里面可以包含多种谓语,通过"前缀 : 谓语"的形式来区分。比如,官方定义了一个"type"谓语,说明主语的类型,就可以用rdf:type表示。

小明是学生。

上面这句话,写成 RDF 三元组,就是下面的形式。


PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

小明 rdf:type 学生.

由于rdf:type是一个常用谓语,RDF 允许把它简写成a,因此"小明是学生"又可以表示成小明 a 学生


PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

小明 a 学生 .

注意,每个 RDF 三元组的结尾是一个英文的句号,用来区分多个三元组。

二、 RDF 的语法示例

下面通过一个例子,演示 RDF 如何定义事物之间的关系。

甲壳虫是一个乐队,成员有 John Lennon、Paul McCartney、Ringo Starr 和George Harrison。他们都是艺术家,1963年出版过一张专辑《Please Please Me》,里面包含《Love Me Do》这首单曲,长度125秒。

上面这段话,是自然语言的文本。我们先画出网络关系图。

然后,转成 RDF 三元组。首先,给出谓语的 URL,及其对应的前缀。


PREFIX : <http://foo.com/tutorial/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

上面例子中,有两个 URL,表示使用两套谓语。其中一套是官方谓语,使用前缀rdf表示;另一套是自己定义的,前缀为空,表示这是默认的前缀。

"甲壳虫是一个乐队,成员有 John Lennon、Paul McCartney、Ringo Starr 和George Harrison。"这句话对应的三元组如下。


甲壳虫 rdf:type Band .
甲壳虫 :name "甲壳虫" .
甲壳虫 :member John_Lennon .
甲壳虫 :member Paul_McCartney .
甲壳虫 :member Ringo_Starr .
甲壳虫 :member George_Harrison .

上面例子中,rdf:type:name:member都是谓语。由于这些三元组的主语相同,RDF 允许将它们合并。


甲壳虫 a 乐队 ;
      :name "甲壳虫" ;
      :member John_Lennon, Paul_McCartney, George_Harrison, Ringo_Starr .

上面的代码中,主语相同的三元组采用合并写法时,每个三元组之间使用分号隔开,最后一个三元组采用句号结尾。

其余部分对应的 RDF 三元组如下。


John_Lennon      a 艺术家 .
Paul_McCartney   a 艺术家 .
Ringo_Starr      a 艺术家 .
George_Harrison  a 艺术家 .
Please_Please_Me a 专辑 ;
                 :name "Please Please Me" ;
                 :date "1963" ;
                 :artist "甲壳虫" ;
                 :track Love_Me_Do .
Love_Me_Do       a Song ;
                 :name "Love Me Do" ;
                 :length 125 .

三、SPARQL 查询语言

SPARQL 是 RDF 数据库的查询语言,跟 SQL 的语法很像。它的核心思想是,根据给定的谓语动词,从三元组提取符合条件的主语或宾语。

SPARQL 查询的语法如下。


SELECT <variables>
WHERE {
   <graph pattern>
}

上面代码中,<variables>是所要提取主语或宾语,<graph pattern>是所要查询的三元组模式。

比如,查询数据库里面的所有专辑。


SELECT ?album
WHERE {
   ?album rdf:type :Album .
}

上面代码中,?album是一个变量,名字可以随便起,第一个字符必须是问号?。查询的条件是,?album这个变量是主语,根据rdf:type这个谓语,可以得到:Album这个宾语。这个宾语也有前缀,表示这是当前数据库定义的。

如果返回的是符合条件的所有记录,变量可以用星号*代替,并且WHERE这个关键词在SELECT查询里面可以省略,最后一个三元组的结尾句号也可以省略,所以上面的查询也可以写成下面的样子。


SELECT * { ?album a :Album }

除了专辑名称,如果还要返回专辑的演唱者,可以增加一个变量?artist


SELECT ?album ?artist
{
   ?album a :Album .
   ?album :artist ?artist .
}

上面代码中,?artist这个变量必须是?album(主语)和:artist(谓语)的宾语。

四、维基数据查询示例:山西省人口最多的地区

下面通过维基数据查询"山西省人口最多的是哪一个地区",进一步学习 SPARQL 语法。

首先,进入维基数据网站,在页面顶部的搜索栏,搜索"山西"。或者,维基百科的"山西省"页面,左边栏也有跳转到维基数据的链接。

然后,进入山西省的页面

这时,留意一下这个页面的 URL。

https://www.wikidata.org/wiki/Q46913

上面 URL 最后结尾的Q46913,就是山西省这个条目在维基数据的编号(即主语),后面要用到。

接着,页面向下滚动,找到"contains administrative territorial entity"(所包含的行政实体)这个部分,它列出了山西省下辖的各个地区。

点击"contains administrative territorial entity"这个标题,进入它的页面,也留意一下 URL。

https://www.wikidata.org/wiki/Property:P150

上面 URL 的最后部分P150,就是"所包含的行政实体"这个谓语动词的编号。

现在,就可以开始查询了。进入维基数据的在线查询页面 query.wikidata.org

在查询框里面,输入下面的 SPARQL 语句。


SELECT ?area
WHERE {
   wd:Q46913  wdt:P150 ?area .
}

上面代码要求返回变量?area,该变量必须满足主语"山西省"(wd:Q46913)和谓语"所包含的行政实体"(wdt:P150)。前缀wd表示这是维基数据的条目,而前缀wdt表示这是维基数据定义的谓语关系。

点击左侧边栏的三角形运行按钮,就可以在页面下方得到查询的结果。

从上图可以看到,返回的都是条目的编号。修改一下查询语句,增加一栏文字标签。


SELECT 
  ?area
  ?areaLabel
WHERE {
   wd:Q46913  wdt:P150 ?area .
   ?area rdfs:label ?areaLabel .
   FILTER(LANGMATCHES(LANG(?areaLabel), "zh-CN")) 
}

上面代码中,增加了一个返回的变量?areaLabel,该变量是前一个变量?area的文字标签(满足谓语rdfs:label),同时增加了一个过滤语句FILTER,要求只返回中文标签。

运行这段查询,就可以看到每个地区的中文名字了。

接着,再增加一个人口变量?popTotal,返回每个地区的人口总数。


SELECT 
  ?area 
  ?areaLabel 
  ?popTotal
WHERE {
   wd:Q46913  wdt:P150 ?area .
   ?area rdfs:label ?areaLabel .
   FILTER(LANGMATCHES(LANG(?areaLabel), "zh-CN")) 

   ?area wdt:P1082 ?popTotal .
}

运行这段代码,就可以看到人口总数了。

然后,增加一个排序子句order by,按照人口的倒序排序。


SELECT 
  ?area 
  ?areaLabel 
  ?popTotal
WHERE {
   wd:Q46913  wdt:P150 ?area .
   ?area rdfs:label ?areaLabel .
   FILTER(LANGMATCHES(LANG(?areaLabel), "zh-CN")) 

   ?area wdt:P1082 ?popTotal .
}
ORDER BY desc(?popTotal)

运行结果如下。

最后,加上一个limit 1子句,只返回第一条数据。


SELECT 
  ?area 
  ?areaLabel 
  ?popTotal
WHERE {
   wd:Q46913  wdt:P150 ?area .
   ?area rdfs:label ?areaLabel .
   FILTER(LANGMATCHES(LANG(?areaLabel), "zh-CN")) 

   ?area wdt:P1082 ?popTotal .
}
ORDER BY desc(?popTotal)
limit 1

这样就得到了山西省人口最多的地区。

五、维基数据查询示例:程序员名录

下面再看一个例子,找出维基百科收入的所有程序员。


SELECT 
  ?programmer 
  ?programmerLabel
WHERE {
  ?programmer wdt:P106 wd:Q5482740 .
  ?programmer rdfs:label ?programmerLabel .  
  FILTER (LANGMATCHES(LANG(?programmerLabel), "zh-CN"))
}

上面代码中,Q5482740 是程序员,P106 是职业。

运行这个查询,就可以看到程序员名单了。

注意,这里只返回有中文名的程序员。如果数据库里面没有收入程序员的中文名,这里就不会返回。

然后,查询每个程序员的主要成就。


SELECT 
  ?programmer 
  ?programmerLabel 
  ?notableworkLabel
WHERE {
  ?programmer wdt:P106 wd:Q5482740 .
  ?programmer rdfs:label ?programmerLabel .  
  FILTER (LANGMATCHES(LANG(?programmerLabel), "zh-CN"))

  ?programmer wdt:P800 ?notablework .  
  ?notablework rdfs:label ?notableworkLabel .  
  FILTER(LANGMATCHES(LANG(?notableworkLabel), "zh-CN"))
}

运行结果如下。

有的程序员有多项成就,比如,约翰·卡马克有"毁灭战士"和"雷神之锤"两项成就。这时可以用GROUP BY子句将它们合并在一起。


SELECT 
  ?programmer 
  ?programmerLabel 
  (GROUP_CONCAT(?notableworkLabel; separator="; ") AS ?works)
WHERE {
  ?programmer wdt:P106 wd:Q5482740 .
  ?programmer rdfs:label ?programmerLabel .  
  FILTER(LANGMATCHES(LANG(?programmerLabel), "zh-CN"))

  ?programmer wdt:P800 ?notablework .  
  ?notablework rdfs:label ?notableworkLabel .  
  FILTER (LANGMATCHES(LANG(?notableworkLabel), "zh-CN"))
}
GROUP BY ?programmer ?programmerLabel

上面代码中,GROUP_CONCAT函数用来把多个?notableworkLabel变量合并成新的一栏works

运行结果如下。

上面图片中,"毁灭战士"和"雷神之锤"已经合并成一个单元格了。

接着,为每个人增加一个头像照片。


SELECT 
  ?programmer
  ?programmerLabel 
  (GROUP_CONCAT(?notableworkLabel; separator="; ") AS ?works) 
  ?image
WHERE {
  ?programmer wdt:P106 wd:Q5482740 .
  ?programmer rdfs:label ?programmerLabel .  
  FILTER(LANGMATCHES ( LANG ( ?programmerLabel ), "zh-CN"))

  ?programmer wdt:P800 ?notablework .  
  ?notablework rdfs:label ?notableworkLabel .  
  FILTER (LANGMATCHES ( LANG ( ?notableworkLabel ), "zh-CN"))

  OPTIONAL {?programmer wdt:P18 ?image}
}
GROUP BY ?programmer ?programmerLabel ?image

上面代码中,返回值增加了一个照片变量?image。由于不是每个人都有照片,所以把照片要求放在OPTIONAL条件中,表示这一项是可选的。

得到查询结果后,把结果的表格视图(table)切换成图像视图(image grid)。

这时,照片就可以显示出来了。

最后,我们想知道他们是哪个地方的人,维基数据提供他们的出生地。


SELECT ?programmer 
  ?programmerLabel 
  (GROUP_CONCAT(?notableworkLabel; separator="; ") AS ?works) 
  ?image
  ?cood
WHERE {
  ?programmer wdt:P106 wd:Q5482740 .
  ?programmer rdfs:label ?programmerLabel .  
  FILTER(LANGMATCHES ( LANG ( ?programmerLabel ), "zh-CN"))

  ?programmer wdt:P800 ?notablework .  
  ?notablework rdfs:label ?notableworkLabel .  
  FILTER (LANGMATCHES ( LANG ( ?notableworkLabel ), "zh-CN"))

  OPTIONAL {?programmer wdt:P18 ?image}

  OPTIONAL {
    ?programmer wdt:P19 ?birthplace .
    ?birthplace wdt:P625 ?cood .
  }
}
GROUP BY ?programmer ?programmerLabel ?image ?cood

上面代码中,返回值增加了坐标变量cood,先查询程序员的出生地,然后查询出生地的地理坐标。

运行查询之后,默认的表格视图就会出现坐标。

把视图切换成地图(map)。

这时就能看到这些程序员在世界地图上的位置。

这篇教程就到这里为止,维基数据的查询方法还有很多,继续学习可以点击查询页头部的Examples按钮,看看官方提供的示例。

六、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月23日

我的外包经验:印度、中国和菲律宾(译文)

$
0
0

外包在软件业很常见,各种规模的公司都在用,每年要吸纳大量就业。

但是,外包的曝光量很少,大家似乎都不太关心,很少有人谈论。这导致许多人不了解外包到底是怎么回事。

本周,我读到 Troy Hunt 在2016年的一篇旧文,介绍他的外包经验。我觉得,读起来很新鲜,有启发。下面就是节选的译文,插图是我配的。

我的外包经验:印度、中国和菲律宾

作者:Troy Hunt

原文网址:troyhunt.com

1、

我有很多与亚洲外包供应商合作的经历。这篇文章我想来谈谈,多年来将软件项目外包到印度,中国和菲律宾的经验。

我以前的工作是辉瑞公司的软件架构师,一共干了14年,曾经负责过亚太地区的软件架构。

2、

辉瑞公司的软件开发策略很简单,就是将所有事情外包。

这是行业的标准做法,我因此跟亚太地区数十个软件供应商合作过,参与了各种各样的项目,范围很广,从简单的产品宣传网站到大型临床研究系统,从移动应用 App 到 POS 机的终端程序。

我对印度、中国和菲律宾的软件外包行业,接触得比较多,感触尤其深,我想讨论对它们的观察。

3、

辉瑞公司为什么要外包?

原因很简单,因为程序员很贵。你必须花很多钱,雇佣很多人来构建软件产品,无论他们是否在工作,你都需要支付薪水。而且你雇来的程序员不一定懂每个项目所需的特定技能,这意味着你还要雇佣更多的人。

外包就相当于"云程序员",你可以只在需要的时候去用它,只为所消费的东西付费,因此减轻了自己公司的负担。

4、

外包一般都选择亚洲,因为其他地方的工资太高。澳大利亚很贵,美国很贵,英国很贵,上图是世界银行的人均收入数据,这三个地区与印度、中国、菲律宾。

以我的经验,前三个国家的外包公司小时工资,比后三个国家贵4到5倍。

5、

先来看印度。这个国家已经成为离岸外包的代名词,在许多 IT 经理的心中,外包就等于印度。原因有很多。

  • 印度当过英国的殖民地,印度人的英语水平很好。
  • 印度拥有超过13亿人口,这意味着它有源源不断的工程师。
  • 印度的外包行业很成熟,外包巨头 Tech Mahindra、Infosys、Wipro 有规范的外包流程,在这个领域进行了大量投资。

6、

印度许多程序员都是通过单项技术的强化培训而大量生产的,往往只懂培训教的非常特定的技术栈。我常常发现,他们只懂软件组件的一个独立部分,而这就是他们要做的全部事情。

这对项目带来的后果就是,最终会导致很多人参与其中。我查看工作量估算,向外包负责人提问:"为什么需要这么多人?"。里面会有初级程序员、高级程序员,专门从事 API 开发的人员,负责网站的人员,负责数据库的人员等等。有些项目由于庞大的规模,需要这样做,但即使是很小的项目,也是这个样子。

7、

印度的另一个问题是流失率,程序员总是在离开。传统的公司忠诚度在印度并不盛行,大多数人在一家外包公司不会超过一两年。程序员总是去其他地方寻求更好的机会,这无可厚非,但是这种流失率意味着项目会产生更多的摩擦。这些并不会出现在你的外包合同中。

我还发现,印度程序员对需求文档要求很高,他们始终要求真正详细的文档。其他地方的程序员也要求需求文档,但在印度这个要求更强烈,细节对印度人来说很重要。很多时候,我们假设软件应该包括的功能,事后发现这些功能被认为是"超出范围"。这可能在全世界任何地方的任何项目中发生,但在印度极为盛行。

最合适外包到印度的项目,我认为最好是一个独立的工作单元,范围有着明确的界定,文档齐全,并且完全遵循印度公司现有的模式。你要知道,那里的程序员接受的是非常具体的事情的训练,并以工厂流水线的心态在开发,你按照他们的模式,那就会走上"快乐之路"。

8、

接着来谈谈中国。

中国正在快速城市化,越来越多的人口接受高等教育。他们是一个非常精通技术的国家,在这方面不断壮大,从新兴的硬件提供商变成现在占主导地位的厂商,比如华为和联想,也有像阿里巴巴这样的非常强的服务类公司。这些公司如今已经进入了世界舞台。如果您热衷于技术而不关心中国的动态,那么可能会错过未来几十年世界上最重要的技术创新和增长来源。

9、

对于外国人来说,中国人并不容易合作,主要原因是外语水平。中国的内部市场很大,几乎所有项目都有自己的中文服务,因此中国人接触英语的机会很有限,如果要跟他们清晰的沟通可能是一件很棘手的事情。

这意味着,你几乎总是与实际从事开发的程序员,至少隔了一层。通常会有一个具有一定英语技能的客户经理,你与他联系,他再把你的意思翻译给技术人员。这样的后果就是,当你真正需要进行详细讨论时,没法跟程序员直接沟通。中国程序员会在内部自己商量,你不知道他们在想些什么,并且很多东西在翻译过程中丢失了。

这对代码质量有深刻影响。从功能上讲,代码本身可能还不错,但这是很少或几乎没有英语技能的人编写的代码。高质量软件的要求之一,就是代码本身就是自我记录的文档,这一点很难实现。他们的代码可能无法清晰地描述软件的功能,不仅对作者也对将来维护的人,都很难阅读。

要是你愿意一直跟同一个软件供应商合作,那可能不会成为问题,但如果你收回代码或交给其他人维护,就会遇到严重问题。我的切身体会是,很难评审中国程序员编写的代码。另外,语言障碍对用户界面也有影响,那些编写代码的人由于不太了解英语,编写的​​标签和标题可能会使英语用户不适应,这意味着要进行许多意想不到的(且预算未定)的修订。

10、

我有一个习惯,一直要求供应商提供工作分解表。如果我要外包一个具有20个功能的应用程序,那么我想知道每个功能要花多少钱。然后,我可以评估,讨论一下每个功能的重要性,是否要通过放弃价值较低的功能来降低成本。

但是在中国,供应商无法提供这种表格,因为他们不是以这种方式核算成本。他们给我的细分,只是有多少个大三和​​大四的学生、项目经理、测试人员参与,他们每个人的花费是多少。在我看来,这根本没用,但我也没办法。

中国的另一个现象,就是工时非常高,他们会投入大量的时间。我很清楚地记得一个案例,中国供应商的报价与澳大利亚的本地供应商相同,而工时却大了一个数量级。

11、

中国现在变得越来越昂贵,根据我得到的消息,北京程序员的薪水是两位数的涨幅,有报告称,他们的年薪约为25,000美元,而孟买的年薪约为7,000美元。这是一个非常重要的差异。

中国的优势之一(尤其跟印度相比)就是对需求文档的要求不高。中国有一种真正的"可以做"的态度,不管你提什么要求,他们都愿意拿起任何东西去尝试。不过,虽然他们对任何事情都会说"是",但是实际上的意思很可能是"否"或别的,这里会存在风险。但是总的来说,我发现他们的适应性非常强,这是一大优势。

我更倾向于外包给中国,因为那里更加灵活,限制也更少。不过由于语言障碍,与新的供应商合作期间,涉及的摩擦也更大。

12、

再来谈谈菲律宾。

我在马尼拉度过了很多时间,可以很自信地说,菲律宾人是你在任何地方所能遇到的最友好的一群人。由于菲律宾当过美国的殖民地,所以当地人的英语水平很出色,英语是菲律宾排名第二的官方语言。你在马尼拉的任何地方,都能毫无问题地被理解,并与当地人进行交流。

近年来,我注意到的一件事是,呼叫中心转移到菲律宾的趋势很明显。以前你打客服电话,是印度人接听,现在每次我打给电信公司,都会与菲律宾人交谈。我认为,这是他们强大的英语能力,友善的性格和新兴的科技行业共同作用的结果。另外,菲律宾的薪水比中国低得多,更接近印度。

13、

菲律宾是一个贫困的国家,到处都可以看到这一点,特别是在前往机场的路上穿过摇摇欲坠的房屋时。

这对技术领域也产生了影响,我在外包中看到的最明显的一点,就是菲律宾程序员对 PHP 的强烈亲和力。这样说并不是要贬低 PHP,而是 LAMP 技术栈的低成本造成的。辉瑞公司所使用的 Microsoft 技术栈在菲律宾很难找到市场。你随便去一家供应商,他们的默认态度总是"是的,我们将用 PHP 和 MySQL做到你们的需求。 "尽管我们后来确实找到了可以使用 Microsoft 技术栈的供应商,但我始终觉得它们并不受到重视,这让我对他们的技术能力有些担心。

14、

在成本上,菲律宾肯定比中国低,而且经常比印度低。根据现在的趋势,这种情况大概会保持很长一段时间。

在许多方面,菲律宾是世界上最好的。除了成本,他们还有这个价格的国家中最好的英语技能,友善的性格,以及我在中国观察到的相同的"可以做"的态度。

15、

最后,谈谈我的外包经验。

首先,外包是一种不稳定的商品,因为程序员是不稳定的,尤其是在印度。我们当时与一家孟买的开发商合作,花了很多时间和金钱培训一个叫做 Avni 的程序员,让她掌握所需的特定技术。这个项目进展顺利,但是有一天,Avni 离开了。我怀疑她要去生孩子了,根据我的经验,这种情况通常会在发生几个月后才通知你。开发商跟我们说不要担心,会给你找另一个 Avni,跟上一个一样!

开发人员不是可以替代的商品。你不能简单地用一个人去替代另一个人,然后期望他们同样地工作。我经常看到外包供应商信誓旦旦地断言,他们能够像更换厨房灯泡那样简单地更换程序员。这是一种危险的不称职的信念,表明对软件开发的实际情况有根本的误解。

16、

第二点,外包软件的质量,不一定能够在项目交付时看出来。通常要花上数月甚至数年的时间,才能意识到你所承担的"技术债务"的成本。供应商开发完软件,将其移交给客户之后,如果客户以后要添加功能,发现代码难以辨认,将花多少钱才能解决?在软件产品生命周期中,长期的成本通常被忽略,因为人们争先恐后地希望立即节省短期成本。

我从未见过,外包供应商为项目编写任何单元测试!他们没有自动化测试流程,总是用人工测试确保一切正常。开发人员甚至从未听说过自动化测试这种概念,因为编写额外的代码将花费更多的金钱,一切在他们看来理所当然。所以,外包项目的长期可维护性和成本是可怕的。

17、

第三点,如果想让外包成功,最好采用混合模式。不是"将所有事情外包",而是"让我们的人与他们的人一起工作,各自做自己最擅长的事情"。

我花了大量时间,到世界各地的外包公司,培训他们的开发人员,跟他们的团队待在一起,交谈要开发的项目。我遇到了各种坏的故事,但也有一些非常积极的经历。

避免依赖外包组织中的个人,比如上文的 Avni,外包行业的人员流动性比一般情况大得多。相反地,应将重点放在让更多人一起参与,如果其中一个离开,你就不会损失太多的项目知识。

还可以多应用一些开发工具,比如代码质量检查工具、构建服务、版本管理等等,让工作过程变得更加可预测。

18、

第四点,也是最重要的一点,不要把小时费率视为外包成功的指标,不要根据报价的高低选择供应商。

外包给哪个供应商,通常是由公司内部对软件开发了解最少的人决定的。低报价吸引了他们,只考虑了短期成本和交付条件,没有将长期成本(诸如可维护性,可用性以及安全性之类的因素)考虑在内。因为公司的预算和业务目标总是聚焦在短期,难怪那些掌握资金却不了解技术的人做出了不明智的外包决策。

廉价的离岸外包是软件行业的麦当劳。因为需求量很大,外包公司就把软件开发做成了批量生产的产品。但如果你一直吃麦当劳,就不是很好。你最好将外包视为均衡饮食的一部分,做出明智的决定,不要因标价低而盲目选择,不考虑要支付的实际成本。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月27日

科技爱好者周刊:第 96 期

$
0
0

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

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

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

封面图:东非发生蝗灾,2020年1月9日埃塞俄比亚一架波音 737-700 飞机,降落时撞到了一群飞蝗(出处)。

刊首语

上海市教委通知,本市中小学3月2日开学,但是不到校,在家收看线上课程。

这些课程都是由教委统一录制,动员"全市各学科一千多名优秀骨干教师,共分为12个频道,涵盖小学一年级到高中三年级。"

上面是录制现场的照片。看上去跟平时讲课没有区别,就是单纯的课堂录像。大家觉得,这样的听课效果会好吗?依我看,现场讲课效果都未必很好,何况在家看录像呢!

教育类的视频,一般都要带有一点趣味性,最好加入大量的动画、图片或短视频,才能吸引人,否则就太枯燥了。干巴巴的讲解课本,一张张展示幻灯片,成年人都看不进去,小朋友的听课效果就可想而知了。

我觉得,网课肯定是未来的趋势,大多数知识将来都是线上学,这样才能做到随时随地学习,而且成本也足够低。但是,前提是 不能把课堂教学拍成录像放上网,而是要做到知识性与娱乐性的结合,才能成功。

我心目中的范例有两个,都是国外的视频作者,一个是 3Brown1Blue,专拍数学视频;另一个是 Kurzgesagt,专拍科普短视频。他们都做得非常棒,可以当作榜样。下面是 Kurzgesagt 的《世界最危险的药是什么》,大家感受一下吸引人的网课是什么风格。

前端面试专题课

今年受到新冠肺炎的影响,以往三四月份的面试黄金季节受到了耽误,很多求职前端的同学误以为招聘季还没有来,但是其实相当一部分公司已经在远程面试了。

如果你还在等疫情结束后再开始面试准备,可能就已经晚了,会错失很多好的工作机会。你应该抓紧这段特殊时期,做一些针对性的准备,比如充实前端基础知识,熟悉主流框架的API和解决方案,了解一些边界案例。

国内最大的在线教育平台之一的腾讯课堂,发布了一个前端面试专题课,在这里介绍给大家。这门课帮你直击三大面试难关,着眼于当前大厂每一轮面试,精细化到一面、二面、三面、从技术点到面试技巧, 面面俱到,带你直达offer。

第一关:面试基础问题要点总结

大厂面试常问基础知识剖析;JS、CSS 面试问题精华总结、脉络解析;HTTP 及 HTTPS 等协议的底层思维深入解析;底层编译原理等要点总结,助你直达二面。

第二关:面试框架层面深度剖析

Vue2 源码逻辑浅析及相关特性处理,全面剖析 Vue2 周边面试问题;Vue3 核心双向数据绑定的实现解析,深入学习Proxy及元编程。进一步拔高框架层面的理解;React改版后新特性 Provider、hooks等原理讲解;React周边面试题剖析讲解。

第三关:面试最难关,攻破工程及性能优化

结合项目攻破性能优化关卡,全方面讲解性能指标的各种优化逻辑;全方位讲解babel构建AST,词法分析、语法分析等原理;结合项目剖析性能缺点并优化,深度解析工程化打包原理及构建过程;结合工程化讲解资源构建及打包等底层逻辑,攻破性能瓶颈,助你直达offer。

主讲是曾就职机锋、腾讯等公司担任高级工程师及前端架构的陈老师,本身也是一名大厂面试官。除课程本身的手把手指导之外,他还将拓展一些经典大厂面试题,以及面试经验。

专题课于下周一(3月2日)开课,课程原价98元,扫描下图二维码,添加好友领取优惠券, 前100名加好友报名 仅需1元

资讯

1、激光智能眼镜

德国博世公司新推出了一种智能眼镜,能够直接在视野中叠加一层完全透明的显示屏,用来跟软件互动。具体的演示,请看下面的宣传视频。

这种技术最大特点是,这个显示屏不是通过投影显示,而是使用微电镜阵列,将三束激光(红,绿和蓝)对准嵌入在镜片中的透明全息元件,然后将光线反射到眼球中,直接在视网膜上成像,因此其他人看不到镜片上叠加的信息。不过,由此带来的问题是,每一副眼镜都必须定制,适合佩戴者的脸型,保证激光可以正确地反射到瞳孔中,因此成本较高。

2、SpaceX 开放卫星发射服务

SpaceX 开放卫星发射服务,个人可以在他们的官网交钱发卫星。目前,最早可以发射的日期是2020年6月,收费最低为100万美元,卫星重量在200公斤以下,每增加一公斤,就会增加5000美元费用。

用户需要提供卫星的轨道参数,提交请求时,支付5000美元押金,剩余款项在发射前支付。该服务主要针对预算不足的小型卫星客户,利用 SpaceX 的一箭多星技术,通过火箭上的多余空间,搭载客户的卫星,为 SpaceX 占领卫星发射市场。虽然对个人来说,这笔钱并不便宜,但已经是发射卫星的最低价最简单的途径了。

3、Xbox 美景指南

旅游指南 Rough Guides 丛书,最近出版了《Xbox 美景指南》,专门收入出现在 Xbox 游戏的各种美丽景点,供游戏爱好者前往体验。该书定价20英镑,在微软商店出售。

游戏创造的虚拟世界越来越精美,值得人们专程前往观赏,并且还能在其中漫游,不用购买飞机票,只需打开游戏机的按钮。下图是游戏《刺客信条:奥德赛》里面的吉萨金字塔场景。

4、《火车进站》4K 版

法国卢米埃尔兄弟1895年拍摄的50秒短片《火车进站》,是人类的第一部电影,展现了一辆火车在蒸汽机车的牵引下,驶进法国沿海小镇拉西奥塔一处火车站的情景。

原始电影的影像非常模糊,有严重的颗粒感。最近,有人使用神经网络,将这部1895年的视频提升到了 4K 分辨率,效果非常好,逼真地还原了100多年前的情景,火车、衣服和乘客面部的细节清晰可见。

下面就是这段 4K 视频,是采用商业软件在家用电脑上完成的。

5、疯狂迈克

一位外号叫做"疯狂迈克"的美国冒险家,2月22日死于一次火箭发射事故,享年64岁。当时,他正在为发现频道拍摄节目,乘坐自制的火箭,飞上5000英尺(约1500米)的高空,结果火箭升空以后,直线坠地,导致他的身亡。

他使用的是蒸汽火箭,利用水蒸汽的高压作为推力。2018年的试验中,他乘坐同样的火箭,达到了1,875英尺的高度。在那次发射中,他说:"这件事可能会有10种可能杀死你,但真正杀死你的是那种心跳的感觉。"

6、 一句话消息

  • 非洲蝗灾蔓延到了巴基斯坦,该国政府表示蝗虫目前每天破坏约为3.5万人的口粮,如任其发展,国家将会无粮可收。巴基斯坦已经宣布进入了紧急状态,动用了数百架飞机进行喷洒农药和驱赶。

  • 德国科学家在撒哈拉沙漠发现,世界上速度最快的蚂蚁,每秒可以前进近1米,相当于体长的108倍。

  • 美国2月17日派出两架货运飞机,将钻石公主号的329名美国乘客接回,有一个乘客拍摄了货机的内部照片。14名确诊受病毒感染的乘客,全部装在一个隔离箱里面。

  • 德国经济在上个季度增长放缓至零之后,正处于衰退的边缘。据说原因是,特斯拉公司使得德国汽车业创下22年新低。

文章

1、如何成功(英文)

这是 YC 总裁 Sam Altman 的推特长发言,摘录几条。

  • 一份无关紧要的工作是一个危险的陷阱,很多人都会掉进去。
  • 想让别人帮你,最好的办法就是你先帮他们,或者去做一些有趣的事。
  • 致富靠的是权益,而不是工资。

2、如何关闭一个 Node.js Web 应用(英文)

按下 Ctrl + C,退出一个 Node.js 服务进程时,怎样才能保证处理完所有清理工作,然后进程才会退出?

3、我如何管理知识?(英文)

一个程序员介绍他管理网址、笔记、代码的方法,以及所使用的工具。这里还有一篇其他人写的类似文章

4、如何打造一个 serverless 的微信小程序(中文)

作者使用 AWS Lambda 作为后端,开发了一个背单词的微信小程序《世凝听记》。(@smilingleo 投稿)

5、HTTP 接口设计方案(中文)

作者作为架构师参与多个移动应用的前后端开发,经过多年积累,渐渐稳定下一套后端 HTTP 接口设计方案。随方案提供了一个基于 Spring Boot 的简单实现。(@flmn 投稿)

6、如何阅读科研论文(中文)

有效地阅读论文,是每个研究生都必须掌握的技能。本文作者介绍一个简单的"三步法",快速阅读科研论文。(@E-Tsai 投稿)

7、GOTO 语句被认为有害(中文)

Dijkstra 的《GOTO 有害论》在网上只有两个不太好的翻译版本。于是我花了15天翻译了此文。希望能对想用中文了解原文,历史,评价的人能有所帮助吧。(@emon100 投稿)

8、Mac 笔记本的低功耗模式(英文)

作者发现关闭 Mac 笔记本的 Turbo Boost 功能,可以有效降低功耗,大大延长电池的使用时间,而且性能没有明显下降。

9、lit-html 模板库用法(英文)

lit-html 是谷歌推出的一个网页模板库,使用了 ES6 的模板字符串语法。我认为这是目前最好的 JavaScript 网页模板方案。

10、我如何在 Udemy 卖课程?(英文)

作者介绍自己如何在 Udemy 出售和推销自制的 Flutter 视频课程,2019年销售金额为1.5万美元。

工具

1、GayHub

Chrome 浏览器插件,优化 GitHub 使用体验,提供项目目录树、文内目录导航、图片全屏预览等功能。(@yanyue404 投稿)

2、Spotify-Lyrics

Chrome 浏览器插件,可以在 Spotify Web Player 里面显示歌词,歌词来自网易音乐的接口。(@mantou132 投稿)

3、memo

一个笔记软件,数据可以储存在 GitHub Gist。有 Web 版和桌面版,可惜没有手机 App。

4、MojoJson

一个通用的 JSON 解析算法,简单高效快速,提供 C# 和 C 的实现,也可以轻松用其它编程语言实现。(@scottcgi 投稿)

5、craft.js

一个可以通过拖拽生成 React 应用的可视化框架。(@ifrontend-xyz 投稿)

6、onedev

一个 GitLab 的替代品,DevOps 平台,带有 Git 版本管理、issue 追踪、Pull Request、持续集成等功能。

7、qier-player

一个 H5 视频播放器的 React 组件。(@vortesnail 投稿)

8、写作猫

AI 写作助手,可以给出文章中的语言错误。(@iiismile 投稿)

9、MojoJS-Animation

一个轻量级的 JS 网页动画引擎。(@scottcgi 投稿)

10、Rust JVM

一个示例项目,使用 Rust 语言写的 JVM 虚拟机。(@douchuan 投稿)

资源

1、动手学深度学习

《Dive into Deep Learning》英文教材的中文翻译。(@Wonderdch 投稿)

2、云原生技术公开课

本课程由阿里云和CNCF联合开发,课程全程免费且无需注册,主要介绍容器和 kubernetes。(@xianyuLuo 投稿)

3、Kubernetes 中文指南

本书是第一本系统整理的开源中文版 Kubernetes 参考资料,记录了本人从零开始学习和使用 Kubernetes 的历程,着重于总结和资料分享,同时也会有相关的概念解析。(@xianyuLuo 投稿)

4、如何制作树莓派 NAS

一个详细的图片教程,介绍如何自己从头制作一个基于树莓派的 NAS 网络硬盘。

5、7天用 Go 从零实现系列

使用 Go 语言,从零开发一些常用 App 的代码示例。(@geektutu 投稿)

图片

1、世界最老的野生鸟类

1956年,鸟类学家钱德勒·罗宾斯在中途岛,抓到了一只5岁的信天翁,取名为"智慧",并为它装上了脚环,然后放生。

现在,这只鸟还活着,已经达到了69岁的高龄,成为已知寿命最长的野生鸟类。它的脚环因为寿命到期,已经更换了6次。它很幸运在2011年日本海地震和海啸中幸存下来,当时死了2000多只信天翁。

它每年都会回到中途岛,产下一枚蛋,最近一次是2018年11月。美国地质调查局一直追踪着这只鸟,确认她从1956年至今,飞行了超过300万公里,相当于绕地球120圈。鸟类学家表示,这只鸟60岁以后还能不断生育后代,令人感到震惊。

2、安乐死过山车

2010年,立陶宛艺术家 Julijonas Urbonas 设计了一个帮助晚期病人安乐死的过山车。他曾在游乐园工作,有一天听到别人说:"有一种终极过山车,上面有24个乘客,停下来的时候,他们全部死了",受到启发而做了这个设计。

这种过山车会快速上升到510米,然后从那里下降500米,达到每小时360公里的速度,接着进入一段旋转轨道,直径一个比一个小,达到10个重力加速度,持续60秒。乘客会由于大脑缺氧供血不足,先陷入昏迷,然后死亡。

文摘

1、AirPods 成为平台

苹果公司的 AirPods 无线耳机正在迅速占领市场,竞争对手发现自己岌岌可危。短短三年内,AirPods 就从 iPhone 的配件发展成一个早期的独立平台,重塑可穿戴设备行业。

一件有趣的事是 AirPods Pro 的发布方式。它没有获得大型产品盛会上的曝光待遇,而是通过新闻发布稿宣布推向市场。它因此可能最终成为,仅通过新闻发布的最畅销的苹果产品。

2019年早些时候,带有无线充电盒的 AirPods 也是通过新闻稿发布的。

再早的时候,AirPods 也没有像 Apple Watch 一样有红地毯的发布待遇,而是在旧金山的 Apple iPhone 和 Apple Watch 活动上仅用五分钟的时间,就向全球推出了。当时,AirPods 仅仅被定位为 iPhone 7 和 7 Plus 的一种配件,是消费者从专用耳机插孔转移过来的一种选择。

苹果公司现在拥​​有三种不同的 AirPods 型号,价格分别是159美元、199美元、249美元,每种型号针对的一个不同的价格段。可以肯定的是,苹果在未来几年内会继续推行这一战略,AirPods 产品线的价格可能从较低的99美元,一直到较高的500美元。

在2019财年,苹果售出3500万对 AirPods,收入为60亿美元,增长了一倍。过去三年中,苹果累计销售了6100万对 AirPods,相比之下 iPhone 诞生的前三年,卖出了6000万部。

现在,AirPods 的单季度销售额超过1000万对。未来,人们可能购买和使用一对以上的 AirPods,这将有助于进一步提高销量。蒂姆·库克说,消费者会拥有一对普通的 AirPods,然后再拥有一对消噪的 AirPods Pro。事实上,我们已经开始看到了这种趋势的苗头,人们升级 AirPods,但保留旧的 AirPods 作为备份。

AirPods Pro 有降噪和透明两种模式,让用户有不同的声音体验。苹果正在将 AirPods 变成一个平台,继 Apple Watch 之后的第二个可穿戴设备平台,通过智能处理声音让用户使用这个平台。未来的开发人员可以通过增强人们的听觉体验,来参与这个平台。比如,可以根据 Apple Watch 获得的用户心律调整 AirPods 音乐的节奏和氛围。也可以让同一个地点的用户,通过 AirPods 听到的声音不一样。

AirPods 是用于耳朵的计算机。多年来,苹果学习如何制造21亿部iPhone和iPad的经验,现在正在帮助它每年制造近7,000万部可穿戴设备。

一个设备成为平台,前提是大规模采用。目前,有4,500万人佩戴 AirPods。以这个速度,到2021年某个时候,将有超过1亿人佩戴 AirPods。

2、我们会用尽氦气吗?

氦是元素周期表的第二个元素,仅次于氢,是第二轻的元素。

它太轻了,足以逃离地球的引力场,流失到太空,所以在地球上含量不高,属于非常少见的元素。在化学性质上,它属于惰性气体,很难发生化学反应,所以有着广泛的用途,可以用于电弧焊、潜水、硅晶体生长,以及在MRI(磁共振成像) 扫描仪中用作冷却剂。

正是由于氦气的含量少,用途广,所以人类有可能在几十年内用尽现有的氦气。

地球的氦气是由岩石的放射性衰变产生的,在亿万年的时间里,衰变产物的氦气进入了地下的天然气。现有的氦气都是从天然气里面提取,这比从大气里面提取要便宜得多。

市场上大部分的氦气供应,都来自美国的国家氦气储备。1996年颁布的《氦气私有化法》要求政府尽快把氦气储备私有化,所以大量的氦气以极低的价格出售。

氦气一旦释放到大气中,就流失了。按照人类现在的使用速度,30年内就会用尽现在的储备氦气,以后就必须从天然气和地下水中提取,这将使得氦气的价格火箭般的上涨。

虽然氦是宇宙中最丰富的元素之一,但人类也不可能从附近的行星获得氦气,因为这些行星也没有太大的重力来留住这种气体。

你可能会问,氢气比氦气更轻,更容易逃离地球的引力,为什么我们不会用尽氢气?这是因为氢的化学性质活泼,容易与其他元素形成化合物,可以通过化合物的形式大量保留在地球上。相比之下,氦的外层电子结构是满的,很难形成任何形式的化合物。

言论与数字

1、

如果我要分发文本文件,首选的格式是 RTF。因为它包含 TXT 格式所没有的元数据,还能设置斜体、粗体和特殊字符,可以使用 Word 轻松转换为其他格式,同时不能包含宏,所以不会有病毒,并且是一种开放格式。

-- 《一个制作盗版数字书籍的人》

2、

人的一生中,职业(包括通勤和思考工作的时间)将占去50,000至150,000个小时。目前,人类的寿命大约为750,000小时。当您减去童年(约175,000小时)和成年生活中睡眠、进食、锻炼和其他个人生活的时间(约325,000小时),那么剩下250,000个"有意义的成人小时" 。因此,职业将占用其中20%到60%之间的时间。

-- 《如何选择职业》

3、

目前预测,北极可能在2040年,出现第一个无冰的夏天。

-- 《科学家北冰洋的漂流实验》

4、

2018年,世界卫生组织的报告称,5-29岁人口的主要死因是交通事故,全世界估计每年有135万人死于车祸。其中,94%的情况是驾驶员有过错。

解决此问题的方法:不要让人类开车。

-- 《无人驾驶汽车兴起的原因》

5、

我发现,报纸的阅读体验极好。一切都是静态的,加载时间为零(基本上就是翻页的时间)。

与之形成鲜明对比的是,当今的新闻网站已经变得臃肿不堪,每页需要加载50种静态资源,即使是宽带,速度也非常缓慢。

-- 《难以忍受的新闻网站》

6、

如果你经营酒店,退房时间放宽30分钟。如果你经营餐馆,给客人提供免费的小点心。如果你经营面包店,柜台上放一些额外的饼干。

这些短期成本会创造顾客长期的忠诚度。

-- David Perell

回顾

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

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2020年2月28日
Viewing all 692 articles
Browse latest View live