2021年3月

美国佛州一女子在海滩上遛波士顿动力开发的机器狗

这只机器狗由波士顿动力学工程公司设计,被命名为“大狗”,此前被用在医院、犯罪现场、火箭测试等地方。但自从去年机器狗以每只 7.5 万美元(约合人民币 48.8万)出售后,它成了家庭宠物。

“大狗”机器人的内部安装有一台计算机,可根据环境的变化调整行进姿态。“大狗”既可以自行沿着预先设定的简单路线行进,也可以进行远程控制。大狗机器人被称为“当前世界上适应崎岖地形的最先进的机器人”。

到底是狗需要溜,还是人需要溜?或许将来不久,我们身边会有很多智能机器人。

比特币触及 6 万美元关口再创新高

受益于金融市场的乐观情绪和美国总统拜登签署了 1.9 万亿美元的刺激法案,比特币从 2 月底创下前一个峰值后的暴跌中反弹。比特币 24 小时上涨约 6%,而一年前的今天才约 3850 美元,累计上涨了约 1400%。

已经对比特币的不断破关感到了麻木,现在整个加密货币市场一片燥热,当然,也不乏爆仓者。

Linux 内核发现三个从 2006 就存在的本地提权漏洞

这三个漏洞,已经 存在了 15 年 了,从它们一开始被写出来就没有被发现。它们位于用于访问共享数据存储设施的 iSCSI 模块中,可允许任何拥有用户账户的人获得 root 权限。所有的 Linux 发行版都存在这些漏洞,即便是该驱动程序默认情况下没有被加载,也可以由用户加载它从而被利用。最新的内核都已经修复了该问题,而已经过了支持期的内核则不会收到补丁。

所以,“群众的眼睛是雪亮的”理论,在面对 Linux 内核日益暴涨的代码量,有些力不从心了。

抵制在 Git 中添加一些会增加管理难度的东西的冲动;这里有替代方法。

 title=

有权访问源代码使对安全性的分析以及应用程序的安全成为可能。但是,如果没有人真正看过代码,问题就不会被发现,即使人们主动地看代码,通常也要看很多东西。幸运的是,GitHub 拥有一个活跃的安全团队,最近,他们 发现了已提交到多个 Git 仓库中的特洛伊木马病毒,甚至仓库的所有者也偷偷溜走了。尽管我们无法控制其他人如何管理自己的仓库,但我们可以从他们的错误中吸取教训。为此,本文回顾了将文件添加到自己的仓库中的一些最佳实践。

了解你的仓库

 title=

这对于安全的 Git 仓库来可以说是头号规则。作为项目维护者,无论是你自己创建的还是采用别人的,你的工作是了解自己仓库中的内容。你可能无法记住代码库中每一个文件,但是你需要了解你所管理的内容的基本组成部分。如果在几十个合并后出现一个游离的文件,你会很容易地发现它,因为你不知道它的用途,你需要检查它来刷新你的记忆。发生这种情况时,请查看该文件,并确保准确了解为什么它是必要的。

禁止二进制大文件

 title=

Git 是为文本而生的,无论是用纯文本编写的 C 或 Python 还是 Java 文本,亦或是 JSON、YAML、XML、Markdown、HTML 或类似的文本。Git 对于二进制文件不是很理想。

两者之间的区别是:

$ cat hello.txt
This is plain text.
It's readable by humans and machines alike.
Git knows how to version this.

$ git diff hello.txt
diff --git a/hello.txt b/hello.txt
index f227cc3..0d85b44 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,3 @@
 This is plain text.
+It's readable by humans and machines alike.
 Git knows how to version this.

$ git diff pixel.png
diff --git a/pixel.png b/pixel.png
index 563235a..7aab7bc 100644
Binary files a/pixel.png and b/pixel.png differ

$ cat pixel.png
�PNG
▒
IHDR7n�$gAMA��
              �abKGD݊�tIME�

                          -2R��
