2020年10月

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客第二季(8):开源好奇号音频脚本。

导语:那些最棒的、最聪明的人用袖珍计算器的计算能力把我们带到了月球。现在他们要带我们走得更远 —— 而且是用我们整季播客都在谈论的技术来实现。开源将带我们去火星。

第二季的结局是将我们带到美国宇航局(NASA)的 喷气推进实验室 Jet Propulsion Laboratory (JPL)。Tom Soderstrom 分享了 JPL 通过拥抱开源获得了多少好处。Hila Lifshitz-Assaf 解释说,NASA 正在用开源软件和众包解决一些最大的问题。Dan Wachspress 介绍了与 NASA 合作意味着专有商业需要做出一些牺牲 —— 但他们可以参与到世界上最具创新性的项目中。

远疆的探索者们选择在开放的环境中工作 —— 火星是他们的目的地。那么下一步呢?

00:00:12 - Saron Yitbarek

2012 年 8 月 6 日,一枚汽车大小的 漫游车 rover 好奇号 Curiosity ,从火星大气的顶层降落到了这颗星球的地表。降落花了 7 分钟,下降的过程仿佛永无止境。漫游车携带着贵重的货物:500,000 行代码,76 台尖端科学仪器,以及另一些工具,用以开展一些前所未有的实验。先是超音速降落伞展开,接着是隔热护盾分离,然后,反冲发动机启动,甚至在半空中部署天车——最终,好奇号平稳着陆。

00:00:59 - NASA 工程师

现在,是时候看看“好奇号”会将我们带向何方了。

00:01:13 - Saron Yitbarek

听见那声音了吗?那就是火星车成功着陆后,满屋子工程师的欢呼声。几天后,他们将收到来自贝拉克·奥巴马总统的贺电。但现在是只属于他们的时刻。这群人一同完成的这件事,是他们中的任何一人永远都无法独自做到的。

00:01:39

我是 Saron Yitbarek,这里是代码英雄,来自红帽的一档播客节目。本季以来,我们见证了开源技术对我们工作方式的重塑,及其对人们能力的拓展。作为线索,社区这个要素贯穿了整季节目。这些故事告诉我们该怎么团队协作,该怎么向行家学习,以及,如何在这同时学会听取新人的意见 —— 一言以蔽之,如何更好地与人交流。

00:02:11

在第二季的终章,我们在记住所有这些道理的同时,我们将探索开源是如何为那些伟大的项目赋能的。你也许在去年的十一月观看了 NASA 的 洞察号 insight 登陆器抵达火星地表。彼时四周皆是欢呼与拥抱。事实证明,这项向星星 —— 这颗红色的星球发射漫游车的任务,只有把宝押在众人合作上才能实现。

00:02:45

我刚才说过了吗?那台火星车有它自己的推特账号。它还有 4 百万粉丝呢。这还不算什么。最近它给地球人发送了一条推文,是一封邀请函,邀请人们使用 NASA 喷气动力实验室开源的说明和代码,建造一辆属于自己的漫游车。我们跟踪采访了一个民间的组织,叫 SGVHAK 小组,他们是第一批自己建造漫游车的人。

00:03:13 - SGVHAK 小组

现在我要试试从坎上开过去。

00:03:15

看看她(LCTT 译注:指漫游车)这样能不能行。

00:03:15

上来了——不,不行。

00:03:15

不行。

00:03:20

她以前很容易就能开过去的。不过我们现在对轮子做了一些改动,她就有点不乐意了。

00:03:27 - Saron Yitbarek

这个小组的成员包括 Roger Cheng、Dave Flynn、Emily Velasco 以及 Lan Dang。

00:03:34 - SGVHAK 小组

Dave 包揽了所有机械设计,我想我应该算是负责组装的。Roger 是我们的程序员,Dave 是机械设计师,Lan 是我们无畏的领导。

00:03:45

你也是一个,你是队里的机械制造专家。

00:03:49

大概吧,应该算是。

00:03:51

跟他们讲讲伺服电机架子的事。

00:03:53

噢,好的。

00:03:54

是你把电机凑起来的,现在可以让它运行,演示一下——

00:03:58

我们现在就拿——

00:04:00 - Saron Yitbarek

打造这样一部漫游车可不是玩乐高玩具。它需要真正的火箭科学家花 200 小时来完成。所以,让我们给这些家伙几分钟的准备时间,稍后再回来。

00:04:19

与此同时,我想了解更多关于为什么一开始 NASA 要将漫游车的技术和代码向全世界开源。我刚刚找到了回答这个问题的最佳人选。

00:04:29 - Tom Soderstrom

我叫 Tom Soderstorm,我是 NASA 喷气推进实验室 Jet Propulsion Laboratory (JPL)的 IT 部门的 首席技术与创新官 technology and innovation officer

00:04:37 - Saron Yitbarek

JPL 总共有大约 6000 人。它是 NASA 的研究中心之一,由联邦政府提供资金,专注于研究如何用无人机械进行太空探索。

00:04:48 - Tom Soderstrom

我们寻找地外生命,我们也探究宇宙的起源和未来。除此之外,考虑到可能的星际移民需求,我们也在寻找地球 2.0。也就是具有类似地球的环境的、另一个适宜人类居住的行星。

00:05:33 - Saron Yitbarek

是的,他们肩负着伟大的使命。不过,事情是这样的。Tom 的团队并不是一群秘密进行研究、与外界全然不接触的工程师。他们与下一代的科学家们有着深厚的联系。他们常常采用全新的方式激发大众的创造性思维。事实上,这是他们工作中至关重要的一部分。漫游车开源计划释放出了部分设计,这样一来,NASA 之外的民间组织就能组建他们自己的漫游车了。这是 NASA 促进创新的宏观战略的一部分。很自然地,Tom 从开源漫游车开始,向我讲述了为何开源 NASA 的成果是如此重要。

00:05:46

有很多人可能像我一样;发现这个网站时,我想,天啊,也许我可以自己打造一个漫游车呢。这真是太激动人心了。这太令人神往了。

