# 每周分享第 8 期

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

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060801.jpg)

（题图：烟台山历史保护区，烟台，2017。我小时候的商店都是这种样子。）

最近，日本厚生劳动省[公布](http://news.sina.com.cn/o/2018-06-01/doc-ihcikcew3053427.shtml)了正式的统计数据。2017年，日本全国一共出生了94.6万个新生儿，这是有史以来最低的数字，比上一年足足少了3万人。日本人看到这个统计，都吓死了。日本的总人口是1.27亿左右，每年全国的新生儿只有90几万，这意味着什么？

这么说吧，日本现在缺少新生儿、将来就会缺少青年、缺少劳动力，再远的未来就会缺少活人，住宅和街道都会变成一片片渺无人烟的鬼屋。日本这个民族很可能从此一蹶不振了，不要说发展，忙于应付老龄化和缺少劳动力都会来不及。

媒体[采访](http://www.sohu.com/a/213752632_165453)日本年轻人，为什么不愿意生小孩？原因很简单，一个是穷，年轻人没有钱，自己消费都不够，哪来多余的钱养小孩；另一个是太麻烦，照顾小孩要牺牲很多个人自由，甚至人生规划。

日本人都很悲观，觉得这种趋势没法改变。我突然想到，也不是完全没有办法，既然人类不愿意生育，可以在实验室里生产人啊！人工授精、人工胚胎早就没有问题了，现在主要是代孕代育没法替代，还没有人造子宫这种技术。如果将来有人工环境替代子宫，让受精卵变成新生儿，那么人口下降就不存在了，想要多少人，实验室提供受精卵就可以了。我相信，这在技术上完全可以实现。

当然，这样会产生很多问题：这些小孩的父母是谁？谁负责养育他们？一个人没有祖先会怎样？......但是，如果国家缺少人口已经到了要亡国亡种的地步，那时还能有什么选择？何况，没有怀胎十月和分娩之苦，大多数女性一定会乐于支持这种方案。

## 新闻

1、[日本82岁老奶奶开发 App](https://www.aarp.org/work/working-at-50-plus/info-2018/worlds-oldest-app-developer-fd.html)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060802.jpg)

日本82岁的老奶奶 Masako Wakamiya 2017年初开始学习编程，现在已经开发了一款免费的 iOS 游戏 [Hinadan](https://itunes.apple.com/us/app/hinadan/id1199778491?mt=8)，专门面向老年日本人。该 App 在苹果商店获得获得近5颗星，全球下载量大约为53,000。

编程的门槛将来会越来越低。事实上，应用层面的编程（UI + 组件逻辑）是不难的，很容易学会。现在的潮流是教小孩编程，其实中老年人编程教育的市场更大。这也是一种娱乐，比打麻将好多了。当然，最大的问题是老年人没英语基础，这就没办法了。

2、[无人帆船 Saildrones](https://www.bloomberg.com/businessweek)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060803.jpg)

每年春天，成千上万的大白鲨开始神秘的迁徙，从美国西海岸直奔太平洋深处。生物学家一直希望了解，这些鲨鱼在那里干什么。今年总算有答案了，这要归功于一对名叫 Saildrones 无人帆船。

这种无人帆船实际上是可以航行的自动机器人，尽管人类可以远程控制，但是大部分时间是自动航行。2018年三月中旬，它们带着传感器，摄像机和科学仪器，从旧金山开始为期三周的1,200英里的鲨鱼观察之行。到了4月初，它们抵达预定地点，接收到了带有声波发射器的37只鲨鱼的信号。它们标识鲨鱼的位置，然后来回航行，使用声呐查看它们正在做什么。通过卫星，再将图像和其他数据转回给斯坦福大学的海洋生物学家芭芭拉·布洛克。

就像陆地上有无人汽车一样，将来海洋上也都会是无人驾驶的船只。

3、[3纳米的芯片](https://www.digitimes.com/news/a20180523PD210.html)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060804.jpg)

三星宣布可以生产3纳米的芯片了，但还没有具体的投产时间。现在最先进的骁龙845芯片是10纳米。这意味着，未来同样大小的芯片，能够容纳10倍以上的晶体管，那是不是说计算能力起码还能强10倍？

二三十年后，每个人随身携带的计算能力，恐怕相当于今天的一个机房。这意味着什么？

这里有一个[组图链接](http://www.semiinsights.com/s/bdt/15/25658.shtml)，帮助大家了解芯片的制程到底是什么？

4、[YeeLight 停止向欧洲用户提供服务](http://gdprhallofshame.com/7-sorry-your-light-bulbs-and-gdpr-dont-work/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060805.jpg)

小米旗下的智能灯具品牌 Yeelight 近日宣布，由于无法满足 GDPR 的要求，将不再向欧洲用户提供服务。作为该品牌的中国用户，我立刻得出结论，它的服务器上一定保存着我所有开灯/关灯的记录......

网友评论：然后他们在某次发布会上骄傲的展示，我们的智能家居大数据显示，北上广深中xx人睡的最晚，xx人最喜欢x色灯光......这就是大数据的力量！

5、[30年后，QBasic 依然是入门的儿童编程语言](http://www.nicolasbize.com/blog/30-years-later-qbasic-is-still-the-best/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060806.jpg)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060808.jpg)

作者想教7岁的孩子编程，尝试了各种语言之后，他发现30年前流行的 QBasic 依然是最好的选择。

> 我先教他第一行代码：PRINT "hello world"。
> 
> 然后，我又教了几个命令：CLS，COLOR，PLAY，INPUT和IF。没有什么可以解释的：没有复杂性，没有尴尬的操作符，没有抽象的概念，没有需要阅读的文档，没有对象/类/方法的概念，没有框架安装，没有特别的关键字或括号。这是代码最纯粹的形式。
> 
> 不到一个小时，我7岁的孩子不仅能写出他的第一个源文件，还能体验创建、编译和执行他自己的小程序带来的乐趣和快感。
> 
> 我意识到，30多年来，我们一直未能为我们的孩子提供更好的产品。我们创造了更强大和更复杂的语言/框架/ IDE，但我们从来没有比 QBasic 更简单或更直接地获得编程的快感。

这里还有一篇[《Basic 语言的历史介绍》](http://www.nicolasbize.com/blog/30-years-later-qbasic-is-still-the-best/)。

6、[Firefox 浏览器支持 Web Components](https://www.cnet.com/news/mozilla-firefox-joins-chrome-safari-making-it-easier-to-build-sophisticated-websites/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060809.jpg)

Firefox 浏览器最新的 [Nightly测试版本](https://twitter.com/FirefoxNightly/status/1001104178146611202) 已经支持 Web Components。这是 Chrome 浏览器5年前开始推广的一种新技术，现在除了 Edge 浏览器，其他主要浏览器都已经支持了。

Web Components 是浏览器原生的组件解决方案。如果你愿意对新技术下赌注，可以考虑它。

7、[Facebook 不向40岁以上的访问者推送招聘广告](https://projects.propublica.org/graphics/facebook-job-ads)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060810.jpg)

美国一个组织发现，Facebook 允许广告主指定受众的年龄范围，结果导致40岁以上的访问者看不到招聘广告，而美国法律明文禁止招聘的年龄歧视。就像上面的广告，只有25～36岁的人才能看到。

## 教程

1、[文章] [深度学习在线课程比较](https://hackernoon.com/deeplearning-101-coursera-vs-udemy-vs-udacity-b4eb3de06dbe)（英文）

深度学习是目前很热门的主题，各大网校都有这方面的课程。这篇文章比较了美国三大教育平台的深度学习课程：Coursera、Udemy 和 Udacity。

2、[文章] [前端人工智能？TensorFlow.js 学会游戏通关](https://zhuanlan.zhihu.com/p/35451395)（中文）

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060814.jpg)

作者使用 TensorFlow.js，让程序自动完成 Chrome 浏览器的内置小游戏"恐龙快跑"。

3、[课程] [哈佛大学游戏开发课程](https://cs50.github.io/games/)（英文）

哈佛大学游戏开发课程 CS50，提供讲课视频、课程笔记、PPT 和作业等资料。

4、[文章] [马尔可夫决策过程](https://xaviergeerinck.com/markov-property-chain-reward-decision)（英文）

如何利用马尔可夫链建立一个决策模型，文章较好懂。

5、[PDF] [Awk 编程语言](https://ia802309.us.archive.org/25/items/pdfy-MgN0H1joIoDVoIC7/The_AWK_Programming_Language.pdf)（英文）

awk 是 Unix 命令行处理文本的有用工具，这里是1988年出版的 awk 教程。Unix 命令行高度稳定，所以这本教材也没那么过时。

6、[仓库] [JavaScript 算法与数据结构](https://github.com/trekhleb/javascript-algorithms/blob/master/README.zh-CN.md)（中文）

这个仓库收集了30多种算法的 JavaScript 实现。

7、[教程] [高性能矩阵乘法](https://gist.github.com/nadavrot/5b35d44e8ba3dd718e595e40184d03f0)（英文）

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060815.jpg)

矩阵乘法需要计算每一行与所有列的乘积之和，如果矩阵很大，乘法计算是非常耗时的。这篇文章讨论如何实现一个高性能的矩阵乘法算法。

8、[电子书] [Python - 100天从新手到大师](https://github.com/jackfrued/Python-100-Days)（中文）

一本针对初学者的 Python 教程。

## 资源

1、[GitHub 替代品](https://tutswiki.com/github-alternatives/)

微软收购了 GitHub，导致一部分开发者怀疑这个平台的独立性，从而迁移到其他平台。这里列出了十几个 GitHub 的替代品，以及各自的优缺点。

## 工具

1、[CalVer](http://calver.org/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060816.jpg)

语义版本（SemVer）现在很流行，就是根据 API 的变动为版本编号。这个网址提出另一种编号方法：根据日历编号，版本号就是发布日期。很多软件已经在用了，最有名的就是 Ubuntu，它的版本格式是 yy.mm，比如 16.04。

2、[Jadesktop](https://github.com/codesardine/Jadesktop)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060817.jpg)

一个使用 HTML5、CSS、JavaScript 和 Python 开发 Linux 桌面应用的工具。对的，你不需要 Electron。

3、[Asteroid OS](https://asteroidos.org/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060818.jpg)

开源的手表操作系统。

4、[AutoCAD 在线版](https://web.autocad.com/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060819.jpg)

三月份的消息，今天才看到。AutoCAD 浏览器版上线了，跟桌面版基本一致，背后的技术是 Webassembly。

5、[Winds 2.0](https://getstream.io/winds/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060820.jpg)

一个开源的桌面 RSS 阅读器。

6、[self-driving-toy-car](https://github.com/experiencor/self-driving-toy-car)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060821.jpg)

一个开源的自动驾驶玩具车，在小车上面绑了一个树莓派和摄像头。

7、[Chromely](https://github.com/mattkol/Chromely)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060822.jpg)

Electron 的挑战者越来越多，这个是 .NET 框架包装的 Chrome 浏览器内核。你现在可以使用 .NET 开发类似 Electron 的桌面应用。

8、[Cool Backgrounds](https://coolbackgrounds.io/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060823.jpg)

自动生成背景图片的工具网站，现在提供五种风格，每种都可以定制，看上去赏心悦目。

## 文摘

1、[有史以来最复杂的软件](https://www.quora.com/What-is-the-most-sophisticated-piece-of-software-code-ever-written)（英文）

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060824.jpg)

作者认为，Stuxnet 蠕虫病毒可能是有史以来最复杂的软件。

> 我们不知道 Stuxnet 的作者是谁，只知道大概是在2005年至2010年间编写的。
> 
> 这种病毒藏在 U 盘上。当 U 盘插入 PC，它会自动运行，将自已复制到该 PC。它至少有三种自动运行的方法。如果某种方法行不通，就尝试另一种。其中的两种运行方法是全新的，使用了 Windows 的两个无人知晓的秘密 Bug。
> 
> 一旦蠕虫进入 PC ，它会尝试获得该 PC 的管理员权限，使用的也是前面提到的那两个无人知道的秘密 Bug。然后，它把自己留下的痕迹全部清除，不让防病毒软件检测到它的存在，用户不会看到任何东西。这种蠕虫隐藏得很好，出现后一年多，没有任何一家安全公司发现它的存在。
> 
> 它会秘密访问 [http://www.mypremierfutbol.com](http://www.mypremierfutbol.com/) 或 [http://www.todaysfutbol.com](http://www.todaysfutbol.com/) 这两个网站，告诉服务器已经成功侵入了一台新的 PC，然后从网站下载最新版本自行更新。
> 
> 它会将自身复制到任何插入该 PC 的 U 盘。使用的 U 盘驱动程序由 Realtek 公司进行了数字签名，但是 Realtek 公司并不知道有这个签名。这意味着，蠕虫作者能够获取 Realtek 公司的最高密钥。
> 
> 它利用两个 Windows 的 Bug ----一个涉及网络打印机，另一个涉及网络文件----将自己传播到局域网里面的其他计算机上。
> 
> 直到这一步，它的真正任务还没有开始。
> 
> 它在每一台计算机上寻找一种由西门子设计的用于大型工业机械自动化的控制软件。一旦发现这种软件，它会使用另*一个*以前未知的 Bug，将自身复制到工业控制器的驱动程序。然后，它会检查两家特定公司的工业电机，其中一家公司在伊朗，另一家在芬兰。它要搜索的特定电机称为变频驱动器，主要用于运行工业离心机，提纯多种化学品，比如铀。
> 
> 由于蠕虫完全控制了离心机，因此它可以做任何事情，可以将离心机全部关闭，也可以将它们全部摧毁：只需设定以最大速度旋转离心机，直到它们全都像炸弹一样爆炸，杀死任何恰好站在附近的人。
> 
> 但它没有这么做，一旦它控制了每台离心机......它就进入潜伏。一旦达到设定的时间，它就会悄悄地唤醒自己，锁住离心机，使得人类无法关闭这些机器。然后悄悄地，蠕虫开始旋转这些离心机，修改了安全参数，增加了一些气体压力......
> 
> 此外，它还会在离心机正常运转的时候，偷录一段21秒的数据记录。当它控制离心机运行的时候，会一遍又一遍地播放这段数据记录。管理人员会看到，计算机屏幕上的所有离心机运行数据都很正常，但这其实是蠕虫让他们看的。
> 
> 现在让我们想象一下，有一家工厂正在用离心机净化铀。电脑上的所有数字都表明离心机运行正常。但是，离心机正在悄悄地出问题，一个接一个地倒下，这使得铀产量一直下降。铀必须是纯净的。你的铀不够纯净，无法做任何有用的事情。
> 
> 工厂的管理者根本找不到原因，离心机的数据是正常的。你永远不会知道，所有这些问题都是由一种计算机蠕虫引起的。这是一种历史上最狡猾和最聪明的计算机蠕虫，它由一些拥有无限资金和无限资源的令人难以置信的秘密团队编写，并且设计时只考虑一个目的：偷偷摧毁某个国家的核弹计划，并且不被发现。

2、[设计系统将取代设计师](https://www.designsystems.com/stories/will-design-systems-replace-designers/)

Facebook 和 Airbnb 设计系统的创造者[@soopa](https://twitter.com/soopa) 认为，随着设计系统越来越成熟，未来对于设计师的需求将会减少。

> 我加入 Facebook 时，有18位设计师。一年之后，设计师超过40人，但产品工程部门已经超过1000人，产品管理接近200人。公司正受到设计部门增长缓慢的影响。我们着手解决这个问题的方法是，就是制定设计系统。
> 
> 设计系统将取代今天我们所知的许多设计工作。UI 开发、流程和工具就像可互换的零件和工厂装配线，可以减少人员创建与以前相同的产品。今天的许多设计师必须将预先设计的组件组装在一起 - 这项任务将越来越自动化。
> 
> 设计系统可以实现更快速的产品开发，从而使公司能够开发更多产品。设计系统使得每个产品需要更少的设计师。

## 每周图片

1、[《迈登斯的中国摄影集》](https://shuge.org/ebook/carl-mydans-world-war-ii/)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060825.jpg)

1941年，<span data-type="color" style="color:rgb(68, 68, 68)">美国《生活》（LIFE）杂志摄影师迈登斯（ Carl Mydans）来到中国，拍摄中国人民的抗战。现在，他拍摄的3332张照片已经可以在互联网免费下载。</span>

2、[监视器上的燕子](https://www.mobile01.com/topicdetail.php?f=629&t=5445008&p=8#68506804)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060826.jpg)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060828.jpg)

网友拍到有一窝燕子在监视器上著巢，燕妈妈飞来喂食。

3、[芬兰的图书馆](https://www.theguardian.com/cities/2018/may/15/why-finlands-cities-are-havens-for-library-lovers-oodi-helsinki)

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060829.jpg)

芬兰是一个热爱读书、有很多图书馆的国家。上面照片里面如此具有现代感的图书馆，建成于1927年，照片拍摄于1935年。

## 本周金句

1、

到了2050年，海洋里面的塑料垃圾的数量将超过鱼。（[BBC](https://www.theguardian.com/environment/2018/jun/05/the-planet-is-on-edge-of-a-global-plastic-calamity)）

![](https://cdn.beekka.com/blogimg/asset/201806/bg2018060830.jpg)

2、

如果你在很年轻的时候，就遭受到了失败，一定要把它当作老天送你的礼物。如果等到四十岁再失败，你会经受不起的。为什么年纪越大，走路越小心，因为越来越经不起跌倒了。（网友）

## 欢迎订阅

这个专栏每周五发布，同步更新在我的[个人网站](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/)。

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

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

（完）