IDA�c`�!�3%tEXtdate:create2020-06-11T11:45:04+12:00��r.%tEXtdate:modify2020-06-11T11:45:04+12:00��ʒIEND�B`�

二进制文件中的数据不能像纯文本一样被解析,因此,如果二进制文件发生任何更改,则必须重写整个内容。一个版本与另一个版本之间唯一的区别就是全部不同,这会快速增加仓库大小。

更糟糕的是,Git 仓库维护者无法合理地审计二进制数据。这违反了头号规则:应该对仓库的内容了如指掌。

除了常用的 POSIX 工具之外,你还可以使用 git diff 检测二进制文件。当你尝试使用 --numstat 选项来比较二进制文件时,Git 返回空结果:

$ git diff --numstat /dev/null pixel.png | tee
-     -   /dev/null => pixel.png
$ git diff --numstat /dev/null file.txt | tee
5788  0   /dev/null => list.txt

如果你正在考虑将二进制大文件(BLOB)提交到仓库,请停下来先思考一下。如果它是二进制文件,那它是由什么生成的。是否有充分的理由不在构建时生成它们,而是将它们提交到仓库?如果你认为提交二进制数据是有意义的,请确保在 README 文件或类似文件中指明二进制文件的位置、为什么是二进制文件的原因以及更新它们的协议是什么。必须谨慎对其更新,因为你每提交一个二进制大文件的变化,它的存储空间实际上都会加倍。

让第三方库留在第三方

第三方库也不例外。尽管它是开源的众多优点之一,你可以不受限制地重用和重新分发不是你编写的代码,但是有很多充分的理由不把第三方库存储在你自己的仓库中。首先,除非你自己检查了所有代码(以及将来的合并),否则你不能为第三方完全担保。其次,当你将第三方库复制到你的 Git 仓库中时,会将焦点从真正的上游源代码中分离出来。从技术上讲,对库有信心的人只对该库的主副本有把握,而不是对随机仓库的副本有把握。如果你需要锁定特定版本的库,请给开发者提供一个合理的项目所需的发布 URL,或者使用 Git 子模块

抵制盲目的 git add

 title=

如果你的项目已编译,请抵制住使用 git add . 的冲动(其中 . 是当前目录或特定文件夹的路径),因为这是一种添加任何新东西的简单方法。如果你不是手动编译项目,而是使用 IDE 为你管理项目,这一点尤其重要。用 IDE 管理项目时,跟踪添加到仓库中的内容会非常困难,因此仅添加你实际编写的内容非常重要,而不是添加项目文件夹中出现的任何新对象。

如果你使用了 git add .,请在推送之前检查暂存区里的内容。如果在运行 make clean 或等效命令后,执行 git status 时在项目文件夹中看到一个陌生的对象,请找出它的来源,以及为什么仍然在项目的目录中。这是一种罕见的构建工件,不会在编译期间重新生成,因此在提交前请三思。

使用 Git ignore

 title=

许多为程序员打造的便利也非常杂乱。任何项目的典型项目目录,无论是编程的,还是艺术的或其他的,到处都是隐藏的文件、元数据和遗留的工件。你可以尝试忽略这些对象,但是 git status 中的提示越多,你错过某件事的可能性就越大。

你可以通过维护一个良好的 gitignore 文件来为你过滤掉这种噪音。因为这是使用 Git 的用户的共同要求,所以有一些入门级的 gitignore 文件。Github.com/github/gitignore 提供了几个专门创建的 gitignore 文件,你可以下载这些文件并将其放置到自己的项目中,Gitlab.com 在几年前就将gitignore 模板集成到了仓库创建工作流程中。使用这些模板来帮助你为项目创建适合的 gitignore 策略并遵守它。

查看合并请求

 title=

当你通过电子邮件收到一个合并/拉取请求或补丁文件时,不要只是为了确保它能正常工作而进行测试。你的工作是阅读进入代码库的新代码,并了解其是如何产生结果的。如果你不同意这个实现,或者更糟的是,你不理解这个实现,请向提交该实现的人发送消息,并要求其进行说明。质疑那些希望成为版本库永久成员的代码并不是一种社交失误,但如果你不知道你把什么合并到用户使用的代码中,那就是违反了你和用户之间的社交契约。