00:05:55 - Tom Soderstrom

我们打造这个开源网站,是为了能让公众和学校能够从中学习。而且我们发现,围绕漫游车开源形成的社区是非常优秀的实验平台。所以当我们想测试新鲜事物的时候,这里就是最佳的演练场,非常简单,非常快速,我们能很快就把想要的技术应用到真正的漫游车上。所以我们希望人们能够把像太阳能面板、加速度传感器、科学实验仪器,以及先进的人工智能程序等结合起来,我们只是希望这些经验能够扩散,在这些方面感兴趣的人最终也能对太空感兴趣。因为太空真的是太酷了。

00:06:32 - Saron Yitbarek

所以除了刚才提到的这些之外,人们在这个项目中还做过什么让你印象深刻的,或者是让你觉得激动的事儿?

00:06:42 - Tom Soderstrom

降价是一项非常令人印象深刻的工作,而现在有一堆人在试着用人工智能干这个事儿。这是目前我见到的最有趣的事情之一,我很想看到有人能为其添加一个机械臂。

00:06:55 - Saron Yitbarek

真是太酷了。

00:06:55 - Tom Soderstrom

也是我们正在思考的问题。

00:06:58 - Saron Yitbarek

这个项目是全方位开放的吗?我是指,对于硬件部分,你们给出了一份推荐的零部件清单,但参与者如果愿意,也能自行替换,换成更便宜的,或者换成更贵的;而软件部分就完全是开源的了。这中间有任何非开源的部分吗?

00:07:17 - Tom Soderstrom

没有,完全是开源的。

00:07:19 - Saron Yitbarek

如果你告诉我高中生都能通过这个项目自行制作漫游车,我会觉得非常震惊。那听起来太难了;你知道吗,听起来太高大上了,高到只有 NASA 才会去做的那种。对吧?真正地组装火星车会是件容易的事吗?

00:07:36 - Tom Soderstrom

我们并不想将这做成一个玩具。这个项目是货真价实的,能给参与者带来实际的经验。加利福尼亚州的几所学校已经将其纳入他们的科学、工程与编程课程中,比如所谓的 机械电子学 Mechatronics ,就是上述几方面的结合体。这让我们非常高兴,因为这样,在不久的将来就能有一批训练有素的专业人才来到 NASA。

00:08:04 - Saron Yitbarek

但这似乎不仅有利于未来的 NASA 工程师、未来的科学家,也有利于你们(LCTT 译注:指目前在 NASA 工作的科学家、工程师)。跟我多说说这方面吧。

00:08:14 - Tom Soderstrom

嗯……突然间,我们就有了一个非常简单易用的实验平台。我能想象到开源的漫游车在 JPL 附近行驶,还向人问好。在于艰苦环境中验证某些技术之前,我们能在后院里对它们快速地进行试验。它成为了我们可以实验的移动平台。话又说回来,我认为人工智能会是这些技术中非常有趣的一样,因为它发展得太快了,而且,向它加入新的机器人部件也很容易。

00:08:50 - Saron Yitbarek

所以,理论上来说,你们也可以创建一个你们自己的移动试验场,可以进行试验,也不用将其开源,对吧?它本来可以成为一个内部项目。但它现在是开源的。这能让你们多学到什么呢?

00:09:08 - Tom Soderstrom

嗯,这是一个好问题。为什么要开源?对我们来说,开源才是更困难的选择,不过那也是挑战所在。我们希望,通过将其开源,学校以及其他民间组织能够用上代码,并且将漫游车造出来。编写一本不是机器人学专家的人也能看懂的手册带来了大量额外的工作。但起码,当我们最终将一些东西真正开源的时候,它变得更整洁、更紧凑、文档更完善了;因为我们知道,其他人会来使用这些东西,所以也必须要具备一定的可扩展性。因此,项目的质量提高了。我曾经和 Netflix 的人谈过,他们也有同样的感觉,被开源的代码普遍更加整洁、质量更好。

00:09:54 - Saron Yitbarek

你是怎样看待开源漫游车的?五年,十年,甚至将来的二十多年后,你觉得它们能做什么,而人们能够创造出什么?你认为这些能为身处地球的我们带来什么潜在利好?

00:10:11 - Tom Soderstrom

能带来多方面的利好。现在的漫游车被设计成使用轮子行驶。我可以说,它其实也可以被设计成采用步行,也可以对它进行扩展,加上跳跃的功能。我们已经送了一架直升飞机上火星,它现在还在飞着。所以说,这些漫游车并不仅仅局限于现在我们所说的漫游车。有了全世界各地人们的实验,我们能走得更快,更远,不断探寻可能性的上限,并提出一些坦率地说我们可能没有想到的想法。未来到底会是什么样的?我迫切地想了解,不过我不知道。

00:10:49 - Saron Yitbarek

通过创造这个平台,你们已经为许多人提供了打造自己的“玩具”的机会。接下来就让我们拭目以待吧。

00:10:57 - Tom Soderstrom

是的,这是很重要的一点。因为我发现,我能想到的主意都已经有人做过了。但我们需要找到这些人。无论我们最开始做的是什么,一旦到最终用户手上,他们就能以我们无法想象的方式将其改进十倍。所以,向大众开放一些这样的“玩具”,任他们自由发挥,他们会因此而得到锻炼,这对将来使用更先进技术的任务也大有益处。

00:11:23 - Saron Yitbarek

这真是太棒了。

00:11:29

如果你想了解开源漫游车项目,你可以访问 opensourcerover.jpl.nasa.gov 。你能在那儿玩个尽兴。我们稍后再与 Tom Soderstrom 进行更多讨论。但首先,让我们来更深入地挖掘 NASA 与开源之间的关系。

00:11:51 - Hila Lifshitz-Assaf

大家好,我是 Hila Lifshitz-Assaf,纽约大学商学院的教授。

00:11:57 - Saron Yitbarek

Hila 正在研究 NASA 是如何打破知识壁垒的。

00:12:02 - Hila Lifshitz-Assaf

