七个使用 wget 命令的技巧

Summary: 用你的 Linux 终端中从互联网上下载文件。

用你的 Linux 终端中从互联网上下载文件。

# 七个使用 wget 命令的技巧

>
> 用你的 Linux 终端中从互联网上下载文件。
>
>
>

<img src="content_image/album_202111_22_102927pjuji5juxzuikkg6.jpg" alt="" title="Computer screen with files or windows open">

`wget` 是一个下载网页文件的免费工具。它将互联网上的数据保存到一个文件或展示在终端上。实际上这也是像 Firefox 或 Chromium 这样的网页浏览器的工作原理。有一个区别是，网页浏览器默认将网页 <ruby> 渲染 <rt>  render </rt></ruby>在图形窗口中，并且通常需要用户主动来操作它们。而 `wget` 工具是无交互的使用方式，也就是说你可以使用脚本或定期使用 `wget` 来下载文件，不论你人是否在电脑面前。

### 使用 wget 下载文件

你可以通过提供一个特定 URL 的链接，用 `wget` 下载一个文件。如果你提供一个默认为 `index.html` 的 URL，那么就会下载该索引页。默认情况下，文件会被下载到你当前的工作目录，并保持原来的名字。

```
$ wget http://example.com
--2021-09-20 17:23:47-- http://example.com/
Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'

```

通过使用 `--output-document` 和 `-` 符号，你可以指示 `wget` 将数据发送到 <ruby> 标准输出 <rt>  stdout </rt></ruby>：

```
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
   <title>Example Domain</title>

```

你可以使用 `--output-document` 选项（简写为 `-O`）将下载文件命名为任何你想要的名称：

```
$ wget http://example.com --output-document foo.html

```

### 断点续传

如果你正在下载一个超大文件，你可能会遇到中断下载的情况。使用 `--continue`（简写为 `-c`），`wget` 可以确定从文件的哪个位置开始继续下载。也就是说，下次你在下载一个 4 GB 的 Linux 发行版 ISO 时，如果出现了错误导致中断，你不必重新从头开始。

```
$ wget --continue https://example.com/linux-distro.iso

```

### 下载一系列的文件

如果你要下载的不是单个大文件，而是一系列的文件，`wget` 也能提供很好的帮助。假如你知道要下载文件的路径以及文件名的通用范式，你可以使用 Bash 语法指示一个数字范围的起始和终点来表示这一系列文件名:

```
$ wget http://example.com/file_{1..4}.webp

```

### 镜像整个站点

使用 `--mirror` 选项你可以下载整个站点，包括它的目录结构。这与使用选项 `--recursive --level inf --timestamping --no-remove-listing` 的效果是一样的，该选项表明可以进行无限制的递归，得到你指定域下的所有内容。但你也可能会得到比预期多得多的内容，这取决于站点本身的老旧程度。

如果你正在使用 `wget` 来打包整个站点，选项 `--no-cookies --page-requisites --convert-links` 非常有用，它可以确保打包的站点是全新且完整的，站点副本或多或少是<ruby> 自包含的 <rt>  self-contained </rt></ruby>。

### 修改 HTML 标头

在计算机发送的通信报文里含有大量用于数据交换的<ruby> 元数据 <rt>  metadata </rt></ruby>。HTTP 标头是初始数据的组成部分。当你浏览某个站点时，你的浏览器会发送 HTTP 请求标头。使用 `--debug` 选项可以查看 `wget` 为每个请求发送了什么样的标头信息:

```
$ wget --debug example.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive

---request end---

```

你可以使用 `--header` 选项修改请求标头。实际上经常使用这种方式来模仿某特定浏览器，来测试或兼容某些编码糟糕、只能与特定代理通信的站点。

让请求被识别为来自 Windows 系统的 Microsoft Edge：

```
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com

```

你也可以假装为某个移动设备：

```
$ wget --debug --header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" http://example.com

```

### 查看响应标头

与浏览器发送请求标头的方式一样，响应也包含有标头信息。你可以使用 `--debug` 选项来查看响应中的标头信息：

```
$ wget --debug example.com
[...]
---response begin---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256

---response end---
200 OK
Registered socket 3 for persistent reuse.
URI content encoding = 'UTF-8'
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'

```

### 处理 301 响应

200 响应码意味着一切都在预料之中。而 301 响应则表示 URL 已经被永久迁移到了另外一个地方。这是站点管理员的一种常用手段，内容迁移后，为访问旧地址的用户留下寻找新地址的“线索”。`wget` 会默认跟随<ruby> 重定向 <rt>  redirect </rt></ruby>，这也是大部分情况下用户所希望的。

当然，你可以使用 `--max-redirect` 选项，用于控制 `wget` 默认处理 301 响应重定向的次数。设置为 `0` 意味着不会自动重定向到新的地址:

```
$ wget --max-redirect 0 http://iana.org
--2021-09-21 11:01:35-- http://iana.org/
Resolving iana.org... 192.0.43.8, 2001:500:88:200::8
Connecting to iana.org|192.0.43.8|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.iana.org/ [following]
0 redirections exceeded.

```

同时，你也可以设置为其他的数值来控制 `wget` 能重定向多少次。

### 展开 URL 缩写