Git 责任

社区致力于开源软件良好的安全性。不要鼓励你的仓库中不良的 Git 实践,也不要忽视你克隆的仓库中的安全威胁。Git 功能强大,但它仍然只是一个计算机程序,因此要以人为本,确保每个人的安全。


via: https://opensource.com/article/20/7/git-repos-best-practices

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

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

就我记忆所及,我一直是 Ubuntu 的用户。我曾经转向过其他发行版,但最终还是一次次回到 Ubuntu。但最近,我开始使用 openSUSE 来尝试一些非 Debian 的东西。

随着我对 openSUSE 的不断探索,我不断发现 SUSE 中略有不同的东西,并打算在教程中介绍它们。

第一篇我写的是更新 openSUSE 系统。有两种方法可以做到:

  • 使用终端(适用于 openSUSE 桌面和服务器)
  • 使用图形工具(适用于 openSUSE 桌面)

通过命令行更新 openSUSE

更新 openSUSE 的最简单方法是使用 zypper 命令。它提供了补丁和更新管理的全部功能。它可以解决文件冲突和依赖性问题。更新也包括 Linux 内核。

如果你正在使用 openSUSE Leap,请使用这个命令:

sudo zypper update

你也可以用 up 代替 update,但我觉得 update 更容易记住。

如果你正在使用 openSUSE Tumbleweed,请使用 dist-upgrade 或者 dup(简称)。Tumbleweed 是滚动发行版,因此建议使用 dist-upgrade 选项。

sudo zypper dist-upgrade

它将显示要升级、删除或安装的软件包列表。

如果你的系统需要重启,你会得到通知。

如果你只是想刷新仓库(像 sudo apt update 一样),你可以使用这个命令:

sudo zypper refresh

如果你想列出可用的更新,也可以这样做:

sudo zypper list-updates

以图形方式更新 openSUSE

如果你使用 openSUSE 作为桌面,你可以选择使用 GUI 工具来安装更新。这个工具可能会根据 你使用的桌面环境 而改变。

例如,KDE 有自己的软件中心,叫做 “Discover”。你可以用它来搜索和安装新的应用。你也可以用它来安装系统更新。

事实上,KDE 会在通知区通知你可用的系统更新。你必须打开 Discover,因为点击通知不会自动进入 Discover。

如果你觉得这很烦人,你可以使用这些命令禁用它:

sudo zypper remove plasma5-pk-updates
sudo zypper addlock plasma5-pk-updates

不过我不推荐。最好是获取可用的更新通知。

还有一个 YAST 软件管理 GUI 工具,你可以用它来对软件包管理进行更精细的控制。

就是这些了。这是一篇简短的文章。在下一篇 SUSE 教程中,我将通过实例向大家展示一些常用的 zypper 命令。敬请期待。


via: https://itsfoss.com/update-opensuse/

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

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

吴晟当选首位华人 Apache 软件基金会董事

在本周举行的 Apache 软件基金会(ASF)年度会员大会上,吴晟当选为 ASF 董事会成员,这是首位华人担任的 ASF 董事。此外,还有 7 位来自中国的新成员也接到了正式成员邀请。至此 ASF 中国区成员预计将达到 28 位,而全球仅 700 余位正式成员。

吴晟所创建并担任项目 VP 的分布式程序监测软件 SkyWalking 是国内唯一一款由个人开源成为 Apache 基金会的顶级开源项目。除此之外,其本人还是 Apache ShardingSphere 项目联合创始人,并且担任 Apache 基金会旗下多个顶级开源项目 PMC 成员与孵化器指导者。

让我们恭喜吴晟!恭喜 Apache 基金会!

欧洲最大云服务公司 OVH 机房着火,350 万家网站下线