如果你能够回到过去,回到 15 世纪,看看那些孤独的发明家,像莱昂纳多·达芬奇和其他人,他们某种程度上只在自己所在的本地社区活动。之后,有了工业革命,有了实验室。此后的两百多年里,人们都在实验室里工作。最大的变化发生在 21 世纪,数字革命之后我们有了开源的概念,而它打破了之前这类组织结构的边界。

00:12:34 - Saron Yitbarek

在 NASA 工作的日子里,Hila 见证了这种巨大变革的典型例子。

00:12:39 - Hila Lifshitz-Assaf

NASA 最吸引我的一点在于,他们就某种意义上来说是最勇敢的,因为他们勇于接受战略性的 研究与开发 research and development (R&D)事业中的挑战,他们的科学家、工程师,最优秀的一批人才为此而努力工作,并使这些挑战向大众开放。而且,我必须说,直到现在,很多其他的组织在做开源科学或是众包的时候,他们不会把最核心的、战略性的难题交给社区,而是只开放一些次要的任务。无论成功还是失败,这都不会让他们的组织蒙受多大损失。而 NASA 做的事情,一旦成功了,就真的改变了一切。

00:13:14 - Saron Yitbarek

自 2009 年起,NASA 就开始使用像 Innocentive 和 Topcoder 这样的开源创新平台。而且,他们不是闹着玩的。就像 Hila 所提到的,他们甚至把他们核心的 R&D 难题都放了上去。

00:13:29 - Hila Lifshitz-Assaf

这些问题上传之后,甚至没过一年,我们就已经陆续开始看到来自众包平台的解决方案。

00:13:34 - Saron Yitbarek

这确实很快。我将在此举出一项研究成果,它是 NASA 开源科研的诸多喜人硕果之一。Hila 向我们将讲述,他们是如何将太阳耀斑的预测技术提升一个台阶的。

00:13:46 - Hila Lifshitz-Assaf

嗯……太阳耀斑的预测是学术界研究了数十年的一项非常困难的太阳物理学问题。总的来说,他们已经完成初步的构想,以便更多的人可以参与这方面的研究。而且他们非常在意这一点。这让我觉得很惊奇,因为他们确确实实地希望能从太阳物理学圈子外的人那里找到解决方案。Bruce Kragan,一名来自新罕布什尔州乡村的、半退休的无线电工程师,只花了三个月,就给我们带来了太阳耀斑的预测方法。当 NASA 验证模型时,他们发现,这种预测方法的准确率有 80%。用传统方式需要花费数百万美元及数年时间才能获取的成果,在三个月内就被收获了,花费大概在三万和四五万美元之间。

00:14:36 - Saron Yitbarek

你也许已经猜到了,这样的变化需要 NASA 内部的文化作出改变。

00:14:44 - Hila Lifshitz-Assaf

他们中的有些人选择邀请外来的解决方案提供者进入项目组,还有一些选择提供实习或合作机会;他们采用了很多有意思的方法来交流知识,使其不至于淤塞。

00:14:59 - Saron Yitbarek

仔细想想,这其实是很美好的。就如我们所知,很多组织仍然抵制开源活动,不愿放弃专有软件。但在这里,你可以找到这个星球上最具创新性,愿景宏大的一群科学家;而他们说,嗨,我们一起来。这样的态度有绝大的影响力。

00:15:22 - Hila Lifshitz-Assaf

我们已经看到了开源给软件行业带来的变革。我们目前尚未在科学与技术方面见到太多改变,不过,我认为,现在就是最好的时机。计算物理学、计算生物学越是崛起,这就越有可能实现。我认为,像这样,就有更多人能够参与到科研中,协助处理不同的任务。以这种方式,科学技术的发展速度或许甚至能够超过应用开发。

00:15:53 - Saron Yitbarek

Hila Lifshitz-Assaf 是一位来自纽约大学斯特恩商学院的教授。

00:16:00

NASA 在开放他们的研究课题的道路上受益良多,但他们也通过 中小企业创新资助计划 Small Business Innovation Grant Program ——这个项目鼓励私营经济中的创新——打造了另一种社区。所有 大胆的计划 blue sky projects 都有风险,可能付出代价,但有时回报也尤其丰厚。

00:16:22 - Dan Wachspress

大家好,我叫 Dan Wachspress,我是一名航空工程师,在 Continuum Dynamics 集团工作。

00:16:28 - Saron Yitbarek

Dan 的公司专注于研究与开发旋翼飞行器,也就是直升机、旋翼飞机这类的飞行器。这可以说从是字面上看就很“ 蓝天 blue sky ”(LCTT 译注:此处呼应之前提到的 blue sky projects)了。他们一直与 NASA 合作,致力于解决垂直升降的问题,让飞行器能变得像是 Jetson 的“空中出租车”(LCTT 译注:典出《The Jetsons》,一部始播于 1962 年的系列动画,这里的 Jetson 指动画主角 George Jetson)那样。

00:16:50 - Dan Wachspress

总体的构思是,只要用电动机代替车辆上的燃气涡轮发动机,你就可以安装更多推进器。它们会比现有的更安静、更安全,直升机所有恼人的问题统统消失,而我们可能会得到这样的未来:你打个的就能从达拉斯去到沃斯堡(LCTT 译注:均为美国得克萨斯州的城市),而那是一辆准乘 5 人、无人驾驶的电动飞的,而非一辆汽车,在汽车里面你还得跟堵车较劲。这就是我们的愿景。

00:17:22 - Saron Yitbarek

有很多公司,比如 Uber,对这种空中出租车的设想非常感兴趣。而 NASA 在这之中扮演的角色是伟大的:它打破了不同公司本要各自为营死磕研究的壁垒。

00:17:38 - Dan Wachspress

那些公司必定不想走漏风声,他们想保持商业机密,不愿共享成果。NASA 的目标就是把尽可能多的研究成果送到他们手里,让他们尽可能地获得能力。而且我敢说你如果去问他们任何一家公司,他们肯定会说,没有 NASA 长久以来的技术支持,他们没法做到这么快地开发。

