使用开源工具 nccm 管理 SSH 连接

Summary: 使用 nccm 让你的终端连接 SSH 会话更快、更稳、更轻松。

使用 nccm 让你的终端连接 SSH 会话更快、更稳、更轻松。

# 使用开源工具 nccm 管理 SSH 连接

>
> 使用 nccm 让你的终端连接 SSH 会话更快、更稳、更轻松。
>
>
>

OpenSSH 很常用，但没有一个知名的连接管理器，因此我开发了 ncurses SSH 连接管理器（`nccm`）来填补这个重要的空白。 `nccm` 是一个简单的 SSH 连接管理器，具有非常便于移植的终端界面（就如项目名称所示，使用 ncurses 编写）。最重要的是，它使用起来非常简单。有了 `nccm`，你可以花费最少的精力和最少的按键连接到你选择的 SSH 会话。

### 安装 nccm

最快的方式是从它的 [Git 仓库](https://github.com/flyingrhinonz/nccm)克隆该项目：

```
$ git clone https://github.com/flyingrhinonz/nccm nccm.git

```

在 `nccm.git/nccm` 的文件夹中有两个文件：`nccm` 自身和 `nccm.yml` 配置文件。

首先将 `nccm` 脚本复制到系统目录 `/usr/local/bin/` 中并添加执行权限，也可以通过使用`install` 命令来完成操作：

```
$ sudo install -m755 nccm –target-directory /usr/local/bin

```

文件 `nccm.yml` 可以拷贝到以下任意一个位置，默认从找到的第一个位置获取配置:

* `~/.config/nccm/nccm.yml`
* `~/.nccm.yml`
* `~/nccm.yml`
* `/etc/nccm.yml`

`nccm` 需要在 Python 3 的环境中运行，这在大部分的 Linux 环境是没问题的。大多数 Python 库的依赖包已经作为 Python 3 的一部分存在，但是，有一些 YAML 的依赖包和实用程序是你必须安装的。

如果你没有安装 `pip`，你可以使用包管理器来安装它。在安装的同时，也请安装 `yamllint` 应用程序来帮助你验证 `nccm.yml` 文件。

在 Debian 或类似系统使用 `apt` 命令：

```
$ sudo apt install python3-pip yamllint

```

在 Fedora 或者类似系统使用 `dnf` 命令：

```
$ sudo dnf install python3-pip yamllint

```

`PyYAML` 也是必须安装的，可以通过使用 `pip` 来安装：

```
$ pip3 install --user PyYAML

```

### 使用 nccm

开始之前，需要修改 `nccm.yml` 文件来添加 SSH 连接配置，可以参照示例文件格式化 YAML 文件。仿照示例文件在开头添加连接名称，配置项使用两个空格缩进。不要忘了冒号（`:`），这是 YAML 的语言的格式。

不要担心你的 SSH 会话信息以何顺序排列，因为 `nccm` 在程序内提供了排序的方式。

如果修改完成，可以使用 `yamllint` 来校验配置：

```
$ yamllint ~/.config/nccm/nccm.yml

```

如果没有错误信息返回，说明文件的内容格式是正确的，可以进行下面的步骤。

如果 `nccm` 可以[从你的路径](https://opensource.com/article/17/6/set-path-linux)中找到并且可以执行，那么输入 `nccm` 就可以启动 TUI（文本用户界面）了。如果你看到 Python 3 抛出的异常，请检查依赖包是否正确安装，任何异常都应该提到缺少的依赖包。

只要你没有在 YAML 配置文件中更改 `ncm_config_control` 模式，那么你可以使用以下的键盘按键来控制：

* `Up`/`Down` 方向键 - 移动光标
* `Home`/`End` - 跳转到文件开始和结尾
* `PgUp`/`PgDn` - 以页为单位查看
* `Left`/`Right` 方向键 - 水平滚动
* `TAB` - 在文本框之间移动
* 回车 - 连接选中的 SSH 会话
* `Ctrl-h` - 显示帮助菜单
* `Ctrl-q`/`Ctrl-c` - 退出
* `F1`-`F5` 或 `!` `@` `#` `$` `%` - 按 1-5 列排序

使用 `F1` 到 `F5` 来按 1-5 列排序，如果你的设备占用了这些 `F1` - `F5` 键，你可以使用`!` `@` `#` `$` `%` 来替代。默认界面显示 4 列内容，但我们将用户名和服务器地址作为单独的列来排序，这样我们就有了 5 个排序方式。你也可以通过再次按下排序的按键来逆转排序。在选中的行上按回车可以建立会话。

在 `Filter` 文本框中输入过滤内容，会用输入的内容以“与”的关系来过滤输出内容。这是不区分大小写的，而条目间用空白分隔。在 `Conn` 部分也是如此，但在这里按回车键可以连接到那个特定的条目编号。

这个工具还有许多功能需要你去发掘，比如专注模式，这些部分留下等待你去探索，也可以查看项目主页或者内置的帮助文档查看更多细节内容。

项目的 YAML 配置文件的文档是完善的，所以你可以查阅修改使 `nccm` 使用起来更加顺手。`nccm` 项目是非常希望得到你的反馈的，所以你可以复刻该项目然后添加更多新功能，欢迎大家提出拉取请求。

### 使用 nccm 来放松连接 SSH 的压力

像我一样，我希望这个工具可以对你有用，感谢能够为开源工作增加自己的贡献，请接受 `nccm` 作为我对开源项目自由、高效工作所做的贡献。

---

via: <https://opensource.com/article/20/9/ssh-connection-manager>

作者：[Kenneth Aaron](https://opensource.com/users/flyingrhino) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hom](https://github.com/hom) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# 美土安全部发出罕见紧急警告：Windows 存在“严重”漏洞

Summary: • 微软出席 X.Org 开发者大会 • NVIDIA C++ 标准库 Libcu++ 现已开源

# #新闻拍一拍# 美土安全部发出罕见紧急警告：Windows 存在“严重”漏洞

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

#### 美土安全部发出罕见紧急警告：Windows 存在“严重”漏洞

其要求所有联邦部门和机构在周一之前立即对任何容易受到 Zerologon 攻击的 Windows 服务器进行补丁，称这对政府网络构成了不可接受的风险。Zerologon 漏洞的严重程度为最高级别 10.0，它可以让攻击者控制脆弱网络上的任何或所有计算机，包括域控制器、管理网络安全的服务器。攻击者不需要窃取或使用任何网络密码就能访问域控制器而只需要在网络上获得一个立足点即可。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1031235.htm)

>
> 拍一拍：不必争论微软软件是否安全，这件事仁者见仁智者见智。但是在是个非常严重的漏洞，希望密切注意。
>
>
>

#### 微软出席 X.Org 开发者大会

今年的虚拟会议 XDC2020 微软不仅仅是银级赞助商，它的开发者在开幕日就做了三次演讲。微软开发者谈论了 WSL 图形架构、WSL 下的 X11/Wayland 应用支持，以及 Mesa Direct3D 12 映射层。微软正在向开发者力推它的 WSL 子系统，目的的吸引开发者使用 Windows 而不是 Linux 发行版作为开发系统。

来源：[solidot](https://www.solidot.org/story?sid=65582)

>
> 拍一拍：微软拥抱开源的一个目的是从 Linux 抢开发者用户回去，你还别说，真有一些会转投的。
>
>
>

#### NVIDIA C++ 标准库 Libcu++ 现已开源

去年作为 CUDA 10.2 的一部分推出的 Libcu++ 是 CUDA C++ 标准库，它不仅适用于支持 NVIDIA CUDA 的配置，还适用于 CPU。NVIDIA 的 Libcu++ 是从 LLVM 的 Libc++ 标准库中复刻出来的。NVIDIA 之前曾表示要把 Libcu++ 的变化全部推回 LLVM 的 libc++ 中。

来源：[cnbeta](https://www.cnbeta.com/articles/soft/1031115.htm)

>
> 拍一拍：虽然本来就该开源的，但是可见 NVIDIA 也需要参与到开源中。
>
>
>


用 Portainer.io 来监控和管理 Docker 容器（1）

# 用 Portainer.io 来监控和管理 Docker 容器（1）

随着 Docker 的使用量越来越大，监控 Docker 容器正在变得更有挑战性。每天都有大量的 Docker 容器被创建，因此如何监控它们就变得非常重要。目前已经有一些内置的工具和技术，不过对它们进行配置有一些复杂。随着基于微服务的架构正在变成接下来事实上的标准，学会这种技术将为你的知识库再添一项新技能。

基于上述场景，对一种轻量、健壮的镜像管理工具的需求日益增加。Portainer.io 解决了这个问题。 Portainer.io（最新版本是 1.20.2）非常轻量，只需 2-3 个命令就可以配置好，已经在 Docker 用户中流行起来。

比起其他工具，这个工具有很多优势，其中一些如下所示：

* 轻量（安装此工具仅需 2 到 3 个命令，与此同时安装镜像的大小在 26 M 到 30 M 之间）
* 健壮且易用
* 可用于 Docker 监控和构建
* 提供对 Docker 环境的详细概况
* 可以管理容器、镜像、网络和卷
* Portainer 部署方便，仅需一个 Docker 命令（可以在任意地方运行）
* 可以对完整的 Docker 容器环境进行监控

Portainer 同时具有以下服务：

* 社区支持
* 企业支持
* 与合作伙伴 OEM 服务一起的专业服务

Portainer 的功能和特性如下：

```
1. 配备了漂亮的仪表盘，易于使用和监控
2. 自带大量内置模板，便于操作和创建
3. 服务支持（仅 OEM 和企业用户）
4. 对容器、镜像、网络、卷以及配置进行几乎实时的监控
5. 包含 Docker 集群监控功能
6. 功能多样的用户管理

```

另请阅读：[如何在 Ubuntu 16.04 / 18.04 LTS 版本中安装 Docker CE](https://www.linuxtechi.com/how-to-setup-docker-on-ubuntu-server-16-04/)

### 如何在 Ubuntu Linux / RHEL / CentOS 系统上安装和配置 Portainer.io

注意：下面的安装过程是在 Ubuntu 18.04 上完成的，但是对 RHEL 和 CentOS 同样适用，同时假设你已经在系统上安装了 Docker CE。

```
root@linuxtechi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic
root@linuxtechi:~$

```

为 Portainer 创建卷：

```
root@linuxtechi:~$ sudo docker volume create portainer_data
portainer_data
root@linuxtechi:~$

```

使用下面的 Docker 命令来运行 Portainer 容器：

```
root@linuxtechi:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
0b1e707a06d2: Pull complete
Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d
Status: Downloaded newer image for portainer/portainer:latest
35286de9f2e21d197309575bb52b5599fec24d4f373cc27210d98abc60244107
root@linuxtechi:~$

```

安装完成之后，通过主机或 Docker 的 IP 加上 Docker 引擎使用的 9000 端口在浏览器中打开 Portainer。

注意：如果 Docker 所在主机的系统防火墙开启，需要确保 9000 端口被放行，否则浏览器页面将无法打开。

在我这边，我的 Docker 主机/引擎的 IP 是 `192.168.1.16`，所以 URL 就是 `http://192.168.1.16:9000`

在创建管理员用户时，请确保密码是 8 个字符，同时用户名为 `admin`，然后点击 “Create User”。

接下来进入如下所示的页面，选中 “Local” 矩形框。

点击 “Connect”，

可以看到 admin 用户的漂亮首页如下所示，

现在 Portainer 已经准备好运行和管理你的 Docker 容器了，同时也可用于容器监控。

### 在 Portainer 中管理容器镜像

检查当前的状态，可以看到有两个容器已经在运行了，如果你创建另一个也会立即显示出来。

像下面这样，在命令行中启动一个或两个容器，

```
root@linuxtechi:~$ sudo docker run --name test -it debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
e79bb959ec00: Pull complete
Digest: sha256:724b0fbbda7fda6372ffed586670573c59e07a48c86d606bab05db118abe0ef5
Status: Downloaded newer image for debian:latest
root@linuxtechi:/#

```

然后在 Portainer 页面中点击刷新按钮（会出现一条让你确认的消息，点击上面的 “Continue”），就可以像下面高亮显示的一样看到 3 个容器了。

点击上图中红圈圈出来的 “containers”，下一个页面会显示 “Dashboard Endpoint summary”。

在这个页面中，点击上图高亮和红圈圈出来的 “Containers”，就可以对容器进行监控了。

### 以简单的方式对容器进行监控

继续上面的步骤，就会出现一个如下所示精致、漂亮的 “Container list” 页面。

所有的容器都可以在这里进行控制（停止、启动等等）。

1、在这个页面上，停止我们之前启动的 “test” 容器（这是一个我们早先启动的 debian 容器）。

选中此容器前面的复选框，然后点击上面的“Stop”按钮来停止。

在命令行中，你也会看到这个容器现在已经停止或退出了：

```
root@linuxtechi:~$ sudo docker container ls -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                       PORTS                    NAMES
d45902e717c0        debian                "bash"              21 minutes ago      Exited (0) 49 seconds ago                             test
08b96eddbae9        centos:7              "/bin/bash"         About an hour ago   Exited (137) 9 minutes ago                            mycontainer2
35286de9f2e2        portainer/portainer   "/portainer"        2 hours ago         Up About an hour             0.0.0.0:9000->9000/tcp   compassionate_benz
root@linuxtechi:~$

```

2、现在，在 Portainer 页面中启动已经停止的两个容器（test 和 mycontainer2）

选中已停止的这两个容器前面的复选框，然后点击 “Start”。

你会立即看到两条窗口提醒，内容是“容器成功启动”，并且两个容器的状态变为正在运行。

### 一步步探索其他多种选项和特性

1、点击高亮的“Images”，你会看到如下页面：

这是可用的容器列表，其中一些可能没在运行。这些容器可以被导入、导出或者上传到不同的位置，截图如下所示。

2、点击高亮的“Volumes”，显示如下页面：

3、通过下面的操作，可以很容易的添加卷。点击添加卷按钮，出现如下页面，在名称输入框中输入卷名称，例如 “myvol”，然后点击 “Create the volume” 按钮：

新创建的卷如下所示（状态为未使用）：

### 结论

通过上面的安装步骤，你可以到配置和使用 Portainer.io 的多种选项是多么简单和精美，它提供了用于构建和监控 Docker 容器的多种功能和选项。如前所述，这个一个非常轻量的工具，因此不会给主机系统增加任何负担。下一组选项将在本系列的第 2 部分中进行探讨。

另请阅读: [用 Portainer.io 来监控和管理 Docker 容器（2）](https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-io-part-2/)

---

via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-part1/

作者：[Shashidhar Soppin](https://www.linuxtechi.com/author/shashidhar/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[jlztan](https://github.com/jlztan) 校对：[wxy](https://github.com/wxy)

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


关机时间太长的调查和解决的方法

linux关机确实快，我笔记本debian是最小化安装的，关机通常3,4秒这样就关掉了。

# 关机时间太长的调查和解决的方法

>
> 你的 Linux 系统关机时间太长么？以下是你可以采取的步骤，来找出导致延迟关机的原因并解决这个问题。
>
>
>

我希望你对 [sigterm 和 sigkill](https://linuxhandbook.com/sigterm-vs-sigkill/) 的概念有一点熟悉。

当你[关闭 Linux 系统](https://itsfoss.com/schedule-shutdown-ubuntu/)时，它会发送终止信号（sigterm），并礼貌地要求正在运行的进程停止。有些进程不符合该行为，它们会忽略终止信号并继续运行。

这可能会导致关机过程的延迟，因为你的系统会在一个预定义的时间段内等待运行的进程停止。在这个时间段之后，它会发送 `kill` 信号来强制停止所有剩余的运行进程并关闭系统。

事实上，在某些情况下，你会在黑屏上看到一个类似 “a stop job is running” 的信息。

如果你的系统关闭时间太长，你可以做以下工作：

* 检查哪个进程/服务耗时过长，以及你是否能删除或重新配置它，使其正常运行。
* 更改系统强制停止运行进程前的默认等待时间。（快速而不优雅的方式）

我的操作系统是使用 systemd 的 Ubuntu。这里的命令和步骤适用于任何使用 systemd 的 Linux 发行版（大多数发行版都是这样）。

### 检查哪些进程会导致 Linux 的长时间关机

如果你想找出问题所在，你应该检查上次关机时发生了什么。使用这个命令来获得“我知道你上个会话做了什么”（I Know What You Did Last Summer 的双关语）的力量。

```
journalctl -rb -1

```

[journalctl 命令](https://linuxhandbook.com/journalctl-command/)能让你读取系统日志。使用选项 `-b -1` 可以过滤最后一次启动会话的日志。使用选项 `-r` 时，日志将按时间倒序显示。

换句话说，`journalctl -rb -1` 命令将显示最后一次关闭 Linux 系统之前的系统日志。这里就是你需要分析 Linux 系统长时间关机问题的地方。

#### 没有 journal 日志？下面是你应该做的。

如果没有 journal 日志，请确认你的发行版是否使用 systemd。

即使在一些使用 systemd 的 Linux 发行版上，journal 日志也没有被默认激活。

请确认 `/var/log/journal` 是否存在。如果不存在，请创建它：

```
sudo mkdir /var/log/journal

```

你还应该检查 `/etc/systemd/journald.conf` 文件的内容，并确保 `Storage` 的值被设置为自动（`auto`）或持久（`persistent`）。

你是否在日志中发现可疑的东西？是否有一个进程/服务拒绝停止？如果是，调查一下是否可以在没有副作用的情况下删除它，或者是否可以重新配置它。请不要在这里盲目地去删除东西。你应该对这个进程有所了解。

### 通过减少默认停止超时来加快 Linux 中的关机速度（快速修复）

关机的默认等待时间通常设置为 90 秒。在这个时间之后，你的系统会尝试强制停止服务。

如果你想让你的 Linux 系统快速关闭，你可以改变这个等待时间。

你可以在位于 `/etc/systemd/system.conf` 的配置文件中找到所有的 systemd 设置。这个文件中应该有很多以 `#` 开头的行。它们代表了文件中各条目的默认值。

在开始之前，最好先复制一份原始文件。

```
sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.orig

```

在这里寻找 `DefaultTimeoutStopSec`。它可能被设置为 90 秒。

```
#DefaultTimeoutStopSec=90s

```

你得把这个值改成更方便的，比如 5 秒或 10 秒。

```
DefaultTimeoutStopSec=5s

```

如果你不知道如何在终端中编辑配置文件，可以使用这个命令在系统默认的文本编辑器（如 Gedit）中打开文件进行编辑：

```
sudo xdg-open /etc/systemd/system.conf

```

不要忘记**删除 DefaultTimeoutStopSec 前的 `#` 号**。保存文件并重启系统。

这将帮助你减少 Linux 系统的关机延迟。

#### 看门狗问题！

Linux 有一个名为看门狗的模块，用于监控某些服务是否在运行。它可以被配置为在系统因软件错误而挂起时自动重启系统。

在桌面系统上使用看门狗是不常见的，因为你可以手动关闭或重启系统。它经常被用于远程服务器上。

首先检查看门狗是否在运行：

```
ps -af | grep watch*

```

如果你的系统正在运行看门狗，你可以在 systemd 配置文件 `/etc/systemd/system.conf` 中将 `ShutdownWatchdogSec` 的值从 10 分钟改为更低的值。

### 你能解决关机时间过长的问题吗？

希望本教程能帮助你解决系统长时间关机的问题。如果你成功解决了这个问题，请在评论中告诉我。

---

via: https://itsfoss.com/long-shutdown-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/) 荣誉推出


Summary: • 英特尔对迟迟不被 Linux 主线接受的 SGX Enclave 进行了第 38 次修订 • ARM 支持开源的 Panfrost Gallium3D 驱动

# #新闻拍一拍# Oracle 调研如何避免让 Java 开发者投奔 Rust 和 Kotlin

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

#### Oracle 调研如何避免让 Java 开发者投奔 Rust 和 Kotlin

Oracle 委托分析公司 Omdia 评估其 Java 的 6 个月发布策略，以及它是否足以让数百万 Java 开发者远离内存安全的替代方案，如谷歌的 Kotlin 和 Mozilla 的 Rust。报告中说，“6 个月的更新周期，并引入新的模块化水平，使其在约 1200 万开发人员中处于有利地位。Oracle 和 Java编程语言需要一系列持续不断的创新，使现有的 Java 开发者感到满意，同时引导潜在的 Java 开发者远离 Rust 和 Kotlin 等新语言。”

来源：[zdnet](https://www.zdnet.com/article/oracles-java-15-new-features-aim-to-keep-millions-away-from-languages-like-rust-kotlin/)

>
> 拍一拍：25 年的 Java 虽然依旧占据统治地位，但是这些新来的小家伙也不可小觑。
>
>
>

#### 英特尔对迟迟不被 Linux 主线接受的 SGX Enclave 进行了第 38 次修订

多年来，英特尔 Linux 开发人员一直在努力让他们的软件卫士扩展（SGX）支持和新的 SGX Enclave 驱动整合到 Linux 内核中。自酷睿 Skylake 核心出现以来，SGX 的支持工作就一直在进行，但安全问题和其他技术原因阻碍了 SGX 支持主线接受。此外，非英特尔上游内核开发者对 SGX 的热情也明显不足。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1031405.htm)

>
> 拍一拍：心疼英特尔 38 次。不过，确实有很多新特性想挤入 Linux 主线内核，但是能得到上游社区的认可需要更广泛的共识。
>
>
>

#### ARM 支持开源的 Panfrost Gallium3D 驱动

Mesa 的 Panfrost Gallium3D 开源驱动提供了对 ARM 的 Mali Midgard 和 Bifrost GPU 的支持。它最初始于对私有 Mali 图形驱动的逆向工程，进展缓慢，但随着主要开发者 Alyssa Rosenzweig 受雇于咨询公司 Collabora，项目取得了稳定进展。在 XDC2020 大会上，Alyssa 透露，ARM 正与 Collabora 合作开发 Panfrost，支持 Panfrost Gallium3D 作为开源的 Mali 驱动。

来源：[solidot](https://www.solidot.org/story?sid=65592)

>
> 拍一拍：从之前的逆向工程到厂家的主动支持，企业越来越正视和重视开源支持。
>
>
>


使用 Linux stat 命令创建灵活的文件列表

Summary: stat 命令还可以用来创建文件列表。这些列表非常灵活，你可以选择包含上述任何或全部信息。

# 使用 Linux stat 命令创建灵活的文件列表

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

`stat` 命令提供了很多关于文件的详细信息。

它不仅提供了文件最近变化的日期/时间，还显示了最近访问文件的时间和权限变化。它可以同时告诉你文件的字节大小和块的数量。它可以显示文件使用的 inode 以及文件类型。它包括了文件所有者和相关用户组的名称和 UID/GID。它以 “rwx”（被称为 “人类可读” 格式）和数字方式显示文件权限。在某些系统中，它甚至可能包括文件创建的日期和时间（称为“出生”）。

除了提供所有这些信息外，`stat` 命令还可以用来创建文件列表。这些列表非常灵活，你可以选择包含上述任何或全部信息。

要生成一个自定义列表，你只需要使用 `stat` 命令的 `-c`（或 `--format`）选项，并指定你想要包含的字段。例如，要创建一个以两种格式显示文件权限的列表，使用这个命令：

```
$ stat -c '%n %a %A' my*
my.banner 664 -rw-rw-r--
mydir 775 drwxrwxr-x
myfile 664 -rw-rw-r--
myjunk 777 lrwxrwxrwx
mykey 664 -rw-rw-r--
mylog 664 -rw-rw-r--
myscript 755 -rwxr-xr-x
mytext 664 -rw-rw-r--
mytext.bak 664 -rw-rw-r--
mytwin 50 -rw-r-----
mywords 664 -rw-rw-r--

```

如上例所示，`%n` 代表文件名，`%a` 代表八进制的权限，`%A` 代表 `rwx` 形式的权限。完整的列表如后面所示。

要为这个命令创建一个别名，输入这个命令，或在 `.bashrc` 文件中添加这个定义。

```
$ alias ls_perms="stat -c '%n %a %A'"

```

要创建一个非常接近 `ls -l` 提供的长列表，可以这样做：

```
$ stat -c '%A %h %U %G %s %y %n' my*
-rw-rw-r-- 1 shs shs 255 2020-04-01 16:20:00.899374215 -0400 my.banner
drwxrwxr-x 2 shs shs 4096 2020-09-07 12:50:20.224470760 -0400 mydir
-rw-rw-r-- 1 shs shs 6 2020-05-16 11:12:00.460355387 -0400 myfile
lrwxrwxrwx 1 shs shs 11 2020-05-28 18:49:21.666792608 -0400 myjunk
-rw-rw-r-- 1 shs shs 655 2020-01-14 15:56:08.540540488 -0500 mykey
-rw-rw-r-- 1 shs shs 8 2020-03-04 17:13:21.406874246 -0500 mylog
-rwxr-xr-x 1 shs shs 201 2020-09-07 12:50:41.316745867 -0400 myscript
-rw-rw-r-- 1 shs shs 40 2019-06-06 08:54:09.538663323 -0400 mytext
-rw-rw-r-- 1 shs shs 24 2019-06-06 08:48:59.652712578 -0400 mytext.bak
-rw-r----- 2 shs shs 228 2019-04-12 19:37:12.790284604 -0400 mytwin
-rw-rw-r-- 1 shs shs 1983 2020-08-10 14:39:57.164842370 -0400 mywords

```

不同之处包括： 1、不试图将字段排成可辨认的一列，2、日期是 `yy-mm-dd` 格式，3、时间字段更精确，4、增加了时区（-0400 是 EDT）。

如果你想根据最后一次访问的日期来列出文件（例如，用 `cat` 命令来显示），使用这样的命令：

```
$ stat -c '%n %x' my* | sort -k2
mytwin 2019-04-22 11:25:20.656828964 -0400
mykey 2020-08-20 16:10:34.479324431 -0400
mylog 2020-08-20 16:10:34.527325066 -0400
myfile 2020-08-20 16:10:57.815632794 -0400
mytext.bak 2020-08-20 16:10:57.935634379 -0400
mytext 2020-08-20 16:15:42.323391985 -0400
mywords 2020-08-20 16:15:43.479407259 -0400
myjunk 2020-09-07 10:04:26.543980300 -0400
myscript 2020-09-07 12:50:41.312745815 -0400
my.banner 2020-09-07 13:22:38.105826116 -0400
mydir 2020-09-07 14:53:10.171867194 -0400

```

用 `stat` 列出文件细节时，可用的选项包括：

* `%a` - 八进制的访问权限（注意 `#` 和 `0` 的 printf 标志）
* `%A` – 人类可读的访问权限
* `%b` – 分配的块数（见 `%B`）
* `%B` – `%b` 报告的每个块的字节数
* `%C` – SELinux 安全上下文字符串
* `%d` – 十进制的设备编号
* `%D` – 十六进制的设备编号
* `%f` – 十六进制的原始模式
* `%F` – 文件类型
* `%g` – 所有者的组 ID
* `%G` – 所有者的组名
* `%h` – 硬链接的数量
* `%i` – inode 编号
* `%m` – 挂载点
* `%n` – 文件名
* `%N` – 如果是符号链接，会解引用为指向的文件名
* `%o` – 最佳 I/O 传输大小提示
* `%s` – 以字节为单位的总大小
* `%t` – 十六进制的主要设备类型，用于字符/块设备特殊文件
* `%T` – 十六进制的次要设备类型，用于字符/块设备特殊文件
* `%u` – 所有者的用户 ID
* `%U` – 所有者的用户名
* `%w` – 文件创建时间，以人类可读形式； 如果未知，则为 `-`。
* `%W` – 文件创建时间，以 UNIX 纪元以来的秒数形式；如果未知，则为 `0`。
* `%x` – 上次访问时间，以人类可读形式
* `%X` – 上次访问时间，以 UNIX 纪元以来的秒数形式
* `%y` – 上次数据修改时间，以人类可读形式
* `%Y` – 上次数据修改时间，以 UNIX 纪元以来的秒数形式
* `%z` – 上次状态改变的时间，以人类可读形式
* `%Z` – 上次状态改变的时间，以 UNIX 纪元以来的秒数形式

这些字段的选择都列在手册页中，你可以选择任何一个，不过用你喜欢的选项创建一些别名应该可以省去很多麻烦。有些选项，如 SELinux 安全上下文字符串，除非在系统中有使用，它将不可用。文件创建时间只有在你的系统保留该信息的情况下才可用。

---

via: <https://www.networkworld.com/article/3573802/using-the-linux-stat-command-to-create-flexible-file-listings.html>

作者：[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) 选题：[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 黑话解释：什么是滚动发行版？

Cool

赞！！！

很清楚（（（

刚刚把Debian分支改到testing 希望不会报错 哈哈

牛逼

# Linux 黑话解释：什么是滚动发行版？

在了解了[什么是 Linux](https://itsfoss.com/what-is-linux/)、[什么是 Linux 发行版](/article-12609-1.html)之后，当你开始使用 Linux 时，你可能会在 Linux 论坛的讨论中遇到“<ruby> 滚动发布 <rt>  rolling release </rt></ruby>”这个名词。

在这篇 Linux 黑话解释文章中，你将了解到 Linux 发行版的滚动发布模式。

### 什么是滚动发布？

在软件开发中，滚动发布是一种模式，在这种模式下，软件的更新是连续推出的，而不是分批的版本。这样软件就能始终保持更新。<ruby> 滚动发行版 <rt>  rolling release distribution </rt></ruby>遵循同样的模式，它提供最新的 Linux 内核和软件版本，在它们一发布就提供。

[Arch Linux](https://www.archlinux.org/) 是滚动发行版中最流行的例子，然而 [Gentoo](https://www.gentoo.org/) 是最古老的滚动发行版，目前仍在开发中。

当你使用一个滚动发行版时，你会得到小而频繁的更新。这里没有像 Ubuntu 那样的重大 XYZ 版本发布。你会定期[更新 Arch](https://itsfoss.com/update-arch-linux/)或其他滚动发行版，你将永远拥有最新版本的发行版。

滚动发布也是以测试为代价的。当最新的更新开始给你的系统带来问题时，你也许会受到“惊吓”。

### 对比滚动式发布与点版本式发布的发行版

许多 Linux 发行版，如 Debian、Ubuntu、Linux Mint、Fedora 等都遵循<ruby> 点版本 <rt>  point release </rt></ruby>模式。他们每隔几个月/年就会发布一个主要的 XYZ 版本。

点版本由 Linux 内核、桌面环境和其他软件的新版本组成。

当一个新的点版本发行版的主要版本发布时，你必须[专门来升级你的系统](https://itsfoss.com/upgrade-ubuntu-version/)。

相反，在滚动发行版中，当它从开发者那里发布时，你会不断地获得新的功能更新。这样，你不需要在几个月或几年后进行版本升级。你总是拥有最新的东西。

**哦，但我的 Ubuntu 也会定期更新，几乎每周一次。这是否意味着 Ubuntu 也在滚动发布？**

不，Ubuntu 不是滚动发布。你看，你通常从 Ubuntu 得到的更新是安全和维护更新（除了一些软件，比如 Mozilla Firefox），而不是新功能的发布。

例如，GNOME 3.38 已经发布了，但 Ubuntu LTS 20.04 版不会给你 GNOME 3.38。它将坚持使用 3.36 版本。如果 GNOME 3.36 有安全或维护更新，你会在 Ubuntu 的更新中得到它。

LibreOffice 版本也是如此。Ubuntu 20.04 LTS 坚持使用 LibreOffice 6.x 系列，而 LibreOffice 7 已经发布了。请记住，我说的是官方软件库中的软件版本。你可以自由地从他们的官方网站上下载一个更新版本的 LibreOffice，或者使用 PPA。但你不会从 Ubuntu 的软件库中得到它。

当 Ubuntu 发布下一个版本 Ubuntu 20.10 时，你会得到 LibreOffice 7 和 GNOME 3.38。

**为什么一些滚动发行版有“版本号”和发行版名称？**

这是一个合理的问题。Arch Linux 是滚动发布的，它总是让你的系统保持更新，然而你会看到像 Arch Linux 2020.9.01 这样的版本号。

现在想象一下，你在 2018 年安装了 Arch Linux。你定期更新你的 Arch Linux 系统，所以你在 2020 年 9 月拥有所有最新的内核和软件。

但是，如果你决定在 2020 年 9 月在一个新系统上安装 Arch Linux 会发生什么？如果你使用 2018 年使用的相同的安装介质，你将不得不安装过去两年或更长时间内发布的所有系统更新。这很不方便，不是吗？

这就是为什么 Arch Linux（和其他滚动发行版）每个月或每隔几个月都会提供一个新的 ISO（操作系统安装程序镜像文件），其中包含所有最新的软件。**这就是所谓的 ISO 刷新**。这样一来，新用户就会得到一个更新的 Linux 发行版。

如果你已经在使用滚动发行版，你就不用担心新的 ISO 刷新了。你的系统已经和它对等了。ISO 刷新对那些要在新系统上安装它的人是有帮助的。

### 滚动式发布的利与弊

滚动发布模式的好处是，你可以得到小而频繁的更新。你总是可以从你的发行版的仓库中获得最新的内核和最新的软件版本。

然而，这也可能带来新软件不可预见的问题。点版本发行版通常会对系统中集成的基本组件进行测试，以避免带来令人不便的错误。而在滚动发行版中，情况就不一样了，在滚动发行版中，软件一经开发者发布就会被推出。

### 你应该使用滚动发行版还是点版本发行版？

这取决于你。如果你是一个新的 Linux 用户，或者如果你不习惯于排除你的 Linux 系统的故障，请坚持使用你选择的点版本发行版。这也建议用于你的生产和关键任务的机器，在这里你会想要一个稳定的系统。

如果你想要最新的和最棒的 Linux 内核和软件，并且你不害怕花费一些时间在故障排除上（时常发生），你可以选择滚动发行版。

在这一点上，我还想提到 Manjaro Linux 的混合滚动发布模式。Manjaro 确实遵循滚动发布模式，你不必将系统升级到较新的版本。不过，Manjaro 也会对基本的软件组件进行测试，而不是盲目的向用户推出。这也是[为什么这么多人使用 Manjrao Linux](https://itsfoss.com/why-use-manjaro-linux/) 的原因之一。

### 我讲清楚了吗？

希望你现在对“滚动发行版”这个词有了稍微的了解。如果你对它仍有一些疑问，请留言，我会尽力回答。我可能会更新文章以涵盖你的问题。祝你愉快 :smiley:

---

via: <https://itsfoss.com/rolling-release/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[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: • 麒麟 OS 宣布兼容中望 CAD • Mozilla 的 WebThings IoT 平台成为独立的开源项目

# #新闻拍一拍# 新的摩尔定律：黄氏定律

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

#### 新的摩尔定律：黄氏定律

摩尔定律的发展速度已经放缓，有人说它已经结束了。以 Nvidia CEO 兼联合创始人黄仁勋名字命名的黄氏定律揭示了为 AI 提供动力的硅芯片是如何每两年就将性能提高一倍以上的。Nvidia 首席科学家 Bill Dally 表示，从 2012 年 11 月到今年 5 月，Nvidia 的芯片在一类重要的 AI 计算方面的性能提高了 317 倍。

来源：[华尔街日报](https://www.wsj.com/articles/huangs-law-is-the-new-moores-law-and-explains-why-nvidia-wants-arm-11600488001)

>
> 拍一拍：平均每年这些为 AI 提供动力的芯片的性能都会提高一倍以上，这种进步速度让摩尔定律显得苍白无力。
>
>
>

#### 麒麟 OS 宣布兼容中望 CAD

开发商中标软件宣布，麒麟软件与国内第一款基于 Linux 系统环境的国产 CAD 产品中望 CAD Linux 预装版完成兼容性测试，能够达到通用兼容性要求及性能、可靠性要求，满足用户的关键性应用需求。

来源：[快科技](https://www.cnbeta.com/articles/tech/1031727.htm)

>
> 拍一拍：Linux 的普及和 Linux 应用生态是相辅相成的。
>
>
>

#### Mozilla 的 WebThings IoT 平台成为独立的开源项目

在 Mozilla 进行了一系列裁员之后，他们的 WebThings IoT 平台正由前员工与新的商业赞助商一起作为一个独立的开源项目分拆出来。WebThings 是一个基于 W3C Web of Things 标准构建的开放平台，用于通过 Web 监视和控制设备。

来源：[mozilla](https://discourse.mozilla.org/t/an-important-update-on-mozilla-webthings/67764)

>
> 拍一拍：Mozilla 裁员带来的后果就是旗下各个项目纷纷自谋出路，从某种意义上，这应该是一件好事。
>
>
>


《代码英雄》第二季（5）：关于 DevSecOps 的故事

# 《代码英雄》第二季（5）：关于 DevSecOps 的故事

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

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

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

本文是《[代码英雄](https://www.redhat.com/en/command-line-heroes)》系列播客[第二季（5）：关于 DevSecOps 的故事](https://www.redhat.com/en/command-line-heroes/season-2/the-one-about-devsecops)的[音频](https://dts.podtrac.com/redirect.mp3/audio.simplecast.com/5cfd48a4.mp3)脚本。

>
> 导语：不良的安全和可靠性实践会导致影响数百万人的中断。现在是时候让安全加入 DevOps 运动了。并且，在 DevSecOps 的世界中，我们可以创造性的提升安全性。
>
>
> 每月发现一个漏洞曾经是常态。而现在，由于敏捷流程和 DevOps 团队，软件开发的进展迅速。Vincent Danen 告诉我们，这如何导致被认为是漏洞的东西急剧增加。前亚马逊灾难主管 Jesse Robbins 介绍了公司如何为灾难性故障和漏洞做好准备。而 Elastic 的产品安全主管 Josh Bressers 则展望了科技领域安全的未来。
>
>
> 我们不应该把安全团队当成脾气暴躁的妖怪。听听 DevSecOps 团队如何将英雄们聚集在一起，以实现更好的安全。
>
>
>

**00:00:01 - 众议院小组委员会代表**：

1991 年 6 月 26 日，在华盛顿特区，马里兰州和西弗吉尼亚州的大部分地区，以及我的家乡的大部分地区都因公共电话网络的大规模故障而瘫痪了。然而，随着技术变得越来越复杂，网络系统越来越相互依存，反复发生故障的可能性也会增加。似乎并没有警告说会发生这种情况。

**00:00:23 - Saron Yitbarek**：

在 20 世纪 90 年代初，有 1200 万美国人遭受了大规模的电话网络故障。人们不能给医院打电话，企业不能给客户打电话，父母不能打电话给托儿所。对于一个基础设施严重依赖于万物互联的计算机系统的国家来说，这是一场混乱也是一记警钟。这些计算机网络变得越来越大，然后当它们出现故障时，故障时间就会很长。

**00:01:01**：

电脑故障会导致电话系统崩溃。在今天代码中的一行小错误的后果比以往时候都要严重。

**00:01:15**：

我是 Saron Yitbarek，这里是是红帽公司的原创播客节目《代码英雄》。

**00:01:24**：

因此，软件安全性和可靠性比以往任何时候都重要。传统的瀑布式开发方法，安全性只是一个附加流程而已，已经不再适用。我们生活在一个 DevOps 的世界里，一切都变得更快、更敏捷、扩展性更强，这在电话网络崩溃时是他们无法想象的。这意味着我们的安全和可靠性标准必须不断改进，以应对这些挑战。

**00:01:55**：

在本集中，我们将研究如何将安全性集成到 DevOps 中，我们还将探索在运营中构建可靠性和弹性的新方法。即使在介绍了所有这些之后，我们知道还有很多东西可以讨论，因为在 DevSecOps 的世界里，对于开发人员和运营人员来说，事情都在快速变化。这些变化意味着不同的事情，这取决于你的立场，但这是我们的看法。我们也很想听到你们的消息——所以如果你认为我们错过了什么，不要害羞——在网上联系我们。

**00:02:34**：

好了，让我们开始探索这个全新的领域吧。

**00:02:43**：

事情就是这样，让安全性和可靠性跟上时代的步伐，并为 DevOps 世界做好准备，这意味着我们必须对工作方式进行一些关键的调整。第一，我们必须拥抱自动化。我的意思是，想想双因子认证的逻辑。想想那些难以想象的艰巨任务吧。很显然，你不能仅仅通过增加员工来解决问题，所以第一点就是拥抱自动化。

**00:03:15**：

然后，第二点，这个可能不是那么明显，那就是它真的改变了文化，使安全不再是一个祸害。稍后我将解释我所说的改变文化的含义。但是让我们一个一个的解释这两点。首先，拥抱自动化。

**00:03:42**：

以前，应用程序的部署在每个单独的发布之前都涉及到一个人为的安全审查，我不知道你是否注意到了，但是人为的审查可能会有点慢。这就是为什么自动化是在 DevOps 构建安全性的关键部分。以 Verizon 最近的数据泄露报告为例。他们发现，81% 的与黑客相关入侵涉及密码被盗或者弱密码。从表面上看，这是一个非常简单的问题，但是规模却很大。就像我之前所提及到的，你不能用工作人员去解决 3000 万个密码问题，对吧？问题在于解决大规模问题，而每次的答案都是一样的。那就是自动化，自动化。

**00:04:36 - Vincent Danen**：

如果你等待人参与进来，那么规模就不会扩大。

**00:04:41 - Saron Yitbarek**：

Vincent Danen 是红帽公司产品安全部门的主管，在过去的 20 年里，他见证了 DevOps 的快速发展。安全团队不得不竞相追赶。

**00:04:56 - Vincent Danen**：

刚开始的时候，每个月都有漏洞，后来变成了每隔一周，然后是每周都有。现在，每天都能找到几百个漏洞。

**00:05:08 - Saron Yitbarek**：

有趣的是，Vincent 说，随着安全团队的发展，实际上会出现更多的漏洞，而不是更少。

**00:05:17 - Vincent Danen**：

我们永远不会说，哦，我们现在安全了，我们做完了，我们的工作结束了。安全审计会一直存在，就像呼吸一样，这是必须要有的。

**00:05:27 - Saron Yitbarek**：

事实证明，对于安全性和可靠性团队来说，细节的问题变得越来越重要。

**00:05:35 - Vincent Danen**：

当我们在寻找这些漏洞时，我们会发现更多的东西，而且这个趋势还将继续。因为你会发现新的漏洞类型和一些我们可能认为不太重要的东西，或者以前甚至不知道它们存在的东西。我们会发现这些东西发展的速度很快，而且数量更多，因此规模爆炸性增长。知识、软件的数量、消费者的数量都促进了该领域安全性以及漏洞的增加。

**00:06:06 - Saron Yitbarek**：

一旦你将安全视为一个不断发展的问题，而不是随着时间的推移而 “得到解决” 的问题，那么自动化的理由就会变得更加充分。

**00:06:18 - Vincent Danen**：

嗯，我认为有了自动化，你可以以一种非常快的方式将这些东西集成到你的开发流水线中，这是其一。其二，你不需要人类来做这些工作，对吧？计算机不需要睡觉，所以你可以在处理器允许的情况下以最快速度浏览代码，而不是等待人类通过一些可能相当乏味的命令行来查找漏洞。

**00:06:44**：

然后通过模式匹配和启发式方法，甚至在开始编写代码的时候，你就可以知道代码中那些地方是易受攻击的。如果在你编写代码的时候，在你的 IDE 或者工具中有一个插件，它能告诉你。嘿，这看起来有点可疑，或者你刚刚引入了一个漏洞。在你提交代码之前你都可以纠正这些可疑点或者漏洞。

**00:07:08 - Saron Yitbarek**：

安全在进步。这真是一笔巨大的奖励。

**00:07:12 - Vincent Danen**：

每一天，甚至每一小时，都会有很多东西涌现出来。通过持续集成和持续部署，你写了代码，10 分钟后它就被部署了。因此，在代码被推送之前自动进行验证是非常关键的。

**00:07:32 - Saron Yitbarek**：

我们可以使用各种各样的工具来完成这个任务，不管是静态代码分析，还是 IDE 的插件，或者是一大堆其他选项。我们将在 [redhat.com/commandlineheroes](http://redhat.com/commandlineheroes) 上分享一些我们最喜欢的片段。

**00:07:53**：

一旦我们有了这些工具，它们将帮助我们把安全放在首位。结果就是，DevOps 被重新定义为 DevSecOps。安全被纳入到流程中。

**00:08:08 - Vincent Danen**：

就像开发人员和运维人员结合的方式一样，你将这两个规则合成到了一个规则。现在，你有了 DevOps，并将安全这第三个组件与开发和运维集成到一起，我认为这非常重要。因为事后才考虑安全性，这会使安全性变得非常被动、昂贵以及可能会损害消费者。当你一开始就把安全代入其中，你就可以完成开发工作，从头到尾进行安全检查并开始运作。

**00:08:44 - Saron Yitbarek**：

当然，就像我们在这一集的开头提到的，自动化只是一个大蛋糕的一半，而 Vincent 也明白这一点。

**00:08:53 - Vincent Danen**：

并不仅仅是一部分。不能仅仅在你的 CI/CD 流水线中随便引入一个工具就期望一切都变好。为了达到我们希望看到的最终有益结果，需要使用各种技术和行为。

**00:09:15 - Saron Yitbarek**：

自动化确实让我们做到了一半，但我们必须记住另一部分 —— 稍微模糊一点的那一部分。让我们一起来说，那就是文化部分，让开发者和运维人员都一起参与进来，这样这些问题就不再是可怕的问题。

**00:09:33**：

我们必须改变一种文化，而有些人正在学习以一种最不痛苦的方式，通过游戏的方式来做到这一点。

**00:09:44**：

现在让我们来看看事情的另一面。如今建立庞大的基础设施很容易，但这并不意味着我们应该做粗制滥造的工作。我们仍然应该努力改进我们的系统，确保可靠性，未雨绸缪。这就是 Jesse Robbins 正在努力实现的。

**00:10:08**：

如今，Jesse 是 Orion Labs 的 CTO，但在此之前，他因在亚马逊被称为灾难大师而名声大噪。在那里，Jesse 特别是在让大家至少意识到这些问题这件事上几乎是个奇才。他通过一个叫做 “游戏日” 的活动来做到这一点。让其中可能涉及成千上万的员工进行故障演练，通过灾难演练来习惯系统被破坏并了解发生的原因和方式。

**00:10:39**：

下面是 Jesse 和我在讨论，尤其是在运营方面如何建立可靠性和弹性。

**00:10:47**：

大家都知道你做了很多非常酷的事情，其中之一就是你在亚马逊做的活动 —— “游戏日”。那是什么? 是什么游戏?

**00:10:58 - Jesse Robbins**：

“游戏日” 是我创建的一个项目，通过大规模破坏来测试最脆弱系统的运行情况。如果你是 Netflix 的 “混乱猴子” 的粉丝，“游戏日” 则是我的一个可以实现类似的所有事情的东西。实际上，它非常专注于建立一种卓越的运营文化，建立大规模测试系统的能力，当系统崩溃时能了解它们是如何崩溃的以改进它们。然后还要建立一种文化，能够对事件做出反应并能恢复。它是按照事故指挥系统建模的，这是世界各地的消防部门用来处理任何规模事故的系统。

**00:11:56**：

它的诞生源于...

**00:11:58 - Saron Yitbarek**：

旁白，Jesse 早在 2005 年就经过训练成为一名消防员。在那儿，他了解了这个事故指挥系统，最终激发了 “游戏日” 的灵感。因此，所有做这些故障演练的开发人员，都要感谢 Jesse 对消防和应急管理的激情。好了，回到我们的谈话。

**00:12:22 - Jesse Robbins**：

弹性是一个系统的能力，这包括人和这些人建立的适应变化、应对失败和干扰的能力。而建立这种文化最好的方法之一 —— 建立一种文化，能够对这种类型的环境做出反应，并真正理解这些环境是如何工作的 —— 就是提供人员培训演习。这些演习可以很简单，比如重启服务器，也可以很复杂，比如关闭整个数据中心造成大规模故障等等。所以，“游戏日” 首先是一个过程。在这个过程中，你通过让整个组织聚集在一起，讨论系统如何发生故障，并思考人类对故障发生的预期。而这个演习本身就是 “游戏日” 开始时最有价值的部分之一。

**00:13:24**：

但是，当你实际对系统做了一个或大或小的破坏后。当你这样做的时候，你就可以看到每个人是如何反应的。你看到系统崩溃了，可能是之前安全的东西崩溃了，一个很容易理解的组件或者是某个东西暴露了一个潜在的缺陷。这些问题隐藏在软件、技术或者大规模的系统中，只有当你遇到极端或者意外事件时，我们才能发现。“游戏日” 的目的是为了训练员工并且建立系统让你了解他们如何在压力下工作。

**00:14:12 - Saron Yitbarek**：

所以当我听到 “游戏日” 的时候，我就会想，“这是对某个特定事件的回应吗? 它是从哪儿来的?”

**00:14:20 - Jesse Robbins**：

因此，“游戏日” 刚开始的一段时间内，因为我知道自己的角色以及作为消防员和应急管理人员的背景，因此将文化方法从注重预防失败的观念转变为拥抱失败非常重要，接受失败发生。激发我这样做的部分原因是我自己的经历，你知道，了解系统，比如建筑是如何倒塌的，市政基础设施是如何倒塌的，以及灾难是如何发生的，以及灾难给人们的压力。所以说，如果环顾我所在工作场所所具有的复杂性和运营规模就会知道，想要真的构建成一个高可靠性、持续在线环境的唯一办法就是拥抱消防服务的方法。我们知道失败会发生，这不是如果的问题，而是什么时候的问题。就像我之前的消防队长说的，不是你选择时机，而是时机选择你。你只需要在它发生的时候准备好即可。

**00:15:28 - Saron Yitbarek**：

哦，这个不错。所以当你第一次开始做 “游戏日” 并思考如何为灾难场景做准备时，每个人都同意了吗？你得到任何反对意见了吗？

**00:15:40 - Jesse Robbins**：

每个人都认为我疯了。因此，肯定有人反对。有趣的是，有一种非常简单的方法可以克服这种抵制，那就是首先创造出我称之为 “冠军” 的东西。你要教一小群人，如何以非常安全的方式工作，然后你能够使用一些信服的指标。你能够说，看，让我们只需衡量发生了多少分钟的中断，我的团队经过了这种培训并以这种方式进行操作的停机时间有多少分钟。相反，你的团队没有这个，并且似乎认为进行这种类型的培训和练习没有价值或者不重要。

**00:16:25 - Jesse Robbins**：

你一旦完成了这种事情，基本上就会有我所说的引人注目的事件。因此，经常会有断电或其他事情让组织突然意识到：哦，我的天哪，我们不能再像以前那样继续做事了。这就是你用来说服怀疑论者的方法。你一方面使用数据和性能数据，再结合指标，然后讲故事，然后等待一个大的故障或者可怕的事情发生。然后，你就可以说，如果我们要在 web 规模或者互联网规模上运维，整个组织都需要这种应变能力。

**00:17:06 - Saron Yitbarek**：

嗯嗯。所以我喜欢它的原因是它不只是停留在亚马逊内部。相反，它在传播。很多其他公司也在这么做。很多人最终接受了要为故障做好准备这个知识和过程。那下一步是要做什么？我们如何将从 “游戏日” 中学到的知识继续运用到未来的项目和公司中？

**00:17:31 - Jesse Robbins**：

我喜欢把它称为趋同进化。每个在 web 上运行的大型组织现在都采用了我提倡的事件管理基础的一个版本，并创建了他们自己的 “游戏日” 测试。比如，Netflix 将其称为 “混乱猴子”。谷歌有他们的 Dirt 计划。

**00:17:57 - Saron Yitbarek**：

那么你对未来的 “游戏日” 有什么寄望呢？

**00:18:00 - Jesse Robbins**：

首先让我感到兴奋的是，我们可以看到人们从闭门造车思维的转变。系统从根本上是相互联系，相互依赖的，而且由世界各地试图有所成就的聪明人构建和运行的。

**00:18:22**：

几年前，当我刚参加工作时，对运维工作毫不关心，我觉得那非常无趣。然后突然的，我们发现自己能够传播这样一种理念：开发人员和运营人员一起工作是在互联世界中构建和运行有意义的技术的唯一途径。

**00:18:44**：

所以我对未来的希望是，第一，我们看到越来越多的人接受这些想法并学习它。明白了当你建造了人们依赖的东西时，你有义务确保它是可信赖的、可用的、可靠的，它是人们可以作为日常生活的一部分来使用的东西。

**00:19:05**：

而且我们也看到了一种新的学科的诞生。“游戏日” 的这种思维模式正在被研究，也有博士正基于这个撰写博士学位论文。它正在不断建立中。

**00:19:16 - Saron Yitbarek**：

这真的是太棒了。

**00:19:16 - Jesse Robbins**：

也有写这方面的书，但是包含这些新资源的没有。只有少数人在会议上谈论他们认为世界应该怎么运转。所以我的那种鼓舞人心的希望是，你要明白如果你正在构建软件和技术，那么你真的成为了社会基础设施的一部分。所以作为一名消防员，我所努力贡献的一系列技能和正在出现的技术，这些技术将使它走得更远，它们是建造人们日常生活所依赖的东西的基础的一部分。

**00:19:53 - Saron Yitbarek**：

很好。这是一个很好的结束方式。Jesse，谢谢你抽出时间来。

**00:19:56 - Jesse Robbins**：

是的，谢谢。

**00:11:59 - Saku Panditharatne**：

我认为所有这些因素都不利于采用最佳软件。

**00:20:02 - Saron Yitbarek**：

在 Jesse 看来，像 “游戏日” 或者 “混乱猴子” 这样的演习是我们不断发展的科技文化的重要组成部分，但它们对于整个社会也至关重要。我很喜欢他很重视这个，因为他是对的。我们的世界取决于我们所做的工作。早在 90 年代，当电话网络开始崩溃时，这一点就很明显了。

**00:20:26 - 众议院小组委员会代表**：

我们所知道的现代生活几乎陷于停顿。

**00:20:31 - Saron Yitbarek**：

这是一种伴随的责任。我们有责任关心安全和可靠性，关心我们所建造东西的弹性。当然，当谈到在 DevOps 中的构建安全性时，我们才刚刚开始。

**00:20:53 - Saron Yitbarek**：

这是 Josh Bressers。他是数据搜索软件公司 Elastic 的产品安全主管。对 Josh 来说，尽管计算机行业已经成熟了半个世纪左右，但我们在这里讨论的安全问题却让人觉得它是刚刚才出现的。

**00:21:11 - Josh Bressers**：

实际上，就像我想说也行作为一个专业，安全仍然是非常新的东西，有很多事情我们还不是很了解。

**00:21:19 - Saron Yitbarek**：

但我们确实明白，在 DevSecOps 的世界中，有一些非常好的机会可以创造性的思考安全能达到什么成就。

**00:21:29 - Josh Bressers**：

我最近和一些人讨论了一个概念，他们利用用户行为来决定用户是否应该能够访问系统。每个人都有特定的行为，比如他们来自哪里，他们访问系统的时间，他们打字的方式，他们移动鼠标的方式。所以我认为，如果我们做得好，他们的这些行为，可以产生一些非常强大结果，如果我们能做到这一点，我们可以注意到有人在做什么。然后假设我表现的很奇怪，因为我刚刚扭伤了手臂。但你知道，另一端并不知道。

**00:22:05 - Josh Bressers**：

因此，它可能会说，这种行为就有些奇怪，我们就会希望你使用双因子认证登录，并且还会向您发送条短信或其他内容，对吧？这就从用户名和密码变成了更有趣的东西。所以我认为用新的和独特的方式来看待这些问题将是关键。在很多情况下，我们只是还没到那一步。

**00:22:27 - Saron Yitbarek**：

实现这一目标需要我们所描述的两大步骤。第一步，就是自动化，这很重要，因为……

**00:22:35 - Josh Bressers**：

人类很不擅长重复地做同一件事。

**00:22:38 - Saron Yitbarek**：

很公平。然后，我们有了第二步，就是文化，无论我们的职称是什么，我们所有人都有不安全感和责任感。

**00:22:49 - Josh Bressers**：

当大多数人想到安全团队时，他们不会认为那是一群快乐的好好先生，对吧? 一般来说，这些人都很可怕，脾气暴躁，令人讨厌，如果他们出现了，就会毁了你的一天。没有人想要这样，对吧?

**00:23:10 - Saron Yitbarek**：

但我认为我们可以克服这种偏见，因为我们必须这样想——每天都有更多的安全威胁发生，而且 IT 基础设施每天都在变得更大、更强。把这两个事实放在一起，你最好可以生活在一个被安全环绕的世界里。一个非常 DevSecOps 的世界，在这个世界里，开发人员和运营人员都在提升他们的安全，提高他们的可靠性。我所谈论的是一个自动化被整合到每个阶段的未来，每个人对这些问题的态度变得更加全面。这就是我们保护未来系统安全的方法。这是我们保持电话响，灯开，所有现代生活健康强壮的方法。如果你查一下《福布斯》全球 2000 家公司的名单，也就是前 2000 家上市公司，你会发现其中整整四分之一的公司都采用了 DevOps。集成的敏捷工作场所正在成为规则。并且在几年之内，关于 DevSecOps 的思考可能会成为第二天性。我们希望尽可能快，但是当团队中的每个成员都齐心协力时，长距离比赛实际上会更快。

**00:24:40 - Saron Yitbarek**：

下一集，我们将面临数据的大爆炸。人类已经进入了<ruby> 泽字节 <rt>  Zettabyte </rt></ruby>时代。到 2020 年，我们将在服务器上存储大约 40 泽字节的数据，而这些信息大部分甚至现在还不存在。但是我们该如何让这些数据有用呢？我们如何使用高性能计算和开源项目让我们的数据为我们所用呢？我们会在 Command Line Heroes 第 6 集中找到答案。

**00:25:13 - Saron Yitbarek**：

提醒一下，我们整季都在致力于《代码英雄游戏》的开发。这是我们自己的开源项目，我们很喜欢看着它的诞生，但是我们需要你来帮助我们完成。如果你点击 [redhat.com/commandlineheroes，你可以发现如何贡献。你也可以深入了解我们在这节课中讨论过的任何内容。](http://redhat.com/commandlineheroes%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%8F%91%E7%8E%B0%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE%E3%80%82%E4%BD%A0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3%E6%88%91%E4%BB%AC%E5%9C%A8%E8%BF%99%E8%8A%82%E8%AF%BE%E4%B8%AD%E8%AE%A8%E8%AE%BA%E8%BF%87%E7%9A%84%E4%BB%BB%E4%BD%95%E5%86%85%E5%AE%B9%E3%80%82)

**00:25:39 - Saron Yitbarek**：

《代码英雄》是红帽原创播客。你可以在 Apple Podcast、Google Podcast 或任何你想做的事情上免费收听。我是 Saron Yitbarek。坚持编程，下期再见。

>
> **什么是 LCTT SIG 和 LCTT LCRH SIG**
>
>
> LCTT SIG 是 LCTT <ruby> 特别兴趣小组 <rt>  Special Interest Group </rt></ruby>，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。
>
>
> 欢迎[加入 LCRH SIG](/article-12436-1.html) 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。
>
>
>

---

via: <https://www.redhat.com/en/command-line-heroes/season-2/the-one-about-devsecops>

作者：[Red Hat](https://www.redhat.com/en/command-line-heroes) 选题：[bestony](https://github.com/bestony) 译者：[mrpingan](https://github.com/mrpingan) 校对：[bestony](https://github.com/bestony), [wxy](https://github.com/wxy)

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


KeePassXC：社区驱动的开源密码管理器（不基于云服务）

# KeePassXC：社区驱动的开源密码管理器（不基于云服务）

>
> KeePassXC 是一款有用的开源跨平台密码管理器，即使它不是云端工具，在功能上也毫不逊色。下面，我们就来快速了解一下它。
>
>
>

### KeePassXC：一个跨平台的开源密码管理器

KeePassXC 是 [KeePassX](https://www.keepassx.org/) 的社区复刻版本，旨在成为 [KeePass Password Safe](https://keepass.info)（适用于 Windows）的跨平台移植。它是完全免费使用和跨平台的（Windows、Linux 和 macOS）。

事实上，它是目前 [Linux 最佳密码管理器](https://itsfoss.com/password-managers-linux/)之一。它的功能选项既适合新手，也适合那些想要进一步控制以保护系统上的密码数据库的高级用户。

是的，与我[最喜欢的 Bitwarden 密码管理器](https://itsfoss.com/bitwarden/)不同，KeePassXC 不是基于云端的，密码永远不会离开系统。有些用户确实喜欢不把密码和秘密保存在云服务器中。

当你开始使用密码管理器时，你应该能在它上找到你所需要的所有基本功能。但是，在这里，为了让你初步了解，我会强调提到一些它提供的功能。

### KeePassXC 的功能

值得注意的是，对于一个新手来说，这些功能可能会让人有点不知所措。但是，考虑到你想充分使用它，我想你应该真正了解它所提供的功能：

* 密码生成器
* 能够从 1Password、KeePass 1 和任何 CSV 文件导入密码。
* 通过导出和同步 SSL 证书支持，轻松共享数据库。
* 支持数据库加密 （256 位 AES）
* 浏览器集成（可选）
* 能够搜索你的凭证
* 在应用中自动输入密码
* 数据库报告，以检查密码的健康状况和其他统计数字
* 支持导出为 CSV 和 HTML
* 支持双因素认证令牌
* 支持将文件附加到密码中
* 支持 YubiKey
* 支持命令行
* 支持集成 SSH 代理
* 必要时改变加密算法
* 能够使用 DuckDuckGO 下载网站图标
* 数据库超时自动锁定
* 清除剪贴板和搜索查询的能力
* 自动保存文件
* 支持文件夹/嵌套文件夹
* 设置密码的有效期
* 提供黑暗主题
* 跨平台支持

正如你所看到的，它的确是一款功能丰富的密码管理器。所以，我建议你如果想使用提供的每一个功能，就好好探索它。

### 在 Linux 上安装 KeePassXC

你应该能在你安装的发行版的软件中心找到它。

你也可以从官方网站上获得 AppImage 文件。如果你还不知道的话，我建议你去看看我们的[在 Linux 中使用 AppImage 文件](https://itsfoss.com/use-appimage-linux/)的指南。

另外，你还会发现有一个 snap 包可以用。除此之外，你还可以得到 Ubuntu PPA、Debian 包、Fedora 包和 Arch 包。

如果你好奇，你可以直接探索[官方下载页面](https://keepassxc.org/download/)的可用包，并查看他们的 [GitHub 页面](https://github.com/keepassxreboot/keepassxc)的源代码。

* [下载 KeePassXC](https://keepassxc.org)

### 总结

如果你不是 [Bitwarden](https://itsfoss.com/bitwarden/) 等云端开源密码管理器的粉丝，KeePassXC 应该是你的绝佳选择。

在这里你得到的功能数量可以让你可以在多个平台上保证密码的安全和易于维护。即使没有开发团队的“官方”移动应用，你也可以尝试他们的一些[推荐应用](https://keepassxc.org/docs/#faq-platform-mobile)，它们与其数据库兼容，并提供相同的功能。

你尝试过 KeePassXC 吗？你更喜欢使用什么作为你的密码管理器？请在下面的评论中告诉我你的想法。

---

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

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


#新闻拍一拍# 新版龙芯 CPU 信息技术教材问世：覆盖小学、初中

Summary: • 微软宣布其基于 Chromium 的 Edge 浏览器将于下个月登陆 Linux • 台积电 2nm 工艺重大突破，2023 年风险试产良率或达 90%

# #新闻拍一拍# 新版龙芯 CPU 信息技术教材问世：覆盖小学、初中

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

#### 新版龙芯 CPU 信息技术教材问世：覆盖小学、初中

近期，由江苏省中小学教学研究室编著、凤凰科学技术出版社出版的最新龙芯中学、小学信息技术教材问世。据悉，龙芯教材曾经于 2013 年出版，本次为修订再版。除了常规的软件应用介绍以外，还新增了机器人、创客、Scratch 编程、物联网等知识，进一步增强了中小学生动手实践的环节，在使用计算机中学习计算机。新版教材保留了对于龙芯团队、龙芯计算机的介绍，对于龙芯 CPU 的诞生和使命，也用了相当一部分笔墨去体现。

来源：[快科技](https://www.cnbeta.com/articles/tech/1032289.htm)

>
> 拍一拍：等我下单买两本回来学习一下，JD 有售~
>
>
>

#### 微软宣布其基于 Chromium 的 Edge 浏览器将于下个月登陆 Linux

这已经是酝酿了一段时间的事情了。该公司首次在 Build 2019 的幻灯片上展示了它的到来，这个消息同时也在当年的 Ignite 上得到了确认。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032271.htm)

>
> 拍一拍：微软真的想让 Web 开发者加入他们的用户行列，因为很多开发者都在使用 Linux。
>
>
>

#### 台积电 2nm 工艺重大突破，2023 年风险试产良率或达 90%

据悉，台积电去年成立了2nm专案研发团队，寻找可行路径进行开发。有别于 3nm 和 5nm 采用鳍式场效应晶体管（FinFET），台积电的 2nm 工艺改用全新的多桥通道场效电晶体（MBCFET）架构。

来源：[雷锋网](https://www.cnbeta.com/articles/tech/1032239.htm)

>
> 拍一拍：技术的进步让人应接不暇。
>
>
>


上海外滩大会，你不可不知的五大技术看点

Summary: 明天，「Inclusion 外滩大会」就要开幕了，在这场全球金融科技盛会中，作为金融业的得力助手，科技主题，也占据了不少的篇幅。而作为 IT 人，如果你来到了外滩大会，那么下面这些技术分享，一定不能错过。

# 上海外滩大会，你不可不知的五大技术看点

>
> 明天，「[Inclusion 外滩大会](https://www.inclusionconf.com/)」就要开幕了，在这场全球金融科技盛会中，作为金融业的得力助手，科技主题，也占据了不少的篇幅。而作为 IT 人，如果你来到了外滩大会，那么下面这些技术分享，一定不能错过。
>
>
>

### 必看一：OceanBase 是怎样炼成的？

作为一切 IT 应用的基础，数据库是每一场技术大会都必不可少的主题。而随着云计算时代的到来，数据库领域也发生了天翻地覆般的改变。互联网的海量应用场景给了数据库技术最肥沃的试验田。而自研数据库技术得益于国内海量的数据应用，快速创新，持续蓄力。

作为自研数据库的翘楚，OceanBase 是谈及自研数据库绕不过去的话题，在本次的 Inclusion 大会中，主办方邀请了 OceanBase 团队的首席技术官阳振坤博士，来「[**数据库，新标杆，新征途**](https://www.inclusionconf.com/schedule/forums/7040)」分会场分享「**OceanBase** **数据库七亿** **tpmC** **的关键技术**」

除了 OceanBase 以外，关于数据库，主办方还邀请了华东师范大学副院长，“智能+”研究院院长，数据学院教授周傲英博士分享「数据库的发展与中国的机遇」、西安银行科技部总架构师肖梁先生分享「企业级数据库加速客户数字化转型」、恒生电子股份有限公司云基础系统发展部总经理王佳玮分享「证券行业数据库应用创新之路」等。如果你对数据库感兴趣，那么一定不能错过「[**数据库，新标杆，新征途**](https://www.inclusionconf.com/schedule/forums/7040)」分会场所分享的各种技术主题。

### 必看二：智能驱动金融变革

人工智能、分布式计算等新技术，引领了当下技术的潮流，更是将金融科技推向了新的发展高度。在新的时代，金融的创新更多的依赖这些新兴技术所带来的改变和智能与技术所引导的业务创新场景。在本次大会中，主办方邀请了全球顶级思想领袖、技术大咖和学术精英共同探讨在新的技术潮流下，金融科技将何去何从？

在本次的 Inclusion 大会中，**蚂蚁集团副总裁芮雄文**将会就新技术潮流下的金融科技这一话题，在「[**智能计算峰会** **-** **重塑金融**](https://www.inclusionconf.com/schedule/forums/7038)」分会场分享「**新时代新要求：科技重塑金融创新**」。

不仅如此，蚂蚁集团副总裁韦韬将会分享「**安全计算的演变与展望**」，介绍蚂蚁集团是如何让计算变得更加安全和可信。

此外，你还可以在「[**智能计算峰会** **-** **重塑金融**](https://www.inclusionconf.com/schedule/forums/7038)」分会场听到来自蚂蚁集团的计算存储首席架构师何昌华分享「智能计算实践」、美国三院院士，曾获冯诺依曼奖的 Michael Jordan 分享「人工智能发展趋势」以及恒生电子股份有限公司总裁刘曙峰分享「智能化推进金融数字化下半场」等主题。

如果你关注人工智能、机器学习、那么「智能计算峰会 - 重塑金融」，将是你不容错过的一场。

### 必看三：如何构建可信原生

云原生理念和实践已经取得了广泛的认可和传播，云原生的关键技术也在不断发展，提升IT系统的生产力，然而在注重信任的金融领域，如何在利用云原生带来的效能提升的同时，进一步提升安全和稳定性，仍然是个极具挑战的问题。为了更好的讨论这个问题，本次大会的主办方邀请了蚂蚁集团研究员何征宇在「[**可信原生** **-** **安全稳定的基础设施**](https://www.inclusionconf.com/schedule/forums/7043)」分享「**可信原生****:** **下一代的金融技术基础设施**」。

除了下一代金融技术基础设施的分享以外，「[**可信原生** **-** **安全稳定的基础设施**](https://www.inclusionconf.com/schedule/forums/7043)」分会场还邀请了陈渝副教授分享「基于 Rust 语言的 OS 探索」和英特尔 IAGS 系统软件 高级技术总监刘秉伟分享「英特尔系统全栈，赋能机密计算新时代」。

未来，每一个金融云，都将会基于可信原生建立，那么在现在，就是来了解他的最好时刻。

### 必看四：技术风险控制的实现秘诀

随着企业数字化转型的不断推进，越来越多的新兴技术开始出现在企业的各种应用中，这些应用改变了行业，但也同样带来了足以改变行业的问题。在这样的大背景下，控制技术因素引入的稳定性风险就显得日趋重要。在本次大会的「[**技术风险，稳妥创新**」](https://www.inclusionconf.com/schedule/forums/7048)分会场，云集了蚂蚁集团、中国人寿、滴滴等多个企业的技术专家，一同探讨如何在企业内进行技术风险的控制。

在「[**技术风险，稳妥创新**](https://www.inclusionconf.com/schedule/forums/7048)」分会场中，以下主题不容错过：

### 必看五：创新引领未来

产学研的打通，促进了研究的落地发芽，推进了产业和学界的交流和沟通，更是为行业和国家培养了一批又一批的优秀人才，在这次大会中，蚂蚁集团联合产学研机构，邀请了国内外优秀学者共话如何推进计算机科学领域基础性、前瞻性的技术发展和人才培养。在本次外滩大会的「[**校企合作** **-** **引领技术** **、关注人才、共创未来关注**](https://www.inclusionconf.com/schedule/forums/7044)」分会场，你将会了解到全世界高校的尖端研究与新时代下产学研如何合作、共进、共研。

在「[**校企合作**](https://www.inclusionconf.com/schedule/forums/7044)」分论坛，主办方邀请了**教育部高等教育司巡视员兼教育部高等教育教学评估中心主任刘凤泰**分享「**新时代下的校企合作探索与思考**」

### 除了这些，还有什么值得看？

如果上面的这五个会场你还觉得不够，Inclusion 外滩大会还有其他的分论坛，可以满足你对于技术的一切要求，比如：

* [实时智能分论坛](https://www.inclusionconf.com/schedule/forums/7045)：专注实时计算系统和下一代数据存储于计算领域的创新与应用
* [图智能分论坛](https://www.inclusionconf.com/schedule/forums/7042)：了解复杂金融关系的最优解 —— 图智能
* [体验科技分论坛](https://www.inclusionconf.com/schedule/forums/7041)：探讨新一代极致的用户体验及最佳工程实践
* [AI 安全分论坛](https://www.inclusionconf.com/schedule/forums/7000)：在新的安全形式下，如何推动和引领业界在AI安全领域的发展？
* [IoT 安全分论坛](https://www.inclusionconf.com/schedule/forums/6998)：在 IoT 新时代，如何在服务模式业务创新的基础上，保障用户的安全和隐私？

当然，整个 Inclusion 外滩大会不止这些，更多的好内容，你可以访问官网 [www.inclusionconf.com](https://www.inclusionconf.com/) 了解。

### 总结

[Inclusion 大会](https://www.inclusionconf.com/)作为一场全球金融科技盛会，在科技领域能够邀请如此多的行业专家、学者来一同讨论金融科技的现在与未来，对于每一个从业者来说，都是不可多得的机会。如果你有机会来到外滩大会，一定不要错过这些精彩的分享，来听一听技术专家的分享。


用 Jupyter Notebook 教 Python

# 用 Jupyter Notebook 教 Python

>
> 有了 Jupyter、PyHamcrest，用一点测试的代码把它们连在一起，你就可以教任何适用于单元测试的 Python 内容。
>
>
>

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

关于 Ruby 社区的一些事情一直让我印象深刻，其中两个例子是对测试的承诺和对易于上手的强调。这两方面最好的例子是 [Ruby Koans](https://github.com/edgecase/ruby_koans)，在这里你可以通过修复测试来学习 Ruby。

要是我们能把这些神奇的工具也用于 Python，我们应该可以做得更好。是的，使用 [Jupyter Notebook](https://jupyter.org/)、[PyHamcrest](https://github.com/hamcrest/PyHamcrest)，再加上一点类似于胶带的粘合代码，我们可以做出一个包括教学、可工作的代码和需要修复的代码的教程。

首先，需要一些“胶布”。通常，你会使用一些漂亮的命令行测试器来做测试，比如 [pytest](https://docs.pytest.org/en/stable/) 或 [virtue](https://github.com/Julian/Virtue)。通常，你甚至不会直接运行它。你使用像 [tox](https://tox.readthedocs.io/en/latest/) 或 [nox](https://nox.thea.codes/en/stable/) 这样的工具来运行它。然而，对于 Jupyter 来说，你需要写一小段粘合代码，可以直接在其中运行测试。

幸运的是，这个代码又短又简单：

```
import unittest

def run_test(klass):
    suite = unittest.TestLoader().loadTestsFromTestCase(klass)
    unittest.TextTestRunner(verbosity=2).run(suite)
    return klass

```

现在，装备已经就绪，可以进行第一次练习了。

在教学中，从一个简单的练习开始，建立信心总是一个好主意。

那么，让我们来修复一个非常简单的测试：

```
@run_test
class TestNumbers(unittest.TestCase):

    def test_equality(self):
        expected_value = 3 # 只改这一行
        self.assertEqual(1+1, expected_value)

```

```
    test_equality (__main__.TestNumbers) ... FAIL

    ======================================================================
    FAIL: test_equality (__main__.TestNumbers)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-7-5ebe25bc00f3>", line 6, in test_equality
        self.assertEqual(1+1, expected_value)
    AssertionError: 2 != 3

    ----------------------------------------------------------------------
    Ran 1 test in 0.002s

    FAILED (failures=1)

```

“只改这一行” 对学生来说是一个有用的标记。它准确地表明了需要修改的内容。否则，学生可以通过将第一行改为 `return` 来修复测试。

在这种情况下，修复很容易：

```
@run_test
class TestNumbers(unittest.TestCase):

    def test_equality(self):
        expected_value = 2 # 修复后的代码行
        self.assertEqual(1+1, expected_value)

```

```
    test_equality (__main__.TestNumbers) ... ok

    ----------------------------------------------------------------------
    Ran 1 test in 0.002s

    OK

```

然而，很快，`unittest` 库的原生断言将被证明是不够的。在 `pytest` 中，通过重写 `assert` 中的字节码来解决这个问题，使其具有神奇的属性和各种启发式方法。但这在 Jupyter notebook 中就不容易实现了。是时候挖出一个好的断言库了：PyHamcrest。

```
from hamcrest import *
@run_test
class TestList(unittest.TestCase):

    def test_equality(self):
        things = [1,
                  5, # 只改这一行
                  3]
        assert_that(things, has_items(1, 2, 3))

```

```
    test_equality (__main__.TestList) ... FAIL

    ======================================================================
    FAIL: test_equality (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-11-96c91225ee7d>", line 8, in test_equality
        assert_that(things, has_items(1, 2, 3))
    AssertionError:
    Expected: (a sequence containing <1> and a sequence containing <2> and a sequence containing <3>)
         but: a sequence containing <2> was <[1, 5, 3]>

    ----------------------------------------------------------------------
    Ran 1 test in 0.004s

    FAILED (failures=1)

```

PyHamcrest 不仅擅长灵活的断言，它还擅长清晰的错误信息。正因为如此，问题就显而易见了。`[1, 5, 3]` 不包含 `2`，而且看起来很丑：

```
@run_test
class TestList(unittest.TestCase):

    def test_equality(self):
        things = [1,
                  2, # 改完的行
                  3]
        assert_that(things, has_items(1, 2, 3))

```

```
    test_equality (__main__.TestList) ... ok

    ----------------------------------------------------------------------
    Ran 1 test in 0.001s

    OK

```

使用 Jupyter、PyHamcrest 和一点测试的粘合代码，你可以教授任何适用于单元测试的 Python 主题。

例如，下面可以帮助展示 Python 从字符串中去掉空白的不同方法之间的差异。

```
source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):

    # 这是个赠品：它可以工作！
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string # 只改这一行
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string # 只改这一行
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))

```

```
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... FAIL
    test_start_strip (__main__.TestList) ... FAIL

    ======================================================================
    FAIL: test_end_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-16-3db7465bd5bf>", line 19, in test_end_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with '  hello' and a string ending with 'world')
         but: a string ending with 'world' was '  hello world  '

    ======================================================================
    FAIL: test_start_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-16-3db7465bd5bf>", line 14, in test_start_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with 'hello' and a string ending with 'world  ')
         but: a string starting with 'hello' was '  hello world  '

    ----------------------------------------------------------------------
    Ran 3 tests in 0.006s

    FAILED (failures=2)

```

理想情况下，学生们会意识到 `.lstrip()` 和 `.rstrip()` 这两个方法可以满足他们的需要。但如果他们不这样做，而是试图到处使用 `.strip()` 的话：

```
source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):

    # 这是个赠品：它可以工作！
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string.strip() # 改完的行
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string.strip() # 改完的行
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))

```

```
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... FAIL
    test_start_strip (__main__.TestList) ... FAIL

    ======================================================================
    FAIL: test_end_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-17-6f9cfa1a997f>", line 19, in test_end_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with '  hello' and a string ending with 'world')
         but: a string starting with '  hello' was 'hello world'

    ======================================================================
    FAIL: test_start_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-17-6f9cfa1a997f>", line 14, in test_start_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with 'hello' and a string ending with 'world  ')
         but: a string ending with 'world  ' was 'hello world'

    ----------------------------------------------------------------------
    Ran 3 tests in 0.007s

    FAILED (failures=2)

```

他们会得到一个不同的错误信息，显示去除了过多的空白：

```
source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):

    # 这是个赠品：它可以工作！
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string.lstrip() # Fixed this line
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string.rstrip() # Fixed this line
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))

```

```
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... ok
    test_start_strip (__main__.TestList) ... ok

    ----------------------------------------------------------------------
    Ran 3 tests in 0.005s

    OK

```

在一个比较真实的教程中，会有更多的例子和更多的解释。这种使用 Jupyter Notebook 的技巧，有的例子可以用，有的例子需要修正，可以用于实时教学，可以用于视频课，甚至，可以用更多的其它零散用途，让学生自己完成一个教程。

现在就去分享你的知识吧!

---

via: <https://opensource.com/article/20/9/teach-python-jupyter>

作者：[Moshe Zadka](https://opensource.com/users/moshez) 选题：[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 Journal 宣布再次归来

Summary: • 开发者现可在 Windows 平台上构建和运行 Swift 代码 • 阿里启用全球最大液冷数据中心，每年省电 7000 万度

# #新闻拍一拍# 停摆一年后，Linux Journal 宣布再次归来

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

#### 停摆一年后，Linux Journal 宣布再次归来

1994 年 4 月诞生的《Linux 杂志》，在持续运营 23 年后因资金耗尽而在 2019 年停止了出版。不过最新的消息是，由 Slashdot Media 拥有的 Linux Journal，已在官网上宣布了它的再次回归。目前尚未恢复任何订阅/发行模型的计划，相关内容将在 [LinuxJournal.com](http://linuxjournal.com/) 网站上独家发布。近期的目标是让团队熟悉 Linux Journal 网站，并确保它不会再次被关闭。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032637.htm)

>
> 拍一拍：欢迎归来，LJ！
>
>
>

#### 开发者现可在 Windows 平台上构建和运行 Swift 代码

Swift 团队在周二发布的博客文章中宣布，这将使得开发者能够直接在 Windows 10 平台上构建、运行和调试 Swift 代码，此外工具包中囊括了编译器、标准库、核心库等构建功能性应用程序所需的所有关键要素。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032531.htm)

>
> 拍一拍：Swift 也希望赢得更多开发者。
>
>
>

#### 阿里启用全球最大液冷数据中心，每年省电 7000 万度

9 月 23 日，阿里巴巴宣布，在杭州的首座超级数据中心——杭州数据中心正式投入使用。工程师将服务器浸泡在特殊冷却液中散热，故障率降低了50%，散热全程无需风扇、空调等制冷设备，整体节能超70%，年均PUE低至1.09，全球最低。

来源：[快科技](https://www.cnbeta.com/articles/tech/1032501.htm)

>
> 拍一拍：为阿里点赞，为节能点赞！
>
>
>


华为：“地主”家有“余粮”

# 华为：“地主”家有“余粮”

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

9 月 23 日，上海。

华为在上海召开了规模盛大的华为全联接大会。而就在一周前，华为刚刚遭受到了新一轮的美国禁令的打击。

今天阴有小雨，正如华为目前所面临的困境，但雨很快就停了，华为也在这次全联接大会上给出了自己的答案。

### 夜来风雨声，花落知多少

美国禁令之下，对华为的各项封锁让每一个国人都感同身受。特别是当你从事的是 ICT 行业相关工作时，美国禁令带给每个人的，不仅仅是触目惊心的封锁，更是成为了每一个 ICT 从业者深深的忧虑，我们每一个人都可能因为美国的封锁而举步维艰。

华为轮值董事长郭平在全联接大会答记者问时坦承：

>
> 美国的加大制裁，第三次修改法律制裁确实给我们的生产、运营带来了很大困难，但是具体到每一个芯片是九月十五日才储备入库，所以具体数据还在评估过程中。
>
>
>

作为处于博弈风暴中心的华为，在遭遇了 Intel、AMD、ARM 等硬件企业的断供，在被 Google 等合作厂商拒绝延续服务后，毫无疑问，在相应生态中必然会面临着极大的挑战。在被美国第三轮制裁之后，连台积电都无法再为华为代工，使得华为真正面临“无芯可用”的地步。

对于华为来说，To B 的企业业务所需要的芯片、零部件等资源准备的比较充沛，这部分业务的消耗也不会有明显的波动。但 To C 的手机业务对于芯片的消耗是巨量的。对于一些低端的机型，华为尚可选择联发科的芯片来完成产品的研发。但对于高端产品，联发科的产品还不具备竞争力，或迫使华为暂停生产，努力寻求方案，等待芯片制造商申请许可。

### 好雨知时节，当春乃发生

面临封锁寒冬，在外界看来，华为所遭受的压力和挑战是前所未有的。但从华为的态度来看，还是处惊不变的，这从郭平在答记者问的讲话中可见一斑：

>
> 讲一个我们自己的故事，1990 年代中国交换机 100% 都是非中国的产品，巴黎统筹委员会对七号信令等技术进行出口限制，我们无法获取，就从原理开始，最后做出华为数字交换机。
>
>
>

在遭遇禁令封锁，业务遇阻，在具体的影响还需要进一步评估的同时，华为并没有踟蹰于发展，而是进一步加大了对行业、企业、政务等领域的投入。

郭平讲到：

>
> 至于“地主”家的“余粮”，对于包含基站在内的 TO B 业务，我们还是比较充分的，华为希望把联接、计算、人工智能、行业应用结合起来，为客户创造价值，这方面有巨大的机会。
>
>
>

在郭平的演讲中，他举了不同行业的例子，比如通过帮助焦化企业通过 AI 来优化生产模型，可以帮助企业每年节省 2700 万元的成本；通过帮助物流系统引入智慧调度，提升了企业物流园的各项工作效率；通过帮助政府建立智慧城市，提升了城市的调度和治理水平。这些行业的例子，都展示了华为在与企业、政府合作的成就。

TO B 业务是华为一直以来的强项，华为手握通信运营商的基础设施订单，和各行业深度合作，在过去的时间里，打造了各种各样的行业应用。而 5G 作为一个新兴的技术，和华为过去在做的“联接、计算、人工智能、行业应用“整合在一起，构成了华为的新希望—— “5 机”。“5 机”指的是华为通过将“联接、计算、人工智能、行业应用和 5G”进行联接，希望借助 “5 机”对于政府和企业的全面数字化、全面智能化添砖加瓦。借助于 “5 机”，华为可以帮助政府以更高效、更便捷的方式完成城市和地区的治理；借助于“5 机”，华为可以帮助行业和企业更好的完成数字化和智能化，让更多的行业可以享受到科技发展带来的价值。

在华为看来，数字经济的基础是联接和计算。5G、物联网是联接技术；云、AI 代表计算技术。摩尔定律大家都很熟悉，算力随着时间的推移，变得更加强大而且价格低廉。梅特卡夫定律指出，网络的价值随着联接数的增加而倍增。联接的密度乘以计算的精度，就是数字经济的强度。华为希望通过 “5 机”，帮助更多的行业建立起数字化方案，让更多行业可以共享计算机发展的成果。

而另一方面，对于 To C 业务，华为也并没有束手待毙，而是积极应对。华为消费者业务云服务总裁张平安说：

>
> 现在我们要做的是在限制的情况下如何继续做好其他方面的创新，……虽然我们在芯片领域会受到一定限制，这是其一。第二，我们看到我们还有 7 亿用户，我们仍然可以为 7 亿用户提供很多创新业务与服务。我们希望能够通过我们的 HMS 能够给用户继续服务好，我们也希望通过我们的操作系统能够继续研发，能够在下一代操作系统有不同的不一样的创新。
>
>
> 刚才问到我们会不会减缓我们的脚步，这更坚定我们构建 HMS 生态的决心。我们认为（我们的）生态一直是非常开放的，因为我们所做的所有生态数字服务以及生态平台系统，最终是服务全球用户。
>
>
>

同时，郭平也说：

>
> 我也注意到高通说他们在向美国政府申请出口许可，如果他们申请到，我们很乐意使用高通芯片制造手机。……我们也乐意帮助可信的供应链增强他们的芯片制造、装备、材料的能力，帮助他们也是帮助我们自己。
>
>
>

### 空山新雨后，天气晚来秋

如果说过去一段时间的遭遇，是华为所面临的阴霾，那么当下全联接大会中所看到的，则是华为的新希望。


《代码英雄》第二季（6）：数据大爆炸

# 《代码英雄》第二季（6）：数据大爆炸

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

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

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

本文是《[代码英雄](https://www.redhat.com/en/command-line-heroes)》系列播客[第二季（6）：数据大爆炸](https://www.redhat.com/en/command-line-heroes/season-2/the-data-explosion)的[音频](https://dts.podtrac.com/redirect.mp3/audio.simplecast.com/4c5f676c.mp3)脚本。

>
> 导语：大数据将有助于解决大问题：我们如何种植粮食、如何向需要的人运送物资、如何治疗疾病。但首先，我们需要弄清楚如何处理它。
>
>
> 现代生活充满了相互联系的组件。我们现在一天产生的数据比几千年来的数据还要多。 Kenneth Cukier 解释了数据是如何发生变化的，以及它是如何开始改变我们的。Ellen Grant 博士告诉我们波士顿儿童医院是如何使用开源软件将堆积如山的数据转化为个性化治疗方法。Sage Weil 则分享了 Ceph 的可扩展和弹性云存储如何帮助我们管理数据洪流。
>
>
> 收集信息是了解我们周围世界的关键。大数据正在帮助我们拓展永不停歇的探索使命。
>
>
>

**00:00:03 - Saron Yitbarek**：

如果你把从人类历史早期到 2003 年创建的所有数据计算在内，你将得到大约 500 万 GB 的数据。我们昨天创建了多少 GB 数据？

**00:00:15 - 问卷调查答案 1**：

哦，天哪，10 万。

**00:00:21 - 问卷调查答案 2**：

可能是 500 万 GB 数据。

**00:00:23 - 问卷调查答案 3**：

我们在昨天一天之内创建了多少 GB 的数据？1000 万 GB 数据？

**00:00:31 - 问卷调查答案 4**：

我不太知道，可能是 200 万 GB 数据？

**00:00:36 - 问卷调查答案 5**：

也许一天就有 100 万 GB 数据？

**00:00:40 - Saron Yitbarek**：

答案是？超过 25 亿 GB 数据！

**00:00:44 - 问卷调查答案 1**：

哇哦。

**00:00:44 - 问卷调查答案 2**：

25 亿？

**00:00:45 - 问卷调查答案 3**：

所以，我们已经打破了世界纪录。

**00:00:45 - 问卷调查答案 4**：

那可真是很多个 G 啊。

**00:00:45 - 问卷调查答案 5**：

我都不敢相信那有这么多的数据。

**00:00:52 - Saron Yitbarek**：

在 2016 年，我们的年度在线数据流量首次超过了 1ZB。一个 ZB 是 1000^7 字节。好，记住这个数字了吗？现在把它乘以 3，因为那是我们将在 2021 年拥有的数据量大小。

**00:01:10**：

我知道，大脑不是以 ZB 为单位进行思考的，但请你至少暂时记住这个数。 我们的 IP 流量将在五年内翻三番。 这是数据的洪流，而我们正处于其中。

**00:01:24**：

在刚过去的一分钟里，人们发出了 1600 万条短信；与此同时，在我说出这句话的时间里，谷歌处理了 20 万条搜索。

**00:01:37**：

如果我们能在数据洪流来临时做好准备、站稳脚跟，那么隐藏在其中的模式、答案和秘密可以极大地改善我们的生活。

**00:01:50**：

我是 Saron Yitbarek，这里是《代码英雄》，一款红帽公司原创的播客节目。浪潮近在眼前。这里是第二季第六集，数据大爆炸。

**00:02:17**：

我们如何处理如此大量的数据？ 采集到这些数据后，我们如何利用它们？ 大数据将为我们解决一些最复杂的问题：

**00:02:29**：

如何管理交通、如何种植粮食、如何向需要的人提供物资，但这一切的前提是，我们必须弄清楚该怎么使用这些数据、以及该怎么在短得不能再短的时间内完成对它们的处理。

**00:02:43 - Kenneth Cukier**：

通过获取更多的数据，我们可以深入到这些子群体、这些细节，而这是我们以前从来没有过的方式。

**00:02:53 - Saron Yitbarek**：

Kenneth Cukier 是《<ruby> 经济学人 <rt>  The Economist </rt></ruby>》的高级编辑，他也和我都在科技播客《Babbage》里。

**00:03:01 - Kenneth Cukier**：

这并不是说我们以前无法收集数据。我们可以，但这真的、真的很昂贵。真正的革命性突破是，我们使数据搜集变得十分容易。

**00:03:10**：

现在收集数据的成本极低，而且处理起来也超级简单，因为都是由电脑完成的。这已经成为我们这个时代的巨大革命，它可能是现代生活最显著的特征，在未来几十年甚至下个世纪都会如此。这也是大数据如此重要的原因。

**00:03:33 - Saron Yitbarek**：

历史可以提醒我们这种变化是翻天覆地的。想想看，4000 年前，我们把所有的数据都刻在了干泥板上。

**00:03:46 - Kenneth Cukier**：

这些黏土盘很重。黏土盘被烤干后，刻在其中的数据就无法更改。从古至今，信息处理、存储、传输、创建的方式都发生了变化，对吗？

**00:04:04 - Saron Yitbarek**：

时代巨变。大约在 1450 年，印刷机的发明带来了第一次信息革命。今天，我们也迎来了一场革命。

**00:04:16 - Kenneth Cukier**：

现在的存储介质很轻巧。信息的修改变得极度简单，借助现有的处理器，我们只需要使用删除键就能修改我们所拥有的信息实例，无论那是储存在磁带上还是晶体管里。我们可以以光速传输数据，不用携带什么黏土盘。

**00:04:37 - Saron Yitbarek**：

在 15 世纪，借助印刷机，大量的数据得以传播。这些知识提升了人们对事物的认识，并促成了启蒙运动。

**00:04:45**：

今天，大数据可以再次提升我们的知识水平，但我们必须要想办法充分利用这些数据。唯有修好大坝、备好轮机，才能让浪潮为人所用。

**00:05:00 - Kenneth Cukier**：

当下，人们远没有做到对数据的充分利用。这一点非常重要，因为我们已经看到，数据中存在这种潜在的价值，而收集、存储和处理数据的成本在近百年来，乃至于近十年来，已经显著地降低了。

**00:05:22 - Kenneth Cukier**：

这很振奋人心。但问题是，我们在文化上、在我们的组织流程上，甚至我们的 CFO 和 CIO 们拨给相关方面的预算中，并不重视这种价值，

**00:05:35 - Saron Yitbarek**：

想着这种事肯定让人极度沮丧。启蒙运动在敲门，却无人应答。然而，我们不回答的部分原因是：门后到底是谁？这些数据能带来什么？

**00:05:51**：

Kenneth 认为，某些公司不采用大数据，乃是因为它太过于新奇。

**00:05:56 - Kenneth Cukier**：

一旦你收集了大量数据后，你能拿它干什么？我就直说吧，只有傻子才会以为自己知道。你绝对无法设想你今天收集到的数据明天能拿来做什么用。

**00:06:12**：

最重要的是要有数据，并以开放的思想对待所有可以使用的方式。

**00:06:18 - Saron Yitbarek**：

如果我们按照 Kenneth 说的那样以正确的方式对待大数据，我们将会发现一切的全新可能性。这将是一个人人 —— 而不只是数据科学家 —— 都能洞察趋势、分析细节的世界。

**00:06:33 - Kenneth Cukier**：

如果我们能意识到，这个世界是可以通过收集经验证据来理解、改变和改善的，并且可以用一种自动化的方式进行改善，我们将会得到看待它的全新角度。我个人认为，现如今，在世界各地，上至政策制定者、下至星巴克咖啡师，都在经历这种引人深思的文化上或心理上的变化。

**00:07:00**：

各行各业的人都有点数据基因，就像是被感染了似的。现在，无论他们专注于什么方面，他们都以大数据的方式思考。

**00:07:15 - Saron Yitbarek**：

Kenneth Cukier 给我们讲了一个简短的故事来展现这种新数据思维方式的力量。微软的一些研究人员开始着手研究胰腺癌问题。

**00:07:27**：

人们发现胰腺癌往往为时已晚，早期发现可以挽救生命。因此，研究人员开始询问这些患者，在开始搜索有关胰腺癌的信息之前几个月，他们搜索了什么？ 而早在发现前数年，他们又搜索了什么？

**00:07:46**：

研究人员开始寻找埋藏在所有搜索数据中的线索和模式。

**00:07:54 - Kenneth Cukier**：

他们有了重大发现。通过分析患者在最终开始搜索“胰腺癌”之前的这段时间中所搜索的关键词，他们识别出了一套规律，可以非常准确地预测搜索者是否患有胰腺癌。

**00:08:09**：

在这里，我们能学到一点：想象力与数据中潜在规律的结合，是可以挽救生命的。他们现在所要做的就是找到一种方法，通过方法来解释这一发现，这样当人们在搜索这些术语时，他们可以以一种微妙的方式干预，说，“你可能要去诊所检查一下。”

**00:08:29**：

像这样使用数据，就能救人于水火之中。

**00:08:37 - Saron Yitbarek**：

研究人员偶然发现的是一种新的癌症筛查方式，通过这种方法，患者可以提前一个月得知自己可能患癌。利用数据不仅仅是一个利润或效率最大化的问题。

**00:08:52**：

它的意义远不止于此。对于人类而言，这些数据中确确实实存在着大量的潜在利好。抗拒使用大数据可能只是自欺欺人。接下来，我们要关注的是，这场将数据投入工作的持久战。

**00:09:18**：

哈佛医学院的波士顿儿童医院去年完成了 26000 多台手术，进行约 25 万人次的儿童放射检查。

**00:09:31**：

医护人员的表现令人称道，但有一个巨大的障碍挡在他们面前。

**00:09:37 - Ellen Grant**：

在医院的环境中，尤其是作为医生，我们经常会遇到难以获取数据的问题。

**00:09:45 - Saron Yitbarek**：

这位是 Ellen Grant 医生，她是波士顿儿童医院的儿科神经放射科医生，她在诊疗时依靠访问数据和分析医学图像。

**00:09:56 - Ellen Grant**：

如果没有专门设置的环境，想要从 packs 里存储的图像进行额外的数据分析绝非易事。当你在一个只提供了普通的医院电脑的读片室里时，要做到这一点并不容易。

**00:10:14**：

获取数据实际上是有障碍的。

**00:10:17 - Saron Yitbarek**：

其实许多医院都会大量抛弃数据，因为存储它们的成本实在过于高昂。这部分数据就像这样丢失了。像 Grant 这样的放射科医生可能是第一批因为数据实在太多而感到沮丧的医务人员。

**00:10:33**：

当医院走向数字化后，他们开始创造大量的数据，很快，这个量就大到无法处理了。

**00:10:41 - Ellen Grant**：

我，作为一名临床医生，在读片室里的时候希望能将所有复杂的分析工作在研究环境中做完。但我无法随便就从 packs 中拿出来图像，拿到一些可以进行分析的地方，再拿回到我手里。

**00:10:59 - Saron Yitbarek**：

顺便说一句，packs 就是医院存储其图像的数据仓库。Grant 医生知道有一些工具可以让这些图像 packs 发挥更大的功能，但成本太高。

**00:11:12 - Ellen Grant**：

随着机器学习和 AI 时代的到来，数据的生产量将会日渐加大，我们会需要更多计算资源来进行这类大规模的数据库分析。

**00:11:27 - Saron Yitbarek**：

数据已经堆积如山了，但处理能力却没有相称的增长。在这一前提下，对数据的彻底处理将变得遥不可及。而复杂、昂贵的超级计算机并不是医院的选择。

**00:11:41**：

Grant 医生深感沮丧。

**00:11:44 - Ellen Grant**：

我们能不能想出一个更好的办法，让我把数据拿到这里来，分析一下，然后放回去，这样我就可以在会诊的时候，一边解释临床图像，一边把分析做完，因为我希望可以在会诊上展示数据，在此同时进行快速分析。

**00:11:56**：

我可不想在不同的电脑和存储器之间把这些数据挪来挪去，这不是我的工作。我的工作是理解非常复杂的医学疾病，并把相关的事实真相记在脑子里。

**00:12:10**：

我想专注于我的技术领域，在此同时利用计算机领域的新兴技术；而不必这方面过于深入钻研。

**00:12:21 - Saron Yitbarek**：

Grant 和世界各地的放射科医生们需要的是一种方法，只要点击图像就能运行详细分析，并让这一切都发生在云端，这样医院就不必建立自己的服务器场地，也不必把医务人员变成程序员。

**00:12:40**：

他们需要一种方法来使他们的数据尽可能地拯救生命。这正是 Grant 医生和几位代码英雄决定去做的事。

**00:12:55**：

Grant 在波士顿儿童医院的团队正在与红帽和马萨诸塞州开放云（MOC）合作。关于 MOC 的更多内容稍后再说。首先，我们需要请出 Rudolph Pienaar，他是医院的一名生物化学工程师，来描述一下他们的解决方案。它是一个开源的、基于容器的成像平台。

**00:13:15 - Saron Yitbarek**：

它完全是在云端运行的，所以你不受医院本身计算能力的限制。他们称这一作品为 ChRIS。

**00:13:24 - Rudolph Pienaar**：

ChRIS 有一个后台数据库，其实就是一个 Django Python 机器。它可以跟踪用户，并跟踪这些用户使用过的数据以及分析结果。

**00:13:35**：

围绕这个数据库，有大量的服务群，这些服务都是作为自己的实例存在于容器中。它们处理与医院资源的通信，比如与医院数据库的通信。这些服务从资源中提取复杂的数据，将其推送给云端的、或者另一个实验室的、或者别的什么地方的其他服务处理。在计算数据的地方，有 Kubernetes 之类的编排服务，以及你需要使用的分析程序。数据处理结束之后，结果就会被发送回来。

**00:14:11 - Saron Yitbarek**：

对于 Grant 医生来说，ChRIS 成像平台是一种让数据活起来的方法。更重要的是，这种数据处理方式能让她成为更好的医生。

**00:14:21 - Ellen Grant**：

优秀的医生之所以优秀，是因为他们在一生中积累了丰富的从业经验。如果我们能把这一点融入到数据分析中，以此来获得更多的信息，我们就能知道得更多，并更有效地整合这些经验。

**00:14:39**：

例如，我对特定病患的特定受伤方式的认识，取决于我的从医经验和对这些经验的整体理解。

**00:14:52**：

现在，我可以根据真实数据创建受伤症状分布的概率图，并将其公之于众；我也可以寻找有相似模式的患者，并告诉他们在接受治疗时，什么对他们最有效，以便更接近精准医疗。

**00:15:10**：

整合大量的数据，尝试探索我们过去的知识，并尽你所能，点明治疗病人的最佳方式。

**00:15:21 - Saron Yitbarek**：

这对被送到医院的孩子意味着什么？Grant 医生说，ChRIS 平台能提供更有针对性的诊断和更个性化的护理。

**00:15:31 - Ellen Grant**：

如果我们拥有更复杂的数据库，我们就能更好地理解信息之间繁杂的相互作用，因此就能更好地指导每个患者。我认为 ChRIS 就像是我进入超级大脑的接口，它能让我比平时更聪明，因为我不能一次把所有数据保存在我的大脑中。

**00:15:53 - Saron Yitbarek**：

当赌注如此沉重时，我们要突破人类大脑的极限。这位是 Máirín Duffy。她是红帽团队中的设计师，她让 ChRIS 成为现实，而根据个人经验，她知道这件事其中的风险。

**00:16:15 - Máirín Duffy**：

我父亲中风了，所以我一直作为病人家属等待医疗技术诊断，因为当一个人中风并被送到医院之后，医务人员必须弄清楚是哪种类型的中风。根据中风类型，有不同的治疗方法。

**00:16:31**：

如果使用了错误的治疗方案，就可能发生极其糟糕的事。所以，在这种情况下，你能越快地把病人送来做核磁共振，就能越快地得到治疗方案。速度越快就有可能挽救他们的生命。

**00:16:43**：

想想看，仅仅是把图像处理从云端推送出来，并行化处理，就能让它快很多。这样就能将这个过程从几小时、几天，缩短到几分钟。

**00:16:55 - Saron Yitbarek**：

医学可能正迎来一个新的拐点。一个不是由药理学驱动，而是由计算机科学驱动的拐点。另外，想想像 ChRIS 这种东西的拓展性。

**00:17:08**：

发展中国家的医生也可以受益于波士顿儿童医院的专业知识和数据集。任何有手机服务的人都可以通过网络访问能够拯救生命的数据和计算结果。

**00:17:24**：

除了医学，很多其他领域也可能出现类似的拐点。但前提是，人们得知道如何从自己的数据中找到隐藏信息。为了做到这一点，他们需要探索一个全新的计算领域。

**00:17:46**：

世界各地的人们都在学习如何利用数据。就像在波士顿儿童医院一样，将数据洪流导向目标。

**00:17:56**：

换句话说，我们在处理这些数据。但我们之所以能做到这一点，是因为新一代的云计算使之成为可能。

**00:18:11**：

对于像 ChRIS 这样的平台来说，一个关键因素是基于云计算的新型存储方式。请记住，很多医院都会把收集到的数据扔掉，因为他们根本无法容纳所有数据。

**00:18:25**：

这就是我想重点讨论的数据泛滥的最后一块拼图：存储解决方案。对于 ChRIS 来说，存储解决方案是一个叫 Ceph 的开源项目。它使用的马萨诸塞州开放云，就基于 Ceph。

**00:18:45**：

我和 Ceph 的创建者 Sage Weil 聊了聊，想了解更多关于像波士顿儿童医院这样的地方是如何在闪电般的时间内处理海量数据的。以下是我与 Sage 的对话。我认为，第一个重要问题是，什么是 Ceph，它能做什么？

**00:19:05 - Sage Weil**：

当然，Ceph 是一个由软件定义的存储系统，它允许你提供可靠的存储服务，并在不可靠的硬件上提供各种协议。

**00:19:14**：

它的设计从开始就是满足可扩展性，所以你可以拥有非常非常大的存储系统、非常大的数据集。于此同时，系统对硬件故障和网络故障有优秀的容忍性，所以即使出现了一些这类问题，存储中的数据仍然不会变得难于访问。

**00:19:29 - Saron Yitbarek**：

现在，数据太多了。

**00:19:31 - Sage Weil**：

是的。

**00:19:33 - Saron Yitbarek**：

如此大的工作量。要处理的东西实在是太多了。你认为这个解决方案出现得是时候吗？

**00:19:39 - Sage Weil**：

是的，肯定是这样。在当时，行业中这方面的严重不足是显而易见的。没有开源的解决方案可以解决可扩展的存储问题。所以，我们显然得造个轮子。

**00:19:53 - Saron Yitbarek**：

考虑到我们每天要处理的数据量，以及它将来只会越来越多、越来越难管理的事实，你认为当今该怎么做才能解决这种日益增长的需求？

**00:20:09 - Sage Weil**：

我认为有几方面。一方面，有令人难以置信的数据量正在产生，所以你需要可扩展的系统。它不仅可以在硬件和数据规模上进行扩展，而且，它的管理成本应该是一定的，至少应该基本固定。

**00:20:25 - Saron Yitbarek**：

嗯。

**00:20:26 - Sage Weil**：

你不会想就为每多 10PB 存储空间或类似的东西就多雇一个员工吧？我认为这套系统在运维上也必须可扩展。

**00:20:33 - Saron Yitbarek**：

是的。

**00:20:35 - Sage Weil**：

这是其中的一部分。我认为，人们利用存储空间的方式也在改变。一开始，都是文件存储，然后我们有了虚拟机的块存储，我觉得对象存储在某种程度上是行业的重要趋势。

**00:20:51**：

我认为，下一个阶段的目标并不局限于提供一个对象存储端点，并将数据存储在集群中；我们需要将解决方案进一步升级，好让它能管理集群的集群，抑或是对分布于不同地理位置的云空间及私有数据中心储存空间中的数据进行管理。

**00:21:13**：

例如说，你现在将数据写入一个位置，随着时间的推移，你可能会想将数据分层到到其他位置，因为它更便宜、或者服务器离你更近；或者，一旦数据太老、不会频繁使用了，你就需要将其移动到性能更低、容量更大的层次上，以保证存储的成本较低。

**00:21:27**：

你可能也会为了遵循地方法规而移动数据。在欧洲的一些地区接收数据时，数据来源必须保持在特定的政治边界内。

**00:21:39**：

在某些行业，像 HIPAA 这样的东西限制了数据的移动方式。我认为，随着现代 IT 组织越来越多地分布在不同的数据中心、公有和私有云中，统一地、自动化地管理它们的能力正变得越加重要。

**00:21:58 - Saron Yitbarek**：

当你想到未来我们要如何管理和存储数据，以及如何处理数据的时候，开源在其中扮演了怎样的角色？你曾提到，你之所以要创建一个开源的解决方案，是因为你个人的理念和你对自由和开源软件的强烈感情。

**00:22:16**：

你如何看待开源对未来其他解决方案的影响？

**00:22:21 - Sage Weil**：

我认为，特别是在基础设施领域，解决方案正在向开源靠拢。我认为原因是基础设施领域的成本压力很大，特别是对于构建软件即服务（SaaS）或云服务的人来说，低成本的基础设施很重要，从他们的角度来看，开源显然是一个非常好的方法。

**00:22:48**：

第二个原因更多地是社会因素，在这个快速发展的领域里有如此多新的工具、新的框架、新的协议、新的数据思维方式，这个领域中有这么多创新和变化，有这么多不同的产品和项目在相互作用，所以很难以传统方式做到这一点，比如说，让不同的公司互相签订合作协议，共同开发。

**00:23:20**：

开源可以消除此事上的所有阻力。

**00:23:28 - Saron Yitbarek**：

Sage Weil 是红帽公司的高级咨询工程师，也是 Ceph 项目的负责人。我要绕回到《经济学人》的 Kenneth Cukier，以从一个更整体的视角上进行讨论，因为我希望，我们能够记住他关于人与数据之间关系的看法，以及我们从泥板，到印刷机，再到像 Sage 打造的云端奇迹的进步历程。

**00:23:55 - Kenneth Cukier**：

这关乎人类的进步，关乎我们如何更好地理解世界，如何从现实中总结经验，以及如何改善世界。这进步也是人类一直以来的使命。

**00:24:08 - Saron Yitbarek**：

使命永无止境。但是，与此同时，学会处理我们收集到的数据并将其投入使用，是整整一代人的开源任务。我们将在田纳西州的<ruby> 橡树岭国家实验室 <rt>  Oak Ridge National Laboratory </rt></ruby>短暂停留，结束我们的数据之旅。它是世界上最快的超级计算机 Summit 的所在地，至少在 2018 年是最快的超级计算机。

**00:24:43**：

这台机器每秒能处理 20 万亿次计算。换个计量单位，就是 200 petaflops。这样的处理速度，对于医院、银行或者今天所有受益于高性能计算的成千上万的组织来说并不现实。

**00:25:04**：

像 Summit 这样的超级计算机更多的是留给强子对撞机的领域。不过话说回来，我们曾经在泥板上记录的只是 100 字节的信息。

**00:25:16**：

在数据存储和数据处理的领域中，非凡的壮举不断成为新的常态。有一天，我们或许能将 Summit 级别的超级计算机装进口袋。想一想，到时候我们能够搜索到的答案。

**00:25:42**：

下一集，我们聊聊无服务器。第 7 集将会讲述我们与基于云的开发之间不断发展的关系。我们将会探究，在我们的工作中有多少可以抽象化的部分，以及在这个过程可能会失去的东西。

**00:25:58 - Saron Yitbarek**：

同时，如果你想深入了 ChRIS 的故事，请访问 [redhat.com/chris](https://www.redhat.com/chris) ，了解它是如何构建的，以及如何为项目本身做出贡献。

**00:26:12 - Saron Yitbarek**：

《代码英雄》是一款红帽公司原创的播客。你可以在 Apple Podcast、Google Podcast 或任何你想做的事情上免费收听。

**00:26:24 - Saron Yitbarek**：

我是 Saron Yitbarek。坚持编程，下期再见。

>
> **什么是 LCTT SIG 和 LCTT LCRH SIG**
>
>
> LCTT SIG 是 LCTT <ruby> 特别兴趣小组 <rt>  Special Interest Group </rt></ruby>，LCTT SIG 是针对特定领域、特定内容的翻译小组，翻译组成员将遵循 LCTT 流程和规范，参与翻译，并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽（Red Hat）发起的 SIG，当前专注任务是《代码英雄》系列播客的脚本汉化，已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。
>
>
> 欢迎[加入 LCRH SIG](/article-12436-1.html) 一同参与贡献，并领取红帽（Red Hat）和我们联合颁发的专属贡献者证书。
>
>
>

---

via: <https://www.redhat.com/en/command-line-heroes/season-2/the-data-explosion>

作者：[Red Hat](https://www.redhat.com/en/command-line-heroes) 选题：[bestony](https://github.com/bestony) 译者：[TimeBear](https://github.com/TimeBear) 校对：[Northurland](https://github.com/Northurland), [wxy](https://github.com/wxy)

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


Wi-Fi 6E：它何时到来，又有何作用？

# Wi-Fi 6E：它何时到来，又有何作用？

>
> Extreme Networks 的一位高管表示，近来专用于 Wi-Fi 的新无线频谱可以提供更多的信道和更高的密度部署，但是要支持它的设备要到 2020 年才能得到广泛部署。
>
>
>

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

今年开春 [FCC 在 6GHz 频段内开辟了一系列新的未授权的无线频谱](https://www.networkworld.com/article/3540288/how-wi-fi-6e-boosts-wireless-spectrum-five-fold.html)，该频谱旨在用于 Wi-Fi，以提供更低的延迟和更快的数据速率。新频谱的范围更短，与已经专用于 Wi-Fi 的频段相比支持的信道也更多，因此适合在体育场馆等高密度区域部署。

为了进一步了解什么是 Wi-Fi 6E 以及它与 Wi-Fi 6 有何不同，我最近与网络解决方案提供商 Extreme Networks 的产品管理总监 Perry Correll 进行了交谈。

**了解更多关于 5G 和 WiFi 6 的信息**

* [什么是 5G？相较于 4G 它更好吗？](https://www.networkworld.com/article/3203489/what-is-5g-how-is-it-better-than-4g.html)
* [如何确定 WiFi 6 是否适合你？](https://www.networkworld.com/article/3356838/how-to-determine-if-wi-fi-6-is-right-for-you.html)
* [什么是 MU-MIMO？为什么它在你的无线路由器中不可或缺？](https://www.networkworld.com/article/3250268/what-is-mu-mimo-and-why-you-need-it-in-your-wireless-routers.html)
* [何时使用 5G？何时使用 WiFi 6？](https://www.networkworld.com/article/3402316/when-to-use-5g-when-to-use-wi-fi-6.html)
* [企业如何为5G网络做准备呢？](https://www.networkworld.com/article/3306720/mobile-wireless/how-enterprises-can-prep-for-5g.html)

**Kerravala： Wi-Fi 6 似乎得到了许多热捧，而 Wi-Fi 6E 却没有。为什么？**

**Correll：** 所有这些带 666 的数字会混乱得会吓死你。我们已经有了 Wi-Fi 6、Wi-Fi 6E，之后，Wi-Fi 6 还有其它的增强功能，比如多用户多入多出（多用户 MIMO）功能。还有就是 6GHz 频谱，但这并不是 Wi-Fi 6 的名称的由来：它是第六代 Wi-Fi。最重要的是，我们刚刚掌握了 5G，并且已经在谈论 6G —— 认真的讲，这更容易搞混了。

**Kerravala： 为什么我们需要 Wi-Fi 6E 和普通的 Wi-Fi 6？**

**Correll：** 上一次我们在 UNII-2 和 UNII-2 扩展中得到提升是在 15 年前，而在当时智能手机甚至还没有兴起。现在能够获得 1.2GHz 的频谱已经非常大了。使用 Wi-Fi 6E，我们不是将 Wi-Fi 空间增加一倍，事实上，我们将可用空间增加了三倍。根据你所处的地点，频谱的数量要多三倍、四倍或五倍。此外，你不必担心 DFS（<ruby> 动态频率选择 <rt>  dynamic frequency selection </rt></ruby>），尤其是在室内。

Wi-Fi 6E 不会比 Wi-Fi 6 更快，也不会添加增强的技术功能。最妙的是运行 6GHz 需要 Wi-Fi 6 或以上的客户端。所以，我们不会有任何缓慢的客户端，也不会有很多噪声。我们将在更干净的环境中使用更快的设备来得到高性能。

**Kerravala： 也能用更宽的信道吗**

**Correll：** 没错，那是一件很酷的事情。如果你处于一个典型的企业环境中，20 和 40MHz 基本上就是你需要的。在体育馆这种高密度环境中，想要使用 80 或 160MHz 的带宽就会变得很困难了。更宽的信道将会真正有助于像虚拟现实这类应用，它可以利用这些信道占用频谱中剩余的部分。这可能是最大的用例了。

在未来的三四年里，如果你想在体育场做数字标识牌或者边缘屏幕处理，则可以使用 160MHz 的 80％ 带宽，而不会受到其他任何影响。已经有传言说 Wi-Fi 7 将会有 320MHz 宽的频道。

**Kerravala： 这将主要是对大多数 Wi-Fi 策略的增强吗？**

**Correll：** 短期内肯定会处于先锐领域。首批产品大概会在今年底发布，它们将是消费类产品。对于企业来说，支持 6GHz 的产品将会在明年亮相。在 2022 年之前，你不会真正看到它密集出现——所以，短期内不会。对于智能手机公司来说，Wi-Fi 并不是什么大事，他们更愿意关注其他功能。

但它仍是一个巨大的机会。6GHz 与 CBRS（公民宽带无线电服务）或 5G 相比，最棒的一点是（许多人）宁愿坚持使用 Wi-Fi，也不愿迁移到不同的架构。这些用户将推动驱动部件制造商转向物联网设备或机器人或任何需要 6GHz 的设备。这是一个干净的频谱，可能比普通的 Wi-Fi 6 还要便宜也更节能。

**Kerravala： 有人说 5G 会替代 Wi-Fi 6。但这有什么实际意义呢？**

**Correll：** 现实中，你不可能在每个设备中插入 SIM 卡。但是其中一个大问题是数据所有权，因为运营商将拥有你的数据，而不是你。如果你想使用你的数据进行任何类型的业务分析，运营商是否会以一定价格将数据返还给你？这是一个可怕的想法。

Wi-Fi 不会消失有太多的理由。当具备 Wi-Fi 6 和 5G 功能的设备问世时，其他只有 Wi-Fi 功能的笔记本电脑、平板电脑和物联网设备将会发生什么呢？要么是只支持 Wi-Fi 的设备，要么是支持 Wi-Fi 和 5G 的设备，但 5G 不会完全取代 Wi-Fi。如果你看看 5G 无线网络的骨干网，Wi-Fi 就是其中的一个组成部分。这是一个幸福的大家庭。这些技术是为了共存而设计的。

---

via: <https://www.networkworld.com/article/3563832/wi-fi-6e-when-its-coming-and-what-its-good-for.html>

作者：[Zeus Kerravala](https://www.networkworld.com/author/Zeus-Kerravala/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[chenmu-kk](https://github.com/chenmu-kk) 校对：[wxy](https://github.com/wxy)

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


#新闻拍一拍# 世界最古老计算机之一的操作手册被发现

Summary: • WSL 2 迎来重大改进：支持 GUI 应用 • 谷歌 Flutter 开发框架现已支持开发 Windows 应用

# #新闻拍一拍# 世界最古老计算机之一的操作手册被发现

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

#### 世界最古老计算机之一的操作手册被发现

世界上保存最久的计算机 Zuse Z4 由德国工程师 Konrad Zuse 设计并于 1945 年制造而成。这台房间大小的电脑在各个研究机构工作了一段时间后，最终在慕尼黑的德国博物馆展出。不幸的是，机器的操作指令早就丢失了。在苏黎世联邦理工学院的时候，这台计算机被用来为一架瑞士战斗机原型 P-16 进行计算，Z4 手册因此从收藏中得以发现。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032961.htm)

>
> 拍一拍：不知道是不是还可以运行起来。
>
>
>

#### WSL 2 迎来重大改进：支持 GUI 应用

微软透露，这项功能的工作已经接近完成。WSL 将支持许多不同类型的应用程序，包括完全在 Linux 环境下运行的 IDE。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032933.htm)

>
> 拍一拍：我就说吧，Windows 要变成一个皮肤了。;D
>
>
>

#### 谷歌 Flutter 开发框架现已支持开发 Windows 应用

为了给 iOS 和 Android 移动平台轻松开发应用程序，谷歌推出了名为 Flutter 的应用开发框架。几年来，Flutter SDK 已提供了对 Web、嵌入式、macOS、以及 Linux 应用创建的支持。此前谷歌还调侃过，Flutter 只剩下 Windows 这个主要平台没有提供支持了。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1032931.htm)

>
> 拍一拍：它正在成为“一次编译，随处运行”的大规模跨平台项目的一个缩影。
>
>
>


#新闻拍一拍# Linux 基金会：禁令不会影响我们与字节跳动和腾讯的协作

Summary: • 微软已移除 Windows 10 中用于通话的相关代码 • Swift System 库现已开源并支持 Linux

# #新闻拍一拍# Linux 基金会：禁令不会影响我们与字节跳动和腾讯的协作

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

#### Linux 基金会：禁令不会影响我们与字节跳动和腾讯的协作

近日，因为 TikTok 最近在其官网发布了一项“开源软件声明”，让部分人开始担心美国政府的禁令会对开源领域带来负面影响。对此，Linux 基金会 9 月 18 日也在官网发布博文回应，称：“禁令中的任何内容都不会阻止或影响我们与开源生态系统中两个重要成员——腾讯和字节跳动进行开放协作的能力。”

来源：[techweb](http://www.techweb.com.cn/it/2020-09-25/2805521.shtml)

#### 微软已移除 Windows 10 中用于通话的相关代码

尽管不少 Windows Phone 爱好者依然期待着微软能够推出后续产品，而等来的却是运行 Android 系统的 Surface Duo。根据网友近日发现，通话相关的 GUID 随着 2020 年 3 月发布的预览版就已经删除了。这意味着适用于手机端的 Windows 确实已经死亡了。

来源：[cnbeta](https://www.cnbeta.com/articles/tech/1033823.htm)

#### Swift System 库现已开源并支持 Linux

6 月，苹果公司推出了 Swift System，这是苹果平台的一个新库，为系统调用和低级货币类型提供了接口。今天，Swift 宣布开源 Swift System，并增加对 Linux 的支持。

来源：[swift](https://swift.org/blog/swift-system/)


使用 Btrfs 快照进行增量备份

Summary: 快照snapshot是 Btrfs 的一个有趣的功能。快照是一个子卷的副本。子卷中已添加/修改的文件和已删除的文件仍然存在于快照中。这是一种方便的备份方式。

# 使用 Btrfs 快照进行增量备份

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

<ruby> 快照 <rt>  snapshot </rt></ruby>是 Btrfs 的一个有趣的功能。快照是一个子卷的副本。生成快照是立即的。然而，生成快照与执行 `rsync` 或 `cp` 不同，快照并不是一创建就会占用空间。

>
> 编者注：来自 [BTRFS Wiki](https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Snapshots)：快照简单的来说就是一个子卷，它使用 Btrfs 的 COW 功能与其他子卷共享其数据（和元数据）。
>
>
>

占用的空间将随着原始子卷或快照本身（如果它是可写的）的数据变化而增加。子卷中已添加/修改的文件和已删除的文件仍然存在于快照中。这是一种方便的备份方式。

### 使用快照进行备份

快照驻留在子卷所在的同一磁盘上。你可以像浏览普通目录一样浏览它，并按照生成快照时的状态恢复文件的副本。顺便说一下，在快照子卷的同一磁盘上生成快照并不是一个理想的备份策略：如果硬盘坏了，快照也会丢失。快照的一个有趣的功能是可以将快照发送到另一个位置。快照可以被发送到外部硬盘或通过 SSH 发送到远程系统（目标文件系统也需要格式化为 Btrfs）。要实现这个，需要使用命令 `btrfs send` 和 `btrfs receive`。

### 生成快照

要使用 `btrfs send` 和 `btrfs receive` 命令，重要的是要将快照创建为只读，而快照默认是可写的。

下面的命令将对 `/home` 子卷进行快照。请注意 `-r` 标志代表只读。

```
sudo btrfs subvolume snapshot -r /home /.snapshots/home-day1

```

快照的名称可以是当前日期，而不是 `day1`，比如 `home-$(date +%Y%m%d)`。快照看起来像普通的子目录。你可以把它们放在任何你喜欢的地方。目录 `/.snapshots` 可能是一个不错的选择，以保持它们的整洁和避免混淆。

>
> 编者注：快照不会对自己进行递归快照。如果你创建了一个子卷的快照，子卷所包含的每一个子卷或快照都会被映射到快照里面的一个同名的空目录。
>
>
>

### 使用 btrfs send 进行备份

在本例中，U 盘中的目标 Btrfs 卷被挂载为 `/run/media/user/mydisk/bk`。发送快照到目标卷的命令是：

```
sudo btrfs send /.snapshots/home-day1 | sudo btrfs receive /run/media/user/mydisk/bk

```

这被称为初始启动，它相当于一个完整的备份。这个任务需要一些时间，取决于 `/home` 目录的大小。显然，后续的增量发送只需要更短的时间。

### 增量备份

快照的另一个有用的功能是能够以增量的方式执行发送任务。让我们再来生成一个快照。

```
sudo btrfs subvolume snapshot -r /home /.snapshots/home-day2

```

为了执行增量发送任务，需要指定上一个快照作为基础，并且这个快照必须存在于源文件和目标文件中。请注意 `-p` 选项。

```
sudo btrfs send -p /.snapshot/home-day1 /.snapshot/home-day2 | sudo btrfs receive /run/media/user/mydisk/bk

```

再来一次（一天之后）：

```
sudo btrfs subvolume snapshot -r /home /.snapshots/home-day3

sudo btrfs send -p /.snapshot/home-day2 /.snapshot/home-day3 | sudo btrfs receive /run/media/user/mydisk/bk

```

### 清理

操作完成后，你可以保留快照。但如果你每天都执行这些操作，你可能最终会有很多快照。这可能会导致混乱，并可能会在你的磁盘上使用大量的空间。因此，如果你认为你不再需要一些快照，删除它们是一个很好的建议。

请记住，为了执行增量发送，你至少需要最后一个快照。这个快照必须存在于源文件和目标文件中。

```
sudo btrfs subvolume delete /.snapshot/home-day1
sudo btrfs subvolume delete /.snapshot/home-day2
sudo btrfs subvolume delete /run/media/user/mydisk/bk/home-day1
sudo btrfs subvolume delete /run/media/user/mydisk/bk/home-day2

```

注意：第 3 天的快照被保存在源文件和目标文件中。这样，明天（第 4 天），你就可以执行新的增量 `btrfs send`。

最后的建议是，如果 U 盘的空间很大，可以考虑在目标盘中保留多个快照，而在源盘中只保留最后一个快照。

---

via: <https://fedoramagazine.org/btrfs-snapshots-backup-incremental/>

作者：[Alessio](https://fedoramagazine.org/author/alciregi/) 选题：[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/) 荣誉推出


使用 Mu 编辑器教授 Python

Summary: Mu 让你轻松学会如何编写 Python 代码。

Mu 让你轻松学会如何编写 Python 代码。

# 使用 Mu 编辑器教授 Python

>
> Mu 让你轻松学会如何编写 Python 代码。
>
>
>

在学校里，教孩子们编程是非常流行的。很多年前，在 Apple II 和 [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) 编程的年代，我学会了创建<ruby> 乌龟 <rt>  turtle </rt></ruby>绘图。我很喜欢学习如何对虚拟乌龟进行编程，后来也帮助学生进行编程。

大约五年前，我了解了 [Python 的 turtle 模块](https://docs.python.org/3/library/turtle.html)，这是我 Python 之旅的转折点。很快，我开始使用 `turtle` 模块来教学生 Python 编程基础，包括使用它来创建有趣的图形。

### 开始使用 Python 的 turtle 模块

在 Linux 或 macOS 电脑上，你只需打开一个终端，输入 `python`，你就会看到 Python shell。

如果你使用的是 Windows 电脑，则需要先安装 Python，到 Python 网站上[下载](https://www.python.org/downloads/windows/)最新的稳定版。

接下来，用 `import turtle` 或 `import turtle as t` 将 `turtle` 模块导入 Python 中。然后你就可以开始享受创建乌龟绘图的乐趣了。

### 认识一下 Mu

在我的 Python 冒险的早期，我使用了 [IDLE](https://docs.python.org/3/library/idle.html)，它是 Python 的集成开发环境。它比在 Python shell 中输入命令要容易得多，而且我可以编写和保存程序供以后使用。我参加了一些在线课程，阅读了许多关于 Python 编程的优秀书籍。我教老师和学生如何使用 IDLE 创建乌龟绘图。

IDLE 是一个很大的改进，但在克利夫兰的 PyConUS 2019 上，我看到了 [Nicholas Tollervey](https://ntoll.org/)的演讲，这改变了我学习和教授 Python 的方式。Nick 是一位教育家，他创建了 [Mu](https://codewith.mu/en/download)，一个专门为年轻程序员（甚至像我这样的老程序员）设计的 Python 编辑器。Mu 可以安装在 Linux、macOS 和 Windows 上。它很容易使用，并且附带了优秀的[文档](https://codewith.mu/en/howto/)和[教程](https://codewith.mu/en/tutorials/)。

在 Linux 上，你可以通过命令行安装 Mu。

在 Ubuntu 或 Debian 上：

```
$ sudo apt install mu-editor

```

在 Fedora 或类似的地方：

```
$ sudo dnf install mu

```

或者，你可以使用 Python 来进行安装。首先，确保你已经安装了 Python 3：

```
$ python --version

```

如果失败了，就试试：

```
$ python3 --version

```

假设你有 Python 3 或更高版本，使用 Python 包管理器 `pip` 安装 Mu。

```
$ python -m pip install mu-editor --user

```

然后你可以从命令行运行 Mu，或者创建一个快捷方式：

```
$ python -m pip install shortcut mu-editor --user

```

[树莓派](https://www.raspberrypi.org/blog/mu-python-ide/)上默认安装了 Mu，这是一个很大的优点。在过去的几年里，我已经向学生介绍了使用树莓派和 Mu 编辑器的 Python 编程。

### 如何用 Mu 教授 Python

Mu 是向学生展示 Python 入门的好方法。下面是我如何教学生开始使用它。

1. 打开 Mu 编辑器。

2. 输入 `import turtle` 导入 `turtle` 模块，就可以让乌龟动起来了。我的第一课是用 Python 代码画一个简单的正方形。

3. 保存这个程序，确保文件名以 .py 结尾。

4. 运行程序。哪怕是运行这样一个简单的程序都会让人兴奋，看到你写的程序的图形输出是很有趣的。

### 超越基础知识

在上完这节简单的课后，我讲解了有一些方法可以简化和扩展学生所学的基础知识。一是创建一个更简单的 `turtle` 对象，`import turtle as t`。然后我介绍了一个 `for` 循环，用另外一种 `turtle` 方法画一个正方形。

接下来，我将展示如何创建一个 `my_square` 函数，作为另一种绘制正方形的方法。

后来，我通过介绍其他 `turtle` 模块方法，包括 `penup`、`pendown` 和 `pencolor` 来扩展这个概念。很快，我的学生们就开始开发更复杂的程序，并对其进行迭代。

我一直渴望学习，我很想知道你在学校或家里是如何教授 Python 的。请在评论中分享你的经验。

---

via: <https://opensource.com/article/20/9/teach-python-mu>

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


eDEX-UI：一款科幻风格的酷炫 Linux 终端仿真器

想试试，但仅停留在试试

# eDEX-UI：一款科幻风格的酷炫 Linux 终端仿真器

>
> eDEX-UI 是一个很酷的科幻电影式的终端仿真器，看起来很酷，有大量包括系统监控在内的选项。让我们来快速看看它提供了什么。
>
>
>

你可能已经知道了[大量有趣的 Linux 命令](https://itsfoss.com/funny-linux-commands/)。但你知道当谈到 Linux 命令行时，还有什么有趣的东西吗？那就是终端本身。

是的，终端仿真器（俗称终端）也可以很有趣。还记得 80 年代和 90 年代初的[酷炫复古的终端，给你一个复古的终端](https://itsfoss.com/cool-retro-term/)吗？

那一款深受 《<ruby>   创：战纪  <rt>  TRON Legacy </rt></ruby>》 电影特效启发的养眼终端感觉怎么样？

在本文中，让我们来看看一款神奇的跨平台终端模拟器，注意口水！

### eDEX-UI: 一个很酷的终端仿真器

[eDEX-UI](https://github.com/GitSquared/edex-ui) 是一款开源的跨平台终端仿真器，它为你呈现了一个科幻风格的外观和一些有用的功能。

它最初的灵感来自于 [DEX UI](https://github.com/seenaburns/dex-ui) 项目，但该项目已经不再维护。

尽管 eDEX-UI 的重点是外观和未来主义主题的终端，但它也可以作为一个 [Linux 系统监控工具](https://itsfoss.com/linux-system-monitoring-tools/)。怎么说呢？因为当你在终端中工作时，它可以在侧边栏中显示系统的统计信息。事实上，其开发者提到，他的目标是将其改进为一个可用的系统管理工具。

让我们来看看它还提供了什么，以及如何让它安装到你的电脑上。

### eDEX-UI 的特点

eDEX-UI 本质上是一个终端仿真器。你可以像普通终端一样使用它来运行命令和其他任何你可以在终端中做的事情。

它以全屏方式运行，侧边栏和底部面板可以监控系统和网络的统计信息。此外，还有一个用于触摸设备的虚拟键盘。

我做了一个简短的视频，我建议你观看这个视频，看看这个很酷的终端模拟器运行起来是什么样子。**播放视频时要打开声音**（相信我）。

eDEX-UI 的特点：

* 多标签
* 对 curses 的支持
* 目录查看器，显示当前工作目录的内容
* 显示系统信息，包括主板信息、网络状态、IP、网络带宽使用情况、CPU 使用情况、CPU 温度、RAM 使用情况等
* 自定义选项，以改变主题、键盘布局、CSS 注入
* 可选的声音效果，让你有一种黑客的感觉
* 跨平台支持（Windows、macOS 和 Linux）

### 在 Linux 上安装 eDEX

如前所述，它支持所有主要平台，包括 Windows、macOS，当然还有 Linux。

要在 Linux 发行版上安装它，你可以从它的 [GitHub 发布部分](https://github.com/GitSquared/edex-ui/releases)中抓取 AppImage 文件，或者在包括 [AUR](https://itsfoss.com/aur-arch-linux/) 在内的[可用资源库](https://repology.org/project/edex-ui/versions)中找到它。如果你不知道，我建议你去看一下我们关于[在 Linux 中使用 AppImage](https://itsfoss.com/use-appimage-linux/) 的指南。

你可以访问它的 GitHub 页面，如果你喜欢它，可以随时星标他们的仓库。

* [eDEX-UI](https://github.com/GitSquared/edex-ui)

### 我对 eDEX-UI 的体验

因为它的科幻风格的外观，我喜欢这个终端仿真器。但是，我发现它对系统资源的消耗相当大。我没有[检查我的 Linux 系统的 CPU 温度](https://itsfoss.com/check-laptop-cpu-temperature-ubuntu/)，但 CPU 消耗肯定很高。

所以，如果你需要它运行在后台或单独的工作空间中（像我这样），你可能要注意这一点。除此以外，它是一个令人印象深刻的工具，拥有目录查看器和系统资源监控等有用的选项。

顺便说一句，如果你想模拟黑客来娱乐一下客人和孩子们，[那么可以试试好莱坞工具](https://itsfoss.com/hollywood-hacker-screen/)。

你觉得 eDEX-UI 怎么样？你是想试一试，还是觉得太幼稚/过于复杂？

---

via: <https://itsfoss.com/edex-ui-sci-fi-terminal/>

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


Nextcloud 如何简化去中心化的注册流程？

# Nextcloud 如何简化去中心化的注册流程？

>
> Nextcloud 是开源软件，我们不提供托管服务，但我们却能从根本上简化注册体验。
>
>
>

我们一直有个列表，上面有几十个 Nextcloud 提供商，然而我听到的最常见的问题，即使是我的技术方面的朋友，也是：

>
> ”嗨，Jan，你推荐哪个 Nextcloud 提供商？”
>
>
>

当然，这也是可以理解的。如果你有一长串的供应商，你怎么选择？托管商在附近？名字可爱？标志最大？

每一个使用服务器的去中心化开源解决方案都在努力解决这些：

* Mastodon 有 [joinmastodon.org](https://joinmastodon.org/) 来选择社区，但很明显主实例是 mastodon.social。
* Diaspora 有[joindiaspora.com](https://joindiaspora.com)，它也是主实例。
* Matrix 有 [matrix.to](https://matrix.to)，还有一个在 [Element.io](http://Element.io) 的应用（多平台）。
* WordPress 有 [wordpress.com](https://wordpress.com)。我不确定是否有提供商能接近它的知名度。
* PeerTube 有一堆实例，都有不同的技术细节。
* Pixelfed 在[beta.joinpixelfed.org](http://beta.joinpixelfed.org) 有一个早期版本的实例选择器，以及在 [pixelfed.social](http://pixelfed.social) 有一个大型实例。
* 还有更多的去中心化开源应用的例子，这里列出了如何通过终端访问它、设置 Rust 实现、或使其在网络打印机上运行。

这就导致了一些问题：

* ? 人们不知道该选哪个，有<ruby> 错失恐惧症 <rt>  Fear Of Missing Out </rt></ruby>（FOMO），然后根本不选。这就是选择的悖论！
* ? 网络并不是真正的去中心化，因为大多数人都在少数服务器上，或者主要是只有一台服务器。

Nextcloud 不存在这些问题。

### 我们的解决方案：简单注册

这是它是如何工作的：

当你下载我们的手机或桌面应用时，你首先看到的是“登录”或“使用供应商注册”的选择。这是任何专有应用都会做的事情：

选择“注册”可打开应用中的[简易注册页面](https://nextcloud.com/signup)。

你输入你的电子邮件地址，然后点击“注册”。

输入密码，就可以了! ?

>
> ”等一下，这怎么这么简单？“
>
>
>

我知道，对吧？✨

事实上，它甚至比很多集中式的应用更简单，在那里你需要输入你的全名和电话号码，然后点击谷歌的验证码。

这基本上可以归结为：

### 我们为你选择

而不是面对一个无法判断什么适合你供应商的名单，我们只向你展示一个选择。就好像我是你的朋友一样，我回答了那个关于我推荐哪家供应商的问题。

很好！?

澄清一下：你可以修改供应商，但默认的应该很适合你。目前，它只是地理位置上离你最近的提供商。

除此之外，我们对通过简单注册列出的提供商有一些要求，以确保无论你选择哪一个提供商都能获得良好的用户体验：

* ? 2 GB 的免费存储空间，而且不仅仅是试用期。
* ? 一套核心应用。文件、日历、联系人、邮件、通话、任务、笔记。有些供应商甚至提供更多。
* ? 最新版本，让你始终保持最新的功能、修复和安全更新。

除此之外，我们还提出了一个尊重隐私的流程。当你点击“注册”时，你的邮件不会发送给我们，而是直接发送给你选择的供应商，这将无缝过渡到他们的设置步骤，在那里你选择一个密码。这意味着在 Nextcloud 不会有任何数据泄露给我们，我们甚至不知道你选择的是哪家提供商！

因此，虽然我们提供这项服务，而且它超级容易使用，但我们只做绝对最低限度的数据处理，以连接你与你的理想供应商。

### 去中心化项目需要简单的注册方式

很多开源软件项目可以从简单注册这样的体验中受益。我们[在最初发布的时候写过有关它的文章](https://nextcloud.com/blog/introducing-simple-signup-you-can-now-get-started-with-nextcloud-in-2-steps/)，我们希望这篇文章能澄清使它成功的设计决策，以便它能被更多项目采用。

去中心化是赋能，但只有当人们即使不知道服务器是什么也能简单注册时，才是真正的革命。

当然，现在也还不完美。比如，如果你已经在 Nextcloud 实例上有了账户，任何一个应用的登录过程都会要求你输入一个服务器地址，而很多人根本不知道那是什么。比如在很多邮件应用中，在这一步会有一个最受欢迎的供应商列表，底部有一个“自定义服务器”的条目。这也可能是一种可能性，但同样带来了系统过于集中的风险，或者让人们对选择什么感到困惑。

所以，我们不断尝试为所有 Nextcloud 桌面和移动应用改进这一点，比如 Nextcloud Talk 或者所有优秀的社区开发的应用。在 Android 上，我们与 DAVx5（Android 上的日历和联系人同步）紧密集成，而且，对于其他 Android 应用，还有一个[单点登录库](https://github.com/nextcloud/Android-SingleSignOn)。不幸的是，在 iOS 上，就没有那么容易了，因为应用必须来自同一个开发者才能共享凭证。

如果你想合作解决类似这些有趣的挑战，[来加入我们的 Nextcloud 设计团队吧](https://nextcloud.com/design)！

---

via: <https://opensource.com/article/20/9/decentralization-signup>

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


#新闻拍一拍# 一个无聊的开发者创造了“DOS 的 Linux 子系统”

Summary: • 福布斯：微软更新 Edge 新功能挑战 Chrome • JetBrains：世界上最大的 Java 程序员集中地在亚洲和德国

# #新闻拍一拍# 一个无聊的开发者创造了“DOS 的 Linux 子系统”

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

#### 一个无聊的开发者创造了“DOS 的 Linux 子系统”

墨尔本的一位软件工程师正在通过创建一个 DOS 用户迄今为止所缺乏的工具来消磨城市的封锁时间：一个类似于 Windows 10 用户所享受的集成 Linux 环境。Linux 不但能够从 DOS 命令行启动，而且还可以在 Linux 运行后继续执行 DOS。Linux 会在自己的启动过程中完整地留下第一兆字节的内存（DOS 所在的地方），所以只需跳回正确的地方继续执行 DOS 即可。

来源：[itnews](https://www.itnews.com.au/news/dos-subsystem-for-linux-breaks-cover-553747)

>
> 拍一拍：确实“无聊”，不过这种无聊的探索精神值得鼓励。
>
>
>

#### 福布斯：微软更新 Edge 新功能挑战 Chrome

现在将可以直接在 Edge 浏览器内部直接从地址栏搜索工作文件了。另一个与工作相关的微软 Edge 更新也即将推出，让 IT 管理员管理用户设备上特定的与工作相关的应用，以及管理用户在 Edge 中的工作配置环境中进行的浏览。以及，对微软端点 DLP 原生策略的支持、即将推出的 Sleeping Tabs 可将内存使用率提高 26%，CPU 使用率减少 29% 等。

来源：[forbes](https://www.forbes.com/sites/kateoflahertyuk/2020/09/26/microsoft-updates-edge-with-a-set-of-stellar-new-features-to-beat-chrome/)

>
> 拍一拍：微软希望吸引更多的企业用户使用更新后的 Edge 浏览器。
>
>
>

#### JetBrains：世界上最大的 Java 程序员集中地在亚洲和德国

Java 开发者最集中的地方是亚洲，有 250 万开发者使用它作为主要语言。JetBrains 认为，这可能是由于在中国和印度等国家雇佣离岸开发人员来构建 Android 应用是很常见的。使用 Java 作为主要语言的开发者比例最高的六个国家是：中国、韩国、印度、德国、西班牙和巴西。

来源：[jetbrains](https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/)

>
> 拍一拍：不管你喜欢不喜欢，Java 依然那么流行。
>
>
>


通过两个简单的教程来提高你的 awk 技能

Summary: 超越单行的 awk 脚本，学习如何做邮件合并和字数统计。

代码里个别大写小写转义符没有正确显示出来

超越单行的 awk 脚本，学习如何做邮件合并和字数统计。

# 通过两个简单的教程来提高你的 awk 技能

>
> 超越单行的 awk 脚本，学习如何做邮件合并和字数统计。
>
>
>

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

`awk` 是 Unix 和 Linux 用户工具箱中最古老的工具之一。`awk` 由 Alfred Aho、Peter Weinberger 和 Brian Kernighan（即工具名称中的 A、W 和 K）在 20 世纪 70 年代创建，用于复杂的文本流处理。它是流编辑器 `sed` 的配套工具，后者是为逐行处理文本文件而设计的。`awk` 支持更复杂的结构化程序，是一门完整的编程语言。

本文将介绍如何使用 `awk` 完成更多结构化的复杂任务，包括一个简单的邮件合并程序。

### awk 的程序结构

`awk` 脚本是由 `{}`（大括号）包围的功能块组成，其中有两个特殊的功能块，`BEGIN` 和 `END`，它们在处理第一行输入流之前和最后一行处理之后执行。在这两者之间，块的格式为：

```
模式 { 动作语句 }

```

当输入缓冲区中的行与模式匹配时，每个块都会执行。如果没有包含模式，则函数块在输入流的每一行都会执行。

另外，以下语法可以用于在 `awk` 中定义可以从任何块中调用的函数。

```
function 函数名(参数列表) { 语句 }

```

这种模式匹配块和函数的组合允许开发者结构化的 `awk` 程序，以便重用和提高可读性。

### awk 如何处理文本流

`awk` 每次从输入文件或流中一行一行地读取文本，并使用字段分隔符将其解析成若干字段。在 `awk` 的术语中，当前的缓冲区是一个*记录*。有一些特殊的变量会影响 `awk` 读取和处理文件的方式：

* `FS`（<ruby> 字段分隔符 <rt>  field separator </rt></ruby>）。默认情况下，这是任何空格字符（空格或制表符）。
* `RS`（<ruby> 记录分隔符 <rt>  record separator </rt></ruby>）。默认情况下是一个新行（`n`）。
* `NF`（<ruby> 字段数 <rt>  number of fields </rt></ruby>）。当 `awk` 解析一行时，这个变量被设置为被解析出字段数。
* `$0:` 当前记录。
* `$1`、`$2`、`$3` 等：当前记录的第一、第二、第三等字段。
* `NR`（<ruby> 记录数 <rt>  number of records </rt></ruby>）。迄今已被 `awk` 脚本解析的记录数。

影响 `awk` 行为的变量还有很多，但知道这些已经足够开始了。

### 单行 awk 脚本

对于一个如此强大的工具来说，有趣的是，`awk` 的大部分用法都是基本的单行脚本。也许最常见的 `awk` 程序是打印 CSV 文件、日志文件等输入行中的选定字段。例如，下面的单行脚本从 `/etc/passwd` 中打印出一个用户名列表：

```
awk -F":" '{print $1 }' /etc/passwd

```

如上所述，`$1` 是当前记录中的第一个字段。`-F` 选项将 `FS` 变量设置为字符 `:`。

字段分隔符也可以在 `BEGIN` 函数块中设置：

```
awk 'BEGIN { FS=":" } {print $1 }' /etc/passwd

```

在下面的例子中，每一个 shell 不是 `/sbin/nologin` 的用户都可以通过在该块前面加上匹配模式来打印出来：

```
awk 'BEGIN { FS=":" } ! /\/sbin\/nologin/ {print $1 }' /etc/passwd

```

### awk 进阶：邮件合并

现在你已经掌握了一些基础知识，尝试用一个更具有结构化的例子来深入了解 `awk`：创建邮件合并。

邮件合并使用两个文件，其中一个文件（在本例中称为 `email_template.txt`）包含了你要发送的电子邮件的模板：

```
From: Program committee <pc@event.org>
To: {firstname} {lastname} <{email}>
Subject: Your presentation proposal

Dear {firstname},

Thank you for your presentation proposal:
  {title}

We are pleased to inform you that your proposal has been successful! We
will contact you shortly with further information about the event
schedule.

Thank you,
The Program Committee

```

而另一个则是一个 CSV 文件（名为 `proposals.csv`），里面有你要发送邮件的人：

```
firstname,lastname,email,title
Harry,Potter,hpotter@hogwarts.edu,"Defeating your nemesis in 3 easy steps"
Jack,Reacher,reacher@covert.mil,"Hand-to-hand combat for beginners"
Mickey,Mouse,mmouse@disney.com,"Surviving public speaking with a squeaky voice"
Santa,Claus,sclaus@northpole.org,"Efficient list-making"

```

你要读取 CSV 文件，替换第一个文件中的相关字段（跳过第一行），然后把结果写到一个叫 `acceptanceN.txt` 的文件中，每解析一行就递增文件名中的 `N`。

把 `awk` 程序写在一个叫 `mail_merge.awk` 的文件中。在 `awk` 脚本中的语句用 `;` 分隔。第一个任务是设置字段分隔符变量和其他几个脚本需要的变量。你还需要读取并丢弃 CSV 中的第一行，否则会创建一个以 `Dear firstname` 开头的文件。要做到这一点，请使用特殊函数 `getline`，并在读取后将记录计数器重置为 0。

```
BEGIN {
  FS=",";
  template="email_template.txt";
  output="acceptance";
  getline;
  NR=0;
}

```

主要功能非常简单：每处理一行，就为各种字段设置一个变量 —— `firstname`、`lastname`、`email` 和 `title`。模板文件被逐行读取，并使用函数 `sub` 将任何出现的特殊字符序列替换为相关变量的值。然后将该行以及所做的任何替换输出到输出文件中。

由于每行都要处理模板文件和不同的输出文件，所以在处理下一条记录之前，需要清理和关闭这些文件的文件句柄。

```
{
        # 从输入文件中读取关联字段
        firstname=$1;
        lastname=$2;
        email=$3;
        title=$4;

        # 设置输出文件名
        outfile=(output NR ".txt");

        # 从模板中读取一行，替换特定字段，
        # 并打印结果到输出文件。
        while ( (getline ln < template) > 0 )
        {
                sub(/{firstname}/,firstname,ln);
                sub(/{lastname}/,lastname,ln);
                sub(/{email}/,email,ln);
                sub(/{title}/,title,ln);
                print(ln) > outfile;
        }

        # 关闭模板和输出文件，继续下一条记录
        close(outfile);
        close(template);
}

```

你已经完成了! 在命令行上运行该脚本：

```
awk -f mail_merge.awk proposals.csv

```

或

```
awk -f mail_merge.awk < proposals.csv

```

你会在当前目录下发现生成的文本文件。

### awk 进阶：字频计数

`awk` 中最强大的功能之一是关联数组，在大多数编程语言中，数组条目通常由数字索引，但在 `awk` 中，数组由一个键字符串进行引用。你可以从上一节的文件 `proposals.txt` 中存储一个条目。例如，在一个单一的关联数组中，像这样：

```
        proposer["firstname"]=$1;
        proposer["lastname"]=$2;
        proposer["email"]=$3;
        proposer["title"]=$4;

```

这使得文本处理变得非常容易。一个使用了这个概念的简单的程序就是词频计数器。你可以解析一个文件，在每一行中分解出单词（忽略标点符号），对行中的每个单词进行递增计数器，然后输出文本中出现的前 20 个单词。

首先，在一个名为 `wordcount.awk` 的文件中，将字段分隔符设置为包含空格和标点符号的正则表达式：

```
BEGIN {
        # ignore 1 or more consecutive occurrences of the characters
        # in the character group below
        FS="[ .,:;()<>{}@!\"'\t]+";
}

```

接下来，主循环函数将遍历每个字段，忽略任何空字段（如果行末有标点符号，则会出现这种情况），并递增行中单词数：

```
{
        for (i = 1; i <= NF; i++) {
                if ($i != "") {
                        words[$i]++;
                }
        }
}

```

最后，处理完文本后，使用 `END` 函数打印数组的内容，然后利用 `awk` 的能力，将输出的内容用管道输入 shell 命令，进行数字排序，并打印出 20 个最常出现的单词。

```
END {
        sort_head = "sort -k2 -nr | head -n 20";
        for (word in words) {
                printf "%s\t%d\n", word, words[word] | sort_head;
        }
        close (sort_head);
}

```

在这篇文章的早期草稿上运行这个脚本，会产生这样的输出：

```
[dneary@dhcp-49-32.bos.redhat.com]$ awk -f wordcount.awk < awk_article.txt
the     79
awk     41
a       39
and     33
of      32
in      27
to      26
is      25
line    23
for     23
will    22
file    21
we      16
We      15
with    12
which   12
by      12
this    11
output  11
function        11

```

### 下一步是什么？

如果你想了解更多关于 `awk` 编程的知识，我强烈推荐 Dale Dougherty 和 Arnold Robbins 所著的《[Sed 和 awk](https://www.amazon.com/sed-awk-Dale-Dougherty/dp/1565922255/book)》这本书。

`awk` 编程进阶的关键之一是掌握“扩展正则表达式”。`awk` 为你可能已经熟悉的 sed [正则表达式](https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions)语法提供了几个强大的补充。

另一个学习 `awk` 的好资源是 [GNU awk 用户指南](https://www.gnu.org/software/gawk/manual/gawk.html)。它有一个完整的 `awk` 内置函数库的参考资料，以及很多简单和复杂的 `awk` 脚本的例子。

---

via: <https://opensource.com/article/19/10/advanced-awk>

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


对华为的禁令可能使 5G 部署复杂化

Summary: 对华为、中兴的禁令意味着无线运营商建设 5G 服务的选择减少了。

对华为、中兴的禁令意味着无线运营商建设 5G 服务的选择减少了。

# 对华为的禁令可能使 5G 部署复杂化

>
> 对华为、中兴的禁令意味着无线运营商建设 5G 服务的选择减少了。
>
>
>

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

随着运营商竞相建设他们的 5G 网络，由于美国联邦政府的压力，在美国购买所需设备的选择比其他国家少，这可能会减缓部署。

在 2018 年的《国防授权法案》中，总部位于中国的华为和中兴通讯都被禁止向美国政府提供设备，此后不久又全面禁止进口。这极大地改变了竞争格局，并引发了美国 5G 的形态可能因此而改变的问题。

Gartner 的分析师 Michael Porowski 表示，虽然还不完全清楚，但运营商可以在哪里购买 5G 设备的限制有可能会减缓部署速度。

他说：”供应商数量仍然很多：爱立信、诺基亚、三星。中兴和华为都是更经济的选择。如果它们可用，你可能会看到更快的采用速度。”

451 Research 的研究总监 Christian Renaud 表示，业界普遍认为，华为设备既成熟又价格低廉，而在没有华为的情况下，运营商也没有明确的替代方案。

他说：“目前，会有采用诺基亚或爱立信标准的运营商。（而且）现在判断谁最成熟还为时过早，因为部署是如此有限。”

这种争论在运营商本身的覆盖地图上可以得到证实。虽然他们很快就大肆宣传 5G 服务在美国的许多市场上已经有了，但实际的地理覆盖范围大多局限于大城市核心区的公共场所。简而言之，大部分地区的 5G 部署还没有到来。

部署缓慢是有充分理由的。5G 接入点的部署密度要远高于上一代的无线技术，这使得该过程更加复杂且耗时。还有一个问题是，目前可用的 5G 用户设备数量还很少。

Renaud 说：“这就好比说，在有人发明汽车之前，说‘我已经有了这条八车道的高速公路’。”

设备供应商目前的部分目标是通过私有部署来展示 5G 的潜力，这些部署将该技术用做<ruby> 信号隧道 <rt>  backhaul </rt></ruby>，用于支持[物联网](https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html)和其他针对单个企业的链接场景。

Renaud 说：“（设备供应商）都在大力推动私有部署这一块，然后他们可以利用这一点说：你看，我可以用在布鲁克林造船厂或某个私有部署的 5G 网络中，所以，如果可以的话……，它可以用于支持人们观看 YouTube。”

对中国的禁令的一个不幸结果可能是供应商为满足 5G 要求而遵循的规范的分裂。Renaud 称，如果非中国供应商必须为允许华为和中兴的市场制作一个版本，而为不允许华为和中兴的地方制作不同的版本，这可能会给他们带来新的麻烦。

他说：“这将把成本负担转移到设备制造商身上，来试图支持不同的运营商实施。我们会造成非技术性的壁垒。”而这些，反过来又会导致客户体验受到影响。

但是，5G 已经通过[开放无线接入网技术](https://www.networkworld.com/article/3574977/carriers-vendors-work-to-promote-5g-network-flexibility-with-open-standards.html)拥抱了更高的互操作性的趋势，它将 5G 栈各层之间的软件接口标准化。运营商和设备商都接受了这一推动，使得互操作性更有可能，这可能会在未来吸引更多的参与者。

当然，即便是普遍的互操作性，设备制造商仍然会试图建立客户依赖性。他说“在试图锁定客户的供应商和试图保持供应商中立的客户之间，总是会有一场拉锯战。这不会有很大的改变。（但是）我们显然已经看到了试图更加开放的动向。”

---

via: <https://www.networkworld.com/article/3575408/huawei-ban-could-complicate-5g-deployment.html>

作者：[Jon Gold](https://www.networkworld.com/author/Jon-Gold/) 选题：[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: • Emacs 开发者讨论如何构建更“现代”的 Emacs • EdX 的“Linux 入门”免费课程注册人数突破一百万

# #新闻拍一拍# 你家的智能咖啡机可能会被黑

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

#### 你家的智能咖啡机可能会被黑

安全公司 Avast 的研究员 Martin Hron 发现 Smarter 公司的联网智能咖啡机与智能手机应用之间的连接是没有加密的，没有身份验证，没有代码验证，最新的固件就储存在手机应用，可以很容易导出进行逆向工程。利用这些漏洞，他能触发咖啡机打开燃烧器，出水，启动磨豆机，显示勒索信息，让咖啡机重复发出哔哔的声音。唯一阻止这一切混乱的方法是拔掉电源插头。

来源：[solidot](https://www.solidot.org/story?sid=65670)

>
> 拍一拍：越来越多的智能产品，可是安全却没有跟上，这有可能带来意想不到的负面后果。
>
>
>

#### Emacs 开发者讨论如何构建更“现代”的 Emacs

开发者认为需要做一些“看得见”的改变让现有的功能更容易接近用户。比如采用更中心化的方法管理颜色主题。改变键盘按键与鼠标绑定方式。Emacs 原作者 Richard Stallman 认为改变基本按键绑定去模仿较新的编辑器是不可取的，将创造一个 Emacs 用户永远不会切换过去的新编辑器。鼠标行为的情况与之类似。Stallman 建议提供一个“重组模式”。他指出现有的鼠标行为是源自 1990 年左右的 X Windows 标准。他不想太仓促，但现在是时候去更新了。

来源：[solidot](https://www.solidot.org/story?sid=65666)

>
> 拍一拍：在讨论了如何让 Emacs 再次流行起来之后，正在准备 Emacs 28 的开发者又热烈讨论如何构建更“现代”的 Emacs。
>
>
>

#### EdX 的“Linux 入门”免费课程注册人数突破一百万

该课程帮助学生使用图形界面和命令行在主要的 Linux 发行系列中学习 Linux 知识。该课程不需要任何知识或经验，因此对于有兴趣从事 IT 行业的个人来说，该课程是受欢迎的第一步。edX 创始人表示，“这是 Linux 基金会的第一个产品，是我们有史以来最受欢迎的十大课程之一。”

来源：[Linux 基金会](https://training.linuxfoundation.org/announcements/free-intro-to-linux-course-surpasses-one-million-enrollments/)

>
> 拍一拍：可喜可贺，Linux 的普及了这么多人了！
>
>
>


如何寻找可行之路？开源律师如是说

# 如何寻找可行之路？开源律师如是说

>
> 开源法规对成功有不同寻常的要求。一起来了解开源组织的律师如何帮助其雇主找到可行路径。
>
>
>

正如我在这个分为两部分的系列文章的[第一部分](/article-12585-1.html)中所分享的那样，我是<ruby> 红帽公司 <rp>  （ </rp> <rt>  Red Hat </rt> <rp>  ） </rp></ruby>的一名开源律师。我工作中的一个重要部分是向其他公司（包括其内部法律顾问）提供有关红帽公司如何采用完全开源的开发模式来构建企业级产品的信息，并回答他们有关开源许可的一般问题。在听了红帽公司的成功经验之后，这些律师与我对话的话题常常转变为其所在组织如何发展成为更具开源意识和能力的组织，他们也经常询问我如何改善他们的做法，以便更熟练地为其组织的雇员提供开源法律咨询。在这两篇文章中，我将分享我通常在这些主题上告诉内部法律顾问的那些内容。

### 总是要找到一条可行路径

我的雇主红帽公司在使用开源软件方面的独特之处在于，我们的开发模式始于具有数千名贡献者的开源社区，并产生了经受过尝试、测试和信任的最终产品。更具体地说，通过我们独特的开发模式，我们从社区创建的开源软件开始，并在每个项目的基础上加强安全性，修复错误，修补漏洞并添加新功能。然后，我们将这些改进回馈给每个项目，以便使整个开源社区受益。此方法的效用非常重要，包括：

1. 通过内部团队与组织外部其他人之间的协作来利用外部创新；
2. 当现有或潜在的社区与您在同一问题上开展工作而且能够合作时，可以避免您自己开发和维护开源解决方案的成本和效率低下的问题；
3. 通过与合作伙伴和上游项目社区的富有成效的合作，能够避免维护主项目下游分支的昂贵代价。
	* 一些公司发现创建上游代码的非公共分支很诱人，因为它是解决特定<ruby> 用例 <rt>  use case </rt></ruby>的快速方法，或者因为它们不愿意在社区中进行协作。然而，由于增加的开发成本、互操作性损失和其他原因，这种分支的长期维护负担可能是令人望而却步的。相比之下，将开发集中在原始上游社区中，可以在所有参与者之间分担开发成本。

除少数例外（例如红帽公司）外，大多数使用开源软件的组织可能都拥有专有软件许可模式（或与 SaaS 等效的概念），并在其业务中对专有软件进行许可。这些组织认为他们拥有可以提供某些竞争优势的软件组件，并且不希望看到这些组件在开源条款下对其他人可用。这是可以理解的。但是，我会鼓励任何咨询此类问题的开源律师来敦促其客户采用开源开发模式，尤其是对于所有无差异且通用的软件。

例如，如果您的公司开发了用于手机的应用程序，并且您需要一个软件模块来读取和写入 PNG 图像文件，那么使用 GitHub 上流行的开源 PNG 软件模块之一将便宜得多。对于您的业务而言，对 PNG 图像进行编码和解码可能是无差别的，那么为什么要花费宝贵的工程时间来编写自己的版本？此外，为此功能编写自己的模块也可能会导致与使用常用开源模块的其他软件的兼容性问题。这是为什么呢？尽管您的模块和开源模块可能已被编写为对已发布的 PNG 规范进行编码和解码，但有时对规范的解释可能会有所不同，也可能会出现实施错误。使用同一模块执行此功能的每个人都可以确保大多数用户的兼容性，并降低开发和维护成本。

还必须意识到，您可能需要某些软件来保持专有性，并且不受开源条款的约束。取决于您系统的软件体系架构和所使用的开源许可证，除非采取某些措施（超出本文的范围），否则打算保留专有权的软件代码可能会受到开源许可证条款的约束。在这里向客户提供一些有关许可证选择和体系架构的咨询服务将变得很有用。

### 寻找灵活的解决方案

之前主要许可专有软件的组织逐渐增加了对开源软件的使用，但审核和批准的要求可能会增长（以我的经验甚至成倍增长）。由于资源限制，这样的组织可能会陷入困境。下面介绍了一些可以采用的灵活的解决方案。

#### 授权并委托他人

律师不能也不应成为看门人。那样效率低下，并且肯定会导致开发和发布时间出现瓶颈，从而产生挫败感和收入损失。相反，应将审批权限授予产品或项目管理和工程领域有能力的个人。这可以让组织有效地保持灵活性。对客户进行教育（请参阅下一节）对于成功实现这一点至关重要。

我采用的一种方法是为整个工程组织提供开源培训，以便他们可以进行基本的许可模式和体系架构选择，同时为软件开发人员提供更专业的培训，以使他们能够提供更复杂的指导和决策。也要考虑在每个级别上对权限进行明确限制，包括哪些类型的问题和决定必须上报给作为他们开源律师的您。您组织的特定授权级别将取决于您团队在开源方面的经验以及对某些开源问题的敏感性。

#### 教育客户

我发现培训是将您的组织迁移到更具开源意识组织的最有效工具之一。培训您的软件工程师和产品经理至关重要。让我详细说明。

尽管您的软件工程师处在最前沿，并且通常可能对开源问题和软件许可非常了解，但是基于您组织的特定要求对他们进行培训仍然很重要。例如，您的公司可能只允许使用宽松的开源许可证，并且可能对其版权声明和源代码可用性有某些要求。为避免开发中出现随后必须纠正的问题（一种昂贵且耗时的实践），最好培训工程师最大程度地减少不当行为的可能性，尤其是在所有开发过程的开始时（请参阅下一节）。

产品经理也必须接受培训。在许多公司中，产品经理负责营销的经典四个环节（产品、价格、定位和促销），并负责产品从生到死的整个生命周期。产品经理工作的方方面面可能会受到使用开源软件的影响。出于上述相同的原因，了解使用开源软件的要求对他们很有用。此外，更重要的是，产品经理在组织中的重要影响，意味着他们通常能够对流程和政策进行必要的更改。产品经理可能会成为您针对“开放”进行流程变更的最强有力的拥护者之一。

#### 早期发现

在开发过程快要结束时解决开源许可问题非常困难且成本很高。随着软件的发布日期临近，体系架构和开源软件模块都是已经选定且难以更改了。如果检测到问题，例如专有软件模块中嵌入的“左版”（copyleft）软件（当该专有模块无意受开源条款约束时），则在该开发阶段修改体系架构或模块可能非常困难且成本昂贵。相反，应该在开发过程中尽早进行架构分析和开源模块选择的过程，以便可以进行成本更低且更有效的更正。

### 开源法规的“奖励”

实践开源法规是一项有益的职业，因为它具有影响组织朝着“开放”方向发展的能力，这具有很大的好处。是否成功取决于您随着组织的成长和成熟而找到具备可行性和灵活性的解决方案的能力。

---

作者简介：Jeffrey R. Kaufman 是全球领先的开源软件解决方案供应商<ruby> 红帽公司 <rp>  （ </rp> <rt>  Red Hat </rt> <rp>  ） </rp></ruby>开源法务团队的资深商务法律顾问，还担任<ruby> 北卡罗来纳大学 <rp>  （ </rp> <rt>  University of North Carolina </rt> <rp>  ） </rp></ruby>的兼职法律教授。在任职红帽公司之前，Jeffrey 曾担任<ruby> 高通公司 <rp>  （ </rp> <rt>  Qualcomm </rt> <rp>  ） </rp></ruby>的专利和开源法律顾问。

译者简介：薛亮，集慧智佳知识产权咨询公司互联网事业部总监，擅长专利分析、专利布局、竞争对手跟踪、FTO 分析、开源软件知识产权风险分析，致力于为互联网企业、高科技公司提供知识产权咨询服务。


11 年后重新打造的 rdiff-backup 2.0 有什么新功能？

# 11 年后重新打造的 rdiff-backup 2.0 有什么新功能？

>
> 这个老牌 Linux 备份方案迁移到了 Python 3 提供了添加许多新功能的机会。
>
>
>

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

2020 年 3 月，[rdiff-backup](https://rdiff-backup.net/) 升级到了 2.0 版，这距离上一个主要版本已经过去了 11 年。2020 年初 Python 2 的废弃是这次更新的动力，但它为开发团队提供了整合其他功能和优势的机会。

大约二十年来，`rdiff-backup` 帮助 Linux 用户在本地或远程维护他们的数据的完整备份，而无需无谓地消耗资源。这是因为这个开源解决方案可以进行反向增量备份，只备份从上一次备份中改变的文件。

这次改版（或者说，重生）得益于一个新的、自组织的开发团队（由来自 [IKUS Software](https://www.ikus-soft.com/en/) 的 Eric Zolf 和 Patrik Dufresne，以及来自 [Seravo](https://seravo.fi/english) 的 Otto Kekäläinen 共同领导）的努力，为了所有 `rdiff-backup` 用户的利益，他们齐心协力。

### rdiff-backup 的新功能

在 Eric 的带领下，随着向 Python 3 的迁移，项目被迁移到了一个新的、不受企业限制的[仓库](https://github.com/rdiff-backup/rdiff-backup)，以欢迎贡献。团队还整合了多年来提交的所有补丁，包括对稀疏文件的支持和对硬链接的修复。

#### 用 Travis CI 实现自动化

另一个巨大的改进是增加了一个使用开源 [Travis CI](https://en.wikipedia.org/wiki/Travis_CI) 的持续集成/持续交付（CI/CD）管道。这允许在各种环境下测试 `rdiff-backup`，从而确保变化不会影响方案的稳定性。CI/CD 管道包括集成所有主要平台的构建和二进制发布。

#### 使用 yum 和 apt 轻松安装

新的 `rdiff-backup` 解决方案可以运行在所有主流的 Linux 发行版上，包括 Fedora、Red Hat、Elementary、Debian 等。Frank 和 Otto 付出了艰辛的努力，提供了开放的仓库以方便访问和安装。你可以使用你的软件包管理器安装 `rdiff-backup`，或者按照 GitHub 项目页面上的[分步说明](https://github.com/rdiff-backup/rdiff-backup#installation)进行安装。

#### 新的主页

团队将网站从 Savannah 迁移到了 GitHub Pages，并对 [rdiff-backup.net](https://rdiff-backup.net/) 官网进行了改版，加入了新的内容，让外观和感觉更加到位。

### 如何使用 rdiff-backup

如果你是 `rdiff-backup` 的新手，你可能会对它的易用性感到惊讶。备份方案应该让你对备份和恢复过程感到舒适，而不是吓人。

#### 开始备份

要开始备份到本地驱动器，例如通过 USB 连接的驱动器，输入 `rdiff-backup` 命令，然后输入要备份的驱动器和要存储文件的目标目录。

例如，要备份到名为 `my_backup_drive` 的本地驱动器，请输入：

```
$ rdiff-backup /home/tux/ /run/media/tux/my_backup_drive/

```

要将数据备份到异地存储，请使用远程服务器的位置，并在 `::` 后面指向备份驱动器的挂载点：

```
$ rdiff-backup /home/tux/ tux@example.com::/my_backup_drive/

```

你可能需要[设置 SSH 密钥](https://opensource.com/article/20/8/how-ssh)来使这个过程更轻松。

#### 还原文件

做备份的原因是有时文件会丢失。为了使恢复尽可能简单，你甚至不需要 `rdiff-backup` 来恢复文件（虽然使用 `rdiff-backup` 命令提供了一些方便）。

如果你需要从备份驱动器中获取一个文件，你可以使用 `cp` 将其从备份驱动器复制到本地系统，或者对于远程驱动器使用 `scp` 命令。

对于本地驱动器，使用：

```
$ cp _run_media/tux/my_backup_drive/Documents/example.txt ~/Documents

```

或者用于远程驱动器：

```
$ scp tux@example.com::/my_backup_drive/Documents/example.txt ~/Documents

```

然而，使用 `rdiff-backup` 命令提供了其他选项，包括 `--restore-as-of`。这允许你指定你要恢复的文件的哪个版本。

例如，假设你想恢复一个文件在四天前的版本：

```
$ rdiff-backup --restore-as-of 4D /run/media/tux/foo.txt ~/foo_4D.txt

```

你也可以用 `rdiff-backup` 来获取最新版本：

```
$ rdiff-backup --restore-as-of now /run/media/tux/foo.txt ~/foo_4D.txt`

```

就是这么简单。另外，`rdiff-backup` 还有很多其他选项，例如，你可以从列表中排除文件，从一个远程备份到另一个远程等等，这些你可以在[文档](https://rdiff-backup.net/docs/examples.html)中了解。

### 总结

我们的开发团队希望用户能够喜欢这个改版后的开源 `rdiff-backup` 方案，这是我们不断努力的结晶。我们也感谢我们的贡献者，他们真正展示了开源的力量。

---

via: <https://opensource.com/article/20/9/rdiff-backup-linux>

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


ESR：Windows 最终可能成为 Linux

Summary: 近日，著名开源领袖、写出《大教堂与集市》的 ESR 撰文指出，微软的 Windows 可能最后会切换到 Linux 内核，成为一个保留 Windows 界面的 Linux。

微软的目的是吃掉linux，使之成为Windows下的子系统，进而削弱甚至消灭其它linux发行版。

来自河南南阳的 Chrome Mobile 57.0|Android 10 用户

恐怕不可能

即使可能，也是有生之年了

来自江西南昌的 Chrome Mobile 77.0|Android 10 用户

# ESR：Windows 最终可能成为 Linux

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

近日，著名开源领袖、写出《大教堂与集市》的 ESR（Eric S. Raymond）[撰文](http://esr.ibiblio.org/?p=8764)指出，微软的 Windows 可能最后会切换到 Linux 内核，成为一个保留 Windows 界面的 Linux。微软目前的主要收入来源于其云服务，而操作系统业务对微软来说，所能贡献的利润比例会越来越少。Windows 将来可能是运行于 Linux 内核之上的一个桌面环境和一个越来越薄的 Windows 兼容层 —— 以兼容原有的 Windows 二进制程序。

对于 ESR 的这个观点，老王是赞同的：

>
> 这些年来，随着云技术的发展，越来越多的操作系统厂商将业务重点从单机操作系统转向云基础设施。在这一点上，从著名的 Linux 发行版 Ubuntu 的发行商 Canonical 身上也可见一斑。
>
>
> 而另一方面，不说谷歌的 Chromebook 上运行的 Chrome OS，主流的操作系统 macOS 也早已针对 Apple 公司的硬件免费提供。在这种情况下，操作系统已经不是早些年的现金奶牛了。
>
>
> 从微软这几年发布的 Windows 的更新中屡屡出现严重问题所反映出的其内部质控环境的劣化，可见微软已经逐步减少了对操作系统部门的投入。因此，ESR 的这个预测可谓有一定的道理。
>
>
> 看来，我们终将能看到 Linux 打败 Windows 的一天，真正地、彻底地解决 “Ubuntu 第一号 bug”。或许，这不能称之为打败，相对于 Linux 在服务器领域、移动领域、高性能计算领域的高歌猛进，Linux 一直在桌面领域方面进展乏力，这应该说是 Linux 和 Windows 的融合更加合适。
>
>
>

以下是 ESR 的[原文](http://esr.ibiblio.org/?p=8764)译文：

### 桌面战争的最后阶段？

在微软 Windows 操作系统最近的发展中，最令人感兴趣的两个发展是 Windows System for Linux（WSL）和他们将微软 Edge 浏览器移植到 Ubuntu。

对于那些没有注意到的人来说，WSL 允许未经修改的 Linux 二进制文件在 Windows 10 下运行。没有仿真层，没有中间层，它们只需加载就能运行。

微软开发人员现在正在 Linux 内核中提供功能来改进 WSL。而这指向了一个迷人的技术方向。为了理解其中的原因，我们需要注意到自 2010 年推出云服务以来，微软的收入来源是如何变化的。

在十年后，Azure 为微软提供了大部分的创收。Windows 的垄断地位已经成为一个旁观者，传统台式电脑（这是它唯一占据主导地位的市场）的销量在下降。相应地，花在 Windows 开发上的投资回报率也在下降。随着 PC 的销量持续下滑，它不可避免地将不再是利润中心，而变成业务的拖累。

从冷血的利润最大化的角度来看，这意味着继续开发 Windows 是微软宁愿不做的事情。相反，他们最好把更多的资本投入到 Azure 上 —— 据说现在 Azure 运行的 Linux 实例比 Windows 还多。

我们的第三个理由是 Proton。Proton 是一个仿真层，它允许在 Linux 上运行 Steam 上发布的 Windows 游戏。它还不够完美，但已经很接近完美了。我自己就用它在这个巨兽上玩《战舰世界》。

对于游戏而言，它们是对 Windows 仿真层最苛刻的压力测试，比商业软件更苛刻。我们可能已经到了类似 Proton 的技术完全可以在 Linux 上运行 Windows 商业软件的地步。如果还没有，那我们很快就会实现。

那么，如果你是微软公司的战略专家，考虑到所有这些因素，利润最大化的前进道路是什么？

它会是这样：微软 Windows **成为** Linux 内核上的 Proton 一样的模拟层。随着时间的推移，这个层会越来越薄，因为更多的支持会落在主线内核源代码上。而经济上的动机是，由于需要在公司内部完成的开发成本越来越少，因此微软可以减去越来越多的开发成本。

如果你认为这是天方夜谭，那你可以再思考一下。证明这已经是（微软的）计划的最好证据是，微软已经将 Edge 移植到 Linux 下运行。这只有这种方式是有意义的：那就是作为一个试运行，让 Windows 实用程序套件的其他部分摆脱对任何仿真层的依赖。

所以，这一切指向的最终状态是。新的 Windows 将主要是一个 Linux 内核，在它上面有一个旧的 Windows 仿真层，但 Edge 和其余的 Windows 用户空间实用程序**并不使用仿真**。仿真层是为了游戏和其他传统的第三方软件而存在的。

经济上的压力会让微软取消仿真层。部分原因是它完全是一个成本中心。部分原因是因为他们想降低运行 Azure 的复杂性成本。 Windows/Linux 每一点融合都有助于实现这一点 —— 可以减少管理和预期的支持费用。

最终，微软将会宣布结束对 Windows 的仿真。操作系统本身，以及它的用户空间工具，一段时间后，会在一个精心保存的旧 Windows 用户界面下成为 Linux。第三方软件供应商会停止发布 Windows 二进制文件，转而采用原生 Linux API 的 ELF 二进制文件……。

……而 Linux 终将赢得桌面战争，不是通过取代 Windows，而是通过合作。也许这一直是它必须要做的事情。