OVH 位于法国的机房前日发生严重火灾,有一个数据中心被完全烧毁、部分客户数据完全丢失且无法恢复。这场灾难已导致超过 350 万个网站下线,而这一切发生在 OVH 启动了 IPO 计划两天之后。OVH 表示将在接下来的 1-2 周对服务器进行紧急修复,完全恢复时间待定。

看来没有多地备份,都放在一个数据中心有点风险啊,不过这么大规模的失火也实属罕见,预见 OVH 的 IPO 不会很顺利。

佳士得以近 7000 万美元拍卖出一枚 NFT 加密艺术品

3 月 11 日,世界知名艺术品拍卖行佳士得挂出的艺术家 Beeple 的数字化艺术作品《The First 5000 Days》投标截止,最终显示的价格为 6934.625 万美元。此次网上拍卖成为了加密艺术品发展的里程碑。

2007 年 5 月 1 日,Beeple 开始每天创作艺术作品,历时 13 年,这幅拍品汇集了该艺术家在前 5000 天创作的画作。

艺术品的市场一般人不懂,加密艺术品就更不是一般人能理解的了。能拍卖到如此令人瞠目结舌的价格,其背后揭示了加密艺术品市场的潜力和火爆!

到底什么是 WebAssembly?

WebAssembly,也叫 Wasm,是一种为 Web 优化的代码格式和 API(应用编程接口),它可以大大提高网站的性能和能力。WebAssembly 的 1.0 版本于 2017 年发布,并于 2019 年成为 W3C 官方标准。

该标准得到了所有主流浏览器供应商的积极支持,原因显而易见:官方列出的 “浏览器内部”用例 中提到了,其中包括视频编辑、3D 游戏、虚拟和增强现实、p2p 服务和科学模拟。除了让浏览器的功能比JavaScript 强大得多,该标准甚至可以延长网站的寿命:例如,正是 WebAssembly 为 互联网档案馆的 Flash 动画和游戏 提供了持续的支持。

不过,WebAssembly 并不只用于浏览器,目前它还被用于移动和基于边缘环境的 Cloudflare Workers 等产品中。

WebAssembly 如何工作?

.wasm 格式的文件包含低级二进制指令(字节码),可由使用通用栈的虚拟机以“接近 CPU 原生速度”执行。这些代码被打包成模块(可以被浏览器直接执行的对象),每个模块可以被一个网页多次实例化。模块内部定义的函数被列在一个专用数组中,或称为 Table ,相应的数据被包含在另一个结构中,称为 缓存数组 arraybuffer 。开发者可以通过 Javascript WebAssembly.memory() 的调用,为 .wasm 代码显式分配内存。

.wasm 格式也有纯文本版本,它可以大大简化学习和调试。然而,WebAssembly 并不是真的要供人直接使用。从技术上讲,.wasm 只是一个与浏览器兼容的编译目标:一种用高级编程语言编写的软件编译器可以自动翻译的代码格式。

这种选择正是使开发人员能够使用数十亿人熟悉的语言(C/C++、Python、Go、Rust 等)直接为用户界面进行编程的方式,但以前浏览器无法对其进行有效利用。更妙的是,至少在理论上程序员可以利用它们,无需直接查看 WebAssembly 代码,也无需担心物理 CPU 实际运行他们的代码(因为目标是一个虚拟机)。

但是我们已经有了 JavaScript,我们真的需要 WebAssembly 吗?

是的,有几个原因。首先,作为二进制指令,.wasm 文件比同等功能的 JavaScript 文件小得多,下载速度也快得多。最重要的是,Javascript 文件必须在浏览器将其转换为其内部虚拟机可用的字节码之前进行完全解析和验证。

而 .wasm 文件则可以一次性验证和编译,从而使“流式编译”成为可能:浏览器在开始下载它们的那一刻就可以开始编译和执行它们,就像串流电影一样。

这就是说,并不是所有可以想到的 WebAssembly 应用都肯定会比由专业程序员手动优化的等效 JavaScript 应用更快或更小。例如,如果一些 .wasm 需要包含 JavaScript 不需要的库,这种情况可能会发生。

