我是如何使用 Linux fmt 命令来格式化文本

![](/data/attachment/album/202208/01/184300zbyfjayeyqa5pmcb.jpg)

>
> fmt 命令是一个简单的文本格式化程序。我将在这里展示如何使用它来格式化文本和邮件回复。
>
>
>

当我为项目编写文档时，我经常以纯文本的形式编写自述文件和安装说明。我不需要使用 HTML 或者 Markdown 之类的标记语言来描述项目的功能或如何编译它。但是维护这样的文档可能会很痛苦。如果我需要更新我的 `Readme` 文件中的一个句子的中间位置，我需要重新格式化文本，以避免在我的其它文本中间出现一个很长或很短的行，而其它的行的格式是整整齐齐的 75 列。一些编辑器包含可以自动重新格式化文本以填充段落的功能，但并非所有的编辑器都这样做。这就是 Linux `fmt` 命令的用武之地。

### 使用 Linux fmt 命令格式化文本

`fmt` 命令是一个简单的文本格式化程序；它收集单词并填充段落，但不应用任何其它文本样式，例如斜体或粗体。这一切都是纯文本。使用 `fmt` 命令，你可以快速调整文本，使其更易于阅读。让我们从这个熟悉的示例文本开始:

```
$ cat trek.txt
Space: the final
frontier. These are the voyages
of the starship Enterprise. Its
continuing mission: to explore
strange new worlds. To
seek out new life and new
civilizations. To boldly go
where no one has gone before!

```

在这个实例文件中，每行都有不同的长度，并且它们以一种奇怪的方式换行。如果你对纯文本文件进行大量更改，你可以会遇到类似的奇怪的换行。要重新格式化此文本，你可以使用 `fmt` 命令将段落的行填充为统一长度：

```
$ fmt trek.txt
Space: the final frontier. These are the voyages of the starship
Enterprise. Its continuing mission: to explore strange new worlds. To
seek out new life and new civilizations. To boldly go where no one has
gone before!

```

默认情况下，`fmt` 会将文本格式化为 75 的列宽大小，但你可以使用 `-w` 或 `--width` 选项进行更改：

```
$ fmt -w 60 trek.txt
Space: the final frontier. These are the voyages of
the starship Enterprise. Its continuing mission: to
explore strange new worlds. To seek out new life and new
civilizations. To boldly go where no one has gone before!

```

### 使用 Linux fmt 命令格式化电子邮件回复

我加入了一个邮件列表，这里更喜欢纯文本电子邮件，这使得在列表服务器上归档电子邮件变得更加容易。但现实是并非每个人都以纯文本形式发送电子邮件。有时候，当我以纯文本形式回复这些电子邮件时，我的电子邮件客户端会将整个段落放在一行中。这使得在电子邮件中“引用”回复变得困难。

这是一个简单的例子。当我以纯文本形式回复电子邮件时，我的电子邮件客户端通过在每行前添加 `>` 字符来“引用”对方的电子邮件。对于一条短消息，可能如下所示：

```
> I like the idea of the interim development builds.

```

没有正确“换行”的长行将无法在我的纯文本电子邮件回复中正确显示，因为它只是前面带有 `>` 字符的长行，如下所示：

```
> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.

```

为了解决这个问题，我打开了一个终端并将引用的文本复制并粘贴到一个新文件中。然后我使用 `-p` 或 `--prefix` 选项来告诉 `fmt` 在每一行之前使用什么字符作为“前缀”。

```
$ cat > email.txt
> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.
^D
$ fmt -p '>' email.txt
> I like the idea of the interim development builds. This should be a
> great way to test new changes that everyone can experiment with.

```

`fmt` 命令是一个非常简单的文本格式化程序，但它可以做很多有用的事情，可以帮助以纯文本形式编写和更新文档。要了解其它选项，例如 `-c` 或 `--crown-margin` 以匹配段落前两行缩进，例如项目列表。还可以尝试使用 `-t` 或者 `--tagged-paragraph` 来保留段落中第一行的缩进，就像缩进的段落一样。`-u` 或 `--uniform-spacing` 选项在单词之间使用一个空格，在句子之间使用两个空格。

---

via: <https://opensource.com/article/22/7/fmt-trivial-text-formatter>

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

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


硬核观察 #715 Linus 在 Macbook 上发布了 Linux 内核 5.19

Summary: • Linus 在 Macbook 上发布了 Linux 内核 5.19 • Linux 内核不过 520 • Python 开发者讨论从邮件列表转移到论坛

我已经下好Asahi，就差一台M1 Macbook了

![](/data/attachment/album/202208/01/200520vts43d5466tyt5fh.jpg)

![](/data/attachment/album/202208/01/200532brahhgy4r4zmj8ip.jpg)

### Linus 在 Macbook 上发布了 Linux 内核 5.19

今天，Linus Torvalds 发布了 Linux 5.19，在对新硬件方面添加了对龙芯 CPU 和 Zen 4 CPU 的支持，支持 Zstd 压缩固件，并进一步改进了性能。有趣的是，Linux 表示，这次 5.19 的发布工作是在他的苹果 MacBook 笔记本上完成的，这台笔记本运行了 Asahi Linux 为苹果 M1 Macbook 打造的 Linux 系统。Linus 说，“这是我个人期待了很久的事情，而现在终于变成了现实。”在很早之前他曾在 PPC970 设备上为 PowerPC 进行过开发，这是他第三次使用苹果硬件用于 Linux 开发。他说，“但现阶段我并没有将 MacBook Air 用于任何真实工作，我只是将其用于版本测试、启动以及现在的版本发布。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linux-5.19-Released)**
>
>
>

>
> 老王点评：果然 Linus 对 Asahi Linux 的工作非常满意，我寻思我也是不是把我的 M1 Macbook 换成 Asahi Linux。
>
>
>

![](/data/attachment/album/202208/01/200544oo9h326e6w6is6u9.jpg)

### Linux 内核不过 520

被称为 Linux 5.20 的开发中的内核很可能会被称为 Linux 6.0。根据 Linus Torvalds 对现代版本的划分，Linux 又到了采用下一个主要版本号的时候。他对主要版本的提升通常会在小版本更新到 19 或 20 时进行。Linux 3.19 之后是 Linux 4.0，Linux 4.20 之后是 Linux 5.0。在周日的 Linux 5.19 公告中，Linus 表示“我可能会叫它 6.0，因为我开始担心再次被大数字所迷惑”。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linux-5.20-Is-Linux-6.0)**
>
>
>

>
> 老王点评：Linux 内核的大版本号其实没什么特别的，就是一个进位而已，你就当成内核版本号采用的是 20 进制好了。有时候可能还忘记进位了。
>
>
>

![](/data/attachment/album/202208/01/200654tax48nximqizvbn4.jpg)

### Python 开发者讨论从邮件列表转移到论坛

Python 项目在 2018 年开始实验使用论坛交流，作为实验的一部分，Python 核心开发者使用的邮件列表 python-committers 切换到了 Discourse 论坛。今天该邮件列表仍然存在，但主要作为发布公告使用，大部分讨论都是在论坛上进行的。一位开发者称，他不怎么访问 Discourse 而错过了有兴趣的新 PEP 讨论，希望新 PEP 能发布在 python-dev 邮件列表上。这个提议引发了讨论。最终，Python 语言指导委员会表示要将讨论的媒介切换到 Discourse 论坛，Python 的邮件列表可能要全面转向论坛了。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72316)**
>
>
>

>
> 老王点评：虽然确实很多老程序员都习惯了邮件列表，但是应该与时俱进，采用更丰富、更现代的交流方式。而同时保留老的交流方式，直到没什么人继续使用它，或因为缺乏重要功能而被废弃。
>
>
>


AppFlowy：Notion 的开源替代品

![](/data/attachment/album/202208/02/102316f1g6p369uyeeybgo.jpg)

>
> AppFlowy 旨在成为 Notion 的开源替代品，为你提供更好的隐私保护。让我们了解一下它。
>
>
>

虽然项目管理/笔记工具 Notion 功能非常出色，但它并不是一个开源解决方案。此外，它没有 Linux 桌面客户端。

那么，对于 Linux 用户来说，更透明、更私密和可用的替代方案是什么？

这就是 AppFlowy 大放异彩的地方！

AppFlowy 使用 Rust 和 Flutter 构建，遵循极简原则，但提供了足够的调整空间。

### AppFlowy 是隐私和用户体验的完美结合

![appflowy](/data/attachment/album/202208/02/102318dsa4eeq8ov9qzhzv.png)

