在自己的电脑上实验容器和荚

Summary: 通过这篇新的可下载指南开始探索容器技术的要领。

我还是觉得全网普遍没有翻译的词，就不要翻译。

就像把 'Google Chrome' 译成 '谷歌铬'，把 'Opera Browser' 译成 '歌剧浏览器'。

想到了《攻夫》里的一个场景。

琛哥：打他

星爷：打他呀

琛哥：打她妈的

星爷：打啦

琛哥：打呀

星爷：打他呀

琛哥：打她妈的

星爷：你到底想我打他本人还是打他妈啊？你搞得我好乱啊

我认为是如果是品牌名、产品名，如果没有官方译名，应该保留英文。<br />
比如 Docker 、Kubernetes 我就不翻译，但是其内的术语，无论是 container、pod 我觉得应该翻译——否则的话，凭什么 container 要被翻译成容器，pod 就不该被翻译？标准是什么？

没什么标准，随大流。<br />
几乎所有文章都在用 Pod 时，一小撮人译成 '荚'，一小撮人译成 '吊舱'，并不能形成共识，只是徒增混乱。

通过这篇新的可下载指南开始探索容器技术的要领。

# 在自己的电脑上实验容器和荚

>
> 通过这篇新的可下载指南开始探索容器技术的要领。
>
>
>

<img src="content_image/album_202205_14_102808n8u3pkff174431v7.jpg" alt="" title="">

在电视剧 《<ruby> 太空堡垒卡拉狄加 <rt>  Battlestar Galactica </rt></ruby>》中，这艘名副其实的巨型飞船其实并没有做什么。它是船员们坚定的庇护所，是战略和协调的中心联络点，也是资源管理的安全场所。而 <ruby> 卡布里安毒蛇号 <rt>  Caprican Vipers </rt></ruby> 这种单人的独立太空船，出去对付邪恶的<ruby> 赛昂人 <rt>  Cylons </rt></ruby>和其他太空中的危险。他们也从不只派一两艘毒蛇号出去。他们派了很多。这许许多多的冗余的飞船具有基本相同的能力和目的，但由于它们非常灵活和数量众多，它们总是能够处理每个星期都在威胁战星的任何问题。

如果你认为你感到这像是一个正在发展中的比喻，那么你是对的。现代的“云”大而无当，是分布在很远距离的大量基础设施的集合体。它具有强大的能力，但如果你将其视为普通计算机，就会浪费了它的大部分能力。当你想要处理来自数百万个输入源的大量数据时，把你的解决方案（无论它是采用应用、网站、数据库、服务器还是其他形式）打包起来，并发送该解决方案的微小镜像来处理数据集群，实际上是更有效的。当然，这些都是 “<ruby> 容器 <rt>  container </rt></ruby>”，它们是云的劳动力。它们是你发送来处理服务请求的小型解决方案工厂，并且由于你可以根据任何给定时间传入的请求生成所需要的数量，因此理论上它们是取之不尽的。

### 在家里使用容器

如果你没有大量的传入请求需要处理，你可能会想知道容器给你带来什么好处。不过，在个人电脑上使用容器确实有其用途。

#### 容器作为虚拟环境

通过 Podman、LXC 和 Docker 等工具，你可以像以往运行虚拟机一样运行容器。不过，与虚拟机不同，容器没有因模拟固件和硬件而产生的开销。

你可以从公共仓库下载容器镜像，启动一个最小化的 Linux 环境，并将其作为命令或开发的测试场所。例如，假设你想试试你在 Slackware Linux 上构建的一个应用。首先，在仓库中搜索一个合适的镜像：

```
$ podman search slackware

```

然后选择一个镜像，作为你的容器的基础：

```
$ podman run -it --name slackware vbatts/slackware
sh-4.3# grep -i ^NAME\= /etc/os-release
NAME=Slackware

```

### 在工作中使用容器

当然，容器不只是个精简的虚拟机。它们可以是针对为非常具体的需求提供的特定解决方案。如果你不熟悉容器，那么新系统管理员最常见的入门仪式之一可能会有所帮助：启动你的第一个 Web 服务器，但是在容器中。

首先，获取一个镜像。你可以使用 `podman search` 命令来搜索你喜欢的发行版，或者直接搜索你喜欢的 httpd 服务器。当使用容器时，我倾向于信任我在裸机上使用的相同发行版。

当你你找到一个镜像作为你的容器的基础，你就可以运行你的镜像。然而，正如这个术语所暗示的，容器是*封起来的*，所以如果你只是启动一个容器，你将无法访问标准的 HTTP 端口。你可以使用 `-p` 选项将一个容器端口映射到一个标准的网络端口：

```
$ podman run -it -p 8080:80 docker.io/fedora/apache:latest

```

现在看看你本地主机上的 8080 端口：

```
$ curl localhost:8080
Apache

```

成功了。

### 了解更多