00:18:13 - Saron Yitbarek

我想这并不影响 NASA 拥有一些非常棒的风洞。从火星漫游车到飞行汽车,你有感觉了吗?我们谈论的是创新,天穹尚且不是我们的极限。而且这一切都归功于我们全地球级别的合作,而正是开源观念让这一切成为可能。

00:18:41 - Saron Yitbarek

我们再回来和 NASA 的 Tom Soderstrom 聊聊。Tom 认为,我们两季以来探讨的开源的“魔力”已经形成了一股巨大的推动力。他称之为第四次工业革命。

00:18:59 - Tom Soderstrom

创新总是与科技的潮流挂钩。当今,有好几波科技浪潮同时袭来,它们的合流将引起巨大的海啸。它们逼近得越来越快,所有事物都会为之改变,因此,我称其为第四次工业革命。

00:19:21 - Saron Yitbarek

我将简单几句带过那些浪潮,虽然就它们中的每一样都可以独立讲一期节目。Tom 所说的“即将到冲击我们生活的潮流”包括了大规模的网络安全问题、量子计算之类,也包括了各类“ 软件定义的 software-defined ”东西。但这些只是其中的一小部分。他还提到了 普适计算 ubiquitous computing 自然用户界面 natural interfaces 和物联网。

00:19:49 - Tom Soderstrom

这些技术都将是那场海啸的一部分,生活将因为无处不在的 内置智能 built-in intelligence 而大为改观。

00:19:54 - Saron Yitbarek

想象一下,如果这些技术合流,产生了 1+1 大于 2 的效应,“海啸”发生,情况会变成什么样?

00:20:04 - Tom Soderstrom

我不认为这种变化会是突然发生的;不会有像是一个人站起来感叹“你看这个”这样的情况。就如我刚才所说,内置智能会渗透进生活的各个方面。“智能”,对吧?比如智能电视,或者智能会议室。我们生活中的事物会变得越来越智能,越来越聪明。对于企业来说,它意味着,你可以对着一个房间提出问题,然后程序会为你在数千种不同的数据源、好几 PB 的数据里找出答案。而这背后,就是自然语言处理、深度学习、机器学习这样的技术;而我们不会突然说,“哇,我们已经发展到这种地步了”。不会的,这是一个循序渐进、潜移默化的过程。

00:20:49 - Saron Yitbarek

这第四次工业革命,又会如何影响你在 JPL 的工作呢?

00:20:57 - Tom Soderstrom

我认为首先是实验,下一场工业革命可以帮助我们更快地完成实验,并且利用更好的组件,包括软件和硬件,也许我们不需要把所有的东西都造出来,但是我们可以更智能地使用它。然后是开源。开源真是一项颠覆我们工作方式和工作内容的事业。

00:21:23 - Saron Yitbarek

此话怎讲?

00:21:24 - Tom Soderstrom

说到开源这东西,我的资历足够老,我当年也经历过开源战争。当时开源还只是个玩笑。那时的开源很糟糕,开源软件似乎比商业软件低一等似的。不过,那些都已经是过去了,至少在喷气动力实验室是这样的。现在,开源的方式更适合我们。开源的研究与开发更加经济划算,也可以更快地做实验验证。另外,因为开源软件的存在,现在我们再也不用全部从头造轮子了。我们可以自己开发;在此之后,如果我们选择将之开源,就能从社区获得帮助,对成果进行改进。开源的软件和科研也能为我们招贤纳士。这就很有趣了。

00:22:05 - Saron Yitbarek

确实很有意思。

00:22:07 - Tom Soderstrom

我认为现在的人们,特别是新一代,可以将他们的项目开源,以此获得更多的影响力,得到尽可能多的星标。你可以看见他们的简历上写着,我开发的软件得到了多少星标。

00:22:21 - Saron Yitbarek

对你来说,让你们的工作方式和内容发生变化的开源,并不是什么新鲜事物,对吧?这点让我很感兴趣。你说你经历过开源战争。你也见证了开源在这么多年来的发展。那么,当今的开源有哪些优势是十年、十五年、二十年前没有的呢?

00:22:47 - Tom Soderstrom

有两点。一个就是云计算。我们不用签署一份大合同,购买一堆软件然后使用许多年。我们可以在云端简单地做个实验。这点相当重要。还有另外一点,就是开源并不比闭源的安全性差。这早就不是 —— 请原谅我的用词 —— 一个 信仰 religious 的问题了。这更多地只是一个实用性和经济性的问题。

00:23:15 - Saron Yitbarek

开源显然在你的工作当中扮演了一个重要的角色;尤其是当你谈及喷气动力实验室的未来,以及你期望它以怎样的方式前行的时候,开源似乎仍将是故事的重要组成部分。说到开源社区式的合作开发,你认为这种方式在最理想的情况下能够导向怎么样的成果?而对于人类,它的意义又是什么?

00:23:42 - Tom Soderstrom

好问题。我认为你刚刚已经说出了正确答案——“人类”。它的理想结果是能让每个人都参与到这份工作中来,而它的意义也在于此。你知道,总有一天我们会把人送上火星。我们要探索更广袤的深空,去寻找地球 2.0。我们还要再开展一次载人登月。这些都需要来自世界各地的人们积极参与。

00:24:15 - Saron Yitbarek

我被这场变革深深的吸引了。Tom Soderstrom 是 NASA 喷气动力实验室的首席技术与创新官。

00:24:29

从地球 2.0 的话题,回到地球 1.0。我们应当铭记,“第四次工业革命”的起源,也是艰苦朴素的。开源项目固然可以变得宏大无比,但千里之行毕竟始于足下;一项伟大的事业,在其伊始,或许只是几名极客试图让漫游车正常工作。

00:24:47 - SGVHAK 小组

我们再看看这样它能不能跑起来。我们会——再加一样东西,方便它从坎上过去。过去了!耶!

00:24:59 - Saron Yitbarek

耶。

00:25:02 - SGVHAK 小组

