# 每周分享第 43 期

这里记录过去一周，我看到的值得分享的东西，每周五发布。

欢迎投稿，或推荐你自己的项目，请前往 GitHub 的 [ruanyf/weekly](https://github.com/ruanyf/weekly) 提交 issue。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021501.jpg)

上图是一架小飞机停在草地，一个人从上面跳下来。

这张图取自一篇2018年12月发表的[正式论文](https://www.bmj.com/content/363/bmj.k5094)，作者单位是哈佛大学医学院，论文题目叫做**《从飞机跳下时，降落伞防止伤亡的作用研究》**。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021502.jpg)

研究小组让一组人带着降落伞，另一组人不带（就像上图），都从停在草坪上的小飞机跳下来。可想而知，所有人都平安无事，因此论文经过模型分析，一本正经地得出结论：降落伞没有明显作用。

这篇论文不是恶搞。它想用一个讽刺的实证研究来证明，医学界传统的双盲测试有重大弊端。医生当中流传着一句[名言](https://blogs.bmj.com/bmj/2018/12/13/we-jumped-from-planes-without-parachutes-and-lived-to-tell-the-tale/)：**没有降落伞，谁愿意从飞机跳出来？** 意思是只有那些有降落伞的病人（即知道自己死不了的人），才会参加双盲测试。

这是因为，如果不考虑那些无药可救的绝症，一般来说，风险比较小的病人，更可能参加双盲测试，因为就算被抽到对照组，天天吃安慰剂，也不怕被耽误。但是，如果测试对象都是风险小的病人，试验结果很可能就是新药无效，因为病人本来就会康复。

这篇论文就是用实验证明：如果你想让没有降落伞的人，参加双盲测试，他们只会愿意从停着的小飞机上跳下来，因此你会得到降落伞（新发明）没用的结论。这是我看过的最好玩的论文之一，推荐大家看看，它完全采用最严谨的学术语言和论证过程，写得一丝不苟，最后得出了一个荒谬的结论。

## 新闻

1、[亚马逊的自动送货车](https://yellrobot.com/amazon-delivery-robot-scout-autonomous-snohomish/)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021503.jpg)

美国电商亚马逊在华盛顿州（该公司总部所在地），开始试验自动送货车。该车是电动的，跟小冰箱差不多大，能沿着人行道快速前进。它配备了传感器和 GPS，可以自动规划行进路线，避免跟行人、宠物或其他障碍发生碰撞。

测试期间，每辆车送货的时候，会有一个员工跟在后面，处理各种可能的问题。如果测试顺利，亚马逊将扩大试验范围，并考虑将其投入实用。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021504.jpg)


![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021505.jpg)

2、[飞行汽车](https://www.bloomberg.com/news/articles/2019-01-23/boeing-s-flying-car-takes-off-to-show-a-glimpse-of-the-future)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021506.jpg)

1月22日，波音公司在弗吉尼亚州第一次试飞了它开发的飞行汽车。这其实不能算汽车，因为它不能在地面上行驶，只能在大楼之间飞行，从一幢楼顶飞到另一幢楼顶。

该产品是电动飞机，一次可以飞行80公里，比直升飞机成本更低，可控性更高。它是优步公司的定制车型，如果顺利的话，优步将采用它，在2023年推出空中出租车服务。此外，[空中客车公司设计的空中汽车](https://www.bloomberg.com/news/articles/2019-01-23/airbus-s-flying-taxi-is-poised-for-takeoff-within-weeks)（见下图）也将在几周内试飞，目标也是2023年供优步公司使用。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021507.jpg)

3、[逃跑不要使用共享滑板车](https://www.kxan.com/news/local/austin/apd-identifies-bank-robbery-suspect-who-used-e-scooter-for-getaway/1726367092)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021508.jpg)

2018年12月18日，19岁的 Luca Mangiarano 走进美国德州首府奥斯汀的一家银行，递给银行柜员一张纸条，上面写着：“这是一起抢劫案。请把柜台所有的钱给我。”柜员不知道他会做出什么举动，就顺从地把钱给了他，共计18000美元。

然后，Mangiarano 就在银行门口，骑上一辆共享滑板车逃跑了。这对警方来说，就很简单了。警察找到提供滑板车服务的优步公司，调出哪个帐号在这个时间地点，使用了滑板车，然后顺利逮捕了 Mangiarano。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021509.jpg)

4、[无车城市](https://www.fastcompany.com/90294948/what-happened-when-oslo-decided-to-make-its-downtown-basically-car-free)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021510.jpg)

挪威首都奥斯陆市政府决定，拆除市区700多个停车位，用自行车道、小公园和长椅取代，为最终实现市中心无车做准备。政府的规划是，第一步取消停车位，第二步在一些街道禁止自驾车，第三步则是整个市中心无车，交通需求完全依靠公共交通或自行车。

5、[泊车机器人](https://www.standard.co.uk/tech/gatwick-airport-trial-for-valetparking-robots-will-cut-hassle-for-travellers-a4046406.html)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021511.jpg)

英国盖特威克机场推出了代客泊车机器人，车主在下车区下车以后，使用手机 App 召唤泊车机器人，该机器人会自动把车拉到停车位。这样不仅可以节省时间，还可以将车紧凑地停满整个空间。

这个机器人实际上是一个自动的小型叉车，使用 GPS 定位，整个泊车过程之中都不需要使用车钥匙。该系统去年已经在巴黎戴高乐机场进行了5个月试用。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021512.jpg)

6、[维基百科的编辑](https://www.cbsnews.com/news/meet-the-man-behind-a-third-of-whats-on-wikipedia/)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021513.jpg)

Steven Pruitt 是维基百科最忙碌的编辑，他在13年的时候里面，一共完成了近300万次编辑，并撰写了35,000篇原创条目。维基百科英文版现在有570万条目，其中三分之一都被他编辑过。《时代》杂志将他评为互联网上最有影响力的25个人之一。他的维基用户名是 Ser Amantio Di Nicolao。

他没有从这些工作里面赚到一分钱， 他说：“知识自由的想法让我着迷。我的母亲在苏联长大......所以我非常清楚，知识自由意味着什么。”

7、[月球岩石](https://phys.org/news/2019-01-moon-recovered-astronauts-earth.html)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021514.jpg)

1971年阿波罗14号登月期间，采集了一块月球岩石送回了地球。现在，这块岩石里面发现了一些微量矿物质，跟地球的岩石成份很像。这意味着，这块石头原本来自地球。

这块岩石大约形成于40亿年前，里面含有锆石的成分，与地球上发现的锆石非常相似。由于锆石需要在水和氧化条件下形成，因此这块石头很大可能来自地球。这有可能是40亿年前，一颗小行星撞击地球，将这块石头带到了月球，也有可能整个月球是因为撞击，而从地球分裂出来的。

8、[老赖地图](https://www.dw.com/zh/%E8%80%81%E8%B5%96%E6%97%A0%E9%9A%90%E7%A7%81%E5%90%8D%E8%AA%89%E6%9D%83%E7%BD%91%E6%B0%91%E7%BA%B7%E7%BA%B7%E8%B0%88/a-47262459)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021515.jpg)

《河北日报》1月28日报道，河北省法院自主研发微信小程序"老赖地图"，可扫描出方圆500米以内的"老赖"（长期拒绝偿还债务的人员）数量，并可点击显示"老赖"的身份证和家庭住址。

河北省法院的一名工作人员称，可将失信人信息页面分享到朋友圈，这是使用互联网技术对"老赖"进行"精准曝光"，利用社会压力和熟人圈子对"老赖"进行"精准围剿"。

9、[极端气候](http://world.huanqiu.com/article/2019-01/14206830.html)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021516.jpg)

[澳大利亚](https://www.theguardian.com/australia-news/2019/feb/01/january-named-as-australias-hottest-month-on-record)今年一月份的平均气温，创了历史新高，很多地方都超过摄氏40度，最高摄氏49.5度。与此同时，[美国](http://world.huanqiu.com/article/2019-01/14206830.html)遭遇北极寒流，超过或接近历史最低温，有些地方达到零下60度，比南极还冷。地球的气候正变得越来越极端化。

上图为芝加哥旁边的密西根湖已经完全结冰。

10、__一句话新闻__

* [统计](https://singaporedatacompany.com/blog/how-many-domain-names-are-unused)发现，目前共有1.37亿个 .com 域名，其中大约1/3（4300万个域名）正在使用。
    
* [美国最大 DNA 测试网站](https://www.buzzfeednews.com/article/salvadorhernandez/family-tree-dna-fbi-investigative-genealogy-privacy)将自己的数据库共享给联邦调查局 FBI，这将大大扩展警方 DNA 搜索的范围。以后，只要能够拿到嫌疑人的 DNA，可能就会快速确定嫌疑人是谁，或者他是谁的亲戚。
    
* [谷歌](https://ai.googleblog.com/2019/02/real-time-continuous-transcription-with.html)宣布，安卓内置 Live Transcribe 功能，运用 Youtube 的自动字幕技术，实时将语音转换成字幕，帮助聋哑人交流。
    
* [Instagram](https://www.instagram.com/p/BsOGulcndj-/?utm_source=ig_embed) 最受欢迎的照片是一只鸡蛋，1月5日上传，截至2月4日，已经收到了5200万个赞。
    
![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021517.jpg)

## 教程

1、[Java 语言如何实现线程间通信](https://www.tutorialdocs.com/article/java-inter-thread-communication.html)（英文）

一篇简单的教程，Java 语言如何实现多线程编程。

2、[谷歌搜索的运算符](https://ahrefs.com/blog/google-advanced-search-operators/)（英文）

本文详细介绍谷歌搜索的运算符，用来定制搜索结果。

3、[函数式编程的好处](http://www.gamasutra.com/view/news/169296/Indepth_Functional_programming_in_C.php)（英文）

著名程序员 John Carmack 谈了函数式编程对 C++ 语言的好处。不涉及代码，只是概念上的讲解。

4、[取消 C++ 的预处理器](https://hackernoon.com/undefining-the-c-pre-processor-c4eeb3d06e1f)（英文）

本文作者建议，不要使用预处理器定义宏（Macro），甚至不要使用（自定义的）宏。

5、[Fossil 与 Git 的对比](https://fossil-scm.org/fossil/doc/trunk/www/fossil-v-git.wiki)（英文）

Fossil 是专为 SQLite 开发的版本管理系统，与 Git 采用不一样的模型，总体上来说，比 Git 更简单。

6、[超越 DRY](https://coderefinery.wordpress.com/2019/01/28/beyond-dry-why-redundancy-makes-your-code-more-robust-and-less-fragile/)（英文）

DRY 原则指的是“不要重复自己”，意思是如果代码有重复，就应该把它提炼出来。本文提出，这条原则不应过分严格地使用，有时候代码冗余对软件是有利的。

7、[Deno 运行时介绍](https://43081j.com/2019/01/first-look-at-deno)（英文）

Deno 是一个 JS/TypeScript  运行时，用来取代 Node。它的最大特点就是不支持 CommonJS，只支持 ES6 模块。

8、[MIT 许可证逐句解释](https://writing.kemitchell.com/2016/09/21/MIT-License-Line-by-Line.html)（英文）

MIT 是常见的开源许可证，但是很多人并没有看过它的条文。本文逐句解释该许可证的每一句话。

9、[未来的 JavaScript 语言](http://2ality.com/2019/01/future-js.html)（英文）

本文介绍 TC39 委员会正在考虑的、加入 JavaScript 语言的一些新功能。

10、[30年的梦想失败是什么感觉？](https://thehustle.co/bionic-boot/)（英文）

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021518.jpg)

一个发明家受鸵鸟奔跑姿势的启发，发明了一种弹簧鞋。他为这个梦想投入了30年，依然没有成功。现在专利即将到期，30年可能就是白忙一场。

## 资源

1、[SimpleKernel](https://github.com/MRNIU/SimpleKernel)

一个操作系统内核的简单实现，提供了各个阶段完成度不同的内核，可以用来练手和学习。（@[MRNIU](https://github.com/ruanyf/weekly/issues/204) 投稿）

2、[FlatIcon](https://www.flaticon.com)

一个图标搜索引擎。（@[LanjianNUll](https://github.com/ruanyf/weekly/issues/202) 投稿）

3、[TravelAdapter.xyz](https://TravelAdapter.xyz)

该网站收集各国的电压、插头和插座资料。

4、[如果保留后台进程](https://dontkillmyapp.com/)

手机为了节省电力，会主动杀死后台进程，有时这种行为不是用户希望的。该网站收集各品牌安卓手机的做法，如何关闭主动杀死后台进程这个功能。

5、[《组合程序》（Composing Programs）](https://composingprograms.com/)

加州大学伯克莱分校以 SICP 为范本，使用 Python 3 语言解释编程原理的教程。  

6、[SQLi Hall of of Shame](https://codecurmudgeon.com/wp/sql-injection-hall-of-shame/)

该网站收集 SQL 注入的各种真实案例。

7、[数据可视化基础](https://serialmentor.com/dataviz/)

O'Reilly 新书《数据可视化基础》一书的在线预览版。

8、[Apache Guacamole](https://guacamole.apache.org/)

浏览器里面的远程桌面连接器，可以在网页上登录远程桌面，支持 VNC、RDP、SSH。（@[barrer](https://github.com/ruanyf/weekly/issues/240) 投稿）

9、[周刊资源整理](https://wanmaoor.github.io/ryfWeekly/)

读者对这个周刊提到的内容进行了分类整理。（@[wanmaoor](https://github.com/ruanyf/weekly/issues/269) 投稿）

## 工具

1、[trilium](https://github.com/zadam/trilium)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021519.jpg)

一个开源的笔记软件，可以安装桌面版，也可以自己架设服务器，使用它提供 Web 界面。

2、[Tox](https://tox.chat/)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021520.jpg)

Tox 是一个开源的实时通信协议，不需要中央服务器，提供多种跨平台的客户端。

3、[CopyTranslator](https://github.com/elliottzheng/CopyTranslator/blob/master/README_zh.md)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021521.jpg)

PDF 文件即时翻译工具。只要选中 PDF 文件里面的文字，就自动调用谷歌翻译的 API，将其翻译成中文，粘贴出来就是中文。（@[chempeng](https://github.com/ruanyf/weekly/issues/212) 投稿）

4、[MyPerf4J](https://github.com/LinShunKang/MyPerf4J)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021522.jpg)

Java 应用的性能监控工具。（@[LinShunKang](https://github.com/ruanyf/weekly/issues/207) 投稿）

5、[Asciidoctor](https://asciidoctor.org/)

AsciiDoc 的渲染引擎，还提供 AsciiDoc 格式的教程。

6、[python-uncompyle6](https://github.com/rocky/python-uncompyle6)

Python 反编译工具，可以将 Python 字节码 pyc 文件反编译回源码 py 文件。

7、[frp](https://github.com/fatedier/frp)

一个反向代理服务器，可以让公网访问架设在内网的服务。（@[Seven-Steven](https://github.com/ruanyf/weekly/issues/201) 投稿）

8、[wee-slack](https://github.com/wee-slack/wee-slack)

一个 Slack 的命令行客户端。

9、[Nginx Office Hours](https://gitlab.com/rbdr/ngx_http_office_hours_filter_module)

一个 Nginx 模块，使得网站只能在工作时间访问，一到下午五点，网站就自动下线。

10、[Puffer](https://puffer.stanford.edu/)

斯坦福大学的一个视频算法实验项目，可以免费观看美国的电视直播，画质1080P。

11、[Image Inpainting](https://www.nvidia.com/research/inpainting/)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021523.jpg)

nvidia 官方的在线图像修复，自动生成图像缺失的部分。

## 文摘

1、[无人机击落客机只是时间问题](https://www.technologyreview.com/s/612656/its-only-a-matter-of-time-before-a-drone-takes-down-a-passenger-plane/)

2018年12月，英国第二大机场盖特威克机场，发现有一架无人机飞过机场，不得不关闭一天，几十万旅客受到影响。目前还不知道这架无人机是谁操作，为什么要飞入机场。

这个事件表明，无人机对商业航空已经构成威胁。更严重的是，“反无人机”技术起不了多大作用。无人机已经变得太便宜，太强大，客机将不可避免地受到影响。无论是开枪、无线电干扰、或者其他措施，都无法可靠地保护客机。这可能听起来危言耸听，但我们对无人机真的缺乏办法。

现在，消费者可以买到的最便宜无人机，只需要25美元。这些产品接受遥控器的无线信号，相对容易防范，只要干扰它们的无线电信号，就可以了。稍微昂贵的无人机有 GPS 芯片，这种无人机可以编程设置一个“地理围栏”，防止它们飞入指定的地理坐标范围内。

但是，上面的这些措施，只能防住普通消费者从正规渠道买到的无人机。对于具有中等技术水平的人来说，制造一架无人机很容易，自制无人机也不需要 GPS 芯片。它们也不一定需要与操作员通信，才能保持飞行，这使得无线电干扰无效。而且，强度太大的干扰信号，反而可能会影响到本来要保护的客机。

可以肯定的是，一架无人机攻击一架客机，成功机会不大。这是因为在起飞和着陆时（最容易遭遇无人机的阶段），客机的移动速度非常快，通常在每小时150到200英里之间，很少有无人机能够以50~70英里/小时的速度飞行，所以客机应该可以避开无人机。此外，飞机的设计可以承受鸟撞，如果一架无人机意外撞到客机，客机可能只会受到轻微损坏，很可能还是能够安全降落。

但是，如果无人机成群飞行，事情就会发生变化。虽然单个无人机很难攻击飞机，但是在客机的飞行路径上放置30架无人机，就可能会发生变化。考虑到无人机的价格，多架无人机群体攻击是很容易的。如果通过编程，找出客机的引擎（通过红外传感或通过图像），然后无人机携带少量爆炸物，撞击可能会致命。

总之，对于那些蓄意攻击客机的半自动或全自动无人机集群，根本就没有好的技术对策。

2、[Loon 项目](https://spectrum.ieee.org/telecom/wireless/loons-balloons-will-fly-over-kenya-in-first-commercial-telecom-tryout)

Loon 是谷歌的母公司 Alphabet 发起的一个实验项目。它为那些没有 4G 网络的地区发射气球，信号基站就设置在气球上，因此人们就可以使用 4G 服务了。比起地面基站，气球基站的覆盖范围更大，而且没有障碍物阻挡信号。

气球会飞到距离地面18公里～25公里的平流层，那里没有上下气流，所以气球会停留在同一个高度上。但是，横向的风是很大的问题。为了防止气球被吹走，Loon 带有风向观察功能，一旦发现有风吹来，它会自动上升或下降，避开风，尽量停留在同一个地点。

每个 Loon 气球实际上包含了两个气球。外层是一个充满氦气的气球，为整个产品提供所需的升力；内层是一个充满空气的内部气球，可以抽空或进气。当内层气球膨胀时，外层气球的氦被挤压到密度更高，从而降低升力，开始下降，反之开始上升。通过这种方式，Loon 的工程师可以控制气球的高度，也可以利用不同高度的风，使气球向需要的方向前进。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021524.jpg)

利用这种导航方式，气球已经可以长距离发射。工程师在新西兰发射气球，然后操纵它飘到阿根廷和澳大利亚的目标地区。该项目计划2019年在肯尼亚提供 4G 通信服务，气球就将在波多黎各发射，然后飘过大西洋，到达肯尼亚。

气球通过自带的太阳能板获取电力，每只气球可以使用几百天。2017年，波多黎各飓风时期，地面通信都被摧毁了，Loon 气球成功地为灾区提供了手机信号。

## 本周图片

1、[公共汽车的候车亭](https://www.citylab.com/design/2014/05/a-tiny-austrian-town-has-coolest-bus-shelters-weve-ever-seen/371078/)

奥地利一个没有名气的小镇，希望发展旅游业。他们邀请世界最著名的设计师，为他们设计公共汽车的候车亭，报酬是可以来小镇免费度假。现在，这样的候车亭已经有了近10座。

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021525.jpg)


![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021526.jpg)

2、[声波反射器](https://www.bbc.com/news/in-pictures-46348917)

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021527.jpg)

第一次世界大战是第一场有飞机参与的战争。当时还没有雷达，为了提早发现敌机的飞行路线，英国在海岸边的悬崖上架设了很多声音反射器，将飞机发动机的音波反射到地面上，以便提早发现。

3、__曼哈顿的航拍照片__

![](https://cdn.beekka.com/blogimg/asset/201902/bg2019021528.jpg)

## 本周金句

1、

不要刻意去记住某件事，而要去寻找使其显而易见的解释。

-- [理查德·费曼](https://medium.com/taking-note/learning-from-the-feynman-technique-5373014ad230)

2、

“X公司使用的是什么语言”，这种话毫无意义，编程语言与公司的成功关系不大。某个公司使用哪种语言，主要是早期创始人的偏好。

-- [《论编程语言的选择》](https://medium.com/@nemshilov/on-choosing-programming-languages-8281c6f370b2)

3、

学习函数式编程对我产生的影响是，让我更加关注哪些概念自然地被视为“对象”，哪些概念是不可变的“值”。

我还会更加注意，我的代码是否包含副作用，从而更谨慎地隔离这些地方，使代码更多是“纯的”，这大大提高了我的面向对象代码的可测试性。

-- [《函数式编程对面向对象的程序员有什么用？》](https://softwareengineering.stackexchange.com/questions/45231/does-learning-a-functional-language-make-a-better-oop-programmer/45236#45236)

4、

招聘高级工程师时，不是公司选择候选人，而是候选人选择公司。

-- [《招聘人才不是买，而是卖》](https://hiringengineersbook.com/post/trouble-hiring/)

## 欢迎订阅

这个专栏每周五发布，同步更新在我的[个人网站](http://www.ruanyifeng.com/blog)、[微信公众号](http://weixin.sogou.com/weixin?query=%E9%98%AE%E4%B8%80%E5%B3%B0%E7%9A%84%E7%BD%91%E7%BB%9C%E6%97%A5%E5%BF%97)和[语雀](https://yuque.com/ruanyf/share/)。

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

![](http://www.ruanyifeng.com/blogimg/asset/2018/bg2018042311.jpg)

（完）