WebAssembly 是否会让 JavaScript 过时?

一句话:不会。暂时不会,至少在浏览器内不会。WebAssembly 模块仍然需要 JavaScript,因为在设计上它们不能访问文档对象模型 (DOM)—— 主要用于修改网页的 API。此外,.wasm 代码不能进行系统调用或读取浏览器的内存。WebAssembly 只能在沙箱中运行,一般来说,它能与外界的交互甚至比 JavaScript 更少,而且只能通过 JavaScript 接口进行。

因此,至少在不久的将来 .wasm 模块将只是通过 JavaScript 提供那些如果用 JavaScript 语言编写会消耗更多带宽、内存或 CPU 时间的部分。

Web 浏览器如何运行 WebAssembly?

一般来说,浏览器至少需要两块来处理动态应用:运行应用代码的虚拟机(VM),以及可以同时修改浏览器行为和网页显示的 API。

现代浏览器内部的虚拟机通过以下方式同时支持 JavaScript 和 WebAssembly:

  1. 浏览器下载一个用 HTML 标记语言编写的网页,然后进行渲染
  2. 如果该 HTML 调用 JavaScript 代码,浏览器的虚拟机就会执行该代码。但是...
  3. 如果 JavaScript 代码中包含了 WebAssembly 模块的实例,那么就按照上面的描述获取该实例,然后根据需要通过 JavaScript 的 WebAssembly API 来使用该实例
  4. 当 WebAssembly 代码产生的东西将修改 DOM(即“宿主”网页)的结构,JavaScript 代码就会接收到,并继续进行实际的修改。

我如何才能创建可用的 WebAssembly 代码?

越来越多的编程语言社区支持直接编译到 Wasm,我们建议从 webassembly.org入门指南 开始,这取决于你使用什么语言。请注意,并不是所有的编程语言都有相同水平的 Wasm 支持,因此你的工作量可能会有所不同。

我们计划在未来几个月内发布一系列文章,提供更多关于 WebAssembly 的信息。要自己开始使用它,你可以报名参加 Linux 基金会的免费 WebAssembly 介绍在线培训课程。

这篇WebAssembly 介绍首次发布在 Linux Foundation – Training


via: https://www.linux.com/news/an-introduction-to-webassembly/

作者:Dan Brown 选题:lujun9972 译者:geekpi 校对:wxy

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

黑客入侵了数以千计的监控探头,特斯拉仓库也在列

黑客入侵了硅谷创业公司 Verkada 收集的监控探头数据库,访问了超过 15 万探头的实时视频源,而这些探头安装在医院、企业、监狱、警察局和学校内。包括特斯拉、Cloudflare 在内的知名企业的监控探头遭到泄露。

黑客演示了特斯拉位于上海的仓库内的监控探头视频,他们表示访问了 222 个特斯拉工厂和仓库探头。黑客此举是为了展示监控的无处不在,以及监控系统很容易遭到入侵。

身处摄像头丛林,却不知道谁在看着你。

IBM 开发 AI 发明新的抗生素

抗生素耐药“超级细菌”需要新的抗生素来对抗,但开发它们需要时间。IBM 研究团队创建了一个人工智能系统,它在探索整个分子配置的可能性空间方面速度更快。在 48 天的时间里,AI 系统识别、合成和实验了 20 种新的抗生素候选肽。其中有两种特别被证明是特别有前途。

如果说科技向善,这才是科技应该用的地方。

2017 年的龙芯 2K1000 已获得新的 Linux 内核补丁

虽然已被更先进的龙芯 3 号所取代,但国产 MIPS64 芯片制造商龙芯在 2017 年发布的 2K1000 芯片,还是于近日获得了最新的 Linux 内核补丁。最新补丁中,为该芯片提供了基础支持(暂未包含 SMP 支持 / 其它外围设备的启用),以及引入了 700 多行新代码。

国产硬件的开源生态支持,无论是厂商资源,还是社区力量,都显得不足。