啊呀,我下不来了,它被卡在花坛里了。

00:25:14

我们把它抬出来就行了。

00:25:16

这又不是在火星。你可以直接走过去,把它拿起来。

00:25:20 - Saron Yitbarek

我觉得他们有所进步。

00:25:25

让我们和这些代码英雄说再见吧,他们要继续学习、探索、投入他们的工作了。他们会知道,通过开源,我们总有一天可以到达天空之外的高度。

00:25:40

如果你想让你自己的开源游戏项目上一个台阶,不要忘了我们正在开发《代码英雄》游戏,开发已经持续了一整季的时间,现在你仍然可以贡献代码。

00:25:52 - Michael Clayton

嗨,我是 Michael。

00:25:52 - Jared Sprague

嗨,我是 Jared。我们是《代码英雄》游戏的开发人员。

00:25:58 - Saron Yitbarek

我们请来了红帽的 Jared Sprague 和 Michael Clayton,看看情况怎么样。

**00:26:03 - Michael Clayton\_

我有点惊讶于我们这么快就引来了这么多的感兴趣的人。反响非常好,提交的拉取请求蹭蹭上涨。

00:26:17 - Saron Yitbarek

你认为是什么让大家这么激动?

00:26:18 - Michael Clayton

我认为我们播客的许多听众都受到了鼓励,因此他们看到这个开源项目就迫不及待地想试试看。尤其是自从我们开始征求不限类型的贡献,让任何想要贡献的创意人员、任何类型的工程师都能够参与项目后,听众就找到事儿做了。

00:26:39 - Saron Yitbarek

那么接下来希望社区能给大家带来什么?这游戏还在开发中。你最想见到什么?

00:26:47 - Jared Sprague

我个人非常享受开发过程中的进入节奏的感觉,我们让大家贡献美术素材和音乐以及音频效果、故事线、代码,所有这些东西都可以并行不悖。一旦每个人都进入节奏,我们可以一起开发,共同看着游戏被开发出来,那真是太美妙了。

00:27:14 - Saron Yitbarek

顺带一提,我们的游戏的公测版将会在今年的五月七日到九日,在波士顿开办的红帽峰会发布。届时,数千名像你一样的代码英雄会前来进行为期三天的创新与教育之旅。访问 redhat.com/summit 以查看详情。

00:27:34

最后一件事,这或许是第二季的最终章,但这不是真正的告别。第三季已经在筹备中!与此同时,我们也会为大家带来一期彩蛋。我们开展了一次圆桌会议,与你们最喜爱的思想家们探讨开源的未来。请锁定一月份。别忘了,如果你不想错过最新一期节目,记得点关注哦。就点一下,点一下又不会怎么样,这样你才能在第一时间收到新内容的通知哦。

00:28:09

我是 Saron Yitbarek,感谢你聆听本季节目,生命不止,编码不休。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-2/open-curiosity

作者:Red Hat 选题:bestony 译者:Colin-XKL 校对:Northurland, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

开始在 Linux 系统上使用开源的 SQL 数据库吧。

MariaDBMySQL 都是使用 SQL 的开源数据库,并且共享相同的初始代码库。MariaDB 是 MySQL 的替代品,你可以使用相同的命令(mysql)与 MySQL 和 MariaDB 数据库进行交互。因此,本文同时适用于 MariaDB 和 MySQL。

安装 MariaDB

你可以使用你的 Linux 发行版的包管理器安装 MariaDB。在大多数发行版上,MariaDB 分为服务器包和客户端包。服务器包提供了数据库“引擎”,即 MariaDB 在后台运行(通常在物理服务器上)的部分,它监听数据输入或数据输出请求。客户端包提供了 mysql 命令,你可以用它来与服务器通信。

在 RHEL、Fedora、CentOS 或类似的发行版上:

$ sudo dnf install mariadb mariadb-server

在 Debian、Ubuntu、Elementary 或类似的发行版上:

$ sudo apt install mariadb-client mariadb-server

其他操作系统可能会以不同的打包系统封装 MariaDB,所以你可能需要搜索你的软件仓库来了解你的发行版的维护者是如何提供它的。

启动 MariaDB

因为 MariaDB 被设计为部分作为数据库服务器,它可以在一台计算机上运行,并从另一台计算机上进行管理。只要你能访问运行它的计算机,你就可以使用 mysql 命令来管理数据库。在写这篇文章时,我在本地计算机上运行了 MariaDB,但你同样可与远程系统上托管的 MariaDB 数据库进行交互。

在启动 MariaDB 之前,你必须创建一个初始数据库。在初始化其文件结构时,你应该定义你希望 MariaDB 使用的用户。默认情况下,MariaDB 使用当前用户,但你可能希望它使用一个专用的用户帐户。你的包管理器可能为你配置了一个系统用户和组。使用 grep 查找是否有一个 mysql 组:

$ grep mysql /etc/group
mysql:x:27:

你也可以在 /etc/passwd 中寻找这个专门的用户,但通常情况下,有组就会有用户。如果没有专门的 mysql 用户和组,可以在 /etc/group 中寻找一个明显的替代品(比如 mariadb)。如果没有,请阅读你的发行版文档来了解 MariaDB 是如何运行的。

假设你的安装使用 mysql,初始化数据库环境:

$ sudo mysql_install_db --user=mysql
Installing MariaDB/MySQL system tables in '/var/lib/mysql'...
OK
[...]

这一步的结果显示了接下来你必须执行的配置 MariaDB 的任务:

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h $(hostname) password 'new-password'

Alternatively you can run:
'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

使用你的发行版的初始化系统启动 MariaDB:

$ sudo systemctl start mariadb

在启动时启用 MariaDB 服务器:

$ sudo systemctl enable --now mariadb

现在你已经有了一个 MariaDB 服务器,为它设置一个密码:

mysqladmin -u root password 'myreallysecurepassphrase'
mysqladmin -u root -h $(hostname) password 'myreallysecurepassphrase'

最后,如果你打算在生产服务器上使用它,请在上线前运行 mysql_secure_installation 命令。