容器拥有比模仿虚拟机更多的潜力。你可以将它们分组在 “<ruby> 荚 <rt>  pod </rt></ruby>” 中，构建复杂应用的自动部署，启动冗余服务以满足高需求等等。如果你刚刚开始使用容器，你可以 [下载我们最新的电子书](https://opensource.com/downloads/containers-pods-101-ebook) 来学习该技术，甚至学习创建一个 “<ruby> 荚 <rt>  pod </rt></ruby>”，以便你可以运行 WordPress 和数据库。

>
> **[下载我们最新的电子书](https://opensource.com/downloads/containers-pods-101-ebook)**
>
>
>

（LCTT 译注：容器环境中使用的 “Pod” 一词，我以前根据容器相关术语多用航海领域名词比喻来将其译做“吊舱”，但也有同学表示了不同意见。根据对 Kubernetes [文档](https://kubernetes.io/docs/concepts/workloads/pods/#:~:text=A%20Pod%20(as%20in%20a,run%20in%20a%20shared%20context.)，这个词来自对<ruby> 鲸鱼荚 <rt>  pod of whales </rt></ruby>、<ruby> 豌豆荚 <rt>  pea pod </rt></ruby>的比喻，所以我觉得采用“荚”的翻译比较合适。—— wxy）

---

via: <https://opensource.com/article/22/5/containers-pods-101-ebook>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


WebAssembly 安全的现在和未来

# WebAssembly 安全的现在和未来

### 简介

正如我们 [最近解释的](https://training.linuxfoundation.org/announcements/an-introduction-to-webassembly/)，WebAssembly 是一种用于以任何语言编写的二进制格式的软件，旨在最终无需更改就能在任意平台运行。WebAssembly 的第一个应用是在 Web 浏览器中，以使网站更快、更具交互性。WebAssembly 有计划推向 Web 之外，从各种服务器到物联网（IoT），其创造了很多机会，但也存在很多安全问题。这篇文章是对这些问题和 WebAssembly 安全模型的一篇介绍性概述。

### WebAssembly 跟 JavaScript 很像

在 Web 浏览器内部，WebAssembly 模块由执行 JavaScript 代码的同一 <ruby> 虚拟机 <rt>  VM </rt></ruby> 管理。因此，WebAssembly 和 JavaScript 一样，造成的危害也是相同的，只是效率更高，更不易被察觉。由于 JavaScript 是纯文本，运行前需要浏览器编译，而 WebAssembly 是一种可立即运行的二进制格式，运行速度更快，也更难被扫描出（即使使用杀毒软件）其中的恶意指令。

WebAssembly 的这种 “代码混淆” 效果已经被用来弹出不请自来的广告，或打开假的 “技术支持” 窗口，要求提供敏感数据。另一个把戏则是自动将浏览器重定向到包含真正危险的恶意软件的 “落地” 页。

最后，就像 JavaScript 一样，WebAssembly 可能被用来 “窃取” 处理能力而不是数据。2019 年，[对 150 个不同的 WASM 模块的分析](https://www.sec.cs.tu-bs.de/pubs/2019a-dimva.pdf) 发现，其中约 *32%* 被用于加密货币挖掘。

### WebAssembly 沙盒和接口

WebAssembly 代码在一个由虚拟机（而不是操作系统）管理的 [沙盒](https://webassembly.org/docs/security/) 中封闭运行。这使它无法看到主机，也无法直接与主机交互。对系统资源（文件、硬件或互联网连接）的访问只能通过该虚拟机提供的 <ruby> WebAssembly 系统接口 <rt>  WebAssembly System Interface </rt></ruby>（WASI） 进行。

WASI 不同于大多数其他应用程序编程接口（API），它具有独特的安全特性，真正推动了 WASM 在传统服务器和<ruby> 边缘 <rt>  Edge </rt></ruby>计算场景中的采用，这将是下一篇文章的主题。在这里，可以说，当从 Web 迁移到其他环境时，它的安全影响会有很大的不同。现代 Web 浏览器是极其复杂的软件，但它是建立在数十年的经验和数十亿人的日常测试之上的。与浏览器相比，服务器或物联网（IoT）设备几乎是未知领域。这些平台的虚拟机将需要扩展 WASI，因此，肯定会带来新的安全挑战。

### WebAssembly 中的内存和代码管理

与普通的编译程序相比，WebAssembly 应用程序对内存的访问非常受限，对它们自己也是如此。WebAssembly 代码不能直接访问尚未调用的函数或变量，不能跳转到任意地址，也不能将内存中的数据作为字节码指令执行。

在浏览器内部，WASM 模块只能获得一个连续字节的全局数组（<ruby> 线性内存 <rt>  linear memory </rt></ruby>）进行操作。WebAssembly 可以直接读写该区域中的任意位置，或者请求增加其大小，但仅此而已。这个<ruby> 线性内存 <rt>  linear memory </rt></ruby>也与包含其实际代码、执行堆栈、当然还有运行 WebAssembly 的虚拟机的区域分离。对于浏览器来说，所有这些数据结构都是普通的 JavaScript 对象，使用标准过程与所有其他对象隔离。

### 结果还好，但不完美

所有这些限制使得 WebAssembly 模块很难做出不当行为，但也并非不可能。

沙盒化的内存使 WebAssembly 几乎不可能接触到 **外部** 的东西，也使操作系统更难防止 **内部** 发生不好的事情。传统的内存监测机制，比如 <ruby>   堆栈金丝雀  <rt>  Stack Canaries </rt></ruby> 能注意到是否有代码试图扰乱它不应该接触的对象，[但在这里没用](https://www.usenix.org/system/files/sec20-lehmann.pdf)。

事实上，WebAssembly 只能访问自己的<ruby> 线性内存 <rt>  linear memory </rt></ruby>，但可以直接访问，这也可能为攻击者的行为 *提供便利*。有了这些约束和对模块源代码的访问，就更容易猜测覆盖哪些内存位置可能造成最大的破坏。破坏局部变量似乎也是 [可能的](https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly)，因为它们停留在<ruby> 线性内存 <rt>  linear memory </rt></ruby>中的无监督堆栈中。

2020 年的一篇关于 [WebAssembly 的二进制安全性](https://www.usenix.org/system/files/sec20-lehmann.pdf) 的论文指出，WebAssembly 代码仍然可以在设定的常量内存中覆盖字符串文字。同一篇论文描述了在三个不同的平台（浏览器、Node.JS 上的服务端应用程序，和独立 WebAssembly 虚拟机的应用程序）上，WebAssembly 可能比编译为原生二进制文件时更不安全的其他方式。建议进一步阅读此主题。

通常，认为 WebAssembly 只能破坏其自身沙盒中的内容的想法可能会产生误导。WebAssembly 模块为调用它们的 JavaScript 代码做繁重的工作，每次都会交换变量。如果模块在这些变量中的任意一处写入不安全的调用 WebAssembly 的 JavaScript 代码，就 *会* 导致崩溃或数据泄露。

### 未来的方向

WebAssembly 的两个新出现的特性：[并发](https://github.com/WebAssembly/threads) 和内部垃圾收集，肯定会影响其安全性（如何影响以及影响多少，现在下结论还为时过早）。

并发允许多个 WebAssembly 模块在同一个虚拟机中并行。目前，只有通过 JavaScript [web workers](https://en.wikipedia.org/wiki/Web_worker) 才能实现这一点，但更好的机制正在开发中。安全方面，他们可能会带来 [以前不需要的大量的代码](https://googleprojectzero.blogspot.com/2018/08/the-problems-and-promise-of-webassembly.html)，也就是更多出错的方法。

为了提高性能和安全性，我们需要一个 [本地的垃圾收集器](https://github.com/WebAssembly/gc/blob/master/proposals/gc/Overview.md)，但最重要的是，要在经过良好测试的浏览器的 Java 虚拟机之外使用 WebAssembly，因为这些虚拟机无论如何都会在自己内部收集所有的垃圾。当然，甚至这个新代码也可能成为漏洞和攻击的另一个入口。

往好处想，使 WebAssembly 比现在更安全的通用策略也是存在的。再次引用 [这篇文章](https://www.usenix.org/system/files/sec20-lehmann.pdf)，这些策略包括：编译器改进、栈/堆和常量数据的 *分离* 的线性存储机制，以及避免使用 **不安全的语言**（如 C）编译 WebAssembly 模块代码。

*本文 [WebAssembly 安全的现在和未来](https://training.linuxfoundation.org/announcements/webassembly-security-now-and-in-the-future/) 首次发表在 [Linux 基金会 - 培训](https://training.linuxfoundation.org/)。*

---

via: <https://www.linux.com/news/webassembly-security-now-and-in-the-future/>

作者：[Dan Brown](https://training.linuxfoundation.org/announcements/webassembly-security-now-and-in-the-future/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #636 保护开源软件需要多少钱？OpenSSF 称 1.5 亿美元

Summary: • 保护开源软件需要多少钱？OpenSSF 称 1.5 亿美元 • DeepMind 的最新人工智能可以执行 600 多项任务 • 谷歌发布 Flutter 3

居然这么便宜，真的1.5亿已经算少了，考虑到开源软件那么多

来自120.242.69.216的 Firefox 91.0|GNU/Linux 用户

# 硬核观察 #636 保护开源软件需要多少钱？OpenSSF 称 1.5 亿美元

### 保护开源软件需要多少钱？OpenSSF 称 1.5 亿美元

在华盛顿特区刚刚举行的第二届开源软件安全峰会上，OpenSSF 宣布了一项雄心勃勃、多管齐下的计划，有 10 个关键目标，以更好地保护整个开源软件生态系统。OpenSSF 估计，其计划在两年内将需要约 1.5 亿美元的资金，目前成员已经认捐了 3000 万美元。

>
> **[消息来源：venturebeat](https://venturebeat.com/2022/05/13/how-much-will-it-cost-to-secure-open-source-software-openssf-says-147-9m/)**
>
>
>

>
> 老王点评：确实，开源软件有一些历史问题需要专门投入人力和资金解决夯实一下。真要是花了这么多钱能解决大部分主要问题，也是好的。
>
>
>

### DeepMind 的最新人工智能可以执行 600 多项任务

DeepMind 本周发布了一个名为 Gato 的“通用”人工智能系统，一个可以被教导执行许多不同类型任务的系统。研究人员训练 Gato 完成了 604 项任务，包括给图像加标题，进行对话，用真正的机器人手臂堆积积木，以及玩雅达利游戏等等。Gato 不一定总是能很好地完成这些任务，DeepMind 称，Gato 在一半以上的时间里表现得比专家好。Gato 的参数比 GPT-3 的 1700 亿个参数要小几个数量级，只有 12 亿个。

>
> **[消息来源：techcrunch](https://techcrunch.com/2022/05/13/deepminds-new-ai-can-perform-over-600-tasks-from-playing-games-to-controlling-robots/)**
>
>
>

>
> 老王点评：虽然距离通用人工智能还有一定距离，在理解和学习人类所能完成的任何任务的能力方面还远远不够，但是也是很可喜的进步了。
>
>
>

### 谷歌发布 Flutter 3

谷歌在几年前创建了 Flutter，目的是做一个跨平台的软件框架。Flutter 可以为安卓、iOS 构建应用程序，而且都来自同一个共享的代码库。Flutter 在今年 2 月份为 Windows 平台提供了稳定支持，但 macOS 和 Linux 仍然只处于测试阶段。在今年的谷歌 I/O 大会上宣布的 Flutter 3，对 macOS 和 Linux 的应用构建也提供了稳定支持。对 Linux 的支持是与 Canonical 合作提供的，Canonical 已经用 Flutter 开发了一些关键应用，包括软件安装和固件更新。

>
> **[消息来源：xda](https://www.xda-developers.com/google-announces-flutter-3/)**
>
>
>

>
> 老王点评：正如谷歌注意到的，跨平台不仅仅是生成各个平台的二进制，更重要的是，要符合各个平台的体验。
>
>
>


红帽宣布 RHEL 9：企业 IT 的下一代骨干系统

linux 9 又发布啦

# 红帽宣布 RHEL 9：企业 IT 的下一代骨干系统

>
> RHEL 9 是使用 CentOS Stream 构建的最新升级版。这也是其在 IBM 旗下发布的第一个主要版本。
>
>
>

<img src="content_image/album_202205_15_083854uk3liylyhokl5oz2.jpg" alt="红帽 9" title="红帽 9">

红帽企业 Linux（RHEL）无疑是开源企业生态系统中的一个重要角色。

可能你记得，IBM 在 2019 年以 340 亿美元收购了红帽公司。因此，可以说，RHEL 8 是它被收购前的最后一个主要版本。

多年来，RHEL 8 已经有了几次更新。

最后，红帽宣布发布了 RHEL 9，作为为企业 IT 基础设施提供动力的下一代升级版本。

在这里，让我重点介绍一下该版本的主要新增功能。

### RHEL 9 的新变化

请注意，该平台将在未来几周内普遍提供。但是，既然已经正式宣布，应该不会花很长时间。

如果你是一个 Linux 桌面用户，也不关心云创新，你会发现有许多技术术语。你需要参考红帽的官方文档来了解它们。

如果你已经在使用 [CentOS Stream](https://itsfoss.com/centos-stream-faq/)，你可能对 RHEL 9 的升级有一定的了解。

是的，RHEL 9 是第一个由 CentOS Stream 构建的生产版本。

根据 [新闻稿](https://www.redhat.com/en/about/press-releases/red-hat-defines-new-epicenter-innovation-red-hat-enterprise-linux-9)，新版本的重点是两个不同的功能：

* 全面的边缘计算管理，以服务的形式交付，以更大的控制和安全功能来监督和扩展远程部署，包括零接触的配给，系统健康的可视性，以及更灵敏的漏洞缓解，所有这些都来自一个单一的界面。
* 通过 Podman（RHEL 的集成容器管理技术）自动回滚容器，它可以自动检测新更新后的容器是否无法启动，然后将容器回滚到以前的工作版本。

其他主要亮点包括：

* 一个新的镜像构建器服务。
* 与 AWS Graviton 处理器的整合。
* 针对 Spectre 和 Meltdown 等硬件级安全漏洞的改进。
* 引入一个新的完整性测量架构。
* WireGuard VPN 技术（无支持的技术预览）。
* 改进了自动化。
* Python 3.9
* Node.js 16
* Linux 内核 5.14

你可以参考 [RHEL 9 测试版发布说明](https://www.redhat.com/en/blog/whats-new-rhel-90-beta) 以了解更多关于该版本的信息。

### 总结

虽然该版本可能不具有最新和最伟大的技术，但这些更新特性和功能应该有助于为较新的 IT 需求提供增强的支持。

最新版本应该在未来几周内通过红帽客户门户和云供应商市场提供。如果你不了解，可以在 [官方网站](https://www.redhat.com/en/store/linux-platforms) 上查看这个 Linux 平台的定价。

当然，你也可以通过 [红帽开发者计划](https://developers.redhat.com/products/rhel/overview) 免费在一些系统上测试它。

---

via: <https://news.itsfoss.com/rhel-9-release/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


GNOME 新终端程序尝鲜

用上了。执行sudo的时候变色，还是蛮好玩的。

# GNOME 新终端程序尝鲜

几天前，我分享了我 [对新 GNOME 文本编辑器的体验](https://itsfoss.com/gnome-text-editor/)，它是原编辑器 Gedit 的替代品。

但它并不是唯一的应用程序替代品。GNOME 42 还有一个新的终端，叫做 <ruby>   控制台  <rt>  Console </rt></ruby>。

让我来分享一下 GNOME 提供的这个新终端的新功能，以及它的使用体验吧！

### 控制台：GNOME 的新终端模拟器

这个新应用程序的目标是提供一个“简单的、用户友好的终端模拟器”。它确实“简单”，因为它没有提供以往 GNOME 终端下用户习惯的许多功能。

后面我会继续谈这个话题。让我们先看看 GNOME 控制台的新功能。

#### 桌面通知

Ubuntu 上的 GNOME 终端从来没有这个功能，不过我在 elementary 和 Fedora 等发行版中看到过。

这是一个很方便的功能，当一个长期运行的命令执行完毕时，终端会发送一个桌面通知。

如果你在命令正在运行的同时，需要做其他事情，那么得到命令完成的通知有助于你保持工作效率。

#### 进行 root 和 SSH 操作时改变窗口颜色

这很可能是我在其他终端程序中没有见过的独特功能。

当你用 `sudo` 运行命令或 [切换到 root 用户](https://itsfoss.com/root-user-ubuntu/) 时，应用程序窗口会变成红色。

我想它的目的是警告用户他们正在使用高级权限，因此在运行命令时要小心。

同样，如果你使用 SSH 连接到一个远程服务器，终端应用程序窗口的颜色会变成紫色。

这也是提醒用户命令正在远程 Linux 机器上运行，而不是在本地机器上运行的好方法。

#### 主题

遵循新的设计准则，控制台提供了三种主题：浅色、深色和跟随系统。

控制台默认使用系统主题，它根据你的操作系统的深浅主题而改变终端配色。你也可以单独使用控制台的浅色/深色主题，而不用改变系统主题。

关于主题的内容差不多就这些。你可以进行的 [终端定制](https://itsfoss.com/customize-linux-terminal/) 并不多。

### 关闭终端窗口时更好的警告

当你试图关闭一个仍在运行的命令时，老的 GNOME 终端也会显示一个警告。

这个警告在新的 GNOME 控制台中稍好一些，因为它也会显示正在运行的命令。

#### 透明界面

GNOME 控制台默认有一个透明界面。在正常模式下，你可以透过它看到一点背景。

例如，你可以看到背景程序中的一些模糊的文字。

我注意到，当控制台进入全屏模式时，界面不再透明。而且，你无法配置透明度。

#### 其他功能

谢天谢地，你可以在控制台中使用标签。

你可以执行与以往 GNOME 终端一样的搜索操作。

它没有太多的选项。<ruby> 汉堡菜单 <rt>  hamburger menu </rt></ruby>让你一眼就能看到所有可用的键盘快捷键。

以上就是关于 GNOME 控制台的一切。

### 在 Ubuntu 22.04 上安装 GNOME 控制台

如果你的发行版使用了原版 GNOME 42，那么它应该默认提供了新终端。

尽管 Ubuntu 22.04 使用的是 GNOME 42，但它仍然使用旧的 GNOME 终端。不过，你可以使用下面的命令来安装新的控制台。

```
sudo apt install gnome-console

```

### 总结

你可能会想，既然我们已经有了一个更好的、功能更强的 GNOME 终端，为什么还要开发一个新的控制台呢？这是因为 GNOME 有了新的设计指南。改造这些应用程序的旧代码库太复杂了，可能也不大划算，从头开始写反而会更容易，因此你会看到更多的“新的” GNOME 应用程序，如控制台和文本编辑器。

由于这个新的应用程序的目标是让事情更简单，因此它没有提供很多功能。你不能定制它，改变颜色、字体等。由于不支持定制，所以也不需要配置文件。

对于很少使用终端的人来说，控制台已经够用了。不过，我认为应该增加在输入密码时显示星号的功能。其他 [面向初学者的发行版](https://itsfoss.com/best-linux-beginners/)，如 Mint，就使用了这个功能，从而避免对 Linux 新手用户造成困扰。

你如何看待这个新的 GNOME 控制台，以及这种创建“新的 GNOME 应用程序”的方式呢？欢迎在下方评论区发表你的看法。

---

via: <https://itsfoss.com/gnome-console/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


开源社区透明度的五个层次

Summary: 如果想让开源社区繁荣发展，管理者需要达到透明度的五个层次。

如果想让开源社区繁荣发展，管理者需要达到透明度的五个层次。

# 开源社区透明度的五个层次

>
> 如果想让开源社区繁荣发展，管理者需要达到透明度的五个层次。
>
>
>

<img src="content_image/album_202205_15_150842yrvm9v5qbbd7a355.jpg" alt="" title="Person in a field of dandelions">

开源社区的管理者必须意识到社区有五个层次的透明度，这对于建设繁荣发展的开源社区来说至关重要。

本文将详细介绍各个层次及其目标与作用。不过首先，我想谈一谈透明度对开源社区的重要性。

### 为什么开源社区需要保证透明度？

* 透明能够增进社区成员之间的信任，促进合作。
* 开放是社区合作和交流的前提。
* 只有在开放透明的环境下，开源工作才能避免矛盾与冲突。
* 社区管理者需要向参与者报告社区情况。
* 向成员公开社区各项情况，营造信任氛围，有利于社区健康发展。

### 透明度的五个层次

#### 层次一：发布源码

在这一层次，社区需要遵循 [OSI 认可的许可证](https://opensource.org/licenses)，在 [Git](https://opensource.com/tags/git) 等公开的版本控制系统上发布源码。

层次一的目标在于创建开源项目。

* 建立开源社区，理应达到这一层次。因为没有公开源代码，也就无所谓开源项目。
* 开源项目的核心便是参与者们编写的源码，并在 OSI 批准的许可证下授权。
* 公开的版本控制系统能够促进合作，使得每一位开发者都能了解项目情况，理解合作模式。

#### 层次二：发布社区指南

达到这一层次，需要发布相关文档以及资源。也可通过组织活动来指导社区成员。

层次二的目标在于为一个开源项目建立和发展一个开源社区。

* 建立一个活跃的社区需要的不仅仅是源代码。
* 公开项目开展方式和贡献方式，能够吸引更多的开发者参与到项目当中。
* 为了推动社区的发展，管理者可能需要举办一些重要活动，并为贡献者们筹办一些特殊的活动。

#### 层次三：继往开来

到了这个层次，管理者有必要分享自己对于社区的见解，发布项目进展情况报告。

层次三的目标在于继往开来，确保社区进入后续阶段后能够更上一层楼，实现长远发展。

* 随着开源社区的发展，社区内的情况将会越来越难以把握。
* 公开社区活动，让成员意识到自己的付出能够为公众所见，为公众所识。
* 在这一层次，无论是报告还是分析，发布的时间并不固定，使用的工具也无定法。

#### 层次四：掌握社区的动态

这一层次就在于倾听社区声音：通过观察社区活动，关注项目发展；跟进软件开发进度，据此采取合适的应对措施。

层次四的目标在于保持科学严谨的态度，持续把握社区的发展情况及发展轨迹，引导社区朝着下一个层次迈进。

* 建立报告机制，运用分析工具，掌握社区动态。
* 将社区的各项活动与社区成员的反响与基线和社区内的其他活动进行比较。
* 坚持倾听社区声音，形成对于社区更深刻的见解。

#### 层次五：维护社区，长久发展

最后一个层次就是依据社区各项指标，提高社区成员的参与度。

层次五的目标在于制定行之有效、能够产生积极影响的决策方案，让开发者更好地参与社区项目。

* 适当调整系统，以适应社区各项指标的变动。
* 跟进这些变动，理解它们是如何通过各项指标和数据分析体现出来的。
* 针对社区维护者与开发者，制定服务等级协议和问责制度，为其设立参与度目标，确保项目整体顺利进行。

### 总结

开源社区管理者需要做到上述五个层次，保证透明度，才能构建起一个繁荣发展的社区。

---

via: <https://opensource.com/article/22/2/transparency-open-source-communities>

作者：[Emilio Galeano Gryciuk](https://opensource.com/users/egaleano) 选题：[lujun9972](https://github.com/lujun9972) 译者：[aREversez](https://github.com/aREversez) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #637 美国国家安全局表示美国新加密标准没有后门

Summary: • 美国国家安全局表示美国新加密标准没有后门 • 一些社交平台倡议粉丝可迁移 • CentOS 继任者 Rocky Linux 获得 A 轮 2600 万美元融资

国内内卷友商：

openEuler：嗯，应该是。。。。我吧。。。

Circle Linux：正是在下

这个"与虎谋皮"用的好

NSA:我没有后门<br />
NSA-B:怎么可能没有后门!!

此地无银三百两

# 硬核观察 #637 美国国家安全局表示美国新加密标准没有后门

### 美国国家安全局表示美国新加密标准没有后门

美国政府正在制定新一代的加密标准，设计能抵御量子计算机。美国国家安全局（NSA）参与了新加密标准制定，它表示自己也无法绕过新标准，NSA 网络安全总监罗布•乔伊斯坚称“新标准没有后门”。“后门”在技术上指的是可以让人利用一个故意的、隐藏的缺陷来破解加密。此前 NSA 最为熟知的行为是它开发的椭圆曲线伪随机数生成器被认为含有后门。该算法一度在加密通讯领域使用广泛，在曝光之后被移除。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2022-05-13/nsa-says-no-backdoor-in-new-encryption-scheme-for-us-tech)**
>
>
>

>
> 老王点评：问题是，NSA 自己信吗？
>
>
>

### 一些社交平台倡议粉丝可迁移

一些社交媒体平台方面的初创公司发起了一个名为“我的朋友我的数据”（MFMD）联盟，“致力于推动科技巨头采用一个新的全行业标准，允许用户将他们的粉丝从一个应用程序转移到另一个。”这些倡议的社交媒体平台总共获得了超过 1 亿美元的风险投资，累计下载量数千万。他们呼吁 Meta、TikTok、Snap、Twitter 等加入他们的行动。

>
> **[消息来源：MSN](https://www.msn.com/en-us/news/technology/followers-are-a-valuable-currency-who-should-own-them/ar-AAXfrUU)**
>
>
>

>
> 老王点评：虽然这是与虎谋皮，不过至少他们认为账户、数据和个人关系是属于用户自己的，不像某些社交媒体声称的，“账号是平台的，用户并不拥有”。你怎么看？
>
>
>

### CentOS 继任者 Rocky Linux 获得 A 轮 2600 万美元融资

去年，红帽公司决定停止支持 CentOS 8 后，CentOS 的创始人之一格雷格•库泽启动了 Rocky Linux 项目，并成立了基金会。现在，Rocky Linux 镜像每个月通常被下载 25 万次，两个月内，有多达一万名开发者和贡献者参与该项目。并且，Rocky Linux 也得到了 Linux 稳定版内核的维护者格雷格•克洛赫-哈特曼（GKH）的“祝福”，其负责领导 Rocky Linux 内核 SIG。

>
> **[消息来源：zdnet](https://www.zdnet.com/article/rocky-linux-developer-lands-26m-funding-for-enterprise-open-source-push/)**
>
>
>

>
> 老王点评：Rocky Linux 发展的不错，相比之下，国内的几个同类友商还只是在国内内卷。
>
>
>


管理 crontab 的开源工具

非球得弄个windows习惯。???，看来windows鸦片效应影响深远哦

# 管理 crontab 的开源工具

>
> crontab-ui 是一个用 Node.js 编写的 Web 前端，帮助管理 crontab 文件。
>
>
>

*自动化是目前的一个热门话题。在我作为网站可靠性工程师（SRE）的日常工作中，我的部分职责是将尽可能多的重复性任务自动化。但是，有多少人在我们的日常非工作生活中这样做呢？今年，我专注于将劳作自动化，以便我们可以专注于重要的事情。*

作为一个初出茅庐的系统管理员，我最早了解的东西之一是 “cron”。cron 被广泛用于做一些事情，如轮换日志、启动和停止服务、运行程序作业等等。它在几乎所有的 Unix 和 Linux 系统中都可用，而且是我认识的每个系统管理员用来帮助管理服务和服务器的东西。cron 可以自动运行任何控制台应用或脚本，这使得它非常、非常灵活。

>
> LCTT 译注：CRON 是 “Command Run On” 的缩写，即在某个时间运行命令。
>
>
>

我用 cron 来获取电子邮件，运行过滤程序，确保服务正在运行，与 Habitica 等在线游戏互动等。

### 以传统方式使用 cron

要开始使用 cron，你可以简单地在命令行输入 `crontab -e`，启动一个打开了当前 `crontab`（“cron table” 的缩写）文件的编辑器（如果你以 root 身份这样做，你访问的是系统 crontab）。这是保存作业计划的地方，记录了何时运行。David Both 已经写了 [大量](https://opensource.com/article/17/11/how-use-cron-linux) 关于该文件的格式和如何使用它的文章，所以我不打算在这里介绍。我要说的是，对于新用户来说，这可能有点吓人，而且设置时间有点痛苦。

### 介绍 crontab-ui

有一些奇妙的工具可以帮助解决这个问题。我最喜欢的是 [crontab-ui](https://opensource.com/%5Bhttps%3A//github.com/alseambusher/crontab-ui%5D%28https%3A//github.com/alseambusher/crontab-ui%29)，这是一个用 Node.js 编写的 Web 前端，可以帮助管理 crontab 文件。为了安装和启动 `crontab-ui` 供个人使用，我使用了以下命令。

```
# 做个备份
crontab -l > $HOME/crontab-backup
# 安装 Crontab UI
npm install -g crontab-ui
# 创建本地数据库目录
mkdir $HOME/crontab-ui
# 启动 crontab-ui
CRON_DB_PATH=$HOME/crontab-ui crontab-ui

```

完成这些后，只需将你的网页浏览器指向 `http://localhost:8000`，你就会看到 crontab-ui 的网页界面。要做的第一件事是点击 “<ruby> 从 Crontab 获取 <rt>  Get from Crontab </rt></ruby>”，加载你可能有的任何现有作业。然后点击“<ruby> 备份 <rt>  Backup </rt></ruby>”，这样你就可以回滚你所做的任何修改。

添加和编辑 cron 作业是非常简单的。添加一个名称，你想运行的完整命令，以及时间（使用 cron 语法），然后保存。另外，你还可以捕获日志，并设置将工作状态邮寄到你选择的电子邮箱。

完成后，点击 “<ruby> 保存到 Crontab <rt>  Save to Crontab </rt></ruby>”。

我个人非常喜欢它的日志记录功能。有了 crontab-ui，你可以通过点击一个按钮来查看日志，这在排除故障时非常有用。

我建议不要一直运行 crontab-ui，至少不要公开运行。虽然它确实具有一些基本的身份验证功能，但它不应该暴露在你的本地机器之外。我不需要经常编辑我的 cron 作业，所以我可以按需启动和停止它。

下次你需要编辑你的 crontab 时，可以试试 crontab-ui！

（题图由 [FelixMittermeier](https://pixabay.com/zh/users/felixmittermeier-4397258/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2031021) 在 [Pixabay](https://pixabay.com/zh/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2031021) 上发布）

---

via: <https://opensource.com/article/22/5/cron-crontab-ui>

作者：[Kevin Sonney](https://opensource.com/users/ksonney) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


使用开源天文应用程序 KStars 探索夜空

Summary: 使用 KStars 从你的 Linux 桌面或安卓设备眺望星辰。

使用 KStars 从你的 Linux 桌面或安卓设备眺望星辰。

# 使用开源天文应用程序 KStars 探索夜空

>
> 使用 KStars 从你的 Linux 桌面或安卓设备眺望星辰。
>
>
>

我一直对夜空很着迷。当我年轻的时候，唯一可用的参考资料是书籍，它们似乎描绘了一个与我从家里看到的不一样的天空。

五年多前，我曾介绍过两个开源天文馆应用程序 [Celestia 和 Stellarium](https://opensource.com/education/15/7/open-source-apps-explore-night-sky) 的使用体验。最近，我又了解到一个应用 [KStars](https://edu.kde.org/kstars/)。这是一个令人惊叹的开源应用程序，可以帮助儿童（和成人）参与科学和天文学。它的网站上说：

>
> “KStars 是一款自由开源的、跨平台的天文学软件。它提供了从地球上的任何位置、任何日期和时间对夜空的一个精确的图形化模拟。可展示包括多达 1 亿颗恒星，13,000 个深空天体，所有 8 个行星，太阳和月亮，以及数千颗彗星，小行星，超新星和卫星。“
>
>
>

KStars 是 [KDE 教育项目](https://edu.kde.org/) 的一部分。最新版本可用于 Linux、Windows 和 MacOS，它集成了 [StellarSolver](https://github.com/rlancaste/stellarsolver)，这是一个跨平台的 SExtractor 程序，它可以从天文图像构建一个天体目录。

### 安装 KStars

KStars 采用 GPL 2.0 协议自由授权。源代码可以在官方的 [KDE GitLab 实例](https://invent.kde.org/education/kstars) 查看（这是 GitHub 的一个只读镜像）。KDE 教育项目有着优秀的 [安装文档](https://edu.kde.org/kstars/install.php)。

我用的系统是 [Pop!\_OS](https://pop.system76.com/)，可以在 Pop!\_Shop 找到这款应用程序。

可以从你的发行版的软件存储库中找到 KStars 在 Linux 上安装。而在安卓设备上，可以从 [Google Play 商店](https://play.google.com/store/apps/details?id=org.kde.kstars.lite&hl=en) 下载适配安卓的 KStars Lite。KDE 项目维护了一份优秀的 [KStars 手册](https://docs.kde.org/trunk5/en/extragear-edu/kstars/index.html) 来帮助用户。

### 使用 KStars

安装完后，从你的“<ruby> 应用 <rt>  Applications </rt></ruby>”菜单启动程序。启动向导会指导你完成初始化设置。

这些指示很容易理解。向导会提示设置你住所的位置。不幸的是，我所在的小村庄不在列表里，但附近一个更大的社区在里面。

你还可以下载该程序的其他数据和额外功能。

这里有很多可用的选项。我选择“<ruby> 在详细信息窗口中显示常见图像 <rt>  Common images displayed in the detail window </rt></ruby>”。

一旦完成设置，KStars 会呈现一张基于你的位置的夜空图。

左上角显示了当前时区（这张图里是 2020 年 11 月 30 日傍晚 5 点 58 分）。

使用鼠标左键，可以向左、向右、向上和向下移动显示。你可以使用鼠标滚轮进行放大和缩小。将鼠标光标放在天体上并右键单击可查看当前天体的描述。

### 参与

KStars 正在积极寻求错误报告、天文学知识、代码、翻译等方面的帮助。主要开发者和维护者是 [Jasem Mutlaq](https://github.com/knro)。如果你愿意贡献一份力量，请访问 [项目网站](https://edu.kde.org/kstars) 或加入邮件列表以了解更多信息。

（题图由 [FelixMittermeier](https://pixabay.com/zh/users/felixmittermeier-4397258/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2183637) 在 [Pixabay](https://pixabay.com/zh/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2183637) 上发布）

---

via: <https://opensource.com/article/21/1/kstars>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


开源新手指南

Summary: 什么是开源；贡献于开源的好处；如何开始贡献

什么是开源；贡献于开源的好处；如何开始贡献

# 开源新手指南

*开源朗读者 | 六开箱*

作为一名技术人员，你应该时不时会看到“<ruby> 开源 <rt>  Open Source </rt></ruby>”这个词。你有可能在浏览推文、博文时看到过它，也有可能是在学习某一门编程语言或使用某个工具时，看到它的部分介绍写着：这个工具/语言是“开源”的。总之，开源无处不在。

在本文中，我将介绍下面这三个话题：

* 什么是开源
* 贡献于开源的好处
* 如何开始贡献

### 什么是开源

开源指的是这样一些软件、项目或社区：它们允许人们修改和分享，因为它们的设计目的就是为了让所有人都能访问。举一个关于菜谱的例子：你可以做你从未发明过的菜，因为发明这个菜谱的人公开了它。大多数时候，你也可以根据自己的口味烹饪，而不会呛到喉咙（开个玩笑）。

>
> <ruby> 开源软件 <rt>  Open Source Software </rt></ruby>（OSS）是指源代码可供他人查看、复制、学习、修改或分享的软件。
>
>
>

下面是开源软件和语言的一些例子：

* Linux 操作系统
* Google 的 Android 操作系统
* Firefox 浏览器
* VLC 媒体播放器
* Python 语言、PHP 语言、MySQL 数据库

与开源软件相反的是<ruby> 专有软件 <rt>  proprietary software </rt></ruby> / <ruby> 闭源软件 <rt>  closed source software </rt></ruby>，只有软件的创造者才能自由使用，其他人若想使用，就得先获得法律许可才行。例如 Adobe Photoshop、微软 Office 等。

>
> 开源不仅限于软件或代码，技术领域的任何人都可以为开源做出贡献（各个角色）。有了开源，就有了透明度、可靠性、灵活性，并允许开放合作。
>
>
>

### 贡献于开源的好处

向开源项目或软件做贡献意味着“免费”让该项目变得更好。你应该会问自己，为什么我要关心或向自己强调“免费”呢？如果你是新手，你可以阅读 [Edidiong Asikpo](https://hashnode.com/@didicodes) 的故事，她在 [这篇文章](https://edidiongasikpo.com/open-source-contributions-a-catalyst-for-growth-b823fc5752b1) 中说明了为什么开源是她成长的催化剂。

贡献开源的好处有很多，这里是其中一部分：

* 它能够帮助你提高现有的技能，特别是对于新手而言，因为它允许你边做边学。
* 无论身在何处，你都可以与世界各地的优秀科技人士协作或共事。
* 你可以公开自己的想法，从而改善软件、项目或社区，让世界变得更美好。
* 你可以通过贡献开源来得到大家的认可，或者成为独特或伟大事物的一部分（获得自豪感）。
* 它让你有机会成为一个人才济济、活力四射的社区的一分子，你可以从中汲取灵感，并结识志同道合的人。
* 你可以因为贡献开源而获得报酬（OoO）！比如你可以参与一些实习，包括 <ruby>   谷歌编程之夏  <rt>  Google Summer of Code </rt></ruby>、[Outreachy](https://www.outreachy.org/)、<ruby>   谷歌文档季  <rt>  Google Season of Docs </rt></ruby>，以及 Open Collective 的 <ruby>   赏金计划  <rt>  bounty program </rt></ruby> 等。（LCTT 译注：国内也有类似的开源实习机会，如“开源之夏”。）

### 如何开始贡献

我相信你会对上面提到的最后一点感兴趣吧（ o），那么，你该如何开始为开源软件做贡献呢？

是时候介绍一下 GitHub 了！

Github 是开源项目协作的大本营，因此它是一个开始贡献开源的好地方。没听说过 GitHub？没有关系！它提供了文档和指南，很容易就可以上手。不过我还是要提醒你，学习是一个循序渐进的过程，不要太心急喔。

Github 以公共<ruby> 存储库 <rt>  repositories </rt></ruby>的形式容纳了许多开源项目。对于某个项目，你可以提交一个<ruby> 议题 <rt>  issue </rt></ruby>，来说明你注意到的错误或问题（或进一步提出改进意见），也可以创建一个<ruby> 拉取请求 <rt>  pull request </rt></ruby>（PR），并说明你的更正和改进。

我不建议你在 GitHub 上搜索项目来开始贡献，这将是相当令人沮丧的。尽管你可以限定项目使用的编程语言来简化搜索过程，但仍然会有一大堆东西出现在你眼前。（LCCT 译注：对于可爱的小萌新来说，这实在是难以承受 >…<。）

为了更精准地找到适合自己的项目，这里有一些可供开始的途径：

* [First-timers only](https://www.firsttimersonly.com/)：一个很好的资源网站，你可以在上面找到新手友好的开源项目来开始贡献。（设计师朋友，我没有忘记你！你可以查看 [Open Source Design](https://opensourcedesign.net/) 这个网站，在上面也能找到新手友好的开源设计项目！）
* 你可以创建你自己的开源项目，把你美妙的想法变成现实，并允许其他人的合作和贡献。[这里](https://github.com/Ruth-ikegah/opensource.guide) 有关于如何创建开源项目的指南。
* 加入一个社区：你可以成为某个社区的成员，这也是传播开源思想的一种方式。你可以在谷歌上搜索当地的开源社区，并积极加入其中。

最后，我想给出几个有用的提示，供你在贡献开源项目时参考：

* 在加入之前，先对项目、社区或组织做一些研究；当你在做的时候，针对不清楚的地方提出问题。
* 当你加入社区时，尽量积极地介绍自己，并说明你能帮助项目的地方。
* **不要**认为自己无法为项目提供任何帮助，停止这种念头！你有很好的想法可以分享！
* 在存储库中看看别人提交的议题，（如果有的话）看看你能在哪些方面提供帮助，你可以关注带有“good first issue”、“help-wanted”、“first-timers only”等标签的议题。
* 在开始贡献之前，一定要先看一下贡献指南，这样你在贡献时就不会有冲突。

>
> 哪怕只是使用一个开源工具也是一种贡献；参加一个开源活动也是一种贡献；做开源项目的志愿者，或者为开源项目提供赞助也是一种贡献。
>
>
>

我想用非洲开源节的口号来结束：“未来是开放的”，所以快上车吧！

感谢阅读！

如果你还有疑问或需要帮助，请在 [这里](https://twitter.com/IkegahRuth) 联系我，我很乐意和你讨论开源，并帮助你做出首次贡献！

**LCTT 译注：读了这篇文章，你是不是想要马上投身于开源贡献呢？那么请考虑加入“Linux 中国翻译组（LCTT）”吧！我们有能帮助你快速上手翻译的 [维基](https://lctt.github.io/wiki/intro/lctt.html) ，有热心友爱的 QQ 群，你甚至还能够在我们的官网上获得属于自己的译者专页……心动了吗？那就立刻行动起来吧！阅读 [维基](https://lctt.github.io/wiki/intro/lctt.html) 以了解如何加入我们～**

（题图由 [Markus e](https://pixabay.com/zh/users/fotopirat-24835164/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=7170280) 在 [Pixabay](https://pixabay.com/zh/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=7170280) 上发布，经修改）

---

via: <https://ruthikegah.xyz/a-beginners-guide-to-open-source>

作者：[Ruth Ikegah](https://hashnode.com/@ikegah_ruth) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #638 微软：“IE 被黑了这么多年”

Summary: • 微软：“IE 被黑了这么多年” • Python 的速度将提升一倍 • 微软还有第二个内部使用的 Linux 发行版

# 硬核观察 #638 微软：“IE 被黑了这么多年”

### 微软：“IE 被黑了这么多年”

微软宣布 IE 将于 6 月 16 日正式退役，Edge 浏览器的官方微博送上告别微博，“终于，被黑了这么多年，IE 要正式跟大家说再见啦。IE 27 年的旅程，从今以后，这条路由 Edge 替 IE 继续走下去。”IE 浏览器是微软在 1995 年 8 月伴随 Windows 95 推出的。在推出三年后，IE 成为全球市场份额第一的浏览器，在 2003 占据了全球市场高达 95% 的份额。

不过，虽然退役了 ，但对于那些死抱着 IE 不放手的网站，Edge 继续提供了 IE 模式，该模式至少会支持到 2029 年。此外，出于企业需求，Windows 10 LTSC（长期服务版）也将继续保留 IE 浏览器。

>
> **[消息来源：微博](https://weibo.com/7732075754/Ltb3e5PQM)**
>
>
>

>
> 老王点评：我觉得，真不是大家黑你，是你本身就是黑的呀。不过，大家也别高兴的太早，还是有大把的公共网站继续赖在 IE 上。
>
>
>

### Python 的速度将提升一倍

去年，微软资助了 Python 软件基金会的 Faster CPython 项目，旨在使 Python 的速度比目前稳定的 3.10 系列快一倍。现在，该项目公布了更多的结果，将 3.11 beta 预览版与 3.10 的几十项性能指标进行了比较，显示 3.11 总体上比 3.10 快 1.25 倍。该项目负责人说，“Python 被普遍认为是慢的。虽然 Python 永远不会达到像 C、Fortran 甚至 Java 这样的低级语言的性能，但我们希望它能与脚本语言的快速实现相竞争，比如 Javascript 的 V8 或 lua 的 luajit。”

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/programming-languages-python-is-slow-but-its-about-to-get-faster/)**
>
>
>

>
> 老王点评：微软真是做了一件大好事，久被诟病的 Python 速度问题，居然就这样提高了一倍！
>
>
>

### 微软还有第二个内部使用的 Linux 发行版

我们知道，微软有一个内部使用的 Linux 发行版，CBL-Mariner，它刚刚发布了 2.0。现在有人发现微软在发布 CBL-Mariner 同一年，还发布了一个名为 CBL-Delridge（或 CBL-D）的 Linux 发行版。两者之间的主要区别是：Delridge 是一个定制的 Debian 衍生版，而 Mariner 是一个定制的 LFS 风格的发行版。Azure Cloud Shell 就建立在 CBL-D 之上，它提供了一套打包在容器中的云管理工具。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/surprise-theres-yet-another-microsoft-linux-distro-cbl-delridge/)**
>
>
>

>
> 老王点评：微软现在是真正践行了“拿来主义”，但凡好的，都拿来。
>
>
>


Xebian：Debian 与 Xfce 的完美结合

Summary: 这是一篇对漂亮而时尚的 Xebian Linux 发行版的快速评测。

这是一篇对漂亮而时尚的 Xebian Linux 发行版的快速评测。

# Xebian：Debian 与 Xfce 的完美结合

>
> 这是一篇对漂亮而时尚的 Xebian Linux 发行版的快速评测。
>
>
>

Xebian 是一个基于 Xfce 桌面环境的 Linux 发行版，基于 Debian 不稳定分支（sid）。这个 Linux 发行版提供了一个带有基本的 Xfce 桌面的 Debian，而无需更改配置和附加软件包。因此，你不用在安装 Debian 和 Xfce 上花费太多时间就可以获得通常的开箱即用体验。

那么，如果你想尝试一下，这是对 Xebian 的快速评测。

### Xebian 评测

#### 安装

考虑到林林总总的 ISO（迷你、自由、非自由等等），Debian 安装可能会有点复杂。毕竟，它是一个真正的“通用操作系统”。但是对于 Xebian，就轻松多了，因为它只有一个提供了 Debian sid 和 Xfce 的 64 位 ISO 文件。Xebian 使用 Debian 原生的安装程序，在你的物理系统或虚拟机中安装此发行版都相当简单。

在我的测试过程中，安装很顺利，没有报告任何问题。安装大约需要 4 分钟。

#### 外观和感觉

安装后，当你首次启动系统时，你会看到带有 Xebian 默认壁纸的漂亮登录页面。这个登录屏幕是标准的默认 Xfce 桌面登录页面。

首先，该桌面非常轻量，有着 Xfce 的干净外观。Xebian 就是一个在 Debian 上提供了完整 Xfce 桌面的 Linux 发行版。因此，唯一的区别是看起来不错的默认壁纸，以及默认的 Numix 主题（深色）。那些喜欢更传统外观的人也可以使用 Adwaita 和 Gerybird 主题。

其次，顶部面板右侧有 “<ruby> 鼠须菜单 <rt>  Whisker Menu </rt></ruby>” 和标准的系统托盘，带有音量控制、电池指示、网络/Wi-Fi 和日期/时间。

#### 应用

Xebian 打包了所有 Xfce 原生应用，而没有添加任何额外内容。安装了它，你就应该拥有了一个稳定的工作桌面，并预装了以下应用程序：

* Thunar 文件管理器
* Ristretto 图像查看器
* Mousepad 文本编辑器
* Catfish 文件搜索
* XFCE 终端
* Firefox 浏览器
* Synaptic 包管理器
* GParted 分区程序
* 系统设置

除此之外，如果你需要任何其他应用，你可以使用 “<ruby> 新立得 <rt>  Synaptic </rt></ruby>” 包管理器轻松安装它们。使用内置的 “<ruby> 软件及软件源 <rt>  Software and Sources </rt></ruby>” 应用可以轻松调整软件源。

[Xfce 4.16](https://www.debugpoint.com/2021/02/xfce-4-16-review/) 是当前的稳定正式版本，并一同提供了其原生应用。而 Xfce 4.18 距离最终版本还很遥远。

该发行版的核心基于 Debian 不稳定分支 “sid”，在撰写本文时它正处于 Debian 12 “bookworm” 的发布路径上。它基于最新的 [Linux 内核 5.17](https://www.debugpoint.com/2022/03/linux-kernel-5-17/) 进行滚动发布。

此外，如果你需要一个常规的图像编辑器、图形软件和办公套件（例如 LibreOffice），那么你可以手动安装它们。它们不是 ISO 文件的一部分。

现在，让我们来看看性能。

#### Xebian 的性能

Xebian 是轻量级的，非常适合旧硬件，这要归功于 Debian。我分两个阶段测试了其性能。

在让系统闲置一段时间后的理想阶段，消耗了大约 710 MB 内存，而 CPU 平均为 2%。大多数空闲状态资源被 Xfce4-desktop 和 Xfce 窗口管理器消耗。

其次，我在重度使用阶段对其进行了测试。我使用文件管理器、文本编辑器、终端和 Firefox 浏览器的一个实例作为工作负载尝试了 Xebian。在此工作负载下，Xebian 平均消耗 1.2GB 内存和 2% 到 3% 的 CPU，具体取决于各自的应用活动。而且，Firefox 明显消耗了大部分内存和 CPU，其次是 Xfce 窗口管理器的内存消耗增加了近 50%。

总的来说，我认为它是稳定的，应该可以在至少 4 GB 内存的中档硬件中正常工作。

### 结束语

基于 Debian 不稳定分支的 [Linux 发行版](https://www.debugpoint.com/category/distributions) 很少。如果你正在寻找 Xfce 和 Debian sid 的特定组合，那么 Xebian 是合适的，因为你从 Debian 获得了一个很可靠的滚动版本，并内置了 Xfce。

虽然它说是“不稳定”的，但根据我的经验，如果你每周保持系统更新，Debian “不稳定” 分支会很好地工作。

最后，如果你想尝试此发行版，请访问官方网站并

>
> **[下载 ISO 文件](https://xebian.org/download/)**
>
>
>

---

via: <https://www.debugpoint.com/2022/05/xebian-review-2022/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 FreeDOS 中聆听音乐

# 在 FreeDOS 中聆听音乐

>
> Mplayer 是 Linux、Windows、Mac 和 DOS 等操作系统上常见的一款开源媒体播放器。
>
>
>

听音乐是放松心情的好方法。在 Linux 上，我使用 Rhythmbox 听音乐。但是你可能不知道在 FreeDOS 上也可以听音乐。让我们看一下两款流行的音乐播放器吧：

### 用 Mplayer 听音乐

[Mplayer](https://en.wikipedia.org/wiki/MPlayer) 是一款开源的媒体播放器，通常安装于 Linux、Windows 和 Mac 上，但也有 DOS 版本可用。这里我们讨论的就是在 FreeDOS 版本。虽然其 DOS 移植版基于旧版（2007 年的 1.0rc2-3-3-2 版），但它完全适用于在 DOS 上播放媒体。

我使用 MPlayer 在 FreeDOS 上听音乐文件。在这个例子中，我复制了我最喜欢的有声读物之一，[Big Finish Productions](https://bigfinish.com/) 的<ruby> 神秘博士：闪点行动 <rt>  Doctor Who: Flashpoint </rt></ruby>，并在我的 FreeDOS 计算机上将其保存为 `C:\MUSIC\FLASHPNT.MP3`。为了在 FreeDOS 上收听闪点行动，我从 FreeDOS 命令行启动 MPlayer 并指定要播放的 MP3 文件名。MPlayer 的基本用法是 `mplayer [options] filename`，如果默认设置可用，你应该可以直接使用该文件名启动 MPlayer。在本例中，我运行以下命令将工作目录切换为 `\MUSIC`，然后使用 MPlayer 播放我的 MP3 有声读物文件：

```
CD \MUSIC
MPLAYER FLASHPNT.MP3

```

FreeDOS *不区分大小写*，因此它将忽略 DOS 命令和任何文件或目录的大小写字母的区别。你键入 `cd \music` 或 `Cd \Music` 都可以切换到 Music 目录，效果相同。

*你可以用 Mplayer 播放 MP3 文件*

使用 MPlayer 在 FreeDOS 播放音乐文件时没有花哨的界面。但同时，它也不会分散注意力。所以我可以一边让 FreeDOS 在我的 DOS 计算机上播放 MP3 文件，一边使用另一台计算机做其他事情。然而，FreeDOS 一次只运行一个任务（换句话说，DOS 是一个<ruby> 单任务 <rt>  single-tasking </rt></ruby>操作系统），所以我不能将 MPlayer 置于 FreeDOS 的“后台”运行，而在 *同一台 FreeDOS 机* 上处理其他事情。

请注意，MPlayer 是一个需要大量内存才能运行的大程序。虽然 DOS 本身并不需要太多的内存来运行，但我建议至少有 16M 的内存来运行 MPlayer。

### 使用 Open Cubic Player 听音频文件

FreeDOS 不止提供了 MPlayer 来播放媒体。还有 [Open Cubic Player](https://www.cubic.org/player/)，它支持多种文件格式，包括 Midi 和 WAV 文件。

1999 年，我录制了一段简短的音频文件，内容是我说：“你好，我是 Jim Hall，我把 ‘FreeDOS’ 发音为 *FreeDOS*。"这是一个玩笑，借鉴了 Linus Torvalds 录制的演示他如何发音 Linux 的 [类似的音频文件](https://commons.wikimedia.org/wiki/File:Linus-linux.ogg)（`English.au`，包含在 1994 年的 Linux 源代码树中）中的创意。我们不会在 FreeDOS 中分发这段 FreeDOS 音频剪辑，但欢迎你从我们的 [Silly Sounds](https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/sillysounds/) 目录中下载它，该目录位于 [Ibiblio](https://www.ibiblio.org/) 的 FreeDOS 文件存档中。

你可以使用 Open Cubic Player 收听 *FreeDOS* 音频剪辑。通常从 `\APPS\OPENCP` 目录键入 `CP` 命令运行 Open Cubic Player。但 Open Cubic Player 是 32 位应用程序，运行它需要 32 位 DOS 扩展器。常见的 DOS 扩展器是 DOS/4GW。虽然可以免费使用，但 DOS/4GW 不是开源程序，因此我们不会将其作为 FreeDOS 包分发。

相反，FreeDOS 提供了另一个名为 DOS/32A 的开源32位扩展器。如果你在安装 FreeDOS 时没有安装所有内容，则可能需要使用 [FDIMPLES](https://opensource.com/article/21/6/freedos-package-manager) 进行安装。我使用这两行命令切换到 `\APPS\OPENCP` 路径，并使用 DOS/32A 扩展器运行 Open Cubic Player：

```
CD \APPS\OPENCP
DOS32A CP

```

Open Cubic Player 没有花哨的用户界面，但你可以使用方向键将 <ruby> 文件选择器 <rt>  File Selector </rt></ruby> 导航到包含要播放的媒体文件的目录。

*Open Cubic Player 打开文件选择器*

文本比在其他 DOS 应用程序中显示的要小，因为 Open Cubic Player 会自动将显示更改为使用 50 行文本，而不是通常的 25 行。当你退出程序时，Open Cubic Player 会将显示重置为 25 行。

选择媒体文件后，Open Cubic Player 将循环播放该文件（按键盘上的 `Esc` 键退出）。当文件通过扬声器播放时，Open Cubic Player 会显示一个频谱仪，以便你可以观察左右声道的音频。FreeDOS 音频剪辑是以单声道录制的，因此左右声道是相同的。

*Open Cubic Player 中播放 FreeDOS 音频文件*

DOS 可能来自较早的年代，但这并不意味着你不能使用 FreeDOS 来执行现代任务或播放当前的媒体。如果你喜欢听数字音乐，试一试在 FreeDOS上 使用 Open Cubic Player 或 MPlayer 吧！

（题图由 [Anselmo Pedraz](https://pixabay.com/zh/users/ansfoto-7261652/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6824489) 在 [Pixabay](https://pixabay.com/zh/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6824489) 上发布）

---

via: <https://opensource.com/article/21/6/listen-music-freedos>

作者：[Jim Hall](https://opensource.com/users/jim-hall) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


微软还有另一个 Linux 发行版，而且是基于 Debian 的

# 微软还有另一个 Linux 发行版，而且是基于 Debian 的

>
> 微软一直在为 Azure 云使用一个基于 Debian 的 Linux 发行版。我们开始揭开它的面纱了！
>
>
>

微软在其大量的项目中利用了 Linux。近年来，你一定读过很多关于 WSL（或 WSL2）和微软制作的 Linux 发行版（即 **CBL Mariner**）的消息。

>
> CBL 是 “共用基础 LinuxCommon Base Linux”的缩写。
>
>
>

甚至在 Windows 11 上，微软也在不断地改进 [WSL](https://news.itsfoss.com/windows-11-wsl/) 的体验。

虽然 CBL Mariner 被用来支持 WSLg（WSL 2 的 GUI 部分）和 Azure，但最近一些媒体（[ZDNet](https://www.zdnet.com/article/surprise-theres-yet-another-microsoft-linux-distro-cbl-delridge/)）报道发现了微软内部使用的另一个 Linux 发行版。

微软肯定喜欢 Linux，对吗？

### CBL-Delridge：一个基于 Debian 的 Linux 发行版

微软维护着一个基于 Debian 的发行版，它被用来支持 Azure 的“<ruby> 云端外壳 <rt>  Cloud Shell </rt></ruby>”。它的名字是 “CBL-Delridge”。

感谢 [Hayden Barnes](https://twitter.com/unixterminal)，他是 SUSE 公司负责 Windows 容器的高级工程经理。

在他 2022 年 2 月的一篇 [旧博文](https://boxofcables.dev/building-cbl-d-microsofts-other-linux-distro/) 中，他透露了关于它的更多细节，并帮助你构建它以在需要时将其导入 WSL。

与从头构建的 CBL-Mariner 不同，CBL-Delridge（CBL-D）是基于 Debian 10（Buster）的。

看到 Debian 在这里受到青睐并不奇怪，即使是 [谷歌也为其内部的 Linux 发行版 gLinux 抛弃了 Ubuntu 而选择了 Debian](https://itsfoss.com/goobuntu-glinux-google/)。

有趣的是，微软在 2020 年发布了这个供内部使用的发行版（根据 Hayden 维护的 [微软的开源举措的非官方时间表](https://github.com/sirredbeard/microsoft-opensource)），而我们在 2022 年才知道了它。

CBL-Delridge 也采用了同样的版本号 10（巧合），代号为 “Quinault”。解析一下这个名字，ZDNet 指出，Delridge 是西雅图西部的一个区，而 Quinault 指的是华盛顿州奥林匹克国家公园的一个山谷。

### 构建 CBL-Delridge

与普通的 Linux 发行版不同，你找不到它的可以公开下载的镜像文件。

考虑到 CBL-D 的 APT 软件包库是公开的，如果你出于任何需求想测试它，你可以构建你的 CBL-D 镜像。

你也可以把它导入 WSL 中。[Hayden 的博文](https://boxofcables.dev/building-cbl-d-microsofts-other-linux-distro/) 解释了如何使用 debootstrap 来开始构建镜像，然后将其导入 WSL。

请注意，CBL-D 并不完全是 Debian 的替代品。所以，你可能无法找到所有你喜欢的软件包。要了解更多的信息，你可以浏览 Hayden 的博文。

你对微软的内部使用的 Linux 发行版有什么看法？你试过其中一个吗？请在评论中告诉我你的想法。

---

via: <https://news.itsfoss.com/microsoft-debian-distro/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #639 AI 能通过 X 射线成像识别人的种族

Summary: • AI 能通过 X 射线成像识别人的种族 • 研究人员设计出 iPhone 关闭时仍能运行的恶意软件 • 英伟达显卡的挖矿限制被破解，但游戏玩家无需担心

POW是目前最好的选择。

# 硬核观察 #639 AI 能通过 X 射线成像识别人的种族

### AI 能通过 X 射线成像识别人的种族

MIT 和哈佛医学院的研究人员们意外的发现，经过训练读取 X 射线成像结果和 CT 扫描结果的人工智能程序可以以 90% 的准确率预测一个人的种族，判断一个人是黑人、白人还是黄种人。但有趣的是，进行这项研究的科学家表示他们不知道计算机是如何做到的。

>
> **[消息来源：bostonglobe](https://www.bostonglobe.com/2022/05/13/business/mit-harvard-scientists-find-ai-can-recognize-race-x-rays-nobody-knows-how/)**
>
>
>

>
> 老王点评：这就是现在的人工智能黑盒的可怕之处，你知道它能做到，但你不知道它怎么能做到。
>
>
>

### 研究人员设计出 iPhone 关闭时仍能运行的恶意软件

iPhone 在关闭时并没有完全关机。设备内部的芯片继续在低功耗模式下运行，因此可用 “Find My” 功能定位丢失或被盗的设备，或者在电池耗尽后使用信用卡和车钥匙。现在研究人员设计出了一种方法，滥用这种永远开机的机制来运行恶意软件，即使 iPhone 关机了，恶意软件仍然可以保持激活。这是因为 iPhone 的蓝牙芯片没有对运行的固件进行数字签名的机制，甚至也没有进行加密。

>
> **[消息来源：arstechnica](https://arstechnica.com/information-technology/2022/05/researchers-devise-iphone-malware-that-runs-even-when-device-is-turned-off/)**
>
>
>

>
> 老王点评：虽然这个漏洞单独利用价值不大，不过要是用来带到某些需要关闭电子设备的场所，可能就容易绕开防范了。
>
>
>

### 英伟达显卡的挖矿限制被破解，但游戏玩家无需担心

之前我们报道过，NiceHash 终于打破了英伟达显卡的挖矿限制。显卡的价格一直在暴跌，但似乎没有大的矿场大量买入被解除了挖矿限制的显卡。这是因为考虑到目前的盈利能力，即使是 3080 Ti 也才每天 3.5 美元左右的收入，仍需要近一年的时间才能实现收支平衡。而原计划在今年 6 月，后又延期的以太坊从 POW 共识转向 POS 共识的迁移计划，让现在大量买入 POW 挖矿使用的显卡显然不明智。

>
> **[消息来源：tomshardware](https://www.tomshardware.com/news/nicehash-quickminer-bypasses-nvidia-lhr-limiter)**
>
>
>

>
> 老王点评：说到底，显卡厂商的限制治标不治本，区块链网络抛弃 POW 才是釜底抽薪。但是我对 POS 是否是区块链网络的未来表示怀疑，因为没有没有任何成功的 POS 前例。
>
>
>


Kali Linux 2022.2 发布：增加了一个吓唬人的有趣新功能

Summary: Kali Linux 2022.2 是今年的第二次更新，增加了一些有趣的内容。

你可以玩20年游戏，但你不可能玩一辈子。

Kali Linux 2022.2 是今年的第二次更新，增加了一些有趣的内容。

# Kali Linux 2022.2 发布：增加了一个吓唬人的有趣新功能

>
> Kali Linux 2022.2 是今年的第二次更新，增加了一些有趣的内容。
>
>
>

Kali Linux 不是你寻常使用的 Linux 发行版。它是专门为渗透测试和道德黑客学习及实验而量身打造的。

在新的 Kali Linux 版本中，增加了一些有趣的工具和功能。让我们来看看 Kali Linux 2022.2 的亮点。

### Kali Linux 2022.2 有什么新功能？

Kali Linux 2022.2 是一个有趣的版本，它引入了更新的桌面环境，升级了 Linux 内核，增加了新的工具，以及更多的改进。

不仅仅限于通常的完善，你还可以看到一个新的屏幕保护程序，其中有许多令人惊讶的元素。

#### 带有好莱坞怀旧色彩的新屏保

Kali Linux 已经出现在许多黑客相关的电视节目/电影（如《<ruby> 黑客军团 <rt>  Mr. Robot </rt></ruby>》）中，看起来酷极了。

更进一步，Kali Linux 增加了一个新的屏幕保护程序（你可以单独安装），其中有来自好莱坞的令人惊讶的元素和一些吓唬人的黑客场景。

他们在屏保中调侃了《黑客帝国》的尼奥，还添加了一个漂亮的 Kali Linux 标志。

整个屏幕保护程序包括几个非常棒的元素。要安装并立即启动它，你可以输入以下命令：

```
sudo apt -y install kali-screensaver
sudo apt -y install hollywood-activate
hollywood-activate

```

#### GNOME 42

Kali Linux 终于包含了新的 [GNOME 42](https://news.itsfoss.com/gnome-42-features/) 桌面环境。所以，在 Kali Linux 自然带有 GNOME 42 的所有优点，包括新的屏幕截图用户界面。

另外，现在你将会在 GNOME 桌面环境中获得一致的深浅主题体验。

#### KDE Plasma 5.24

对于 KDE 粉丝，Kali Linux 2022.2 也带来了新的 [KDE Plasma 5.24](https://news.itsfoss.com/kde-plasma-5-24-lts-release/) LTS 桌面环境。

#### 新的 Kali Linux 工具

新的工具总是每个新版本的重点。一些新增加的工具包括：

* BruteShark - 网络取证分析工具（NFAT）
* Evil-WinRM - Ultimate WinRM shell
* Hakrawler - 网络爬虫，设计用于轻松、快速发现端点和资产
* Httpx - 快速和多用途的 HTTP 工具箱
* Sparrow-wifi - 用于 Linux 的图形化 Wi-Fi 分析器

#### 其他改进

该版本还有许多其他实质性的改进。主要的亮点包括。

* 对终端进行了调整，以加强语法高亮、自动补完和输出
* 自动复制丢失的配置
* 支持 VirtualBox 共享文件夹
* 增加了新的应用程序图标
* 为多显示器设置调整了默认墙纸
* 针对 ARM 设备的更新
* Linux 内核 5.16

要探索更多关于该版本的信息，你可以查看 [官方发布公告](https://www.kali.org/blog/kali-linux-2022-2-release/)。

### 下载 Kali Linux 2022.2

你应该能够在 [官方下载页面](https://www.kali.org/get-kali/) 中找到该镜像。根据你的要求选择合适的版本，然后安装它。

>
> **[Kali Linux 2022.2](https://www.kali.org/get-kali/)**
>
>
>

---

via: <https://news.itsfoss.com/kali-linux-2022-2-release/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


PyCaret：机器学习模型开发变得简单

# PyCaret：机器学习模型开发变得简单

>
> 在当今快节奏的数字世界中，机构们使用低代码/无代码（LC/NC）应用来快速构建新的信息系统。本文将介绍 PyCaret，这是一个用 Python 编写的低代码机器学习库。
>
>
>

PyCaret 是 R 编程语言中 Caret（<ruby> 分类和回归训练 <rt>  Classification And REgression Training </rt></ruby>的缩写）包的 Python 版本，具有许多优点。

* **提高工作效率：** PyCaret 是一个低代码库，可让你提高工作效率。由于花费更少的时间进行编码，你和你的团队现在可以专注于业务问题。
* **易于使用：** 这个简单易用的机器学习库将帮助你以更少的代码行执行端到端的机器学习实验。
* **可用于商业：** PyCaret 是一个可用于商业的解决方案。它允许你从选择的 notebook 环境中快速有效地进行原型设计。

你可以在 Python 中创建一个虚拟环境并执行以下命令来安装 PyCaret 完整版：

```
pip install pycaret [full]

```

机器学习从业者可以使用 PyCaret 进行分类、回归、聚类、异常检测、自然语言处理、关联规则挖掘和时间序列分析。

### 使用 PyCaret 构建分类模型

本文通过从 PyCaret 的数据仓库中获取 Iris 数据集来解释使用 PyCaret 构建分类模型。

我们将使用 Google Colab 环境使事情变得简单，并按照下面提到的步骤进行操作。

#### 步骤 1

首先，通过给出以下命令安装 PyCaret：

```
pip install pycaret

```

#### 步骤 2

接下来，加载数据集，如图 2 所示：

```
from pycaret.datasets import get_data
dataset = get_data('iris')
（或者）
import pandas as pd
dataset = pd.read_csv('/path_to_data/file.csv')

```

#### 步骤 3

现在设置 PyCaret 环境，如图 2 所示：

```
from pycaret.classification import *
clf1 = setup(data=dataset, target = ‘species’)

```

使用 PyCaret 构建任何类型的模型，环境设置是最重要的一步。默认情况下，`setup()` 函数接受参数 `data`（Pandas 数据帧）和 `target`（指向数据集中的类标签变量）。`setup()` 函数的结果如图 3 所示。 `setup()` 函数默认将 70% 的数据拆分为训练集，30% 作为测试集，并进行数据预处理，如图 3 所示。

#### 步骤 4

接下来，找到最佳模型，如图 4 所示：

```
best = compare_models()

```

默认情况下，`compare_models()` 应用十倍交叉验证，并针对具有较少训练时间的不同分类器计算不同的性能指标，如准确度、AUC、召回率、精度、F1 分数、Kappa 和 MCC，如图 4 所示。通过将 `tubro=True` 传递给 `compare_models()` 函数，我们可以尝试所有分类器。

#### 步骤 5

现在创建模型，如图 5 所示：

```
lda_model=create_model (‘lda’)

```

线性判别分析分类器表现良好，如图 4 所示。因此，通过将 `lda` 传递给 `create_model()` 函数，我们可以拟合模型。

#### 步骤 6

下一步是微调模型，如图 6 所示。

```
tuned_lda=tune_model(lda_model)

```

超参数的调整可以提高模型的准确性。`tune_model()` 函数将线性判别分析模型的精度从 0.9818 提高到 0.9909，如图 7 所示。

#### 步骤 7

下一步是进行预测，如图 8 所示：

```
predictions=predict_model(tuned_lda)

```

`predict_model()` 函数用于对测试数据中存在的样本进行预测。

#### 步骤 8

现在绘制模型性能，如图 9 所示：

```
evaluate_model(tuned_lda)

```

`evaluate_model()` 函数用于以最小的努力开发不同的性能指标。你可以尝试它们并查看输出。

---

via: <https://www.opensourceforu.com/2022/05/pycaret-machine-learning-model-development-made-easy/>

作者：[S Ratan Kumar](https://www.opensourceforu.com/author/s-ratan/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


为什么推荐开源分析数据库 Apache Druid

# 为什么推荐开源分析数据库 Apache Druid

>
> 对用户而言，优秀的对外数据分析工具非常关键，因此选择合适的数据架构就显得尤为重要。
>
>
>

<img src="content_image/album_202205_18_154417bvakcquzn2ahv4ua.jpg" alt="" title="">

现如今，数据分析不再是仅面向内部开发人员。当为业务方构建数据分析系统时，你需要确认哪种数据库后端是最合适的。

程序员的本能可能是“选用自己了解的数据库（例如 PostgreSQL 或 [MySQL](https://opensource.com/downloads/mariadb-mysql-cheat-sheet)）”。数据仓库也可能会扩展核心的 BI 仪表板和报告之外的功能，不过对业务方的数据分析支持仍是其重要功能之一，因此要选择合适的工具来保证此功能的性能。

问题的关键点在于用户体验，以下是对外支持数据分析工作的一些关键技术讨论点（以 Apache Druid 为例）。

### 低延迟特性

一直在队列中等待查询会让人很恼火。与延迟有关的因素包括数据量、数据库的处理能力、用户和 API 调用的数量，以及数据库支持查询应用的能力。

当数据量比较大时，有一些方法可以基于任意在线分析处理（OLAP）数据库构建交互式数据体验，但或多或少都有一些其他方面的牺牲。预计算查询会对性能要求较高，还会使架构变得僵化。预聚合处理会使数据粒度变大。将数据时间限制在近期的处理方式，会使得数据完整性得不到保证。

一个“不妥协”的解决方案是选择专为大规模交互而构建的优化架构和数据格式，[Apache Druid](https://druid.apache.org/) 正是这样一个旨在支持现代分析程序的实时数据库。

* 首先，Druid 具备特有的分布式弹性架构，可将数据从共享数据层预取到近乎无限容量的数据服务器集群中。这种架构与诸如云数据仓库这样的解耦查询引擎相比，具有更快的性能，因为它不需要移动数据，并且比像 PostgreSQL 和 MySQL 这样的纵向扩展数据库具有更高的可扩展性。
* 其次，Druid 采用内置于数据格式中的自动多级索引来驱动每个内核去支持更多查询操作。在常规 OLAP 列格式基础之上，还增加了全局索引、数据字典和位图索引，这可以最大化利用 CPU 周期，加快处理速度。

### 高可用性

如果开发团队为内部报告搭建了一个后端，那么中断几分钟甚至更长时间真的很严重吗？实际上并不是的。所以在典型 OLAP 数据库和数据仓库中，计划外的停机和维护是可以允许的。

但是如果你们团队构建了一个对外的供客户使用的分析应用程序，如果发生数据中断，会严重影响客户满意度、收入，当然还有你的周末休息时间。这就是为什么弹性（高可用性和数据持久性）需要成为对外分析应用程序数据库中的首要考虑因素。

考虑弹性就需要考虑设计标准。节点或集群范围的故障能完全避免吗？丢失数据的后果有多严重？保障应用程序和数据需要涉及哪些工作？

关于服务器故障，保证弹性的常规方法是多节点服务以及 [备份机制](https://opensource.com/article/19/3/backup-solutions)。但如果你是为客户构建应用程序，则对数据丢失的敏感性要高得多。*偶尔的*备份并不能完全解决这一问题。

Apache Druid 的核心架构内置了该问题的解决方案，本质是一种强大而简单的弹性方法，旨在保证承受任何变故都不会丢失数据（即使是刚刚发生的事件）。

Druid 基于对象存储中共享数据的自动、多级复制实现高可用性（HA）和持久性。它实现了用户期望的 HA 特性以及持续备份机制，即使整个集群出现问题，也可以自动保护和恢复数据库的最新状态。

### 多用户

一个好的应用应该同时兼备大用户量和“引人入胜”的体验，因此为高并发构建后端非常重要。你肯定不想看到因为应用挂掉而让客户沮丧。内部报告的架构不必考虑这点，因为并发用户数量要小得多且有限。所以现实是，用于内部报告的数据库可能并不适合高并发应用程序。

为高并发构建数据库主要在于取得 CPU 使用率、可伸缩性和成本之间的平衡点。解决并发问题的通常做法是投入更多硬件成本。逻辑上说，只要增加 CPU 的数量，就能够同时进行更多的查询操作。虽然事实确实如此，但成本的增加是不可忽视的。

更好的方法还是使用像 Apache Druid 这样的数据库，它具有优化的存储和查询引擎，可以降低 CPU 使用率。我们强调的关键词是“优化”。数据库不应该读取它不需要的数据。Apache Druid 可以让基础设施在同一时间跨度内为更多查询操作提供服务。

节省成本是开发人员使用 Apache Druid 构建外部分析应用程序的一个重要原因。Apache Druid 具有高度优化的数据格式，结合了从搜索引擎世界借鉴来的多级索引以及数据缩减算法，可以最大限度地减少所需的处理量。

最终表现就是 Apache Druid 提供了其他数据库不可比拟的处理效率。它可以支持每秒数十到数千跨度的 TB 甚至 PB 级别的查询。

### 着眼当下，预见未来

分析应用程序对于用户而言至关重要，所以要构建正确的数据架构。

你肯定不想一开始就选择了一个错误的数据库，然后在后续扩展时面对诸多令人头疼的问题。幸运的是，Apache Druid 可以从小规模开始，并在之后轻松扩展以支持任何可以想象的应用程序。Apache Druid 有 [优秀的官方文档](https://druid.apache.org/docs/latest/design/)，当然它是开源的，所以不妨尝试一下并，快速上手吧。

---

via: <https://opensource.com/article/22/4/apache-druid-open-source-analytics>

作者：[David Wang](https://opensource.com/users/davidwang) 选题：[lkxed](https://github.com/lkxed) 译者：[unigeorge](https://github.com/unigeorge) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #640 软件自由保护协会为开源权利赢得了重大进展

Summary: • 软件自由保护协会为开源权利赢得了重大进展 • Arm 开源项目从 GitHub 迁移到 GitLab • 谷歌引入“有保证的开源软件”服务

# 硬核观察 #640 软件自由保护协会为开源权利赢得了重大进展

### 软件自由保护协会为开源权利赢得了重大进展

软件自由保护协会（SFC）是一个促进开源软件和捍卫自由软件通用公共许可证（GPL）的非营利组织。SFC 最近以消费者身份起诉美国主要电视厂商 Vizio 滥用了 GPL，因为其基于 Linux 开发了 SmartCast 操作系统，而没有遵守 GPL 许可证公开源代码。Vizio 认为 SFC 无权要求提供源代码。然而，5 月 13 日，SFC 在美国联邦法院成功地提出了动议，要求将其对 Vizio 的诉讼发回加利福尼亚州奥兰治县高级法院。根据法院的裁决，SFC 解释说：“这项裁决是版权许可许可历史上的一个分水岭。这一裁决表明，GPL 协议既作为版权许可，又作为合同协议发挥作用。”此外，这一裁决使其成为第一个以个人消费者作为 GPL 的第三方受益人对源代码拥有权利的案例。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/software-freedom-conservancy-wins-big-step-forward-for-open-source-rights/)**
>
>
>

>
> 老王点评：虽然这一诉讼还未完结，但是这一动议裁决，作为判例，可能影响非常深远。以后那些基于 Linux 开发的软硬件，都面临在 GPL 大刀之下不得不交出源代码的境地。我指的不是“谁”，而是在座的“各位”。
>
>
>

### Arm 开源项目从 GitHub 迁移到 GitLab

GitLab 官方博客阐述了 Arm 选择 GitLab 作为自托管平台的优点：最大化选择和成本效益，最小化供应商锁定。Arm 软件社区高级主管说，“GitHub 是一个黑盒子，所以我们必须与他们合作，或者让他们来做这些工作，而且不一定正确。然后我们就必须做审查。我们不一定能做补丁审查，因为这都是私有和专有代码……这是我们选择 GitLab 的一个重要因素”。

>
> **[消息来源：GitLab](https://about.gitlab.com/blog/2022/05/17/arm-open-source-makes-a-seamless-migration-to-gitlab/)**
>
>
>

>
> 老王点评：虽然搭建自己的 Git 基础设施感觉离开了 GitHub 上的海量用户，但是那些不关心你的项目的海量用户其实和你没有什么关系。建立自己的 GitLab 实例是个不错的选择，至少对我们来说，访问速度快，能自己把握控制权。
>
>
>

### 谷歌引入“有保证的开源软件”服务

在最近发表的一篇博文中，谷歌推出了名为“有保证的开源软件”服务。谷歌称，将把谷歌自己广泛的软件审计经验的好处扩展到其云客户。该公司表示，所有通过该服务提供的开源软件包也是谷歌内部使用的，并定期扫描和分析漏洞。

>
> **[消息来源：谷歌](https://cloud.google.com/blog/products/identity-security/introducing-assured-open-source-software-service)**
>
>
>

>
> 老王点评：这对谷歌云及其客户来说都是一件好事，不过我更乐于见到谷歌将其做成一种公共服务，而不仅仅是面对其商业客户的商业服务。
>
>
>


Fudgie？令人惊叹的 Budgie 桌面即将登陆 Fedora Linux

Summary: Fedora 用户也将能够享受 Budgie 桌面环境的现代体验。

Fedora 用户也将能够享受 Budgie 桌面环境的现代体验。

# Fudgie？令人惊叹的 Budgie 桌面即将登陆 Fedora Linux

>
> Fedora 用户也将能够享受 Budgie 桌面环境的现代体验。
>
>
>

近来，红帽的社区项目 Fedora 已经获得了相当不错的用户群。除了默认桌面 GNOME 外，Fedora 也以 <ruby>   Fedora 定制版  <rt>  Fedora Spins </rt></ruby> 的形式提供了多种其他桌面环境。

这意味着你可以在 Fedora 上享受 KDE、MATE、Xfce 和其他一些桌面环境的开箱即用的体验，而无需额外的努力。喜欢 KDE 而不是 GNOME 吗？下载 Fedora 的 KDE 定制版，安装它，就像安装常规的 Fedora 一样。

Fedora 定制版中缺少的一个桌面环境是 Budgie 桌面。

### Budgie 走向独立

在 2014 年左右，Budgie 桌面随同 Solus Linux 项目一起推出。最近，Solus 和 Budgie 项目出现了一些 [倒退式的发展](https://news.itsfoss.com/solus-co-lead-resign-budgie-serpent/)。Budgie 项目现在已经 [从 Solus Linux 中独立出来了](https://news.itsfoss.com/budgie-10-6-release/)。

自从首次发布以来，Budgie 就获得了一定的追随者。它的现代布局方式受到了许多 Linux 用户的喜爱。这也是许多其他主要 Linux 发行版（如 Ubuntu、Manjaro、openSUSE）开始提供 Budgie 版本的原因。

到目前为止，Fedora 的产品中还没有 Budgie，但这可能会在 Fedora 的下一个版本中发生变化。

### Budgie 提交加入 Fedora 的申请

Budgie 项目的首席开发人员 Joshua Strobl 在 [Reddit 帖子](https://www.reddit.com/r/Fedora/comments/uq3gah/budgie_desktop_has_now_been_submitted_for/) 中宣布了这一消息。

>
> 我现在已提交 Budgie 桌面及其它的附属软件（Budgie 控制中心、Budgie 屏幕保护程序、Budgie 桌面视图）加入到 Fedora 中的申请。从 Fedora rawhide（37）开始并向后移植到 36。它会得到“官方的”维护/支持，因为我自己在工作笔记本电脑上使用 Fedora Silverblue + rawhide，并且我以后会切换桌面到 Fedora Silverblue。
>
>
>

这意味着，如果该软件包得到了 Fedora 团队的批准，你应该就能在 Fedora 37 中（甚至有希望在 Fedora 36 中）安装 Budgie 和它的附属软件。

但这还不是故事的结束。Joshua 提到，他也在考虑引入并支持包含 Budgie 桌面的 Fedora 官方定制版。这意味着人们将能够下载一个预装了 Budgie（而不是 GNOME）桌面的 Fedora ISO。

目前还不清楚他的意思，有可能是一个 Budge 的 Fedora 官方定制版，也有可能是一个新的非官方的 Fedora 衍生版，名为 “Fudgie”，完全由他来维护。

### Fedora + Budgie 是一个好消息

无论如何，Fedora 的 Budgie 桌面都是个好消息。它为 Fedora 用户提供了更多选择，而 Budgie 是一个漂亮的桌面。同时喜欢 Fedora 和 Budgie 的人应该能够享受两全其美的体验。

我希望你同意我的看法。请在评论区也分享一下你的看法吧！

---

via: <https://news.itsfoss.com/fudgie-fedora-budgie-announcement/>

作者：[Abhishek](https://news.itsfoss.com/author/root/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


国产桌面 CutefishOS 可能已解散，社区自发接手

Summary: 你对此怎么看，是否有兴趣参与到这个社区项目中呢？

漂亮的模特有无数个。有魄力有能力的马云只有一个。投资人不会看你的颜值有多正义。

老王，快看微信，内部谋权篡位，快，马上发布公告

生态不行，搞一堆没用的系统

生态不行，搞一堆没用的系统

生态不行，搞一堆没用的系统

linux生态不行，你用过linux嘛？用的我arch linux基本要啥有啥，不妨我说，win就是个。

Linux 桌面应遵循着相同的标准（freedesktop.org），这样一般开发者适配 GNOME、KDE 这两种主流桌面即可。CuteFish 固然美观好看，但截至留言，对标准的研究和支持还不够，造成了 flatpak 包在启动器不显示等 bug。开发质量良莠不齐，才造成了桌面“碎片化”的表象。

来自210.30.201.4的 Firefox 102.0|GNU/Linux 用户

在manjaro上装了这个桌面，真的惊艳（虽然还有一些小BUG，比如现在最难受的是没有快捷键定义），希望社区能把精力放在桌面，软件生态交给发行版，这样也许可以发展更好

来自112.29.96.128的 Firefox 104.0|GNU/Linux 用户

刚刚试了，非官方社区网站也没了?

你对此怎么看，是否有兴趣参与到这个社区项目中呢？

# 国产桌面 CutefishOS 可能已解散，社区自发接手

去年底，我们 [报道过](/article-14058-1.html) 一款非常漂亮的 Linux 桌面 CutefishOS。有消息称，这是一款来自国人的作品。当时国外的开源网站 “It's FOSS” 认为 CutefishOS “有可能取代深度成为最漂亮的 Linux 发行版”，并在测试了最新的测试版（v0.6）后，对它寄予了厚望，希望它“成为现有 Linux 发行版的一个有前途的替代方案”。

然而，据爆料，仅仅过了不到半年，CutefishOS 团队就可能已经解散了。在撰写本文时，其官网 <https://cutefishos.com/> 已经无法访问。有消息称，解散原因是由于团队缺乏资金而结束了开发，但我尚未见到官方的解释和宣布。

在惋惜之余，被踢出 CutefishOS QQ 群的一些社区伙伴们自发成立了一个 [CutefishOS 社区](https://community.cutefish.org/)，以社区的方式来延续它的生命。按照其论坛上的说法，就是“从社区中来，到社区中去”。

根据这个非官方论坛披露的 [消息](https://community.cutefish.org/d/7)，CutefishOS 最初名为 PandaOS，“是一款国内开源 Linux 社区发行版，由爱好者们构建，目标是提供简洁、易用美观的 PC 操作系统，使用 C++/Qt 技术开发新的桌面环境。” 它长这个样子：

后来改名为 CyberOS，是一款“使用 Qt Quick 与 Arch Linux 构建的 Linux 发行版。”

后因名字被占用，又改名为 CutefishOS。在 2021 年 5 月上线了官网 <https://cutefishos.com> （现已不能访问）。在当年的国庆长假期间，CutefishOS 官方发布了基于 Debian 的 CutefishOS 镜像。并在后继发布过测试版本。

然后，就没有然后了，2022 年 5 月 14 日开发团队解散，QQ 群也解散了。

看起来颇有前途的一个桌面系统，就这样戛然而止，十分令人可惜。更令人可惜的是，该团队在遇到困难时，我们似乎也没有听到任何呼吁和求救；而结束时，甚至连个告别的公告都没发出，连其官网也马上消失无踪。我也是听到网友私下反馈才得知的这个消息。

不过，好在还有一些社区伙伴觉得它值得抢救一把，因此发起了这个 [非官方社区](https://community.cutefish.org/)，并在几天前开始了一些建设性的工作。

我觉得，虽然不知道他们是否可以继续使用 CutefishOS 这个名字，但是如果在原本开源的代码基础上，或许可以继续打造出一个还不错的桌面环境。让我们拭目以待，哦不，应该亲自去帮忙，帮助这棵小苗成长起来。

你对此怎么看，是否有兴趣参与到这个社区项目中呢？


硬核观察 #641 代码托管平台 Gitee 的开源仓库需要先审再上线

Summary: • 代码托管平台 Gitee 的开源仓库需要先审再上线 • 依靠近距离蓝牙解锁的特斯拉都能被远程解锁 • 愚蠢的 CEO 们最常使用的密码一样愚蠢

还真的是破罐破摔了啊，令人无奈。如何进行合理审查而不一刀切真是全国性难题。

来自河南郑州的 Chrome Mobile 88.0|Android 10 用户

非必要不开源

代码网格化 管理

Bug 动态清零

社会面 BUG 清零

还能想到什么 欢迎补充

来自湖北随州的 Chrome Mobile iOS 101.0|iOS 15.4 用户

# 硬核观察 #641 代码托管平台 Gitee 的开源仓库需要先审再上线

### 代码托管平台 Gitee 的开源仓库需要先审再上线

周三晚上，有用户反馈 Gitee 上的开源仓库访问受限，需要审核后才能公开访问。这一事件引发了大量讨论。Gitee 回复称：“即日起执行开源仓库审核后上线的措施，所有新上线的开源仓库需要进行人工审核后可正式公开。已经是开源状态的仓库，我们会暂时转为私有仓库，经审核后会进行公开。……此举也是迫于无奈，目前已经是 Gitee 团队能确保大家尽快正常使用的最优解。”有趣的是，如此重大的动作在 Gitee 官网并没有明确公布，而是选择在知乎上草草回复了不到两百字。而且，从用户实际公开仓库的过程中，只是勾选了几个平台方免责的选项而已。

>
> **[消息来源：知乎](https://www.zhihu.com/question/533388365/answer/2491172345)**
>
>
>

>
> 老王点评：红薯做 Gitee 时可能没想到最大的运营风险不是来自于友商的竞争。不过就这个事情，虽然无奈，但是我觉得处理的有点太糙了，一看就是技术人员破罐破摔的处理方式。
>
>
>

### 依靠近距离蓝牙解锁的特斯拉都能被远程解锁

研究人员设计了一种黑客技术，使他能够解锁数以百万计的特斯拉和无数的其他设备，即使认证的手机或钥匙扣在数百码或数英里之外。这种攻击利用了蓝牙低能耗标准的弱点，采用中继攻击方式，只需要不到 100 美元的设备，就可以在汽车和解锁手机之间通过中继的方式截获并传输蓝牙密钥，从而非法解锁设备。而且这种攻击对所有不需要在解锁手机上进行操作的解锁操作都有效。几乎所有仅靠接近度进行认证、并且不同时要求用户互动或地理位置查询的 BLE 设备都是脆弱的，这影响到了大量的特斯拉汽车和智能门锁。

>
> **[消息来源：arstechnica](https://arstechnica.com/information-technology/2022/05/new-bluetooth-hack-can-unlock-your-tesla-and-all-kinds-of-other-devices/)**
>
>
>

>
> 老王点评：本来 BLE 就不是为近距离解锁设计的，只是被产品厂家用到这个场景了。要想解决这个连 CVE 编号都没有的问题，只能是修改使用方式，比如解锁需要人在手机上进行操作。
>
>
>

### 愚蠢的 CEO 们最常使用的密码一样愚蠢

一般人最常使用的密码是连续的数字或简单的单词，如`123456`、`picture1`，以及 `password`。在最近的一份由全球 2.9 亿个网络安全数据泄露事件组成的研究样本中，也记录了受影响者的工作级别。结果发现，当涉及到 CEO 和其他高级企业高管时，他们的密码选择与一般公众基本相同，尽管许多人经常以名字为特征。

>
> **[消息来源：pcgamer](https://www.pcgamer.com/the-passwords-most-used-by-ceos-are-startlingly-dumb/)**
>
>
>

>
> 老王点评：给这些愚蠢的老板们准备个用来输入密码的助理吧，要不他们会一直用这么简单的密码的。
>
>
>

### 回音

* 红帽前两天说 RHEL 9 将在几周内可用，不过实际上没等那么久，现已向客户 [正式发布](https://access.redhat.com/announcements/6958409) 了 RHEL 9。


# Adobe Illustrator 的替代品 Inkscape 发布了 1.2 版本

>
> Inkscape 1.2 是一个激动人心的更新，包含许多有用的改进和新增功能。试一试吧！
>
>
>

Inkscape 是一个流行的开源矢量图形处理程序，可用于 Linux、Windows 和 macOS。

它的最新版本侧重于改进现有工具，以及提供更多自定义选项。

此外，它还有一些新增功能。让我们来看看吧！

### Inkscape 1.2：有什么新功能？

Inkscape 1.2 是一个激动人心的更新，它包含了许多有用的增强功能。其中一些关键变化包括：

* 改进的渐变编辑器
* 新的捕捉模式
* 支持多页文档
* 改进的导出对话框
* 可定制的工具栏

在这里，我将重点介绍重要的功能改进：

#### 多页文档支持

你现在可以在同一个文档中创建多个标准/自定义大小的页面，并把它们保存为一个多页的 PDF 文档。

不仅是导出，你还可以导入多页 PDF 来简化操作。

### 自定义调色板

你现在可以轻松地更改尺寸、重新配置颜色，以此来尝试所有可用的调色板，然后选择你真正喜欢的颜色。

特别是当你需要在用户界面中使用多个调色板时，它会让操作更流畅。

### 新的“平铺”实时路径效果

如果你正在处理很多个对象，并想尝试不同路径效果，那么你应该会喜欢新的平铺实时路径效果。

你可以轻松调整镜像模式、调整间隙、添加行和列，从而获得大量发挥创意的机会。

### 图层和对象对话框

大多数改进使得体验比以前更直接。使用新的合并图层和对象对话框，你可以根据要查找的图层，快速组织/查找对象。

你甚至可以自定义图层和对象颜色来区分它们。

### 导出对话框

现在，导出对话框为你提供了选择简单/批量导出的选项，以及选择文件格式和 DPI 设置的能力。

### 其他改进

除了上面的主要亮点外，还有其他的一些重大变化，包括：

* 两种新的画布捕捉模式有助于对齐对象
* 你可以在“<ruby> 填充和描边 <rt>  Fill and Stroke </rt></ruby>”对话框中选择渐变
* 编辑<ruby> 标记 <rt>  marker </rt></ruby>的能力
* 改进了与扩展的兼容性
* 更新了 SVG 字体编辑器
* 性能改进
* 可配置的工具栏

你可以参考 [Inkscape 1.2 发行说明](https://media.inkscape.org/media/doc/release_notes/1.2/Inkscape_1.2.html) 来查看所有的技术变化。

### 下载 Inkscape 1.2

你可以从它的官方网站下载 AppImage 格式的 Inkscape 1.2 软件包，或查看其他适用于 Windows/macOS 平台的可用软件包。

>
> **[Inkscape 1.2](https://inkscape.org/release/inkscape-1.2/)**
>
>
>

---

via: <https://news.itsfoss.com/inkscape-1-2-release/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


HydraPaper：一个支持多显示器的 Linux 壁纸管理器

挺不错的

# HydraPaper：一个支持多显示器的 Linux 壁纸管理器

>
> HydraPaper 是一个令人印象深刻的壁纸管理器，适用于 Linux 用户，也支持多显示器设置。让我们仔细看一下。
>
>
>

一般而言，你要为你的 Linux 发行版上的每个桌面环境分别设置壁纸。

而且，当试图将一个自定义的壁纸集文件夹添加到可选的壁纸范围时，往往会受到限制。此外，遇到多显示器环境时，你无法在你的发行版中为其单独选择壁纸。因此，你需要去寻找一个图形用户界面（GUI）程序来完成这些操作。

幸运的是，我偶然发现了一个让 Linux 用户印象深刻的选择，即 **HydraPaper**。

### HydraPaper：带有 CLI 接口的开源墙纸管理器

HydraPaper 是一个使用 Python 3 和 GTK 构建的相当有用的壁纸管理器。它可以让你为不同的显示器选择单独的墙纸。

虽然它主要是一个 GUI 程序，但你也可以使用命令行执行同样的任务。

因此，HydraPaper 是一个同时适用于 GUI 和 CLI 用户的壁纸管理器。

它看起来是一个直接的解决方案，有一些简单的功能。让我介绍一下如下的主要亮点。

### HydraPaper 的特点

HydraPaper 可以让你添加自定义壁纸集，组织/选择你想要的文件夹，并方便地挑选壁纸。

一些基本的特性包括：

* 管理文件夹集合（根据需要一键切换它们）。
* 挑选喜欢的壁纸，并将它们添加到你的最爱集合。
* 按照你的喜好定位墙纸（缩放、适合黑色背景/模糊、居中等）。
* 能够从你的收藏中快速设置一个随机壁纸，如果你想这么做的话。
* 用深色模式自定义壁纸管理器的体验，选择单独保存壁纸，清除缓存，等等。
* 支持 CLI。
* 单跨壁纸模式适用于多显示器。

使用起来相当简单。你可以为不同的显示器挑选壁纸，或者使用选项中的单跨壁纸模式，在多显示器之间应用一个壁纸。

你可以选择/添加/删除文件夹，调整位置，添加收藏夹，以及应用深色模式的墙纸。

### 在 Linux 中安装 HydraPaper

你可以在 Flathub 上找到 HydraPaper 的 [Flatpak 包](https://itsfoss.com/what-is-flatpak/)，它适合各种 Linux 发行版。如果你是第一次设置对 Flatpak 的支持，你可以参考我们的 [Flatpak 指南](https://itsfoss.com/flatpak-guide/)。

你也可以在 Arch Linux 发行版的 AUR、Fedora 的仓库，以及 Debian（unstable）中找到它。

我在 Manjaro Linux 上测试了它，它使用 Flatpak 包工作得很好。

要探索更多的选择，你可以前往其 [GitLab 仓库](https://gitlab.gnome.org/gabmus/hydrapaper)。

*你对 HydraPaper 有什么看法？你是否更喜欢用其他东西来管理多显示器设置上的壁纸？请在下面的评论中告诉我你的想法*。

---

via: <https://itsfoss.com/hydrapaper/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Linux 桌面中启用 “激活 Linux” 水印通知

Summary: “激活 Windows” 水印已移植到 Linux。

系统性污染

绝绝子，把微软恶心坏了

Linux的某些用户就像某些女人，言谈之中离不开男人，通过揶揄男人来获得满足感。

“来自湖北武汉的Chrome 86.0|Windows 10用户”?

哈哈

哈哈哈哈，笑死我了，我要下载下来运行一下，哈哈哈

因为windows就像你这种人一样恶心，揶揄的就是你这种恶心的人

你咋知道别人说啥？ (ﾉﾟ∀ﾟ)ﾉ

顺便 WSL 是最好的桌面LINUX 发行版

哈哈，挺有趣

脑洞清奇

来自117.183.0.160的 Firefox 100.0|GNU/Linux 用户

# 如何在 Linux 桌面中启用 “激活 Linux” 水印通知

>
> “激活 Windows” 水印已移植到 Linux。
>
>
>

为了阻止 Windows 操作系统的盗版行为，微软开发团队想出了一个办法：在 Windows 的角落放置一个激活水印，直到用户合法购买许可证并激活它。

如果你的电脑正在运行盗版的 Windows 副本，你应该已经注意到右下角的 “激活 Windows” 水印通知，如下图所示。

幸运的是，Linux 用户永远不会收到这样的通知。因为 GNU/Linux 是一个完全免费的开源操作系统，在 GNU 通用公共许可证（GPL）下发布。

任何人都可以运行、研究、修改和重新分发 Linux 源代码，甚至可以出售修改后的代码的副本，只要使用相同的许可即可。

Linux 是开源的，所以你真的可以用 Linux 做任何你在专有操作系统上不能做的事情。

你可以在 Linux 中做很多事情。你可以在 Linux 下构建和运行*几乎*任何东西，无论是有趣的项目还是企业级应用程序。甚至，你还可以添加 “激活 Linux” 水印。

### “激活 Linux” 是什么？

几天前，我注意到了一个叫做 “激活 Linux” 的有趣项目。它和你在未经许可的 Windows 操作系统中看到的 “激活 Windows” 通知非常相似。

“激活 Linux” 的开发者使用 C 语言中的 Xlib 和 cairo，重新创建了 Linux 版的 “激活 Windows” 通知水印。

它会在你的 Linux 桌面上显示一个水印，并通知你进入设置以激活你的 Linux 发行版！这很酷，不是吗？

### 启用 “激活 Linux” 水印

activate-linux 项目在短时间内变得非常流行。几天之内，它已经为许多流行的 Linux 发行版而打了包，例如 Arch Linux、openSUSE 和 Ubuntu。

#### Arch Linux

[AUR](https://aur.archlinux.org/packages/activate-linux-git) 已经收录 activate-linux。因此，你可以使用 [Paru](https://ostechnix.com/how-to-install-paru-aur-helper-in-arch-linux/) 或 [Yay](https://ostechnix.com/yay-found-yet-another-reliable-aur-helper/) 在 Arch Linux 及其衍生版 EndeavourOS 和 Manjaro Linux 中安装 activate-linux 应用程序。

```
$ paru -S activate-linux

```

或者

```
$ yay -S activate-linux

```

#### openSUSE

[OBS](https://software.opensuse.org//download.html?project=home%3AWoMspace&package=activate-linux) 收录了 Activate-linux。

如果你正在使用 openSUSE Tumbleweed 版本，请逐条运行下面的命令来安装 activate-linux：

```
$ sudo zypper addrepo https://download.opensuse.org/repositories/home:WoMspace/openSUSE_Tumbleweed/home:WoMspace.repo
$ sudo zypper refresh
$ sudo zypper install activate-linux

```

对于 openSUSE Factory ARM 版，运行如下命令：

```
$ sudo zypper addrepo https://download.opensuse.org/repositories/home:WoMspace/openSUSE_Factory_ARM/home:WoMspace.repo
$ sudo zypper refresh
$ sudo zypper install activate-linux

```

#### Ubuntu

activate-linux 有一个适用于 Ubuntu 及其衍生版（如 Pop!\_OS）的 PPA。

```
$ sudo add-apt-repository ppa:edd/misc
$ sudo apt update
$ sudo apt install activate-linux

```

安装完成后，只需在终端执行下面的命令，就可以让它运行起来：

```
$ activate-linux

```

现在，你将在桌面的角落看到 “激活 Linux” 水印通知，就像在未授权的 Windows 副本中一样。

别紧张！它是无害的。若想取消显示，你可以返回终端并按 `CTRL+C` 终止 `activate-linux` 命令。

我在 Ubuntu 22.04 GNOME 版本上测试了一下。它在 Wayland 中开箱即用。

“激活 Linux” 是我这一段时间以来遇到的一个非常有趣又无用的项目。我想这会让每个刚从 Windows 切换过来的 Linux 用户，拥有更加舒适的体验吧！

### 相关资源

>
> **[“激活 Linux” 的 GitHub 存储库](https://github.com/MrGlockenspiel/activate-linux)**
>
>
>

---

via: <https://ostechnix.com/activate-linux/>

作者：[sk](https://ostechnix.com/author/sk/) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #642 美国司法部修订反黑客法律，将不对白帽黑客追究责任

Summary: • 美国司法部修订反黑客法律，将不对白帽黑客追究责任 • 2 个严重程度为 9.8 级的漏洞正在被利用！ • 谷歌宣布开源卸载友好协议 PSP

# 硬核观察 #642 美国司法部修订反黑客法律，将不对白帽黑客追究责任

### 美国司法部修订反黑客法律，将不对白帽黑客追究责任

美国司法部周四修订了其反黑客法律《计算机欺诈和滥用法》（CFAA）。该部指示检察官不要用 CFAA 来起诉网络安全研究人员，即所谓的“白帽黑客”、“道德黑客”。CFAA 是美国于 1986 年颁布的一项美国联邦法规，其禁止未经授权或超出授权的情况下访问计算机。此举意义重大，因为 CFAA 经常对安全研究人员构成威胁，他们可能会探测或入侵系统，以确定漏洞，从而修复这些漏洞。政策的修订意味着这种研究不应面临指控。

>
> **[消息来源：techcrunch](https://techcrunch.com/2022/05/19/justice-department-good-fatih-hackers-cfaa/)**
>
>
>

>
> 老王点评：保护这些白帽子才能保护网络安全。不过想想某个被封的某云和被起诉的白帽子，也就是想想罢了，还是自己保护自己吧。
>
>
>

### 2 个严重程度为 9.8 级的漏洞正在被利用！

之前我们 [报道](/article-14574-1.html) 过 F5 的 BIG-IP 防火墙有一个评分为 9.8（满分为 10）的漏洞正在被利用，F5 已经提供了相关补丁。而更早一些时候，VMware 多个产品系列的未修补版本也被发现存在 9.8 级的安全漏洞。这两个漏洞使攻击者有能力远程执行恶意代码或命令，并以不受约束的 root 系统权限运行。而根据披露的补丁，攻击者可以很快就开发出相关的攻击代码，并将其积极投入利用。

>
> **[消息来源：arstechnica](https://arstechnica.com/information-technology/2022/05/2-vulnerabilities-with-9-8-severity-ratings-are-under-exploit-a-3rd-looms/)**
>
>
>

>
> 老王点评：随着世界局势不稳定，这种恶性漏洞也会越来越多的被发现。再结合上一条，你品一下。
>
>
>

### 谷歌宣布开源卸载友好协议 PSP

谷歌早在十多年前就对数据中心之间的流量进行加密，但加密和解密的处理需要大约 0.7% 的处理能力，以及相应的内存占用。这促使谷歌研发了 PSP 协议，将加密处理卸载到网卡上，也就是将本来由操作系统进行的一些数据包处理（如 TCP 分段、IP 分片、重组、校验、TCP 协议处理等）放到网卡硬件中去做，降低系统 CPU 消耗的同时提高处理的性能。PSP 加密卸载可节省约 0.5% 的谷歌整体处理能力。

>
> **[消息来源：谷歌](https://cloud.google.com/blog/products/identity-security/announcing-psp-security-protocol-is-now-open-source)**
>
>
>

>
> 老王点评：虽然谷歌总是被批评，但是平心而论，无论是科研水平，还是开放程度，都不是一般的科技公司能比拟的。
>
>
>


无法在 Ubuntu 22.04 上运行 AppImage？这是解决方法

感谢，成功解决了

没用，不适配所以

感谢

# 无法在 Ubuntu 22.04 上运行 AppImage？这是解决方法

最近发布的 [Ubuntu 22.04 LTS 充满了新的视觉变化和功能](https://itsfoss.com/ubuntu-22-04-release-features/)。

但与任何其他版本一样，它也存在一些错误和问题。

我在 Ubuntu 22.04 中遇到的令人不快的惊喜之一是 AppImage 应用。

即使拥有所有正确的权限，AppImage 应用也会拒绝在我新安装的 Ubuntu 22.04 系统中启动。

如果你遇到类似的情况，我有个好消息要告诉你。修复非常简单。

### 在 Ubuntu 22.04 LTS 中运行 AppImage 应用

这里的问题是 Ubuntu 22.04 缺少 [FUSE（用户空间中的文件系统）库](https://packages.debian.org/sid/libfuse2)。FUSE 库为用户空间程序提供了一个接口，可以将虚拟文件系统导出到 Linux 内核。

这就是 [AppImage 在虚拟文件系统上的工作方式](https://itsfoss.com/use-appimage-linux/)。由于缺少这个关键库，AppImage 无法按预期工作。

现在你了解了问题的根本原因，让我们看看如何使其工作。

#### 第 1 步：安装 libfuse

在 Ubuntu 中打开终端并使用以下命令安装 FUSE 库支持：

```
sudo apt install libfuse2

```

如果你不熟悉终端，那么你需要了解以下内容。它会要求你输入 `sudo` 密码。实际上，那是你的帐户密码。 **当你输入密码时，屏幕上不会显示任何内容**。这是设计使然。只需继续输入密码并输入。

#### 第 2 步：确保 AppImage 文件具有正确的文件权限

这个不用说了。你需要对下载的应用的 AppImage 文件具有“执行”权限。

转到你已下载所需应用的 AppImage 文件的文件夹。右键单击并选择<ruby> 属性 <rt>  Properties </rt></ruby>。

现在转到<ruby> 权限 <rt>  Permissions </rt></ruby>选项卡并选中“<ruby> 允许将文件作为程序执行 <rt>  Allow executing file as program </rt></ruby>”选项。

设置完成后就好了。现在只需双击该文件，它就会按预期运行应用。

获取 libfuse 的这个小步骤已经在我的 [安装 Ubuntu 22.04 后推荐要做的事情列表](https://itsfoss.com/things-to-do-after-installing-ubuntu-22-04/) 上了。

### 进一步的故障排除提示

你的 AppImage 文件仍未运行？你下载的 AppImage 可能会出现一些其他问题，使其无法运行。

检查它的一种方法是下载一个已知的应用，如 [Balena Etcher](https://www.balena.io/etcher/) 并查看其 AppImage 文件是否有效。如果这个没问题，那么当你下载的另一个应用的 AppImage 文件无法工作，你可以通过从终端运行 AppImage 文件并分析它显示的错误来深入挖掘。

### 对你有用吗？

继续尝试。如果有效，请给我写个“感谢”。如果仍然没有解决，请在评论部分中提及详细信息，我会尽力帮助你。

（该图片由 [Ryan McGuire](https://pixabay.com/zh/users/ryanmcguire-123690/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=362150) 在 [Pixabay](https://pixabay.com/zh/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=362150) 上发布）

---

via: <https://itsfoss.com/cant-run-appimage-ubuntu/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


用 XML 和 Java 构建树莓派打印机的用户界面

Summary: 使用 TotalCross 来快速构建嵌入式系统程序的用户界面。

使用 TotalCross 来快速构建嵌入式系统程序的用户界面。

# 用 XML 和 Java 构建树莓派打印机的用户界面

>
> 使用 TotalCross 来快速构建嵌入式系统程序的用户界面。
>
>
>

从头开始构建 GUI 是一个非常耗时的过程，以硬编码的方式处理所有的位置和对齐对于一些程序员来说确实很困难。所以在本文中，我将演示如何使用 XML 加快这一过程。

本项目使用 [TotalCross](https://opensource.com/article/20/7/totalcross-cross-platform-development) 作为目标框架。TotalCross 是一个开源的跨平台软件开发工具包（SDK），旨在更快地为嵌入式设备创建 GUI。TotalCross 无需在设备上运行 Java 即可提供 Java 的开发优势，因为它使用自己的字节码和虚拟机（<ruby> TC 字节码 <rt>  TC bytecode </rt></ruby> 和 TCVM）来增强性能。

我还使用了 Knowcode-XML，这是一个用于 TotalCross 框架的开源 XML 解析器，它可以将 XML 文件转换为 TotalCross 组件。

### 项目需求

要重现此项目，你需要：

* [KnowCode-XML](https://github.com/TotalCross/knowcode-xml)
* [VSCode](https://code.visualstudio.com/) 或 [VSCodium](https://opensource.com/article/20/6/open-source-alternatives-vs-code)
* [一个 Android 开发环境](https://developer.android.com/studio)
* [用于 VSCode 的 TotalCross 插件](https://marketplace.visualstudio.com/items?itemName=totalcross.vscode-totalcross)
* 适用于你的开发平台（[Linux](https://opensource.com/article/19/11/install-java-linux)、[Mac](https://opensource.com/article/20/7/install-java-mac) 或 [Windows](http://adoptopenjdk.net)）的 Java，需要 Java 11（或更高版本）
* [Git](https://opensource.com/life/16/7/stumbling-git)

### 制作嵌入式应用程序

该应用程序由一个具有扫描、打印和复印等基本打印功能的嵌入式 GUI 组成。

构建这个 GUI 需要几个步骤，包括使用 Android-XML 生成 GUI，然后使用 Knowcode-XML 解析器在 TotalCross 框架上运行它。

#### 1、生成 Android XML

要创建 XML 文件，首先构建一个简单的 Android 屏幕，然后对其进行自定义。如果你不知道如何编写 Android-XML，或者你只是想简单尝试一下，你可以从这个 [GitHub 项目](https://github.com/TotalCross/embedded-samples/tree/main/printer-application/src/main/resources/layout) 中下载这个应用程序的 XML。该项目还包含渲染 GUI 要用到的图片。

#### 2、调整 XML

生成 XML 文件后，你需要进行一些微调以确保所有内容都已经对齐、比例正确并且图像的路径正确。

将 XML 布局添加到 `Layouts` 文件夹，将所有资源添加到 `Drawable` 文件夹。然后你就可以开始自定义 XML 了。

例如，如果想要更改 XML 对象的背景，可以更改 `android:background` 属性：

```
android:background="@drawable/scan"

```

你也可以使用 `tools:layout_editor_absoluteX` 和 `tools:layout_editor_absoluteY` 更改对象的位置：

```
tools:layout_editor_absoluteX="830dp"
tools:layout_editor_absoluteY="511dp"

```

或者使用 `android:layout_width` 和 `android:layout_height` 更改对象的大小：

```
android:layout_width="70dp"
android:layout_height="70dp"

```

如果要在对象上放置文本，可以使用 `android:textSize`、`android:text`、`android:textStyle` 和 `android:textColor`：

```
android:textStyle="bold"
android:textColor="#000000"
android:textSize="20dp"
android:text="2:45PM"

```

下面是一个完整的 XML 对象的示例：

```
    <ImageButton
           android:id="@+id/ImageButton"
           android:layout_width="70dp"
           android:layout_height="70dp"
           tools:layout_editor_absoluteX="830dp"
           tools:layout_editor_absoluteY="511dp"
           android:background="@drawable/home_config" />

```

#### 3、在 TotalCross 上运行 GUI

完成所有 XML 调整后，就可以在 TotalCross 上运行它了。在 TotalCross 扩展（LCTT 译注：在 VSCode 里面）上创建一个新项目，并将 `XML` 和 `Drawable` 文件夹添加到 `Main` 文件夹里。如果你仍然不确定如何创建 TotalCross 项目，请参阅我们的 [入门指南](https://totalcross.com/get-started/?utm_source=opensource&utm_medium=article&utm_campaign=printer)。

配置好环境后，使用 `totalcross.knowcode.parse.XmlContainerFactory` 和 `import totalcross.knowcode.parse.XmlContainerLayout` 在 TotalCross 框架上使用 XML GUI。 你可以在其 [GitHub 页面](https://github.com/TotalCross/knowcode-xml) 上找到更多关于使用 KnowCode-XML 的信息。

#### 4、添加过渡效果

这个项目的平滑过渡效果是由 `SlidingNavigator` 类创建的，它使用 TotalCross 的 `ControlAnimation` 类从一个屏幕滑到另一个屏幕。

在 `XMLpresenter` 类上调用 `SlidingNavigator`：

```
new SlidingNavigator(this).present(HomePresenter.class);

```

在 `SlidingNavigator` 类上实现 `present` 函数：

```
public void present(Class<? extends XMLPresenter> presenterClass)
         throws InstantiationException, IllegalAccessException {
      final XMLPresenter presenter = cache.containsKey(presenterClass) ? cache.get(presenterClass)
            : presenterClass.newInstance();
      if (!cache.containsKey(presenterClass)) {
         cache.put(presenterClass, presenter);
      }

      if (presenters.isEmpty()) {
         window.add(presenter.content, LEFT, TOP, FILL, FILL);
      } else {
         XMLPresenter previous = presenters.lastElement();

         window.add(presenter.content, AFTER, TOP, SCREENSIZE, SCREENSIZE, previous.content);

```

使用动画控件中的 `PathAnimation` 来创建从一个屏幕到另一个屏幕的滑动动画：

```
         PathAnimation.create(previous.content, -Settings.screenWidth, 0, new ControlAnimation.AnimationFinished() {
            @Override
            public void onAnimationFinished(ControlAnimation anim) {
               window.remove(previous.content);
            }
         }, 1000).with(PathAnimation.create(presenter.content, 0, 0, new ControlAnimation.AnimationFinished() {
            @Override
            public void onAnimation Finished(Control Animation anim) {
               presenter.content.setRect(LEFT, TOP, FILL, FILL);
            }
         }, 1000)).start();
      }
      presenter.setNavigator(this);
      presenters.push(presenter);
      presenter.bind2();
      if (presenter.isFirstPresent) {
         presenter.onPresent();
         presenter.isFirstPresent = false;
      }

```

#### 5、加载环形进度条

打印机应用程序的另一个不错的功能是显示进度的加载屏幕动画。它包括文本和旋转动画。

通过添加定时器和定时器监听器来更新进度标签，然后调用函数 `spinner.start()` 来实现此功能。所有的动画都是由 TotalCross 和 KnowCode 自动生成的：

```
public void startSpinner() {
        time = content.addTimer(500);
        content.addTimerListener((e) -> {
            try {
                progress(); // Updates the Label
            } catch (InstantiationException | IllegalAccessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        });
        Spinner spinner = (Spinner) ((XmlContainerLayout) content).getControlByID("@+id/spinner");
        spinner.start();
    }

```

这里的环形进度条被实例化为对 XML 文件中描述的 `XmlContainerLayout` `spinner` 的引用：

```
<ProgressBar
android:id="@+id/spinner"
android:layout_width="362dp"
android:layout_height="358dp"
tools:layout_editor_absoluteX="296dp"
tools:layout_editor_absoluteY="198dp"
   android:indeterminateTint="#2B05C7"
style="?android:attr/progressBarStyle" />

```

#### 6、构建应用程序

是时候构建应用程序了。你可以在 `pom.xml` 中查看和更改<ruby> 目标系统 <rt>  target systems </rt></ruby>。 请确保 `Linux Arm` 目标可用。

如果你使用的是 VSCode，请按下键盘上的 `F1` 键，选择 `TotalCross: Package` 并等待完成。 然后就可以在 `Target` 文件夹中看到安装文件了。

#### 7、在树莓派上部署和运行应用程序

要使用 SSH 协议在 [树莓派](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) 上部署应用程序，请按键盘上的 `F1`。选择 `TotalCross: Deploy&Run` 并提供有关你的 SSH 连接的信息，如：用户名、IP地址、密码和应用程序路径。

### 总结

KnowCode 让使用 Java 创建和管理应用程序屏幕变得更加容易。Knowcode-XML 将你的 XML 转换为 TotalCross GUI 界面，然后生成二进制文件以在你的树莓派上运行。

将 KnowCode 技术与 TotalCross 相结合，使你能够更快地创建嵌入式应用程序。 你可以访问我们在 GitHub 上的 [嵌入式示例](https://github.com/TotalCross/embedded-samples) 并编辑你自己的应用程序，了解你还可以做什么。

如果你有问题、需要帮助，或者只是想与其他嵌入式 GUI 开发人员互动，请随时加入我们的 [Telegram](https://t.me/totalcrosscommunity) 小组，讨论任何框架上的嵌入式应用程序。

---

via: <https://opensource.com/article/21/3/raspberry-pi-totalcross>

作者：[Edson Holanda Teixeira Junior](https://opensource.com/users/edsonhtj) 选题：[lujun9972](https://github.com/lujun9972) 译者：[CoWave-Fall](https://github.com/CoWave-Fall) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Go 中生成随机的安全密码

Summary: Go 的随机数生成器是生成难以猜测的密码的好方法。

Go 的随机数生成器是生成难以猜测的密码的好方法。

# 在 Go 中生成随机的安全密码

>
> Go 的随机数生成器是生成难以猜测的密码的好方法。
>
>
>

你可以使用 [Go 编程语言](https://golang.org/) 提供的随机数生成器来生成由 ASCII 字符组成的难以猜测的密码。尽管本文中提供的代码很容易阅读，但是你仍需要了解 Go 的基础知识，才能更好地理解它。如果你是对 Go 还不熟悉，请阅读 [Go 语言之旅](https://tour.golang.org/welcome/1) 来了解更多信息，然后返回此处。

在介绍实用程序和它的代码之前，让我们先来看看这个 ASCII 表的子集，它可以在 `man ascii` 命令的输出中找到：

```
30 40 50 60 70 80 90 100 110 120
 ---------------------------------
0:    (  2  <  F  P  Z  d   n   x
1:    )  3  =  G  Q  [  e   o   y
2:    *  4  >  H  R  \  f   p   z
3: !  +  5  ?  I  S  ]  g   q   {
4: "  ,  6  @  J  T  ^  h   r   |
5: #  -  7  A  K  U  _  i   s   }
6: $  .  8  B  L  V  `  j   t   ~
7: %  /  9  C  M  W  a  k   u  DEL
8: &  0  :  D  N  X  b  l   v
9: '  1  ;  E  O  Y  c  m   w

```

在所有 ASCII 字符中，可打印字符的十进制值范围为 33 到 126，其他的 ASCII 值都不适合用于密码。因此，本文介绍的实用程序将生成该范围内的 ASCII 字符。

### 生成随机整数

第一个实用程序名为 `random.go`，它生成指定数量的随机整数，这些整数位于给定范围内。`random.go` 最重要的部分是这个函数：

```
func random(min, max int) int {
    return rand.Intn(max-min) + min
}

```

此函数使用了 `rand.Intn()` 函数来生成一个属于给定范围的随机整数。请注意，`rand.Intn()` 返回一个属于 `[0,n)` 的非负随机整数。如果它的参数是一个负数，这个函数将会抛出异常，异常消息是：`panic: invalid argument to Intn`。你可以在 [math/rand 文档](https://golang.org/pkg/math/rand/) 中找到 `math/rand` 包的使用说明。

`random.go` 实用程序接受三个命令行参数：生成的整数的最小值、最大值和个数。

编译和执行 `random.go` 会产生这样的输出：

```
$ go build random.go
$ ./random
Usage: ./random MIX MAX TOTAL
$ ./random 1 3 10
2 2 1 2 2 1 1 2 2 1

```

如果你希望在 Go 中生成更安全的随机数，请使用 Go 库中的 `crypto/rand` 包。

### 生成随机密码

第二个实用程序 `randomPass.go` 用于生成随机密码。`randomPass.go` 使用 `random()` 函数来生成随机整数，它们随后被以下 Go 代码转换为 ASCII 字符：

```
for {
    myRand := random(MIN, MAX)
    newChar := string(startChar[0] + byte(myRand))
    fmt.Print(newChar)
    if i == LENGTH {
        break
    }
    i++
}

```

`MIN` 的值为 `0`，`MAX` 的值为 `94`，而 `startChar` 的值为 `!`，它是 ASCII 表中第一个可打印的字符（十进制 ASCII 码为 `33`）。因此，所有生成的 ASCII 字符都位于 `!` 和 `~` 之间，后者的十进制 ASCII 码为 `126`。

因此，生成的每个随机数都大于 `MIN`，小于 `MAX`，并转换为 ASCII 字符。该过程继续进行，直到生成的密码达到指定的长度。

`randomPass.go` 实用程序接受单个（可选）命令行参数，以定义生成密码的长度，默认值为 8，这是一个非常常见的密码长度。执行 `randomPass.go` 会得到类似下面的输出：

```
$ go run randomPass.go 1
Z
$ go run randomPass.go 10
#Cw^a#IwkT
$ go run randomPass.go
Using default values!
[PP8@'Ci

```

最后一个细节：不要忘记调用 `rand.Seed()`，并提供一个<ruby> 种子 <rt>  seed </rt></ruby>值，以初始化随机数生成器。如果你始终使用相同的种子值，随机数生成器将生成相同的随机整数序列。

你可以在 [GitHub](https://github.com/mactsouk/opensource.com) 找到 `random.go` 和 `randomPass.go` 的源码。你也可以直接在 [play.golang.org](https://play.golang.org/) 上执行它们。

我希望这篇文章对你有所帮助。如有任何问题，请在下方发表评论或在 [Twitter](https://twitter.com/mactsouk) 上与我联系。

---

via: <https://opensource.com/article/18/5/creating-random-secure-passwords-go>

作者：[Mihalis Tsoukalos](https://opensource.com/users/mtsouk) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #643 谷歌的人工智能 PaLM 能够懂你的玩笑

Summary: • 谷歌的人工智能 PaLM 能够懂你的玩笑 • 英国政府网站 GOV.UK 移除 jQuery 以改进性能 • Ubuntu 正在努力集成微软的 Azure AD

# 硬核观察 #643 谷歌的人工智能 PaLM 能够懂你的玩笑

### 谷歌的人工智能 PaLM 能够懂你的玩笑

笑话、讽刺和幽默需要了解语言和人类行为的微妙之处，人类能够理解这些是从多年的人类互动中学到的。谷歌迄今为止最大的人工智能模型 PaLM，经过 5400 亿个参数的训练，在没有经过明确的幽默和笑话逻辑的训练就学会了理解幽默，在被灌输了两个笑话后，它能够解释它们并给出一个解释。在一篇博文中，谷歌展示了 PaLM 是如何理解一个互联网上没有的新颖笑话的。这已经超越了许多科幻小说中的人工智能的水平。

>
> **[消息来源：CNET](https://www.cnet.com/tech/services-and-software/no-joke-googles-ai-is-smart-enough-to-understand-your-humor/)**
>
>
>

>
> 老王点评：5400 亿个参数，这比 GPT-3 的 1750 亿个还夸张！而其所能做到的事情也更令人吃惊，以后可以和 AI 开玩笑而不会被它当真了。
>
>
>

### 英国政府网站 GOV.UK 移除 jQuery 以改进性能

jQuery 诞生于 15 年前，是最广泛使用的 JS 库之一，数据显示 2021 年有 84% 的移动网页使用它。因为其普遍性，转而导致它所提供的东西成为 Web 平台本身的一部分。如今，我们几乎可以用普通的 JavaScript 做任何 jQuery 能做的事情，虽然语法更长一点。因此，在 jQuery 提供的便利性和性能之间就有人做出了选择，英国政府网站 GOV.UK 在 3 月移除了 jQuery 库。结果显示网站整体上减少了前端处理的时间，95% 的用户减少了 10% 的等待时间。

>
> **[消息来源：Web Dev](https://web.dev/gov-uk-drops-jquery/)**
>
>
>

>
> 老王点评：我觉得虽然 jQuery 已经显示出了老态，但是 jQuery 30kb 的大小真不是什么负担，就为这些而重新改写大量网页，我觉得不值得。
>
>
>

### Ubuntu 正在努力集成微软的 Azure AD

Canonical 从 Ubuntu 20.10 开始集成微软的活动目录（AD）。根据 Ubuntu 桌面团队更新，多名 Canonical 工程师现在正致力于对 Azure AD 的支持。Azure AD（AAD）是微软的 Azure 驱动的身份管理解决方案，作为内部活动目录的替代品，为那些寻求“身份即服务”的人提供单点登录、多因素认证和各种网络安全保障。Ubuntu 的这一举措是为了让 Linux 桌面在企业使用中更有吸引力，并更好地整合到企业环境。

>
> **[消息来源：Phoronix](https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-MS-Azure-AD-Integration)**
>
>
>

>
> 老王点评：自从 Ubuntu 率先进入了微软商店，Canonical 就和微软走的越来越近了。
>
>
>


在 Go 中实现一个支持并发的 TCP 服务端

Summary: 仅用大约 65 行代码，开发一个用于生成随机数、支持并发的 TCP 服务端。

仅用大约 65 行代码，开发一个用于生成随机数、支持并发的 TCP 服务端。

# 在 Go 中实现一个支持并发的 TCP 服务端

>
> 仅用大约 65 行代码，开发一个用于生成随机数、支持并发的 TCP 服务端。
>
>
>

TCP 和 UDP 服务端随处可见，它们基于 TCP/IP 协议栈，通过网络为客户端提供服务。在这篇文章中，我将介绍如何使用 [Go 语言](https://golang.org/) 开发一个用于返回随机数、支持并发的 TCP 服务端。对于每一个来自 TCP 客户端的连接，它都会启动一个新的 goroutine（轻量级线程）来处理相应的请求。

你可以在 GitHub 上找到本项目的源码：[concTcp.go](https://github.com/mactsouk/opensource.com)。

### 处理 TCP 连接

这个程序的主要逻辑在 `handleConnection()` 函数中，具体实现如下：

```
func handleConnection(c net.Conn) {
        fmt.Printf("Serving %s\n", c.RemoteAddr().String())
        for {
                netData, err := bufio.NewReader(c).ReadString('\n')
                if err != nil {
                        fmt.Println(err)
                        return
                }

                temp := strings.TrimSpace(string(netData))
                if temp == "STOP" {
                        break
                }

                result := strconv.Itoa(random()) + "\n"
                c.Write([]byte(string(result)))
        }
        c.Close()
}

```

如果 TCP 客户端发送了一个 “STOP” 字符串，为它提供服务的 goroutine 就会终止；否则，TCP 服务端就会返回一个随机数给它。只要客户端不主动终止，服务端就会一直提供服务，这是由 `for` 循环保证的。具体来说，`for` 循环中的代码使用了 `bufio.NewReader(c).ReadString('\n')` 来逐行读取客户端发来的数据，并使用 `c.Write([]byte(string(result)))` 来返回数据（生成的随机数）。你可以在 Go 的 net 标准包 [文档](https://golang.org/pkg/net/) 中了解更多。

### 支持并发

在 `main()` 函数的实现部分，每当 TCP 服务端收到 TCP 客户端的连接请求，它都会启动一个新的 goroutine 来为这个请求提供服务。

```
func main() {
        arguments := os.Args
        if len(arguments) == 1 {
                fmt.Println("Please provide a port number!")
                return
        }

        PORT := ":" + arguments[1]
        l, err := net.Listen("tcp4", PORT)
        if err != nil {
                fmt.Println(err)
                return
        }
        defer l.Close()
        rand.Seed(time.Now().Unix())

        for {
                c, err := l.Accept()
                if err != nil {
                        fmt.Println(err)
                        return
                }
                go handleConnection(c)
        }
}

```

首先，`main()` 确保程序至少有一个命令行参数。注意，现有代码并没有检查这个参数是否为有效的 TCP 端口号。不过，如果它是一个无效的 TCP 端口号，`net.Listen()` 就会调用失败，并返回一个错误信息，类似下面这样：

```
$ go run concTCP.go 12a
listen tcp4: lookup tcp4/12a: nodename nor servname provided, or not known
$ go run concTCP.go -10
listen tcp4: address -10: invalid port

```

`net.Listen()` 函数用于告诉 Go 接受网络连接，因而承担了服务端的角色。它的返回值类型是 `net.Conn`，后者实现了 `io.Reader` 和 `io.Writer` 接口。此外，`main()` 函数中还调用了 `rand.Seed()` 函数，用于初始化随机数生成器。最后，`for` 循环允许程序一直使用 `Accept()` 函数来接受 TCP 客户端的连接请求，并以 goroutine 的方式来运行 `handleConnection(c)` 函数，处理客户端的后续请求。

### net.Listen() 的第一个参数

`net.Listen()` 函数的第一个参数定义了使用的网络类型，而第二个参数定义了服务端监听的地址和端口号。第一个参数的有效值为 `tcp`、`tcp4`、`tcp6`、`udp`、`udp4`、`udp6`、`ip`、`ip4`、`ip6`、`Unix`（Unix 套接字）、`Unixgram` 和 `Unixpacket`，其中：`tcp4`、`udp4` 和 `ip4` 只接受 IPv4 地址，而 `tcp6`、`udp6` 和 `ip6` 只接受 IPv6 地址。

### 服务端并发测试

`concTCP.go` 需要一个命令行参数，来指定监听的端口号。当它开始服务 TCP 客户端时，你会得到类似下面的输出：

```
$ go run concTCP.go 8001
Serving 127.0.0.1:62554
Serving 127.0.0.1:62556

```

`netstat` 的输出可以确认 `congTCP.go` 正在为多个 TCP 客户端提供服务，并且仍在继续监听建立连接的请求：

```
$ netstat -anp TCP | grep 8001
tcp4       0      0  127.0.0.1.8001         127.0.0.1.62556        ESTABLISHED
tcp4       0      0  127.0.0.1.62556        127.0.0.1.8001         ESTABLISHED
tcp4       0      0  127.0.0.1.8001         127.0.0.1.62554        ESTABLISHED
tcp4       0      0  127.0.0.1.62554        127.0.0.1.8001         ESTABLISHED
tcp4       0      0  *.8001                 *.*                    LISTEN

```

在上面输出中，最后一行显示了有一个进程正在监听 8001 端口，这意味着你可以继续连接 TCP 的 8001 端口。第一行和第二行显示了有一个已建立的 TCP 网络连接，它占用了 8001 和 62556 端口。相似地，第三行和第四行显示了有另一个已建立的 TCP 连接，它占用了 8001 和 62554 端口。

下面这张图片显示了 `concTCP.go` 在服务多个 TCP 客户端时的输出：

类似地，下面这张图片显示了两个 TCP 客户端的输出（使用了 `nc` 工具）：

你可以在 [维基百科](https://en.wikipedia.org/wiki/Netcat) 上找到更多关于 `nc`（即 `netcat`）的信息。

### 总结

现在，你学会了如何用大约 65 行 Go 代码来开发一个生成随机数、支持并发的 TCP 服务端，这真是太棒了！如果你想要让你的 TCP 服务端执行别的任务，只需要修改 `handleConnection()` 函数即可。

---

via: <https://opensource.com/article/18/5/building-concurrent-tcp-server-go>

作者：[Mihalis Tsoukalos](https://opensource.com/users/mtsouk) 选题：[lkxed](https://github.com/lkxed) 译者：[lkxed](https://github.com/lkxed) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


如何在 Fedora 36 工作站中启用最小化和最大化按钮

# 如何在 Fedora 36 工作站中启用最小化和最大化按钮

>
> 今天，我们将看到 Fedora 桌面的安装后步骤之一。这个简短的指南解释了如何在 Fedora GNOME 工作站和 Silverblue 版本的应用窗口中启用最小化和最大化按钮。
>
>
>

### 介绍

你可能已经知道，Fedora Silverblue 和 Fedora GNOME 工作站版本的应用窗口中没有最小化和最大化按钮。

如果要最小化应用窗口，需要右键单击其标题栏并从上下文菜单中选择最小化选项。

不幸的是，你甚至无法在 Firefox 中使用鼠标获得该选项。要最小化 Firefox 窗口，你要点击 `左 ALT+空格` 键并选择最小化选项。

我不知道隐藏最常用的按钮有什么好处。Ubuntu GNOME 桌面有最小/最大按钮，但 Fedora 没有。

如果你想恢复 Fedora GNOME 和 Silverblue 版本中的最小化和最大化按钮，你可以借助 Fedora 中的 **Gnome Tweaks** 程序和 “Dash to Panel” 扩展来启用它们。

### 在 Fedora 中安装 Gnome Tweaks

**Gnome Tweaks**，以前称为 **Tweak Tool**，是用于高级 GNOME 3 设置的图形界面。它主要是为 GNOME Shell 设计的，但也可以在其他桌面中使用。如果你在不同的桌面上使用 Tweaks，你可能无法拥有所有功能。它在 Fedora 的默认仓库中可用。因此，你可以使用 `dnf` 包管理器在 Fedora 上安装 Gnome Tweaks，如下所示：

```
$ sudo dnf install gnome-tweaks

```

如果你使用 Fedora Silverblue，你需要使用以下命令进入你的 toolbox 容器：

```
$ toolbox enter

```

然后按照前面的命令安装 Tweaks。

### 在浏览器中添加 Gnome Shell 集成插件

确保你在浏览器中添加了 “Gnome Shell 集成” 插件。此扩展提供与 GNOME shell 和相应扩展仓库的集成。

如果你尚未添加它，请转到插件页并搜索并安装它。

将出现一个弹出窗口。单击“添加”以启用加载项。添加此扩展程序后，你将在浏览器的工具栏上看到 GNOME 图标。

### 在 Fedora 中启用 Dash 到面板扩展

“Dash to panel” 扩展是 Gnome Shell 的图标任务栏。此扩展将 dash 移动到 GNOME 主面板中，以便将应用启动器和系统托盘组合到一个面板中，类似于 KDE Plasma 和 Windows 7 以上操作系统中的面板。

“Dash to panel” 扩展为你提供了一个永久可见的面板，其中包含最喜欢的快捷方式。因此，不再需要单独的停靠区来轻松访问正在运行和收藏的应用。

要启用 “Dash to panel” 扩展，请进入 GNOME 扩展站点并搜索 “Dash to panel” 扩展。

单击搜索结果中的 “Dash to panel” 链接。你将被重定向到 “Dash to panel” 扩展的官方页面。点击 “ON” 按钮。

在下一个窗口中，单击安装按钮以启用 “Dash to panel” 扩展。

激活此扩展程序后，你将在底部看到 Dash 面板以及你最喜欢的快捷方式。

### 在 Fedora 中启用最小化和最大化按钮

打开 Gnome Tweaks 应用。进入 “<ruby> 窗口标题栏 <rt>  Windows Titlebars </rt></ruby>” 并打开最小/最大按钮。

当你打开开关后，最小化和最大化按钮将出现在所有应用的窗口中。

默认情况下，最小/最大按钮在右侧可见。你可以将其位置更改为左侧或右侧。

“Dash to panel” 扩展有很多微调和自定义选项。右键单击 Dash 面板并选择设置选项，然后根据你的喜好开始对其进行自定义。

### 资源

>
> **[Dash to panel 网站](https://extensions.gnome.org/extension/1160/dash-to-panel/)**
>
>
>

---

via: <https://ostechnix.com/how-to-enable-minimize-and-maximize-buttons-in-fedora/>

作者：[sk](https://ostechnix.com/author/sk/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


开源为可持续发展技术提供新思路

# 开源为可持续发展技术提供新思路

>
> 开源和社会对于更为稳定的技术演进的需求具有相同的目标，即实现一个更为可持续的未来。
>
>
>

<img src="content_image/album_202205_22_160753zekl2094033e4igr.jpg" alt="" title="">

在可持续发展和环境问题上，目前正在发生明确的变化。关注地球的状况并为之做出努力已经成为主流思想。举个例子，看看基于气候的风险资本主义。<ruby> 气候技术风险投资公司 <rt>  Climate Tech Venture Capital </rt></ruby>（CTVC）的气候资本名单在过去两年中增加了 [一倍多](https://climatetechvc.substack.com/p/-a-running-list-of-climate-tech-vcs?s=w)。涌入的资本表明了人们对解决艰难的气候挑战的愿望和意愿。

人们想采取行动，这很好，我持相同态度！但我也看到了一个真正的风险：当人们急于采取行动并参与到其中时，他们可能会不知不觉地卷入洗绿运动中。

维基百科对 “<ruby> 洗绿 <rt>  greenwashing </rt></ruby>” 的定义称其为 “一种营销策略，其中绿色公关和绿色营销被欺骗性地用来说服公众，使其相信一个组织的产品、目标和政策是环保的”。在我看来，洗绿既是有意为之，也是无意中发生的。外面有很多想有所作为的好人，但对复杂的环境系统或围绕可持续发展的问题的深度还不甚了解。

我们很容易落入这样的陷阱，即认为通过植树来抵消旅行或数据中心的排放等简单的购买行为会使一些东西变得更加绿色。虽然这些努力是值得提倡的，而且植树是改善可持续发展的一个可行的解决方案，但它们只是一个很好的开端，仍然需要进行更多的努力才能真正产生变革。

那么，一个人或一个社区可以做些什么来使数字技术真正地更加可持续？

“可持续性”对不同的人有不同的含义。我喜欢的最简短的定义来自 1987 年的《<ruby> 布伦特兰报告 <rt>  Bruntland Report </rt></ruby>》，该报告将其概括为 “既能满足当代的需要，同时又不损及后代满足其需要的发展模式”。可持续发展的核心是优先考虑长期思维。

### 可持续发展不仅仅是保护环境

在可持续性的定义中，有三个相互关联的关键支柱：

1. 环境
2. 经济 / 政策
3. 社会

关于可持续发展的讨论越来越多地被气候危机所主导，这是有道理的。随着我们继续通过不可逆转的生态临界点，减少世界上较富裕国家的碳排放的需求变得越来越紧迫。但真正的可持续性是一套更全面的体系，正如三大支柱所展示的那样。

碳排放无疑是可持续性的一部分。许多人认为排放只是一个环境问题。只要从空气中移除更多的碳，一切都会好起来。但社会问题也是可持续性的一部分。谁会受到这些碳排放的影响？谁将承受我们气候变化带来的最大影响？谁因海平面上升而失去了家园，或因天气模式变化而失去了可靠的水源？这就是为什么你可能听说过 “气候正义就是社会正义” 这句话。

仅仅把减碳看作是可持续发展会令你的视野被限定在碳上。我经常认为，气候变化是社会在更大范围内错失可持续性的一个症状。相反，关键是要解决首先导致气候变化的根本原因。解决这些问题将使长期解决这些问题成为可能，而短期解决可能只会将问题推向另一个脆弱的边缘。

其根本原因很复杂。但是，如果我追根溯源，我看到根源是由西方的主流价值观和旨在延续这些价值观的制度所驱动的。这些价值观是什么呢？一语概之，它们是快速增长和对利润的攫取高于一切。

这就是为什么关于可持续性的对话如果不包括社会问题或经济的设计方式，就不会达成真正的解决方案。毕竟，社会和掌握权力的人决定了他们自己的价值观是什么，或者不是什么。

### 我能做什么？

科技领域的许多人目前正致力于解决这些问题，并想知道怎样行动更有意义。一个常见的方法是研究如何优化他们制造的技术，使其更有效地使用电力。世界上 60% 的电力仍然是通过燃烧化石燃料产生的，尽管可再生能源的发电能力不断提高。但从逻辑上讲，使用更少的电力意味着产生更少的碳排放。

是的，这是很有意义的，任何人都可以尝试，立即就能生效。当用户加载一个页面时，优化发送的资源，以发送更少的数据，将使用更少的能源。因此，优化服务器，使其在一天中的不同时段运行，例如，当有更多的可再生能源可用时运行，或删除多余信息的旧存储，如分析数据或日志。

但考虑到<ruby> 杰文 <rt>  Jevon </rt></ruby>的悖论：使某样东西更有效率往往会导致使用更多的东西，而不是减少。当人们更容易和更便于使用某样东西时，他们最终会使用更多。在某种角度，这是好的。性能更好的技术是一件好事，有助于提高包容性和触及性，这对社会是有益的。但是，气候变化和可持续性的长期解决方案需要围绕社会和技术之间的关系进行更深入、更令人不适的对话。所有这些技术在为什么和谁服务？它正在加速哪些行为和做法？

将技术的演进视为进步很正常，一些人认为：技术将把世界从气候变化中拯救出来。一些聪明的人正在通过艰苦卓绝的努力改善这一问题，所以其他人不需要改变他们的方式。问题是，许多社区和生态系统已经在遭受更大的创伤。

例如，对更多更高速传输的数据的追求正在导致智利的一些社区没有足够的水来种植农作物。因为数据中心正在使用这些宝贵的水源。移动电话造成的污染有 70% 来自于其制造。制造移动设备并为其提供动力的锂和钴等原材料通常是从弱势的社区中提取的，而这些社区几乎没有能力阻止制造商对其土地的破坏，当然也没有分享所获利润。尽管如此，每两年升级一次手机的做法已经变得很普遍了。

### 开源思路引领可持续发展之路

现在是时候将数字技术的使用视为一种宝贵的资源，这对地球和（通常已经处于弱势的）社区都有影响。

开源社区已经帮助人们认识到有另一种解决方案：开源。开源与我们更广泛的社会为实现更可持续的未来而需要做的事情之间有巨大的相似之处。更加开放和包容是其中的一个关键部分。

我们还需要在社会的各个层面进行思维转变，将数字技术视为有代价的增长，而不是我们今天看到的大量廉价和免费的东西。我们需要明智地将其优先用于对于社会而言最为重要的事情。更重要的是，我们需要关注并消除其创造和长期使用所带来的危害，并与社会上的每个人公平地分享其创造的财富，无论他们是否是数字技术的使用者。这些事情不会在一夜之间发生，但它们是我们可以共同推动的事情，以便我们都能长期、可持续地享受数字技术的好处。

本文节选自一篇较长的演讲。要想看到演讲的全文或查看幻灯片，请参见《[我们如何使数字技术更具有可持续性](https://opcan.co.uk/talk/wordfest-live-2022)》一文。

---

via: <https://opensource.com/article/22/5/open-source-sustainable-technology>

作者：[Hannah Smith](https://opensource.com/users/hanopcan) 选题：[lkxed](https://github.com/lkxed) 译者：[PeterPan0106](https://github.com/PeterPan0106) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary: • 微软警示一个针对 Linux 设备的“隐形 DDoS 恶意软件” • 美国政府首次对用加密货币躲避制裁提出刑事指控 • Rust 供应链攻击感染云 CI 管道

美国人考虑的主要是执法成本，现在勒索病毒到底是谁搞得，到底第一代勒索软件勒索的那些钱财被转到那里去了，过去了差不多20年了，依然没有一点线索

# 硬核观察 #644 微软警示一个针对 Linux 设备的“隐形 DDoS 恶意软件”

### 微软警示一个针对 Linux 设备的“隐形 DDoS 恶意软件”

微软发现一个名为 XorDdos 的 Linux 木马的活动大幅增加。这是一个结合了拒绝服务功能和基于 XOR 通信加密的木马，它是 2021 年最活跃的基于 Linux 的恶意软件家族之一。它会对 Linux 服务器进行自动密码猜测攻击，以找到 SSH 服务器上使用的管理密码。微软怀疑其被用作后续恶意活动的一个载体。

>
> [消息来源：ZDNet](https://www.zdnet.com/article/microsoft-this-botnet-is-growing-fast-and-hunting-for-servers-with-weak-passwords/)
>
>
>

>
> 老王点评：木马不稀奇，稀奇的是微软开始为 Linux 的安全而担忧——但其实这也很正常，Azure 上有很多 Linux 服务器。
>
>
>

### 美国政府首次对用加密货币躲避制裁提出刑事指控

上周，美国司法部批准了对一名美国人的刑事指控，“指控他向美国政府全面制裁的几个国家之一的虚拟货币交易所转账了价值超过 1000 万美元的比特币。”虽然一些法律专家认为，比特币、以太坊或 USDT 等虚拟货币不受美国制裁法的约束，因为它们是在传统金融体系之外创造和流动的。该案是美国第一个在制裁案件中仅针对使用加密货币的刑事起诉。这表明，在许多方面，加密货币不是逃避制裁或洗钱的好工具。顺便说一句，今天的比特币披萨节。

>
> **[消息来源：MSN](https://www.msn.com/en-us/money/news/us-issues-charges-in-first-criminal-cryptocurrency-sanctions-case/ar-AAXkfZp)**
>
>
>

>
> 老王点评：加密货币并不是法外之地，另一方面，加密货币的事实可追踪性也使得其并不适合违法行为。
>
>
>

### Rust 供应链攻击感染云 CI 管道

Rust 安全响应工作组发布了一份公告，宣布发现了一个托管在 Rust 依赖性社区仓库的恶意库。它会感染 GitLab 的持续集成（CI）管道，成为后续供应链攻击的助推器。它用错误的名字冒充知名的 `rust_decimal` 包，里面充斥着攻击者劫持受感染主机的各种功能，被一个热心的观察者发现并汇报给官方。

>
> **[消息来源：sentinelone](https://www.sentinelone.com/labs/cratedepression-rust-supply-chain-attack-infects-cloud-ci-pipelines-with-go-malware/)**
>
>
>

>
> 老王点评：软件供应链攻击被人们称之为“炸鱼”，可以一次性感染整个用户群。这种放大式的攻击，一旦得手，影响非常严重。我觉得软件包社区应该建立更好的监控和发现机制，而不是依赖某个人的偶尔发现。
>
>
>


迟早是要被这种害人的文章，把自己的系统搞垮的！

发表文章，要提示这样做的后果，其实是很危险的。

ubuntu目前是22.04，其中最重要的特征之一是:ubuntu桌面系统跟上gnome的步伐。ubuntu新版本使用gnome的稳定新版本，gnome公司对基础软件基于gnome环境重构，保证软件的质量和性能！

推荐他人安装非同步最新稳定桌面版本的gnome环境，但是基本的软件是基于最新版本的gnome环境重构的，会造成性能问题的！

来自江西南昌的 Chrome Mobile 96.0|Android 10 用户

可以装对应的mate版本啊

？ubuntu的软件基础是来自上游的debian sid提供的啊，ubuntu并没有直接采用gnome上游的软件包。而且gnome flashback本身也是属于gnome稳定系列的，就是gnome装了插件，换了窗口管理器、混成器而已。加上debian出色的包管理版本控制，所有软件所需的gtk库等libs在安装时就已经装好了，仅仅在软件调用的时候才会去加载。举个最简单的例子，gimp还是gtk2呢，有性能问题吗？lxde还是gtk2呢，运行gnome4x的软件遇到性能问题了吗？所以你说的什么系统搞垮，性能issue的，完全是你自己操作不当，不使用符合debian标准的第三方软件提供商所造成的

能有什么问题？不同的桌面环境技术上讲就是不同的软件包，用自己喜欢的软件换掉发行版提供的也很正常啊？有人用LibreOffice，有人用WPS。别的软件包换得，桌面环境换不得？

而且你告诉我，什么叫“基本的软件是基于最新版本的gnome环境重构的”？举例，Snap软件中心是GTK4，与Gnome有半毛钱的关系？什么叫基于Gnome重构？

你才是误人子弟，害人不浅！

# Ubuntu 22.04 LTS 中安装经典 GNOME Flashback 指南

>
> 关于如何在最新的 UBUNTU 22.04 LTS 中安装旧的经典 GNOME Flashback 的快速指南。
>
>
>

[GNOME Flashback](https://wiki.archlinux.org/index.php/GNOME/Flashback)（又名 classic GNOME）是旧 GNOME 3 shell 的一个分支，它使用早期 GNOME 2 技术的布局和原则。它的速度快如闪电，并且在设计上非常轻量级。因此，它非常适合几十年前的老旧硬件。

随着带有现代 GNOME 42 的 [Ubuntu 22.04 LTS](https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/) 的发布，有必要寻找轻量级的桌面环境选项。

此外，GNOME Flashback 很容易安装在现代 Ubuntu Linux 中，你仍然可以享受 Ubuntu 性能而不必关心 GNOME 42、GTK4、libadwaita 之类的东西。

### 在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback

按照以下步骤在 Ubuntu 22.04 LTS 中下载并安装经典 GNOME Flashback（Metacity）。

在 Ubuntu 22.04 LTS 中打开终端（CTRL+ALT+T）并运行以下命令。安装大小约为 61MB。

```
sudo apt update
sudo apt install gnome-session-flashback

```

最后，安装完成后，退出。重新登录时，在登录选项中使用经典的 GNOME Flashback（Metacity） 。

### 经典 GNOME Flashback 的特点

首先，当你登录时，你将体验到传统的 GNOME 技术，它已被证明具有良好的生产力，并且比今天的技术快得多。

在顶部有旧版的面板，左侧是应用菜单，而系统托盘位于桌面的右上方。应用程序菜单显示所有已安装的应用和软件快捷方式，你可以在工作流程中轻松浏览。

此外，在右侧部分，系统托盘具有默认小部件，例如网络、音量控制、日期和时间以及关机菜单。

底部面板包含打开的窗口和工作区切换器的应用列表。默认情况下，它为你提供四个工作区供你使用。

此外，你可以随时更改顶部面板的设置以自动隐藏、调整面板大小和背景颜色。

除此之外，你可以通过 `ALT + 右键点击` 顶部面板添加任意数量的旧版小程序。

### 经典 GNOME 的性能

首先，磁盘空间占用极小，仅安装 61 MB。我的测试使用了大约 28% 的内存，其中大部分被其他进程占用。猜猜是谁？是的，是 snap-store（又名 Ubuntu 软件）。

因此，总体而言，它非常轻巧，内存（仅 28 MB）和 CPU（0.1%）占用空间非常小。

此外，假设你将其与同样使用相同技术的 Ubuntu MATE 进行比较。在这种情况下，它比 MATE 更轻量，因为你不需要任何额外的 MATE 应用及其用于通知、主题和其他附加资源的软件包。

### 结束语

我希望本指南在你决定在 Ubuntu 22.04 LTS Jammy Jellyfish 中安装经典 GNOME 之前帮助你获得必要的信息。

---

via: <https://www.debugpoint.com/2022/05/gnome-classic-ubuntu-22-04/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


自由软件基金会为什么不认为 Debian 是一种自由发行版？

显然有些时候，自由软件基金会已经成为了最终用户自由使用各种软件（包括所谓的自由软件和非自由软件）的某种阻碍。

FSF算了吧

fsf就喜欢稿政治正确

已经到重度洁癖了吧

# 自由软件基金会为什么不认为 Debian 是一种自由发行版？

<img src="content_image/album_202205_23_170940rrfu2sjrj7ct8jrr.png" alt="Why FSF doesn't consider Debian a free distribution" title="Why FSF doesn't consider Debian a free distribution">

Debian 项目开发了一个尊重用户自由的 GNU/Linux 发行版。在各种自由软件许可证下发布的软件中，其源代码中包含非自由组件的情形并不鲜见。这些软件在被发布到 Debian 之前会被清理掉。而<ruby> 自由软件基金会 <rt>  Free Software Foundation </rt></ruby>（FSF）维护着一份 [自由 GNU/Linux 发行版的列表](https://gnu.org/distros/free-distros.en.html)，但奇怪的是，Debian 并不在其中。事实上， Debian 不符合进入此列表的某些标准，我们想知道到底不满足哪些标准。但首先，我们需要了解所有这些智力工作是如何得到证明的。换句话说，为什么要费心尝试进入一些名单，尤其是这个名单？

为什么 Debian 应该得到 FSF 的承认，以获得它的自由发行版的地位？曾于 2010 年至 2013 年担任 Debian 项目负责人的 Stefano Zacchiroli 说过几个原因。其中一个 Stefano 称之为“外部审查”的原因我特别赞同。事实上，Debian 有其标准和质量水准，一些软件应当符合这些标准才能成为该发行版的一部分，但除了 Debian 开发人员自己，没有人能控制这个过程。如果该发行版被列入这份珍贵的清单中，那么 FSF 就会密切关注 Debian 的命运，并（在出现问题时）给予适度的批评。我相信这是很好的动力。如果你也这么认为，那么现在让我们看看 FSF 认为 Debian 不够自由的原因。

### Debian 社会契约

除了自由 GNU/Linux 发行版列表之外，FSF 还保留了一份因某种原因而被拒绝授予自由地位的 GNU/Linux 发行版的列表。对于此列表中的每个发行版，都有一个评论，简要说明了拒绝的理由。从对 Debian 的评论中可以清楚地看出，FSF 和 Debian 项目在对“自由分发”一词的解释上产生分歧的主要根源来自一份被称为 “<ruby> Debian 社会契约 <rt>  Debian Social Contract </rt></ruby>”的文件。

该社会契约的第一个版本是在 1997 年 7 月 4 日由第二任 Debian 项目领导人 Bruce Perens 发表的。作为该契约的一部分，也公布了一套被称为 <ruby> Debian 自由软件准则 <rt>  Debian Free Software Guidelines </rt></ruby>（DFSG）的规则。从那时起，要成为 Debian 的一部分，分发软件的许可证必须符合 DFSG。该社会契约记录了 Debian 开发者只用自由软件建立操作系统的意图，而 DFSG 则用于将软件分为自由和非自由。2004 年 4 月 26 日，批准了该文件的新版本，取代了 1997 年的版本。

Debian 社会契约有五条。要回答我们今天主要讨论的问题，我们只需要关注其中两条 —— 即第一条和第五条，其他的省略。可以在 [此处](https://debian.org/social_contract) 查看该契约的完整版本。

第一条说：“**Debian 将保持 100% 自由**。我们在标题为‘<ruby> Debian 自由软件准则 <rt>  Debian Free Software Guidelines </rt></ruby>’的文件中提供了用于确定一个作品是否‘自由’的准则。我们承诺，根据这些准则，Debian 系统及其所有组件将是自由的。我们将支持在 Debian 上创造或使用自由和非自由作品的人。我们永远不会让系统要求使用非自由组件。”

同时，第五条写道：“**不符合我们自由软件标准的作品**。我们承认，我们的一些用户需要使用不符合 Debian 自由软件准则的作品。我们在我们的存档中为这些作品创建了“contrib”和“non-free”区域。这些区域中的软件包并不是 Debian 系统的一部分，尽管它们已被配置为可以在 Debian 中使用。我们鼓励 CD 制造商阅读这些区域的软件包的许可证，并确定他们是否可以在其 CD 上分发这些软件包。因此，尽管非自由作品不是 Debian 的一部分，但我们支持它们的使用，并为非自由软件包提供基础设施（例如我们的错误跟踪系统和邮件列表）。”

因此，在实践中，第一条和第五条意味着：在安装了 Debian 之后，用户得到了一个完全而彻底的自由操作系统，但是如果他们突然想牺牲自由来追求功能，安装非自由软件，Debian 不仅不会阻碍他们这样做，而且会大大简化这一任务。

尽管该契约规定发行版将保持 100% 自由，但它允许官方存档的某些部分可能包含非自由软件或依赖于某些非自由组件的自由软件。形式上，根据同一契约，这些部分中的软件不是 Debian 的一部分，但 FSF 对此感到不安，因为这些部分使得在系统上安装非自由软件变得更加容易。

在 2011 年前，FSF 有合理的理由不认为 Debian 是自由的——该发行版附带的 Linux 内核没有清理二进制 blob。但自 2011 年 2 月发布的 Squeeze 至今，Debian 已经包含了完全自由的 Linux 内核。因此，简化非自由软件的安装是 FSF 不承认 Debian 是自由发行版的主要原因，直到 2016 年这是我知道的唯一原因，但在 2016 年初出现了问题……

### 等等 …… 关 Firefox 什么事？

很长一段时间，Debian 都包含一个名为 Iceweasel 的浏览器，它只不过是 Firefox 浏览器的更名重塑而已。进行品牌重塑有两个原因：首先，该浏览器标志和名称是 Mozilla 基金会的商标，而提供非自由软件与 DFSG 相抵触。其次，通过在发行版中包含浏览器，Debian 开发人员必须遵守 Mozilla 基金会的要求，该基金会禁止以 Firefox 的名义交付浏览器的修改版本。因此，开发人员不得不更改名称，因为他们在不断地修改浏览器的代码，以修复错误并消除漏洞。但在 2016 年初，Debian 有幸拥有一款经过修改的 Firefox 浏览器，不受上述限制，可以保留原来的名称和徽标。一方面，这是对 Debian 修改的认可，也是对 Debian 信任的体现。另一方面，该软件显然没有清除非自由组件，它现在已成为发行版的一部分。如果此时 Debian 已被列入自由 GNU/Linux 发行版列表，那么自由软件基金会将会毫不犹豫地指出这一点。

### 结论

数字世界中的自由与现实世界中的自由同样重要。在这篇文章中，我试图揭示 Debian 最重要的特性之一 —— 开发用户自由的发行版。开发人员花费额外的时间从软件中清理非自由组件，并且以 Debian 为技术基础的数十个发行版继承了它的工作，并由此获得了一部分自由。

另外，我想分享一个简单的看法，即自由并不像乍看起来那么简单，人们自然会去追问什么是真正的自由，而什么不是。由于 Firefox 的存在，Debian 现在不能被称为自由的 GNU/Linux 发行版。但从 2011 年，当 Debian 终于开始清理内核以及发行版的其他组件时，直到 2016 年 Firefox 成为发行版的一部分时，自由软件基金会出于纯粹的意识形态原因并不认为该发行版是自由的：原因是 Debian 大大简化了非自由软件的安装……现在轮到你来权衡所有的争论，并决定是否将 GNU/Linux 发行版视为自由的了。

祝你好运！并尽可能保持自由。

由 Evgeny Golyshev 为 [Cusdeb.com](https://wiki.cusdeb.com/Essays:Why_the_FSF_does_not_consider_Debian_as_a_free_distribution/en) 撰写

---

via: <https://news.itsfoss.com/fsf-does-not-consider-debian-a-free-distribution/>

作者：[Evgeny Golyshev](https://news.itsfoss.com/author/root/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary: • JavaScript 和 Python 继续统治编程语言，但 Rust 在崛起 • Linux 5.18 释出 • 科学家正在修改蚊子的基因以减小雌蚊数量

一个笑话：据报道，我国著名生物学家李教授苦心钻研30余年，成功培育出了抗寒蚊子。据李教授介绍：这种抗寒蚊子的培育，填补了我国冬天没有蚊子的空白。目前，李教授已被警方成功击毙。

# 硬核观察 #645 JavaScript 和 Python 继续统治编程语言，但 Rust 在崛起

### JavaScript 和 Python 继续统治编程语言，但 Rust 在崛起

根据 SlashData 去年年底的对 166 个国家的 20000 多名开发者的调查，目前最受欢迎的编程语言是 JavaScript，其次是 Python。仅在过去半年，Python 就净增加了 330 万开发人员。而 Rust 的采用在过去两年里几乎翻了两番，达到 220 万开发者。PHP 的增长最少，在 2021 年第三季度和 2022 年第一季度之间，净增加了 60 万名新开发者。但 PHP 是仅次于 JavaScript 的网络应用程序中最常见的语言。Go 和 Ruby 是后端开发中的重要语言，Go 在过去一年中的增长速度超过了两倍，现在有 330 万开发者。

>
> **[消息来源：InfoWorld](https://www.infoworld.com/article/3661248/developer-survey-javascript-and-python-reign-but-rust-is-rising.html)**
>
>
>

>
> 老王点评：所以，现在该去学什么语言了？其实我看，不论什么语言，能用的上的语言就是好语言。但是如果只是泛泛的使用，那无论是学那种语言都没什么用。
>
>
>

### Linux 5.18 释出

Linus Torvalds 在内核邮件列表上宣布释出 Linux 5.18。新版的主要新特性包括：C 语言标准从 C89 切换到 C11；改进了随机数生成器；英特尔即将推出的软件定义芯片驱动，可以通过付款解锁处理器附加功能；内存管理接口 DAMOS；严格 `memcpy()` 边界检查；支持英特尔 CPU 的间接分支跟踪；改进 AMD Zen CPU 进程调度性能等等。

>
> **[消息来源：KernelNewbies](https://kernelnewbies.org/Linux_5.18)**
>
>
>

>
> 老王点评：这个版本其实有很多特征值得关注，之前我们也陆续提到了一些，比如使用的 C 语言标准的升级，比如随机数生成器和软件定义芯片功能。
>
>
>

### 科学家正在修改蚊子的基因以减小雌蚊数量

一个名为“目标疟疾”的组织已经开发出基因驱动，以阻止蚊子产生雌性后代。这很重要，有两个原因：只有雌性才会咬人，而没有雌性，蚊子的数量就会骤减。其核心目的是大大减少死于疟疾的人数，根据世界卫生组织的数据，2020 年有 627,000 人死于疟疾，估计疟疾每年会使非洲大陆的经济产出减少 120 亿美元。不过该技术还没有允许公开使用，目前只是在实验室进行实验。

>
> **[消息来源：BBC](https://www.bbc.com/news/business-61505102)**
>
>
>

>
> 老王点评：虽然消灭蚊子是一件好事，我天天被蚊子咬，但是我担心贸然破坏自然界可能有意想不到的结果。
>
>
>


# ONLYOFFICE 7.1 发布：新增针对 ARM 的支持、新的 PDF 查看器

>
> ONLYOFFICE Docs 7.1 带来了期待已久的针对文档、电子表格以及演示文稿编辑器的更新。对 ARM 的支持更是画龙点睛之笔。
>
>
>

ONLYOFFICE，被认为是 [最佳的微软 Office 替代品](https://itsfoss.com/best-free-open-source-alternatives-microsoft-office/) 之一，刚刚发布了最新的 7.1 版本更新。

或许你不了解，ONLYOFFICE 可以在自托管的服务器（例如 Nextcloud）或者桌面上在线使用。

这个版本最为激动人心的变化就是初步支持了基于 ARM 的设备，例如树莓派。

接下来请让我们一起看看有什么新的变化。

### ONLYOFFICE 7.1 ： 新变化

除了对 ARM 的支持，ONLYOFFICE 7.1 还提供了如下新功能：

* 一个全新的 PDF、XPS 和 DjVu 文件查看器
* 更方便和可定制的图形选项
* 电子表格打印预览
* 演示文稿中的动画
* 支持 SmartArt 对象

#### ARM 兼容

树莓派这样的基于 ARM 的设备正变得越来越热门，许多人已经期待了许久 ONLYOFFICE 对 ARM 架构的支持。

随着 7.1 版本的发布，ONLYOFFICE Docs 现在可以在所有 ARM64 设备上运行。由于 ARM 设备的效率和安全性的提高，我认为这将对 ONLYOFFICE 的未来产生很大的促进作用。

#### 全新的 PDF、XPS 和 DjVu 文件查看器

这是许多其他办公软件多年来的一个关键功能。从 ONLYOFFICE 7.1 开始，用户现在可以更方便地使用文档编辑器来查看 PDF、XPS 和 DjVu 文件。

新的视图选项卡为用户提供了一个页面缩略图视图和一个导航栏，其视图更为紧凑和简化。

此外，用户现在还可以将 PDF 文件转换为 DOCX 文件，以便对其进行编辑。因此，我们不用再额外打开其他软件进行处理了，这将显著优化现有的工作流并消除瓶颈。

#### 选择和编辑图形更加方便

图形做为现代办公软件的特性，在许多时候并没能发挥足够的作用。尽管 ONLYOFFICE 拥有这些功能已经有一段时间了，但它们在使用时总是相当笨重。

在 ONLYOFFICE 7.1 中，重新设计的图形选择菜单使得这种情况得到了改变。这个新的菜单与微软 Office 的同类产品非常相似，每个图标都可以从菜单中看到。

此外，它现在可以显示最近使用的图形，使批量插入图形更加容易。

图形的最后一项改进是能够使用鼠标来编辑它们。对于那些熟悉 Inkscape 等图形设计软件的人来说，这将会相当得心应手。通过简单地拖动点，你将可以在短时间内创建一个独特的形状。

#### 电子表格的打印预览

我相信每个人都发生过由于一个简单的错误而导致打印出现问题的情况。此前其他程序早已经解决了这个问题，但在 ONLYOFFICE 电子表格编辑器中一直没有这个功能。

新版本终于引入了“打印预览”，这将会显著改善上述的情况。

这并不算什么十分新颖的更新，只是说它补齐了短板并且可以节省纸张和打印耗材。

#### 改进的动画页面，便捷的剪切和复制

针对需要经常使用演示文稿的用户而言，这个版本增加了一个单独的动画标签，使动画的插入变得更为容易。

ONLYOFFICE 7.1 演示文稿编辑器现在支持各种动画，以及便捷地将一页幻灯片移动以及复制的能力。

#### SmartArt 对象的支持

SmartArt 是一种在文档、演示文稿和电子表格中便捷地制作自定义图形的工具。然而，它一直是微软办公软件的一个功能。虽然其他各种应用程序对该格式有不同程度的支持，但它们并不能与微软 Office 相媲美。

幸运的是，ONLYOFFICE 7.1 现在完全支持这种格式，并且没有任何乱码，仿佛原生的一般。用户将不再需要和以前一样在将 SmartArt 图形转换为普通图形和数字，便于无缝切换。

### 其他变化

ONLYOFFICE 7.1 的其他重要改进包括：

* 新的客户端语言：加利西亚语和阿塞拜疆语
* 在受密码保护的文件中，能够在输入密码的同时查看密码
* OFORM 文件支持缩放选项
* 能够按用户组过滤评论
* 支持金字塔图表
* 支持金字塔柱状图
* 支持垂直和水平圆柱图
* 支持垂直和水平圆锥图
* 上下文菜单中的移动和复制幻灯片选项
* 公式工具提示
* 新的货币格式支持

若想了解全部新特性，请见 [发布日志](https://www.onlyoffice.com/blog/2022/05/discover-onlyoffice-docs-v7-1/)。

### 下载 ONLYOFFICE 7.1

总的来说，ONLYOFFICE 7.1 是一个兼容 ARM 并且功能更为丰富的版本。

所有版本（企业版、开发版者、社区版）都有更新。

下载方面提供了很多不同的软件包，包括用于 ARM 版本的 Docker 镜像、 Snap 软件包以及用于云供应商的即点即用选项。你可以前往下载页面，寻找最合适的安装程序。

下载页面同时列出了安装的官方指南。

>
> **[获取 ONLYOFFICE 7.1](https://www.onlyoffice.com/download-docs.aspx)**
>
>
>

*你是否已经尝试了新版本呢？*

---

via: <https://news.itsfoss.com/onlyoffice-7-1-release/>

作者：[Jacob Crume](https://news.itsfoss.com/author/jacob/) 选题：[lkxed](https://github.com/lkxed) 译者：[PeterPan0106](https://github.com/PeterPan0106) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


用 Spark SQL 进行结构化数据处理

# 用 Spark SQL 进行结构化数据处理

>
> Spark SQL 是 Spark 生态系统中处理结构化格式数据的模块。它在内部使用 Spark Core API 进行处理，但对用户的使用进行了抽象。这篇文章深入浅出地告诉你 Spark SQL 3.x 的新内容。
>
>
>

有了 Spark SQL，用户可以编写 SQL 风格的查询。这对于精通结构化查询语言或 SQL 的广大用户群体来说，基本上是很有帮助的。用户也将能够在结构化数据上编写交互式和临时性的查询。Spark SQL 弥补了<ruby> 弹性分布式数据集 <rt>  resilient distributed data sets </rt></ruby>（RDD）和关系表之间的差距。RDD 是 Spark 的基本数据结构。它将数据作为分布式对象存储在适合并行处理的节点集群中。RDD 很适合底层处理，但在运行时很难调试，程序员不能自动推断<ruby> 模式 <rt>  schema </rt></ruby>。另外，RDD 没有内置的优化功能。Spark SQL 提供了<ruby> 数据帧 <rt>  DataFrame </rt></ruby>和数据集来解决这些问题。

Spark SQL 可以使用现有的 Hive 元存储、SerDes 和 UDF。它可以使用 JDBC/ODBC 连接到现有的 BI 工具。

### 数据源

大数据处理通常需要处理不同的文件类型和数据源（关系型和非关系型）的能力。Spark SQL 支持一个统一的数据帧接口来处理不同类型的源，如下所示。

* 文件：
	+ CSV
	+ Text
	+ JSON
	+ XML
* JDBC/ODBC：
	+ MySQL
	+ Oracle
	+ Postgres
* 带模式的文件：
	+ AVRO
	+ Parquet
* Hive 表：
	+ Spark SQL 也支持读写存储在 Apache Hive 中的数据。

通过数据帧，用户可以无缝地读取这些多样化的数据源，并对其进行转换/连接。

### Spark SQL 3.x 的新内容

在以前的版本中（Spark 2.x），查询计划是基于启发式规则和成本估算的。从解析到逻辑和物理查询计划，最后到优化的过程是连续的。这些版本对转换和行动的运行时特性几乎没有可见性。因此，由于以下原因，查询计划是次优的：

* 缺失和过时的统计数据
* 次优的启发式方法
* 错误的成本估计

Spark 3.x 通过使用运行时数据来迭代改进查询计划和优化，增强了这个过程。前一阶段的运行时统计数据被用来优化后续阶段的查询计划。这里有一个反馈回路，有助于重新规划和重新优化执行计划。

#### 自适应查询执行（AQE）

查询被改变为逻辑计划，最后变成物理计划。这里的概念是“重新优化”。它利用前一阶段的可用数据，为后续阶段重新优化。正因为如此，整个查询的执行要快得多。

AQE 可以通过设置 SQL 配置来启用，如下所示（Spark 3.0 中默认为 false）：

```
spark.conf.set(“spark.sql.adaptive.enabled”,true)

```

#### 动态合并“洗牌”分区

Spark 在“<ruby> 洗牌 <rt>  shuffle </rt></ruby>”操作后确定最佳的分区数量。在 AQE 中，Spark 使用默认的分区数，即 200 个。这可以通过配置来启用。

```
spark.conf.set(“spark.sql.adaptive.coalescePartitions.enabled”,true)

```

#### 动态切换连接策略

广播哈希是最好的连接操作。如果其中一个数据集很小，Spark 可以动态地切换到广播连接，而不是在网络上“洗牌”大量的数据。

#### 动态优化倾斜连接

如果数据分布不均匀，数据会出现倾斜，会有一些大的分区。这些分区占用了大量的时间。Spark 3.x 通过将大分区分割成多个小分区来进行优化。这可以通过设置来启用：

```
spark.conf.set(“spark.sql.adaptive.skewJoin.enabled”,true)

```

### 其他改进措施

此外，Spark SQL 3.x还支持以下内容。

#### 动态分区修剪

3.x 将只读取基于其中一个表的值的相关分区。这消除了解析大表的需要。

#### 连接提示

如果用户对数据有了解，这允许用户指定要使用的连接策略。这增强了查询的执行过程。

#### 兼容 ANSI SQL

在兼容 Hive 的早期版本的 Spark 中，我们可以在查询中使用某些关键词，这样做是完全可行的。然而，这在 Spark SQL 3 中是不允许的，因为它有完整的 ANSI SQL 支持。例如，“将字符串转换为整数”会在运行时产生异常。它还支持保留关键字。

#### 较新的 Hadoop、Java 和 Scala 版本

从 Spark 3.0 开始，支持 Java 11 和 Scala 2.12。 Java 11 具有更好的原生协调和垃圾校正，从而带来更好的性能。 Scala 2.12 利用了 Java 8 的新特性，优于 2.11。

Spark 3.x 提供了这些现成的有用功能，而无需开发人员操心。这将显着提高 Spark 的整体性能。

---

via: <https://www.opensourceforu.com/2022/05/structured-data-processing-with-spark-sql/>

作者：[Phani Kiran](https://www.opensourceforu.com/author/phani-kiran/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出