AppFlowy 是相当新的。在它去年首次推出后，我们曾 [报告](https://news.itsfoss.com/appflowy-development/) 了它的发展状况。

这是一个开源项目，旨在克服 [Notion](https://www.notion.so/) 在安全和隐私方面的一些限制。它可以帮助你管理任务、添加待办事项列表、截止日期、跟踪事件、添加页面，以及为你的笔记/任务设置文本格式。

不仅仅是安全性。用户体验也很重要。而 AppFlowy 在这方面做得很好，甚至比 Notion 更好。

请注意，该项目仍处于 **测试阶段**。

目前，该项目的目标不是提供更好的设计和功能，而是数据隐私、原生体验和社区驱动。

### Notion 与 AppFlowy，如何选择？

虽然它旨在作为取代 Notion 的开源解决方案，但它可能并不适合所有人。

因此，如果你要选择 AppFlowy 而不是 Notion，你将获得以下好处：

#### 透明度

AppFlowy 是一个开源项目，因此你可以随时查看和修改代码。

#### 隐私

作为闭源软件，Notion 可以直接访问你在云中的私有数据。与之相比，你可以根据自己的喜好自行托管 AppFlowy。

你的所有个人数据都将保留在你身边，你可以完全控制它。开发人员还提到他们正在使用离线模式来更好的支持本地安装。

#### 性能和原生体验

AppFlowy 使用 Rust 和 Flutter 构建，在提供现代用户体验的同时将性能置于优先位置。

不仅限于此，你还可以在 Linux 上获得良好的原生体验，这是 Notion 所没有的。

### AppFlowy 的功能

![appflowy screenshot 1](/data/attachment/album/202208/02/102318dfbzl0nx9qbmnx0z.png)

AppFlowy 在功能方面可能并不优越，但它确实提供了基本的功能。

随着开发的继续，你可以期待它会添加更多的功能。一些现有的功能包括：

* 原生的跨平台支持。
* 能够自行托管或将其安装在你的本地计算机上。
* 可定制。
* 数据隐私（重中之重）。
* 单一代码库，便于更好地维护。
* 社区驱动的可扩展性。
* 简约的用户界面。
* 可以添加待办事项、管理任务。
* 文本高亮和基本的格式化。
* 用于编辑单元格/网格的键盘快捷键。
* 支持深色模式。

#### 在 Linux 上安装 AppFlowy

由于它仍处于测试阶段，在默认仓库中还不可用，并且没有维护任何 PPA，也没有 Flatpak/Snap 包。

但是，你可以通过给定的命令轻松安装 AppFlowy（仅在 Ubuntu 20.04 LTS 和 Arch X86\_64 上测试过）：

```
wget https://github.com/AppFlowy-IO/AppFlowy/releases/download/0.0.4/AppFlowy-linux-x86.tar.gz
tar -xzvf AppFlowy-linux-x86.tar.gz
cd AppFlowy

```

要运行 AppFlowy，请使用该命令：

```
./app_flowy

```

要在你的系统菜单中注册 AppFlowy，你必须执行以下附加步骤：

首先，你必须更改 AppFlowy 徽标的默认名称：

```
mv flowy_logo.svg app_flowy.svg

```

现在，你必须将 Linux 桌面文件模板复制为正式的 Linux 桌面文件。

```
cp appflowy.desktop.temp app_flowy.desktop

```

然后对配置文件进行一些更改。

```
sudo nano appflowy.desktop

```

在这里，你必须将 `[CHANGE_THIS]` 替换为图标和可执行文件的对应路径。

![add location of icon and exec file](/data/attachment/album/202208/02/102319oh5j6h896qpwahah.png)

使用 `CTRL + O` 保存更改并使用 `CTRL + X` 退出。

最后，移动桌面文件，以便你的系统可以读取它。

```
mv app_flowy.desktop ~/.local/share/applications/.

```

它应该是这样的：

![appflowy in system menu](/data/attachment/album/202208/02/102319umt6pb6btwpbhpbe.png)

无论哪种情况，你都可以查看 AppFlowy 的 [官方文档](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/software-contributions/environment-setup/building-on-linux) 以从源代码构建它。在其官方网站上了解更多关于它的信息。

**[AppFlowy](https://www.appflowy.io/)**

### 总结

如果你需要具有原生 Linux 体验的简单的类 Notion 应用，AppFlowy 是一个有趣的选择。

考虑到它正在积极开发中，并且远非 Notion 的完全替代品，肯定会出现一些错误/问题。

作为 Notion 的开源替代品？它可以的！你可以使用它来管理任务、添加笔记和制作待办事项列表。

---

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

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[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/) 荣誉推出


Python 中可观测性的 7 个关键部分

>
> 学习为什么 Python 中的可观测性很重要，以及如何在你的软件开发生命周期中实现它。
>
>
>

![](/data/attachment/album/202208/02/115713cbml51nooltb21bx.jpg "Searching for code")

你写的应用会执行很多代码，而且是以一种基本上看不到的方式执行。所以你是怎么知道：

* 代码是否在运行？
* 是不是在正常工作？
* 谁在使用它，如何使用？

可观测性是一种能力，可以通过查看数据来告诉你，你的代码在做什么。在这篇文章中，主要关注的问题是分布式系统中的服务器代码。并不是说客户端应用代码的可观测性不重要，只是说客户端往往不是用 Python 写的。也不是说可观测性对数据科学不重要，而是在数据科学领域的可观测性工具（大多是 Juptyter 和快速反馈）是不同的。

### 为什么可观测性很重要

所以，为什么可观测性重要呢？在软件开发生命周期（SDLC）中，可观测性是一个关键的部分。

交付一个应用不是结束，这只是一个新周期的开始。在这个周期中，第一个阶段是确认这个新版本运行正常。否则的话，很有可能需要回滚。哪些功能正常运行？哪些功能有细微的错误？你需要知道发生了什么，才能知道接下来要怎么做。这些东西有时候会以奇怪的方式不能正常运行。不管是天灾，还是底层基础设施的问题，或者应用进入了一种奇怪的状态，这些东西可能在任何时间以任何理由停止工作。

在标准 SDLC 之外，你需要知道一切都在运行中。如果没有，有办法知道是怎么不能运行的，这是非常关键的。

### 反馈

可观测性的第一部分是获得反馈。当代码给出它正在做什么的信息时，反馈可以在很多方面提供帮助。在模拟环境或测试环境中，反馈有助于发现问题，更重要的是，以更快的方式对它们进行分类。这可以改善在验证步骤中的工具和交流。

当进行<ruby> 金丝雀部署 <rt>  canary deployment </rt></ruby>或更改特性标志时，你需要知道是否要继续，还是等更长时间，或者回滚，反馈就显得很重要了。

### 监控

有时候你怀疑有些东西不太对。也许是一个依赖服务有问题，或者是社交网站爆出了大量你的网站的问题。也许在相关的系统中有复杂的操作，然后你想确保你的系统能完美处理。在这些情况下，你就想把可观测性系统的数据整合到控制面板上。

当写一个应用的时候，这些控制面板需要是设计标准的一部分。只有当你的应用能把数据共享给这些控制面板，它们才会把这些数据显示出来。

### 警报

看控制面板超过 15 分钟就像看着油漆变干一样。任何人都不应该遭受这种折磨。对于这种任务，我们要有报警系统。报警系统将可观测性数据与预期数据进行对比，当它们不匹配的时候就发出通知。完全深入研究时间管理超出了本文的范围。然而，从两方面来说，可观测应用是<ruby> 报警友好的 <rt>  alert-friendly </rt></ruby>：

* 它们有足够多，足够好的数据，发出的警报才是高质量的。
* 警报有足够的数据，或者接收者可以很容易的得到数据，这样有助于找到源头。

高质量警报有三个特点：

* 较少的错报：如果有警报，那一定是有问题了。
* 较少的漏报：如果有问题，那一定有警报触发。
* 及时性：警报会迅速发出以减少恢复时间。

这三个特点是互相有冲突的。你可以通过提高监测的标准来减少错误警报，代价是增加了漏报。你也可以通过降低监测的门槛来减少漏报，代价是增加错报。通过收集更多数据，你也可以同时减少错报和漏报，而代价是降低了及时性。

同时改善这三个参数就更难了。这就要求高质量的可观测性数据。更高质量的数据可以同时改善这三个特点。

### 日志

有的人喜欢嘲笑用打印来调试的方法。但是，在一个大多数软件都不在你本机运行的世界里，你所能做的只有打印调试。日志记录就是打印调试的一种形式。尽管它有很多缺点，但 Python 日志库提供了标准化的日志记录。更重要的是，它意味着你可以通过这些库去记录日志。

应用程序要负责配置日志的记录方式。讽刺地是，在应用程序对配置日志负责了多年以后，现在越来越不是这样了。在现代容器<ruby> 编排 <rt>  orchestration </rt> <ruby>  环境中，现代应用程序记录标准错误和标准输出，并且信任  <ruby>   编排   <rt>    orchestration   </rt>   <ruby>    系统可以合理的处理日志。   </ruby>  </ruby> </ruby></ruby>

然而，你不应该依赖库，或者说，其他任何地方。如果你想让操作的人知道发生了什么，*使用日志，而不是打印*。

#### 日志级别

日志记录的一个最重要功能就是 *日志级别*。不同的日志级别可以让你合理的过滤并分流日志。但是这只有在日志级别保持一致的情况下才能做到。最后，你应该在整个应用程序中保持日志级别的一致性。

选择不兼容语义的库可以通过在应用层面的适当配置来追溯修复，这只需要通过使用 Python 中最重要的通用风格做到：`getLogger(__name-_)`。

大多数合理的库都会遵循这个约定。<ruby> 过滤器 <rt>  Filters </rt></ruby>可以在日志对象发出之前就地修改它们。你可以给处理程序附加一个过滤器，这个处理程序会根据名称修改消息，使其具有合适的级别。

```
import logging
LOGGER=logging.getLogger(__name__)

```

考虑到这一点，你现在必须明确日志级别的语义。这其中有很多选项，但是下面这些是我的最爱：

* `Error`：发送一个即时警告。应用程序处于一个需要操作人员引起注意的状态。（这意味着包含 `Critical` 和 `Error`）
* `Warning`：我喜欢把这些称作“工作时间警报”。这种情况下，应该有人在一个工作日内关注一下。
* `Info`：这是在正常工作流程中发出的。如果怀疑有问题的时候，这个是用来帮助人们了解应用程序在做什么的。
* `Debug`：默认情况下，这个不应该在生产环境中出现。在模拟环境或开发环境下，可以发出来，也可以不发。如果需要更多的信息，在生产环境也可以特地被打开。

任何情况下都不要在日志中包含<ruby> 个人身份信息 <rt>  Personal Identifiable Information </rt></ruby>（PII）或密码。无论日志级别是什么，都是如此，比如级别更改，激活调试级别等等。日志聚合系统很少是 <ruby> PII 安全 <rt>  PII-safe </rt></ruby>的，特别是随着 PII 法规的不断发展（HIPAA、GDPR 等等）。

#### 日志聚合

现代系统几乎都是分布式的。<ruby> 冗余 <rt>  redundancy </rt> <ruby>  、  <ruby>   扩展性   <rt>    scaling   </rt>  </ruby>  ，有时是  <ruby>   管辖权   <rt>    jurisdictional   </rt>  </ruby>  需要更多的水平分布。微服务意味着垂直分布。登录到每个机器去查看日志已经是不现实的了。出于合理的控制原因，允许开发人员登录到机器中会给予他们更多的权限，这不是个好主意。 </ruby></ruby>

所有的日志都应该被发到一个聚合器。有一些商业的方案，你可以配置一个 ELK 栈，或者也可以使用其他的数据库（SQL 或则 no-SQL）。作为一个真正的低技术解决方案，你可以将日志写入文件，然后将它们发送到对象存储中。有很多解决方案，但是最重要的事情是选择一个，并且将所有东西聚合到一起。

#### 记录查询

在将所有东西记录到一个地方后，会有很多日志。具体的聚合器可以定义如何写查询，但是无论是通过从存储中搜索还是写 NoSQL 查询，记录查询以匹配源和细节都是很有用的。

### 指标抓取

<ruby> 指标抓取 <rt>  Metric Scraping </rt> <ruby>  是一个  <ruby>   服务器拉取   <rt>    server pull   </rt>   <ruby>    模型。指标服务器定时和应用程序连接，并且拉取指标。   </ruby>  </ruby> </ruby></ruby>

最后，这意味着服务器需要连接和找到所有相关的应用服务器。

#### 以 Prometheus 为标准

如果你的指标聚合器是 Prometheus，那么 [Prometheus](https://opensource.com/article/21/7/run-prometheus-home-container) 格式做为一个<ruby> 端点 <rt>  endpoint </rt></ruby>是很有用的。但是，即使聚合器不是 Prometheus，也是很有用的。几乎所有的系统都包含与 Prometheus 端点兼容的<ruby> 垫片 <rt>  shim </rt></ruby>

使用客户端 Python 库给你的应用程序加一个 Prometheus 垫片，这将使它能够被大多数的指标聚合器所抓取。当 Prometheus 发现一个服务器，它就期望找到一个指标端点。这经常是应用程序路由的一部分，通常在 `/metrics` 路径下。不管 Web 应用的平台是什么，如果你能在一个端点下运行一个定制类型的定制字节流，Prometheus 就可以将它抓取。

对于大多数流行的框架，总有一个中间件插件或者类似的东西收集指标，如延迟和错误率。通常这还不够。你需要收集定制的应用数据：比如，每个端点的缓存<ruby> 命中/缺失 <rt>  hit/miss </rt></ruby>率，数据库延迟，等等。

#### 使用计数器

Prometheus 支持多个数据类型。一个重要且巧妙的类型就是计数器。计数器总是在前进 —— 但有一点需要注意。

当应用重置，计数器会归零。计数器中的这些“<ruby> 历时 <rt>  epochs </rt></ruby>”通过将计数器“创建时间”作为元数据发送来管理。Prometheus 知道不去比较两个不同<ruby> 历时 <rt>  epochs </rt></ruby>的计数器。

#### 使用仪表值

仪表值会简单很多：它们测量瞬时值。用它们来测量会上下起伏的数据：比如，分配的总内存大小，缓存大小，等等。

#### 使用枚举值

枚举值对于整个应用程序的状态是很有用的，尽管它们可以以更精细的方式被收集。比如，你正使用一个<ruby> 功能门控 <rt>  feature-gating </rt></ruby>框架，一个有多个状态（比如，使用中、关闭、<ruby> 屏蔽 <rt>  shadowing </rt></ruby> 等）的功能，也许使用枚举会更有用。

### 分析

分析不同于指标，因为它们要对应连续的事件。比如，在网络服务器中，事件是一个外部请求及其产生的工作。特别是，在事件完成之前事件分析是不能被发送的。

事件包含特定的指标：延迟，数量，以及可能产生的对其他服务请求的细节，等等。

#### 结构化日志

现在一个可能的选择是将日志结构化。发送事件只发送带有正确格式的有效<ruby> 载荷 <rt>  payload </rt></ruby>的日志。这个数据可以从日志聚合器请求，然后解析，并且放入一个合适的系统，这样可以对它的可见性。

### 错误追踪

你可以使用日志来追踪错误，也可以用分析来追踪错误。但是一个专门的错误系统还是值得的。一个为错误而优化的系统可以发送更多的错误，因为错误毕竟还是罕见的。这样它就可以发送正确的数据，并且用这些数据，它能做更多智能的事情。Python 中的错误追踪系统通常和一般的异常处理关联，然后收集数据，并且把它发到一个专门的错误聚合器。

#### 使用 Sentry

很多情况下，自己运行 Sentry 是正确的做法。当错误发生时，就说明有些东西就出问题了。可靠地删除敏感数据是不可能的，因为一定有会出现敏感数据被发送到不应该的地方。

通常，这种工作量并不会很大：异常并不常出现。最后，这个系统并不需要很高的质量，也不需要高可靠性的备份。昨天的错误应该已经修复了，希望如此，如果没有，你还会发现的！

### 快速、安全、可重复：三者都要

可观测的系统开发起来更快，因为它们可以给你提供反馈。它们运行起来也更安全，因为当出问题的时候，它们也会更早的让你知道。最后，因为有反馈回路，可观测性也有助于围绕它构建可重复的过程。可观测性可以让你了解你的应用程序。而更了解它们，就胜利了一半。

#### 磨刀不误砍柴功

构建所有的可观测层是一件困难的事情。总会让人感觉是在浪费的工作，或者更像是“可以有，但是不急”。

之后再做这个可以吗？也许吧，但是不应该。正确的构建可观测性可以加速后面所有阶段的开发：测试、监控，甚至是培训新人。在一个和科技行业一样动荡的行业，减少培训新人的工作量绝对是值得的。

事实上，可观测性很重要，所以尽早把它写出来，然后就可以在整个过程中进行维护。反过来，它也会帮你维护你的软件。

---

via: <https://opensource.com/article/21/11/observability-python>

作者：[Moshe Zadka](https://opensource.com/users/moshez) 选题：[lujun9972](https://github.com/lujun9972) 译者：[MCGA](https://github.com/Yufei-Yan) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #716 深度发布独立软件包格式：玲珑

Summary: • 深度发布独立软件包格式：玲珑 • 英特尔将在 2024 年推出 Wi-Fi 7 • 教科书出版商希望借助区块链来在电子书转售时挣钱

希望这个"玲珑"能吸取snap和flatpakl的错误方式,尤其不要走国产软件的老路,添加广告等内容!!

不知道玲珑会不会加上类似手机的那种权限管理，并且支持更多功能（比如文件映射）

让我们拭目以待吧。

好耳熟的一句话，好像……

我家还在用Wi-Fi4

对了，最近linux.cn手机上显示很奇怪。

大概率 会这样，变味的特色开源

来自湖北荆门的 Chrome Mobile iOS 103.0|iOS 15.6 用户

大概率 会这样，变味的特色开源

好奇 snap 和 flatpak 显著的错误方式是

我真不知道“拭目以待”会变成这样的一个词，从此从词库中剔除。

我安装Ubuntu后，第一件事情就是卸载snap。后来嫌麻烦，直接转mx了。爽的很。

创意不错，能保护隐私，隔离安全，定位解决途径，提高系统稳定，玲珑沙箱还是很符合这个名字的

![](/data/attachment/album/202208/02/190219bwo7hrii8bohbouq.jpg)

![](/data/attachment/album/202208/02/190226dido55bellyz66jo.jpg)

### 深度发布独立软件包格式：玲珑

深度操作系统预计在本月发布新的 Deepin 23 操作系统，其中将采用一种新的独立软件包格式：玲珑。 深度社区称玲珑是“统信软件自研的开源软件包格式，用于与 dpkg、rpm 等包管理系统共同实现应用包管理、分发、沙箱、集成开发工具等功能。”根据披露的特性，玲珑软件包可运行在任意 Linux 桌面环境中，运行在独立的沙箱环境，支持应用增量更新。

>
> **[消息来源：深度](https://bbs.deepin.org/post/241097)**
>
>
>

>
> 老王点评：看来是一种容器式软件包。确实，要打造一个“根操作系统”，是应该有个独立的软件包体系才名正言顺，但是应该有真正的软件包方面的创新才有意义。据我所知，这是国内这批“根操作系统”中第一个提出自己的软件包格式的操作系统。让我们拭目以待这个玲珑之后的进一步信息。
>
>
>

![](/data/attachment/album/202208/02/190238us7z1b0onmr7s1r3.jpg)

### 英特尔将在 2024 年推出 Wi-Fi 7

因为苹果正在将其设备过渡到 Wi-Fi 6E，英特尔正计划在 2024 年之前在设备中安装其下一代 Wi-Fi 7（802.11be）技术。Wi-Fi 7 是 Wi-Fi 6E（802.11ax）的继任者，带来了两倍于 5.8Gbps 的数据处理速度和更稳定的 6GHz 带宽稳定性，在处理数据时支持高达 36Gbps 带宽。苹果还没有发布任何支持 Wi-Fi 6E 的设备，有望在今年从 iPhone 14 开始支持。

>
> **[消息来源：MacRumors](https://www.macrumors.com/2022/08/01/intel-wi-fi-7-in-2024-as-apple-plans-wi-fi-6e/)**
>
>
>

>
> 老王点评：前两天刚刚换了一个 Wi-Fi 路由器，支持 Wi-Fi 6，我才用上，而这都要 Wi-Fi 7 了。不知不觉中无线网络技术居然已经进步这么快了。
>
>
>

![](/data/attachment/album/202208/02/190251nj515bsi8z8ppb3b.jpg)

### 教科书出版商希望借助区块链来在电子书转售时挣钱

世界上最大的教科书出版商之一培生公司的 CEO 说，他希望像 NFT 和区块链这样的技术可以帮助该公司从电子书的二手销售中分得一杯羹，因为越来越多的书籍以电子书形式销售。纸质书籍，尤其是昂贵的教科书，有时候会转售七次之多，但转售不会出版商带来任何收益。而随着教科书转向数字化，教科书出版商看到了从转售中获利的可能。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2022-08-01/pearson-hopes-blockchain-will-make-it-money-every-time-its-e-books-change-hands)**
>
>
>

>
> 老王点评：纸质书转售对出版商没好处是因为出版商第一次就收到了足够的钱。而电子书却给出版商带来机会，让出版商有望控制电子书的二次流通，并通过它再次获利。
>
>
>


使用 OpenSMTPD 将邮件中继到多个 smarthost

Summary: 我找到了一个非常简单的替代方案：OpenSMTPD。

我找到了一个非常简单的替代方案：OpenSMTPD。

![](/data/attachment/album/202208/03/162813rc900xbgx3xggxxg.jpg)

我喜欢使用本地 SMTP 守护进程从我的笔记本电脑发送电子邮件，因为这样我即使在断开连接的情况下也可以发送电子邮件，而且，即使是在网络正常的情况下，因为我不需要等待网络协议在远程 smarthost 上完成。哦，我还需要本地邮件投递。

多年来，我一直使用 Postfix 来达到这些目的。它具有可接受的简单配置。但最近我开始喜欢 VPN（[mullvad](https://en.wikipedia.org/wiki/Mullvad)，如果你想知道的话），而在 `/etc/resolv.conf` 发生变化时会变得混乱（例如，你在 Postfix 的服务启动后才启动 VPN）。我找到了一个非常简单的替代方案：[OpenSMTPD](https://www.opensmtpd.org/)。

假设我想在使用 [jao@gnu.org](mailto:jao@gnu.org) 发送电子邮件时使用 SMTP 服务器 [fencepost.gnu.org](http://fencepost.gnu.org)，而在我的 `From` 头中使用 [mail@jao.io](mailto:mail@jao.io) 或 [news@xmobar.org](mailto:news@xmobar.org) 时使用 [smtp.jao.io](http://smtp.jao.io)。OpenSMTPD 让你通过一个非常简单的配置文件 `/etc/smtpd.conf` 来实现：

（这是我的 Debian 机器中的默认配置文件。另一个流行的替代方案是 `/etc/openstmpd.conf`）。

```
table aliases file:/etc/aliases
table secrets db:/etc/mail/secrets.db

table sendergnu { jao@gnu.org }
table senderjao { mail@jao.io, news@xmobar.org }

listen on localhost

action "local" mbox alias <aliases>
action "relaygnu" relay host smtp+tls://gnu@fencepost.gnu.org:587 auth <secrets>
action "relayjao" relay host smtps://jao@smtp.jao.io:465 auth <secrets>

match for local action "local"
match for any from mail-from <sendergnu> action "relaygnu"
match for any from mail-from <senderjao> action "relaygan"

```

我们还为此配置了本地投递。这是完整的配置文件！唯一需要的另一件事是生成 `secrets.db` 文件，其中包含与键 `gnu` 和 `jao` 对应的用户和密码（这些只是任意名称）。为此，我们使用它们创建一个纯文本文件，使用形式为 `<key> <user>:<password>` 的条目：

```
gnu  jao:my fencepost password
jao  mail@jao.io:xxxxxxxxxxxxxxxxx

```

`fencepost.gnu.org` 用户是 `jao`，`smtp.jao.io` 的用户是 `mail@jao.io`（你看，不需要转义空格或 ats）。然后我们使用程序 `makemap` 来创建密钥数据库：

```
makemap secrets && rm secrets

```

---

via: <https://jao.io/blog/2021-11-09-relaying-mail-to-multiple-smarthosts.html>

作者：[jao](https://jao.io) 选题：[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/) 荣誉推出


如果禁用了安全启动，GNOME 就会发出警告

Summary: GNOME 正计划通知用户其固件安全状态，来保护不安全的硬件。

但是很多发行版不关闭安全启动，装都装不上啊

GNOME 正计划通知用户其固件安全状态，来保护不安全的硬件。

>
> GNOME 正计划通知用户其固件安全状态，来保护不安全的硬件。
>
>
>

![](/data/attachment/album/202208/03/182421zcxzl7kb3xd9b9tb.jpg)

当你在支持 UEFI 的电脑上安装 Linux 时，你必须禁用“<ruby> 安全启动 <rt>  Secure Boot </rt></ruby>”，因为启用该选项后，不能使用<ruby> 现场 USB <rt>  Live USB </rt></ruby> 启动。

一些主流的 Linux 发行版支持安全启动，但对于许多其他发行版（以及板载的 Nvidia 硬件）来说，它的设置仍然具有挑战性。

虽然一年又一年，情况似乎并没有改善，但总的来说，安全启动是一个必不可少的保护功能。

因此，正如 [Phoronix](https://www.phoronix.com/news/GNOME-Secure-Boot-Warning) 所发现的，为了方便和让用户意识到这一点，GNOME 和红帽的开发者正在努力在安全启动被禁用时通知（或警告）用户。

### 它有什么用？

UEFI/安全启动被批评为 DRM，因为它剥夺了用户的自由。开源社区的许多人仍然不赞同实施 UEFI/安全启动和 TPM，因为它带来了不便。这就催生了像 [Coreboot](https://www.coreboot.org/) 这样的项目在开源世界中蓬勃发展。

当然，如果你每天都用 Linux，我会建议你购买支持 Coreboot 的新硬件，这是一个不同的故事。

话虽如此，但可以肯定的是，安全启动是最简单的方法。

考虑到捆绑的专有固件，安全启动的安全性仍然值得商榷。但是，它是一个确保系统的固件安全的基本保护机制。

所以，开发者准备在启动闪屏（[Plymouth](https://gitlab.freedesktop.org/plymouth)）、GNOME 显示管理器（GDM）和 GNOME 控制中心显示警告。

![图片来源：GNOME 博客](/data/attachment/album/202208/03/182422dsahwa3z03avvwhk.png)

GNOME 的一位开发者在 [博客文章](https://blogs.gnome.org/hughsie/2022/07/29/emulated-host-profiles-in-fwupd/) 中分享了它的更多细节，同时给出了其中的一些屏幕截图。

![](/data/attachment/album/202208/03/182422clrx3yx3xqytqnny.png)

一位来自红帽的开发者在 [合并请求](https://gitlab.freedesktop.org/plymouth/plymouth/-/merge_requests/176) 中提到。

>
> 安全启动被用来对付一些恶意软件试图感染系统的固件的安全威胁。用户可能会无意中禁用或软件可能会有意禁用安全启动。因此，配置不正确的话，系统就运行在一个不安全的平台上。如果启动闪屏能向用户提供一个警告，用户可以重新启动并重新配置他们的系统，或者立即寻求帮助。
>
>
>

所以，作为一个 GNOME 用户，当它进入 GNOME 43 的最终版本或任何未来的版本时，我乐于看到它所带来的变化。

如果你也想看看，你可以在 GNOME 控制中心的“<ruby> 隐私 <rt>  Privacy </rt></ruby>”标签下的“<ruby> 设备安全 <rt>  Device Security </rt></ruby>”部分找到这个选项，如下图所示，我的机器在 Arch Linux 上运行 GNOME 43 alpha。

![](/data/attachment/album/202208/03/182422eqgbxrjugexfegvb.png)

该菜单还可以显示 TPM、英特尔 BootGuard 和 IOMMU 保护的细节。

![](/data/attachment/album/202208/03/182423ltnif4n31v7lftu0.png)

看来我的系统并不像我想象的那么安全……但也许这就是这个功能的意义所在？

如果你只在你的 Linux 发行版上使用 UEFI 模式，并且为了方便而关闭了安全保护功能，这能让你意识到这一点吗？

有可能。但是，看看 Linux 发行版的状况和启用安全启动的问题。我不觉得这可能会是一个大问题。我们很快就会知道了。

### 如何禁用这个警告？

正如在 GNOME Gitlab 的 [合并请求](https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2333) 中提到的，在你的内核参数中添加 `sb-check=false` 就可以禁用这些警告。

不过，作为终端用户，你不需要担心这个问题。

你对即将在 GNOME 43 或更高版本中增加的这个功能有什么看法？你对 UEFI/安全启动有什么看法？

---

via: <https://news.itsfoss.com/gnome-secure-boot-warning/>

作者：[Anuj Sharma](https://news.itsfoss.com/author/anuj/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #717 制造固态硬盘产生的碳排放远超硬盘

Summary: • 制造固态硬盘产生的碳排放远超硬盘 • 树莓派 4 增加对 3D API 的支持 • Winamp 5.9 释出首个 RC 版本

![](/data/attachment/album/202208/03/195951w53ik70w87vp2va2.jpg)

![](/data/attachment/album/202208/03/195957o9wm1gwzfdxd3wwt.jpg)

### 制造固态硬盘产生的碳排放远超硬盘

固态硬盘的耗电量远低于硬盘，但一项新的研究意外地显示，它们的终生碳足迹要比硬盘高得多。研究人员测量了固态硬盘和硬盘在整个生命周期中每 GB 的碳足迹，他们发现，虽然固态硬盘在使用过程中的碳排放低于硬盘，但在制造过程中的碳密度要远高于硬盘。每制造一个 1TB 的固态硬盘会排放相当于 320 公斤的二氧化碳。相比之下，同等容量的硬盘只排放 40 公斤。而综合使用过程的碳排放，1 TB 的固态硬盘的终生碳足迹是 369.2 公斤二氧化碳，而硬盘是 199 公斤。另外，一台台式电脑的碳足迹几乎有 40% 来自固态硬盘，而 CPU 只占 4%，GPU 占 11%。

>
> **[消息来源：Discover Magazine](https://www.discovermagazine.com/technology/the-dirty-carbon-secret-behind-solid-state-memory-drives)**
>
>
>

>
> 老王点评：固态硬盘就和新能源车一样，有些水面下的成本是你看不到的。
>
>
>

![](/data/attachment/album/202208/03/200007yd9iy4ie5ggn9t9t.jpg)

### 树莓派 4 增加对 3D API 的支持

树莓派基金会宣布，树莓派 4 符合 Vulkan 1.2 标准。树莓派的现在的桌面图形是由 OpenGL 驱动的，Vulkan 要取代的是旧的图形 API。该 API 可以为开发者提供与 2019 年英伟达显卡、2020 年英特尔集成显卡芯片和其他几十种设备相同的 3D 图形能力。对于大多数将树莓派用作服务器、DIY 控制器或轻型桌面的人来说，对 Vulkan 1.2 的支持并不重要。但是对游戏和 3D 应用来说应该会受益。

>
> **[消息来源：ARS Technica](https://arstechnica.com/gadgets/2022/08/raspberry-pi-4-expands-3d-potential-with-vulkan-update/)**
>
>
>

>
> 老王点评：虽然我想不出用树莓派玩 3D 游戏是什么体验，但是或许有比玩游戏更有趣的场景。
>
>
>

![](/data/attachment/album/202208/03/200021fgqgn1f81g7xp1g2.jpg)

### Winamp 5.9 释出首个 RC 版本

去年底，我们曾经报道过 Winamp [准备重启](/article-14003-1.html)。现在，这个曾经最流行的音乐播放器 Winamp 释出了 Winamp 5.9 RC1。开发者称，对终端用户来说，Winamp 5.9 RC1 可能变化不大，但底层代码库进行了重大重构。在基础工作完成之后，他们将可以开始给软件修复和增添功能。

>
> **[消息来源：Winamp](http://forums.winamp.com/showthread.php?t=458120)**
>
>
>

>
> 老王点评：虽然可能有些过时了，但是曾经的 Winamp 还是有很多人怀念。
>
>
>


Linux Mint 21 “Vanessa” 的 10 大特色

>
> 我们总结了 Linux Mint 21 “Vanessa” 的 10 大特色，你可以看看有哪些是为你而准备的。
>
>
>

![](/data/attachment/album/202208/04/155728lmhv7hhsdmnbo1sf.jpg)

Linux Mint 21 “Vanessa” 是 [Linux Mint](https://www.debugpoint.com/linux-mint/) 的第 36 个发布版本，它带来了一系列特色，以及对桌面上的有用改善。这些特色散落在 Cinnamon 桌面、内核变化、Xapps 更新等处。

我在这份 Linux Mint 21 的重要特色列表对它们做了个总结。

### Linux Mint 21 “Vanessa” 的重要特色

![Linux Mint 21 Cinnamon Desktop](/data/attachment/album/202208/04/155729p5a5i539zzcajcn3.jpg)

#### 1、Ubuntu 22.04 及其相关更新

也许最重要的变化就是 Linux Mint 21 的基础了，它现在基于 [Ubuntu 22.04 “Jammy Jellyfish”](https://www.debugpoint.com/web-stories/ubuntu-22-04-review/) 。上一次的主要版本，即 Linux Mint 20 “Ulyana” ，是基于四年前发布的 Ubuntu 20.04 “Focal Fossa” 。沧海桑田，现在与 2020 年的世界已然完全不同。

因此，大量的软件包、版本升级、新的性能改善 —— 所有的这些底层更新都来到了 Linux Mint 21 。这包括最新的长期支持的 [Linux 内核 5.15](https://www.debugpoint.com/linux-kernel-5-15/) ，这带来了更多硬件系列的支持、以及针对编程、开发和网络的工具链的更新。

#### 2、Timeshift 备份工具的重大变化

几个月前，Mint 开发团队 [宣布](https://blog.linuxmint.com/?p=4323) ：他们将接管著名的备份工具 Timeshift，并将其作为一个 “XApps” 继续开发。这是一个重大变化。你可能会问为什么？

好吧，Timeshift 工具的开发者 Tony George 正忙于其它的项目。你可能听说过 Linux 的 “[TeeJeeTech](https://teejeetech.com/)” 应用。它是由 Tony 创建的，并且有一些很酷的应用。因此，他没有足够多的时间来专注于 Timeshift 的开发和改进。

![Timeshift creating snapshot](/data/attachment/album/202208/04/155730wf4eerua8nnz4vut.jpg)

说到这里，由于 Linux Mint 现在在维护它，这个发布版本带来了一些新的功能，例如，在 rsync 模式（不是 btrfs 模式）时，现在 Timeshift 可以确定进行下一次备份需要多少磁盘空间。此外，如果它看到磁盘空间在备份后小于 1 GB ，会停止备份过程。

#### 3、WebP 支持

WebP 图像是谷歌为 Web 创建的一种相当新的图像格式。它带来了更好的压缩率，在保持与传统的 JPEG 和 PNG 图片相当的良好质量的同时，减少了文件大小。

在 Linux 桌面支持 WebP（如查看图像、缩略图或编辑）需要 [额外安装](https://www.debugpoint.com/view-webp-ubuntu-linux/) 一些软件包。考虑到其流行程度，Linux Mint 开发团队为桌面应用及这个衍生发行版带来了开箱即用的 WebP 支持。

这意味着，在 Nemo 文件管理器中可以显示 WebP 图像的缩略图，并可以在 xviewer 中查看它们。Mint 开发团队总是优先考虑到最终用户，而诸如 Ubuntu 之类的其它发行版在默认支持 WebP 方面仍然落后。不仅如此，新的应用程序 [xapp-thumbnailers](https://github.com/linuxmint/xapp-thumbnailers) 现在还能帮助 Nemo 文件管理器预览更多的文件类型，如：

* ePub
* 带有专辑封面的 MP3
* RAW 图像
* AppImage

#### 4、进程监视器

一个名称为 <ruby> 进程监视器 <rt>  process monitor </rt></ruby> 的小巧方便的工具，将会告知你系统中正在发生什么。当你的系统正在自动更新或通过 Timeshift 备份时，系统托盘上的这个小图标就会显示出来。在这些情况下，你的系统可能会变慢，而这个漂亮的图标可以告诉你原因。

#### 5、改善打印支持

Linux Mint 针对硬件设备配置了各种驱动程序，默认情况下就支持打印机。这个版本的 Mint 带来 <ruby> <a href="https://datatracker.ietf.org/doc/html/rfc8011">  网络打印协议 </a> <rt>  Internet Printing Protocol </rt></ruby>（IPP）支持，可以免驱动进行打印和扫描。

另外，它也默认安装了 HP 的驱动程序 HPLIP 的最新版本 3.21.12 。

所有的这些变化都简化了打印机和扫描仪的使用，而像你这样的最终用户可以轻松地打印和扫描。这是一个 Linux 发行版的一个重要的方面，但并不是总是能顺利工作的。在 [点评过很多发行版](https://www.debugpoint.com/tag/linux-distro-review/) 后，我发现很多发行版无法检测到打印机，乃至不能打印。

很高兴看到 Mint 开发团队对这个关键功能做出了贡献。

#### 6、窗口动画更新

窗口和桌面动画效果有一些相当大的变化。首先，合并了窗口和桌面的效果设置。先前，是在不同的部分对动画进行细微的控制。

这里是对比视图：

![](/data/attachment/album/202208/04/155730nzx7cmvaxizfg88x.jpg)

![](/data/attachment/album/202208/04/155731czzrelt8erjbylf3.jpg)

其次，取消了映射窗口和桌面效果选项。

第三，带来一个新的控件，用于更改整体动画的快慢速度。

最后，还有一个可以禁用或启用在整个桌面上的所有动画的全局开关，给予你更多的控制选项。

我相信这是一个经过精心设计的、可以让人更清楚地了解的对话框和高级选项。

#### 7、Mutter 重新构建

让我们来看一下随 Linux Mint 21 而来的 [Cinnamon 桌面环境版本 5.4](https://github.com/linuxmint/cinnamon-desktop/releases/tag/5.4.0)。它是最新的 Cinnamon 发布版本，Mint 是第一个将其带给用户的的发行版（除了传统的 Arch Linux 用户，他们得到它 [有点超早](https://www.debugpoint.com/cinnamon-arch-linux-install/)）。

最后，开发团队对 Cinnamon 5.4 中的窗口管理器 Muffin 根据上游的 Mutter 进行了重新构建。由于 Muffin 最初是从 Mutter 复刻出来的，所以它总是落后于上游的 Mutter 的功能，即使是有一些后期移植的改变。为使 Muffin 尽可能地接近 Mutter 代码库，团队在包含的特色功能、错误修复及清理方面付出了大量的努力。

因此，在未来，更容易从 Mutter 上游移植变化和在需要的时候清理 Muffin。

#### 8、窗口管理器和 GTK 主题

伴随着 Muffin 的变化，开发团队也将 GNOME 控制中心的一些显示设置移动到了 Cinnamon 控制中心。此外，在 Cinnamon 5.4 中，来自 csd-xrandr 的显示配置移动到了 Muffin 窗口管理器中。显然，你不会在显示设置窗口中看到什么不同。不过，在缩放显示或在高分辨率窗口中时，你可能会发现一些性能的提升，以及错误或问题更少一些。

Mint 开发团队在 Cinnamon 5.4 引入的另外一个关键变化是，在应用程序中实现 GTK 窗口的统一渲染。先前，如果一个 GTK 应用程序使用了标题栏，那么对话框会是一个 CSD （客户端样式）和 GTK 主题的混合体.

现在随着 Cinnamon 5.4 的到来，所有的窗口都使用 GTK 主题进行渲染，而不再与它们的设计相关联。于是，传统的 Metacity 主题也被抛弃。

顺便说一句，我喜欢 Metacity 及其 “传统外观”，它们是 GNOME 的早期 [产物](https://www.debugpoint.com/gnome-classic-ubuntu-22-04/) 。

#### 9、软件包管理器更新

跟随 Debian、KDE Plasma 桌面的趋势，Linux Mint 也开始保护你的系统不会卸载重要的依赖关系软件包。

当你尝试卸载软件包时，Mint 现在会检查依赖关系，并检查重要的桌面软件包是否将会被移除。

如果发现这种情况，你将会得到一条阻止你继续卸载软件包的错误信息。

在另一方面，当成功地卸载一个软件包时，它会清理所有与之同时安装的依赖软件包。

#### 10、禁用 systemd OOMD 服务

自从 Ubuntu 22.04 LTS 发布以来，有一些对内存不足守护进程（`systemd-oomd`）不好的反馈。网上的很多用户都 [报告](https://askubuntu.com/questions/1404888/how-do-i-disable-the-systemd-oom-process-killer-in-ubuntu-22-04) 说：在没有任何警告或用户干预的情况下，会突然关闭应用程序（例如 Firefox）。进一步的调查表明，`systemd-oomd` 的实现情况“不是很好”。

理论上说，[systemd-oomd.service](https://www.freedesktop.org/software/systemd/man/systemd-oomd.service.html) 会监视你的系统的内存不足的情况，并且它有权杀死任何多过消耗系统资源的进程。Ubuntu 开发团队并没有和用户强调这一点，最后导致了不愉快的用户的体验。

基于这一认识，Linux Mint 21 决定 [不提供](https://debugpointnews.com/linux-mint-21-systemd-oom/) 这种服务，禁用它。因为 Linux Mint 的用户群体是普通用户、学生等，如果应用程序意外关闭，对用户来说将是一种不好的体验。

![Systemd OOMD service is not enabled](/data/attachment/album/202208/04/155732v863p480405l6l4n.jpg)

#### 11、其它变化

最后，让我们归纳一些微小却有影响的变化来结束这篇 Linux Mint 21 特色介绍。

* 默认的文档阅读器应用程序 Xreader 现在能够进行微小注释。这是一个很方便的功能。
* WebApp 管理器现在带来了一些自定义的浏览器参数。
* Warpinator 文件传输器实用工具现在可以向你显示来自 Windows 、Android 和 iOS 设备上的其它的源文件。
* Mint 将 Firefox 浏览器打包为 .deb 版本，而不是 Ubuntu 22.04 LTS 中的默认 .Snap 版本。感谢 Mint 开发团队，用户不必为卸载 Jammy 中的 Firefox 的 .Snap 版本的而运行 [一套复杂的命令](https://www.debugpoint.com/remove-firefox-snap-ubuntu/)。

![Firefox 102 in Linux Mint 21 – Exclusively packaged as deb executable](/data/attachment/album/202208/04/155732kw2t5cz2502s4wv4.jpg)
* 批量重命名应用程序 Thingy 在用户界面上做了一些改善。
* GRUB2 的操作系统检测程序（`os-prober`）现在能够检测出你的硬件系统上所有的操作系统（对双启动或多启动有用）。
* 蓝牙管理器 Blueman 取代了 Blueberry ，为连接和管理你的蓝牙设备带来了其它的功能。
* 最后，在这个发布版本中也有为你的新桌面而准备的新壁纸。

![New Wallpapers in Linux Mint 21](/data/attachment/album/202208/04/155733lkdagcwd6gbw79yt.jpg)

### 没有变化的部分

从表明上来看，你可能会觉着 Linux Mint 21 的绝大部分功能与先前的版本相同。默认桌面外观和默认壁纸保持不变。Xfce 和 MATE 桌面也没有发布任何重要的功能。因此，它们是完全一样的。此外，默认图标主题、应用程序菜单等等都可能会给你一种似曾相识的感觉。

### 总结

总体来说，最终用户需要的是一套完好的特色功能，而不是花哨的手势之类的东西。鉴于此，对初学者或最终用户来说，Linux Mint 是当今最好的 Linux 发行版。至此，这篇 Linux Mint 21 特色的总结就此结束了。

你认为 Linux mint 21 的新特色怎么样？在这个发布版本中，是否有一些你所求而未得的特色？让我们在下面的评论区讨论这个问题。

---

via: <https://www.debugpoint.com/linux-mint-21-features/>

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

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


在 Ubuntu 和 Debian 中使用 apt 命令更新单个软件包

Summary: 如果你想对更新有选择性，并且只想升级单个软件包

如果你想对更新有选择性，并且只想升级单个软件包

![](/data/attachment/album/202208/04/165705li66yephvx464ivt.jpg)

如何 [在命令行中更新你的 Ubuntu 系统](https://itsfoss.com/update-ubuntu/)？你可以使用 `apt update`（刷新包缓存）和 `apt upgrade` 命令。

```
sudo apt update && sudo apt upgrade

```

它会更新所有可以立即升级的已安装 apt 包。这也包括 Linux 内核版本。

这似乎是一件好事，尤其是对于桌面用户。但对于运行关键 Web 服务的 Ubuntu 服务器用户而言，情况可能并非如此。

如果你想对更新有选择性，并且**只想升级单个软件包**，请使用以下命令：

```
sudo apt install --only-upgrade package_name

```

让我们更详细地了解一下。

### 使用 apt 命令升级单个包

第一步是更新本地包仓库缓存，以便你的系统知道有新版本的软件包可用。

```
sudo apt update

```

**这是可选的**。查看一下你要升级的软件包是否在 [可升级软件包列表](https://itsfoss.com/apt-list-upgradable/) 中。

```
apt list --upgradable

```

如果所需的软件包有可用的新版本，你可以选择使用以下命令仅升级该单个软件包：

```
sudo apt install --only-upgrade package_name

```

如果你对已安装的软件包运行 `apt install` 命令，它将升级到下一个可用版本。

但如果该软件包尚未安装，`apt` 命令也会安装它。

这就是为什么 `--only-upgrade` 部分是必要的。使用该选项，`apt` 命令只会升级已安装的软件包。如果尚未安装，它将不会安装该软件包。

这不是最适合 Ubuntu 服务器用户的示例，但你仍然可以在下面的截图中看到我如何只升级了七个可升级包中的一个。

![Update only a single package in Ubuntu](/data/attachment/album/202208/04/165850avvqzv41ukw1f7wu.jpg)

### 仅升级选定的软件包

如果要升级选定的几个软件包，那么不必一一更新。只需使用前面提到的命令提供包名称。

```
sudo apt install --only-upgrade package1 package2 package3

```

这是一个例子。

![Upgrade selected packages in Ubuntu](/data/attachment/album/202208/04/170010i4hge0gmi03mce4h.jpg)

### 总结

当你面临必须升级选定软件包的情况时，你可以使用带有 `–only-upgrade` 选项的 `apt install` 命令。

我建议阅读 [如何更有效地使用 apt 命令](https://itsfoss.com/apt-command-guide/)。

---

via: <https://itsfoss.com/apt-upgrade-single-package/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[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/) 荣誉推出


如何使用 Dockerfile 创建自定义 Docker 镜像

Summary: 在这份指南中，我们将看到 Dockerfile 的简要介绍以及如何在 Linux 中使用 Dockerfile 来自动的 创建自定义 Docker 镜像 。

这才是企业和个人用户自定义需要滴！！！

![](/data/attachment/album/202208/04/172001acb136363vi6vcgk.jpg)

在这份指南中，我们将看到 **Dockerfile** 的简要介绍以及如何在 Linux 中使用 Dockerfile 来自动的 **创建自定义 Docker 镜像** 。

### 什么是 Dockerfile ？

Dockerfile 是附有构建 Docker 镜像说明的易于理解的文本文件。它囊括了用户在创建镜像时可以调用的所有命令。

我们可以使用 Dockerfile 创建自定义的镜像。可以通过 Docker Hub 分享的自定义 Docker 镜像。

如果你还不知道，Docker Hub 是 Docker 提供的托管存储库服务，用于团队查找和共享容器镜像，当然世界上任何人也都可以访问。

想象一下，早期如果我们想用 **Nginx**，我们要通过很多步骤，才能安装和配置好 Nginx 。得益于 Docker Hub ，现在我们可以在几分钟内，下载并运行 Nginx 的预置容器镜像。

![Nginx Docker Image In Dockerhub](/data/attachment/album/202208/04/172007ev1vmbj9lvcnlmwm.png)

运行如下命令从 Docker Hub 上拉取 Nginx 镜像：

```
# docker pull nginx

```

一旦我们拉取了 Docker 镜像，可以运行如下命令使用它：

```
# docker run -it -d -p 8080:8080 nginx

```

就这样，十分简单！

参考下方链接，了解更多使用 Docker 的方式：

* [开始使用 Docker](https://ostechnix.com/getting-started-with-docker/)

Docker Hub 上有超过十万个来自软件供应商、开源项目以及社区的容器镜像。

你可以从 Docker Hub 上下载你选择的镜像，并且使用上面的命令开始使用它。

### 理解 Dockerfile 格式

Docker 可以读取 Dockerfile 中的 **指令** 来自动的创建镜像。

典型的 Dockerfile 包含如下指令：

1、`FROM` —— 这会设置容器的基础镜像。

例如：

```
FROM ubuntu:22.04

```

这会将容器的基础镜像设置为 Ubuntu 。如果 ‘22.04’ 这个标志没有特别指明，则会设为最新版本（`latest`）。

2、`LABEL` —— 这是用来明确镜像的元数据信息的键值对。

例如：

```
LABEL ENV=“DEVELOPMENT”

```

3、`RUN` —— 这会在基础镜像中执行指令并创建一个新层。

例如：

```
RUN apt-get update
RUN apt-get install tomcat

```

4、`CMD` —— 这用来设置容器启动后先执行的命令。

例如：

```
CMD ["java", "-jar", "app.jar"]

```

5、`EXPOSE` —— 设置用于访问容器的端口。容器将会监听该端口。我们可以用来获得输出。

例如：

```
EXPOSE 8080

```

6、``MAINTAINER` —— 显示创建镜像作者的信息。

例如：

```
MAINTAINER info@ostechnix.com

```

7、`ENV` —— 用来设置环境变量的键值对。这些变量在镜像创建的时候设置，并在容器创建好后可以使用。

例如：

```
ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

```

8、`COPY` —— 用来拷贝本地文件至容器中。

例如：

```
COPY /target/devops.jar devops.jar

```

9、`ADD` —— 具有与拷贝相同的功能，不过更进一步还可以提取本地的 tar 文件或者从 URL 拷贝文件。

例如：

```
ADD devops.tar.xz / .
ADD http://example.com/abc.git /usr/local/devops/

```

10、`ENTRYPOINT` —— 用来设置镜像的主要命令。与 CMD 指令功能相同。不同的是 `ENTRYPOINT` 中的指令不会被重写。

例如：

```
ENTRYPOINT ["java", "-jar", "app.jar"]

```

11、`VOLUME` —— 该指令用来创建指定位置的挂载点。

例如：

```
VOLUME /app/devops

```

12、`USER` —— 将设置运行镜像并使用的用户名称以及用户组。

例如：

```
USER dhruv
USER admin

```

13、`WORKDIR` —— 这会设置工作目录。如果目录不存在，则会创建。

例如：

```
WORKDIR /var/lib/

```

这是一个 Dockerfile 的样本，可以参考一下：

```
FROM ubuntu:latest
MAINTAINER Senthilkumar Palani "info@ostechnix.com"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ jammy universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]

```

我将向你展示创建一个 Dockerfile 、创建并使用镜像的简单例子。

### 创建一个 Dockerfile

创建一个名为 `dockerfile` 的文件：

```
# nano dockerfile

```

添加下面几行命令。我们将更新并安装 `vim` 和 `curl` 包：

```
FROM alpine

RUN apk update
RUN apk add vim
RUN apk add curl

```

![Dockerfile For Alpine Linux](/data/attachment/album/202208/04/172008p92tu2t933f9zm2y.png)

按下 `CTRL+O` 和 `CTRL+X` 键保存文件并关闭。

现在 Dockerfile 已经就位。让我们继续，用该 Dockerfile 创建一个镜像。

>
> **注意：** 如果你在使用 [Docker 桌面版](https://ostechnix.com/docker-desktop-for-linux/)，你可以以一个普通用户运行 `docker` 命令。
>
>
>

### 使用 Dockerfile 创建 Docker 镜像

只需运行以下命令，便可以使用 Dockerfile 创建 Docker 镜像：

```
# docker build -t alpine .

```

请注意最后有一个 **点**（`.`）。

输出示例：

```
[+] Building 51.2s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 104B                                       0.0s
 => [internal] load .dockerignore                                          0.1s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for docker.io/library/alpine:latest          38.8s
 => [1/4] FROM docker.io/library/alpine@sha256:7580ece7963bfa863801466c0a  2.7s
 => => resolve docker.io/library/alpine@sha256:7580ece7963bfa863801466c0a  0.0s
 => => sha256:d7d3d98c851ff3a95dbcb70ce09d186c9aaf7e25d48 1.47kB / 1.47kB  0.0s
 => => sha256:530afca65e2ea04227630ae746e0c85b2bd1a179379 2.80MB / 2.80MB  2.4s
 => => sha256:7580ece7963bfa863801466c0a488f11c86f85d9988 1.64kB / 1.64kB  0.0s
 => => sha256:9b2a28eb47540823042a2ba401386845089bb7b62a9637d 528B / 528B  0.0s
 => => extracting sha256:530afca65e2ea04227630ae746e0c85b2bd1a179379cbf2b  0.2s
 => [2/4] RUN apk update                                                   4.3s
 => [3/4] RUN apk add vim                                                  3.5s
 => [4/4] RUN apk add curl                                                 1.3s
 => exporting to image                                                     0.4s
 => => exporting layers                                                    0.4s
 => => writing image sha256:14231deceb6e8e6105d2e551799ff174c184e8d9be8af  0.0s
 => => naming to docker.io/library/alpine                                  0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

```

按照上面的命令， Docker 会通过保存在当前工作目录中的 Dockerfile 中的命令开始自动的创建镜像。还记得我们在 Dockerfile 中保存的 `apk update`、`apk add vim` 和 `apk add curl` 命令吗？这些命令也将会自动的执行。

如果 Dockerfile 保存在其他目录，你可以使用 `-f` 标志来指定路径，例如：

```
# docker build -f /path/to/a/Dockerfile .

```

创建好镜像后，我们可以使用如下命令运行它：

```
# docker run -it alpine

```

该命令会启动这个 Alpine 容器并连接到它。

```
/ # uname -a
Linux 8890fec82de8 5.10.104-linuxkit #1 SMP Thu Mar 17 17:08:06 UTC 2022 x86_64 Linux
/ # cat /etc/alpine-release
3.16.1
/ #

```

如果你使用 Docker 桌面版，你可以通过<ruby> 容器 <rt>  Containers </rt></ruby>标签页界面来查看运行中的容器。

![View Containers In Docker Desktop](/data/attachment/album/202208/04/172009fzb180m8caibmy8b.png)

这就是使用 Dockerfile 构建自定义容器映像的方式。

我们仅仅讲了基础内容。你可以用 Dockerfile 做到很多东西。建议你参考一下官方 [Dockerfile 参考](https://docs.docker.com/engine/reference/builder/) ，以了解更多内容。

---

via: <https://ostechnix.com/a-brief-introduction-to-dockerfile/>

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

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


硬核观察 #718 龙芯指 RISC-V 不能实现自主，坚持自研指令集

Summary: • 龙芯指 RISC-V 不能实现自主，坚持自研指令集 • 单核计算机一小时破解了一种抗量子加密算法 • Fedora 37 正式支持树莓派 4

龙芯敢不敢像RISC-V那样开源

![](/data/attachment/album/202208/04/204240ka3o7ozcul7nnhzh.jpg)

![](/data/attachment/album/202208/04/204250f6oetkv8zete6n3x.jpg)

### 龙芯指 RISC-V 不能实现自主，坚持自研指令集

龙芯之前基于 MIPS 指令，去年开始推自研的 “龙芯架构” 指令集，号称 100% 自主。龙芯公司日前称，公司创立之初就认识到基于 x86 或者 ARM 不能建立自主体系，而 MIPS 指令系统相对比较开放。但 2019 年 MIPS 开源后又闭源的事件，公司认识到基于 MIPS 也无法建立自主生态。而对于最近几年很受欢迎的 RISC-V 开源指令集，龙芯认为基于 RISC-V 同样不能构建自主生态体系，RISC-V 架构指令条数较少，比较适合学术研究以及物联网应用，商业应用会需要增加更多的指令，因此龙芯坚持自主研发指令集。

>
> **[消息来源：快科技](https://news.mydrivers.com/1/850/850277.htm)**
>
>
>

>
> 老王点评：我坚持认为 RISC-V 开源指令集才是未来。
>
>
>

![](/data/attachment/album/202208/04/204300enzv4dhlv3ffml5d.jpg)

### 单核计算机一小时破解了一种抗量子加密算法

美国国家标准技术局（NIST）最近宣布了后量子加密和签名算法竞赛的首批获胜者。一种名为 SIKE 抗量子加密候选算法曾进入了第四轮评选，它是一种基于 Isogeny 的算法。鲁汶大学的一个团队发表论文称，他们在一台单核计算机上耗时一个小时获取了 SIKE 使用的加密密钥。SIKE 算法的发明人承认这出乎意料。

>
> **[消息来源：ARS Technica](https://arstechnica.com/information-technology/2022/08/sike-once-a-post-quantum-encryption-contender-is-koed-in-nist-smackdown/)**
>
>
>

>
> 老王点评：在量子计算还没有真正实用之前就妄想创造抗量子计算的算法，我觉得有些有些想的简单了。谁能肯定量子计算机就只能做到我们目前以为的那些事情呢，就像计算机刚刚发明之初，谁能想到如今整个世界都跑在计算机之上呢。
>
>
>

![](/data/attachment/album/202208/04/204316n2syscf8ufje3jvh.jpg)

### Fedora 37 正式支持树莓派 4

Fedora 工程和指导委员会已经确认了对树莓派 4 的“官方”支持。之前，树莓派 4 没有成为 Fedora 工作站的重点，是因为各种补丁没有被上游化，比如开源 3D 图形驱动没有上游化到内核中。现在，虽然这些上游化的工作还在进行中，但 Fedora 37 将可以提供对树莓派 4B 以及树莓派 400 和 CM4 计算模块的支持。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Raspberry-Pi-4-Fedora-37)**
>
>
>

>
> 老王点评：之前 Pop!\_OS 22.04 已经为树莓派 4 提供了支持，而 Fedora 37 也紧随其后，这都是这些驱动进入了上游后的成果，所以，真正推动 Linux 发展的的引擎，还是 Linux 内核啊。
>
>
>


如何在基于 Ubuntu 的 Linux 发行版上安装最新的 Vim 9.0

![](/data/attachment/album/202208/05/174903f3zu3nqrrnwclwrz.jpg)

>
> 这个快速教程展示了在 Ubuntu Linux 上安装最新版本的 Vim 的步骤。
>
>
>

Vim 是最 [流行的基于终端的文本编辑器](https://itsfoss.com/command-line-text-editors-linux/) 之一。然而，它在 Ubuntu 上没有被默认安装。

Ubuntu 使用 Nano 作为默认的终端编辑器。Nano 也是一个优秀的工具，我并不打算参与 [Nano 与 Vim 孰优孰劣的辩论](https://itsfoss.com/vim-vs-nano/)。

如果你已经花了一些时间掌握了 Vim 的快捷键，你就不必忘记它们，而开始使用一个新的编辑器。

你可以在终端使用以下命令在 Ubuntu 上安装 Vim：

```
sudo apt install vim

```

这很简单，对吗？这种方法的主要问题是，你不会得到最新的 Vim 版本。

你可以用以下命令检查已安装的 Vim 版本：

```
vim --version

```

而如果你查看 [Vim 网站](https://www.vim.org/)，你会发现 Vim 已经发布了更新的版本。

在写这篇文章的时候，[Vim 9.0 已经发布](https://news.itsfoss.com/vim-9-0-release/)，但在 Ubuntu 仓库中还没有。

好消息是，你可以使用一个 [非官方的，但积极维护的 PPA](https://launchpad.net/~jonathonf/+archive/ubuntu/vim) 安装最新的 Vim。

### 使用 PPA 在 Ubuntu 上安装 Vim 9

如果你有特定的 Vim 配置文件，为它们做个备份也无妨。

现在，要安装最新的 Vim 版本，先添加 PPA 仓库：

```
sudo add-apt-repository ppa:jonathonf/vim

```

![Adding the PPA to get the latest Vim version](/data/attachment/album/202208/05/174905wzusj35h5jyhosoj.png)

你不需要在 Ubuntu 上更新软件包缓存，但其他发行版如 Mint 可能仍然需要：

```
sudo apt update

```

现在，使用下面的命令来安装 PPA 提供的最新 Vim 版本：

```
sudo apt install vim

```

如果你已经安装了一个较早的 Vim 版本，它将被升级。你可以用以下方法检查已安装的 Vim 版本：

```
vim --version

```

![Checking installed Vim version](/data/attachment/album/202208/05/174906y0j8razlwy0ooaye.png)

这是一个维护得非常好的 PPA，适用于所有活跃的 Ubuntu 版本。

如果你是 PPA 的新手，我有一个关于这个主题的详细指南。你应该阅读以对 [Ubuntu 中 PPA 的概念](https://itsfoss.com/ppa-guide/) 了解更多。

### 降级或删除

如果你想回到 Ubuntu 提供的旧版 Vim，你应该删除现有的版本，删除 PPA 并重新安装它。

在删除 Vim 之前，如果你做了自定义修改并打算再次使用 Vim，你应该复制 vimrc 或其他类似的配置文件。

那么，打开一个终端，使用以下命令：

```
sudo apt remove vim

```

现在删除 PPA，否则你会再次得到最新的 Vim（如果你尝试安装旧版本的 Vim）：

```
sudo add-apt-repository -r ppa:jonathonf/vim

```

现在，如果你想要旧的、官方的 Ubuntu 版本的 Vim，只需再次 [使用 apt 命令](https://itsfoss.com/apt-command-guide/) 安装它。

享受 Ubuntu 上的 Vim 吧。

---

via: <https://itsfoss.com/install-latest-vim-ubuntu/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[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/) 荣誉推出


Slax Linux 的 Slackware 变体重新复活

基于 Slackware，终归不是 Slackware。老兵不死，只是逐渐凋零。

>
> 基于 Slackware 的 Slax 版本在 Slackware 15.0 的基础上进行了升级，并带来一些基本的改进。
>
>
>

![](/data/attachment/album/202208/05/194111k1czvyqqv5ur5105.jpg)

Slax 是最有趣的 [轻量级 Linux 发行版](https://itsfoss.com/lightweight-linux-beginners/) 之一。

它是基于 Slackware 的，是 32 位系统的一个合适选择。如果你尚不知道，Slackware 是最古老的、活跃的 Linux 发行版，并在 6 年后见证了一次重大版本升级，即 [Slackware 15](https://news.itsfoss.com/slackware-15-release/) 的发布。

此外，Slax 还提供了一个基于 Debian 的替代版本，该版本正在积极维护。正如创作者在博文中提到的，这是由于基于 Slackware 的版本（Slax 14）在很长一段时间内（9 年）没有得到更新。

因此，看到最终以 **Slax 15.0** 的形式发布了重大升级版本，以及也对其 Debian 版本（即 **Slax 11.4.0**）进行小幅更新，还是令人感动。

有趣的是，这个版本早在 2022 年 7 月就向其支持者提供了。而现在，所有人都可以下载和试用了。

让我来介绍一下新的变化。

### Slax 15.0 和 Slax 11.4 发布

为了解决关键的升级问题，Slax 15.0 带来了 Slackware 15.0 中添加的改进。

这应该包括增加了 [Linux 内核 5.15 LTS](https://news.itsfoss.com/linux-kernel-5-15-release/)，即增强的 NTFS 驱动支持，以及对英特尔/AMD 处理器的支持改进。你可以看看这个内核变体，提供了更多内置驱动程序，或者了解一下节省内存和启动时警告的通用选项。

该个发布版本通过插件支持 slackpkg，这意味着你可以从各种软件库中安装软件，包括官方的 Slackware 仓库和 SlackOnly 仓库。

Slax 15.0 还涉及到一个更新的关机程序，对设备的卸载处理更加完善。

考虑到 Slax 不再是一个基于 KDE 的发行版。因此，当你下载 Slackware 或 Debian 版本的 ISO 时，你得到的是一个基于 Fluxbox 的版本。

而对于 Debian 版本，你会发现它的更新是基于 **Debian 11.4** “Bullseye” 的。

### 下载 Slax 15.0 和 Slax 11.4

你无法找到基于 Slackware 的版本的 32 位版本，而只能找到基于 Debian 的。

其 ISO 文件可以在其官方网站上下载。如果你想以某种方式支持该项目，也可以选择购买。

>
> **[Slax 15.0](https://www.slax.org/)**
>
>
>

无论哪种情况，你都可以前往其 [Patreon 页面](https://patreon.com/slax/) 以示支持。

你对 Slax 15.0 的发布有什么看法？你试过了吗？

---

via: <https://news.itsfoss.com/slax-15-release/>

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

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


硬核观察 #719 GitLab 将归档免费用户的不活跃项目

Summary: • GitLab 将归档免费用户的不活跃项目 • Linux 可能会废弃对 DECnet 协议的支持 • Cloudflare 推出后量子实验，为抗量子破解做准备

GitLab 没那金刚钻，就别揽那瓷器活。这比 Gitee 开源仓库先审核再上线更过份。

> Gitee 要求开源仓库先审核再上线有什么好处？

> zhihu.com/question/535820467

好处当然是 自我审核 自我阉割，倒逼开发者写出符合社会主义核心价值观的代码啦！

来自湖北武汉的 Chrome Mobile iOS 103.0|iOS 15.6 用户

好处当然是 自我审核 自我阉割，倒逼开发者写出符合社会主义核心价值观的代码啦！

gitee需要注册用户才能下载,不登陆下载不了文件,特别是终端里无法下载文件,现在已经弃了

![](/data/attachment/album/202208/05/205427lg99cbeyubkbvbju.jpg)

![](/data/attachment/album/202208/05/205436llamvyactvexizdr.jpg)

### GitLab 将归档免费用户的不活跃项目

之前，有报道称 GitLab 计划自动删除不活跃时间超过一年的免费用户项目，以节省托管费用，此举预计能每年节省一百万美元。这一消息立即引发了争议。周五 GitLab 通过官方 Twitter 账号发表声明，它在内部讨论之后决定不删除不活跃项目，而是将这些代码库转移到对象存储中，访问速度会比较慢。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72367)**
>
>
>

>
> 老王点评：这真能减少那么多费用支出吗？我表示怀疑。但是无论如何，我觉得 GitLab 不管是哪种做法，其实都不是好的做法。另外，这是否也代表着 GitLab 的日子不太好过？
>
>
>

![](/data/attachment/album/202208/05/205445z5d050dpjr06664o.jpg)

### Linux 可能会废弃对 DECnet 协议的支持

微软的一位工程师建议从 Linux 内核中删除 DECnet 协议处理代码。DECnet 代码的最后一位维护者在 2010 年将该代码标记为孤儿代码。这一变化对大多数人是没有影响的。VMS 是最后一个使用 DECnet 的主流操作系统，而且 VMS 已经支持 TCP/IP 很长时间了。有趣的是，就在两周前，VMS 软件公司再次宣布 OpenVMS 9.2 这次真的准备好了。TCP/IP 并不是唯一的网络协议，而且在 90 年代中期，它甚至不是主导协议。Linux 内核曾经支持多种网络协议，但它们正在迅速消失。

>
> **[消息来源：The Register](https://www.theregister.com/2022/08/03/linux_may_soon_lose_support/)**
>
>
>

>
> 老王点评：不知不觉中，那个并不严格符合 OSI 的 TCP/IP 几乎成了唯一选择，而老旧协议们纷纷进入了历史，比如，有谁还记得 Novell 的 IPX 协议？
>
>
>

![](/data/attachment/album/202208/05/205500kbjxt6jhmxk3bb4k.jpg)

### Cloudflare 推出后量子实验，为抗量子破解做准备

Cloudflare 正在推出一项后量子实验，以增加对两种混合后量子密钥协议的支持，所有网站所有者都可以报名参加。目前在网站上添加这些密钥协议不会有什么作用，因为还没有网络浏览器支持它们。浏览器遇到这些加密方案时将退回到现有的方式，因此自然也不具有抗量子性。Cloudflare 表示，互联网将在未来几年内向量子加密技术发展，并希望这个测试版能给其客户一个尝试的先机。Cloudflare 正在使用的后量子密码学被称为 Kyber。上个月，美国国家标准与技术研究所（NIST）决定对 Kyber 进行标准化，最终规范将于 2024 年出台。

>
> **[消息来源：CloudFlare](https://blog.cloudflare.com/experiment-with-pq/)**
>
>
>

>
> 老王点评：虽然几乎没什么用，但是这是一种有趣的尝试和实验，我想可能很快就会有一些浏览器配合来进行后量子加密了。
>
>
>


Koodo：一款适用于 Linux 的一体化开源电子书阅读器应用

Summary: Koodo 是一款多合一的开源电子书阅读器，具有帮助你更好地管理和阅读电子书的功能。

很不错的软件

![](/data/attachment/album/202208/06/200116wwgeawub7ge0tard.jpg)

有几个可供桌面 Linux 用户使用的 [电子书阅读器](https://itsfoss.com/best-ebook-readers-linux/)。

几乎所有发行版都带有可以打开 PDF 文件的文档阅读器。它还可能支持其他文件格式，例如 epub 或 Mobi，但不一定。

这就是为什么需要像 [Foliate](https://itsfoss.com/foliate-ebook-viewer/) 和 Calibre 这样的专门应用来阅读和管理各种格式的电子书的原因。

最近，我遇到了另一个开源软件，它为电子书阅读器提供了几个令人兴奋的功能。

### Koodo：它有你能想到的一切

[Koodo](https://koodo.960960.xyz/en) 是一款多合一的开源电子书阅读器，具有帮助你更好地管理和阅读电子书的功能。它是一个跨平台应用，你可以在 Linux、Windows 和 macOS 上下载。你甚至可以 [在浏览器中使用它](https://reader.960960.xyz/#/manager/empty)。

它的用户界面看起来很现代，可能是因为它是一个 Electron 应用。你必须导入书籍并将它们添加到 Koodo。它不按文件夹导入书籍。不过，你可以选择多个文件进行导入。书太多了？可以将一些添加到你的收藏夹以便快速访问。

![Koodo ebook reader interface](/data/attachment/album/202208/06/200248bmigmiq6c96x6wlp.jpg)

我使用了 AppImage 格式的软件包，但由于未知原因，它没有显示文件的缩略图。

![Koodo ebook reader dark mode interface](/data/attachment/album/202208/06/200118i4kg1xhhh3ll8pvl.png)

它支持流行的电子书文件格式，如 PDF、Mobi 和 Epub。但不止这些，它还支持 CBR、CBZ 和 CBT 等漫画书格式，它还支持更多。它还可以阅读 FictionBooks（.fb2）、Markdown 和富文本格式（RTF）以及微软 Office Word 文档（.docx）。

除了支持很多文件格式外，它还提供了多种功能来改善你的阅读体验。

你可以高亮显示文本并使用文本注释对其进行注释。你还可以在当前文档或谷歌上搜索选定的文本。

![Annotate, highlight or translate selected text](/data/attachment/album/202208/06/200304ana62pv1mcsak6g7.jpg)

你可以从主应用窗口的侧边栏中访问高亮显示的文本和注释。

也有文本到语音和翻译选定文本的选项。但是，这两个功能在我的测试中都不起作用。我使用的是 Koodo 的 AppImage 版本。

Koodo 支持各种布局。你可以以单列、双列或连续滚动布局阅读文档。对于 ePub 和 Mobi 格式，它会自动以双列布局打开。对于 PDF，默认选择单列布局。

你可以根据自己的喜好自定义 UI。更改字体、大小、段落间距、文本颜色、背景颜色、行间距、亮度等。

![koodo additional features](/data/attachment/album/202208/06/200327qp4pai5sjp6pwfth.jpg)

Koodo 支持夜间阅读模式以及五个不同的主题。你可以根据自己的喜好在主题之间切换。

你还可以使用 Dropbox 或其他支持 Webdav 协议的 [云服务](https://itsfoss.com/cloud-services-linux/) 跨设备同步你的书籍和阅读数据（如高亮、笔记等）。

![You can backup your data in your preferred cloud service](/data/attachment/album/202208/06/200119l89m864mv7xgxsbs.png)

### 在 Linux 上获取 Koodo

如果你想体验一下 Koodo，你可以试试它的在线版本。你可以在浏览器中使用 Koodo。你的数据本地存储在浏览器中，如果你清理浏览器缓存，你会丢失数据（高亮、笔记等，但不会丢失计算机上存储的书籍）。

>
> **[在线尝试 Koodo](https://reader.960960.xyz/)**
>
>
>

如果你喜欢它的功能，可以选择在您的计算机上安装 Koodo。

Linux 用户有多种选择。你有 Debian 和基于 Ubuntu 的发行版的 deb 文件、Red Hat 和 Fedora 的 RPM，以及面向所有发行版的 Snap、AppImage 和可执行文件。

你可以从项目主页获取你选择的安装程序。

>
> **[下载 Koodo](https://koodo.960960.xyz/en)**
>
>
>

### 总结

Koodo 并不完美。它有大量功能，但并非所有功能都能完美运行，正如我在测试中发现的那样。

尽管如此，它仍然是一个很好的应用，有可能在用户中流行起来。只有少数几个应用包含如此多的功能。

感谢 Koodo 开发人员为桌面用户创建了一个有前途的开源应用。

你可以 [访问该项目的仓库](https://github.com/troyeguo/koodo-reader) 来查看源代码、报告 bug 或者通过给项目加星来向开发者表达喜爱。

---

via: <https://itsfoss.com/koodo-ebook-reader/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[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/) 荣誉推出


硬核观察 #720 中国内核开发者向 Linus 建议继续保留 5.20 版本号

Summary: • 中国内核开发者向 Linus 建议继续保留 5.20 版本号 • GitLab 禁止员工使用 Windows • 开发者大幅精简 Rust for Linux v9 补丁

Linus 理都不会理

虽然有点难堪，但是确实只有一个人侧面回复了。而所有的中国贡献者都没发声。

![](/data/attachment/album/202208/06/211837zvb5zvfyofyfs7zh.jpg)

![](/data/attachment/album/202208/06/211846g7x1p6jo7a7c0oc7.jpg)

### 中国内核开发者向 Linus 建议继续保留 5.20 版本号

前两天，在 Linux 内核 5.19 的发布公告中，Linus Torvalds 称，由于比较大的数会让他混淆，按照惯例，他准备将 5.20 版本“20 进位”到 [6.0](/article-14887-1.html)。今天，一位中国的 Linux 内核开发者 Zhang Boyang，在内核邮件列表中向 Linus 表示，“5.20” 在中文代表“我爱你”。因此，“Linux 5.20” 在中文中可以被理解为 “我爱 Linux”。因此，他建议 Linus 继续使用 5.20 版本号，以鼓励对 Linux 的热爱。之前，Linux 在发布 3.11 版时，曾将该版本专门命名为 “Linux For Workgroups”，以纪念微软的操作系统里程碑 Windows for Workgroups 3.11。不过，目前 Linus 和其它人尚未对此进行回应。

>
> **[消息来源：内核邮件列表](https://lore.kernel.org/lkml/9bc1f1f4-3923-be9e-ee13-9c8252a56643@gmail.com/)**
>
>
>

>
> 老王点评：我觉得这个建议不错，不知道 Linus 会怎么想？
>
>
>

![](/data/attachment/album/202208/06/211859hnhhja3jea37doqw.jpg)

### GitLab 禁止员工使用 Windows

GitLab 的文件显示，它允许员工使用 Linux 和 macOS，而禁止使用 Windows。理由是：Windows 是份额最高的桌面系统，因此也是间谍软件、病毒和勒索软件的最主要目标。Windows 家庭版的安全性难以保障，因此不符合该公司的安全准则。苹果的电脑是首选，如果熟悉 Linux 也可选择戴尔公司的 Linux 笔记本电脑。

>
> **[消息来源：GitLab](https://about.gitlab.com/handbook/business-technology/team-member-enablement/onboarding-access-requests/#laptop-configurations)**
>
>
>

>
> 老王点评：有道理的规定，作为一个技术公司，这样要求不过分。
>
>
>

![](/data/attachment/album/202208/06/211909tky78w4izzpysyjs.jpg)

### 开发者大幅精简 Rust for Linux v9 补丁

本周早些时候，开发者发布了 Rust for Linux v8 补丁，这些补丁带来了多达 43.6 万行新代码，而今天发布的 Rust for Linux v9 大幅瘦身，删除了许多额外的功能和集成，只有 12.5 万行的新代码。开发者称，“这是一个精简过的 v8。它有足够的支持来编译一个最小的 Rust 内核模块，目的是先获得‘核心’支持，然后开始向上游逐个扩展其他部分。”Linus Torvalds 一直希望尽快完成该补丁的合并。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Rust-For-Linux-v9-Patches)**
>
>
>

>
> 老王点评：看来，在下一个 Linux 内核中我们有望见到 Rust 的正式支持了。
>
>
>


如何清理 Snap 保留的旧软件包以释放磁盘空间

![](/data/attachment/album/202208/07/105824nyac4m66a6886x6q.jpg)

>
> 这个带有脚本的快速指南有助于清理旧的 Snap 软件包，并释放 Ubuntu 系统中的一些磁盘空间。
>
>
>

我的 Ubuntu 测试系统中出现磁盘空间不足。因此，我通过 GNOME 的磁盘使用分析器进行调查，以找出哪个软件包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录，令我惊讶的是，我发现 Snap 和 Flatpak 消耗了大量的存储空间。

![Snap size – before cleanup](/data/attachment/album/202208/07/105828vnnz0gx4flux4qx0.jpg)

我始终坚持一个规则：除非必要，否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装大小和一些其他问题。我更喜欢原生 deb 和 rpm 包。多年来，我在这个测试系统中安装和移除了一些 Snap 包。

问题出现在卸载后。Snap 在系统中保留了一些残留文件，而一般用户不知道。

所以我打开了 Snap 文件夹 `/var/lib/snapd/snaps`，发现 Snap 会保留以前安装/卸载的软件包的旧版本。

例如，在下图中，你可以看到 GNOME 3.28、3.34 和 Wine 这些都被删除了。但它们还在那里。这是因为 Snap 设计上在正确卸载后保留已卸载软件包的版本。

![Files under snaps directory](/data/attachment/album/202208/07/105828uftbjelhn903hs7r.jpg)

或者，你可以在终端中使用：

```
snap list --all

```

![snap list all](/data/attachment/album/202208/07/105829v4z9fcchu4lfhp9h.jpg)

对于保留的版本数量，默认值为 3。这意味着 Snap 会保留每个软件包的 3 个旧版本，包括当前安装版本。如果你对磁盘空间没有限制，这是可以的。

但是对于服务器和其他场景，这很容易遇到成本问题，消耗你的磁盘空间。

不过，你可以使用以下命令轻松修改计数。该值可以在 2 到 20 之间。

```
sudo snap set system refresh.retain=2

```

### 清理 Snap 版本

在 SuperUser 的一篇文章中，Canonical 的前工程经理 Popey [提供了一个简单的脚本](https://superuser.com/a/1330590) 可以清理旧的 Snap 版本并保留最新版本。

这是我们将用来清理 Snap 的脚本。

```
#!/bin/bash
 #Removes old revisions of snaps
 #CLOSE ALL SNAPS BEFORE RUNNING THIS
 set -eu
 LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
     while read snapname revision; do
         snap remove "$snapname" --revision="$revision"
     done

```

将上述脚本以 .sh 格式保存在目录中（例如 `clean_snap.sh`），赋予其可执行权限并运行。

```
chmod +x clean_snap.sh

```

当我运行脚本时，它减少了很多磁盘空间。该脚本还将显示要删除的包的名称。

![Executing the script](/data/attachment/album/202208/07/105830w87lwqqqp8m8j8ml.jpg)

![Snaps size after cleanup](/data/attachment/album/202208/07/105830pqzil2z00wqu3ukw.jpg)

### 结束语

关于 Snap 的设计效率如何，人们总是争论不休。许多人说，它的设计是糟糕的，是臃肿的，且消耗系统资源。该论点的某些部分是正确的，我不会否认。如果正确实施和增强，沙盒应用的整个概念就很棒。我相信，与 Snap 相比，Flatpak 做得更好。

也就是说，我希望这可以帮助你清理一些磁盘空间。尽管它只在 Ubuntu 中进行了测试，但它应该适用于所有支持 Snap 的 Linux 发行版。

此外，请查看我们关于 [如何清理 Ubuntu](https://www.debugpoint.com/2018/07/4-simple-steps-clean-ubuntu-system-linux/) 的指南以及其他步骤。

最后，如果你正在寻找清理 **Flatpak** 应用，请参阅 [这个指南](https://www.debugpoint.com/clean-up-flatpak/)。

---

via: <https://www.debugpoint.com/clean-up-snap/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


Equalify：让每一个人都可以无障碍访问互联网

Summary: Equalify 是一个为了让互联网更易于使用的开源项目。

无障碍访问，究竟是什么意思？实在不知道这是个什么概念，也不知道这是个软件，还是个标准。

针对特殊人群推出的服务，如视障人士提供读网页的工具，老年人用更大的文字浏览等等~

Equalify 是一个为了让互联网更易于使用的开源项目。

>
> Equalify 是一个为了让互联网更易于使用的开源项目。
>
>
>

![](/data/attachment/album/202208/07/114828xkk55krbsprkx7kk.jpg)

<ruby> 无障碍访问 <rt>  Accessibility </rt></ruby> 是一把促进社会更加开放的的钥匙。

我们在网上学习，我们在网上花钱，也在网上吵吵嚷嚷。更重要的是，我们在网上获取的信息激励我们创造一个更好的世界。当我们忽视无障碍访问的要求时，出生时失去光明，或在战争中失去四肢的人们都将只能被阻挡在他人可以享受的网上信息之外。

*我们必须确保每个人都有通往开放互联网的通道*，而我正在通过开发 [Equalify](https://equalify.app/)，为实现这一目标而努力。

### 什么是 Equalify?

Equalify 是“无障碍访问平台”。

这个平台允许使用者们对数以千计的网站进行多种无障碍访问的扫描。通过使用我们的最新版本，用户还可以过滤无数的警告，创建一个对他们来说有意义的统计仪表盘。

这个项目才刚刚开始。Equalify 的目的是开源像 SiteImprove 这样的昂贵服务所提供的各种收费服务。有了更好的工具，我们可以确保互联网更容易访问、我们的社会更开放。

### 如何判断网站的无障碍访问？

W3C 的网络无障碍访问组织发布了《网络内容无障碍访问指南（WCAG）》，为无障碍访问设定了标准。Equalify 和包括美国联邦政府在内的其它机构，都使用 WCAG 来定义网站的无障碍访问。我们扫描的的网站越多，我们就越能了解 WCAG 标准的不足和潜力。

### 如何使用 Equalify?

花点时间查看一下我们的 GitHub，这样你能更多的了解这个产品。[README](https://github.com/bbertucc/equalify) 提供了如何开始支持和使用 Equalify 的分步教程。

### 我们的目标

我们的最终目标是让开放的互联网更易于使用。根据 [The WebAIM Million](https://webaim.org/projects/million/) 的数据，96.8% 的网站主页不满足 WCAG 标准。随着越来越多的人们开发和使用 Equalify，我们将与有障碍的页面斗争。每个人都应该有平等的机会进入开放的互联网。在我们朝着为所有人建设一个更强大、更开放的社会而努力时，Equalify 也正在朝着这个目标努力。

---

via: <https://opensource.com/article/22/6/equalify-open-internet-accessibility>

作者：[Blake Bertuccelli](https://opensource.com/users/blake) 选题：[lkxed](https://github.com/lkxed) 译者：[yjacks](https://github.com/yjacks) 校对：[wxy](https://github.com/wxy)

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


Peppermint OS 现在也提供无 systemd 的 Devuan 变体了！

>
> 基于 Devuan 的 Peppermint OS 可能是无 systemd 发行版中一个令人振奋的新成员。听起来不错吧？
>
>
>

![peppermint](/data/attachment/album/202208/07/151751cyq0406lzmaefi4l.jpg)

作为 [最轻量级和最灵活的 Linux 发行版之一](https://itsfoss.com/lightweight-linux-beginners/)，Peppermint OS 现在提供一个基于 Devuan 的 ISO，可以让高级用户对他们的系统有更多的控制。

随着他们发布了 Peppermint OS 11，[他们放弃使用 Ubuntu](https://news.itsfoss.com/peppermint-11-release/) 作为基础，而使用 Debian，使 Peppermint OS 更加稳定和可靠。

### 基于 Devuan 的 Peppermint OS

![Peppermint OS devuan](/data/attachment/album/202208/07/151751dg34wcq8nwq6rtqp.png)

那么，首先 Devuan 是什么？

Devuan 是 Debian 的一个分叉，没有 systemd，所以用户可以拥有移植性和选择的自由。

是否使用 systemd 经常发生争论，这就是为什么我们有一个 [无 systemd 的 Linux 发行版](https://itsfoss.com/systemd-free-distros/#systemd-or-not) 的列表，但只有少数几个可以提供开箱即用的精良体验。

现在，基于 Devuan 的 Peppermint OS 版本应该是这个列表中令人振奋的补充。

如果你想要一个无 systemd 的发行版，给你的操作系统更多的自由，这应该是一个不错的尝试。

别担心，Peppermint OS 的 Debian 版将会继续存在。所以，你可以期待基于 Devuan 和基于 Debian 的 ISO 都可以使用。

### 你需要无 systemd 发行版吗？

systemd 是一个初始化系统。当你启动你的 Linux 机器时，初始化系统是最先启动的程序之一，并将一直运行到你使用电脑为止。

但 [systemd 不仅仅是一个初始系统](https://freedesktop.org/wiki/Software/systemd/)，它还包含其他软件，如 logind、networkd 等，用于管理 Linux 系统的不同方面。

总的来说，它演变成了一个复杂的初始模块。虽然它使许多事情变得简单，但在一些用户看来，它是一个臃肿的解决方案。

因此，有用户开始喜欢 Devuan 这样的选项。而且，Peppermint OS 的开发者现在正试图通过使用 Devuan 作为另一个版本的基础，来改善桌面用户的体验。

### 下载基于 Devuan 的 Peppermint OS

对于习惯于无 systemd 的用户来说，这是一个很好的选择。

但是，如果你从来没有尝试过无 systemd 的发行版，除非你知道自己在做什么，否则进行切换可能不是一个明智的主意。

>
> **[Peppermint OS (Devuan)](https://peppermintos.com/2022/08/peppermint-os-releases-for-08-02-2022/)**
>
>
>

---

via: <https://news.itsfoss.com/peppermint-os-devuan/>

作者：[Sagar Sharma](https://news.itsfoss.com/author/sagar/) 选题：[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/) 荣誉推出


硬核观察 #721 JSON 的创造者认为 JavaScript 应该退休

Summary: • JSON 的创造者认为 JavaScript 应该退休 • 爱普生打印机设置最大打印次数，到达即报废 • Meta 公司在网上发布了其最新的 AI 聊天机器人

经常聊天的人群，容易陷入盲目的热烈和狂欢，思想上走向共同的偏见而自以为然。

![](/data/attachment/album/202208/07/172523j44q0hj870fptyxo.jpg)

### JSON 的创造者认为 JavaScript 应该退休

在网络应用中随处可见到用于序列化数据的 JSON。近日，JSON 规范的创造者在一次采访中认为 JavaScript 已经成为进步的障碍，他说，“我们今天能对 JavaScript 做的最好的事情就是让它退休。”他是一位著名的 JavaScript 的倡导者。他说，“人们对进一步扩充语言而不是让它变得更好有着强烈的兴趣。所以，JavaScript 和其他恐龙语言一样，已经成为进步的障碍。”根据 Stack Overflow 今年早些时候的一项调查，超过 65% 的开发者使用 JavaScript，远远超过排名第二的 Python 的 48%。

>
> **[消息来源：Dev Class](https://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford/)**
>
>
>

>
> 老王点评：编程语言的发展很有趣，像一个生命一样，一样新陈代谢，兴亡更替。那么你觉得 JavaScript 过时了吗？
>
>
>

![](/data/attachment/album/202208/07/172539wrfef9bfi2bi9f42.jpg)

### 爱普生打印机设置最大打印次数，到达即报废

据报道，爱普生公司将其某些型号的喷墨打印机硬编码设定为打印到特定次数后就停止工作。理由是到达该次数后，打印机内用于收集页面上未使用的墨水的一个墨垫会被墨水浸满，可能会溢出造成客户的损失。然而，爱普生并没有测量墨垫的饱和度来确定何时达到该点，而是在其打印机上设置了一个计数器，当达到某个阈值时就会禁用该打印机。并且，尽管该公司声称墨垫问题无法修复，但一段视频显示，事实上，墨垫的更换很简单。而该公司则建议用户在到达限制后，最好更换新的打印机。

>
> **[消息来源：Sub Stack](https://fighttorepair.substack.com/p/citing-danger-of-ink-spills-epson)**
>
>
>

>
> 老王点评：合着在买到打印机时就已经被限制了使用次数。
>
>
>

![](/data/attachment/album/202208/07/172557sbw9kwwmk15swyks.jpg)

### Meta 公司在网上发布了其最新的 AI 聊天机器人

该机器人被称为 BlenderBot 3，能够进行一般的闲聊。它建立在大型语言模型（LLM）上，OpenAI 的 GPT-3 就是 LLM 最广为人知的例子。但 LLM 模型也有严重的缺陷：它们会在训练数据中加强偏见，并经常对用户的问题编造答案。后面这个问题是 Meta 特别想用 BlenderBot 来测试的。该聊天机器人的一大特点是它能够在互联网上搜索，以便谈论特定的话题。更重要的是，用户可以点击它的回答，看看它从哪里得到的信息。

>
> **[消息来源：The Verge](https://www.theverge.com/2022/8/5/23293281/meta-ai-chatbot-blenderbot-3-web-access-research-safety)**
>
>
>

>
> 老王点评：“人”还是要经常聊天的，否则容易孤独和思想上走向偏执。: D
>
>
>


修复 Ubuntu 中的 “Pending Update of Firefox snap” 错误

Summary: 即使在你重启浏览器甚至计算机后，它仍可能显示相同的 “pending update of Firefox” 通知。

Ubuntu有病

![](/data/attachment/album/202208/08/154842wquoflgffwyyn2cw.jpg)

如果你使用的是 Ubuntu 22.04，你可能已收到过此通知。

![Notification about pending Firefox app](/data/attachment/album/202208/08/154844lb3btmruy0umytqh.png)

它会通知你 Firefox 更新正在等待中，并要求你关闭应用以避免中断。

因此，就像一个听话的 Ubuntu 用户一样，你在保存或完成工作后关闭了 Firefox 浏览器。

你认为 Firefox 已在后台更新，重启浏览器将运行较新版本。

只是，并非如此。

**即使在你重启浏览器甚至计算机后，它仍可能显示相同的 “pending update of Firefox” 通知**。

令人沮丧么？我可以告诉你发生了什么。

让我解释一下为什么会发生这种情况，以及你可以做些什么来“修复”它。

### 修复 “pending update of Firefox snap” 问题

早些时候，Firefox 曾经在后台更新，然后要求你重启浏览器。在你重启浏览器之前 [不能](https://news.itsfoss.com/mozilla-annoying-new-tab/) 打开任何网站。

![Firefox forced restart in the past](/data/attachment/album/202208/08/154928pdg71o4p7y16x77z.png)

在将 [Firefox 浏览器切换为默认 Snap 包格式](https://news.itsfoss.com/ubuntu-firefox-snap-default/) 后，Ubuntu 团队对更新流程进行了一些改动。

此通知是“改进的用户体验”的一部分。现在，Firefox 不再阻止你浏览。你可以在方便时重新启动浏览器以进行更新。

但是为什么即使在你重新启动浏览器或系统后它仍然显示这个通知？

因为这是一条糟糕的通知消息，无法为你提供完整的信息。

#### Firefox 更新还没有开始

当你看到 “pending Firefox update” 时，你错误地认为应用已在后台更新，重启会将其升级到较新的版本。

而对于现在这种情况，Ubuntu 中的 Snap 包每天会自动刷新（更新）一次或几次。为了避免在重新启动安装更新之前 Firefox 不允许你浏览任何内容而导致工作中断，Ubuntu 甚至不会在后台更新 Firefox Snap 包。

相反，当 Snap 包刷新时，**它会显示通知并希望你立即关闭浏览器**，以便可以使用其他 Snap 包进行更新。

但像你我这样的用户不能这样做，对吧？看到通知，立即关闭浏览器？并不是很方便。

而当你有时间关闭浏览器时，Snap 刷新却不会马上更新浏览器。

你可以看到更新的 Snap 版本的 Firefox 可用，但只要 Firefox 正在运行，它就不会自动安装。

![Firefox snap won’t be updated automatically if the browser is running](/data/attachment/album/202208/08/154845ztsnhente36q03c6.png)

#### 更新 Firefox Snap

这是你摆脱每天不断出现的更新通知所需要做的事情。

* 关闭 Firefox 浏览器
* 手动运行 Snap 刷新（更新已安装的 Snap 包）

确保你在 Firefox 浏览器中的工作已保存。现在，使用鼠标关闭所有 Firefox 浏览器或在终端中运行以下命令：

```
sudo killall firefox

```

现在 Firefox 不再运行，更新 Snap 软件包：

```
sudo snap refresh

```

你会看到它开始下载更新的 Firefox 包。

![Firefox is being updated with Snap](/data/attachment/album/202208/08/154845x1bli1eilqj12fnz.png)

更新完成后，你将看到 Firefox 已升级到更新版本的摘要信息。

![Updated Firefox snap version](/data/attachment/album/202208/08/154846d4mbddly1mo4pqsd.png)

### 总结

安装非 Snap 版本的 Firefox 也可能是个解决方案，但不是每个人都可以走这条路。

Firefox 和 Snap 的开发人员必须齐心协力改进这个模棱两可的更新过程。他们应该提供更好的机制，不仅显示待处理更新的通知，还提供启动更新的选项。

这是我们最近在 Ubuntu 上看到的许多奇怪的事情之一。这必须改变才能使 Ubuntu （再次）成为一个对初学者友好的发行版。

---

via: <https://itsfoss.com/pending-update-firefox-ubuntu/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[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/) 荣誉推出


图解 Rocky Linux 9 安装步骤

Summary: 这篇教程中，我们将图解 Rocky Linux 9 安装步骤。

这篇教程中，我们将图解 Rocky Linux 9 安装步骤。

![](/data/attachment/album/202208/08/172822s7zwhj7wuzzjfm25.jpg)

>
> 这篇教程中，我们将图解 Rocky Linux 9 安装步骤。
>
>
>

<ruby> Rocky 企业软件基金会 <rt>  Rocky Enterprise Software Foundation </rt></ruby> 已经发布了它的最新的操作系统 “Rocky Linux 9”。Rocky Linux 是针对工作站和服务器的自由而开源的操作系统。它被认为是 CentOS Linux 的继承者。

Rocky Linux 9 是 RHEL 9 的复制品，其开发代号是“Blue Onyx”。Rocky Linux 和 RHEL 之间的主要不同是，它有它自己的名为 “Peridot” 的开源构建系统。

### Rocky Linux 9 的更新和特色

* Gnome 40 是默认的桌面环境
* 在 XFS 文件系统上支持<ruby> 直接访问 <rt>  Direct Access </rt></ruby>（DAX）操作
* 更新了运行时和编译器，如 GCC 11.2.1 、LLVM 13.0.1 、Rust 1.58.1 和 Go 1.17.1
* 更新了开发工具链，如 Python 3.9 、Node.js 16 、Ruby 3.0.3 、Perl 5.32 和 PHP 8.0
* ssh 默认禁用了 root 用户身份验证
* 更新了 OpenSSL 3.0，改进了 Cockpit 网页主控台
* 社区提供支持到 2032 年 05 月 31 日

### 前置条件

* 2 GB 及更多的内存
* 2 个 CPU 核心（1.1 GHz 及更高)
* 20 GB 硬盘空间
* 可启动介质（USD 或 DVD）
* 互联网连接（可选）

不再耽误时间，让我们直接进入 Rocky Linux 9 的安装步骤：

### 1、下载 Rocky Linux 9 的 ISO 文件

使用下面的官方网址来下载 ISO 文件

>
> **[Rocky Linux 9 ISO](https://rockylinux.org/download)**
>
>
>

在你下载 ISO 文件后，使用已下载的 ISO 文件制作一个可启动介质（USB/DVD）。

在 Windows 中，你可以利用 Rufus 软件来使用 ISO 文件来制作可启动 USB 驱动器。在 Linux 中，参考下面的内容：

>
> **[在 Ubuntu / Linux Mint 上，如何创建可启动 USB 驱动器](https://www.linuxtechi.com/create-bootable-usb-disk-dvd-ubuntu-linux-mint/)**
>
>
>

### 2、使用可启动媒介盘启动系统

在你计划安装 Rocky Linux 9 的硬件系统上，BIOS 设置中将可启动介质从硬盘驱动器更改为 USB 驱动器, 重新启动它。

在硬件系统使用可启动介质启动后，我们将看到下面的屏幕，

![Select-Install-Rocky-Linux-9-option](/data/attachment/album/202208/08/172839fhch4rst62zc8enc.png)

选择第一个选项， <ruby> 安装 Rocky Linux 9.0 <rt>  Install Rocky Linux 9.0 </rt></ruby> ，并按下 <ruby> 回车 <rt>  enter </rt></ruby> 按键。

### 3、选择首选语言

选择**安装过程**的首选语言，然后单击 <ruby> 继续 <rt>  Continue </rt></ruby> 按钮，

![Preferred-Language-for-RockyLinux9-Installation](/data/attachment/album/202208/08/172839i4hidbcjwhh1dghw.png)

### 4、安装过程摘要

在这个步骤中，我们将看到如下的初始安装摘要。要开始安装，首先，我们必须完成标记项目，如 <ruby> 安装目标 <rt>  Installation Destination </rt></ruby> 和 <ruby> 用户设置 <rt>  User settings </rt></ruby>。

除了已标记的项目外，我们也可以更改现有的项目，只需要按照你的要求单击它们就可以进行更改。

![Initial-Installation-Summary-Rocky-Linux9](/data/attachment/album/202208/08/172839ssrqpxm1kvxx30vs.png)

#### 配置安装目标

在这个项目中，我们将为 Rocky Linux 具体指定分区方案。单击 <ruby> 安装目标 <rt>  Installation Destination </rt></ruby>。

在这里，我们可以为 <ruby> 存储配置 <rt>  storage configuration </rt></ruby> 或 <ruby> 分区方案 <rt>  partition scheme </rt></ruby> 选择 <ruby> 自动 <rt>  automatic </rt></ruby> 选项或 <ruby> 自定义 <rt>  custom </rt></ruby> 选项。

在自动选项中，安装程序将在磁盘上自动地创建分区，而自定义选项允许我们在磁盘上手动创建分区。

![Choose-custom-Storage-Configuration-Rocky-Linux9](/data/attachment/album/202208/08/172839rsyw9ewvk66rwysw.png)

在这篇指南中，我将使用 <ruby> 自定义 <rt>  Custom </rt></ruby> 选项，单击 <ruby> 执行 <rt>  Done </rt></ruby> 按钮。

![Standard-Partition-Scheme-RockyLinux9](/data/attachment/album/202208/08/172840eyc4pjxcvixdoocx.png)

在该 40 GB 的磁盘上，我们将创建以下分区，

* `/boot`：2GB（xfs 文件系统）
* `/`：10 GB（xfs 文件系统）
* `/home`：25 GB（xfs 文件系统）
* 交换分区：2 GB

开始创建分区，选择 <ruby> 标准分区 <rt>  Standard Partition </rt> 方案，然后单击 “+” 符号。</ruby>

创建第一个分区，大小为 2 GB 的 `/boot` 分区，

![Boot-Partition-RockyLinux9-Installation](/data/attachment/album/202208/08/172840h6hcason19h9cnnc.png)

单击 <ruby> 添加挂载点 <rt>  Add mount point </rt></ruby> 按钮。

类似地，接下来分别创建大小为 10 GB 的 `/` 分区和 25 GB 的 `/home` 分区。

![Slash-Partition-Rocky-Linux9-installation](/data/attachment/album/202208/08/172840er1rfbyvywvff1bj.png)

![Home-Partition-Rocky-Linux9-Installation](/data/attachment/album/202208/08/172840lgzfm8v8mjjqro5a.png)

现在，创建最后一个分区，大小为 2 GB 的交换分区，（LCTT 校注：如果你的内存非常多，你可以选择不创建交换分区。另外，对于生产环境，建议将存储数据的目录单独划分分区。）

![Swap-Partition-RockyLinux9-Installation](/data/attachment/album/202208/08/172840n19mci1fgogccgoa.png)

在你完成手动分区后，单击 <ruby> 执行 <rt>  Done </rt></ruby> 按钮来完成这个项目。

![Finish-Manual-Partitioning-RockyLinux9-Installation](/data/attachment/album/202208/08/172841evelv67elj3jl638.png)

选择 <ruby> 接受更改 <rt>  Accept Changes </rt></ruby> 按钮来将这些更改写入磁盘。它也将返回到安装摘要屏幕。

![Accept-Changes-to-Write-on-Disk-RockyLinux9](/data/attachment/album/202208/08/172841varij7xq0jpqxpso.png)

#### 配置用户设置

在 <ruby> 用户设置 <rt>  User Settings </rt></ruby> 下，单击 <ruby> root 密码 <rt>  Root Password </rt></ruby> 按钮。

![Set-Root-Password-RockyLinux9-Instalation](/data/attachment/album/202208/08/172841n5pi5ouwpw5ww38p.png)

设置 root 用户的密码，并单击 <ruby> 执行 <rt>  Done </rt></ruby> 按钮。

再次回到 <ruby> 用户设置 <rt>  User Settings </rt></ruby> 下，单击 <ruby> 用户创建 <rt>  User Creation </rt></ruby> 按钮，具体指定本地用户的详细信息，例如用户名称和密码。

![Local-User-Create-During-RockyLinux9-Installation](/data/attachment/album/202208/08/172841fsm5z5wwqcqlwyl3.png)

单击 <ruby> 执行 <rt>  Done </rt></ruby> 按钮，它也将返回到安装摘要。

现在，我们准备开始安装，单击<ruby> 开始安装 <rt>  Begin Installation </rt></ruby> 按钮，

![Begin-Installation-Option-RockyLinux9](/data/attachment/album/202208/08/172841fbi2tfzt72zt6tgf.png)

### 5、安装过程开始

在这一步骤中，安装程序已经开始了，并在正在进行中，

![RockyLinux9-Installation-Progress](/data/attachment/album/202208/08/172841sgbgsvws8v5gvvbs.png)

在安装过程完成后，安装程序将提示你重新启动系统。

![Reboot-System-after-RockyLinux9-Installation](/data/attachment/album/202208/08/172841h63843z6u2hq787y.png)

单击 <ruby> 重新启动系统 <rt>  Reboot System </rt></ruby> 按钮。

注意：不要忘记在 BIOS 设置中将可启动介质从 USB 启动更改为硬盘驱动器启动。

### 6、安装后的登录屏幕和桌面环境

在成功安装后，当系统启动时，我们将看到下面的登录屏幕：

![RockyLinux9-Loginscreen-Post-Installation](/data/attachment/album/202208/08/172842yucc5kcj2ccckhuc.png)

使用我们在安装期间创建的用户名称和密码，按下 <ruby> 回车 <rt>  enter </rt></ruby> 按键来登录。

![Desktop-Env-RockyLinux9](/data/attachment/album/202208/08/172842zjsqlsiq6eq9lh1c.png)

打开终端，依次运行下面的命令：

```
$ sudo dnf install epel-release -y
$ sudo dnf install neofetch -y

```

现在，来验证系统的详细信息，运行 `neofetch` 命令：

```
$ neofetch

```

![neofetch-rockylinux9-post-installation](/data/attachment/album/202208/08/172842cffnbqzknfkvddig.png)

这就是这篇指南的全部内容，我希望它对你有用。请在下面的评论区贴出你的疑问和反馈。

---

via: <https://www.linuxtechi.com/how-to-install-rocky-linux-9-step-by-step/>

作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lkxed](https://github.com/lkxed) 译者：[robsean](https://github.com/robsean) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #722 Facebook 创始人年轻时也曾宣誓捍卫用户隐私

Summary: • Facebook 创始人年轻时也曾宣誓捍卫用户隐私 • 研究人员发布可以本地运行的 Copilot 替代品 • OpenSUSE 考虑移除 Reiserfs 文件系统

![](/data/attachment/album/202208/08/202428cn9fsiffc88in989.jpg)

![](/data/attachment/album/202208/08/202436q1do9w5euepepguv.jpg)

### Facebook 创始人年轻时也曾宣誓捍卫用户隐私

2003 年 Slashdot 曾经 [报道](https://news.slashdot.org/story/03/04/21/110236/machine-learning-and-mp3s)，哈佛大学新生扎克伯格和加州理工新生丹吉洛开发了一个系统，可以分析用户的音乐播放列表并学习人们的收听模式。这个制作播放列表的软件是他们的高中毕业项目。这篇帖子引起了微软和其他公司的注意，有公司给出了一份接近一百万美元的报价，但他们拒绝了。有趣的是，在该帖子的一个评论中，后来成为 Facebook 创始人的扎克伯格曾发誓要保护用户隐私，“除了你之外，你的音乐收听数据都不会提供给其他任何人。我们希望利用大量的数据来帮助分析，但你的个人数据将永远不会被其他人看到。”而后来成为 Quora 联合创始人和 CEO 的丹吉洛，也补充说，“我不会向人们发送垃圾邮件。我保证。”

>
> **[消息来源：Slashdot](https://slashdot.org/comments.pl?sid=61425&cid=5774175)**
>
>
>

>
> 老王点评：曾经的年轻人都怀着淳朴的理想，然而成为巨龙之后，都喜欢珠宝。
>
>
>

![](/data/attachment/album/202208/08/202447xe34y3789zf6ye6x.jpg)

### 研究人员发布可以本地运行的 Copilot 替代品

GitHub Copilot 是最近几个在 AI 帮助下生成编程代码建议的工具之一，但在许可证方面和该软件向微软公司发送遥测数据方面存在一些争议。美国纽约大学的一位研究人员开源了一个 Copilot 的替代品 FauxPilot，它可以在本地运行，而不会将数据发送回微软。FauxPilot 不使用 Codex，它依靠的是 Salesforce 的 CodeGen 模型。但该模型也是在 GitHub 所有的公共代码上训练的，因此许可证问题并没有得到解决。当然，你可以使用这个可以本地运行的 AI 模型专门针对某类许可证进行学习，或许针对你自己希望重复使用的代码进行学习。

>
> **[消息来源：The Register](https://www.theregister.com/2022/08/06/fauxpilot_github_copilot/)**
>
>
>

>
> 老王点评：如果计算量可以承受，我想这个开源的 AI 工具或许在某些开发组织里面发挥作用。
>
>
>

![](/data/attachment/album/202208/08/202500rsg4gcihdtdfth9o.jpg)

### OpenSUSE 考虑移除 Reiserfs 文件系统

20 多年前，Reiserfs 首次引入 SUSE 时，它是当时领先的文件系统，首次为 Linux 引入了日志保护。但在 Reiserfs 作者因谋杀罪而入狱后，该文件系统的开发就停滞了。ReiserFS 一度是 SUSE 的默认文件系统。Reiserfs 现在缺乏用户期望拥有的很多功能，SUSE 的开发者制定了在 SUSE 滚动版中立即移除 Reiserfs 的计划，稳定版也将在几个版本后移除支持。而 Linux 内核从 5.18 开始正在逐渐弃用 ReiserFS，并计划在 2025 年完全删除相关代码。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/OpenSUSE-Drop-ReiserFS)**
>
>
>

>
> 老王点评：本来颇有希望的一个文件系统，却中途崩沮。从某种意义上说，现在的很多开源项目还相当依赖其灵魂人物，一旦遇到“被卡车撞了”这样的意外，如果没有及时引起社区关注和接手，很可能就随同夭折了。
>
>
>


浅议 Firefox 多账户容器

Summary: 这是我转而使用 Firefox 多账户容器功能的原因。

这是我转而使用 Firefox 多账户容器功能的原因。

随着在设备上使用各种程序的用户的需求变得越来越复杂，程序本身也需要跟上用户的现实需求和未来期望。

我发现我每天需要的东西是一个在网页浏览器保持登录多个账号的简单方法。我 *可以* 根据需要对我的每个账号进行登录和注销操作，但在短时间内切换多个账号时，这变得非常乏味。

最初，我使用谷歌浏览器，它拥有管理多个帐户的能力。这很有效，但管理起来略显繁琐，而且明明只需 *一个* 谷歌账号就能搞定的事却要创建一个新的谷歌账号来完成，这显得有点儿笨拙。

这是我转而使用 Firefox <ruby> 多账户容器 <rt>  Multi-Account Containers </rt></ruby> 功能的原因。它不仅比我在谷歌 Chrome 浏览器上的设置灵活得多，而且我还使用了由我的浏览器开发者自己创建的工具，从而在整体上获得了更流畅和更简单的体验。

![Firefox 中的容器图示](/data/attachment/album/202208/09/160312gqpgokkk3g46gngo.png)

### Firefox 中的多帐户容器是什么？

如果你想将数字生活的各个部分彼此分开，多账户容器也非常有效。通过使用容器，你在一个容器中的浏览活动不会与其他容器共享。这种隔离意味着你可以在不同容器中登录同一网站上的两个不同帐户。你的登录会话、网站偏好和跟踪数据将被限制在你使用某个网站的容器中。

它还有什么其他优势？想象一下，你在亚马逊或其他电子商务网站上购物。你浏览了一些商品，但没有购买任何东西。现在，如果你浏览网络，你会看到与你浏览的产品相关的广告。尽管有广告拦截器，一些网站仍会显示广告。使用容器，你可以将你的购物网站与其他网站分开。（LCTT 校注：甚至根据你的浏览历史，你再次访问同一网站时看到的价格可能会被“宰熟”——反复浏览代表了你的购买倾向。）

再给大家分享一个例子。Firefox 默认提供一个 Facebook 容器。默认情况下，此容器包括 Facebook、Messenger 和 Instagram 网站。这意味着当你打开这三个网站中的任何一个时，它们都只会在“Facebook 容器”中打开。因此，Facebook 将无法跟踪你在其他网站上的活动。

这是 [很少有人知道或使用的 Firefox 功能](https://itsfoss.com/firefox-useful-features/) 之一。

### 使用多账户容器

安装 Firefox 多账户容器是一个非常简单的过程，只需点击几下。

首先，前往 Firefox 附加组件网站上的 [扩展程序页面](https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search)。之后你唯一需要做的就是单击 “添加到 Firefox” 按钮。

![](/data/attachment/album/202208/09/160313oasa1mxaxxbqiqeq.png)

安装完成！现在我们可以实际使用一下这个新的扩展。

可能你还没有注意到，你的搜索栏右侧应该会出现一个新图标：

![](/data/attachment/album/202208/09/160314f5yjjh6twwyx57j6.png)

这是你将用于与 Firefox 多帐户容器交互的图标。如果你单击该图标，你将看到一个小菜单：

![](/data/attachment/album/202208/09/160314ju752vbd3lf8z32h.png)

让我们使用这个扩展尝试一些例子，看看多账户容器是如何工作的。

#### 设置容器

首先，我们需要生成一个容器。点击多账户容器菜单中的 `<ruby> 管理容器 <rt>  Manage Containers </rt></ruby>，然后点击 <ruby> 新建容器 <rt>  New Container </rt></ruby>。

![](/data/attachment/album/202208/09/160315yzwmvvc5v853vvvl.png)

![](/data/attachment/album/202208/09/160316fr1c9o8z7u7r8eqc.png)

接着输入新容器的名称，选择颜色和图标。然后，点击 “OK” 保存新容器。

![](/data/attachment/album/202208/09/160316jt5tx9759rqzrlt3.png)

大功告成！我们现在可以返回主菜单在新容器中打开一个新选项卡：

![](/data/attachment/album/202208/09/160317pl5db6hpp1l0ckhn.png)

你还会注意到新选项卡有一些样式，表示它正在容器内运行：

![](/data/attachment/album/202208/09/160317mjrs0cf3suuxjzu2.png)

#### 观察容器工作

现在让我们看看容器在使用时实际做了什么。

我们将在一个普通的浏览器选项卡中访问 Linode 管理网站，我已经在其中登录：

![](/data/attachment/album/202208/09/160318u11wpg1alderqlqs.png)

现在让我们尝试在 Firefox 容器中打开相同的页面，此时我被重定向到 Linode 登录页面：

![](/data/attachment/album/202208/09/160319z1knl6enj3k2e3je.png)

为什么我被重定向了？因为现在我没有登录。这就是 Firefox 容器的乐趣之一：在一个浏览器会话中登录后，再进入一个容器，就好像你以前从未访问过该站点一样。

如果你在容器内完成对某个网站的登录，你从容器中访问该网站时将会保持登录状态。你还可以使用此功能从容器内登录网站，从而使该网站的所有数据与你的正常浏览器数据相隔开。

>
> 注意：你的浏览器历史记录本身之类的内容仍会暴露给你的正常浏览器会话。容器功能只是提供了一种方法来分离本文中提到的登录帐户等内容。
>
>
>

### 总结

对于那些在乎自己的隐私，或者只是想真正尝试对其系统的安全性进行严格控制的人来说，多账户容器被证明是一个很棒的功能。

例如，你可以在容器内登录你的谷歌帐户，谷歌永远不会知悉你在容器外的信息。 对拥有多个帐户的人来说，此扩展程序是一个不错的选择。有了它无需为你要使用的每样东西创建单独的浏览器帐户。

好了，这就是 Firefox 的多帐户容器的基本知识。

需要任何帮助，或者只是有点问题？请随时在评论区指出。

---

via: <https://itsfoss.com/firefox-containers/>

作者：[Hunter Wittenborn](https://itsfoss.com/author/hunter/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


Padloc：一个直观的开源密码管理器

Summary: 让我们了解一下这个具有令人愉悦的用户界面、跨平台可用的开源密码管理器。

安全不呢

点用没有，还不如bitwarden

看着比bitwarden精致，但是功能还有待改进

让我们了解一下这个具有令人愉悦的用户界面、跨平台可用的开源密码管理器。

![](/data/attachment/album/202208/09/170622fcpzpcjmzxauwexw.jpg)

>
> 让我们了解一下这个具有令人愉悦的用户界面、跨平台可用的开源密码管理器。
>
>
>

有大量适用于个人和团队的免费的和收费的密码管理器。

然而，当谈到开源方案时，它通常仅限于几个好的方案，如 [Seahorse](https://itsfoss.com/seahorse/)、[KeePassXC](https://itsfoss.com/keepassxc/) 和 [Bitwarden](https://itsfoss.com/bitwarden/)。

如果你已阅读过我们的 [Linux 最佳密码管理器](https://itsfoss.com/password-managers-linux/)列表，你可能已经知道其中的一些。

我偶然发现了另一个有趣的开源密码管理器 **Padloc**，它可以因其用户体验而进入该列表。

### Padloc：安全的跨平台密码管理器应用

![padloc screenshot](/data/attachment/album/202208/09/170626jzrzrpon5m17uhkm.png)

虽然 Padloc 并不是特别流行，但它可不仅仅是又一个开源密码管理器。

你可以通过该应用和端到端加密来保护密码，从而获得令人耳目一新的用户体验。它旨在提供一个干净简单的界面来使用。

![padloc light mode](/data/attachment/album/202208/09/170628rsy9e9e9yrcxcrcy.png)

提供免费版本，但提供付费订阅以解锁大多数功能。

它支持所有主要平台，包括 Linux、Windows、macOS、Android 和 iOS。

你还可以获得 Mozilla Firefox 和谷歌 Chrome 的浏览器扩展以及所有可用的应用。因此，你也可以随时选择在浏览器上访问/使用它。

有趣的是，直到最近，该项目近两年都没有看到任何重大更新。但是，这个开源项目一直在修修补补。

### Padloc 的特点

![padloc active sessions](/data/attachment/album/202208/09/170629n1gbi4ci4k3mggmc.png)

Padloc 提供一系列免费和收费功能。根据你的要求，你可以选择升级到付费订阅。

一些功能包括：

* 保管库项目无限制
* 设备数量无限制
* 通过电子邮件进行双因素身份验证
* 添加标签
* 生成独特的密码
* 支持使用 Favicon 来识别保管库项目
* 深/浅模式主题
* 主动会话管理
* 导入/导出功能（加密容器/CSV）
* 团队支持（付费）
* 多因素身份验证（付费）
* 记笔记（付费）
* 文件附件（付费）
* 安全报告（付费）

从技术上讲，你可以获得所有基本功能。但是，要充分利用它，你需要订阅起价为**每月 3.49 美元或每年 34.9 美元**的高级订阅。

### 在 Linux 上安装 Padloc

![padloc app screenshot 1](/data/attachment/album/202208/09/170630fqs2dtcr4hh44s42.png)

Padloc 为你提供了多种适用于 Linux 的选项。你可以下载 AppImage、.deb、Snap 或 Flatpak 包。

此外，你可以下载非 electron 的桌面客户端版本，这很好！

我测试了 AppImage 文件，它运行良好。你可以按照我们的指南 [使用 AppImage](https://itsfoss.com/use-appimage-linux/)、[设置 Flatpak](https://itsfoss.com/flatpak-guide/) 或 [安装 deb 包](https://itsfoss.com/install-deb-files-ubuntu/) 开始使用。

你可以查看其 [官方网站](https://padloc.app/) 或 [GitHub 页面](https://github.com/padloc/padloc) 了解更多信息。

>
> **[Padloc](https://padloc.app/)**
>
>
>

### 一个略显昂贵的密码管理器带来良好的用户体验

它的用户界面和使用它的整体体验给我留下了深刻的印象。

如果你优先考虑用户界面、极简主义和开源技术，无论你决定免费使用还是付费使用，Padloc 都是一个有用的选择。

当然，如果你想要物有所值（或更便宜）的东西，你可以随时选择 [Bitwarden](https://itsfoss.com/bitwarden/) 之类的东西。

---

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

作者：[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/) 荣誉推出


硬核观察 #723 黑客干掉了武装机器狗

Summary: • 黑客干掉了武装机器狗 • 一家不追踪你的浏览和位置的手机运营商 • 国内算力最大的通用 GPU 芯片集成了 770 亿晶体管

![](/data/attachment/album/202208/09/201143zsdvau0tqtaq70s4.jpg)

![](/data/attachment/album/202208/09/201219qxadu6jqddxpaas1.jpg)

### 黑客干掉了武装机器狗

有公司生产了一种可以配装武器的机器狗，这让人十分担心。近日，有黑客发布视频显示，使用一种名为 Flipper Zero 的黑客设备，它可以发送和接收 RFID、蓝牙、NFC 和其他频段的无线信号，即可远程关闭这种机器狗。按下 Flipper 上的一个按钮，机器狗就会抽搐并倒在地上。黑客发现，机器狗在出厂时有一个连接到配电板上的远程切断开关，这个切断开关会监听 433MHz 的特定信号。如果它听到这个信号，就会关闭机器人。黑客在 GitHub 公开了相关工作。

>
> **[消息来源：VICE](https://www.vice.com/en/article/akeexk/hacker-finds-kill-switch-for-submachine-gun-wielding-robot-dog)**
>
>
>

>
> 老王点评：无论如何，AI 机器人被用于武装都非常可怕。
>
>
>

![](/data/attachment/album/202208/09/201233sue5zc6vphttmqcq.jpg)

### 一家不追踪你的浏览和位置的手机运营商

除了永远脱离网络之外，普通人几乎没有选择可以有意义地抵制在线追踪。研究人员提出了一种电话运营商如何停止自动收集用户位置的技术解决方案后，决定自己成立一家名为 Invisv 的公司来提供这种电信服务。它提供的移动数据旨在将用户与特定的标识符分离，因此该公司无法访问或跟踪客户的元数据、位置信息或移动浏览。该服务的本质是随机变换你的设备 IMSI。值得注意的是，Invisv 只提供移动数据；没有语音通话服务。

>
> **[消息来源：Wired](https://www.wired.com/story/pretty-good-phone-privacy-android/)**
>
>
>

>
> 老王点评：这是某种从电信运营商层面开始的代理？事实上，我想大部分人已经放弃了被追踪的反抗了吧。
>
>
>

![](/data/attachment/album/202208/09/201241yii663wv3rjzxwwg.jpg)

### 国内算力最大的通用 GPU 芯片集成了 770 亿晶体管

国内科技企业壁仞科技正式发布 BR100 系列通用计算 GPU，号称算力国内第一，多项指标媲美甚至超越国际旗舰产品。它采用了台积电 7nm 工艺制造、集成了多达 770 亿个晶体管，规模上堪比人类大脑神经细胞，已经非常接近 800 亿个晶体管的英伟达 GH100 计算核心。

>
> **[消息来源：壁仞科技](https://www.birentech.com/)**
>
>
>

>
> 老王点评：看到国内能在芯片方面取得进步，还是很高兴的。
>
>
>


以太网分离器会降低网速吗？

![](/data/attachment/album/202208/10/104845ishhhse3meqzuamd.jpg)

>
> 这篇文章详细总结了以太网分离器，以及它们的速度，还有各种常见问题等信息，来帮助你选择最合适的硬件。
>
>
>

<ruby> 交换机 <rt>  Switch </rt></ruby>、<ruby> 集线器 <rt>  Hub </rt></ruby>，还有<ruby> 以太网分离器 <rt>  Ethernet Splitter </rt></ruby> 是用来帮助扩展网络的网络设备。这其中，最基础的设备就是小巧的以太网分离器了。它们是一种小型设备，可以将一个以太网信号分成两个。它们简单易用，并且还便宜。这可以算是最简单的网络设备之一了，因为它们不需要提供电源，也没有特定的按键或者 LED 灯来提示状态。只是在一个小设备上有三个以太网端口，其中两个在一侧，另一个在另一侧。有些品种是在一侧有带着一小段 [RJ45](https://en.wikipedia.org/wiki/Registered_jack) 接口的网线，另一侧是两个以太网端口。

尽管在网络世界中，分离器已经存在了相当长一段时间了，很多人还是不知道如何有效使用它们。与普遍的看法相反的是，以太网分离器应该总是成对购买。直接把分离器的一端和路由器连接，再把两个设备与分离器的两个端口连接，这样是不行的。想让分离器在网络中正常工作，是有一个正确的设置技巧的。

### 如何使用以太网分离器进行一个基本的设置

要让不同房间的两个设备连接到主信号源，以太网分离器是非常方便的。大多数情况下，它们可以节约网线、墙上的网络插座，并提供了可靠的连接。就像之前说的，以太网分离器是成对出售的。一个分离器将来自设备（通常是路由器）上的信号合并，然后另一个把信号分成两个信道，这样就可以让两个设备通信了。

路由器在房间 A，两个 PC 在房间 B，但是每个房间的墙上只有一个以太网插座。这种情况下，就需要一个分离器，两条网线连到路由器上，网线的另外一端连到分离器上，然后分离器的另一端连到房间 A 墙上的接口。这样路由器的两个信号就合并到一起了。接下来，另一个分离器只有一个端口的那一端接到房间 B 墙上的接口上。从房间 A 合并的信号现在就会分成两个，这样在房间 B 里面，你就可以有两个以太网端口了。

分离器的优势是它可以大量减少墙上的接口，也会大量减少你这种情况下所需的网线。它会帮你避免“网线地狱”，因为这样会将所需要的端口/网线降低两倍。

![sample diagram using ethernet splitter](/data/attachment/album/202208/10/104849g0iyq3kg9090rk0g.jpg)

### 以太网分离器会降低网速吗？

网络连接会变慢吗？这可能是你想到的常见问题之一。好吧，答案取决于你的网络类型。理想情况下，分离器是 BASE-T 标准，也就是<ruby> 快速以太网 <rt>  Fast Ethernet </rt></ruby>。它们可以支持高达 Mbps 级的速度。

如果分离器在一个 100Mbps 的网络中使用，答案是否定的，它是不会降低网速的。然而，如果你的路由器可以提供 1Gbps 传输速率，然后你在中间用了一个分离器，那么带宽将被限制在 100Mbps。这种情况下，分离器确实会限制速度，连接会变慢。

### 以太网分离器的优势和劣势

以太网分离器在一些情况下很有用，但是它们也有一些缺点。首先，每个以太网端口只能提供最高 100Mbps 的速度。因为这个限制，网络中能够提供高于 100Mbps 的资源就不能被合理优化了。另外，因为你能连接的设备数量被限制在两个，如果你有两个以上的设备，以太网分离器并不是最佳选择。

此外，如果路由器只剩下一个以太网端口，使用分离器是不现实的；这时候就只能做一些牺牲了。然后，尽管它们可以减少把两个网络合并所需要的网线，这种方式需要两个分离器才能工作。

另一方面，以太网分离器也有一些优势。它们比起传统的网络设备要便宜，也不需要复杂的设置。不像其他网络设备，它们也不需要软件和其他配置。在设备不多的家庭网络中，比如说一个房间最多两个设备，以太网分离器是一个很好的选择。如果你只需要 100Mbps 的网络，只有两个设备要连接，以太网分离器是最好的选项。

以太网分离器出现已经很长时间了，但是由于非常简单，也没有太多可以改进的空间。它们仍然是基于过时的 <ruby> 快速以太网 <rt>  Fast Ethernet </rt></ruby> 标准，这也许和今天高速网络的需求有点格格不入。尽管有它们的优势，大多数情况下，它们还真不是一个现实的解决方案。随着现在技术的进步，以太网分离器的前景依然光明。也许某个天才可以让它用在 <ruby> 千兆以太网 <rt>  Gigabit Ethernet </rt></ruby> 标准上。

现在你已经对以太网分离器有一些了解了，下面是一些常见问题（FAQ）。

### 常见问题

#### 可以把一条以太网线分到两个设备上吗？

如果你想把一条以太网线分到两个设备上，这是很正常的想法。然而，这就需要买一个以太网线共享分离套件。分离器套件可以让多个设备同时使用同一条网线。如果你想把 PC 和笔记本，或者 PC 和游戏主机，同时连到同一个网线上，这是个不错的选择。

说到连接速度，以太网线会超过其他连接方式。当有些东西需要快速连接，比如说游戏，以太网线通常都是最好的选择。

需要指出的是，你不能用一个网线连接两个设备，因为它们只是为一个设备而设计的，这也就是为什么你需要一个以太网分离器。它会连到一个已有的网线上，然后为两个设备提供连接。

#### 我怎么把两个设备连到一个以太网端口？

两个设备可以连到一个以太网端口。然而，就像之前说的，你需要使用网线共享套件。这是因为每个以太网连接是为一个单个设备设计的。

有了以太网线共享套件，你就可以给一个以太网端口连上多个设备了，这对于家庭网络来说是非常方便的。如果你有不多的几个以太网连接可用，然后需要很多的 LAN 连接，这肯定有用。

还需要说的一点是，如果你有多余的以太网端口可用，如果是这种情况，最好的选择是给每个设备分配一个端口。当这种情况不行的时候，网线共享套件或者分离器是一个完美的备选方案。

#### 以太网分离器和交换机有什么区别？

以太网分离器和交换机工作起来差不多，但是从根本上是不同的。以太网分离器可以在同一根以太网线上运行两个独立的连接。然而，这最多就是两个连接。如果你只想要一个另外的设备连到这个以太网上，这是个不错的选择。但是，再有其他设备就不行了。

如果你想往一个以太网连接上连很多个设备，就需要买一个以太网交换机。除了可以允许多于两个设备连接外，交换机和以太网分离器相似。如果有很多要连接的设备，但是只有几个以太网端口，交换机是非常方便的，比如说你正在连接很多设备到 LAN。

虽然它们支持堆叠，但需要记住的是，它们也需要供电。交换机和分离器的另一个不同是，分离器不要供电，可以直接连到以太网端口。

#### 我需要以太网交换机还是分离器？

你要连接的设备的数量决定了是需要一个交换机还是分离器。如果只需要连两个设备，可以用以太网分离器，也不用给他供电。

相反的，如果需要连几个设备，以太网交换机是一个理想的解决方案。它可以连接几个设备到同一个以太网端口，但是它需要供电。

我希望这篇指南能帮你了解以太网分离器以及如果使用它们。从网上可以以很低的价格买到。然而，如果需要超过 100Mbps 的速度，也许你需要给你的网络配置一下线路。

[这篇文章是我们硬件指南的一部分。](https://www.debugpoint.com/category/hardware)

*Featured Photo by Jainath Ponnala on Unsplash*

---

via: <https://www.debugpoint.com/ethernet-splitter-speed/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[MCGA](https://github.com/Yufei-Yan) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


使用位字段和掩码写一个国际象棋游戏

Summary: 使用位字段和掩码是不用数据结构组合数据的常用方法。

使用位字段和掩码是不用数据结构组合数据的常用方法。

>
> 使用位字段和掩码是不用数据结构组合数据的常用方法。
>
>
>

![](/data/attachment/album/202208/10/114605qzfzztj2uupb7zuw.jpg "Chess pieces on a chess board")

假设你在用 C 语言写一个国际象棋游戏。追踪棋盘上棋子的一种方法是定义一个结构，该结构定义了棋盘上每个可能的棋子及其颜色，因此每个格子都包含该结构中的一个元素。例如，你可以将结构定义成下面这样：

```
struct chess_pc {
   int piece;
   int is_black;
}

```

有了这个数据结构，你的程序就会知道每个格子里是什么棋子及棋子的颜色。你可以快速识别出棋子是兵、车、马、象、后还是王，以及棋子是黑还是白。但是，有一种更直接的方法来跟踪这些信息，同时只用更少的数据和内存。与为棋盘上的每个方格存储两个 `int` 值的结构不同，我们可以存储单个 `int` 值，并使用二进制位字段和掩码来标识每个方格中的棋子和颜色。

### 比特和二进制

当使用位字段表示数据时，我们最好像计算机一样思考。让我们从列出可能的棋子开始，并为每个棋子分配一个数字。让我们进入下一个步骤，用二进制表示这个数字，也就是按照计算机追踪它的方式。记住，二进制数是由比特组成的，比特要么是 0，要么是 1。

* `00000000:` 空（0）
* `00000001:` 兵（1）
* `00000010:` 车（2）
* `00000011:` 马（3）
* `00000100:` 象（4）
* `00000101:` 后（5）
* `00000110:` 王（6）

要列出一个棋盘上的所有棋子，我们只需要三个比特从右到左依次代表值 1、2 和 4。例如，数字 6 是二进制的 110。6 的二进制表示中的其他所有位都是 0。

一个聪明一点的方法：我们可以使用那些额外的总是为零的比特来跟踪一个棋子是黑还是白。我们可以使用数字 8（二进制 `00001000`）来表示棋子是否为黑色。如果这一位是 1，则代表该棋子是黑色；如果是 0，则代表该棋子是白色。这被称为**位字段**，稍后我们可以使用二进制**掩码**将其取出。

### 用位字段存储数据

要编写一个使用位字段和掩码的国际象棋程序，我们可以从以下定义开始：

```
/* 棋子 */

#define EMPTY 0   // 空
#define PAWN 1    // 兵
#define ROOK 2    // 车
#define KNIGHT 3  // 马
#define BISHOP 4  // 象
#define QUEEN 5   // 后
#define KING 6    // 王

/* 棋色 */

#define BLACK 8   // 黑
#define WHITE 0   // 白

/* 掩码 */

#define PIECE 7

```

当你为一个棋格赋值时，比如初始化棋盘，你可以赋一个 `int` 类型的值来跟踪棋子及其颜色。例如，要在棋盘的 `0,0` 位置存储棋子黑车，你可以使用下面的代码：

```
  int board[8][8];
..
  board[0][0] = BLACK | ROOK;

```

`|` 是二进制“或”（`OR`）操作符，这意味着计算机将合并两个数字的比特。对于每个比特的位置，如果**任意一个**数字的比特为 1，该位置比特的结果也是 1。`BLACK` 的值（8，即二进制下的 `00001000`）和 `ROOK` 的值（2，即二进制下的 `00000010`）的二进制或结果是二进制下的 `00001010`，即 10：

```
    00001000 = 8
 OR 00000010 = 2
    ________
    00001010 = 10

```

类似地，要在棋盘的 `6,0` 位置存储一个白色兵，你可以这样做：

```
  board[6][0] = WHITE | PAWN;

```

这样存储的值就是 `WHITE`（0）和 `PAWN`（1）的二进制或的结果，也即是 1。

```
    00000000 = 0
 OR 00000001 = 1
    ________
    00000001 = 1

```

### 用掩码获取数据

在下棋过程中，程序需要知道棋格中的棋子和它的颜色。我们可以使用二进制掩码来分离这部分。

举个例子，程序可能需要知道棋局中棋盘上特定棋格的内容，例如位于 `board[5][3]` 的数组元素。这个是什么棋子，是黑的还是白的？为了识别棋子，使用二进制“与”（`AND`）操作符将元素的值与掩码 `PIECE` 结合起来：

```
  int board[8][8];
  int piece;
..
  piece = board[5][3] & PIECE;

```

二进制“与”（`AND`）操作符（`&`）将两个二进制值结合，这样对于任意位，如果两个数字中的那个位**都是** 1，那么结果也是 1。例如，如果 `board[5][3]` 的值是 11（二进制下的 `00001011`），那么 11 和 掩码 `PIECE`（7，二进制下的 `00000111`）二进制与的结果为二进制下的 `00000011`，也即 3。这代表马，马的值是 3。

```
    00001011 = 11
AND 00000111 = 7
    ________
    00000011 = 3

```

解析棋子的颜色是一个简单的事情，只需要将棋子的值与 `BLACK` 位字段进行二进制与操作。比如，你可以写一个名为 `is_black` 的函数来确定棋子是黑还是白：

```
int
is_black(int piece)
{
  return (piece & BLACK);
}

```

之所以可以这样，是因为 `BLACK` 的值为 8（二进制下的 `00001000`）。在 C 语言中，任何非零值都被视为 `True`，零总是 `False`。所以如果 `5,3` 处的棋子是黑色的，则 `is_black(board[5][3])` 返回 True 值（8）；如果是白色的，则返回 False 值（0）。

### 位字段

使用位字段和掩码是不使用结构组合数据的常用方法。它们值得被程序员收藏到“工具包”中。虽然数据结构对于需要跟踪相关数据的有序编程是一种有价值的工具，但是使用单独的元素来跟踪单个的开或闭值（例如棋子的颜色）的效率较低。在这些情况下，可以考虑使用位字段和掩码来更高效地组合数据。

---

via: <https://opensource.com/article/21/8/binary-bit-fields-masks>

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

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


硬核观察 #724 美国巡回法庭裁决专利发明人必须是人类

Summary: • 美国巡回法庭裁决专利发明人必须是人类 • Meta 的 AI 聊天机器人已经被玩坏 • 英特尔“坚不可摧”的 SGX 再次被攻破

点评的切入点不对，法院讨论的是AI能否作为发明人，而不是讨论能否作为申请人（专利权人），这与发明人是两个不同的概念

![](/data/attachment/album/202208/10/145220a6cfi3f06ckefet3.jpg)

![](/data/attachment/album/202208/10/145230dj0q4qahina00r0q.jpg)

### 美国巡回法庭裁决专利发明人必须是人类

美国联邦巡回上诉法庭上周裁决，专利发明人必须是人类。专利法中的术语“个人”指的是人类，因此 AI 不能申请作为专利发明人。这一裁决与澳大利亚、欧盟和英国法院的裁决相同。除非美国最高法院介入此类专利案件，联邦巡回上诉法庭的判决就是终判了。律师表态计划上诉到最高法院，认为上诉法庭对专利法采用了过于狭窄的定义，排除 AI 的发明将会产生负面影响。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72404)**
>
>
>

>
> 老王点评：我也觉得不该授予 AI 专利，毕竟 AI 是受控于人的。这就像你不能将工资给电脑，而是应该给使用电脑的人类。
>
>
>

![](/data/attachment/album/202208/10/145239dvavvaihgvwgmvvh.jpg)

### Meta 的 AI 聊天机器人已经被玩坏

Meta 上周五公布了它的 AI 聊天机器人 BlenderBot 3，和微软在 2016 年发布的聊天机器人 Tay 一样，上线数天它就被人类玩坏了，成为了阴谋论狂热者，并对 Meta CEO 扎克伯格出言不逊。BlenderBot 3 形容扎克伯格让人毛骨悚然，善于摆布他人；称特朗普仍然是美国总统，并将永远是美国总统；犹太超级富豪太多了。Meta 承认聊天机器人会说一些冒犯人的话，表示它仍然处于开发之中。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72406)**
>
>
>

>
> 老王点评：AI 本身没有世界观和价值观，所以被玩坏的 AI 只是一面片面地被误导了的镜子？
>
>
>

![](/data/attachment/album/202208/10/145254anhbfxoon7hzxfjo.jpg)

### 英特尔“坚不可摧”的 SGX 再次被攻破

SGX 旨在为加密密钥和其他敏感数据的安全保管提供某种堡垒，即使操作系统或运行在上面的虚拟机被恶意破坏。SGX 的安全性和真实性保证的关键是它创建了所谓的“飞地”，即安全内存块。“飞地”的内容在离开处理器之前就被加密并写入内存中。它们只有在返回后才会被解密。SGX 是许多公司向用户提供安全保证的基石。例如，Signal 用于处理联系人发现的服务器，依靠 SGX 来确保该过程是匿名的。但英特尔最新一代的 CPU 被发现包含一个漏洞，允许攻击者获得加密密钥和其他由该公司的软件防护扩展保护的机密信息。

>
> **[消息来源：ARS Technica](https://arstechnica.com/information-technology/2022/08/architectural-bug-in-some-intel-cpus-is-more-bad-news-for-sgx-users/)**
>
>
>

>
> 老王点评：所有理论上安全的措施，其实都有可能因为某些原因失效。
>
>
>


人工智能（AI）、机器学习（ML）和深度学习（DL）：有什么区别？

>
> 我们经常交替使用人工智能（AI）、机器学习（ML）和深度学习（DL）这些术语，尽管我们几乎每天都阅读或听到它们。本文解释了这些技术是如何演变的以及它们有何不同。
>
>
>

![AI ML and DL What’s the Difference](/data/attachment/album/202208/11/144748ym6u45jaocza0vvv.jpg)

<ruby> 人工智能 <rt>  Artificial Intelligence </rt></ruby>（AI）、<ruby> 机器学习 <rt>  Machine Learning </rt></ruby>（ML）和<ruby> 深度学习 <rt>  Deep Learning </rt></ruby>（DL）通常可以互换使用。但是，它们并不完全相同。人工智能是最广泛的概念，它赋予机器模仿人类行为的能力。机器学习是将人工智能应用到系统或机器中，帮助其自我学习和不断改进。最后，深度学习使用复杂的算法和深度神经网络来重复训练特定的模型或模式。

让我们看看每个术语的演变和历程，以更好地理解人工智能、机器学习和深度学习实际指的是什么。

#### 人工智能

自过去 70 多年以来，人工智能已经取得了长足的进步。无论我们是否知道，也不管喜欢与否，，它已经渗透到了我们生活的方方面面。在过去十年中，机器学习和深度学习的进步已经在各种规模的行业和组织中创造了人工智能热潮。云服务提供商通过开发免费的开源服务和提供新的场景进一步推动的这种势头。

![Figure 1: Overview of AI, ML and DL](/data/attachment/album/202208/11/144748rgglstfewfttyp4l.jpg)

人工智能可能是自 1956 年以来最受关注的概念。到 2015 年，GPU 的广泛使用使并行处理更快、更强大、更便宜。而愈加廉价的存储可以大规模地存储大数据（从纯文本到图像、映射等）。这产生了对数据分析的需求，它被更普遍地称为<ruby> 数据科学 <rt>  data science </rt></ruby>，导致机器学习发展为实现人工智能的方法。

#### 机器学习

机器学习是使用算法来处理、学习和理解或预测可用数据的模式。最近，软件开发的低代码和无代码概念被用作机器学习中的自学习过程，它给出了完成特定任务的特定指令。通过使用数据和算法对机器进行“训练”，使其能够学习如何执行任务，更重要的是，将学习应用到不断发展的过程中。

![Figure 2: Evolution of AI, ML and DL](/data/attachment/album/202208/11/144748ubaeuufn7jcan5fu.jpg)

机器学习是在开发者社区专注于 AI 时发展起来的，然后发展了算法决策树学习、逻辑编程、聚类、并行处理和强化学习。这些都是朝着正确方向迈出的良好一步，但不足以解决世界感兴趣的场景。

#### 深度学习

深度学习是神经网络和机器学习的进化，是人工智能社区的创意。它学习了人类思维在特定场景中的工作方式，然后在这项工作上比人类做得更好！例如，IBM 的 Watson 与自己下国际象棋，并在游戏中取得了很大进步，最终击败了世界冠军。谷歌的 AlphaGo 也学会了如何玩围棋游戏，一遍又一遍地玩它以提高自己，并成为冠军。

人工智能、机器学习和深度学习正在不断发展。参与数据科学的每个人都希望推进这些概念以改善我们的日常生活。而开源社区、私营企业、科学家和政府机构都在为此共同努力。

![Figure 3: Types of AI, ML and DL](/data/attachment/album/202208/11/144749ki40q1x2vg1p1ikp.jpg)

总而言之，虽然 AI 有助于创建智能机器，但机器学习有助于构建 AI 驱动的应用。深度学习是机器学习的一个子集。它通过利用复杂算法处理大量数据来训练特定模型。由于狭义 AI 极难开发，机器学习正在通过刚性计算解决这一领域的机遇。至少对于实现通用 AI，深度学习有助于将 AI 和机器学习结合在一起。

---

via: <https://www.opensourceforu.com/2022/08/ai-ml-and-dl-whats-the-difference/>

作者：[Bala Kalavala](https://www.opensourceforu.com/author/bala-kalavala/) 选题：[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/) 荣誉推出


删除 Git 远程分支的本地引用

Summary: 遵循几个简单的步骤来保持 Git 仓库的整洁

翻译好像有问题。

遵循几个简单的步骤来保持 Git 仓库的整洁

![](/data/attachment/album/202208/11/150612dv5diwgve5k2cobk.jpg)

>
> 遵循几个简单的步骤来保持 Git 仓库的整洁
>
>
>

在合并一个 GibLab 的合并请求（MR）或 GitHub 的拉取请求（PR）后，你通常需要从远程仓库中删掉这个主题分支来保持仓库的整洁。然而，这只会删掉远程仓库的主题分支。本地 Git 仓库也会从例行清理中收益。

要同步本地仓库和远程仓库的信息，可以执行 `git prune` 命令来删除本地仓库中远程分支的本地引用。

按照以下三个简单的步骤：

1、检出仓库中的核心分支（比如 `main` 或者 `master`）：

```
$ git checkout <central_branch_name>

```

2、列出所有远程和本地分支：

```
$ git branch -a

```

示例输出：

```
4.10.z
* master
  remotes/mydata/4.9-stage
  remotes/mydata/4.9.z
  remotes/mydata/test-branch

```

在这个例子中，`test-branch` 是从远程仓库中删除的主题分支的名字。

3、删除远程分支的本地引用：

首先，列出所有可以从本地仓库中删除的分支：

```
$ git remote prune origin --dry-run

```

示例输出：

```
Pruning origin
URL: git@example.com:myorg/mydata-4.10.git
* [would prune] origin/test-branch

```

然后，删除远程分支的本地引用：

```
$ git remote prune origin

```

示例输出：

```
Pruning origin
URL: git@example.com:myorg/mydata-4.10.git
* [pruned] origin/test-branch

```

就是这样！

### 维护 Git 仓库

保持 Git 仓库的整洁，一开始似乎并不紧急，但是随着仓库规模的增长，删除不必要的数据就变得更为重要。不要让从无用的数据筛选而拖慢你。

经常删除远程分支的本地引用，是维护一个可用的 Git 仓库是一个好方法。

---

via: <https://opensource.com/article/22/8/delete-local-reference-remote-branch-git>

作者：[Agil Antony](https://opensource.com/users/agantony) 选题：[lkxed](https://github.com/lkxed) 译者：[Yufei-Yan](https://github.com/Yufei-Yan) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #725 英伟达公布了 7.3 万行的 GPU 的 3D 头文件

Summary: • 英伟达公布了 7.3 万行的 GPU 的 3D 头文件 • LibreOffice 添加龙芯架构支持 • 中国论文三大指标跃居世界第一

![](/data/attachment/album/202208/11/205708v6sezfvwstofg6g1.jpg)

![](/data/attachment/album/202208/11/205721oillwi9z1a0klk0f.jpg)

### 英伟达公布了 7.3 万行的 GPU 的 3D 头文件

除了英伟达正忙于向开源 GPU 内核驱动过渡之外，昨天他们还罕见地公开了开源文档：多达 7.3 万行的头文件，记录了他们从十年前的 Fermi 到当前一代 Ampere GPU 的 3D 类。这些头文件对于开源的 Nouveau 驱动程序开发人员来说非常有用，可以节省他们的逆向工程和对某些位的猜测。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/NVIDIA-3D-Headers-Fermi-Ampere)**
>
>
>

>
> 老王点评：可喜的看到，英伟达真的在转变。
>
>
>

![](/data/attachment/album/202208/11/205730vn1lxpsgk8uwsx8s.jpg)

### LibreOffice 添加龙芯架构支持

继今年早些时候 GCC 12 引入对龙芯架构的支持、Linux 5.19 添加了初步支持，以及 Glibc 2.36 也添加了支持之后，LibreOffice 现在加入到了这一行列。将龙芯架构支持添加到 LibreOffice 需要增加 1630 行新代码，这包括数百行新的 C++ 代码。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/LibreOffice-LoongArch)**
>
>
>

>
> 老王点评：龙芯架构是我见到最积极向上游靠拢的国产架构了。
>
>
>

![](/data/attachment/album/202208/11/205748f2q26zm688za2q7k.jpg)

### 中国论文三大指标跃居世界第一

据报道，日本文部科学省根据一家英国调查公司的数据，分析了主要国家的论文篇数等他数据。根据研究论文被其他研究人员引用的次数，中国“顶尖论文”的篇数为 4744 篇，超过美国的 4330 篇。从份额来看，中国占 27.2%，美国占 24.9%，明显超过居第 3 位英国的 5.5%。在调查中，中国的论文总数达到 41 万篇之多，比美国的 29 万篇高出 10 万篇以上。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=72415)**
>
>
>

>
> 老王点评：一个有趣的数据，值得思考。
>
>
>


为什么 Fedora 一开始允许使用 CC0 许可证

Summary: 如果 Fedora 反对一个软件许可证，通常不会成为新闻。

如果 Fedora 反对一个软件许可证，通常不会成为新闻。

![](/data/attachment/album/202208/12/160739j1eqft2cpw7srssz.png)

开源是一个具有挑战性的概念。许多人认为，开源意味着可以任意的使用软件，并且可以免费下载。这实际上取决于你如何被许可 —— 开发者分享代码时使用的许可证决定了它。开源软件可以是收费的，也可以限制你如何去使用它，在极少数情况下，甚至让你陷入法律纠纷。

Fedora 项目最近决定拒绝所有使用 <ruby> 知识共享 <rt>  Creative Commons </rt></ruby> “公共领域专用” CC0 许可证的代码，以避免这种情况的出现。CC0 将从新提交代码中准许使用的许可证列表中剔除，但是，像艺术品一类的贡献仍被允许所以它，甚至可能在个案的情况下对当前的软件包进行逐一的处理。

如果 Fedora 反对一个软件许可证，通常不会成为新闻。事实上，在那么多的许可证当中，该项目拒绝了许多许可证。这种情况的意外之处在于，CC0 最初被认为是一个有效的许可证，现在只是由于更大的自由及开源（FOSS）社区内的观点转变而被重新分类。

CC0 是因为什么让 Fedora 决定停止支持它，这又是否意味着你不能在你自己的项目中使用它呢？

这一段描述让最熟悉知识共享及其许可系列的人惊讶的是，Fedora 最初批准了 CC0 的软件。毕竟，知识共享从一开始的目标是为艺术作品提供一系列明确的许可证。该组织的使命和许可证的要求在其名称“知识共享”中就有所体现。

为了“克服分享信息和创造力的法律障碍”，提供一个自由的框架来为人们组织分享如音乐、医学或教育材料的资源，知识共享组织的前身——<ruby> 开放内容项目 <rt>  Open Content Project </rt></ruby>，于 2001 年成立。然而，软件从来不是它的组成要素。为什么呢？因为那时，如 MIT、GPL 一类的重要的软件许可证已经出现了十几年。

很明显，如果一家公司不遗余力地警告你他们制造的东西不适合某种特定用途，你也许应该相信他们。知识共享的 FAQ 列出了一些反对在软件上使用他们的许可证的令人信服的论据，但对于像 Fedora 项目这样的用户来说，其中一个问题特别突出：专利权。

鉴于 CC0 许可证是为公共领域的作品准备的，而且通过使用它，创作者明确地“放弃了他或她在版权法下对作品的所有权利”，这似乎矛盾的。但是，问题在于，版权法并不适用于专利。事实上，仔细审视许可证的完整措辞后可以发现，它在一个令人担忧的部分解决了这个问题，该部分内容如下：“宣告者拥有的任何商标或专利权都没有被本文本放弃、抛弃、交出、租赁或以其他方式修改。”

换言之，即使被 CC0 许可的东西的作者可能愿意放弃对它的权力，但他们仍然可以自由的为它申请专利。更糟糕的是，他们仍然保留着以他们认为合适的方式使用该专利的能力。

理论上来说，这意味着最初在 CC0 下提供的源代码的人在发布了代码之后，他们可能会在之后断言任何使用该代码的人侵犯了他们的专利，并要求支付专利费。

这显然会让像 Fedora 这样的项目担忧。考虑一下这样的情形：CC0 许可的代码进入到一个系统的核心，然后被提供给数以百万计的用户。突然间，不知道从哪里冒出来的原创作者，声称侵犯了专利权，并要求付款。红帽或 Fedora 的律师可以驳倒这种说法么？也许吧。那么，为了查明真相而使用 CC0 代码值得么？不值得。

要着重提到的是，这完全不是一个新问题。实际上，早在 2012 年，专利条款就阻止了开源倡议（OSI）许可证的审查委员会，他们无法最终确定 CC0 是否真正符合他们对开源许可证的定义。委员会未能达成一致意见，因为其成员认为将此类条款纳入软件许可将创造一个危险的先例。考虑到 Fedora 动荡的历史，它最初接受 CC0 的决定着实让人费解。

---

via: <https://www.opensourceforu.com/2022/08/what-made-fedora-choose-to-use-cc0-licensed-code-as-the-boot/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[yjacks](https://github.com/yjacks) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #726 NetBSD 改进了对 1985 年的计算机的支持

Summary: • NetBSD 改进了对 1985 年的计算机的支持 • 英特尔的 Clear Linux 采用 -O3 来构建其内核 • 谷歌将停止为愚蠢的问题提供答案

英特尔在编译器领域是领先的。它自己有能力、有方法去设计一套自己的优化方式。因此采用O3我觉得是不足为奇的。

来自亚太地区的 Chrome Mobile 97.0|Android 10 用户

linus不推荐-o3,gentoo也不推荐-o3,o2足够了，但这是英特尔，我相信它，包括amd.

傻屌一个。clear linux用的是gcc不是他自家的编译器。他只是把o2改成o3。其他什么也没做

来自陕西汉中的 Chrome Mobile 103.0|Android 10 用户

Linus：“在我决定把这个内核称为 6.0 之后，一些中国的开发者指出 “5.20” 是更好的版本号。如果你愿意把它叫做 “Linux 5.20”，也可以继续这么叫。”

![](/data/attachment/album/202208/12/205119kpng33pu1ei1gn3n.jpg)

![](/data/attachment/album/202208/12/205134muvx2bmnb848xax3.jpg)

### NetBSD 改进了对 1985 年的计算机的支持

BSD 发行版 NetBSD 刚刚释出了一个小更新版本 9.3，在一系列的对各种新硬件的支持之外，还改进了对 Commodore Amiga 的支持。这是 1985 年发布的一种 16 位计算机。甚至其开发商 Commodore 早在 1994 年就倒闭了，但 Amiga 仍然存在少数但狂热的爱好者。如果你能找到一台还能使用的 Amiga，那你就能在上面运行 2022 年的 NetBSD 了。

>
> **[消息来源：The News Trace](https://thenewstrace.com/netbsd-an-operating-system-that-is-serious-about-being-cross-platform-now-improves-its-support-for-the-commodore-amiga-1985/243892/)**
>
>
>

>
> 老王点评：这就是开源，只要你觉得好玩，你就可以做，而不用管是不是有商业价值，也不用那么一本正经。
>
>
>

![](/data/attachment/album/202208/12/205145ho7qbbn2zzb95o65.jpg)

### 英特尔的 Clear Linux 采用 -O3 来构建其内核

英特尔的 Clear Linux 滚动发行版以其积极的性能优化而闻名，但他们的内核构建一直采用默认的 `-O2` 优化，不过，上周他们切换到了用 `-O3` 来构建其内核。虽然上游内核已经放弃了专门的 `-O3` 选项，但更高的优化水平仍然可以通过编译器标志传递给内核，这就是 Clear Linux 正在做的。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Clear-Linux-O3-Kernel)**
>
>
>

>
> 老王点评：虽然 Clear Linux 采用 `-O3` 优化提升了多少还不得而知，但对于 Clear Linux 这种要榨取最后一滴性能来炫耀英特尔的 CPU 的发行版来说，显然是有意义的。
>
>
>

![](/data/attachment/album/202208/12/205158wdvds2wecizlwsf9.jpg)

### 谷歌将停止为愚蠢的问题提供答案

“特色片段”是向谷歌搜索提出的问题而直接回复的片段，长期以来一直是该公司人工智能战略的一个基石，同样的技术也用于其智能音箱和语音助手。谷歌试图改进其“特色片段”服务，以停止对愚蠢的问题提供简短的答案。这意味着诸如“史努比什么时候刺杀了林肯？”这样的问题不会得到答案，谷歌搜索曾经给出过回答“1865 年" —— 日期正确，但刺客非常错误。谷歌对其系统进行了训练，以更好地检测这些虚假的问题。

>
> **[消息来源：英国卫报](https://www.theguardian.com/technology/2022/aug/11/data-void-google-to-stop-giving-answers-to-silly-questions)**
>
>
>

>
> 老王点评：给傻问题做出回答，显然也是傻的，这又是愚弄 AI 的一种方式。
>
>
>

### 回音

* 据我的朋友 Wren 再次爆料，[Linux 5.20](/article-14903-1.html) 的倡议者昨日 [再次发出倡议](https://lore.kernel.org/lkml/61d77412-af1a-5b00-9754-f156b1c63a74@gmail.com/)，这次得到了四位国人贡献者的支持。我觉得这是一件有趣而有爱的事情，Linux 本来就是 Just for Fun，为什么不支持呢？


重新想象和设计你的文件和目录列表

>
> 使用两个 ls 程序： lsd 和 exa 来重新想象和设计你的文件和目录列表。
>
>
>

![](/data/attachment/album/202208/12/210553bhogk0vh1sk08o9v.jpg)

Linux 中的 `ls` 命令是最常用的命令。此命令列出终端中的文件和目录。因此，如你所见，它非常流行，也许每个人都在使用。

但该命令输出的信息量很大，有时用彩色的方式查看它们会更方便。

例如，如果你以最基本的方式运行 `ls` 命令，它应该看起来有点像这样：

![The default list files and directories view via ls command](/data/attachment/album/202208/12/210553v0h37wng7ng7cu3u.jpg)

这似乎有点乏味，不是吗？如果你可以对其进行一些样式设置，以便在看起来不错的同时变得更具可读性如何？

### 以样式列出文件和目录

#### lsd

我想向你展示的第一个应用叫做 `lsd`，也就是 “LSDeluxe” 的缩写。它是对 GNU `ls` 命令的重写，具有列标题、各种项目的颜色、字体和图标支持等附加功能。

这是安装后的样子：

```
lsd -l --header

```

![lsd command showing list of files](/data/attachment/album/202208/12/210554h4uiuuf2n3szfwuu.jpg)

正如你所看到的，它看起来非常漂亮，用不同的颜色代码表示权限、文件类型和文件夹，甚至在文件名旁边添加图标。

该应用充满了诸如树视图（见下文）之类的功能，它甚至可以在单个命令中为你提供文件夹内的文件列表：

```
lsd -l --header --tree

```

![lsd command showing a tree view](/data/attachment/album/202208/12/210555ckokm2kskkcdnzkj.jpg)

你可以在其 [官方 GitHub 页面](https://github.com/Peltoche/lsd) 上了解有关其功能的更多信息。

我相信你很兴奋。让我们看看如何安装它。

你可以从 [此处下载](https://github.com/Peltoche/lsd/releases) 用于 Ubuntu 和相关发行版的 deb 文件。之后，只需运行 `dpkg` 即可安装：

```
sudo dpkg -i lsd_vvvv_amd64.deb

```

对于 Fedora Linux，使用以下命令:

```
sudo dnf install lsd

```

Arch Linux 用户可以使用以下命令获取它：

```
pacman -S lsd

```

该应用也可用于其他发行版、macOS、BSD 和 Windows。对于这些说明，你可以 [在此处找到它们](https://github.com/Peltoche/lsd#installation)。

为了获得更好的体验，请将其与 [带有 Oh My Zsh 的 Zsh shell](https://www.debugpoint.com/install-use-zsh/) 一起使用。

#### exa

下一个程序是 `exa`，类似于 `lsd` 但具有更多功能。`exa` 命令可以为你的 `ls` 输出着色，检测 Unix 系统中的各种文件类型、标题、树视图等更多功能。

`exa` 是一个单一的二进制文件，占用的资源很小。以下是一些示例命令：

```
exa -al

```

```
exa -abghHliS

```

```
exa -abghHliS --long --tree

```

![Various exa commands](/data/attachment/album/202208/12/210556aefyxkuwow00xa10.jpg)

你可以在 [GitHub](https://github.com/ogham/exa#command-line-options) 上了解有关 `exa` 参数和选项的更多信息。

`exa` 的安装很简单，只需要一个命令。对于 Ubuntu 和相关发行版，你可以使用以下命令安装它：

```
sudo apt install exa

```

对于 Fedora 和 Arch Linux，分别使用以下命令：

```
sudo dnf install exa

```

```
pacman -S exa

```

同样，所有其他操作系统的安装说明都可以 [在此处找到](https://github.com/ogham/exa#installation)。

### 从终端复制为 HTML

一个有趣的技巧是，以上所有彩色列表都可以通过默认的 Ubuntu 终端复制为 HTML。你可以将它用于你的网页或文档。

例如，我将上面的示例复制到 LibreOffice Writer 文档中。

这是最好的功能之一，尽管它取决于终端程序而不是上面的程序。

![Exporting the command output as HTML](/data/attachment/album/202208/12/210556hyhhlveuv4rcgphh.jpg)

### 总结

我解释了两个程序的内部工作 – `lsd` 和 `exa` 以样式列出文件和目录。我希望你能将它们用于不同的需求。

如果你喜欢它们，或者如果你知道任何此类程序，请在评论栏中告诉我。

---

via: <https://www.debugpoint.com/list-files-directories-style/>

作者：[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/) 荣誉推出


Cutefish OS 开发重启

只有一个人重启该项目

来自浙江湖州的 Yandex Browser 22.1|GNU/Linux 用户

![](/data/attachment/album/202208/13/123818nek1wzveuzx1iuv6.jpg)

经过了一个月，可能是在讨论、会谈和对话之后，Cutefish OS 正式重启了开发。

不久前，我们报道了 [Cutefish OS 停止开发](https://www.debugpoint.com/cutefish-os-development-halts/)，而且 GitHub 上没有任何活动。好吧，看起来开发者在 GitHub 上复活了这个项目，并对该操作系统的未来有了一些设想。

7 月 31 日，Cutefish OS 的 GitHub 主仓库进行了更新，内容如下：

>
> 你喜欢的 CutefishOS 现在回来了！新网站正在建设中（即将推出）
>
>
>

不仅如此，该团队还简要介绍了这个项目的路线图。

![Cutefish OS - 应用程序菜单](/data/attachment/album/202208/13/123904u00z1wyvcyyyn6yw.jpg)

### Cutefish OS 的开发：即将到来的里程碑

首先，主要目标是官方网站的准备工作。

其次，根据 GitHub 上的说明，下一个版本可能会基于 [Ubuntu 22.04 LTS](https://www.debugpoint.com/web-stories/ubuntu-22-04-review/)。Cutefish OS 有不同的桌面定制版，如 Ubuntu 和 Debian。另外，你可以在 [Arch Linux 上只安装Cutefish 桌面](https://www.debugpoint.com/cutefish-arch-linux-install/)。

第三，该团队旨在评估当前的问题并开始接受拉取请求。完成这项工作后，将更容易确定需要修复的项目的优先次序。最后，为未来版本的新功能进行规划。

不仅如此，还有一种可能性，即用 openEuler Linux 开发新的 Cutefish 桌面定制版。[openEuler Linux](https://www.openeuler.org/en/) 是华为为商业和企业用途而创建的一个发行版。

![当前 Cutefish 操作系统计划](/data/attachment/album/202208/13/123910ktihsmv3qisdscid.jpg)

（LCTT 译注：但是从 GitHub 仓库来看，最近并没有任何实质动作。）

### 一个新的名字？

当我在寻找更多的信息时，我发现该团队注册了一个新的域名，有一个新的名字，即 [openfish.org](http://openfish.org/)（LCTT 译注：因无备案，展示无法访问）。桌面环境或整个操作系统将被重新命名为 openfish。在这一点上，我有一个猜测：

旧的域名 [cutefishos.com](http://cutefishos.com) 可能被别人接管了，因此这样决定。

但是，在我看来，“openfish” 是一个比 “cutefish” 更好的品牌名称。

（LCTT 译注：究竟是原班人马中的部分人决定重启，还是整个团队复活，目前不得而知，从改名上看，似乎新的团队并没有 cutefish 相关的品牌控制权。）

### 下一步是什么

最新的 0.8 版有几个与键盘、设置窗口、Flatpak 应用程序等有关的问题。最好的办法是在最后的基线上首先解决这些问题。然后可能是带有额外功能的 1.0 版本。

希望在未来几周内，我们能看到更多关于开发的更新。如果你想发表意见，询问有关期望或功能要求，[在 GitHub 上创建一个帖子](https://github.com/cutefishos/cutefishos/issues)。

欢迎回来，Cutefish OS。

---

via: <https://www.debugpoint.com/cutefish-development-restarts/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[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/) 荣誉推出


如何使用 LibreOffice Writer 模板

Summary: 使用 LibreOffice 模板快速开始在 Linux 上写作。

![](/data/attachment/album/202208/13/165957bxrcv4lnxttdtc5c.jpg)

>
> 使用 LibreOffice 模板快速开始在 Linux 上写作。
>
>
>

任何办公软件套件中的主要部件都是文字处理器。无论你的需求如何，从记笔记到写书，文字处理器都能完成工作。大多数 Linux 发行版都包含 [LibreOffice](https://www.libreoffice.org/) 套件，我使用 LibreOffice Writer 作为我的文字处理器。

LibreOffice Writer 通过其工具栏、键盘快捷键和菜单提供了很大的灵活性。但是，如果你只是想轻松地开始一个文档，你可以使用其中一个预加载的模板。以下是如何使用 LibreOffice Writer 模板让你的工作更轻松。

### 开始一个新文档

LibreOffice Writer 从一个空白文档开始。大多数人就从这里开始写作，但这也是从模板创建新文档的地方。

首先，打开“<ruby> 文件 <rt>  File </rt></ruby>”菜单，然后选择“<ruby> 新建 <rt>  New </rt></ruby>”、“<ruby> 模板 <rt>  Templetes </rt></ruby>”。此选项会打开模板选择对话框：

![Open templates from the File menu](/data/attachment/album/202208/13/165959g8yqfq5htyp4wy0c.png)

模板选择对话框显示系统上可用的不同模板。默认的 LibreOffice Writer 安装包括用于不同类型的商务信函、简历和其他文档的模板。你可以使用对话框顶部的过滤器选项浏览列表或缩小结果范围。

![Select a template](/data/attachment/album/202208/13/165959fn8nvg8vzrb88e85.png)

单击你想要的模板，然后单击“<ruby> 打开 <rt>  Open </rt></ruby>”以使用此模板开始一个新的 Writer 文档。一些模板包括样板文本或其他示例材料，你可以使用这些材料开始编写新文档。例如，**现代商务信函**由以下 “lorem ipsum” 示例文本组成：

![Modern business letter template](/data/attachment/album/202208/13/170000d0yf0b00v4344v00.png)

其他文档模板只是为你提供了一个具有一些漂亮的默认设置的空文档的起点。例如，**现代**文档模板对文本正文使用无衬线字体（例如 Linux 系统上的 Carlito）：

![Modern template](/data/attachment/album/202208/13/170000hr4mljf59z5fmkc5.png)

### 下载模板

如果你在内置选项中没有找到所需的模板，你可以从 LibreOffice 的网站下载合适的文档模板。进入 [LibreOffice 扩展](https://templates.libreoffice.org/)以开始使用 LibreOffice 扩展和模板库。

![Templates and extensions options](/data/attachment/album/202208/13/170000wbbjv7bn5wmyjb6l.png)

在框中输入搜索词以查找你需要的文档模板。例如，学生可能会搜索 “APA” 来查找为 APA 样式设置的文档模板，这是学术论文的常见样式。

![APA format template](/data/attachment/album/202208/13/170000m4eik2vk8ke1ken9.png)

### 总结

如果你需要编写文档，请浏览 LibreOffice 模板以找到适合你的模板。使用模板意味着你可以花费更少的时间来设置文档以使其具有某种外观，并且可以更快地工作。在支持你的工作的 LibreOffice 扩展和模板库中查找其他文档模板。

（图片来源：Jim Hall，CC BY-SA 4.0）

---

via: <https://opensource.com/article/22/7/libreoffice-writer-templates>

作者：[Jim Hall](https://opensource.com/users/jim-hall) 选题：[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/) 荣誉推出