via: https://opensource.com/article/20/10/mariadb-mysql-linux

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

减少/缩小逻辑卷是数据损坏的最高风险。

所以,如果可能的话,尽量避免这种情况,但如果没有其他选择的话,那就继续。

缩减 LVM 之前,建议先做一个备份。

当你在 LVM 中的磁盘空间耗尽时,你可以通过缩小现有的没有使用全部空间的 LVM,而不是增加一个新的物理磁盘,在卷组上腾出一些空闲空间。

需要注意的是: 在 GFS2 或者 XFS 文件系统上不支持缩小。

如果你是逻辑卷管理 (LVM) 的新手,我建议你从我们之前的文章开始学习。

减少逻辑卷涉及以下步骤:

  • 卸载文件系统
  • 检查文件系统是否有任何错误
  • 缩小文件系统的大小
  • 缩小逻辑卷的大小
  • 重新检查文件系统是否存在错误(可选)
  • 挂载文件系统
  • 检查减少后的文件系统大小

比如: 你有一个 100GB 的没有使用全部空间的 LVM,你想把它减少到 80GB,这样 20GB 可以用于其他用途。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  100G 15G  85G   12%  /testlvm1

卸载文件系统

使用 umount 命令卸载文件系统:

# umount /testlvm1

检查文件系统是否有任何错误

使用 e2fsck 命令检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/6553600 files (0.0% non-contiguous), 12231854/26212352 blocks

缩小文件系统

下面的命令将把 testlvm1 文件系统从 100GB 缩小到 80GB

