科技爱好者周刊(第 168 期):游戏《底特律:变人》

本杂志开源(GitHub: ),欢迎提交 issue,投稿或推荐科技内容。

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

封面图

东京奥运村的运动员宿舍,两人一间。看上去有点简陋,没有为每个人配一张桌子,只有床头柜,上面也没有吉祥物或者绿植。(via

本周话题:游戏《底特律:变人》

本周谈谈游戏。去年双十一,我抱着巨大的期望,买了热门游戏《死亡搁浅》(Death Streading)。付款时,看见很多老游戏都是二折,随手又挑了一部《底特律:变人》(Detroit: Become Human)。

如今,我必须说《死亡搁浅》真是太糟糕了,令人大失所望,情节、人物、游戏玩法一无是处,根本玩不下去。我断断续续坚持了几个月,现在已经放弃了。倒是《底特律:变人》出乎意料的精彩,我给它满分,真的是一部杰作。

《底特律:变人》是2018年的游戏,可能很多朋友都已经玩过了。如果你还没有,我强烈推荐。下面是它的预告片,大家可以感受一下它精良的制作,以及荡气回肠的情节。

它的故事非常老套。2038年的底特律,机器人突然有了意识,希望得到人类的平等对待。玩家轮流扮演三个不同的机器人,经历他们的遭遇。这个游戏精彩的地方是电影大片级别的制作水准,每个场景都非常漂亮,每个片段都经过精心设计,明显有分镜头剧本,每个镜头拍什么,都是安排好的,剪辑得非常明快,扣人心弦。

出人意料的是,所有主要人物都不是计算机生成的。而是由真实演员扮演。下图是游戏的女主角和她的真人演员。

游戏画面其实是真人表演,进行动作和表情捕捉,再添加背景,最终生成的。

它是一个情节类的游戏,动作和解密的成分非常少。故事的每一个节点,都会给出几个选项,让玩家选择下一步,比如下图是选择要去哪个地点,不同的选择会导致不同的结局。

与其说这是一个游戏,不如说是一部可以玩的电影,长达10个小时。玩家探索这个未知的世界,认识里面的人物,决定故事的走向,体验预设的情节。

更棒的是,这个游戏不仅有情节,还很抒情,有时候,不经意之间我就被打动了。举例来说,走过广场的时候,你会看到一个吉他歌手在路边唱歌。那只是一个环境人物,你完全可以忽略他,径直走过。但是,如果你停下脚步,站在一旁把这首歌听完,就会发现这是一首非常好听的歌。

我特意去查了歌的名字,叫做《城市的雨》,是游戏开发公司向一个加拿大歌手购买的,下面就是游戏里面的唱歌视频,以及歌词。

I wake up in my house, Alone in my bed. Six am is screaming.
清晨六点,我独自醒来。
Back to this again. I do it with my eyes closed,
闭着眼睛,又回到那时。
Wear marks in the cement.
仿佛戴着水泥的面罩,
How the hell am I supposed, To wash you from my head.
我该怎么做,才能不再想你。

Motown Rain, Fall on me again, Around my feet.
城市的雨又落下,就在我的脚边。
Stuck on your doorstep, Hallway light, Trace your silhouette.
徘徊在你的门口,屋里的灯光,寻找你的身影。
Motown Rain, Fall on me again.
城市的雨又落下。

大多数游戏追求胜利的快感,但是《底特律:变人》的游戏目的,是让你去体验他人的命运,思考自己的立场。推动你玩下去的动力是你的好奇心,想要体验更多,想要知道后面的情节、人物的结局。我通关已经一个多月了,但有时还是会想到这个故事,沉浸其中。

这个游戏是一个最好的例子,说明了 电子游戏这种东西,不仅仅是娱乐和生意,而是一个很宽泛的载体,只要你想,就有办法让它承载各种不同的东西。 完全可以让它像小说一样,用来表达作者的爱憎和抒情,或者像哲学家一样,引发人们对社会和命运的思索。

这种另类的、不以竞技和对抗为目的的游戏,真的很少。如果你知道这样的游戏,欢迎留言。

Webpack vs Vite 剖析

Webpack 是老牌的前端构建工具,目前依然是正式项目的标配,属于前端程序员必须掌握的技能。但是,由于复杂的配置文件和缓慢的构建速度,它一直被人诟病。

Vite 是新一代的构建工具,由 Vue 官方团队推出,这一年快速蹿升,许多项目都开始尝试。它强调快速的构建速度和易用性,正好都是 Webpack 的痛点。

本周的课程资料就是 《Webpack vs Vite 深度剖析》,从原理的角度比较这两种工具。帮助初学者掌握下面几个关键概念,从而理解构建工具到底是什么,上面两种工具的区别从何而来。

  • 抽象语法树 AST
  • Babel 的作用
  • 什么是模块的依赖关系
  • ES Module 与 CMD 两种模块格式的区别
  • 不同模块如何打包在一起

明白了上面这些概念以后,主讲老师会指导大家,自己实现一个迷你版的 Webpack,体验一下构建工具的底层实现。在这个基础上,比较 Webpack 和 Vite 两者的异同。

微信扫描下方的二维码,了解详细信息。报名后,添加助教老师的微信,就可以领取这份资料。

这份资料由国内著名的培训机构“开课吧”提供。另外,他们现在每周都有直播公开课,属于体验课程,可以随意选听。下面是本月的课程安排,详细内容咨询助教老师。

科技动态

1、

去年11月,长沙市望城区正式启用“电子告知单”,对于违法占用消防车道的车辆,会贴上脸盆大小的“电子告知单”。

这个设备的吸力可达到300公斤以上,会牢牢吸附在车辆表面,自己根本拿不下来。只有当车主将车辆驶离现场,并接受相应处罚后,才可以取下来。

2、时速600公里的磁浮列车

7月20日,四方机车公司在青岛发布世界首辆时速600公里的磁悬浮列车。一旦投入应用,这将是当前世界速度最快的地面交通工具,北京到上海仅需2.5小时。

磁悬浮列车的最大困难,在于造价大大高于高铁,以及与现有轨道不兼容,需要重新建设,很可能是全程高架。另外,由于速度太快,路线必须尽量保持直线,选线难度也很大。

3、

Chromium 浏览器宣布,将把 HTTPS 协议的锁标志,改成一个中性的箭头(下图),以防用户看到“锁”以后,误认为该网站是经过认证的可靠网站。

实际上,HTTPS 协议只能保障信息传输是安全的,并不能保证网站本身是可靠的。

4、

7月5日,墨西哥钻井平台发生天然气泄漏,出现“水中大火”的奇景。经过5个小时的奋战,大火被扑灭,没有人员伤亡。

大家看看现场的30秒视频,真是奇观。

5、远程驾驶服务

一家美国创业公司近日在拉斯维加斯,推出“远程驾驶服务”。它不采用无人驾驶,而是由真人驾驶员在家中通过摄像头驾驶,控制信号会通过 5G 发送到车上。

顾客在网上叫车以后,出租车就由远程驾驶员开到预约位置去接客。客人上车以后,必须自己接手驾驶,开到目的地。客人下车后,再由远程驾驶员接手,去接下一个顾客。

6、如何防止轿车泡水

《今日头条》报道,郑州本周开始下暴雨时,老李新买的奔驰轿车还停在小区路边。他担心新车被水泡,但没有地方移车,到处都是水。

无奈之下,他花1200块钱买了8条工程车的大型内胎,用绳索绑在奔驰车的四个车轮上,再用气泵为内胎打足气,并用钢丝绳拴在路边的树上。

一天的大雨停后发现,他的车是小区里唯一没有被水泡的。

7、

美国《体育画报》杂志报道,美国职业棒球选手普遍在棒球上涂抹特殊胶水,使得投手投出的球,旋转速度更快,更难被正确击打。这属于作弊,是一种丑闻。

8、禁止车辆左转

美国一所大学的交通工程教授发现,所有交通事故的40%发生在十字路口,其中61%的事故原因是车辆的左转。左转需要跨过整个路口,必须穿过对向的车辆,往往造成了交通拥堵和事故隐患。

他因此建议,大城市可以考虑禁止十字路口的车辆左转。这样可以大大提高交通效率,加快行车速度,减少交通事故。

禁止左转的唯一缺点是行驶距离变长,因为禁止左转以后,必须用三个右转代替。

文章

1、砂纸的砂粒是怎么做上去的?(中文)

砂纸是木工的必备工具,它是怎么生产出来的?上面的砂粒怎么会均匀吸附到砂纸上呢?

2、中国西北地区的干旱原因(中文)

一个科普演讲,主讲人是中国科学院大气物理研究所的副研究员,分析中国西北地区为什么这么干旱,如果把喜马拉雅山脉炸开一个口子,会不会改变这种状况。

其中提到一点,大家觉得延安很干旱,其实那里跟北京的降雨量差不多。

3、一行 CSS 代码实现全站中文简繁转换(中文)

CSS 命令 font-variant-east-asian: traditional;,可以让网站字体从简体变成繁体。

4、PostgreSQL 数据库的变化捕获和实时通知(中文)

数据库发生变化时,如何通知前端网页?本文以 PostgreSQL 数据库为例,介绍了作者的解决方案,使用了服务器端事件。(@kaifeiji 投稿)

5、页脚的变化(英文)

网页的页脚往往可以反映网站的成长。这篇文章总结了几个案例,看看它们的页脚怎么变化,上图是一个网站刚成立时的页脚,下图是该站五年后月收入达到17万美元时的页脚。

6、避免使用可变长数组(英文)

C 语言有一种语法,叫做可变长数组(VLA),数组的长度不在编译时确定,而在运行时确定。本文解释它有什么问题,为什么应该避免使用。

7、Netflix Prize 挑战赛十五周年回顾(英文)

2006年,Netflix 为了改进推荐算法,发起了一项算法比赛,任何人只要能够击败基准算法,就能获得 100 万美元奖金。

这是世界第一场大数据的算法比赛,世界各地的许多研究人员、学生、业余数学家和计算机科学家都参与了。本文在多年后,评论这个比赛的意义。

8、自己实现 nodemon(英文)

nodemon 是一个 Node.js 工具,只要发现源码文件有变动,就会自动重新启动服务。本文教你怎么自己写一个 nodemon。

工具

1、Difftastic

一个命令行工具,可以根据不同语言的代码,对 diff 结果进行不同的高亮显示。

2、SCImago Graphica

一个桌面软件,可以选择各种指标,定制数据可视化图形,完全不用写一行代码。

3、iPod.js

一个 JS 应用程序,生成一个网页的音乐播放器,操作界面类似 iPod,可以链接用户的 Spotify 或 Apple Music 账户。

4、Noice

一款开源的安卓 App,提供各种环境声,比如下雨打雷。

5、WiFi Card

一个网页工具,使用 WIFI 的名称和密码,生成一个二维码,手机扫一下,就能登陆这个无线网络。(@dllen 投稿)

6、KubeSphere

一个国产的 Kubernetes 集群管理平台,操作容器的利器,功能强大,界面清爽易用,大大方便了 k8s 的使用。(@FeynmanZhou 投稿)

7、CORNERSTONE

一个企业级的项目管理和协作平台,集成了工作台、看板、思维导图、项目文档、仪表盘、文件等多种功能,还可以接入代码构建与交付,20人以下的团队免费。(@cornerstone-365 投稿)

8、kit

一个 PHP 小工具,用来列出 MySQL 数据库的表结构信息。(@cuishuang 投稿)

9、Yozora

一个高度可扩展的、插件式的 Markdown 解析器,用于生成 Markdown AST(抽象语法树),可以在它的基础上,定制自己的 Markdown 解析器。(@guanghechen 投稿)

10、Bash 命令行提示符生成器

一个网页工具,以可视化方式,通过拖拉不同的元素,自动生成 Bash 的命令行提示符。

资源

1、谷歌 API 设计指南

谷歌官方文档,讲解谷歌的 API 设计规范。

2、2020年中国互联网网络安全报告

7月20日,国家计算机网络应急中心发布的年度报告,介绍我国网络安全情况,披露一些安全事件,可以免费下载。

3、自己动手写一个简单的数据库

一份英语教程,教大家从头开始,用 C 语言写一个类似 sqlite 的数据库,理解数据库的实现原理。

4、编程音乐

这个网站提供几十组精心选择的编程背景音乐。

图片

1、印度的杀人大象

2019年10月29日,一头35岁的雄性大象在夜晚袭击了印度东北部的阿萨姆邦的一个村庄,损毁了大量财物,还杀死了5名村民。

当地政府展开了一场大规模搜索行动,在它逃亡两周后,终于在11月11日抓到了它。抓捕人员发射了2个麻醉飞镖,将它麻醉。

这头大象被五花大绑,用起重器吊起来,转移到一处国家公园。

但是,11月17日清晨,这头大象突然死亡。兽医表示,死因很可能是大象受太大刺激和高度紧张,此外大象在被抓期间可能也已受伤。

2、直布罗陀机场

直布罗陀是英国的一个海外领地,只是一个小半岛,面积仅为 6.8 平方公里。

这么小的地方,却有一个机场。由于土地面积太小,跑道只好建到海里,而且还要穿过一条公路。直布罗陀机场是世界唯一一个跑道穿过公路的机场。

没有航班时,公路供车辆通行。

等到有航班时,公路暂时关闭。

文摘

1、做完你的项目

如果要为 UNIX 哲学添加一个原则,我认为应该是:

“做完你的项目。”

这是我能想到的最简单、但最被忽视的软件工程准则。

大多数软件其实都没有真正完成,作者只是做出了基本功能,然后就发布了。很多软件后来不做了,也不是因为做完了,而是作者放弃了。

让我们把程序员比作木匠。你买了一把椅子,因为觉得它能满足你的需求。可是买来以后,每隔几天,木匠就会出现在你的家里,对椅子进行修改。有些变动是你想要的,有些你无所谓,还有一些变动只会让你心生反感。甚至有时候,木匠还会出错,比如木头上伸出了一些尖刺,使椅子不再可用。

你买的是椅子,而不是某种千变万化的家具,没人喜欢每天会变的椅子。

程序员也是如此,应该对软件有一个总体规划,让它有一个完整的基本功能。虽然以后可以进行维护、错误修复和安全补丁,但基本功能应该从始至终都是完整清晰的。

你不能说,因为出现了新情况,所以需要不断改变或完善它的功能。 如果一个软件一直在加功能,它就太大了,超出了你应该做的东西。你试图制造一个超出合理范围的东西,你需要画一下功能图,将过大的软件拆分成几个功能完整且合理的小软件。

总之,做完你的项目再发布。用户拿到的,应该是一个基本上做完的项目。

2、中等收入陷阱:韩国和巴西

中等收入陷阱是一个经济学术语,指一个国家跨过低收入以后,由于种种原因,失去了发展动力,好像落入了陷阱一样。

请看下面这张图,韩国(红线)和巴西(绿线)人均 GDP 的变化趋势。

可以看到,直到上个世纪80年代,韩国和巴西的发展水平差不多。但是从那以后,韩国快速发展,已经接近高收入国家了,但是巴西停滞不前,收入水平没有太大变化。

巴西就是落入了“中等收入陷阱”,一直是中等收入水平,无法增长。

经济学家认为,低收入到中等收入相对容易,只要加大投资,培训民众成为熟练劳动力,从农业和手工业转移到工业和服务业,就可以实现。但是,中等收入到高收入就很难,需要变成知识创新国家,能够创造高附加值的产品。

言论

1、

比起琴棋书画的培训班,国家应该培训家长必须学会心肺复苏,学校里也要教育孩子学会心肺复苏。让身边的每一个人都成为有能力能救助别人的人,作为升职加薪子女入学的必需品。

今日头条读者,评论一个医生在郑州地铁5号线做6小时心肺复苏,救了十几个人。

2、

亚马逊公司有一项规定,如果要开会,必须先有会议文档,没有文档,就取消会议。

会议开始后,所有人先花几分钟看文档,然后再开始讨论文档列出的问题。

《亚马逊的文档文化》

3、

PC 游戏里面的文字大小,这几年变得如此之小,以至于没法在电视机上玩,因为在正常观看距离下,几乎无法在电视屏幕上阅读这些文字。游戏的开发人员大概都是在离大型显示器几英寸的地方开发游戏,而没有考虑到很多人会在电视机上玩游戏。

Hacker News 读者

4、

2014年,我离开公司,休息了一年去旅行。结果是我丧失了一大笔收入,并且最终发现自己喜欢编码,而不太喜欢旅行。

在我们的文化中,旅行被过度美化了。

Hacker News 读者

5、

加州想建一条从洛杉矶到旧金山的高速铁路,已经几十年了。在加州的官僚机构和政治体系中,投入了数十亿美元,结果什么都没有发生。各种方案、讨论、争吵、税收,白白花了数十亿美元,什么都没有造出来。我们甚至已经失去了建造火车站的能力。

马克·安德森,美国风险投资家

历史上的本周

2020年(第 117 期):我不想让你记住我的脸

2019年(第 65 期):周刊开设”谁在招人”的招聘服务

2018年(第 14 期):马斯克的人生才是梦想家的人生

订阅

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

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

(完)