使用`--max-redirect` 选项用于在实际访问之前查看 <ruby> URL 缩写 <rt>  shortened URL </rt></ruby>非常有用。缩写 URL 可用于用户无法完整拷贝和粘贴一个长 URL 时的<ruby> 印刷媒体 <rt>  print media </rt></ruby>，或是具有字数限制的社交网络（在类似 [Mastondon](https://opensource.com/article/17/4/guide-to-mastodon) 这种现代开源的社交网络上这并不是一个问题）。这种缩写具有一定的风险，因为本质上这些目的地是隐藏的。组合使用 `--head` 选项和 `--location` 选项来来查看 HTTP 头部并解开最终的目的地，你可以在不加载整个资源的情况下查看到缩写 URL 的完整内容：

```
$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
--2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
Resolving bit.ly... 67.199.248.10, 67.199.248.11
Connecting to bit.ly|67.199.248.10|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://example.com/ [following]
0 redirections exceeded.

```

从 `Location` 开始的倒数第二行输出，展示了实际的目的地。

### 使用 wget

若你开始考虑使用单个命令来实现整个网站访问的过程，`wget` 可以快速高效的帮你获取互联网上的信息，而不用在图形界面上耗费精力。为了帮你将它构造在你平常的工作流中，我们创建了一个 `wget` 常用使用方式和语法清单，包括使用它来查询 API 的概述。[在这里下载 Linux wget 速查表](https://opensource.com/downloads/linux-wget-cheat-sheet)。

---

来源: <https://opensource.com/article/21/10/linux-wget-command>

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

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


如何在 Linux 中挂载 Bitlocker 加密的 Windows 分区

Summary: 情况是这样的。我的系统自带 Windows 10 Pro，并且带有 BitLocker 加密功能。我 甚至在 Windows 启用了 BitLocker 加密的情况下，以双启动模式安装了 Ubuntu。

尝试挂载的时候，会提示“无法访问位置， No .filesystem or .Encrypted interface on D-Bus Object",然后给出一个关闭的选项，这个问题可以解决吗？

# 如何在 Linux 中挂载 Bitlocker 加密的 Windows 分区

>
> 情况是这样的。我的系统自带 Windows 10 Pro，并且带有 BitLocker 加密功能。我 [甚至在 Windows 启用了 BitLocker 加密的情况下，以双启动模式安装了 Ubuntu](https://itsfoss.com/dual-boot-ubuntu-windows-bitlocker/)。
>
>
>

你可以轻松地从 Linux 中访问 Windows 文件。没有什么高科技的东西。只要进入文件管理器，点击通常位于“<ruby> 其他位置 <rt>  Other Locations </rt></ruby>”标签下的 Windows 分区。

对于 BitLocker 加密的 Windows 分区来说，这个过程也不是太复杂。只是当你试图挂载 Windows 分区时，它会要求你输入密码。

这是能工作的。在我的情况中，我输入了 48 位 BitLocker 恢复密码，它解密了 Windows 分区，并在带有 GNOME 40 的 Ubuntu 21.10 中毫无问题地挂载了它。

试试你的 BitLocker 密码。如果这不起作用，试试恢复密码。对于普通的 Windows 10 Pro 用户，恢复密码存储在你的微软账户中。

[BitLocker Recovery Password in Micrsoft Account](https://account.microsoft.com/devices/recoverykey?refd=support.microsoft.com)

输入恢复密码，你会看到 Windows 分区和它的文件现在可以访问。勾选“<ruby> 记住密码 <rt>  Remember Password </rt></ruby>”框也是为了进一步使用而节省时间。

如果上述方法对你不起作用，或者你不熟悉命令行，还有一个替代方法。

这个方法包括使用一个叫做 [Dislocker](https://github.com/Aorimn/dislocker) 的工具。

### 使用 Dislocker 在 Linux 中挂载 BotLocker 加密的 Windows 分区（命令行方法）

使用 Dislocker 分为两部分。第一部分是解开 BitLocker 的加密，并给出一个名为 `dislocker-file` 的文件。这基本上是一个虚拟的 NTFS 分区。第二部分是挂载你刚刚得到的虚拟 NTFS 分区。

你需要 BitLocker 密码或恢复密码来解密加密的驱动器。

让我们来看看详细的步骤。

#### 步骤 1：安装 Disclocker

大多数 Linux 发行版的仓库中都有 Dislocker。请使用你的发行版的包管理器来安装它。

在基于 Ubuntu 和 Debian 的发行版上，使用这个命令：

```
sudo apt install dislocker

```

#### 步骤 2：创建挂载点

你需要创建两个挂载点。一个是 Dislocker 生成 `dislocker-file` 的地方，另一个是将这个 `dislocker-file`（虚拟文件系统）作为一个回环设备挂载。

没有命名限制，你可以给这些挂载目录起任何你想要的名字。

逐一使用这些命令：

```
sudo mkdir -p /media/decrypt
sudo mkdir -p /media/windows-mount

```

#### 步骤 3：获取需要解密的分区信息

你需要 Windows 分区的名称。你可以使用文件资源管理器或像 Gparted 这样的 GUI 工具。

在我的例子中，Windows 分区是 `/dev/nvme0n1p3`。对你的系统来说，这将是不同的。你也可以使用命令行来达到这个目的。

```
sudo lsblk

```

#### 步骤 4：解密分区并挂载

你已经设置好了一切。现在是真正的部分。

**如果你有 BitLocker 密码**，以这种方式使用 `dislocker` 命令（用实际值替换 `<partition_name>` 和 `<password>`）：

```
sudo dislocker <partition_name> -u<password> -- /media/decrypt

```

如果你只有恢复密码，请以这种方式使用该命令用实际值替换 `<partition_name>` 和 `<password>`）：

```
sudo dislocker <partition_name> -p<recovery_password> -- /media/decrypt

```

在解密该分区时，应该不会花很长时间。你应该在指定的挂载点看到 `dislocker-file`，在我们的例子中是 `/media/decrypt`。现在挂载这个 dislocker-file：

```
sudo mount -o loop /media/decrypt/dislocker-file /media/windows-mount

```

完成了。你的 BitLocker 加密的 Windows 分区已经被解密并挂载到 Linux 中。你也可以从文件资源管理器中访问它。

#### 文件系统类型错误的故障排除提示

如果你遇到这样的错误：

```
mount: /media/windows-mount: wrong fs type, bad option, bad superblock on /dev/loop35, missing codepage or helper program, or other error.

```

你应该在挂载时指定文件系统。

对于NTFS，使用：

```
sudo mount -t ntfs-3g -o loop /media/decrypt/dislocker-file /media/windows-mount

```

对于 exFAT，使用：

```
sudo mount -t exFAT-fuse -o loop /media/decrypt/dislocker-file /media/windows-mount

```

#### 解除对 Windows 分区的挂载

你可以从文件管理器中取消挂载的分区。只要**点击名为 windows-mount 的分区旁边的卸载符号**。

或者，你可以使用卸载命令：

```
sudo umount /media/decrypt
sudo umount /media/windows-mount

```

我希望这对你有帮助。如果你还有问题或建议，请在评论中告诉我。

---

via: <https://itsfoss.com/mount-encrypted-windows-partition-linux/>

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


硬核观察 #463 密码学家对加密货币使用“加密”这个词不满意

Summary: 更多：• 德国一个州正在将其 25000 台电脑从 Windows 转向 Linux • 《第 27 届互动小说年度大赛》决出胜利者

大名鼎鼎的AVG游戏，比如秋之回忆、缘之空

# 硬核观察 #463 密码学家对加密货币使用“加密”这个词不满意

### 密码学家对加密货币使用“加密”这个词不满意

密码学家门一直 [向公众澄清](https://www.theguardian.com/technology/2021/nov/18/crypto-cryptocurrency-cryptographers?mid=1) “<ruby> 加密 <rt>  crypto </rt></ruby>是指<ruby> 密码学 <rt>  cryptography </rt></ruby>”，而不是“<ruby> 加密货币 <rt>  cryptocurrency </rt></ruby>”。他们甚至还专门做了一个网站，他们说，“几十年来，‘crypto’一直被用作与密码学有关的事物的速记和前缀。”并且，密码学家们不准备向“一个可能无法在政府监管下生存的概念”让步。而事实上，在加密货币这个词中，前缀 crypto 指的就是密码学。

>
> 老王点评：你说的没错，但是我想早晚 crypto 会被更多人特指加密货币。
>
>
>

### 德国一个州正在将其 25000 台电脑从 Windows 转向 Linux

德国北部的石勒苏益格-荷尔斯泰因州计划 [改用开源软件](https://blog.documentfoundation.org/blog/2021/11/18/german-state-planning-to-switch-25000-pcs-to-libreoffice/)，到 2026 年底，公务员和雇员（包括教师）使用的所有 25000 台计算机上的微软 Office 将被 LibreOffice 取代，Windows 操作系统将被 GNU/Linux 取代。该州议会已经将从专有系统过渡到开放系统的步骤编入法规。他们说，“我们已经在我们的 IT 部门测试了两年的 LibreOffice，我们的经验很清楚：它很有效，” 他们目前正在研究适合他们目的的五个发行版，但还没有选择哪个发行版作为标准。

>
> 老王点评：可能已经被德国地方拥抱开源的事迹麻木了，毕竟这不算什么大事是吧，对于 Linux 来说？
>
>
>

### 《第 27 届互动小说年度大赛》决出胜利者

周六下午，91 名极客在 Twitch 上听取了《[第 27 届互动小说年度大赛](https://ifcomp.org/)》的获奖者名单。今年的比赛吸引了 71 个参赛作品，并筹集了约 1 万美元的现金奖励，第一名获得数百美元的奖金，前三分之二的人不等的分配了剩余奖金，最少的得到了 10 美元。此外还有很多有趣的非现金奖。第一名的作品有一个奇怪的标题《然后你来到了一个与前一个不一样的房子》。在这个文本冒险游戏中，你扮演一个少年，他开始出门……玩一个文本冒险游戏《贪吃的精灵：冒险 #1》……

>
> 老王点评：真是小众而有趣的活动，你听说过互动小说和文本冒险游戏吗？
>
>
>


Summary: 自动化是 DevOps 的关键，但是，是否任何事都可以自动化？

微软的韭菜园子！！！

哈哈哈，微软当年针对开源软件的一系列骚操作，把口碑给败坏了。<br />
但是近些年，微软还是积极拥抱开源的。我觉得powershell可以了解下。至少比cmd好一点

自动化是 DevOps 的关键，但是，是否任何事都可以自动化？

# 使用 Powershell 来自动化 Linux、macOS 以及 Windows 流程

>
> 自动化是 DevOps 的关键，但是，是否任何事都可以自动化？
>
>
>

自动化控制了那些手工的、费力的和容易出错的过程，用运行自动化脚本的计算机代替了执行手工任务的工程师。每个人都认同手工流程是健康的 DevOps 模式的敌人。一些人认为自动化不是一件好事，因为它取代了辛勤工作的工程师，而另一些人则意识到它提高了一致性、可靠性和效率，节省了时间，（最重要的是）使工程师能够聪明地工作。

>
> “DevOps 并不只是自动化或者基础架构即代码。” — [Donovan Brown](http://www.donovanbrown.com/post/what-is-devops)
>
>
>

自从上个世纪 80 年代早期开始使用自动化流程和工具链以来，每当我听到或读到“自动化一切”的建议时，我总是会激动不已。虽然在技术上可以实现一切自动化，但自动化是复杂的，并且需要付出开发、调试和维护方面的代价。如果你曾经重新启用一个许久不用的 Azure 资源管理器（ARM）模板或很久以前编写的宝贵维护脚本，并期望它在几个月或几年之后仍然能够完美地执行，那么你就会明白，自动化就像任何其他代码一样，是脆弱的，需要持续的维护和培养。

所以，你应该对什么进行自动化并在何时进行自动化？

* 当你手动执行自动化流程超过一两次
* 当你需要经常地持续地执行自动化流程
* 自动化任何可被自动化的

更重要的是，什么是你不应该自动化的？

* 不要自动化一次性的流程，因为不值得投入，除非你会重新使用它作为参考文档，并定期验证它的可用性
* 不要自动化高度不稳定的流程，因为太复杂且昂贵
* 不要自动化有问题的流程，在自动化前先修复它们

举例来说，我的团队使用我们通用的协作和工程系统来不断的监控数百个用户活动。如果一个用户在三个月或者更长时间处于非活动状态，并且这个用户被分配了一个昂贵的许可证，我们就会重分配这个用户一个功能少一些但是免费的许可证。

如图 1 所示，这是一个没有技术挑战性的流程。这是一个令人费解且容易出错的过程，尤其是在执行上下文时与其他开发和运维任务切换时。

*图 1 手工流程切换用户许可证*

顺带的，这里有一个用简单三步创建的价值流图的例子:

1. 可视化所有活动: 列出用户、过滤用户、重置许可证。
2. 确定利益相关者，即运营和授权团队。
3. 措施：

```
* 总交货时间（TLT）= 13 小时
* 总周期时间（TCT） = 1.5 小时
* 总效率百分比 = TLT/TCT*100 = 11.5%

```

如果你在人群流量大和容易看到的区域挂一个这些可视化的副本，比如在你的团队的讨论区、餐厅，或在去洗手间的路上，你将引发大量的讨论和主动反馈。例如，从视觉上看，很明显，手工任务是一种浪费，主要是由于漫长的流程等待时间造成的。

让我们研究一个简单的 PowerShell 脚本，它可以自动化该流程，如图 2 所示，将总交付时间从 13 小时减少到 4 小时加 60 秒，并将总体效率从 11.5 提高到 12.75%。

*图 2 半自动化的 PowerShell 脚本切换用户许可*

[PowerShell](https://opensource.com/article/19/8/variables-powershell) 是一种开源的基于任务的脚本语言。它可以在 [GitHub](https://github.com/powershell/powershell) 上找到。它构建在 .NET 上，允许你自动化 Linux、macOS 和 Windows 流程。具有开发背景的用户，特别是 C# 用户，将享受到 PowerShell 的全部好处。

下面的 PowerShell 脚本示例通过它的服务 [REST API](https://docs.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-5.1) 与 [Azure DevOps](https://docs.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops) 进行通信。脚本结合了在图 1 中的手动列表用户和过滤用户任务，识别了 Demo 组织中的所有两个月没有活动的、使用基本许可证或更昂贵的基本+测试许可证的用户，并将用户的详细信息输出到控制台。很简单！

首先，设置认证标头和其他变量，这些变量将在稍后的初始化脚本中使用：

```
param(
  [string]   $orgName       = "DEMO",
  [int]      $months        = "-2",
  [string]   $patToken      = "<PAT>"
)

# Basic authentication header using the personal access token (PAT)
$basicAuth = ("{0}:{1}" -f "",$patToken)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers   = @{Authorization=("Basic {0}" -f $basicAuth)}

# REST API Request to get all entitlements
$request_GetEntitlements    = "https://vsaex.dev.azure.com/" + $orgName + "/_apis/userentitlements?top=10000&api-version=5.1-preview.2";

# Initialize data variables
$members              = New-Object System.Collections.ArrayList
[int] $count          = 0;
[string] $basic       = "Basic";
[string] $basicTest   = "Basic + Test Plans";

```

接下来，使用此脚本查询所有授权，以识别不活动用户：

```
# Send the REST API request and initialize the members array list.
$response = Invoke-RestMethod -Uri $request_GetEntitlements -headers $headers -Method Get
$response.items | ForEach-Object { $members.add($_.id) | out-null }

# Iterate through all user entitlements
$response.items | ForEach-Object {
  $name    = [string]$_.user.displayName;
  $date    = [DateTime]$_.lastAccessedDate;
  $expired = Get-Date;
  $expired = $expired.AddMonths($months);
  $license = [string]$_.accessLevel.AccountLicenseType;
  $licenseName = [string]$_.accessLevel.LicenseDisplayName;
  $count++;

  if ( $expired -gt $date ) {

    # Ignore users who have NEVER or NOT YET ACTIVATED their license
    if ( $date.Year -eq 1 ) {
      Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
    }
    # Look for BASIC license
    elseif ( $licenseName -eq $basic ) {
         Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
    }
    # Look for BASIC + TEST license
    elseif ( $licenseName -eq $basicTest ) {
        Write-Host " **INACTIVE** " " Name: " $name " Last Access: " $date "License: " $licenseName
    }
  }
}

```

当你运行脚本时，你将得到以下输出，你可以将其转发给授权团队，以重置用户许可证：

```
**INACTIVE** Name: Demo1 Last Access: 2019/09/06 11:01:26 AM License: Basic
**INACTIVE** Name: Demo2 Last Access: 2019/06/04 08:53:15 AM License: Basic
**INACTIVE** Name: Demo3 Last Access: 2019/09/26 12:54:57 PM License: Basic
**INACTIVE** Name: Demo4 Last Access: 2019/06/07 12:03:18 PM License: Basic
**INACTIVE** Name: Demo5 Last Access: 2019/07/18 10:35:11 AM License: Basic
**INACTIVE** Name: Demo6 Last Access: 2019/10/03 09:21:20 AM License: Basic
**INACTIVE** Name: Demo7 Last Access: 2019/10/02 11:45:55 AM License: Basic
**INACTIVE** Name: Demo8 Last Access: 2019/09/20 01:36:29 PM License: Basic + Test Plans
**INACTIVE** Name: Demo9 Last Access: 2019/08/28 10:58:22 AM License: Basic

```

如果你将最后一步自动化，自动将用户许可设置为一个自由的利益相关方许可，如图3所示，你可以进一步将总体交付时间减少到65秒，并将总体效率提高到77%。

*图 3 完全自动化的基于 Powershell 的流程来切换用户许可证。*

这个 PowerShell 脚本的核心价值不仅在于能够实现 *自动化*，还在于能够 *定期*、*持续* 和 *快速地* 执行这个流程。进一步的改进是使用 Azure 管道等调度器每周或每天触发脚本，但我将把程序化的许可证重置和脚本调度保留在未来的文章中。

这里有一个图表，可以直观地看到进展情况：

*图 4，措施，措施，措施*

我希望你能喜欢这个简短的关于自动化、PowerShell、REST API 和价值流图的介绍。请在评论中分享你的想法和反馈。

---

via: <https://opensource.com/article/20/2/devops-automation>

作者：[Willy-Peter Schaub](https://opensource.com/users/wpschaub) 选题：[lujun9972](https://github.com/lujun9972) 译者：[FigaroCao](https://github.com/FigaroCao) 校对：[wxy](https://github.com/wxy)

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


一个正在开发中的类似 Notion 的开源 APP

# 一个正在开发中的类似 Notion 的开源 APP

>
> 它被称为“Notion 的开源替代品”，AppFlowy 旨在让你可以完全控制你的数据和定制选项。
>
>
>

Notion 是深受团队和个人欢迎的生产力应用之一，而现在我们似乎有希望获得一个有前途的开源替代品。

这里为还没用过 Notion 的人介绍一下，Notion 是一个多功能合一的生产力应用，可以用于创建/管理任务、笔记、项目、数据，以及组建维基。

换句话说，它能让你自由组织你的<ruby> 工作流 <rt>  workflow </rt></ruby>，让你在一个地方就能集中完成所有事情。更进一步，Notion 还支持连接团队或邀请他人的协作功能。

那么，如果有一个可以提供类似 UI 和功能的开源应用会怎么样？

这就是 AppFlowy。

### 什么是 AppFlowy

AppFlowy 和 Notion 非常相像，但有一个巨大的区别，那就是它是 100% 开源的。

虽然它还处在一个积极开发中的状态，但已经吸引到了不少的关注。至少可以说，尽管它是一个全新的东西，但任何开源替代项目都是令人兴奋的！

正如他们 GitHub 页面的表述，说明了为什么开发者们想要创造一个 Notion 的替代品：

>
> 我们都知道 Notion 有其局限性。比如说脆弱的数据安全性和糟糕的移动设备端兼容性。同样，其它一些协作工作管理工具替代品也具有各自的局限性。
>
>
>

因此，他们希望他们的的用户既拥有 Notion 的功能特性，又具备良好的数据安全性和由社区驱动的良好的原生体验。

他们也明确表示不想在功能特性和设计上与 Notion 相竞争。

>
> 坦率的讲，我们并没有声称在功能和设计上要优于 Notion，至少现在还是如此。此外，我们当前的首要任务也不在于提供更多的功能。相反，我们期望培养一个社区，使制作复杂工作场所管理工具的知识和设施民主化，同时通过为个人和企业配备一个多功能积木工具箱，使他们能够自己创造美好的事物。
>
>
>

听起来很吸引我！

继续关于 **AppFlowy** 的更多信息：

AppFlowy 的首个 macOS 版本已经在几天前发布了。它是用 Flutter 和 Rust 构建的。

它的目标是让用户和团队能够完整控制他们的数据和定制。他们还表示，他们希望提供包括移动设备在内的跨平台的原生体验。除此之外，你还可以离线访问你的工作区，这一点是与 Notion 不同的。

别忘了，社区可以发布定制主题和模板给他人使用，你可以按照你的需求任意定制。用户对它的发展能产生直接的影响。

它还将支持插件以扩展应用的功能。因此，即使你不具有任何编程经验，你也仍然可以选择使用这些插件来增强你工作空间的功能。并且，由于它的 UI 和 Notion 本身非常相似，如果你以后想要在两者之间切换，也不会让你感觉有太大的改变。

### 是否仅支持 macOS ？

到目前为止只有 macOS 的用户可以尝鲜使用 AppFlowy。但 Linux 和 Windows 客户端也在开发之中。你可以持续关注它的 [GitHub 主页](https://github.com/AppFlowy-IO/appflowy) 或订阅官网的最新通知。

开发者还希望能带来更多视觉上的改变和优化。

当然，它仍然处在开发阶段。所以也别期望它现在就能替代 Notion。一些类似于<ruby> 拖放模式 <rt>  drag/drop </rt> <ruby>  和离线模式的功能仍然还在它的     路线图    之中。 </ruby></ruby>

如果你有兴趣的话，可以访问它的官方网站或 GitHub 页面获取更多的信息，以及为其发展做出贡献。

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

### 总而言之

有了社区的支持，AppFlowy 可能是 Notion 的可靠替代品。基于免费和开源的事实让它一开始就吸引大量个人和团队来试用它。

我也开始期待它尽快增加对 Linux 的支持，我知道它已经在开发中了。

你如何看待 AppFlowy? 你会计划试用它吗？

---

via: <https://news.itsfoss.com/appflowy-development/>

作者：[Rishabh Moharir](https://news.itsfoss.com/author/rishabh/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[zengyi1001](https://github.com/zengyi1001) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #464 Rust 语言社区内讧，审核团队集体辞职

Summary: 更多：• JetBrains 发起成立 PHP 基金会 • 因微软赏金太少，安全研究人员曝光 Windows 提权零日漏洞

先知: Rust, I remember you!

来自120.230.61.23的 Chrome Mobile 80.0|Android 10 用户

Rust 还能平稳发展下去吗，难道我又要换编程语言了？

来自120.231.49.77的 Firefox 96.0|GNU/Linux 用户

不懂可以不写点评

所以刚成气候就内讧？？？

一怒曝光和利用漏洞做黑产没有区别, 你的脑洞也太大了吧.

# 硬核观察 #464 Rust 语言社区内讧，审核团队集体辞职

### Rust 语言社区内讧，审核团队集体辞职

昨天，Rust 社区“帮助维护行为准则和社区标准”的审核团队突然宣布辞职，且即刻生效。他们用拉取请求发出了 [该声明](https://github.com/rust-lang/team/pull/671)，称辞职“是为了抗议核心团队不对任何人负责，除了他们自己。”[据悉](https://thenewstack.io/rust-mod-team-resigns-in-protest-of-unaccountable-core-team/)，这次冲突爆发的原因由来已久，有人 [指责](https://twitter.com/adamhjk/status/1462812664590045184) Rust 核心团队权力过大，他们之外的人无法决定谁加入核心团队，在 Rust 社区形成了一种“寡头政治”。也有人认为与 AWS 试图 [“接管” Rust](https://www.infoworld.com/article/3633002/the-future-of-rust.html) 有关。但目前具体情况尚没有得到澄清。而 Rust 核心团队已经火速任命了两位新的 [审核团队](https://www.rust-lang.org/governance/teams/moderation) 成员，以取代辞职的三位前成员。

>
> 老王点评：目前发展的很好的 Rust 语言，突然以这样的形式发生内讧，令整个社区为之震动，无论如何，我觉得这对 Rust 语言的发展是不利的。
>
>
>

### JetBrains 发起成立 PHP 基金会

为 78% 的网站提供了动力的 PHP 已经有 [26 年历史](https://www.jetbrains.com/lp/php-25/) 了，终于有自己的基金会了，虽然这个基金会的成立原因让我百味杂陈。据悉，这项 [决定](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/) 背后的主要原因之一，是 PHP 的主要贡献者 Nikita Popov 决定离开 JetBrains，将精力从 PHP 转向 LLVM 。他在为 JetBrains 工作的近三年时间里，为 PHP 7.4/8.0/8.1 这三个大版本做出了重要贡献。[该基金会](https://opencollective.com/phpfoundation) 的成员除了 JetBrains 还包括 WordPress 背后的 Automattic，以及 Laravel、Zend 等公司。

>
> 老王点评：我居然忘记了 PHP 一直没有自己的基金会。虽然这次是由于主要贡献者离开而成立，但是希望可以带来更好的发展。
>
>
>

### 因微软赏金太少，安全研究人员曝光 Windows 提权零日漏洞

有安全研究人员在推特上说：由于微软调整了漏洞赏金计划，其原本想提交的一个影响所有受支持 Windows 操作系统版本的提权漏洞的“认定价值”，从 10000 美元瞬间跌到了 1000 美元。他称，大家对微软的新漏洞赏金政策感到十分沮丧，因而将其发现的漏洞 [公之于众](https://github.com/klinix5/InstallerFileTakeOver)。有安全研究人员认为他披露的漏洞，很容易让普通用户提权获得 SYSTEM 系统权限。

>
> 老王点评：虽然说微软这样的做法有些不厚道，但是一怒曝光也欠考虑。如果不满意微软的赏金，你可以不挖啊，这样直接曝光和利用漏洞做黑产有什么区别？
>
>
>


如何将 FreeDOS 作为嵌入式系统使用

# 如何将 FreeDOS 作为嵌入式系统使用

>
> 现在，很多嵌入式系统都是在 Linux 上运行的。但是，在很久很久以前，嵌入式系统要么在一个定制的专有的平台上运行，要么在 DOS 上运行。
>
>
>

[FreeDOS 网站](https://www.freedos.org/) 宣称，大多数人使用 FreeDOS 来完成三项主要任务：

1. 玩经典的 DOS 游戏
2. 运行老式的 DOS 软件
3. 运行一款嵌入式系统

但是，运行一个“嵌入式”系统的意义是什么呢？

嵌入式系统基本上是一款非常小的系统，专用于运行一个特定的任务。你可以把现在的嵌入式系统当作是 *物联网*（IoT）的一部分，这包括传感器、恒温器和门铃摄像头。现在，很多嵌入式系统都是在 Linux 上运行的。

但是，在很久很久以前，嵌入式系统要么在一个定制的专有的平台上运行，要么在 DOS 系统上运行。在现在，一些基于 DOS 的嵌入式系统仍然在运行，例如，收银机或电话专用交换机（PBX）系统。举个例子来说，在 2017 年，酷爱列车的人发现一个正在运行 FreeDOS 的俄罗斯的电动列车控制系统 （俄语: *САВПЭ*），它使用特殊的软件来控制和监控郊区列车的线路，并发布乘客通告。

在 DOS 上建立一个嵌入式系统需要定义一个最小化的 DOS 环境来运行单个应用程序。幸运的是，设置一个最小化的 FreeDOS 环境是非常容易的。从技术上来说，启动 FreeDOS 并运行 DOS 应用程序仅需要内核和一个 `FDCONFIG.SYS` 配置文件。

### 安装一款最小化的系统

我们可以使用 QEMU 仿真器来模拟一个专用的、最小化的 FreeDOS 系统，并给它分配很少的资源。为了更准确地反映一个嵌入式系统，我将定义一个只有 8 MB 的存储器和仅仅有 2 MB 的硬盘驱动器的虚拟机。

为创建这个微小的虚拟硬盘，我将使用这个 `qemu-img` 命令来定义一个 2M 的文件：

```
$ qemu-img create tiny.img 2M
Formatting 'tiny.img', fmt=raw size=2097152

```

下面的这行命令定义了一个 32 位的 “i386” CPU、8MB 的存储器，使用 2MB 的 `tiny.img` 文件作为硬盘驱动器镜像，使用 FreeDOS 1.3 RC4 LiveCD 作为 CD-ROM 介质。我们也将机器设置为从 CD-ROM 驱动器启动（`-boot order=d`），尽管我们只需要用它来安装系统。在我们完成所有的设置后，我们将从该硬盘启动完成的嵌入式系统：

```
qemu-system-i386 -m 8 -hda tiny.img -cdrom FD13LIVE.iso -boot order=d

```

使用 “<ruby> 现场环境模式 <rt>  Live Environment mode </rt></ruby>” 来启动系统，这将为我们提供一个正在运行的 FreeDOS 系统，我们可以使用它来将一个最小化的 FreeDOS 转移到硬盘上。

*启动到 LiveCD 环境之中（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

我们需要在虚拟硬盘驱动器上为我们的程序创建一个分区。为此，从命令行中运行 `FDISK` 程序。`FDISK` 是 FreeDOS 上的一个标准的 *磁盘分区* 实用程序。使用 `FDISK` 来创建一个单个硬盘驱动器分区，占用整个（2 MB）硬盘驱动器。

*FDISK，在创建 2 MB 分区后（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

但是，在你重新启动 FreeDOS 之前，FreeDOS 不会看到新的硬盘驱动器分区 — FreeDOS 仅在启动时读取硬盘详细信息。退出 `FDISK` ，并重新启动 FreeDOS 。

在重新启动后，你需要在新的硬盘驱动器上创建一个 DOS 文件系统。因为这里只有一个虚拟硬盘，FreeDOS 将识别其为 `C:` 驱动器。你可以使用 `FORMAT` 命令来在 `C:` 驱动器上创建一个 DOS 文件系统。使用 `/S` 选项将把操作系统文件（内核，外加一个 `COMMAND.COM` shell 的副本）转移到新的驱动器上。

*格式化新的驱动器来创建一个 DOS 文件系统（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）* 你已经创建了硬盘驱动器并将其格式化，现在，你可以安装应用程序，这些应用程序是将会在新安装的嵌入式系统上运行的。

### 安装专用的应用程序

嵌入式系统实际上只是一个运行在一个专用系统上的单一用途的应用程序。这些应用程序通常是为其将要控制的系统而自定义构建的，例如，一台收银机、显示终端、或控制环境。在这个演示中，让我们使用一个来自 FreeDOS 1.3 RC4 安装光盘中的程序。它需要足够小，以适应我们为其创建的 2 MB 微型硬盘驱动器。这可以是任何东西，所以，为了好玩，让我们把它变成一个游戏。

FreeDOS 1.3 RC4 包含一些有趣的游戏。我喜欢的一个游戏是一个名称为 “Simple Senet” 的棋类游戏。它是一个基于 Senet 的古埃及棋类游戏。游戏的细节对这个演示并不重要，我们将安装它，并将其设置为嵌入式系统的专业应用程序。

为安装应用程序，在 FreeDOS 1.3 RC4 LiveCD 上，进入 `\PACKAGES\GAMES` 目录。你将在其中看到一个很长的软件包列表，而我们想要的 `SENET.ZIP` 。

*来自 FreeDOS 1.3 RC4 的一个游戏软件包列表（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

为解压缩 “Simple Senet” 软件包到虚拟硬盘上，使用 `UNZIP` 命令。所有的 FreeDOS 软件包都是 Zip 文件，因此，你可以使用任意与 Zip 兼容的档案实用程序来管理它们。FreeeDOS 1.3 RC4 包含创建 Zip 档案文件的 `ZIP` 和提取 Zip 档案文件的 `UNZIP` 。它们都来自 [Info-Zip 项目](http://infozip.sourceforge.net/) 。

```
UNZIP SENET.ZIP -d C:\FDOS

```

通常，使用 `UNZIP` 来提取 Zip 文件到当前目录中。在命令行结尾的 `-d C:\FDOS` 选项将告诉 `UNZIP` 来提取 Zip 文件到 `C:\FDOS` 目录之中。（`-d` 指的是“目的地”）

*解压缩 Simple Senet 游戏（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

为了让嵌入式系统启动时运行 “Simple Senet” 游戏，我们需要告诉 FreeDOS 来使用 Senet 作为系统的 “shell” 。 默认的 FreeDOS 的 shell 是 `COMMAND.COM` 程序，但是，你可以在 `FDCONFIG.SYS` 内核配置文件中使用 `SHELL=` 指令来定义一个不同的 shell 程序。我们可以使用 FreeDOS 的 Edit 来创建新的 `C:\FDCONFIG.SYS` 文件。

*（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

如果你需要定义其它的参数来支持嵌入式系统，你可以将其添加到 `FDCONFIG.SYS` 文件之中。例如，你可能需要使用 `SET` 动作来设置环境变量，或者使用 `FILES=` 或 `BUFFERS=` 语句来调整 FreeDOS 内核。

### 运行嵌入式系统

在全面地完成嵌入式系统的定义之后，现在，我们可以重新启动计算机来运行嵌入式应用程序。运行一个嵌入式系统通常仅需要有限的资源，因此，在这个演示中，我们需要调整 QEMU 命令行来只从硬盘驱动器（`-boot order=c`）中启动，而不再定义一个 CD-ROM 驱动器：

```
qemu-system-i386 -m 8 -hda tiny.img -boot order=c

```

当 FreeDOS 内核启动时，它将读取 `FDCONFIG.SYS` 文件以获取启动参数。然后，它将使用 `SHELL=` 行的定义来运行 shell 。这将自动地运行 “Simple Senet” 游戏。

*作为一个嵌入式系统运行 Simple Senet（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

我们已经使用了 “Simple Senet” 来演示如何在 FreeDOS 上设置一个嵌入式系统。根据你的需要，你可以使用任何你喜欢的独立应用程序。在 `FDCONFIG.SYS` 中使用 `SHELL=` 行将其定义为 DOS 的 shell ，FreeDOS 将在启动时自动地启动该应用程序。

不过，在这里有一个限制。嵌入式系统通常不需要退回到一个命令行提示符之中，因此这些专用应用程序通常不允许用户退出到 DOS 之中。如果你设法退出了嵌入式应用程序，你可能会看到一个 “Bad or missing Command Interpreter” 的提示，你将需要在其中输入一个新的 shell 的完整路径。对于一个以用户为中心的桌面系统来说，这将是一个问题。但是在一个嵌入式系统上，它只专注执行一种工作的，那么，你也永远不需要退出嵌入式应用程序。

---

via: <https://opensource.com/article/21/6/freedos-embedded-system>

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

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


KDE第一！

不得不说KDE来了一个厉害的补刀。这个Pop!os乱删软件的事故告诉我们，千万别碰小作坊的linux发行版。

商店里有一个插件，只是较难用

来自117.136.57.174的 Opera Mobile 64.3|Android 10 用户

# 开发中的 KDE Plasma 5.24 新变化：增加 GNOME 式概览、防删功能

>
> KDE Plasma 正在升级中，以改善类似于 GNOME shell 的概览，并为非技术用户提供更多的可用性改进。
>
>
>

自从 2011 年 GNOME 3 以来，活动概览在与 GNOME 的互动中起到了关键作用。尽管它在发布时受到了严厉的批评，但许多用户现在已经爱上了它，导致其他一些桌面环境也在考虑实现类似的功能。

而且，看起来 KDE Plasma 正在添加类似的东西，它就像是一个全新的类似 GNOME 的概览。让我们来仔细了解一下。

### 新的 Plasma 概览

当我偶然看到 KDE 开发者 [Nate Graham 的博文](https://pointieststick.com/2021/11/19/this-week-in-kde-most-of-gnome-shell-in-the-overview-effect/) 时，我注意到了一个与 GNOME 活动概览非常相似的东西。

如上面的截图所示，当你在 KDE 上按 `Windows`/`Super` 键进入概览界面时，你就会看到它。

然而，值得注意的是，它仍然处在开发版本中。而且，它已经被合并到 KDE Plasma 5.24 中去了。

但是它和 GNOME 活动概览相似吗？

它看起来确实相似，但有一些关键的区别，其中包括：

* 在概览中，你可以完全访问底部面板。
* 搜索功能是由 KRunner 提供的，用来寻找应用程序和活动窗口。

#### 可以完全访问底部面板

如果你正在使用 KDE，你肯定知道底部面板。到目前为止，它与 GNOME 的概览效果最显著的区别是有任务栏。这使得用户可以访问一个统一的地方来打开应用程序，访问快速设置，并查看通知。

作为一个拥有任务栏的传统桌面理念的粉丝，这对于 Plasma 这样的传统桌面环境来说感觉非常完美。

#### 使用 KRunner 进行强大的搜索（新增加的功能）

多年来，KRunner 无疑是 Linux 中最强大的应用程序启动器之一。它的一些神奇功能包括可以搜索：

* 文件
* 设置
* 应用程序
* 打开浏览器标签
* 打开现有窗口

因此，KRunner 已被整合到 KWin 的概览效果中，可以让你搜索现有窗口或启动新的应用程序。

我相信很多用户会非常高兴地看到这个整合，特别是那些已经使用 KRunner 的用户。

### 防止用户卸载 KDE

为了改善非技术用户的用户体验，Discover（KDE 的软件中心）现在会阻止任何删除任何关键软件包的行为，比如桌面环境。

你可能知道，这个问题是由 Linus Sebastian（Linus Tech Tips）强调的，当他在 Pop!\_OS 上安装 Steam 时，结果却删除了 GNOME、Xorg 和其他重要软件包。

所以，接下来的改进是为了解决这个问题，这对 KDE Plasma 5.24 来说是一个很好的补充。

### 其他改进

除了关键的亮点之外，KDE Plasma 5.24 旨在提高性能、响应速度和用户体验。

此外，也有一些细微的用户界面调整和小程序改进。要想了解更多，你应该浏览一下 [Nate 的博文](https://pointieststick.com/2021/11/19/this-week-in-kde-most-of-gnome-shell-in-the-overview-effect/) 以及与上述功能相关的 [合并请求](https://invent.kde.org/plasma/kwin/-/merge_requests/1688)。

### 总结

根据我对 KDE Plasma 的体验，它是一个非常注重生产力的桌面。KDE 在改善桌面环境的概览效果和可用性的同时，将包括一个同样具有生产力和专注性的用户界面，这是很有意义的。

如果你想尝试新的改进，恐怕你必须等待 Plasma 5.24 发布。虽然这对现在来说是要等待相当长的时间（2022 年 2 月），但我相信这将是值得的。

---

via: <https://news.itsfoss.com/kde-plasma-5-24-dev/>

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


硬核观察 #465 攻击者不愿费力暴力破解长密码

Summary: 更多：• 央视新闻 AI 手语主播亮相 • 苹果“播客”应用找到了迅速提升了评分的捷径

密码长就有用吗，特别是现在这个钱可以买到用户数据的时代?

# 硬核观察 #465 攻击者不愿费力暴力破解长密码

### 攻击者不愿费力暴力破解长密码

根据微软蜜罐服务器网络收集的数据，大多数暴力破解攻击者主要 [尝试猜测短密码](https://therecord.media/attackers-dont-bother-brute-forcing-long-passwords-microsoft-engineer-says/)，很少攻击针对长的或包含复杂字符的凭证。微软安全研究员表示：“我分析了微软传感器网络中约 30 天的数据，这包括超过一百万次针对 SSH 的暴力攻击输入的凭据。77% 的破解行为使用的是长度在 1 至 7 个字符之间的密码。长度超过 10 个字符的密码尝试只占 6%。”

>
> 老王点评：看，你只需要使用一个比较长的密码就可以了，换句话说，你只要“比其他人跑得快，狗熊就追不上你”。
>
>
>

### 央视新闻 AI 手语主播亮相

11 月 24 日，据 [央视新闻官微消息](https://weibo.com/2656274875/L2Vrqjan6?refer_flag=1001030103_)，今日，央视新闻联合百度智能云打造的首个 AI 手语主播正式亮相，将从 2022 北京冬奥会开始为听障人士提供全年无休服务。从视频来看，这位 AI 手语主播有着“真人般”的皮肤、头发、眼睛，形象亲切自然，气质优雅独特。据介绍，百度智能云采⽤语⾳识别、⾃然语⾔处理等⼈⼯智能技术，构建出⼀套复杂⽽精确的⼿语翻译引擎，实现了⽂字及⾳视频内容到⼿语的翻译。随后，通过专为⼿语优化的⾃然动作引擎，进⾏虚拟形象的驱动，将⼿语实时演绎为数字⼈的表情动作。

>
> 老王点评：AI 技术的正确打开方式，这比现在热捧的元宇宙有用多了。
>
>
>

### 苹果“播客”应用找到了迅速提升了评分的捷径

苹果默认安装的“播客”应用在一个多月内，在没有任何实际修复的情况下，从公开的 1.8 星得分一路上升到 4.6 星。而且它还在上升：该应用每天都有成千上万的评分，其中绝大多数都是 5 星。截至目前，该应用的总体评分已达到 4.7 星，并稳居苹果应用商店“播客”搜索结果的第一位。而做到这一切的做法是通过 [应用内的提示](https://www.theverge.com/2021/11/19/22791968/apple-podcasts-star-score-review-prompt) 来中断听众的播客收听，让他们提交更好的评论和评分。可能很多喜欢苹果“播客”应用的人，从未费心在苹果商店中查找它并给出评分；但是另外一方面，一些积极的评论根本不是对苹果“播客”应用的评论，它们是对播客内容本身的评论。

>
> 老王点评：滥觞一开，我觉得各种浏览器、内容应用都可以效仿了。
>
>
>


Kubernetes 复制控制器如何工作

Summary: 复制控制器负责管理吊舱的生命周期并确保在任何时候运行着所需的指定数量的吊舱。

复制控制器负责管理吊舱的生命周期并确保在任何时候运行着所需的指定数量的吊舱。

# Kubernetes 复制控制器如何工作

>
> 复制控制器负责管理吊舱的生命周期并确保在任何时候运行着所需的指定数量的吊舱。
>
>
>

你有没有想过，谁负责监督和管理 Kubernetes 集群内运行的“<ruby> 吊舱 <rt>  pod </rt></ruby>”的确切数量？Kubernetes 可以通过多种方式做到这一点，但一个常见的方法是使用 “<ruby> 复制控制器 <rt>  ReplicationController </rt></ruby>（RC）”。RC 负责管理吊舱的生命周期，并确保在任何时候运行着所需的指定数量的吊舱。但另一方面，它不负责高级的集群能力，如执行自动扩展、准备度和活跃探测以及其他高级的复制能力。Kubernetes 集群中的其他组件可以更好地执行这些功能。

简而言之，RC 的职责有限，通常用于不需要复杂逻辑就能达到某些要求的具体实现（例如，确保所需的吊舱数量总是与指定的数量相符）。如果超过了所需的数量，RC 会删除多余的，并确保即使在节点故障或吊舱终止的情况下，也有相同数量的存在。

简单的事情不需要复杂的解决方案，对我来说，这就是 RC 如何被使用的一个完美的比喻。

### 如何创建一个 RC

像大多数 Kubernetes 资源一样，你可以使用 YAML 或 JSON 格式创建一个 RC，然后将其发布到 Kubernetes API 端点。

```
$ kubectl create -f rcexample.yaml
 replicationcontroller/rcexample created

```

现在，我将深入一下 `rcexample.yaml` 的样子。

```
apiVersion: v1
kind: ReplicationController   →  RC 描述符
metadata:
 name: rcexample            →  复制控制器名字
spec:
 replicas: 3                 → 预期的吊舱数量
 selector:                  → 这个 RC 的吊舱选择器
   app: nginx
 template:                  → 用于创建新吊舱的模板
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx

```

进一步解释，这个文件在执行时创建了一个名为 `rcexample` 的 RC，确保三个名为 `nginx` 的吊舱实例一直在运行。如果一个或所有的 `app=nginx` 吊舱没有运行，新的吊舱将根据定义的吊舱模板创建。

一个 RC 有三个部分：

* 复制品：`3`
* 吊舱模板：`app=nginx`
* 吊舱选择器：`app=nginx`

注意，吊舱模板要与吊舱选择器相匹配，以防止 RC 一直创建吊舱。如果你创建的 RC 的吊舱选择器与模板不匹配，Kubernetes API 服务器会给你一个错误。

为了验证 RC `rcexample` 是否被创建：

```
$ kubectl get po
NAME     READY   STATUS       RESTARTS  AGE
rcexample-53thy  0/1  Running         0     10s
rcexample-k0xz6  0/1  Running         0     10s
rcexample-q3vkg  0/1  Running         0     10s

```

要删除 RC：

```
$ kubectl delete rc rcexample
 replicationcontroller "rcexample" deleted

```

注意，你可以对 RC 中的服务使用 [滚动更新](https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/) 策略，逐个替换吊舱。

### 其他复制容器的方法

在 Kubernetes 部署中，有多种方法可以实现容器的复制。Kubernetes 成为容器平台的主要选择的主要原因之一是复制容器以获得可靠性、负载平衡和扩展的原生能力。

我在上面展示了你如何轻松地创建一个 RC，以确保在任何时候都有一定数量的吊舱可用。你可以通过更新副本的数量来手动扩展吊舱。

另一种可能的方法是通过使用 “<ruby>   复制集  <rt>  ReplicaSet </rt></ruby>（RS）”来达到复制的目的。

```
(kind: ReplicaSet)

```

RS 的功能几乎与 RC 相同。主要区别在于，RS 不允许滚动更新策略。

另一种实现复制的方法是通过使用 “<ruby>   部署  <rt>  Deployments </rt></ruby>”。

```
(kind: Deployment)

```

部署是一种更高级的容器复制方法。从功能上讲，部署提供了相同的功能，但在需要时可以推出和回滚变化。这种功能之所以能够实现，是因为部署有 “<ruby> 策略类型 <rt>  StrategyType </rt></ruby>” 规范来用新的吊舱替换旧的吊舱。你可以定义两种类型的部署策略：“<ruby> 重新创建 <rt>  Recreate </rt></ruby>” 和 “<ruby> 滚动更新 <rt>  RollingUpdate </rt></ruby>”。你可以如下指定部署策略：

```
StrategyType: RollingUpdate

```

### 总结

容器的复制功能是大多数企业考虑采用 Kubernetes 的主要原因之一。复制可以让你达到大多数关键应用程序需要的可靠性和可扩展性，作为生产的最低要求。

了解在 Kubernetes 集群中使用哪些方法来实现复制，对于决定哪种方法最适合你的应用架构考虑非常重要。

---

via: <https://opensource.com/article/21/11/kubernetes-replicationcontroller>

作者：[Mike Calizo](https://opensource.com/users/mcalizo) 选题：[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/) 荣誉推出


亚马逊自己的 Linux 发行版现在完全基于 Fedora 了

不基于欧拉，不爱国，大家抵制亚马逊

一时间不知是敌是友

# 亚马逊自己的 Linux 发行版现在完全基于 Fedora 了

>
> 亚马逊已经发布了 Amazon Linux 2022 的公开预览版，并有了新的发布模式。
>
>
>

<img src="content_image/album_202111_25_142143j9xw8dtrty09ox30.png" alt="" title="">

如果你还不知道，亚马逊有自己的通用 Linux 发行版，自然而然，它被称为 Amazon Linux。

它的目的是在 AWS 服务器上使用。当你部署服务器时，你可以选择使用 Amazon Linux，或其他流行的选择，如 Ubuntu、Debian 等。由于它来自亚马逊，所以没有许可费，而且亚马逊对软件库和软件包进行控制。你可以期待它与 AWS 工具紧密结合，并通过它获得新的 AWS 创新。

Amazon Linux 2022（AL2022）是其版本 1 和 2 之后的下一个版本，它将在 2022 年发布（你可以从版本号上猜到）。

### 即将发布的 Amazon Linux 2022 只基于 Fedora

到目前为止，Amazon Linux 的发布是基于红帽 Linux 和 Fedora 两者的组合。从 AL2022 开始，它将明确使用 Fedora 作为上游。

此举意在为 AWS 客户“提供各种最新软件，如更新的语言运行时，作为季度发布的一部分”。

为了提高安全性，减少攻击面，AL2022 还将启用 [SELinux](https://linuxhandbook.com/selinux/) 并默认执行。

### 与 Ubuntu 相似的新发布模式

Amazon Linux 还选择了一个更可预测的发布时间表。每两年将发布一个新的 Amazon Linux 主要版本，并将支持五年。这样，用户就会知道何时以及如何升级他们的操作系统。

这种“每两年一个新的 LTS 版本和 5 年的支持”与 Ubuntu 如今的特点非常相似。

### 还有什么？

AL2022 也能锁定到亚马逊 Linux 软件包库的特定版本。这使得用户可以控制如何以及何时吸收更新。

Amazon Linux 2022 在所有的地理区域都可以作为预览版（即 beta 版）体验。你可以访问他们的 GitHub 页面了解更多关于 AL2022 的信息。

---

via: <https://news.itsfoss.com/amazon-linux-2022-preview/>

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


Summary: 更多：• 开发了五年的新 Linux 随机数发生器仍然无法进入内核主线 • 三分之一的暗网域名现在是 V3 洋葱网站

# 硬核观察 #466 周易 AI 加速器因缺乏开源客户端而无法进入 Linux 内核主线

### 周易 AI 加速器因缺乏开源客户端而无法进入 Linux 内核主线

周易 AI 加速器是由 Arm 中国开发的，目前已经用在一些 SoC 中，如全志 R329。一位百度工程师发布了一个超过五千行代码的新内核驱动，[实现了对它的支持](https://www.phoronix.com/scan.php?page=news_item&px=Linux-Driver-Zhouyi-AI)。但是这个驱动目前只能进入暂存区，而无法进入 Linux 内核主线，因为 Arm 中国只是以二进制方式分发了用户空间组件（客户端），而没有提供它的源代码。甚至开发该驱动的开发者似乎也没有用户空间的源代码，而是要靠逆向工程来实现。

>
> 老王点评：这种闭源而小众的硬件，Linux 内核是不欢迎的。
>
>
>

### 开发了五年的新 Linux 随机数发生器仍然无法进入内核主线

LRNG 是 Linux 上的一个新的 `/dev/random` 实现，它已经开发了五年多。它采用与现有内核实现不同的设计，但是完全兼容现有的接口。由于加密处理的改进、大型并行系统更好的可扩展性、关键代码路径中高达 130% 的性能提升等等，[这个实现更加出色](https://www.phoronix.com/scan.php?page=news_item&px=Linux-LRNG-43rd)。但是这个新的随机数发生器何时能进入 Linux 内核，目前还需要拭目以待。

>
> 老王点评：随机数的实现看似简单和基础，但是其实是整个安全系统的基石，所以内核对它非常慎重。
>
>
>

### 三分之一的暗网域名现在是 V3 洋葱网站

过去两年，Tor 匿名网络经历了一个重大变化，.onion 域名取消了被称为 V2 地址的 16 个字符长的域名，取而代之的是被称为 V3 的 56 个字符长的域名。[据调查](https://www.darkowl.com/blog-content/tor-v2-depreciation-shifts-darknet-landscape)，目前 62% 是 V2 地址，38% 是 V3 地址。Tor 团队在 9 月自己的 V2-V3 分析中指出，预计 V2 网站将在未来一年内绝迹。

>
> 老王点评：V3 域名给对洋葱网络上的非法内容打击增加了困难。
>
>
>


使用 cowsay 命令的 3 种有趣方式

Summary: 想试一个只是好玩的应用吗？试试 cowsay。

想试一个只是好玩的应用吗？试试 cowsay。

# 使用 cowsay 命令的 3 种有趣方式

>
> 想试一个只是好玩的应用吗？试试 cowsay。
>
>
>

大多数时候，终端是一个生产力的动力源。但是，终端的作用不止是命令和配置。在所有杰出的开源软件中，有些是 [为了好玩而写的](https://opensource.com/life/16/6/fun-and-semi-useless-toys-linux)。我以前介绍过一些 [有趣的命令](https://opensource.com/article/21/11/fun-linux-commands)，但这篇文章只讲一个：古老的 `cowsay` 命令。

`cowsay` 是一只可配置的会说话（或思考）的牛。它接受一个文本字符串，并输出一个牛说话的图形。下面是一头牛在说它喜欢 Linux：

```
< I love Linux >
--------------
       \   ^__^
        \  (oo)\_______
           (__)\       )\/\
               ||----w |
               ||     ||

```

要得到这个结果，我只需输入：

```
$ cowsay "I love Linux"

```

### 在 Linux 上安装 cowsay

你可以用你的包管理器安装 `cowsay`。在 Debian、Mint、Elementary 和类似的发行版上：

```
$ sudo apt install cowsay

```

在 Fedora 上：

```
$ sudo apt install cowsay-beefymiracle

```

### Cowsay 命令选项

`cowsay` 是一个简单又有点傻的应用。除了为你的终端机提供一些不同样式外，它并没有什么实际用途。例如，与其让一头普通的牛说一个有趣短语，你可以让一头长着古怪眼睛的牛说一个有趣的短语。输入：

```
$ cowsay -e @@ Hello

```

你会看到：

```
< Hello >
 -------
       \   ^__^
        \  (@@)\_______
           (__)\       )\/\
               ||----w |
               ||     ||

```

或者你可以让它伸出舌头。输入：

```
$ cowsay -T U Hello

```

你会看到：

```
< Hello >
-------
       \   ^__^
        \  (oo)\_______
           (__)\       )\/\
            U ||----w |
               ||     ||

```

更好的是，你可以将 `fortune` 命令与 `cowsay` 结合起来：

```
$ fortune | cowsay

```

现在你有了一头特别睿智的牛：

```
 _______________________________________
/ we:                                   \
|                                       |
| The single most important word in the |
\ world.                                /
 ---------------------------------------
       \   ^__^
        \  (oo)\_______
           (__)\       )\/\
               ||----w |
               ||     ||

```

### “结实的奇迹”

在 Fedora 上，有一个额外的 `cowsay` 选项，也是一个非官方的项目吉祥物。多年来，Fedora 安装程序一直在展示宣传开源贡献的幻灯片。因为它们是根据汽车电影院的插曲设计的，所以幻灯片中常见的卡通人物是拟人化的热狗。

为了与这个主题保持一致，你可以用 Fedora 版本的 `cowsay` 调用一个所谓的“<ruby> 结实的奇迹 <rt>  beefy miracle </rt></ruby>”。（LCTT 译注：Fedora 17 的开发代号。）

```
$ cowsay -f beefymiracle Hello Fedora

```

你会得到一个非常傻的输出：

```
< Hello Fedora >
 --------------      .---. __
          ,    \    /     \   \    ||||
         \\\\      |O___O |    | \\||||
         \   //    | \_/  |    |  \   /
          '--/----/|     /     |   |-'
                 // //  /     -----'
                //  \\ /      /
               //  // /      /
              //  \\ /      /
             //  // /      /
            /|   ' /      /
            //\___/      /
           //   ||\     /
           \\_  || '---'
           /' /  \\_.-
          /  /    --| |
          '-'      |  |
                    '-'

```

### 图形化的 cowsay

如果你发现自己需要用图形化的牛来传递信息，可以使用 `xcowsay` 命令。这是一个类似于 `cowsay` 的图形程序，它接受一个由用户输入的文本字符串，或从另一个应用（如 Fortune）输送过来的文本字符串。

### 有趣的 Linux 命令

虽然 `cowsay` 不是一个有用的命令，但它是一个有趣的命令，相当于你终端的桌面小工具。它很适合用来分散注意力和进行有趣的管道命令实验（尝试将 `ifconfig` 管道到 `cowsay`，或 `lsblk` 或 `mount`，或任何东西！）。如果你想让你的终端更有趣，试试 `cowsay`。

---

via: <https://opensource.com/article/21/11/linux-cowsay-command>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[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/) 荣誉推出


不使用安装程序安装 FreeDOS

Summary: 这里是如何在不使用安装程序的情况下来手动设置你的 FreeDOS 系统。

但是装这个的意义是什么？现在能做什么？

这里是如何在不使用安装程序的情况下来手动设置你的 FreeDOS 系统。

# 不使用安装程序安装 FreeDOS

>
> 这里是如何在不使用安装程序的情况下来手动设置你的 FreeDOS 系统。
>
>
>

大多数的人应该能够使用安装程序来非常容易地安装 FreeDOS 1.3 RC4 。FreeDOS 安装程序会先询问几个问题，然后处理剩余的工作，包括为 FreeDOS 制作安装空间和使系统可启动。

但是，如果安装程序不适合你怎么办？或者，你更喜欢 *手动* 设置你的 FreeDOS 系统，而不喜欢使用安装程序怎么办？使用 FreeDOS ，你也可以做到这些！让我们在不使用安装程序的情况下逐步走完安装 FreeDOS 的步骤。我将使用 QEMU 虚拟机的一个空白的硬盘驱动器镜像来完成所有的步骤。我使用这个 Linux 命令来创建了一个 100 MB 的硬盘驱动器镜像：

```
$ qemu-img create freedos.img 100M

```

我下载了 FreeDOS 1.3 RC4 的 LiveCD ，并将其命名为 `FD13LIVE.iso` ，它提供了一个 “身临其境” 的环境，我可以在其中运行 FreeDOS ，包括所有的标准工具。大多数用户也使用 LiveCD 自带的常规安装程序来安装 FreeDOS 。但是，在这里我将仅使用 LiveCD ，并从其命令行中使用某些类型的命令来安装 FreeDOS 。

我使用这个相当长的 QEMU 命令来启动虚拟机，并选择 “Use FreeDOS 1.3 in Live Environment mode” 启动菜单项：

```
$ qemu-system-x86_64 -name FreeDOS -machine pc-i440fx-4.2,accel=kvm,usb=off,dump-guest-core=off -enable-kvm -cpu host -m 8 -overcommit mem-lock=off -no-user-config -nodefaults -rtc base=utc,driftfix=slew -no-hpet -boot menu=on,strict=on -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on -hda freedos.img -cdrom FD13LIVE.iso -device sb16 -device adlib -soundhw pcspk -vga cirrus -display sdl -usbdevice mouse

```

*选择 "Use FreeDOS 1.3 in Live Environment mode" 来启动 LiveCD（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

这个 QEMU 命令行包含大量的选项，乍看可能会让你迷糊。因为你完全使用命令行选项配置 QEMU ，所以在这里有很多东西需要审查。但是，我将简单地重点说明几个重要的选项：

* `-m 8`：设置系统存储器（RAM）为 8 MB
* `-boot menu=on,strict=on`：使用一个启动菜单，这样，我可以选择从 CD-ROM 镜像或硬盘驱动器镜像启动
* `-hda freedos.img`：使用 `freedos.img` 作为硬盘驱动器镜像
* `-cdrom FD13LIVE.iso`：使用 `FD13LIVE.iso` 作为 CD-ROM 镜像
* `-device sb16 -device adlib -soundhw pcspk`：定义计算机带有一个 SoundBlaster16 声卡、AdLib 数字音乐卡、PC 扬声器模拟器（如果你想玩 DOS 游戏的话，这些模拟器很有用）
* `-usbdevice mouse`：将用户的鼠标识别为一个 USB 鼠标（在 QEMU 窗口中单击以使用鼠标）

### 对硬盘驱动器进行分区

你可以从 LiveCD 使用 FreeDOS 1.3 RC4 ，但是，如果你想安装 FreeDOS 到你的计算机中，你需要先在硬盘驱动器上制作安装空间。这需要使用 FDISK 程序来创建一个 *分区* 。

从 DOS 命令行中，输入 `FDISK` 来运行 *分区* 设置程序。FDISK 是一个全屏交互式程序，你只需要输入数字来选择菜单项。从 FDISK 的主菜单中，输入 `1` 来在驱动器上创建一个 DOS 分区，然后在接下来的屏幕上输入 `1` 来创建一个 “主” DOS 分区。

*选择 `1` 来创建一个分区（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

*在接下来的菜单上选择 `1` 来制作一个主分区（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

`FDISK` 会询问你是否想要使用全部的硬盘空间大小来创建分区。除非你需要在这个硬盘驱动器上和另外一个操作系统（例如 Linux）共享硬盘空间，否则，对于这个提示，你应该回答 `Y` 。

在 `FDISK` 创建新的分区后，在 DOS 能够识别新的分区信息前，你将需要重新启动 DOS 。像所有的 DOS 操作系统一样，FreeDOS 仅在其启动时识别硬盘驱动器信息。因此，如果你创建或删除任何的磁盘分区的话，你都将需要重新启动 FreeDOS ，只有这样做，FreeDOS 才能识别到更改的分区信息。`FDISK` 会提醒你重新启动，因此，你是不会忘记的。

*你需要重新启动以识别新的分区（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以通过停止或重新启动 QEMU 虚拟机来重新启动 FreeDOS，但是我更喜欢在 FreeDOS 命令行中使用 FreeDOS 的高级电源管理（`FDADPM`）工具来重新启动 FreeDOS 。为了重新启动，输入命令 `FDADPM /WARMBOOT` ，FreeDOS 将自动重新启动。

### 对硬盘驱动器进行格式化

在 FreeDOS 重新启动后，你可以继续设置硬盘驱动器。创建磁盘分区是这个过程的“第一步”；现在你需要在分区上创建一个 DOS *文件系统* ，以便 FreeDOS 可以使用它。

DOS 系统使用字母 `A` 到 `Z` 来识别“驱动器”。FreeDOS 将识别第一个硬盘驱动器的第一个分区为 `C` 驱动器，依此论推。你经常使用字母和一个冒号（`:`）来表示驱动器，因此我们在上面创建的新分区实际上是 `C:` 驱动器。

你可以在新的分区上使用 `FORMAT` 命令来创建一个 DOS 文件系统。这个命令带有一些选项，但是，我们将仅使用 `/S` 选项来告诉 `FORMAT` 来使新的文件系统可启动： `S` 意味着安装 FreeDOS “系统” 文件。输入 `FORMAT /S C:` 来在 `C:` 驱动器上制作一个新的 DOS 文件系统。

*格式化分区来创建 DOS 文件系统（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

使用 `/S` 选项，`FORMAT` 将运行 `SYS` 程序来传输系统文件。你将看到这是从 `FORMAT` 输出的一部分:

*`FORMAT /S` 将使用 SYS 来使磁盘可启动（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 安装软件

在使用 `FDISK` 创建了一个新的分区，并使用 `FORMAT` 创建了一个新的文件系统后, 新的 `C:` 驱动器基本上是空的。此时，`C:` 驱动器仅包含一份内核和 `COMMAND.COM` 命令行 shell 的副本。为使新的磁盘可以执行一些有用的操作，我们需要在其上安装软件。这是手动安装过程的最后步骤。

FreeDOS 1.3 RC4 LiveCD 包含所有的你可能希望在新的系统上所要安装的软件。每个 FreeDOS 程序都是一个单独的 “软件包” ，它实际上只是一个 Zip 档案文件。建立标准 DOS 环境的软件包存储在 LiveCD 上 `PACKAGES` 目录下的 `BASE` 目录之中。

你可以一次一个的将其中的每一个软件包都 “解压缩” 到硬盘驱动器来完成安装。在 `Base` 组中有 62 个单独的软件包，如果每次安装一个软件包，这可能会花费非常多的时间。不过，你可以运行一个只有一行的 `FOR` “循环” 命令来 `UNZIP` 每个程序。接下来 FreeDOS 可以为你 “解压缩” 所有的软件包。

`FOR` 循环的基本用法中提及的一个单个字母变量（让我们使用 `%F`），稍后，FreeDOS 将使用该字母变量来 “填充” 文件名称。`FOR` 还需要括号中的一个文件列表，这个命令会对每个文件都运行一次。用来解压一系列的 Zip 文件的语法看起来像这样：

```
FOR %F IN (*.ZIP) DO UNZIP %F

```

这将提取所有的 Zip 文件到当前目录之中。为提取或 `UNZIP` 文件到一个不同的位置，在 `UNZIP` 命令行结尾处使用 `-d` (“目的地”) 选项。对于大多数的 FreeDOS 系统来说，你应该安装软件包到 `C:\FDOS` 目录中：

*解压缩所有的基本软件包来完成安装 FreeDOS（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

FreeDOS 会处理剩余的工作，安装所有的 62 个软件包到你的系统之中。这可能会花费几分钟的时间，因为 DOS 在处理很多单个的文件时会很慢，这个命令需要提取 62 个 Zip 文件。如果我们使用单个的 `BASE.ZIP` 档案文件的话，安装过程可能会运行地更快，但是使用软件包的话，在你选择想要安装或不安装软件包时会提供更多的灵活性。

*在安装所有的基本软件包后（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

在我们安装完所有的东西后，使用 `FDADPM /WARMBOOT` 来重新启动你的系统。手动安装意味着你的新 FreeDOS 系统没有常见的 `FDCONFIG.SYS` 配置文件，因此，当 FreeDOS 在启动时，它将假设一些典型的默认值。因为没有 `AUTOXEC.BAT` 文件，FreeDOS 也会提示你时间和日期。

*在手动安装后，重新启动 FreeDOS（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

大多数的用户应该能够使用比较用户友好的过程来在一台新的计算机上安装 FreeDOS 。但是如果你想自己使用“古老的”方法来安装它，那么你可以手动运行安装步骤。这会提供一些额外的灵活性和控制权，因为是你自己安装的一切。现在你知道如何安装它了。

---

via: <https://opensource.com/article/21/6/install-freedos-without-installer>

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

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


硬核观察 #467 容器化软件包不是 Linux 应用的未来

Summary: 更多：• Alpine Linux 砍掉 MIPS64 支持 • 英国出台法律禁止智能设备提供容易猜测的默认密码

Linux最可恨就是包依赖，一个包依赖一个包，安装一个软件，要下载60多个包，软件10M，包有40M，有些旧包被移除让软件根本不能安装。容器占体积固然让人讨厌，可Linux的包依赖解决了吗？

来自120.230.61.70的 Chrome Mobile 80.0|Android 10 用户

你愿意启动一个计算器每次需要等待 7 秒钟，那你就用容器呗。

没有依赖这个包照样40+10多M，而且你下另一个照样会再下40M的依赖。

deb系,包依赖比较容易解决,基本上apt就可以

rpm系,包依赖比较麻烦点,

容器包体积大勉强也就算了,关键是启动速度,运行速度都慢,当然不追求速度,那就无所谓,

容器包感觉是适合特定软件,或者某些非开源软件,不适合大面积使用

# 硬核观察 #467 容器化软件包不是 Linux 应用的未来

### 容器化软件包不是 Linux 应用的未来

应用开发者正在 [逐渐转向容器化软件包](https://ludocode.com/blog/flatpak-is-not-the-future)，如 [Flatpak](https://www.flatpak.org/)、[Snap](https://snapcraft.io/)、[AppImage](https://appimage.org/)、[Docker](https://www.docker.com/) 和 [Steam](https://store.steampowered.com/)，这种打包格式运用容器技术将所需要的运行时库直接封装在应用内。但这导致占用非常多的磁盘空间和内存，启动时间也更慢。比如计算器应用 KCalc 的 AppImage 软件包高达 152 MB，Flatpak 软件包则需要下载 900 MB，而事实上 KCalc 应用本身只有 4.4 MB，其余都是系统上已安装了的冗余库。启动一个计算器应用你每次需要等待 7 秒钟。

>
> 老王点评：将所有依赖打包到一起，在特定用例下是必要的，但是如果推而广之，共享库的优良实践就荡然无存了。
>
>
>

### Alpine Linux 砍掉 MIPS64 支持

在 Docker 基础镜像中广泛使用的 Alpine Linux 发布了 3.15 版本，支持最新的 5.15 LTS Linux 内核，但在此版本中放弃了对 MIPS64 架构的支持。[发布公告](https://alpinelinux.org/posts/Alpine-3.15.0-released.html) 中说，“这个架构已经失效了，MIPS64 构建器已经消失了。我们没有办法再构建任何软件包，我们也不能再修复任何安全问题，所以让 MIPS64 正式退役是很谨慎的决定。”MIPS64 属于 RISC 架构，它的设计者 MIPS 公司几经周折。随后，它作为同属于 RISC 架构的 RISC-V 的一种开源替代方案来推广，但最终在今年早些时候被放弃，转而支持基于 RISC-V 本身的架构。

>
> 老王点评：随着 MIPS 被放弃，它所构建起来的生态也逐一崩塌。
>
>
>

### 英国出台法律禁止智能设备提供容易猜测的默认密码

英国政府在《产品安全和电信基础设施法案》中 [增加了新的规定](https://www.bbc.com/news/technology-59400762)，禁止在智能设备上预装容易猜测的默认密码。所有的产品现在都需要独特的密码。对于违反此规定的厂商，它将有权对公司处以最高 1000 万英镑或其全球营业额 4% 的罚款，以及对持续违规行为每天处以最高 2 万英镑的罚款。其范围包括一系列设备，从智能手机、路由器、安全摄像机、游戏机、家庭扬声器和联网的白色家电和玩具。但不包括车辆、智能仪表和医疗设备。台式电脑和笔记本电脑也不在其管辖范围内。

>
> 老王点评：确实，有相当多的设备出于省心都采用的默认密码，这给被僵尸网络和入侵带来很大便利。
>
>
>


没有终点的操作系统 Endless OS 发布 4.0 LTS

网盘告诉我们，没有永久免费的东西。另外说明一下Rythmbox在树莓派下无法正常运行。

# 没有终点的操作系统 Endless OS 发布 4.0 LTS

>
> Endless OS 4.0 是一个长期支持版本，带有大量必要的改进，默认的应用程序以 Flatpak 包的形式提供。
>
>
>

Endless OS 是一个基于 Debian 的 Linux 发行版，重点捆绑提供几个重要的应用程序和资源，以帮助充分利用你的计算机，而不需要互联网连接。（LCTT 译注：因此，在互联网的“终点”之外也可使用。）

它主要是为教育和不能经常访问互联网的用户定制的。而如果你连接到互联网，也有一些工具可以帮助你浏览网页并与朋友/家人保持联系。

他们最新发布的 Endless OS 4.0 是一个长期支持的版本，带有一些改进。让我们简单了解一下。

### Endless OS 4.0 的新内容

澄清一下，这是一个 LTS 版本，将被维护若干年（具体不清楚），即使是在 Endless OS 5.0 版本发布之后，它也会得到更新。

除了 LTS 的好处之外，其他变化还包括：

#### 改进的应用程序网格导航

在以前的版本中，列出的应用程序散落在多个页面之间。由于这个原因，用户可能不会注意到它们。

因此，在 Endless OS 4.0 中，增加了额外的箭头和图标，以突出多页面和应用程序网格的存在。你应该看到，如果你在桌面上切换页面，可以探索到更多的应用程序。

#### 快速切换用户

在一个用户已经登录时，你现在有两种不同的方式来快速切换到另一个用户。

传统上，你可以在用户菜单中找到它（和注销选项一起）。或者，你也可以使用新的多用户图标从锁屏上直接切换。

#### 新的默认墙纸

每当有重大的版本升级时，新的墙纸总是让人耳目一新。

如果你想在任何其他系统中尝试它们，你可以在 [Unsplash](https://unsplash.com/photos/WeYamle9fDM) 上找到列出的这些壁纸。

#### 免驱动打印

你不再需要依靠讨厌的打印机驱动程序来检测连接的打印设备。有了 Endless OS 4.0，任何在本地网络中支持 [互联网打印协议](https://en.wikipedia.org/wiki/Internet_Printing_Protocol)（IPP）的设备都可以自动检测并连接。

当你升级时，会删除任何已配置的打印机。然而，如果需要的话，你可以手动将它们添加回来。

### 其他改进措施

除了基本的变化之外，你还会发现更新的图形驱动、升级的 Linux 内核等等。其中一些包括：

* [Linux 内核 5.11](https://news.itsfoss.com/linux-kernel-5-11-release/)
* NVIDIA 驱动程序 460.91.03
* 支持 8GB 版树莓派 4B
* 一些默认的应用程序，如 Rythmbox，以 Flatpak 软件包的方式安装

你还会注意到，作为升级的一部分，移除了一些功能。关于全部细节，你可以参考 [官方发布说明](https://support.endlessos.org/en/endless-os/release-notes/4-0)。

---

via: <https://news.itsfoss.com/endless-os-4-0-lts/>

作者：[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/) 荣誉推出


如何在 Fedora Linux 上安装 Discord

Summary: Discord 是一个流行的消息收发应用，可用于文字和语音信息传递。

Discord 是一个流行的消息收发应用，可用于文字和语音信息传递。

# 如何在 Fedora Linux 上安装 Discord

[Discord](https://discord.com/) 是一个流行的消息收发应用，可用于文字和语音信息传递。

它是一些社区的福音，可以帮助他们扩大项目，接触更多的人，并维持一个粉丝和关注者的社区。而 Discord 最初是为游戏玩家设计的，这很令人惊讶。

Discord 可用于各种平台，包括 Linux。在本教程中，我将引导你完成在 Fedora 中安装 Discord 的步骤。

* 使用 DNF 和 RPM Fusion 仓库安装 Discord
* 通过 Flatpak 安装Discord

Flatpak 软件包是沙盒的，因此需要更多的磁盘空间和时间来启动。然而，他们会相当快地更新到新的版本。

无论你想使用 Flatpak 还是 DNF，选择权在你手上。我将向你展示这两种方法。

>
> 非 FOSS 警报！
>
>
> Discord 并不是开源的。但由于他们提供了一个 Linux 客户端，而且许多 Linux 用户都依赖它，所以我们会在这里介绍它。
>
>
>

### 方法 1：通过 RPM Fusion 仓库安装 Discord

Discord 可以通过添加非自由的 RPM Fusion 仓库来安装，这是大多数 Fedora 用户的首选方法，因为更新很容易，而且应用的启动速度比 Flatpak 版本快。

打开终端，使用下面的命令来添加 RPM-fusion 非自由仓库：

```
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

```

完成后，更新仓库列表（应该不需要，但只是为了它）：

```
sudo dnf update

```

然后通过 `dnf` 命令安装 Discord，像这样：

```
sudo dnf install discord

```

如果被要求导入 GPG 密钥，只要按 `Y` 就可以授权了。

这就完成了！现在你可以从应用菜单中启动 Discord。你的登录页面将看起来像这样：

#### 通过 DNF 删除 Discord

如果你不想再使用 Discord，你可以从你的系统中删除它。要做到这一点，在终端运行以下命令：

```
sudo dnf remove discord

```

这真的很简单，不是吗？还有一种简单的安装 Discord 的方法，那就是使用 Flatpak 软件包。

### 方法 2：通过 Flatpak 安装 Discord

Discord 可以使用 Flatpak 轻松安装，因为它在 Fedora 中是默认可用的。

首先，你需要在 Fedora 中启用 Flatpak 仓库：

```
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

```

接下来，通过这个命令安装 Discord：

```
flatpak install discord

```

如果你想删除 Discord，那么只需运行：

```
flatpak remove discord

```

这就超级简单了。如果你在 Fedora Linux 上安装 Discord 需要任何帮助，请告诉我。

---

via: <https://itsfoss.com/install-discord-fedora/>

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


硬核观察 #468 微软 Edge 最新内置购物功能激怒用户

Summary: 更多：• 86% 被攻击的谷歌云实例用于挖掘加密货币 • 为在 Chrome 中禁止第三方 Cookie，谷歌向监管部门妥协

技术的尽头就是变现

# 硬核观察 #468 微软 Edge 最新内置购物功能激怒用户

### 微软 Edge 最新内置购物功能激怒用户

微软 Edge 的测试版本最近增加了一项功能，在浏览器内内置了购物功能，还允许人们分期支付网上购物的费用。这引起了浏览器的 [粉丝和用户的批评](https://www.windowscentral.com/microsoft-edges-latest-feature-called-shameless-cash-grab-critics)，他们认为微软 Edge 已经成为一个非常好的替代品，但正在变得臃肿，充满了购物功能，而不是提供一个纯粹的浏览体验。

>
> 老王点评：当 Edge 开始成功时，谁都想从其中挣到更多的钱，结果就被搞坏了。
>
>
>

### 86% 被攻击的谷歌云实例用于挖掘加密货币

谷歌最新发布的 [报告显示](https://services.google.com/fh/files/misc/gcat_threathorizons_full_nov2021.pdf)，这些被攻击利用的实例中，48% 的用户账户密码是薄弱或没有密码，或没有 API 认证，26% 是由于云实例中第三方软件的漏洞而发生的，只有 4% 是由于泄漏的凭证，如发布到 GitHub 的密钥。而且，在 58% 的情况下攻击是由脚本进行的，不需要人工干预，不安全的实例可以在短短 30 分钟内被扫描到成为攻击目标。

>
> 老王点评：如果你没有谨慎处置你的安全，就是为攻击者买单了。
>
>
>

### 为在 Chrome 中禁止第三方 Cookie，谷歌向监管部门妥协

谷歌去年年初宣布，未来两年内将逐步淘汰 Chrome 浏览器对第三方 Cookie 的支持，然后计划推广其“隐私沙箱”技术。但这招致了广告发布商和广告技术公司的激励反对，称谷歌的“隐私沙箱”将限制他们收集网络用户信息的能力，从而影响他们提供更具价值广告的能力，而谷歌则可以利用该优势强化其竞争地位。英国反垄断部门认为谷歌保护用户隐私的努力，不能以减少竞争为代价。谷歌近日再次向英国反垄断部门 [做出承诺](https://www.gov.uk/government/news/cma-secures-improved-commitments-on-google-s-privacy-sandbox)，以解决一些剩余的担忧，并澄清其可以使用的数据的内部限制。谷歌表示，将确保“隐私沙箱”的开发方式适用于整个生态系统。如果这些承诺被接受，也将适用于全球其他地区。

>
> 老王点评：大家都在争抢用户的隐私，然而作为隐私的主人却对此没有发言权。
>
>
>


C++ 控制台格式化打印技巧

Summary: 下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。

下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。

# C++ 控制台格式化打印技巧

>
> 下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。
>
>
>

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

我写文章主要是为了给自己写文档。我在编程时非常健忘，所以我经常会写下有用的代码片段、特殊的特性，以及我使用的编程语言中的常见错误。这篇文章完全切合我最初的想法，因为它涵盖了从 C++ 控制台格式化打印时的常见用例。

像往常一样，这篇文章带有大量的例子。除非另有说明，代码片段中显示的所有类型和类都是 `std` 命名空间的一部分。所以当你阅读这段代码时，你必须在类型和类的前面加上`using namespace std;`。当然，该示例代码也可以在 [GitHub](https://github.com/hANSIc99/cpp_output_formatting) 上找到。

### 面向对象的流

如果你曾经用过 C++ 编程，你肯定使用过 [cout](https://en.cppreference.com/w/cpp/io/cout)。当你包含 `<iostream>` 时，[ostream](https://en.cppreference.com/w/cpp/io/basic_ostream) 类型的 `cout` 对象就进入了作用域。这篇文章的重点是 `cout`，它可以让你打印到控制台，但这里描述的一般格式化对所有 [ostream](https://en.cppreference.com/w/cpp/io/basic_ostream) 类型的流对象都有效。`ostream` 对象是 `basic_ostream` 的一个实例，其模板参数为 `char` 类型。头文件 `<iosfwd>` 是 `<iostream>` 的包含层次结构的一部分，包含了常见类型的前向声明。

类 `basic_ostream` 继承于 `basic_ios`，该类型又继承于 `ios_base`。在 [cppreference.com](https://en.cppreference.com/w/cpp/io) 上你可以找到一个显示不同类之间关系的类图。

`ios_base` 类是所有 I/O 流类的基类。`basic_ios` 类是一个模板类，它对常见的字符类型进行了<ruby> 模板特化 <rt>  specialization </rt></ruby>，称为 `ios`。因此，当你在标准 I/O 的上下文中读到 `ios` 时，它是 `basic_ios` 的 `char` 类型的模板特化。

### 格式化流

一般来说，基于 `ostream` 的流有三种格式化的方法。

1. 使用 `ios_base` 提供的格式标志。
2. 在头文件 `<iomanip>` 和 `<ios>` 中定义的流修改函数。
3. 通过调用 `<<` 操作符的 [特定重载](https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt)。

所有这些方法都有其优点和缺点，通常取决于使用哪种方法的情况。下面显示的例子混合使用所有这些方法。

#### 右对齐

默认情况下，`cout` 占用的空间与要打印的数据所需的空间一样大。为了使这种右对齐的输出生效，你必须定义一个行允许占用的最大宽度。我使用格式标志来达到这个目的。

右对齐输出的标志和宽度调整只适用于其后的行。

```
cout.setf(ios::right, ios::adjustfield);
cout.width(50);
cout << "This text is right justified" << endl;
cout << "This text is left justified again" << endl;

```

在上面的代码中，我使用 `setf` 配置了右对齐的输出。我建议你将位掩码 `ios::adjustfield` 应用于 `setf`，这将使位掩码指定的所有标志在实际的 `ios::right` 标志被设置之前被重置，以防止发生组合碰撞。

#### 填充空白

当使用右对齐输出时，默认情况下，空的地方会用空白字符填充。你可以通过使用 `setfill` 指定填充字符来改变它：

```
cout << right << setfill('.') << setw(30) << 500 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 3000 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 24500 << " pcs" << endl;

```

代码输出如下：

```
...........................500 pcs
..........................3000 pcs
.........................24500 pcs

```

#### 组合

想象一下，你的 C++ 程序记录了你的储藏室库存。不时地，你想打印一份当前库存的清单。要做到这一点，你可以使用以下格式。

下面的代码是左对齐和右对齐输出的组合，使用点作为填充字符，可以得到一个漂亮的列表：

```
cout << left << setfill('.') << setw(20) << "Flour" << right << setfill('.') << setw(20) << 0.7 << " kg" << endl;
cout << left << setfill('.') << setw(20) << "Honey" << right << setfill('.') << setw(20) << 2 << " Glasses" << endl;
cout << left << setfill('.') << setw(20) << "Noodles" << right << setfill('.') << setw(20) << 800 << " g" << endl;
cout << left << setfill('.') << setw(20) << "Beer" << right << setfill('.') << setw(20) << 20 << " Bottles" << endl;

```

输出：

```
Flour...............................0.70 kg
Honey..................................2 Glasses
Noodles..............................800 g
Beer..................................20 Bottles

```

### 打印数值

当然，基于流的输出也能让你输出各种变量类型。

#### 布尔型

`boolalpha` 开关可以让你把布尔型的二进制解释转换为字符串：

```
cout << "Boolean output without using boolalpha: " << true << " / " << false << endl;
cout << "Boolean output using boolalpha: " << boolalpha << true << " / " << false << endl;
```

以上几行产生的输出结果如下：

```
Boolean output without using boolalpha: 1 / 0
Boolean output using boolalpha: true / false

```

#### 地址

如果一个整数的值应该被看作是一个地址，那么只需要把它投到 `void*` 就可以了，以便调用正确的重载。下面是一个例子：

```
unsigned long someAddress = 0x0000ABCD;
cout << "Treat as unsigned long: " << someAddress << endl;
cout << "Treat as address: " << (void*)someAddress << endl;
```

该代码产生了以下输出：

```
Treat as unsigned long: 43981
Treat as address: 0000ABCD

```

该代码打印出了具有正确长度的地址。一个 32 位的可执行文件产生了上述输出。

#### 整数

打印整数是很简单的。为了演示，我使用 `setf` 和 `setiosflags` 来指定数字的基数。应用流修改器 `hex`/`oct` 也有同样的效果。

```
int myInt = 123;

cout << "Decimal: " << myInt << endl;

cout.setf(ios::hex, ios::basefield);
cout << "Hexadecimal: " << myInt << endl;

cout << "Octal: " << resetiosflags(ios::basefield) <<  setiosflags(ios::oct) << myInt << endl;

```

**注意：** 默认情况下，没有指示所使用的基数，但你可以使用 `showbase` 添加一个。

```
Decimal: 123
Hexadecimal: 7b
Octal: 173

```

#### 用零填充

```
0000003
0000035
0000357
0003579

```

你可以通过指定宽度和填充字符得到类似上述的输出：

```
cout << setfill('0') << setw(7) << 3 << endl;
cout << setfill('0') << setw(7) << 35 << endl;
cout << setfill('0') << setw(7) << 357 << endl;
cout << setfill('0') << setw(7) << 3579 << endl;

```

#### 浮点值

如果我想打印浮点数值，我可以选择“固定”和“科学”格式。此外，我还可以指定精度：

```
double myFloat = 1234.123456789012345;
int defaultPrecision = cout.precision(); // == 2

cout << "Default precision: " << myFloat << endl;
cout.precision(4);
cout << "Modified precision: " << myFloat << endl;
cout.setf(ios::scientific, ios::floatfield);
cout << "Modified precision & scientific format: " << myFloat << endl;
/* back to default */
cout.precision(defaultPrecision);
cout.setf(ios::fixed, ios::floatfield);
cout << "Default precision & fixed format:  " << myFloat << endl;

```

上面的代码产生以下输出：

```
Default precision: 1234.12
Modified precision: 1234.1235
Modified precision & scientific format: 1.2341e+03
Default precision & fixed format:  1234.12

```

#### 时间和金钱

通过 `put_money`，你可以用正确的、与当地有关的格式来打印货币单位。这需要你的控制台能够输出 UTF-8 字符集。请注意，变量 `specialOffering` 以美分为单位存储货币价值。

```
long double specialOffering = 9995;

cout.imbue(locale("en_US.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout  << showbase << put_money(specialOffering) << endl;

```

`ios` 的 `imbue` 方法让你指定一个地区。通过命令 `locale -a`，你可以得到你系统中所有可用的地区标识符的列表。

```
$99.95
99,950€
99,950₽

```

（不知道出于什么原因，在我的系统上，它打印的欧元和卢布有三个小数位，对我来说看起来很奇怪，但这也许是官方的格式。）

同样的原则也适用于时间输出。函数 `put_time` 可以让你以相应的地区格式打印时间。此外，你可以指定时间对象的哪些部分被打印出来。

```
time_t now = time(nullptr);
tm localtm = *localtime(&now);

cout.imbue(locale("en_US.UTF-8"));
cout << "en_US : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << "de_DE : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout << "ru_RU : " << put_time(&localtm, "%c") << endl;

```

格式指定符 `%c` 会打印一个标准的日期和时间字符串：

```
en_US : Tue 02 Nov 2021 07:36:36 AM CET
de_DE : Di 02 Nov 2021 07:36:36 CET
ru_RU : Вт 02 ноя 2021 07:36:36

```

### 创建自定义的流修改器

你也可以创建你自己的流。下面的代码在应用于 `ostream` 对象时插入了一个预定义的字符串：

```
ostream& myManipulator(ostream& os) {
    string myStr = ">>>Here I am<<<";
    os << myStr;
    return os;
}

```

**另一个例子：** 如果你有重要的事情要说，就像互联网上的大多数人一样，你可以使用下面的代码在你的信息后面根据重要程度插入感叹号。重要程度被作为一个参数传递：

```
struct T_Importance {
     int levelOfSignificance;
};

T_Importance importance(int lvl){
    T_Importance x = {.levelOfSignificance = lvl };
    return x;
}

ostream& operator<<(ostream& __os, T_Importance t){

    for(int i = 0; i < t.levelOfSignificance; ++i){
        __os.put('!');
    }
    return __os;
}

```

这两个修饰符现在都可以简单地传递给 `cout`：

```
cout << "My custom manipulator: " << myManipulator << endl;

cout << "I have something important to say" << importance(5) << endl;

```

产生以下输出：

```
My custom manipulator: >>>Here I am<<<

I have something important to say!!!!!

```

### 结语

下次你再纠结于控制台输出格式时，我希望你记得这篇文章及其 [速查表](https://opensource.com/downloads/cout-cheat-sheet)。

在 C++ 应用程序中，`cout` 是 [printf](https://opensource.com/article/20/8/printf) 的新邻居。虽然使用 `printf` 仍然有效，但我可能总是喜欢使用 `cout`。特别是与定义在 `<ios>` 中的修改函数相结合，会产生漂亮的、可读的代码。

---

via: <https://opensource.com/article/21/11/c-stdcout-cheat-sheet>

作者：[Stephan Avenwedde](https://opensource.com/users/hansic99) 选题：[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/) 荣誉推出


如何在 Fedora Linux 上安装 Brave 浏览器

# 如何在 Fedora Linux 上安装 Brave 浏览器

[Brave](https://brave.com/) 是一个越来越 [流行于 Linux](https://itsfoss.com/best-browsers-ubuntu-linux/) 和其他操作系统的网页浏览器。对默认情况下阻止广告和跟踪的关注，以及对 Chrome 扩展的支持，使 Brave 成为 Linux 用户的热门选择。

在本教程中，你将学习如何在 Fedora Linux 上安装 Brave。你还将学习如何更新和删除它。

本教程已经在 Fedora 上进行了测试，但它也应该适用于基于 Red Hat 的其他发行版，如 CentOS、Alma Linux 和 Rocky Linux。

### 在 Fedora Linux 上安装 Brave 浏览器

你需要在这里用命令行的方式来安装 Brave。

作为先决条件，请确保 `dnf-plugin-core` 已经安装。

```
sudo dnf install dnf-plugins-core

```

下一步是将 Brave 仓库添加到你的系统中：

```
sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/

```

你还应该导入并添加仓库密钥，这样你的系统就会信任来自这个新添加的仓库的软件包：

```
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

```

现在可以开始了。用这个命令安装 Brave：

```
sudo dnf install brave-browser

```

**当被要求确认你的选择时按 `Y`**。根据你的网速，这应该需要几秒钟或几分钟的时间。如果 DNF 的缓存最近没有更新，甚至可能需要更长时间。

安装完成后，在系统菜单中寻找 Brave 并从那里启动。

### 在 Fedora Linux 上更新 Brave 浏览器

你已经为浏览器添加了一个仓库，并且导入了它的密钥。你的系统信任来自这个仓库的软件包。

因此，当有新的 Brave 浏览器发布并提供给这个仓库时，你会通过常规的系统升级得到它。

换句话说，你不需要做任何特别的事情。只要保持你的 Fedora 系统更新，如果有 Brave 的新版本，它应该会随着系统更新自动安装。

### 从 Fedora Linux 中删除 Brave 浏览器

如果你因为某些原因不喜欢 Brave，你可以从你的系统中删除它。只需使用 `dnf remove` 命令：

```
sudo dnf remove brave-browser

```

当询问时按 `Y`：

你也可以选择禁用 `brave-browser-rpm-release.s3.brave.com_x86_64_.repo` 或者从 `/etc/yum/repos.d` 中完全删除这个文件，虽然这并不是必须的。

我希望这个快速提示对你有帮助。如果你有任何问题或建议，请让我知道。

---

via: <https://itsfoss.com/install-brave-browser-fedora/>

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


硬核观察 #469 玩家组织成功让多年前关服的 PS3 游戏复活了

Summary: 更多：• 龙芯为 GCC 增加 LoongArch 支持 • GitHub 出现长达数小时的服务瘫痪

# 硬核观察 #469 玩家组织成功让多年前关服的 PS3 游戏复活了

### 玩家组织成功让多年前关服的 PS3 游戏复活了

玩家组织 PSONE 研究出了一个办法，[复活](https://www.videogameschronicle.com/news/motorstorms-ps3-multiplayer-has-been-resurrected-by-a-fan-group/) 了越野竞速游戏《摩托风暴》的服务器，恢复了多人游戏功能。《摩托风暴》是一款 PS3 游戏，在 2007 年 3 月发售。10 年前，这款游戏的服务器下线，也就是说玩家不能使用这款游戏的多人游戏功能，而想要在游戏里收集奖杯的玩家必须在线才行。PS3 和 Xbox 360 是第一个大规模应用网络元素的世代，而近年来该世代多款游戏的服务器停止服务，也让一些怀旧的玩家扼腕不已。

>
> 老王点评：如果是开源的，那就不会有这种窘境。
>
>
>

### 龙芯为 GCC 增加 LoongArch 支持

几个月来，龙芯一直致力于为 Linux 内核提供 LoongArch 支持，从新的 CPU ISA 功能到 [复制大量](/article-13721-1.html) 现有的 MIPS64 代码并加入新的 ID，程度不一。同时，他们也一直在编译器/工具链方面工作。最近，LoongArch 对 GNU Binutils 的 [支持已经被合并](/article-13920-1.html) 了，而今天又发出一组补丁，用于提供 GCC 编译器支持。不过 GCC 12 目前的重点是修复错误，因此对 LoongArch 的支持可能要到 2023 年的 GCC 13 才会出现在主线上。

>
> 老王点评：虽然国外对 LoongArch 的褒贬不一，但是可喜的是龙芯在一直前进。
>
>
>

### GitHub 出现长达数小时的服务瘫痪

GitHub 在美东时间下午 3 点 45 分左右开始出现问题，Git 操作、API 请求、拉取请求和 GitHub 的行动、包和页面等功能都受到影响。开发人员报告了 500 错误，GitHub 说大多数服务是“性能下降”[状态](https://www.githubstatus.com/)，而不是不可用的瘫痪状态。GitHub 上有超过 1 亿个存储库，故障影响到了这些存储库的组织。去年，由于错误的设定导致该服务瘫痪并使其短暂下线了两个小时。

>
> 老王点评：当全世界的开源都主要依赖于 GitHub 进行时，这就成了关键故障点。
>
>
>


PHP 终于摆脱了危险的公共汽车系数 2

Summary: 今年早些时候，PHP 贡献者 Joe Watkins 认为，PHP 的公共汽车系数是一个惊人的数字，即 2！

# PHP 终于摆脱了危险的公共汽车系数 2

鉴于最近发生的事件，它也许没有 [维基百科上关于这个想法的文章](https://en.wikipedia.org/wiki/Bus_factor) 中所说的那么“黑色幽默”，但理论仍然是一样的 —— 你目前的团队中要有多少成员突然消失才能使你的组织或项目陷入停顿？这个数字被称为“<ruby>   公共汽车系数  <rp>  （ </rp> <rt>  bus factor </rt> <rp>  ） </rp></ruby>”，也就是说，有多少人被公共汽车撞到才会导致项目停止运作。今年早些时候，[PHP 贡献者 Joe Watkins](https://github.com/krakjoe) 认为，[PHP 的公共汽车系数是一个惊人的数字，即 2！](https://blog.krakjoe.ninja/2021/05/avoiding-busses.html)

Watkins 当时写道：“也许只要有两个人一觉醒来决定干点别的事情，PHP 项目就会缺乏足够的专业技术和资源，从而无法以目前的形式和速度向前发展，”他点名了 [Dmitry Stogov](https://twitter.com/dstogov?lang=en) 和 [Nikita Popov](https://twitter.com/nikita_ppv?lang=en)。

上周，幸好 Nikita Popov 没有被公共汽车撞到，但他确实决定不再担任 PHP 相关的职务，而是将他的活动集中在 [LLVM](https://llvm.org/) 上。

>
> PHP 太大了，不能失败，特别是由于 WordPress 继续依赖它。所以很高兴看到这个新的基金会形成。
>
>
> —— Richard MacManus (@ricmac) [2021 年 11 月 22 日](https://t.co/3wulgfM0eq)
>
>
>

同样值得庆幸的是，Watkins 在今年早些时候的文章让一些人看到了眼前的情况，正如他在本周的 [后续文章](https://blog.krakjoe.ninja/2021/11/2-1.html) 中写到的，JetBrains（Popov 的雇主）当时就启动 PHP 基金会的问题联系了他。

本周，随着 Popov 的离职，[PHP 基金会](https://opencollective.com/phpfoundation) [正式启动](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/)，目标是资助兼职/全职开发人员在 2022 年从事 [PHP 核心](https://github.com/php/php-src) 的开发工作。

在启动时，将会有 10 家公司（[Automattic](https://automattic.com/)、[Laravel](https://laravel.com/)、[Acquia](https://www.acquia.com/)、[Zend](https://www.zend.com/)、[Private Packagist](https://packagist.com/)、[Symfony](https://symfony.com/)、[Craft CMS](https://craftcms.com/)、[Tideways](https://tideways.com/)、[PrestaShop](https://www.prestashop.com/) 和 [JetBrains](https://www.jetbrains.com/)）作为其支持者加入 PHP 基金会 ，预计每年将筹集 30 万美元，JetBrains 每年出资 10 万美元。同时，该基金会是通过“<ruby> 基金会即服务 <rp>  （ </rp> <rt>  foundation-as-a-service </rt> <rp>  ） </rp></ruby>”供应商 [Open Collective](https://opencollective.com/) 发起的，只有不到 700 名捐款人就已经为该基金会筹集了 4 万多美元。

创建基金会而不是坚持现状的主要好处之一，不仅仅是增加了公共汽车系数 —— 基金会将使对 PHP 的影响多样化。Watkins 指出，在 PHP 的大部分历史中，Dmitry Stogov 的雇主 Zend 一直是主要的财务支持者，因此对该语言的发展方向有一定的影响。同样，JetBrains 在雇用 Popov 开发 PHP 的时候，也增加了影响力。

“说他们没有影响到整个语言的发展方向是不正确的。事实上，他们影响了。语言的许多部分和它的内部结构都是由 Zend 推动的，由他们的预算和专门的工程师促成的，”Watkins 写道。“同样，在 Nikita 为 JetBrains 工作的相对较短的时间内，他们也有某种影响，如果说他们没有，那就是说 Nikita 在受雇于 JetBrains 之前和期间的产出没有区别。”

虽然 Watkins 说，所有的事情都是光明正大的，并且经过了标准的程序来确保如此，但影响力还是不容置疑的，“基金会代表了一种推动语言发展的新方式。它为我们提供了提高公共汽车系数的机制，使我们永远不会再面临我们今天面临的问题，以及过去面临的问题。”

基金会以 [临时管理机构](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/#foundation_administration) 启动，成员包括 Popov、Stogov 和 Watkins。而且 JetBrains 写道，[php-src](https://github.com/php/php-src) 的任何贡献者都可以向基金会 [申请](https://forms.gle/mk52v6FphaYr6yMS8) 资助，申请期立即开始，持续 28 天。至于未来会发生什么，PHP 基金会将在前两年把工作重点放在雇用开发人员从事 PHP 核心工作上。至于目前的 RFC 流程，JetBrains 写道，“不会改变，语言的决定将始终留给 PHP 内部社区。”

>
> 我为 PHP 基金会做出了贡献，如果你能做到的话，一定会鼓励你也这样做。每一点都能让基金会更强大，并帮助我们的语言和社区！#phpc
>
>
> —— Matt Trask (@matthewtrask) [2021 年 11 月 22 日](https://t.co/rWyWC5Dz50)
>
>
>

---

via: <https://thenewstack.io/php-gets-a-foundation-to-work-on-php-core/>

作者：[Mike Melanson](https://thenewstack.io/author/mike-melanson/) 选题：[wxy](https://github.com/wxy) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](/article-14028-1.html) 荣誉推出


在 FreeDOS 上安装和移除软件包

Summary: 熟悉 FreeDOS 软件包管理器 FDIMPLES 。

取名的人是跟用户有仇是吧

# 在 FreeDOS 上安装和移除软件包

>
> 熟悉 FreeDOS 软件包管理器 FDIMPLES 。
>
>
>

在 Linux 上，你可能已经使用过 “软件包管理器” 来安装或移除软件包。例如，在 Debian Linux 上的默认软件包管理器是 `deb` 命令，在 Fedora Linux 上的默认软件包管理器是 `dnf` 命令。 但是你知道 FreeDOS 也有一个软件包管理器吗？

### 安装软件包

FreeDOS 1.3 RC4 发行版包含了很多极好的你可以使用的程序和应用程序。不过，我们不会默认安装其中的全部的程序 —— 我们不想过度地填充你的硬盘驱动器空间，尤其是在一个较老的系统上，可能仅有几百兆字节容量的硬盘驱动器。当你安装 FreeDOS 时，如果你选择 “Plain DOS system” 选项，你将发现你的 FreeDOS 系统是非常小的（大约 20 MB 大小）。

不过，要安装新的软件包很容易。在命令行中运行 `FDIMPLES` 程序。因为 DOS 是 *不区分大小写* 的，所以，你可以使用大写字母或小写字母来输入这个命令： `fdimples` 。（`fdimples` 与 `FDIMPLES` 或 `FDImples` 等同）

*在 FreeDOS 1.3 RC4 上的 FDIMPLES 软件包管理器（运行在 QEMU 之中）（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

FDIMPLES 是 "**F**ree**D**OS **I**nstaller - **M**y **P**ackage **L**ist **E**ditor **S**oftware" 的首字母缩略词，是一个交互式软件包管理器。FDIMPLES 读取安装介质来识别可以安装或移除的软件包。如果你看到一个不同的菜单，它显示 “Installed!” ，但是，不让你安装其它的软件的话，请检查你系统中是否有 FreeDOS 的 CD-ROM 的安装介质。在物理机器上，你将需要将 CD-ROM 插入 CD-ROM 驱动器；在诸如 QEMU 或 VirtualBox 之类的虚拟机器上，你需要将安装 FreeDOS 的 CD-ROM 的安装介质与虚拟机器关联在一起。

*如果你仅看到一条 “Installed!” 的信息，检查 CD-ROM 是否已经加载（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

让我们假设你想安装一些可以让你听音乐文件或其它声音文件的软件。使用向上箭头和向下箭头按键来导航到菜单中的 **声音工具** 项。这是一个针对声音和音乐程序的 *软件包组* 。

*在 FDIMPLES 中突出显示声音软件包组（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

要选择这个组中的所有软件包，在你的键盘上按下空格键。如果你决定安装这个组中的某个软件包，按下 `Tab` 按键来移动到 *软件包列表* 方框面板，接下来使用空格键来选择每个软件包。

*通过按下空格键来选择一个组中的所有的软件包（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以继续选择你想要安装的其它的软件包或软件包组。当你选择好一切的东西后，使用 “Tab” 按键来高亮显示 “OK” 按键，并按下空格键按键。

*当你准备好安装时，突出显示 “Ok” 按钮（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

`FDIMPLES` 接下来会安装你所选择的所有的软件包。如果你仅选择几个小型的软件包，这可能只需要花费片刻的时间，或者，如果你要求安装很多大型的软件包，它可能会花费数分钟的时间。当 `FDIMPLES` 安装每个软件包时，`FDIMPLES` 会输出安装状态。在安装完后，`FDIMPLES` 退出到命令行之中，以便你可以回去继续工作。

*当 FDIMPLES 安装软件包时，FDIMPLES 会显示安装过程，并在完成安装后自动地退出（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 移除软件包

如果你安装了一个软件包，但是后来发现你不想要它了怎么办？在 `FDIMPLES` 中移除软件包也同样容易。

就像安装软件包一样，启动 `FDIMPLES` ，使用箭头键导航到包含你想要移除的软件包的组。例如，如果我想卸载一些我先前安装的音乐播放器软件包，我将导航到 “Sound Tools” 软件包组。

*导航到你想要移除的软件包组（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

为一次移除整个软件包组，你可以在你想要移除的软件包组上按下空格键来取消选择它们。但是，在这里让我们假设我只是想移除几个我不需要的软件包，像音频 CD 播放器 “CDP”。（我没有任何的真实的音乐 CD 光盘）。为移除 CDP ，敲击 `Tab` 按键来移动到软件包列表方框面板，接下来使用空格键来取消选择 CDP 软件包。这会在该软件包上移除 “X” 标志。

*取消选择一个软件包来移除它（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以继续取消选择你想要移除的其它的软件包或软件包组。当你选择一切的东西后，使用 `Tab` 按键来突出显示 “OK” 按钮，并按下空格键按键。`FDIMPLES` 将移除你取消选择的软件包，然后自动地返回到命令行之中。

*FDIMPLES 移除软件包，然后返回到命令行之中（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

在 FreeDOS 中。我们包含很多的软件包，遍及各种各样的软件包组。使用 `FDIMPLES` 来安装你需要的软件。请随意实验！如果你决定你不想要保留一个软件包了，你可以移除它，并为其它的软件包来释放所占用的磁盘空间。

---

via: <https://opensource.com/article/21/6/freedos-package-manager>

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

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


Summary: 更多：• 印度学者在版权诉讼中支持 Sci-Hub 和 LibGen • Nextcloud 向欧盟投诉微软捆绑 OneDrive 和 Teams 的反竞争行为

能够快速而可靠地进行啮齿动物操作,hhh

为何不是爬行动物呢

能够快速而可靠地进行啮齿动物操作

哈哈，一种幽默嘛

鼠标(老鼠)是啮齿动物

来自111.18.143.203的 Chrome Mobile 95.0|Android 12 用户

# 硬核观察 #470 2021 年了，还有人为 Windows 3.1 写了个 PS/2 鼠标驱动？

### 2021 年了，还有人为 Windows 3.1 写了个 PS/2 鼠标驱动？

一位开发者为 Windows 3.1 提供了新的鼠标驱动程序 vmwmouse ，而他这么做的原因是为了确保当微软古老的操作系统作为虚拟机运行时，能够快速而可靠地进行啮齿动物操作。[开发者写道](https://github.com/NattyNarwhal/vmwmouse)，“在VMware 中运行 Windows 3.1，但对不得不手动释放和点入鼠标光标感到烦恼？希望能像现代操作系统一样，直接将光标移入和移出，而不需要按下 `Ctrl+Alt` 释放鼠标？”所以，他开发了这个驱动程序。他表示，主要的困难是在 USB 出现之前，没有办法发送鼠标的绝对坐标，而 Windows 3.x 来自 USB 之前的时代。

>
> 老王点评：额，这真是一种无用而有趣的开发工作。
>
>
>

### 印度学者在版权诉讼中支持 Sci-Hub 和 LibGen

2020 年 12 月，一些大型全球出版社对 Sci-Hub 和 LibGen 的所有者 Alexandra Elbakyan 提起版权侵权诉讼。Sci-Hub 是一个拥有超过 8500 万篇研究论文的数字图书馆，而 LibGen 是一个链接聚合器，提供免费的学术文章、书籍和杂志。

七名印度的社会科学研究人员在互联网自由基金会（IFF）的法律支持下 [递交](https://internetfreedom.in/social-science-researchers-move-delhi-high-court-to-protect-libgen-scihub/) 了干预申请。他们指出，由于收费过高，他们无法获得所需的论文和学术作品，只能依靠 Sci-Hub 和 LibGen，强调任何封锁这些网站的决定会对其研究产生不利影响，侵犯了研究人员获取信息的权利。印度德里高等法院 [正在审理](https://www.trtworld.com/magazine/indian-academics-throw-weight-behind-sci-hub-and-libgen-in-landmark-case-51780) 研究人员和学生使用 Sci-Hub 和 LibGen 是否合法。

>
> 老王点评：知识是自由的，前提是这些知识没有印刷在这些需要花钱订阅的期刊上。
>
>
>

### Nextcloud 向欧盟投诉微软捆绑 OneDrive 和 Teams 的反竞争行为

Nextcloud 已正式向欧盟委员会 [投诉](https://ec.europa.eu/info/departments/competition_en) 微软的反竞争行为，即将其 OneDrive 云、Teams 和其他服务与 Windows 10 和 11 捆绑在一起。根据欧盟竞争法，自我推荐本身并不违法，但如果一家公司滥用其市场支配地位，就会违反法律。Nextcloud 指出，微软利用其看门人的地位从而直接阻挡了其他云服务厂商。微软在欧盟的市场份额已经增长到 66%，而当地供应商的市场份额从 26% 下降到 16%。一些开源的非营利组织和企业也加入了 Nextcloud 的投诉。

>
> 老王点评：微软现在恐怕已经忘记了上世纪 90 年代 IE 垄断案被处罚的历史了。
>
>
>

### 一句话回音

* 在 [#464](/article-14013-1.html) 期我们报道过，Rust 审核团队集体辞职。现在据称问题是由 [Ashley Williams](https://www.rust-lang.org/governance/teams/core) 引发的，她本来应该负责执行行为准则，但却同时不受准则的约束。她此前担任过 Node.js 基金会的董事，[曾被指控](https://news.ycombinator.com/item?id=28633113) 多次违反 Node 基金会的行为准则。


任何人都可以通过这三个简单的步骤编译开源代码

Summary: 你不需要知道如何写或读代码就可以编译它。

任何人都不要轻易去编译一个软件，否则会带来一堆这辈子也无法解决也解决不了的系统报错

依赖是个大问题，我就从没编译成功过。源码包就像是医院里等待器官移植的病人，都是缺胳膊少腿或是缺心少肺的。

来自广东广州的 Chrome Mobile 71.0|Android 6.0 用户

不要安装到系统目录下，新建一个目录保存二进制文件

你不需要知道如何写或读代码就可以编译它。

# 任何人都可以通过这三个简单的步骤编译开源代码

>
> 你不需要知道如何写或读代码就可以编译它。
>
>
>

安装软件的方法有很多，但开源让你有了一个其他地方所没有的选择：你可以自己编译代码。编译源代码的经典三步流程是：

```
$ ./configure
$ make
$ sudo make install

```

由于有了这些命令，你可能会惊讶地发现，你不需要知道如何写代码，甚至不需要读代码就可以编译它。

### 安装用来构建软件的命令

由于这是你第一次进行编译，所以有一个一次性的准备步骤，即安装用于构建软件的命令。具体来说，你需要一个编译器。编译器（比如 GCC 或 LLVM）可以将像这样的源代码：

```
#include <iostream>

using namespace std;

int main() {
  cout << "hello world";
}

```

变成 *机器语言*，即 CPU 用来处理信息的指令。你可以看一下机器代码，但它对你来说没有任何意义（除非你是一个 CPU）。

你可以使用你的软件包管理器安装 GNU 编译器集合（GCC）和 LLVM 编译器，以及其他在 Fedora、CentOS、Mageia 和类似发行版上进行编译的基本命令：

```
$ sudo dnf install @development clang

```

在 Debian、Elementary、Mint 和类似发行版上命令如下：

```
$ sudo apt install build-essential clang

```

在你的系统设置好后，有几项你每次编译软件时都要重复进行的任务：

1. 下载源代码
2. 展开源代码的存档文件
3. 编译

你已经有了所有你需要的命令，所以现在你需要一些软件来编译。

### 1、下载源代码

获得一个应用程序的源代码和获得任何可下载的软件一样。你得去一个网站或一个代码管理网站，如 GitLab、SourceForge 或 GitHub。 通常情况下，开源软件既有正在进行的工作（“<ruby> 当前 <rt>  current </rt></ruby>”或 “<ruby> 每夜 <rt>  nightly </rt></ruby>”）的构建版本，也有打包的“<ruby> 稳定 <rt>  stable </rt></ruby>”发布版本。在可能的情况下，使用稳定版本，除非你有理由相信，或者对代码有足够的了解，能够在出现故障时修复。术语“稳定版”表明这些代码经过了测试，而且该应用程序的程序员对代码有足够的信心，从而将其打包成 `.zip` 或 `.tar` 归档，给了它一个官方编号，有时还有一个发布名称，然后提供给一般的非程序员公众下载。

在这个练习中，我使用 [Angband](https://rephial.org/)，一个开源的（GPLv2）ASCII 地牢猎手游戏。这是一个简单的应用程序，其复杂程度刚好可以说明你在自己编译软件时需要考虑的问题。

从 [网站](https://rephial.org/) 上下载其源代码。

### 2、展开源代码的存档文件

源代码通常是以存档的形式交付的，因为源代码通常由多个文件组成的。在与之交互之前，你必须先解压，不管它是一个 tarball、一个 zip 文件、一个 7z 文件，还是其他完全不同的东西。

```
$ tar --extract --file Angband-x.y.z.tar.gz

```

一旦解压缩后，就把目录切换到解压缩的目录，然后看一看。通常在目录的顶层有一个 `README` 文件。这个文件，一般会包含你需要做什么来编译代码的指导。`README` 通常包含关于代码的这些重要方面的信息：

* **语言**：代码使用的是什么语言（例如，C、C++、Rust、Python）。
* **依赖性**：你需要在你的系统上安装其他什么的软件，以便这个应用程序能够构建和运行。
* **说明**：你构建该软件所需要采取的明确步骤。偶尔，他们会在一个专门的文件中包含这些信息，这个文件被直观地称为 `INSTALL`。

如果 `README` 文件中不包含这些信息，可以考虑向开发者提交一份错误报告。你不是唯一需要介绍一下源代码的人。不管他们有多么丰富的经验，每个人都会对从未见过的源代码感到陌生，而文档是很重要的！

Angband 的维护者给出了在线说明的链接，描述了如何编译代码。这份文件还描述了你需要安装哪些其他软件，尽管它并没有确切地说明这一点。该网站说，“有几个不同的可选构建的前端（GCU、SDL、SDL2 和 X11），你可以使用诸如 `--enable-sdl`，`--disable-x11` 的参数配置。”这可能对你来说看起来像天书，但你经常编译代码后就会习惯。无论你是否理解 X11 或 SDL2 是什么，它们都是你经过几个月定期编译代码后经常看到的要求。你会对大多数软件需要其他软件库的想法感到适应，因为它们建立在其他技术之上。不过在这种情况下，Angband 非常灵活，无论是否有这些可选的依赖，都可以进行编译，所以现在，你可以假装没有额外的依赖。

### 3、编译代码

构建代码的典型步骤是：

```
$ ./configure
$ make
$ sudo make install

```

这些是使用 [Autotools](https://opensource.com/article/19/7/introduction-gnu-autotools) 构建的项目的步骤，该框架是为了规范源代码的交付方式而创建的。然而，还有一些其他框架（如 [Cmake](https://opensource.com/article/21/5/cmake)），它们需要不同的步骤。当项目没有遵循 Autotools 或 Cmake 框架时，它们往往会在 `README` 文件中提醒你。

### 配置

Angband 使用 Autotools，所以现在是编译代码的时候了!

在 Angband 目录中，首先，运行随源码一起提供的配置脚本：

```
$ ./configure

```

这一步将扫描你的系统，找到 Angband 正确构建所需的依赖性。有些依赖是非常基本的，没有它们你的电脑就无法运行，而有些则是专门的。在这一过程结束时，该脚本会给你一份关于它所发现的东西的报告：

```
[...]
configure: creating ./config.status
config.status: creating mk/buildsys.mk
config.status: creating mk/extra.mk
config.status: creating src/autoconf.h

Configuration:

  Install path:    /usr/local
  binary path:     /usr/local/games
  config path:     /usr/local/etc/angband/
  lib path:        /usr/local/share/angband/
  doc path:        /usr/local/share/doc/angband/
  var path:        (not used)
  (save and score files in ~/.angband/Angband/)

-- Frontends --
- Curses            Yes
- X11               Yes
- SDL2              Disabled
- SDL               Disabled
- Windows           Disabled
- Test              No
- Stats             No
- Spoilers          Yes

- SDL2 sound        Disabled
- SDL sound         Disabled

```

有些输出可能对你有意义，有些可能没有。无论如何，你可能注意到 SDL2 和 SDL 被标记为 “Disabled”，Test 和 Stats 都被标记为 “None”。虽然这些信息是负面的，但这并不一定是一件坏事。从本质上讲，这就是**警告**和**错误**之间的区别。如果配置脚本遇到了会阻止它构建代码的东西，它就会用一个错误来提醒你。

如果你想稍微优化一下你的构建，你可以选择解决这些负面信息。通过搜索 Angband 文档，你可能会确定 Test 和 Stats 实际上并不是你感兴趣的（它们是 Angband 专用于开发者的选项）。然而，通过在线研究，你可能会发现 SDL2 将是一个很好的功能。

要解决编译代码时的依赖问题，你需要安装缺少的组件和该缺少的组件的 *开发库*。换句话说，Angband 需要 SDL2 来播放声音，但它需要 `SDL2-devel`（在 Debian 系统上称为 `libsdl2-dev`）来构建。用你的软件包管理器安装这两个组件：

```
$ sudo dnf install sdl2 sdl2-devel

```

再试一下配置脚本：

```
$ ./configure --enable-sdl2
[...]
Configuration:
[...]
- Curses                                  Yes
- X11                                     Yes
- SDL2                                    Yes
- SDL                                     Disabled
- Windows                                 Disabled
- Test                                    No
- Stats                                   No
- Spoilers                                Yes

- SDL sound                               Disabled
- SDL2 sound                              Yes

```

### 制作（编译）

一旦一切配置完毕，运行 `make` 命令：

```
$ make

```

这通常需要一段时间，但它提供了很多视觉反馈，所以你会知道代码正在被编译。

### 安装

最后一步是安装你刚刚编译的代码。安装代码并没有什么神奇之处。所做的就是复制很多文件到非常具体的目录中。无论你是从源代码编译还是运行花哨的图形安装向导，都是如此。由于这些代码会被复制到系统级目录，你必须有 root（管理）权限，这是由 `sudo` 命令授予的。

```
$ sudo make install

```

### 运行该应用程序

一旦应用程序被安装，你就可以运行它。根据 Angband 文档，启动游戏的命令是 `angband`，所以可以试试：

```
$ angband

```

### 编译代码

无论是在我的 Slackware 台式电脑上，还是在我的 CentOS 笔记本电脑上，我都会使用 NetBSD 的 [pkgsrc](https://opensource.com/article/19/11/pkgsrc-netbsd-linux) 系统编译我自己的大部分应用程序。我发现，通过自己编译软件，我可以对应用程序中包含的功能、如何配置、使用的库版本等有自己的想法。这很有意义，它帮助我跟上了新的版本，而且因为我有时会在这个过程中发现错误，它帮助我参与了很多不同的开源项目。

你很少会只有编译软件的一种方式可选，大多数开源项目同时提供源代码（这就是为什么它被称为“开源”）和可安装包。是否从源代码编译是你自己的选择，也许是因为你想要最新版本中还没有的新功能，或者只是因为你喜欢自己编译代码。

### 家庭作业

Angband 可以使用 Autotools 或 Cmake，所以如果你想体验另一种构建代码的方式，可以试试这个：

```
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

```

你也可以尝试用 LLVM 编译器而不是 GNU 编译器集合（GCC）进行编译。现在，我把这个问题留给你自己去研究（提示：尝试设置 `CC` [环境变量](https://opensource.com/article/19/8/what-are-environment-variables)）。

一旦你完成了对 Angband 的源代码和至少几个地牢的探索（你已经赢得了一些休息时间），可以看看其他一些代码库。很多人都会使用 Autotools 或 Cmake，而其他人可能会使用不同的东西。看看你能构建的成果！

---

via: <https://opensource.com/article/21/11/compiling-code>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[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/) 荣誉推出


用 Flatseal 图形化管理 Flatpak 应用的权限

Summary: 就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。

就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。

# 用 Flatseal 图形化管理 Flatpak 应用的权限

新版本的安卓系统让你对单个应用的访问和权限有了更精细的控制。这一点至关重要，因为许多应用曾经（正在）滥用系统权限。下载一个天气应用，它将要求访问你的通话记录，好像这与天气有什么关系一样。

为什么我在说安卓应用的权限？因为这可能与此应用的功能有关。

你可能已经知道 [什么是 Flatpak](https://itsfoss.com/what-is-flatpak/)。这些都是沙盒应用，可以选择访问系统资源，如文件存储、网络接口等。

就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。默认情况下，这要用 [Flatpak 命令](https://itsfoss.com/flatpak-guide/)，不是每个人都能适应它。

因此，有一个叫做 Flatseal 的小工具，可以让你在应用层面上管理和控制 Flatpak 的权限。

### Flatseal

[Flatseal](https://flathub.org/apps/details/com.github.tchx84.Flatseal) 是一个图形化的工具，用于审查和修改你的 Flatpak 应用的权限。这使得事情比通过命令要容易得多。

Flatseal 会列出所有已安装的 Flatpak 应用。当你选择一个应用，你可以看到所有的权限。很容易发现已启用的权限，如果你愿意，你可以禁用它。

例如，Ksnip 是一个屏幕截图工具，但它也有联网权限，可以用 Imgur 等在线服务分享截图。如果你不需要它，你可以禁用它。

如果不出意外，看看一个应用有什么样的权限是很有趣的。例如，你可以看到 ksnip 有在后台运行的能力（这样你就可以用键盘快捷键进行截图）。

### 安装 Flatseal

既然管理的都是 Flatpak，那么 Flatseal 作为一个 Flatpak 包来使用也是合理的。

在 Fedora 上，如果已经添加 Flathub 仓库，你可以从软件中心安装它。

否则，命令行总是可以帮助你。

```
flatpak install flathub com.github.tchx84.Flatseal

```

### 你真的需要控制权限吗？

这是一个主观的问题，完全取决于你。值得庆幸的是，到目前为止，桌面 Linux 应用并不像 Android 应用那样滥用权限。

一个普通用户通常不会去管这些事情，这完全没问题。

然而，如果你对这些事情过于谨慎，或者你找到一个很好的理由，Flatseal 提供了一个简单的选择。

你还应该小心你所改变的权限。如果你禁用了对应用的运作至关重要的权限，在使用应用时肯定会造成麻烦。

所以，总的来说，这不是一个普通用户要使用的东西。

---

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

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


硬核观察 #471 首部 RISC-V 手机有望在明年面世，中国公司研制

Summary: 更多：• 一批安卓网银木马已被下载 30 万次 • 英特尔建立了一个装满了旧芯片的秘密安全实验室

# 硬核观察 #471 首部 RISC-V 手机有望在明年面世，中国公司研制

### 首部 RISC-V 手机有望在明年面世，中国公司研制

[矽速科技](https://www.sipeed.com/) 最近在 Twitter 上发布了一则 [短视频](https://twitter.com/SipeedIO/status/1457529282134089734)，演示了运行 Android 10 的 RISC-V RV64 智能手机原型。首批商用机型预计将在 2022 年发布。大约一年前，阿里巴巴成功通过玄铁开发板将 Android 10 移植到 RISC-V 上。而矽速科技演示的 Android 10 设备采用了玄铁 C901 开发板和 7 英寸触摸屏。此外，基于 RV64 的手机应该比任何当代基于 ARM 的芯片更容易移植完整的 Linux。

>
> 老王点评：非常期待，但是也希望不仅仅硬件出色，软件也一样适配出色。
>
>
>

### 一批安卓网银木马已被下载 30 万次

安全研究人员刚刚公布了一批 [安卓网银木马](https://www.threatfabric.com/blogs/deceive-the-heavens-to-cross-the-sea.html)，在被谷歌应用商店清理之前，其下载量就已经超过了 30 万次。在二维码扫描仪、PDF 扫描仪、加密货币钱包等表象的掩饰下，这些恶意应用会在暗中窃取用户登录凭证、双因素身份验证码、记录按键以及屏幕截图。研究人员发现了四个独立的安卓恶意软件家族。它们其利用了多种技巧，来规避谷歌应用商店的检测机制。如这些恶意软件会先以一款良性应用的面目示人，但在用户安装后，它们就会开始诱骗用户下载并安装带有“附加功能”的更新包。

>
> 老王点评：简直是防不胜防，不能随便下载软件和盲目信任商店的检测。
>
>
>

### 英特尔建立了一个装满了旧芯片的秘密安全实验室

英特尔称，几年前当其工程师被迫在 eBay 上搜索旧芯片以解决影响特定配置的问题时，他们建立了一个 [长期保留（LTR）实验室](https://www.zdnet.com/article/intel-has-a-secret-security-lab-full-of-old-hardware-to-hunt-for-bugs/)，以存放那些已经停产的旧芯片。如今 LTR 实验室容纳了 2800 个平台的芯片，其中一些最古老的可以追溯到 2012 年。明年的目标是将容量提高到 6000 个平台。这个自 2019 年开始运作的实验室建立在哥斯达黎加的一个英特尔没有透露的秘密地点。英特尔工程师们可以全天候远程请求访问这些硬件，能够在几分钟内启动特定的配置。

>
> 老王点评：虽然这像是一个博物馆，但是可以为很多已经停产的芯片提供支持。
>
>
>


使用 Linux 的 diff 和 patch 对文件进行协作

Summary: 如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己试图描述需要修改的地方，那么你会喜欢 diff 和 patch 的。

# 使用 Linux 的 diff 和 patch 对文件进行协作

>
> 如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己试图描述需要修改的地方，那么你会喜欢 `diff` 和 `patch` 的。
>
>
>

我编辑过很多文本文件。有时是代码。其他时候是角色扮演游戏（RPG）、编程书籍或一般信件的书面文字。有时候，做一个修改，而能让我的协作者把我的修改和他们原来写的东西进行比较就更好了。许多人默认使用办公套件（如 [LibreOffice](https://opensource.com/article/21/9/libreoffice-tips)）的注释或更改跟踪功能。不过有时更简单的工具更有意义，为此，你可以看看像 `diff` 和 `patch` 这样的工具的编程历史，它们为跟踪和应用共享文件的变化提供了标准化的格式。

即使对于简单的文件，在同步两个文件时也有复杂性。一些项目被改变，另一些被保留，新的内容被添加，还有一些保持不变，但被移到文件的不同位置。如果接受所有的变化，并且用新文件替换旧文件，就很难复制变化。它也是整体不透明的。如果变化很多，就很难挑出到底发生了什么变化。

通过 `diff` 命令，你可以创建一个文件变化的记录，通过 `patch` 你可以在旧版本上“重放”这些变化，使其与新版本保持一致。

### 设置

假设你和我正在合作编写一个描述如何泡茶的文件。

到目前为止，文件 `tea.md` 包含原始的复制粘贴来的内容：

```
烧开水。
加热茶壶。
在茶壶中加入茶和水。
在茶壶上放置一个茶叶滤网。
浸泡 6 分钟。
将茶倒入杯中。
加入牛奶。

```

这似乎很合理，但总有一些优化可以做，所以你把文件发给我改进。为了澄清泡茶过程，我把文件复制为`tea-revision.md`，并进行编辑，最后是这样的：

```
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

```

正如预期的那样，一些项目（“烧开水”和“将茶倒入杯中”）没有变化，而其他行（“加热茶壶”）则有增加。有些行是全新的，有些行是相同的，但顺序不同。

### 创建一个差异

`diff` 工具会显示两个文件之间的差异。有几种不同的方法来查看结果，但我认为最清楚的是 `—unified`（简写为 `-u`）视图，它显示哪些行被增加或减少了。以任何方式改变的行都被视为先减后增的行。默认情况下，`diff` 将其输出打印到终端。

向 `diff` 提供旧文件，然后是新文件：

```
$ diff --unified tea.md tea-revised.md
--- tea.md      2021-11-13 10:26:25.082110219 +1300
+++ tea-revised.md      2021-11-13 10:26:32.049110664 +1300
@@ -1,7 +1,7 @@
+在烤箱的抽屉中加热茶壶。
 烧开水。
-加热茶壶。
-在茶壶中加入茶和水。
-在茶壶上放置一个茶叶滤网。
-浸泡 6 分钟。
+将茶叶放入茶叶滤网。
+将滤网和水加入茶壶。
+浸泡 6 分钟。用茶壶罩保温。
 将茶倒入杯中。
-加入牛奶。
+可以选择加入温牛奶。

```

行首的加号（`+`）表示在旧文件中增加了一些内容。行首的减号（`-`）表示被删除或改变的行。

### 用 diff 创建一个补丁

补丁文件就是将 `diff —unified` 命令的输出放到一个文件中。你可以用标准的 Bash 重定向来做这件事：

```
$ diff -u tea.md tea-revised.md > tea.patch

```

该文件的内容与输出到终端的内容完全相同。我喜欢在 [Emacs](https://opensource.com/article/20/12/emacs) 中查看补丁文件，它对每一行进行颜色编码，取决于它是被添加还是被减去。

### 用补丁应用修改

一旦我有了补丁文件，我就可以把它发给你，让你审查，并且可以选择应用到你的旧文件中。你可以用 `patch` 命令来应用一个补丁。

```
$ patch tea.md tea.patch

```

增加了一些行，减少了一些行，最后，你得到了一个与我的版本相同的文件：

```
$ cat tea.md
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

```

你可以给一个文件打多少次补丁，这是没有限制的。你可以对我的修改进行迭代，生成一个新的补丁，然后发给我审核。发送修改内容而不是结果，可以让每个贡献者审查修改的内容，决定他们要保留或删除的内容，并准确地记录过程。

### 安装

在 Linux 和 macOS 上，你已经有了 `diff` 和 `patch` 命令。在 Windows 上，你可以通过 [Cygwin](https://cygwin.com) 获得 `diff` 和 `patch`，或者使用 Chocolatey 搜索 [diffutils](https://community.chocolatey.org/packages/diffutils) 和 [patch](https://community.chocolatey.org/packages/patch)。

如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己需要 *描述* 需要修改的地方，那么你会喜欢 `diff` 和 `patch`。一个结构严谨的文件，如代码或以行为单位的 [Markdown](https://opensource.com/article/19/9/introduction-markdown)，很容易进行差异比较、补丁和维护。

---

via: <https://opensource.com/article/21/11/linux-diff-patch>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[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/) 荣誉推出


创建节日问候的 4 种开源方式

Summary: 开源工具和资源为任何节日提供了创造性的可能性。

不来个Blender建模圣诞树的教程?还有Audacity剪个圣诞歌的教程?

开源工具和资源为任何节日提供了创造性的可能性。

# 创建节日问候的 4 种开源方式

>
> 开源工具和资源为任何节日提供了创造性的可能性。
>
>
>

节日再次来临，今年我决定用 [开源方式](https://opensource.com/open-source-way) 来庆祝。就像一个特别有名的假期忙人一样，我有一个长长的节日任务清单（我打算再三检查）：制作一张贺卡（带地址的明信片）寄给家人和朋友，用合适的节日歌曲制作照片蒙太奇或视频，并装饰我的虚拟办公室。有很多开源的应用和资源使我的工作更容易。以下是我使用的东西。

### Inkscape 和剪贴画

我最喜欢的资源之一是 [FreeSVG.org](http://freesvg.org)（前身是 [Openclipart.org](http://Openclipart.org)）。这里很容易找到你喜欢的节日，包括光明节、圣诞节、新年等等。这些剪贴画都是由像你我这样的用户贡献的，并且是 CC0 版权，所以你甚至不需要提供署名。当然，在可能的情况下，我还是会注明出处，以确保 FreeSVG 和它的艺术家们获得知名度。

下面是 FreeSVG 的一些剪贴画的例子：

[openclipart.com](http://openclipart.com)， [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/)

使用 [Inkscape](https://opensource.com/article/18/1/inkscape-absolute-beginners) 的文本路径工具，我在图片上添加了我自己的文字，我把它用在卡片上。如果再做些工作，我还可以把这个图形用在一些定制的杯子或餐垫上。

Don Watkins， [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)

### 文字处理

[LibreOffice](https://opensource.com/article/21/9/libreoffice-tips) Writer 可以用来制作贺卡和海报，然后在你的家中使用或分发给你的朋友和家人。使用 LibreOffice Calc 创建一个关于你的家人和朋友的数据库，然后利用这一资源，用邮件合并功能简化制作邮件标签的过程。

### 创作共用的图片和图形

[search.creativecommons.org](https://search.creativecommons.org/) 上也有艺术品。注意许可证类型：对任何需要署名的东西给予适当的致谢。这张图片（[“Thanksgiving Dealies”](https://www.flickr.com/photos/34067077@N00/4014605524)）来自创作共用图片搜索。它的作者是 [Martin Cathrae](https://www.flickr.com/photos/34067077@N00)，并在 [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich) 下授权，因此它可以在相同的许可证下被改编、重复使用和分享。

[Martin Cathrae](https://www.flickr.com/photos/34067077@N00)， [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich)

我拿着这张相同的图片，用 [GIMP](https://opensource.com/content/cheat-sheet-gimp) 在上面添加了一些我自己的文字。你可以用 Inkscape 来做同样的事情。

Don Watkins，[CC BY-SA 4.0](https://creativecommons.org/licenses/by/4.0/)

<ruby> 创作共用 <rt>  Creative Commons </rt></ruby>提供了大量的图片，在你的下一次 [视频会议](https://opensource.com/article/20/5/open-source-video-conferencing) 期间，可以这些图片作为一个节日背景。

### 视频和实时流媒体

你也可以把这些图片与你自己的一些图片结合起来，用 [OpenShot](https://opensource.com/article/17/5/using-openshot-video-editor) 视频编辑器创建一个简短的视频剪辑。你可以通过使用 Audacity 录制一个单独的音轨，轻松添加旁白。可以在 Audacity 中添加声音效果，保存到文件中，并导入到 OpenShot 视频编辑器的配乐中。寻找 [合法的背景音乐](https://opensource.com/article/20/1/what-creative-commons) 来添加到你的视频中。

使用 [开源广播软件（OBS）](https://opensource.com/article/21/4/obs-youtube) 来直播你的假期聚会。使用 OBS 可以轻松地为你的朋友和家人呈现引人入胜的假期节目，或者你可以将节目另存为 Matroska 或 MP4 文件以供日后观看。

### 阅读材料

<ruby> 古腾堡计划 <rt>  Project Gutenberg </rt></ruby>是一个用来分享免费节日阅读材料的很好的来源。[狄更斯的《圣诞颂歌》](https://www.gutenberg.org/ebooks/19337) 就是这样一种资源，它可以在网上轻松阅读，也可以下载成 EPUB 或你最喜欢的电子阅读器的格式。你还可以找到免版税的阅读材料，如 [Librivox](https://librivox.org/the-feast-of-lights-by-emma-lazarus/) 的“光的盛宴”，采用 MP3 格式，因此可以下载并在你喜欢的浏览器或媒体播放器中播放。

### 节日乐趣

节日里最重要的一点是，它们是与朋友和家人一起的放松和欢乐时光。如果你有家人对计算机感到好奇，花点时间与他们分享一些你最喜欢的开源资源。

（题图来自：[creativecommons.org](https://search.creativecommons.org/photos/388c71f3-0419-4e4b-a6a7-2db7e1a8bbc8)，作者：Sunny M5）

---

via: <https://opensource.com/article/21/11/open-source-holiday-greetings>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[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/) 荣誉推出


硬核观察 #472 出租你的空闲算力来为应用程序和服务付费

Summary: 更多：• 德国政府支持“公共资金，公共代码”倡议 • 摆脱苹果之后，OpenPrinting 发布了新的 CUPS

# 硬核观察 #472 出租你的空闲算力来为应用程序和服务付费

### 出租你的空闲算力来为应用程序和服务付费

将来自个人的分布式计算能力汇聚起来的概念并不新鲜，很早以前就有类似 SETI 这样的项目用来搜索外星信号和用于医药研究方面的蛋白质计算。一家名为 [Massive](https://joinmassive.com/) 的初创公司正在努力将这一概念“带入现代社会，作为向用户收费或用广告获得收入的一种替代方式”。他们将其描述为类似于用户电脑的 Airbnb。该公司称有大约 5 万名台式电脑用户（节点）已经选择加入其服务。这些节点在加入前需选择其计算能力可用于的服务，如 AI 学习等分布式任务。

>
> 老王点评：这件事本身不稀奇，如果能合规发展，对浪费的算力和电力也算是一个不错的出口。
>
>
>

### 德国政府支持“公共资金，公共代码”倡议

在 9 月的选举之后，德国的新联合政府将 [接受](https://www.neowin.net/news/germany039s-new-coalition-government-backs-the-public-money-public-code-initiative/) “<ruby> 公共资金，公共代码 <rt>  Public Money, Public Code </rt></ruby>”（PMPC）倡议，该倡议已经被欧洲自由软件基金会（FSFE）宣传了好几年。PMPC 认为任何使用纳税人的钱创建的软件都应该以自由软件的形式发布，呼吁立法确保公共资助的软件在自由及开源软件（FOSS）许可证下发布。

>
> 老王点评：似乎这是理所应当的？但能接受并实行的政府并不多。
>
>
>

### 摆脱苹果之后，OpenPrinting 发布了新的 CUPS

当被苹果收购的 CUPS 的创始人在 2019 年离开苹果公司时，苹果公司在 CUPS 上的工作就基本停止了。今年早些时候，CUPS 的创始人建立的 OpenPrinting [接管](https://www.phoronix.com/scan.php?page=news_item&px=Apple-No-More-CUPS) 了 CUPS 打印服务器的开发，因为苹果不再有兴趣管理这个开源的打印服务器。本周推出的 [CUPS 2.4](https://github.com/OpenPrinting/cups/releases/tag/v2.4.0) 是 OpenPrinting 指导下的第一个主要版本。主要变化有：初步支持 OAuth 2.0 客户端和 AirPrint。CPUS 的上一个主要版本发布于 2019 年。

>
> 老王点评：当一个开源项目依赖于某一个商业企业时，其兴衰存亡取决于企业的兴趣，而当其开源开放时，总会有关心它的用户支持它的发展。
>
>
>


Chrome 与 Chromium 有何不同？

Summary: 在这篇文章中，我们将深入了解它们，并在根据一些基准对它们进行比较。

在这篇文章中，我们将深入了解它们，并在根据一些基准对它们进行比较。

# Chrome 与 Chromium 有何不同？

Chrome 浏览器是最流行的网页浏览器。无论你是否喜欢使用它，Chrome 都能提供良好的用户体验。

尽管它可以在 Linux 上使用，但它不是一个开源的网页浏览器。

而且，如果你喜欢 Chrome 的外观和感觉，但又想使用一个开源的解决方案，Chromium 是一个选择。

但是，Chrome 浏览器不是基于 Chromium 的吗？（是的。）而且，它也是由谷歌开发的吧？（也是的。）

那么，Chrome 和 Chromium 之间有什么区别呢？在这篇文章中，我们将深入了解它们，并介绍一些对它们进行比较的基准。

### 用户界面

Chrome 和 Chromium 的用户界面非常相似，除了一些细微的区别。

例如，我注意到 Chrome 的系统标题栏和边框一开始就被默认禁用了。相比之下，在我测试的时候，Chromium 默认启用了它们。

你还可以注意到在 Chrome 的地址栏里有一个分享按钮，而在 Chromium 上却没有。

这并不是大的视觉差异，而只是根据现有的功能进行了一系列的 UI 调整。所以，你可以预期它们的用户体验类似，而在底层有所不同。如果你在意用户界面，这两款浏览器应该都很适合你。

### 开源与专有代码

Chromium 是完全开源的，这意味着任何人都可以（根据许可证）按照自己的意愿使用和修改代码。你可以在其 [GitHub 镜像](https://github.com/chromium/chromium) 上查看其源代码。

这就是为什么你会发现有许多 [基于 Chromium 的浏览器](https://news.itsfoss.com/chrome-like-browsers-2021/)，如 Brave、Vivaldi 和 Edge。

有这么多的选择，你可以选择你最喜欢的那个。

另一方面，Chrome 在 Chromium 中加入了刚刚专有的代码，使 Chrome 成为了专有浏览器。例如，人们可以复刻 Brave，但不能复刻谷歌 Chrome，而限制使用其中的谷歌特定代码/工作。

对于终端用户来说，开源与否并不影响用户体验。然而，对于一个开源项目，你可以得到更多的透明度，而不需要依靠公司来沟通他们打算改变什么，以及他们在浏览器上做什么。

所以，是的，如果你不喜欢专有代码，Chromium 就是你的选择。

### 功能差异

谷歌不希望其竞争对手拥有类似的能力，这并不奇怪。因此，谷歌一直在 [锁定 Chromium 并在其中禁用了很多谷歌特有的能力](https://news.itsfoss.com/is-google-locking-down-chrome/)。

因此，你会发现这两个浏览器的能力有一些差异。

不仅如此，由于 Chromium 是开源的，你可能会注意到一些不便之处。别担心，我将在下面指出其中的关键差异。

| Chrome | Chromium |
| --- | --- |
| 有签到和同步功能 | 无签到和同步功能 |
| 支持媒体编解码器以使用 Netflix | 需要手动安装编解码器 |

对于初学者来说，在 Chromium 中不再能使用由谷歌支持的登录/同步功能。它曾经支持签到和同步，直到谷歌决定将其从开源项目中删除。

接下来，Chrome 内置了对高质量媒体编解码器的支持。因此，你可以加载来自 Netflix 的内容。但是，在 Chromium 中没有这些。

从技术上讲，Chromium 并不包括 *Widevine 内容解密模块*。因此，你需要手动安装所需的编解码器，以使大部分东西都能工作。

不过，你在这两个浏览器上你都可以播放苹果音乐等平台的内容，应该不会有任何问题。

### 安装及最新更新

你可以在几乎任何平台上安装 Chrome。Linux 也不例外。只需前往其官方网站，抓取 DEB/RPM 包即可快速安装。安装后的应用程序也会自动更新。

有几个平台上安装 Chromium 并不那么简单。曾经有一段时间，一些 Linux 发行版将 Chromium 作为默认浏览器。那是过去的日子了。

即使在 Windows 上，Chromium 的安装和更新也不像 Chrome 那样顺利。

在 Linux 上，安装 Chromium 则完全是另一回事。像 Ubuntu 这样的流行发行版把它打包成一个沙盒式的 Snap 应用程序。

即使你试图用终端安装它，希望能从 APT 库中得到它，但它又是一个 Snap。

使用 Snap 软件包，你可能会面临与你的自定义桌面主题相融合的问题。Snap 应用程序的启动时间也会更长。

而且，如果你构建它并手动安装 Chromium，你就得手动更新它。

### 隐私角度

Chrome 对大多数用户来说应该足够好了。但是，如果你担心你的隐私，Chrome 会追踪使用信息和一些与浏览有关的信息。

最近，[谷歌推出了一个新的 Chrome API](https://www.forbes.com/sites/zakdoffman/2021/10/02/stop-using-google-chrome-on-windows-10-android-and-apple-iphones-ipads-and-macs/)，可以让网站检测到你什么时候闲着，什么时候不闲着。虽然这是一个巨大的隐私问题，但并不是唯一的问题。

谷歌不断试验新的追踪用户的方法；例如，正如 [EFF](https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea) 所指出的那样，谷歌的 FLoC 实验并不受欢迎。

从技术上讲，他们声称他们想增强用户的隐私，而同时仍然提供广告机会。然而，就目前而言，这是一个不可能实现的任务。

相比之下，Chromium 在隐私方面的表现应该要好得多。然而，如果你讨厌你的浏览器中有任何与谷歌有关的东西，即使是最轻微的遥测，你应该试试 [UnGoogled Chromium](https://github.com/Eloston/ungoogled-chromium)。

它是 Chromium，但没有任何谷歌组件。

### 浏览器性能

有各种各样的浏览器基准，可以让你了解到一个浏览器处理任务的能力如何。

考虑到网站上的高级网站应用和资源密集型的 JavaScript，如果一个网页浏览器的性能不好，当你打开许多活动的标签时，你的体验就会明显很糟糕。

[JetStream 2](https://webkit.org/blog/8685/introducing-the-jetstream-2-benchmark-suite/) 和 [Speedometer 2](https://webkit.org/blog/8063/speedometer-2-0-a-benchmark-for-modern-web-app-responsiveness/) 是两个流行的基准，可以给你处理各种任务和响应能力的性能估计。

除此之外，我还试用了 [Basemark Web 3.0](https://web.basemark.com/)，它也是测试各种指标并给你一个综合分数。

总体而言，Chrome 在此获胜。

但是，值得注意的是，在运行浏览器时，你的系统资源和后台进程会对性能产生不同的影响。因此，也要考虑到这一点。

### 你应该选择哪个？

之所以存在对浏览器的选择，是因为用户喜欢不同的东西。Chrome 提供了一个良好的功能集和用户体验。如果你以某种形式使用由谷歌提供的服务，Chrome 是一个简单的推荐。

然而，如果你担心隐私和专有代码，Chromium 或 UnGoogled Chromium，或任何其他基于 Chromium 的浏览器，如 Brave，可以是一个不错的选择。

这就是我在比较 Chrome 和 Chromium 时的全部看法。我愿意接受你的意见。评论区都是你的。

---

via: <https://itsfoss.com/chrome-vs-chromium/>

作者：[Ankush Das](https://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/) 荣誉推出


最佳 Linux 桌面 DAW（数字音频工作站）

Summary: 我的目的是帮助你找出 Linux 上最好的音乐 DAW。

没有Audacity差评

我的目的是帮助你找出 Linux 上最好的音乐 DAW。

# 最佳 Linux 桌面 DAW（数字音频工作站）

<ruby> 数字音频工作站 <rt>  Digital Audio Workstation </rt></ruby>（DAW）可以让你录音、混音和制作音乐。对于商业用途，有几个主流的选择可以考虑，它们通常被认为是行业标准。

像 Steinberg 的 Nuendo/Cubase、ProTools、Ableton Live 和 FL Studio 这样成熟的音乐 DAW 是最流行（也是最昂贵）的解决方案。然而，它们并不能用于 Linux。

因此，当用在 Linux 上时，你只能根据现有的选项做出不同的选择。而在这里，我的目的是帮助你找出 Linux 上最好的音乐 DAW。

### 在使用 Linux 上的 DAW 之前要记住的事情

尽管你可以达到与 Windows/MacOS 系统相同的效果，但在选择使用 Linux 的 DAW 之前，你应该知道一些要点。

如果你是专业人士，并且使用过 Linux，你可能已经知道了这些。但是，对于新的 Linux 用户，这可以帮助你做出决定：

* 许多音频接口没有正式支持 Linux。所以，你可能要在开始之前检查一下兼容性和音频设置过程。
* 流行的音频插件可能无法直接工作。你必须得寻找替代品或尝试使用 Wine（这是一个耗时的过程）。
* 即插即用的情况可能不存在。各种任务都需要手动设置。

总的来说，在 Linux 中使用 DAW 时，有一些先决条件。它可能不能简单地安装然后就能开始制作音乐。所以，在选择 Linux 作为 DAW 的首选平台之前，你需要了解这些。

请注意，有几个 [可用于 Linux 的音频编辑器](https://itsfoss.com/best-audio-editors-linux/)，但不是所有的都可以作为一个成熟的 DAW 使用。

现在你知道了这些注意事项，让我提一下目前最好的 Linux DAW。

>
> 非 FOSS 警报！
>
>
> 这里提到的应用并不全是开源的。它们被列在这里是因为它们在 Linux 上可用，而这篇文章的重点是 Linux。
>
>
>

虽然可用于 Linux 的 DAW 可能有许多，但为了确保你得到最好的硬件/软件兼容性，以及易于使用的界面，我们将我们的列表限制在流行的选项上。

### 1、Ardour

[Ardour](https://ardour.org/) 是最流行的开源 DAW，可用于 Linux。它也可用于 Windows 和 macOS。

它是音乐家、音频工程师和作曲家的一个合适选择。你可以获得编辑乐谱和录制/混合歌曲的所有基本能力。

它自带几个插件支持。但是，你需要通过在插件管理器中手动添加它们到混音器中。另外，你可以选择通过指定路径来添加外部 VST3 插件。如果你想从中提取音频或同步，Ardour 还支持视频时间线。

#### 在 Linux 中安装 Ardour

与其他付费版 DAW 不同，你不需要支付高昂的价格就可以使用它。你所需要做的就是购买一个低至 1 美元/月的订阅，只要你的订阅是有效的，你就可以继续访问这个程序和它的更新。

如果你对订阅不感兴趣，你可以选择一次性付款，这可以让你获得小版本更新和下一个主要版本（取决于你支付的金额）。

最重要的是，如果你喜欢测试即将到来的功能和改进，你还可以访问其开发（或每日）构建版本。

对于 Linux 发行版，它提供了一个 `.run` 文件，你可以轻松地从终端启动。

### 2、LMMS

[LMMS](https://lmms.io/lsp/) 是一个自由开源的 DAW，可用于 Linux 和其他平台。

与其他一些 DAW 相比，LMMS 在专业人员所需的专业方面可能有所欠缺。

然而，如果你刚刚开始创作音乐，或者需要一些无需购买/订阅就可以使用的东西，它应该可以满足你的一些功能需求。换句话说，它是一个合适的歌曲编辑 DAW。

如果你是从另一个平台上的 DAW 迁移来的，它的用户界面可能不太容易熟悉。但是，当你习惯了它，它就很容易使用了。

它还支持钢琴音符标签，以帮助你获得音乐制作体验。

#### 在 Linux 中安装 LMMS

你可以选择下载一个 AppImage 文件，它可以在你选择的任何 Linux 发行版上工作。它的配置相当简单，所以你只需要指定一个工作目录就可以开始了。

### 3、Bitwig Studio

[Bitwig Studio](https://www.bitwig.com/) 是流行的主流音乐 DAW 之一，也支持 Linux。与本列表中的其他 DAW 相比，Bitwig 提供了更好的跨平台支持和硬件集成。

即使你可能坚持使用 Linux 进行音乐制作，但拥有跨平台的支持，以便在你出门在外也可以继续你的工作，对一些人来说这也是一个重要的因素。

Bitwig 包括各种创意工具来处理音频文件和信号。所以，它完全可以满足专业要求。

### 在 Linux 中安装 Bitwig Studio

它提供了一个传统的 DEB 包用于安装。你可以在“演示模式”下免费使用它，但它不允许你保存和导出任何东西。Bitwig Studio 在 [Flathub](https://flathub.org/apps/details/com.bitwig.BitwigStudio) 上还有一个 [Flatpak](https://itsfoss.com/what-is-flatpak/) 包。

要解锁所有的功能，你需要以 **$399** 的价格购买它。

### 4、REAPER

[Reaper](https://www.reaper.fm) 是一个可用于 Linux 的经济型 DAW。它提供了一个简单的用户界面和所有的基本功能。

和 Bitwig Studio 相比，它可能没有提供很多开箱即用的插件和功能，但它应该足以满足大多数通常的需求，如调制、自动化、使用 VST 插件等等。

尽管我没有亲自使用过它，但 Reaper 声称它是高度可定制的，并提供了与各种硬件的良好兼容性。

#### 在 Linux 中安装 Reaper

与其他选择不同，Reaper 提供了一个 tar 包，你需要解压和安装。它包括一个脚本文件。因此，当你解压后，在该文件夹中打开终端或在终端中进入该文件夹，然后用以下命令执行该脚本：

```
./install-reaper.sh

```

当你安装它时，该脚本也会生成一个用于卸载的脚本。所以，在安装时一定要仔细选择文件夹，并确保在需要时能找到它。

在你需要购买它之前，你可以没有任何限制的免费使用它，最长可达 60 天。所以，如果你想在购买 DAW 之前彻底测试一下，我觉得这是一件非常好的事情。

个人使用的费用是 **$60**，如果你需要用于商业用途，则需要 **$225**。

### 总结

不幸的是，找不到太多可用于 Linux 的 DAW 。你可以尝试用 Wine 来运行一些流行的音乐 DAW，但我不确定成功率有多少。

无论是哪种情况，这里提到的这些对于大多数用户来说应该是绰绰有余了。

你喜欢哪种 DAW 用于音乐制作？请在下面的评论中告诉我你的想法。

---

via: <https://itsfoss.com/best-daw-linux/>

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


Summary: 更多：• 地球还有三分之一以上人口从未使用互联网 • Linux 供应商固件服务提供了 4000 万次下载

# 硬核观察 #473 在 Edge 上下载 Chrome 会弹出警告，还嘲讽 Chrome 是 2008 年的

### 在 Edge 上下载 Chrome 会弹出警告，嘲讽 Chrome 是 2008 年的

当 Windows 11 用户在 Edge 浏览器上尝试安装 Chrome 的时候，微软就会弹出 [一条警告](https://www.neowin.net/news/microsoft-says-its-own-edge-browser-is-more-trustworthy-than-so-2008-google-chrome/)，试图阻止用户下载：“微软 Edge 运行在与 Chrome 相同的技术上，并额外提供来自微软的信任”。在消息中还包括一个名为“现在安全使用浏览器”的按钮，它将用户重定向到一个网页，强调 Edge 的性能、安全和其他优于其他浏览器的优点。甚至有时候微软还会嘲讽说，“这个浏览器还在 2008 年！你知道什么是新浏览器吗？微软的 Edge。”

>
> 老王点评：哈哈哈哈，这种浏览器“大战”也真是服了。
>
>
>

### 地球还有三分之一以上人口从未使用互联网

国际电信联盟的 [数据显示](https://www.itu.int/zh/mediacentre/Pages/PR-2021-11-29-FactsFigures.aspx)，使用过互联网的人数从 2019 年估计的 41 亿猛增到 2021 年的 49 亿，但世界上仍有 37% 的人口（即 29 亿人）从未使用过互联网。即使在被算作“互联网用户"的 49 亿人中，也有数亿人是通过共享设备，或使用明显限制其连接效用的连接速度偶尔得到上网机会。

>
> 老王点评：没想到还有这么多人从未使用过互联网！
>
>
>

### Linux 供应商固件服务提供了 4000 万次下载

Linux 供应商固件服务通过 `fwupd` 工具向 Linux 用户提供系统和组件的固件文件以刷入闪存，今天它跨越了一个新的 [里程碑](https://www.phoronix.com/scan.php?page=news_item&px=LVFS-40-Million-Downloads)，已经提供了超过 4000 万次的固件文件下载。而在今年 3 月份才刚刚到达 2500 万次。这可能是由于安全问题导致的 BIOS 更新增加，以及更多的 OEM/ODM 加入了进来。该服务目前已经包括来自 121 个供应商的 6,555 个组件，5,583 个固件文件（还有 1,938 个私有文件）。

>
> 老王点评：这个数据很好，但是仍然希望更多的硬件厂商的固件能加入到其中。
>
>
>


Vivaldi 5.0 发布！

Vivaldi的翻译功能有毒，就这么说吧，我现在用的是Vivaldi，它老是想把当前这篇文章翻译成阿尔巴尼亚语

# Vivaldi 5.0 发布！

>
> 对于那些喜欢在桌面和安卓系统上进行定制和增加功能的用户来说，Vivaldi 5.0 是一个令人兴奋的版本。
>
>
>

Vivaldi 是一个基于 Chromium 的网页浏览器，可用于 Linux（及其他平台）。它因其增强功能和多任务特性而广为人知。这使它成为 [Linux 上最好的网页浏览器](https://itsfoss.com/best-browsers-ubuntu-linux/#:~:text=Mozilla%20Firefox&text=Firefox%20is%20the%20default%20web%20browser%20for%20most%20Linux%20distributions.) 之一，特别是对于高级用户来说。

随着 Vivaldi 5.0 的发布（以纪念其 5 周年），它推出了一系列重大功能增加和改进。

让我们来看看 Vivaldi 的新版本有什么特点。

### Vivaldi 5.0 的新功能

请注意，Vivaldi 除了其用户界面之外大部分是 [开源](https://vivaldi.com/source/) 的。然而，他们倾向于把重点放在 Linux 平台的改进上肯定是件好事。

以下是你可以在 Vivaldi 5.0 发现的变化：

#### Vivaldi 主题

主题一直是 Vivaldi 最好的功能之一，不仅仅是因为它有各种预装的主题，而是你可以定制你的主题或编辑预装的主题。

它的主题编辑器已经更新，有更多可以定制的选项。你现在可以编辑颜色、边角、背景和设置来定制主题。以前，你必须单独编辑背景图片，而现在新的主题编辑器应该很方便使用。

而且，并不止于此，你已经创建好了你的主题？

现在，你可以使用新的“<ruby> 导出主题 <rt>  Export Theme </rt></ruby>”选项轻松地生成一个 ZIP 文件，与任何人分享你的主题。同样地，你也可以导入一个主题。

更进一步地，你可以把你新设计的主题提交到他们的 [社区画廊](https://themes.vivaldi.net)。你也可以从那里找到其他用户的主题，并安装它们。

#### 新的翻译面板

在 [Vivaldi 4.0 发布时](https://news.itsfoss.com/vivaldi-4-0-release/)，他们引入了由 [Lingvanex](https://lingvanex.com) 提供的内置翻译功能。

现在，通过侧边栏中新的“<ruby> 翻译面板 <rt>  Translate Panel </rt></ruby>”，你可以快速添加一个文本片段并进行翻译，而无需翻译整个网页。

Vivaldi 的侧面板以提高多任务处理能力而闻名，而这个功能的增加应该会加强这一点。

如果你想翻译更多的片段呢？当然，你肯定不想一直继续复制粘贴它们！

对于这个特殊的需求，Vivaldi 还引入了一个“<ruby> 一步自动翻译 <rt>  one-step auto-translate </rt></ruby>”选项。一旦启用该选项，突出显示你在网页中想要的文本，它的翻译将立即出现在侧面板上。这听起来很酷！

#### 在弹出式窗口中查看下载

虽然 Vivaldi 在很多方面都令人印象深刻，但对于用户来说，其关注下载进度的能力并不那么直观。你必须到侧面板（或“下载”）中去检查下载的进度。

相比之下，在其他网页浏览器中，你可以在你的扩展程序旁边找到一个按钮。

在 Vivaldi 5.0 中，你终于可以使用地址栏中的一个按钮来检查下载进度，点击该按钮将打开一个弹出窗口来显示你的下载进度。

#### 为安卓用户提供的增强功能

Vivaldi 的安卓版也有了重大更新和期待已久的功能。

安卓用户现在可以使用桌面用户已经在使用的 “<ruby> 两级标签堆栈 <rt>  Two-level Tab Stacks </rt></ruby>”。

也许，这对任何安卓手机浏览器来说都是第一次！

对于那些不知道的人来说，这个功能有助于将标签页组合在一起，产生两级。这有助于避免多个标签挤在一起。

可配置的“<ruby> 标签栏 <rt>  Tab Bar </rt></ruby>”现在多了两个选项。例如，背景标签上用于关闭的“X”按钮可以被移除（为更多的标签腾出空间）。用户还可以将标签简单地显示为收藏夹，因此没有标题，也没有“X”按钮。

因此，你有很多管理你的安卓移动设备上的标签的方法。

虽然这很有趣，但我不太确定对用户来说，在小屏幕上掺杂两级标签堆栈的感觉如何。

平板电脑和 Chromebook 用户也将享受到用户界面更新的待遇。平板电脑和 Chromebook 用户现在可以使用经典的“<ruby> 侧面板 <rt>  Side Panel </rt></ruby>”，以组织浏览器的布局，尽量减少杂乱。

这一功能的增加可以使 Vivaldi 成为平板电脑用户的有力选择。

#### 其他改进

除了关键的亮点之外，你可以发现速度的改进和错误的修复。

要探索更多，你可以查看其 [桌面版](https://vivaldi.com/blog/vivaldi-5-0-desktop-themes-translate-panel/) 和 [安卓版](https://vivaldi.com/blog/vivaldi-on-android-gets-worlds-first-two-rows-of-mobile-browser-tabs/) 的官方博客文章。

### 总结

Vivaldi 无疑是一个会关注其用户需求和网页体验的浏览器。对于喜欢更多定制和功能的用户来说，最新的版本听起来很令人感兴趣。

你可以从官方网站下载可用的 DEB/RPM 包并进行安装。

* [下载 Vivaldi 5.0](https://vivaldi.com/download/)

---

via: <https://news.itsfoss.com/vivaldi-5-0-release/>

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


用 Flatpak 在 Linux 上安装应用

Summary: Flatpak 简化了 Linux 上应用的安装。

引入Flatpak，有叠床架屋的感觉，安装和使用上不如appimage简单明了。

来自江西南昌的 Chrome Mobile 65.0|Android 8.1 用户

# 用 Flatpak 在 Linux 上安装应用

>
> Flatpak 简化了 Linux 上应用的安装。
>
>
>

计算机应用由许多小文件组成，它们被链接在一起以执行一系列的任务。因为它们以“应用”的形式出现，在菜单或桌面上有彩色的图标，我们大多数人认为应用是一个单一的、几乎是有形的东西。在某种程度上，这样想是令人欣慰的，因为它们感觉是可以管理的。如果一个应用实际上是散落在你的计算机上的数百个小库和资源文件的组合，那么应用在哪里？撇开存在危机不谈，当一个应用需要一个版本的库，而另一个应用需要一个不同的版本时，会发生什么？

在云计算的世界里，[容器](https://opensource.com/article/21/7/linux-podman) 正变得越来越流行，因为它们为应用提供了隔离和整合。你可以在一个“容器”中安装一个应用需要的所有文件。这样一来，它的库就不会受到其他应用的影响，它所占用的内存也不会将数据泄露到另一个内存空间。所有的东西最后都感觉非常像一个单一的、几乎是 *有形的* 东西。在 Linux 桌面上，提供了类似的技术的 Flatpak，是一个跨发行版、无守护进程、去中心化的应用交付系统。

### 在 Linux 上安装 Flatpak

你的 Linux 系统可能已经安装了 Flatpak。如果没有，你可以从你的包管理器中安装它：

在 Fedora、Mageia 和类似的发行版上：

```
$ sudo dnf install flatpak

```

在 Elementary、Mint 和其他基于 Debian 的发行版上：

```
$ sudo apt install flatpak

```

在 Slackware 上，Flatpak 可以从 [SlackBuilds.org](http://slackbuilds.org) 获得。

### 选择一个 Flatpak 仓库

你可以通过在你的发行版的软件中心（如 GNOME 上的“软件”）添加一个 Flatpak 仓库，将一个应用安装为 Flatpak。Flatpak 是一个去中心化的系统，意味着任何开发软件的人都可以托管他们自己的仓库。尽管如此，在实践中，[Flathub](http://flathub.org) 是 Flatpak 格式的最大和最流行的应用集合。要将 Flathub 添加到 GNOME “<ruby> 软件 <rt>  Software </rt></ruby>” 或者 KDE “<ruby> 发现 <rt>  Discover </rt></ruby>” 中，请浏览 <https://flatpak.org/setup> ，找到适合你的发行版的说明，从第二步开始，或者直接下载 [Flatpakrepo](https://flathub.org/repo/flathub.flatpakrepo) 文件。根据你的网络情况，你的软件中心可能需要几分钟的时间来与 Flathub（或另一个 Flatpak 仓库）同步。Flathub 有很多软件，但你的系统上有多少个 Flatpak 仓库是没有限制的，所以如果你发现一个有你想尝试的软件，不要害怕添加一个新的仓库。

如果你喜欢在终端工作，你可以用 `flatpak` 命令直接添加到仓库：

```
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

```

### 安装一个应用

只要你在软件中心添加了 Flatpak 仓库，你就可以像往常一样浏览应用了。

点击一个看起来很吸引人的应用，阅读它，当你准备好时点击**安装**按钮。

### 在终端中安装 flatpak

如果你喜欢在终端工作，你可以把 Flatpak 当作一个专门的包管理器。你可以使用 `flatpak search` 命令来搜索一个应用程序：

```
$ flatpak search paint
Name        Description                         Application ID
CorePaint   A simple painting tool              org.cubocore.CorePaint
Pinta       Edit images and paint digitally     com.github.PintaProject.Pinta
Glimpse     Create images and edit photographs  org.glimpse_editor.Glimpse
Tux Paint   A drawing program for children      org.tuxpaint.Tuxpaint
Krita       Digital Painting, Creative Freedom  org.kde.krita

```

用 `flatpak install` 安装：

```
$ flatpak install krita

```

安装后，应用就会与系统中的所有其他应用一起出现在你的应用菜单或活动页上。

### 应用变得简单

Flatpak 通过消除版本冲突，可以使用户轻松安装应用。他们通过在自托管的平台或像 Flathub 这样的公共平台上只需要针对一种软件包格式提供应用，使分发软件变得简单。我在 Fedora Silverblue、CentOS 和 Slackware 上使用 Flatpak，我无法想象现在没有它的生活。在你的下一个应用安装中试试 Flatpak 吧！

---

via: <https://opensource.com/article/21/11/install-flatpak-linux>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[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/) 荣誉推出