文件系统大小调整的常用语法(resize2fs

resize2fs [现有逻辑卷名] [新的文件系统大小]

实际命令如下:

# resize2fs /dev/mapper/vg01-lv002 80G

resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg01-lv002 to 28321400 (4k) blocks.
The filesystem on /dev/mapper/vg01-lv002 is now 28321400 blocks long.

减少逻辑卷 (LVM) 容量

现在使用 lvreduce 命令缩小逻辑卷(LVM) 的大小。通过下面的命令, /dev/mapper/vg01-lv002 将把逻辑卷 (LVM) 从 100GB 缩小到 80GB。

LVM 缩减 (lvreduce) 的常用语法

lvreduce [新的 LVM 大小] [现有逻辑卷名称]

实际命令如下:

# lvreduce -L 80G /dev/mapper/vg01-lv002

WARNING: Reducing active logical volume to 80.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv002? [y/n]: y
Reducing logical volume lv002 to 80.00 GiB
Logical volume lv002 successfully resized

可选:检查文件系统是否有错误

缩减 LVM 后再次检查文件系统是否有错误:

# e2fsck -f /dev/mapper/vg01-lv002

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg01-lv002: 13/4853600 files (0.0% non-contiguous), 1023185/2021235 blocks

挂载文件系统并检查缩小后的大小

最后挂载文件系统,并检查缩小后的文件系统大小。

使用 mount 命令挂载逻辑卷

# mount /testlvm1

使用 df 命令检查挂载的卷。

# df -h /testlvm1

Filesystem              Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv002  80G  15G  65G   18%  /testlvm1

via: https://www.2daygeek.com/reduce-shrink-decrease-resize-lvm-logical-volume-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

用 Gemini 协议发现更安静、更简单的互联网新角落。

如果你很久以前就已经上网了,或者是知识非常丰富,你可能还记得一个早期的文本共享协议,叫做 Gopher。Gopher 最终被 HTTP 协议所取代,当然,HTTP 协议是现代万维网的基础。对于很多人来说,“ 互联网 internet ”和“ 万维网 World Wide Web ”是一回事,因为很多人没有意识到在网上进行了 www 子域下的任何操作。

但一直以来,都有各种网络协议在互联网络上共享信息:Telnet、FTP、SSH、Torrent、GNUnet 等等。最近,在这一系列的替代品中又多了一个,它叫 Gemini

Gemini(双子座)协议,以“水星计划”和“阿波罗计划”的基础实验之间的太空任务命名,旨在和平地处在 Gopher 和 HTTP 之间。无论如何,它的目的并不是要取代现代 Web,但它确实试图创造一个简化的网络和一个现代化的 Gopher。

它的发展历史虽然可能很年轻,但意义重大,原因有很多。当然,人们会因为技术和哲学上的原因而对现代 Web 表示质疑,但它只是一般的臃肿。当你真正想要的是一个非常具体的问题的可靠答案时,那么无数次点击谷歌搜索的结果让人感觉过头了。

许多人使用 Gopher 就是因为这个原因:它的规模小到可以让小众的兴趣很容易找到。然而,Gopher 是一个旧的协议,它对编程、网络和浏览做出了一些假设,但这些假设已经不再适用了。 Gemini 的目标是将最好的网络带入一种类似于 Gopher 但易于编程的格式。一个简单的 Gemini 浏览器可以用几百行代码写成,并且有一个非常好的浏览器用 1600 行左右写成。这对于程序员、学生和极简主义者来说都是一个强大的功能。

如何浏览 Gemini

就像早期的网络一样,Gemini 的规模很小,所以有一个列表列出了运行 Gemini 网站的已知服务器。就像浏览 HTTP 站点需要一个网页浏览器一样,访问 Gemini 站点也需要一个 Gemini 浏览器。在 Gemini 网站上列出了有几个可用的浏览器。

最简单的一个是 AV-98 客户端。它是用 Python 编写的,在终端中运行。要想试试的话,请下载它:

$ git clone https://tildegit.org/solderpunk/AV-98.git

进入下载目录,运行 AV-98:

$ cd AV-98.git
$ python3 ./main.py

客户端是一个交互式的提示符。它有有限的几个命令,主要的命令是简单的 go,后面跟着一个 Gemini 服务器地址。在已知的 Gemini 服务器列表中选择一个看起来很有趣的服务器,然后尝试访问它:

AV-98> go gemini://example.club

Welcome to the example.club Gemini server!

Here are some folders of ASCII art:

[1] Penguins
[2] Wildebeests
[3] Demons

导航是按照编号的链接来进行的。例如,要进入 Penguins 目录,输入 1 然后按回车键:

AV-98> 1

[1] Gentoo
[2] Emperor
[3] Little Blue

要返回,输入 back 并按回车键:

AV-98> back

更多命令,请输入 help

用 Gemini 作为你的 web 替代

Gemini 协议非常简单,初级和中级程序员都可以为其编写客户端,而且它是在互联网上分享内容的一种简单快捷的方式。虽然万维网的无处不在对广泛传播是有利的,但总有替代方案的空间。看看 Gemini,发现更安静、更简单的互联网的新角落。


via: https://opensource.com/article/20/10/gemini-internet-protocol

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本速成教程向你展示了在 Ubuntu 和 Debian Linux 上安装 Yarn 包管理器的官方方法。你还将学习到一些基本的 Yarn 命令以及彻底删除 Yarn 的步骤。

Yarn 是 Facebook 开发的开源 JavaScript 包管理器。它是流行的 npm 包管理器的一个替代品,或者应该说是改进。 Facebook 开发团队 创建 Yarn 是为了克服 npm 的缺点。 Facebook 声称 Yarn 比 npm 更快、更可靠、更安全。

与 npm 一样,Yarn 为你提供一种自动安装、更新、配置和删除从全局注册库中检索到的程序包的方法。

Yarn 的优点是它更快,因为它可以缓存已下载的每个包,所以无需再次下载。它还将操作并行化,以最大化资源利用率。在执行每个已安装的包代码之前,Yarn 还使用 校验和来验证完整性。 Yarn 还保证可以在一个系统上运行的安装,在任何其他系统上都会以完全相同地方式工作。

如果你正 在 Ubuntu 上使用 node.js,那么你的系统上可能已经安装了 npm。在这种情况下,你可以使用 npm 通过以下方式全局安装 Yarn:

sudo npm install yarn -g

不过,我推荐使用官方方式在 Ubuntu/Debian 上安装 Yarn。

在 Ubuntu 和 Debian 上安装 Yarn [官方方式]

这里提到的说明应该适用于所有版本的 Ubuntu,例如 Ubuntu 18.04、16.04 等。同样的一组说明也适用于 Debian 和其他基于 Debian 的发行版。

由于本教程使用 curl 来添加 Yarn 项目的 GPG 密钥,所以最好验证一下你是否已经安装了 curl

sudo apt install curl

如果 curl 尚未安装,则上面的命令将安装它。既然有了 curl,你就可以使用它以如下方式添加 Yarn 项目的 GPG 密钥:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

在此之后,将存储库添加到源列表中,以便将来可以轻松地升级 Yarn 包,并进行其余系统更新:

sudo sh -c 'echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list'

你现在可以继续了。更新 Ubuntu 或 Debian 系统,以刷新可用软件包列表,然后安装 Yarn:

sudo apt update
sudo apt install yarn

这将一起安装 Yarn 和 node.js。该过程完成后,请验证是否已成功安装 Yarn。 你可以通过检查 Yarn 版本来做到这一点。

yarn --version

对我来说,它显示了这样的输出:

yarn --version
1.12.3

这意味着我的系统上安装了 Yarn 版本 1.12.3。

使用 Yarn

我假设你对 JavaScript 编程以及依赖项的工作原理有一些基本的了解。我在这里不做详细介绍。我将向你展示一些基本的 Yarn 命令,这些命令将帮助你入门。

使用 Yarn 创建一个新项目

npm 一样,Yarn 也可以使用 package.json 文件。在这里添加依赖项。所有依赖包都缓存在项目根目录下的 node_modules 目录中。

在项目的根目录中,运行以下命令以生成新的 package.json 文件:

它会问你一些问题。你可以按回车键跳过或使用默认值。

yarn init
yarn init v1.12.3
question name (test_yarn): test_yarn_proect
question version (1.0.0): 0.1
question description: Test Yarn
question entry point (index.js):
question repository url:
question author: abhishek
question license (MIT):
question private:
success Saved package.json
Done in 82.42s.

这样,你就得到了一个如下的 package.json 文件:

{
 "name": "test_yarn_proect",
 "version": "0.1",
 "description": "Test Yarn",
 "main": "index.js",
 "author": "abhishek",
 "license": "MIT"
}

现在你有了 package.json,你可以手动编辑它以添加或删除包依赖项,也可以使用 Yarn 命令(首选)。

使用 Yarn 添加依赖项

你可以通过以下方式添加对特定包的依赖关系:

yarn add <包名>

例如,如果你想在项目中使用 Lodash,则可以使用 Yarn 添加它,如下所示:

yarn add lodash
yarn add v1.12.3
info No lockfile found.
[1/4] Resolving packages…
[2/4] Fetching packages…
[3/4] Linking dependencies…
[4/4] Building fresh packages…
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ [email protected]
info All dependencies
└─ [email protected]
Done in 2.67s.

你可以看到,此依赖项已自动添加到 package.json 文件中:

{
 "name": "test_yarn_proect",
 "version": "0.1",
 "description": "Test Yarn",
 "main": "index.js",
 "author": "abhishek",
 "license": "MIT",
 "dependencies": {
 "lodash": "^4.17.11"
 }
}

默认情况下,Yarn 将在依赖项中添加最新版本的包。如果要使用特定版本,可以在添加时指定。

yarn add package@version-or-tag

像往常一样,你也可以手动更新 package.json 文件。

使用 Yarn 升级依赖项

你可以使用以下命令将特定依赖项升级到其最新版本:

yarn upgrade <包名>

它将查看所​​涉及的包是否具有较新的版本,并且会相应地对其进行更新。

你还可以通过以下方式更改已添加的依赖项的版本:

yarn upgrade package_name@version_or_tag

你还可以使用一个命令将项目的所有依赖项升级到它们的最新版本:

yarn upgrade

它将检查所有依赖项的版本,如果有任何较新的版本,则会更新它们。

使用 Yarn 删除依赖项

你可以通过以下方式从项目的依赖项中删除包:

yarn remove <包名>

安装所有项目依赖项

如果对你 project.json 文件进行了任何更改,则应该运行:

yarn

或者,

yarn install

一次安装所有依赖项。

如何从 Ubuntu 或 Debian 中删除 Yarn

我将通过介绍从系统中删除 Yarn 的步骤来完成本教程,如果你使用上述步骤安装 Yarn 的话。如果你意识到不再需要 Yarn 了,则可以将它删除。

使用以下命令删除 Yarn 及其依赖项。

sudo apt purge yarn

你也应该从源列表中把存储库信息一并删除掉:

sudo rm /etc/apt/sources.list.d/yarn.list

下一步删除已添加到受信任密钥的 GPG 密钥是可选的。但要做到这一点,你需要知道密钥。你可以使用 apt-key 命令获得它:

Warning: apt-key output should not be parsed (stdout is not a terminal) pub   rsa4096 2016-10-05 [SC]       72EC F46A 56B4 AD39 C907  BBB7 1646 B01B 86E5 0310 uid           [ unknown] Yarn Packaging [email protected] sub   rsa4096 2016-10-05 [E] sub   rsa4096 2019-01-02 [S] [expires: 2020-02-02]

这里的密钥是以 pub 开始的行中 GPG 密钥指纹的最后 8 个字符。

因此,对于我来说,密钥是 86E50310,我将使用以下命令将其删除:

sudo apt-key del 86E50310

你会在输出中看到 OK,并且 Yarn 包的 GPG 密钥将从系统信任的 GPG 密钥列表中删除。

我希望本教程可以帮助你在 Ubuntu、Debian、Linux Mint、 elementary OS 等操作系统上安装 Yarn。 我提供了一些基本的 Yarn 命令,以帮助你入门,并完成了从系统中删除 Yarn 的完整步骤。

希望你喜欢本教程,如果有任何疑问或建议,请随时在下面留言。


via: https://itsfoss.com/install-yarn-ubuntu

作者:Abhishek Prakash 选题:lujun9972 译者:gxlct008 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

近场通信(NFC)和低功耗蓝牙(BLE)是适合企业不同用途的低功耗无线技术。

在低功率、相对短距离连接的众多选择中,有两种技术脱颖而出——近场通信(NFC)和低功耗蓝牙(BLE)。两者都具有相对低廉的部署成本且易于使用。

NFC 作为许多现代智能卡片的背后技术而为大众所熟知。NFC 芯片必须十分接近(在几厘米内)读卡器来实现连接,但这是它主要企业用例(安全性和访问控制)的一个优势。

BLE 是主要蓝牙标准的低功耗衍生品,以较低的潜在吞吐量换来了能耗的显著降低,从而能够适应更广泛的潜在用例。

接下来,我们将对每种技术及其主要用例进行更深入的描述。

NFC 的未来

NFC 在近距离接触范围内工作(设备间必须靠近到几厘米范围内来进行连接),一个可读的无源 NFC “标签”根本不需要任何独立电源,它会从读卡器的信号中汲取能量,工作频率约为 13.5MHz,在主动读取芯片时需要 100-700µA 的电量。

“短距离实际上是它的优势。”Gartner 研究高级总监兼分析师说, “NFC 的一大优点是它不仅仅是无线电,还内置了一个庞大的安全协议。”也就是说,潜在的不良行为者必须非常接近——使用专用设备、在几米的范围内——才能检测到正在发生的 NFC 连接。NFC 还可以施行在 SSL 技术上面一层以提高安全性。

考虑到 NFC 本就起源于非接触式支付技术,这不足为奇。它在这一领域的根基在于对零售商的吸引力,零售商可以利用 NFC 让客户在购买商品前获取相关的信息、获得优惠券或者向店员寻求帮助,只需将手机接触到 NFC 热点即可。

尽管 NFC 只能在一个很近的范围内使用,这限制了使用 NFC 技术用例场景,但它不仅仅是为了开门和买一杯拿铁。NFC 可以用于引导连接,便于设备间轻松快速的配对,因此用户只需在会议室中将手机贴近配备好的投影仪,即可创建一个 NFC 连接,并验证智能手机是否是一个可连接的授权设备,并进行演示。演示文稿或者视频数据本身不会通过 NFC 来传输,但是 NFC 握手可作为另外的无线协议(例如 Wi-Fi 网络或者任何其他更高带宽可以传输数据的网络)间的验证,从而无需用户登录。

BLE 的特点

相较之下,BLE 的工作距离要远的多(长达几十米),其最大带宽 :1 Mbit/s 约为 NFC 连接的两倍。它是著名的蓝牙技术的产物,相较于主线标准的更低功耗,它为机器到机器的连接做了优化。在连接两端的耗电量均小于 15 mA,实用范围约为 10米,可通过 AES 加密保护连接。

然而,根据 Forrester 首席分析师 Andre Kindness 的说法,它远非 NFC 的替代品。

他说:“从信息传递角度来看, [NFC] 比 BLE 快得多。”BLE 通常需要几分之一秒或更长时间的验证并安全连接,而 NFC 几乎在瞬间完成连接。

不过,根据 IDC 高级研究分析师 Patrick Filkins 的说法,相较于 NFC,BLE 由于范围更广而有着更多的通用性。

他说:“我认为 BLE 比较适合企业”。而类似于资产追踪、室内导航和目标广告的用例只是冰山一角。

对于企业,结果是相当直接的——NFC 用例大多与公司使用蓝牙的用例是分开的,对于少有的可以选择的重叠,相对的优势和劣势显而易见。NFC 距离很短、价格便宜、可即时连接以及数据转换率较低。BLE 的工作距离更远、传输速率更高,成本也更高,连接时还需要一点时间来进行“握手”。


via: https://www.networkworld.com/article/3574932/nfc-vs-bluetooth-le-when-to-use-which.html

作者:Jon Gold 选题:lujun9972 译者:chenmu-kk 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出