diff --git a/translated/tech/20190925 Debugging in Emacs- The Grand Unified Debugger.md b/published/20190925 Debugging in Emacs- The Grand Unified Debugger.md
similarity index 57%
rename from translated/tech/20190925 Debugging in Emacs- The Grand Unified Debugger.md
rename to published/20190925 Debugging in Emacs- The Grand Unified Debugger.md
index 7bdeff9b48..ef4b71f194 100644
--- a/translated/tech/20190925 Debugging in Emacs- The Grand Unified Debugger.md
+++ b/published/20190925 Debugging in Emacs- The Grand Unified Debugger.md
@@ -1,35 +1,32 @@
[#]: collector: (lujun9972)
[#]: translator: (cycoe)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11994-1.html)
[#]: subject: (Debugging in Emacs: The Grand Unified Debugger)
[#]: via: (https://opensourceforu.com/2019/09/debugging-in-emacs-the-grand-unified-debugger/)
[#]: author: (Vineeth Kartha https://opensourceforu.com/author/vineeth-kartha/)
-Emacs 调试秘籍之——GUD 调试器
+Emacs 调试秘籍之 GUD 调试器
======
-[![][1]][2]
+![][2]
-_本文简短地对 Emacs 的调试工具 GUD(译注:全称 Grand Unified Debugger,鉴于其缩写形式更为人熟知,以下全文将使用缩写替代此全称)的特性进行了探索。_
+> 本文简短地对 Emacs 的调试工具 GUD 的特性进行了探索。
-如果你是一个 C 或 C++ 开发者,你很可能已经使用过 GDB(GNU 调试器),毫无疑问,它是现今最强大、最无可匹敌的调试器之一。它唯一的缺点就是它基于命令行,虽然仍能提供许多强大的功能,但有时也会具有一些局限性。这也就是为什么聪明的人们开始追求整合了编辑器和调试器的图形化集成开发环境。仍有些开发者坚信使用鼠标会降低工作效率,在 GUI 上用鼠标点~点~点~是来自恶魔的诱惑。
+如果你是一个 C 或 C++ 开发者,你很可能已经使用过 GDB(GNU 调试器),毫无疑问,它是现今最强大、最无可匹敌的调试器之一。它唯一的缺点就是它基于命令行,虽然仍能提供许多强大的功能,但有时也会具有一些局限性。这也就是为什么聪明的人们开始追求整合了编辑器和调试器的图形化集成开发环境。仍有些开发者坚信使用鼠标会降低工作效率,在 GUI 上用鼠标点~点~点~是来自恶魔的诱惑。
因为 Emacs 是现今最酷的文本编辑器之一,我将为你展示如何在不碰鼠标且不离开 Emacs 的情况下,实现写代码、编译代码、调试代码的过程。
-![图 1: Emacs 迷你缓冲区中的编译命令][3]
+GUD(LCTT 译注:全称大统一调试器,鉴于其缩写形式更为人熟知,以下全文将使用缩写替代此全称)是 Emacs 下的一个模式,用于在 Emacs 中运行 GDB。它向 GDB 提供了 Emacs 的所有特性,使用户无需离开编辑器就可以对代码进行调试。
-![图 2: 编译状态][4]
+### 使用 GUD 的前期准备
-GUD 是 Emacs 下的一个模式,用于在 Emacs 中运行 GDB。它向 GDB 提供了 Emacs 的所有特性,使用户无需离开编辑器就可以对代码进行调试。
-
-**使用 GUD 的前期准备**
如果你正在使用一个 Linux 机器,很可能你已经安装了 GDB 和 gcc,接下来就是要确保已经安装了 Emacs。以下的内容我将假设读者熟悉 GDB 并且至少用它做过基本的调试。如果你未曾接触过 GDB,你可以做个快速入门,这些资料在网上随处可得。
-对于那些 Emacs 新手,我将向你介绍一些基本术语。纵览整篇文章,你将看到诸如 _C-c M-x_ 等快捷键。此处 _C_ 代表 _Ctrl_ 键,_M_ 代表 _Alt_ 键。_C-c_ 代表 _Ctrl_ 键和 _c_ 键被同时按下。如果你看到 _C-c c_,它代表同时按下 _Ctrl_ 键和 _c_ 键,紧接着按下 _c_ 键。在 Emacs 中,编辑文本的主要区域被称为主缓冲区,而在 Emacs 窗口下方用于输入命令的区域被称为迷你缓冲区。
+对于那些 Emacs 新手,我将向你介绍一些基本术语。纵览整篇文章,你将看到诸如 `C-c M-x` 等快捷键。此处 `C` 代表 `Ctrl` 键,`M` 代表 `Alt` 键。`C-c` 代表 `Ctrl` 键和 `c` 键被同时按下。如果你看到 `C-c c`,它代表同时按下 `Ctrl` 键和 `c` 键,释放后紧接着按下 `c` 键。在 Emacs 中,编辑文本的主要区域被称为主缓冲区,而在 Emacs 窗口下方用于输入命令的区域被称为迷你缓冲区。
-启动 Emacs,并按下 _C-x C-f_ 来创建一个新文件。Emacs 将提示你输入一个文件名,此处让我们将文件命名为 `buggyFactorial.cpp`。一旦文件打开,输入如下代码:
+启动 Emacs,并按下 `C-x C-f` 来创建一个新文件。Emacs 将提示你输入一个文件名,此处让我们将文件命名为 `buggyFactorial.cpp`。一旦文件打开,输入如下代码:
```
#include
@@ -48,32 +45,38 @@ int main() {
}
```
-使用 _C-x C-s_ 快捷键保存文件。文件保存完毕,是时候进行编译了。按下 _M-x_,在弹出的提示符后输入 _compile_ 并点击回车。然后在提示符后,将内容替换为 _g++ -g buggyFactorial.cpp_ 并再次点击回车。
+使用 `C-x C-s` 快捷键保存文件。文件保存完毕,是时候进行编译了。按下 `M-x`,在弹出的提示符后输入 `compile` 并点击回车。然后在提示符后,将内容替换为 `g++ -g buggyFactorial.cpp` 并再次点击回车。
+
+![图 1: Emacs 迷你缓冲区中编译命令][3]
这将在 Emacs 中开启另一个缓冲区,显示编译的状态。如果你的代码输入没有错误,你将预期得到如图 2 所示的缓冲区。
-要想隐藏编译缓冲区,首先确保你的光标在编译缓冲区中(你可以不使用鼠标,而是通过 _C-x o_ 快捷键将光标从一个缓冲区移动到另一个),然后按下 _C-x 0_。下一步就是运行代码,并观察是否运行良好。按下 _M-!_ 快捷键并在迷你缓冲区的提示符后面输入 _./a.out_。
+![图 2: 编译状态][4]
-你可以看到迷你缓冲区中显示断言失败。很明显代码中有错误,因为 5 的阶乘是 120。那么让我们现在开始调试吧。
+要想隐藏编译缓冲区,首先确保你的光标在编译缓冲区中(你可以不使用鼠标,而是通过 `C-x o` 快捷键将光标从一个缓冲区移动到另一个),然后按下 `C-x 0`。下一步就是运行代码,并观察是否运行良好。按下 `M-!` 快捷键并在迷你缓冲区的提示符后面输入 `./a.out`。
![图 3: 代码在迷你缓冲区中的输出][5]
+你可以看到迷你缓冲区中显示断言失败。很明显代码中有错误,因为 5 的阶乘是 120。那么让我们现在开始调试吧。
+
+### 使用 GUD 调式代码
+
+现在,我们的代码已经编译完成,是时候看看到底哪里出错了。按下 `M-x` 快捷键并在提示符后输入 `gdb`。在接下来的提示符后,输入 `gdb -i=mi a.out`。如果一切顺利,GDB 会在 Emacs 缓冲区中启动,你会看到如图 4 所示的窗口。
+
![图 4: Emacs 中的 GDB 缓冲区][6]
-**使用 GUD 调式代码**
-现在,我们的代码已经编译完成,是时候看看到底哪里出错了。按下 _M-x_ 快捷键并在提示符后输入 _gdb_。在接下来的提示符后,输入 _gdb -i=mi a.out_。如果一切顺利,GDB 会在 Emacs 缓冲区中启动,你会看到如图 4 所示的窗口。
-在 _gdb_ 提示符后,输入 _break main_ 来设置断点,并输入 _r_ 来运行程序。程序会开始运行并停在 _main()_ 函数处。
+在 `gdb` 提示符后,输入 `break main` 来设置断点,并输入 `r` 来运行程序。程序会开始运行并停在 `main()` 函数处。
-一旦 GDB 到达了 _main_ 处设置的断点,就会弹出一个新的缓冲区显示你正在调试的代码。注意左侧的红点,正是你设置断点的位置,同时会有一个小的标志提示你当前代码运行到了哪一行。当前,该标志就在断点处(如图 5)。
+一旦 GDB 到达了 `main` 处设置的断点,就会弹出一个新的缓冲区显示你正在调试的代码。注意左侧的红点,正是你设置断点的位置,同时会有一个小的标志提示你当前代码运行到了哪一行。当前,该标志就在断点处(如图 5)。
![图 5: GDB 与代码显示在两个分离的窗口][7]
-![图 6: 在 Emacs 中使用独立帧显示局部变量][8]
-
-为了调试 _factorial_ 函数,我们需要单步运行。想要达到此目的,你可以使用 _gdb_ 提示符和 GDB 命令 _step_,或者使用 Emacs 快捷键 _C-c C-s_。还有其它一些快捷键,但我更喜欢 GDB 命令。因此我将在本文的后续部分使用它们。
+为了调试 `factorial` 函数,我们需要单步运行。想要达到此目的,你可以在 GBD 提示符使用 GDB 命令 `step`,或者使用 Emacs 快捷键 `C-c C-s`。还有其它一些快捷键,但我更喜欢 GDB 命令。因此我将在本文的后续部分使用它们。
单步运行时让我们注意一下局部变量中的阶乘值。参考图 6 来设置在 Emacs 帧中显示局部变量值。
+![图 6: 在 Emacs 中使用独立帧显示局部变量][8]
+
在 GDB 提示符中进行单步运行并观察局部变量值的变化。在循环的第一次迭代中,我们发现了一个问题。此处乘法的结果应该是 5 而不是 4。
本文到这里也差不多结束了,读者可以自行探索发现 GUD 模式这片新大陆。GDB 中的所有命令都可以在 GUD 模式中运行。我将此代码的修复留给读者作为一个练习。看看你在调试的过程中,可以做哪一些定制化,来使你的工作流更加简单和高效。
@@ -85,17 +88,17 @@ via: https://opensourceforu.com/2019/09/debugging-in-emacs-the-grand-unified-deb
作者:[Vineeth Kartha][a]
选题:[lujun9972][b]
译者:[cycoe](https://github.com/cycoe)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensourceforu.com/author/vineeth-kartha/
[b]: https://github.com/lujun9972
-[1]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Screenshot-from-2019-09-25-15-39-46.png?resize=696%2C440&ssl=1 (Screenshot from 2019-09-25 15-39-46)
-[2]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Screenshot-from-2019-09-25-15-39-46.png?fit=800%2C506&ssl=1
-[3]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_1.png?resize=350%2C228&ssl=1
-[4]: https://i2.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_2.png?resize=350%2C228&ssl=1
-[5]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_3.png?resize=350%2C228&ssl=1
-[6]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_4.png?resize=350%2C227&ssl=1
-[7]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_5.png?resize=350%2C200&ssl=1
-[8]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_6.png?resize=350%2C286&ssl=1
+[1]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Screenshot-from-2019-09-25-15-39-46.png?ssl=1
+[2]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Screenshot-from-2019-09-25-15-39-46.png?ssl=1
+[3]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_1.png?ssl=1
+[4]: https://i2.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_2.png?ssl=1
+[5]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_3.png?ssl=1
+[6]: https://i0.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_4.png?ssl=1
+[7]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_5.png?ssl=1
+[8]: https://i1.wp.com/opensourceforu.com/wp-content/uploads/2019/09/Figure_6.png?ssl=1
diff --git a/published/20191223 Prioritizing simplicity in your Python code.md b/published/20191223 Prioritizing simplicity in your Python code.md
new file mode 100644
index 0000000000..e0760548c7
--- /dev/null
+++ b/published/20191223 Prioritizing simplicity in your Python code.md
@@ -0,0 +1,63 @@
+[#]: collector: (lujun9972)
+[#]: translator: (caiichenr)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11999-1.html)
+[#]: subject: (Prioritizing simplicity in your Python code)
+[#]: via: (https://opensource.com/article/19/12/zen-python-simplicity-complexity)
+[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
+
+简单是 Python 编程的第一要则
+======
+
+> 本文是 Python 之禅特别系列的第二篇,我们将要关注其中第三与第四条原则:简单与复杂。
+
+![](https://img.linux.net.cn/data/attachment/album/202003/15/124150t4wf3wwgdrijx6xx.jpg)
+
+> "Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y plus rien à retrancher."
+>
+> "It seems that perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away."
+>
+> “完美并非无可增,而是不可减。”
+>
+> —Antoine de Saint-Exupéry, [Terre des Hommes][2], 1939
+
+编程时最常有的考量是与复杂性的斗争,只想写出让旁人无从下手的繁杂代码,对每个程序员来讲都算不上难事。倘若未能触及代码的简繁取舍,那么 《[Python 之禅][3]》 就有了一角残缺。
+
+### 简单胜过复杂
+
+尚有选择余地时,应该选简单的方案。Python 少有*不可为*之事,这意味着设计出巴洛克风格(LCTT 译注:即夸张和不理性)的程序只为解决浅显的问题不仅有可能,甚至很简单。
+
+正因如此,编程时应当谨记,代码的简单性是最易丢失,却最难复得的。
+
+这意味着,在可以选用函数来表达时不要去引入额外的类;避免使用强力的第三方库往往有助于你针对迫切的问题场景设计更妥当的简短函数。不过其根本的意图,旨在让你减少对将来的盘算,而去着重解决手头的问题。
+
+以简单和优美作为指导原则的代码相比那些想要囊括将来一切变数的,在日后要容易修改得多。
+
+### 复杂胜过错综复杂
+
+把握用词的精确含义对于理解这条令人费解的原则是至关重要的。形容某事复杂,是说它由许多部分组成,着重组成成分之多;而形容某事错综复杂,则是指其包含着差异巨大、难以预料的行为,强调的是各组成部分之间的杂乱联系。
+
+解决困难问题时,往往没有可行的简单方案。此时,最 Python 化的策略是“自底向上”地构建出简单的工具,之后将其组合用以解决该问题。
+
+这正是对象组合这类技术的闪耀之处,它避免了错综复杂的继承体系,转而由独立的对象把一些方法调用传递给别的独立对象。这些对象都能独立地测试与部署,最终却可以组成一体。
+
+“自底建造” 的另一例即是[单分派泛函数][4]的使用,抛弃了错综复杂的对象之后,我们得到是简单、几乎无行为的对象以及独立的行为。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/19/12/zen-python-simplicity-complexity
+
+作者:[Moshe Zadka][a]
+选题:[lujun9972][b]
+译者:[caiichenr](https://github.com/caiichenr)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/moshez
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (Person reading a book and digital copy)
+[2]: https://en.wikipedia.org/wiki/Wind,_Sand_and_Stars
+[3]: https://www.python.org/dev/peps/pep-0020/
+[4]: https://opensource.com/article/19/5/python-singledispatch
diff --git a/translated/tech/20200113 How to setup a DNS server with bind.md b/published/20200113 How to setup a DNS server with bind.md
similarity index 72%
rename from translated/tech/20200113 How to setup a DNS server with bind.md
rename to published/20200113 How to setup a DNS server with bind.md
index c659d90dbb..356ea4bf8c 100644
--- a/translated/tech/20200113 How to setup a DNS server with bind.md
+++ b/published/20200113 How to setup a DNS server with bind.md
@@ -1,18 +1,18 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11997-1.html)
[#]: subject: (How to setup a DNS server with bind)
[#]: via: (https://fedoramagazine.org/how-to-setup-a-dns-server-with-bind/)
[#]: author: (Curt Warfield https://fedoramagazine.org/author/rcurtiswarfield/)
-如何使用 bind 设置 DNS 服务器
+简明指南:使用 bind 设置 DNS 服务器
======
![][1]
-域名系统或 DNS(通常称为 DNS)将域名翻译或转换为与该域关联的 IP 地址。DNS 是能够让你通过名称找到自己喜欢的网站而不是在浏览器中输入 IP 地址的原因。本指南将向你展示如何配置一个主 DNS 系统以及客户端。
+域名系统,我们更通常称为 DNS 的系统,可以将域名翻译或转换为与该域关联的 IP 地址。DNS 是能够让你通过名称找到自己喜欢的网站而不是在浏览器中输入 IP 地址的原因。本指南将向你展示如何配置一个主 DNS 系统以及客户端。
以下是本文示例中使用的系统细节:
@@ -23,15 +23,15 @@ client.fedora.local (192.168.1.136)- 客户端
### DNS 服务器配置
-使用 sudo 安装 bind 包:
+使用 `sudo` 安装 bind 包:
```
$ sudo dnf install bind bind-utils -y
```
-_bind_ 包提供了_/etc/named.conf_ 配置文件,来供你配置 DNS 服务器。
+bind 包提供了 `/etc/named.conf` 配置文件,来供你配置 DNS 服务器。
-编辑 _/etc/named.conf_ 文件:
+编辑 `/etc/named.conf` 文件:
```
sudo vi /etc/named.conf
@@ -61,37 +61,37 @@ allow-query { localhost; };
allow-query { localhost; 192.168.1.0/24; };
```
-指定转发和反向区域。区域文件只是具有系统上 DNS 信息(例如 IP 地址和主机名)的文本文件。转发区域文件使得将主机名转换为 IP 地址成为可能。反向区域文件则相反。它允许远程系统将 IP 地址转换为主机名。
+指定转发和反向区域。区域文件就是具有系统上 DNS 信息(例如 IP 地址和主机名)的文本文件。转发区域文件使得将主机名转换为 IP 地址成为可能。反向区域文件则相反。它允许远程系统将 IP 地址转换为主机名。
-在 /etc/named.conf 文件的底部查找以下行:
+在 `/etc/named.conf` 文件的底部查找以下行:
```
include "/etc/named.rfc1912.zones";
```
-在此处,你将在_**该行的正上方**_指定区域文件信息,如下所示:
+在此处,你将在**该行的正上方**指定区域文件信息,如下所示:
```
zone "dns01.fedora.local" IN {
-type master;
-file "forward.fedora.local";
-allow-update { none; };
+ type master;
+ file "forward.fedora.local";
+ allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
-type master;
-file "reverse.fedora.local";
-allow-update { none; };
+ type master;
+ file "reverse.fedora.local";
+ allow-update { none; };
};
```
-_forward.fedora.local_ 和 _reverse.fedora.local_ 文件是要创建的区域文件的名称。它们可以是任意名字。
+`forward.fedora.local` 和 `reverse.fedora.local` 文件是要创建的区域文件的名称。它们可以是任意名字。
保存并退出。
#### 创建区域文件
-创建你在 /etc/named.conf 文件中指定的转发和反向区域文件:
+创建你在 `/etc/named.conf` 文件中指定的转发和反向区域文件:
```
$ sudo vi /var/named/forward.fedora.local
@@ -114,7 +114,7 @@ dns01 IN A 192.168.1.160
client IN A 192.168.1.136
```
-所有_**粗体**_内容都特定于你的环境。保存文件并退出。接下来,编辑 _reverse.fedora.local_ 文件:
+所有**粗体**(LCTT 译注:本译文中无法呈现粗体)内容都特定于你的环境。保存文件并退出。接下来,编辑 `reverse.fedora.local` 文件:
```
$ sudo vi /var/named/reverse.fedora.local
@@ -139,11 +139,10 @@ client IN A 192.168.1.136
136 IN PTR client.fedora.local.
```
-所有_**粗体**_内容都特定于你的环境。保存文件并退出。
+所有**粗体**(LCTT 译注:本译文中无法呈现粗体)内容都特定于你的环境。保存文件并退出。
你还需要配置 SELinux 并为配置文件添加正确的所有权。
-
```
sudo chgrp named -R /var/named
sudo chown -v root:named /etc/named.conf
@@ -174,7 +173,7 @@ $ sudo named-checkzone forward.fedora.local /var/named/forward.fedora.local
$ sudo named-checkzone reverse.fedora.local /var/named/reverse.fedora.local
```
-你应该看到 OK 的响应:
+你应该看到 “OK” 的响应:
```
zone forward.fedora.local/IN: loaded serial 2011071001
@@ -193,13 +192,13 @@ $ sudo systemctl start named
#### 配置 resolv.conf 文件
-编辑 _/etc/resolv.conf_ 文件:
+编辑 `/etc/resolv.conf` 文件:
```
$ sudo vi /etc/resolv.conf
```
-查找你当前的 nameserver 行。在示例系统上,调制解调器/路由器充当名称服务器,因此当前看起来像这样:
+查找你当前的 `nameserver` 行。在示例系统上,使用调制解调器/路由器充当名称服务器,因此当前看起来像这样:
```
nameserver 192.168.1.1
@@ -213,15 +212,15 @@ nameserver 192.168.1.160
保存更改并退出。
-不幸的是需要注意一点。如果系统重启或网络重启,那么 NetworkManager 会覆盖 _/etc/resolv.conf_ 文件。这意味着你将丢失所做的所有更改。
+不幸的是需要注意一点。如果系统重启或网络重启,那么 NetworkManager 会覆盖 `/etc/resolv.conf` 文件。这意味着你将丢失所做的所有更改。
-为了防止这种情况发生,请将 _/etc/resolv.conf_ 设为不可变:
+为了防止这种情况发生,请将 `/etc/resolv.conf` 设为不可变:
```
$ sudo chattr +i /etc/resolv.conf
```
-如果要重新设置并允许其再次被覆盖:
+如果要重新设置,就需要允许其再次被覆盖:
```
$ sudo chattr -i /etc/resolv.conf
@@ -267,21 +266,21 @@ $ dig fedoramagazine.org
;; MSG SIZE rcvd: 266
```
-有几件事需要检查以验证 DNS 服务器是否正常运行。显然,取得结果很重要,但这本身并不意味着 DNS 服务器实际上正常工作。
+需要检查几件事以验证 DNS 服务器是否正常运行。显然,取得结果很重要,但这本身并不意味着 DNS 服务器实际上正常工作。
-顶部的 QUERY、ANSWER 和 AUTHORITY 字段应显示为非零,如我们的示例所示:
+顶部的 `QUERY`、`ANSWER` 和 `AUTHORITY` 字段应显示为非零,如我们的示例所示:
```
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 6
```
-并且 SERVER 字段应有你的 DNS 服务器的 IP 地址:
+并且 `SERVER` 字段应有你的 DNS 服务器的 IP 地址:
```
;; SERVER: 192.168.1.160#53(192.168.1.160)
```
-如果这是你第一次运行 _dig_ 命令,请注意完成查询要花费 830 毫秒的时间:
+如果这是你第一次运行 `dig` 命令,请注意完成查询要花费 830 毫秒的时间:
```
;; Query time: 830 msec
@@ -308,7 +307,7 @@ $ dig fedoramagazine.org
$ sudo dnf install bind-utils -y
```
-编辑 /etc/resolv.conf 文件,并将主 DNS 配置为唯一的名称服务器:
+编辑 `/etc/resolv.conf` 文件,并将主 DNS 配置为唯一的名称服务器:
```
$ sudo vi /etc/resolv.conf
@@ -320,7 +319,7 @@ $ sudo vi /etc/resolv.conf
nameserver 192.168.1.160
```
-保存更改并退出。然后,使 _/etc/resolv.conf_ 文件不可变,防止其被覆盖并变回默认设置:
+保存更改并退出。然后,使 `/etc/resolv.conf` 文件不可变,防止其被覆盖并变回默认设置:
```
$ sudo chattr +i /etc/resolv.conf
@@ -368,7 +367,7 @@ $ dig fedoramagazine.org
;; MSG SIZE rcvd: 266
```
-确保 SERVER 输出的是你 DNS 服务器的 IP 地址。
+确保 `SERVER` 输出的是你 DNS 服务器的 IP 地址。
你的 DNS 服务器设置完成了,现在所有来自客户端的请求都会经过你的 DNS 服务器了!
@@ -379,7 +378,7 @@ via: https://fedoramagazine.org/how-to-setup-a-dns-server-with-bind/
作者:[Curt Warfield][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20200225 3 eBook readers for the Linux desktop.md b/published/20200225 3 eBook readers for the Linux desktop.md
new file mode 100644
index 0000000000..07fbb8f09a
--- /dev/null
+++ b/published/20200225 3 eBook readers for the Linux desktop.md
@@ -0,0 +1,113 @@
+[#]: collector: (lujun9972)
+[#]: translator: (wenwensnow)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11990-1.html)
+[#]: subject: (3 eBook readers for the Linux desktop)
+[#]: via: (https://opensource.com/article/20/2/linux-ebook-readers)
+[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt)
+
+可在 Linux 桌面使用的 3 个电子书阅读器应用
+======
+
+> 任意一个开源电子书应用都能使你在大屏设备上的阅读体验得到提升。
+
+![电脑浏览器阅读书籍界面][1]
+
+我通常使用手机或 Kobo 阅读器阅读电子书,总是没有在大屏设备上阅读书籍那么爽。很多人经常在自己的笔记本或桌面电脑上阅读电子书,如果你有这种需求(或者你认为以后会遇到这种情况),我想向你介绍三种 Linux 桌面下的电子书阅读器。
+
+### Bookworm(书虫)
+
+[Bookworm][2] 意在成为一个“简洁、专注的电子书阅读器”。事实证明它也确实做到了。Bookworm 内置一系列基础功能,有人抱怨它太过*简单*,缺少*功能性*(虽然这词显然有点指意不明)。Bookworm 起到了应有的作用而没有无关的花哨功能。
+
+该应用的界面整洁干净。
+
+![Bookworm 电子书应用][3]
+
+你可通过以下方式查看书籍:
+
+* 空格键前往下一页
+* 上下方向键按行移动
+* 左右方向键跳转至前后章节
+
+你也可以通过添加注释或书签跳转至特定页面。
+
+![Bookworm 注释][4]
+
+Bookworm 没有太多设置选项。你能调整书籍字体大小及间距,开启双页模式或夜间模式。在应用中添加新文件夹后,Bookworm 会自动扫描文件夹中的电子书。
+
+![Bookworm 参数设置][5]
+
+Bookworm 支持常用的电子书格式:EPUB、PDF、MOBI、[FB2][6],你还能用它阅读 [CBR][7] 和 CBZ 格式的数字版漫画。我只在 Bookworm 上测试了前三种格式,PDF 倒是能打开,但加载速度很慢,格式也很难看。
+
+### Foliate
+
+单从功能上来说,[Foliate][8] 确实比 Bookworm 强上一些。Foliate 不仅功能更强,它还有更多设置选项。这个功能多样、简单干净的应用满足了所有要求。
+
+![Foliate 电子书应用][9]
+
+在 Foliate 中可以通过空格、方向键、向上或向下翻页键浏览电子书,这里没什么特别的。
+
+你还可以在书籍中添加注释、查找以及翻译字句、查询字词含义。如果你电脑上安装了智能语音应用, Foliate 还能将文本朗读出来。
+
+![在 Foliate 中的注释文本][10]
+
+Foliate 与 Bookworm 相比有更多自定义选项。你能在应用中修改字体类型及大小、行间距、电子书页边距,也可以调高或降低屏幕亮度,从应用内置的四个主题中选择一个等。
+
+![Foliate 设置][11]
+
+你可以在 Foliate 上阅读 EPUB、MOBI、AZW、AZW3 格式的电子书。如果你不了解,我可以提前告诉你,后三种格式是亚马逊 Kindle 阅读器上架的书籍的闭源格式。
+
+### Calibre 电子书阅读器
+
+这个[电子书阅读器][12]是 [Calibre][13] 电子书管理工具的一个组件,就像它的前代一样,电子书阅读器这部分并不是软件整体最棒的部分。
+
+![电子书阅读器应用][14]
+
+不过别被上面的话吓到,它也的确是个桌面电子书阅读器。
+
+在 Calibre 电子书阅读器中,你可以通过方向键、向上/向下翻页键以及空格浏览书籍,还能在在线字典中查找词语含义,添加书签。这一阅读器没有注释功能,但内置的搜索引擎却很好用,你还能将书籍保存为 PDF 格式(虽然我不太明白你为什么要这么做)。
+
+不过参数设置这里确是它出彩的地方,它的可选设置比 Bookworm 和 Foliate 加起来都多,从字体到文本布局,页面分割方式你都能改。除此之外,你还能自定义应用按键设置,将你喜欢的词典网站添加进来,方便阅读查找。
+
+![电子书参数设置][15]
+
+Calibre 电子书阅读器一个很有用的功能,就是把自行设置的 CSS 配置文件效果应用到电子书上。赘言一句,CSS 是一种调整网页格式的方法(这类文件就是许多电子书的一个组成部分)。如果你是使用 CSS 的高手,你可以将自己的 CSS 文件复制粘贴到配置窗口的 “User stylesheet” 部分,这就是个性化的究极办法。
+
+据开发者描述,这一电子书阅读器“能支持所有主流电子书格式”。如果你想知道具体支持格式是什么,[这是列表链接][16]。我测试了列表中的一小部分格式,没有发现问题。
+
+### 留在最后的话
+
+不管你只是单纯想找个电子书阅读器,还是有个更多复杂功能的应用,上文提到的三个选择都很不错,而且它们都能提升你在大屏设备上的阅读体验。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/2/linux-ebook-readers
+
+作者:[Scott Nesbitt][a]
+选题:[lujun9972][b]
+译者:[wenwensnow](https://github.com/wenwensnow)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/scottnesbitt
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_browser_program_books_read.jpg?itok=iNMWe8Bu (Computer browser with books on the screen)
+[2]: https://babluboy.github.io/bookworm/
+[3]: https://opensource.com/sites/default/files/uploads/bookworm-reading.png (Bookworm e-book application)
+[4]: https://opensource.com/sites/default/files/uploads/bookworm-annotations.png (Annotations in Bookworm)
+[5]: https://opensource.com/sites/default/files/uploads/bookworm-preferences.png (Bookworm preferences)
+[6]: https://en.wikipedia.org/wiki/FictionBook
+[7]: https://en.wikipedia.org/wiki/Comic_book_archive
+[8]: https://johnfactotum.github.io/foliate/
+[9]: https://opensource.com/sites/default/files/uploads/foliate-reading.png (Foliate e-book application)
+[10]: https://opensource.com/sites/default/files/uploads/foliate-annotation_0.png
+[11]: https://opensource.com/sites/default/files/uploads/foliate-settings.png (Foliate settings)
+[12]: https://calibre-ebook.com/about
+[13]: https://opensourcemusings.com/managing-your-ebooks-with-calibre
+[14]: https://opensource.com/sites/default/files/uploads/e-book_viewer-reading.png (E-book Viewer application)
+[15]: https://opensource.com/sites/default/files/uploads/ebook-viewer-preferences.png (E-book Viewer preferences)
+[16]: https://manual.calibre-ebook.com/faq.html#what-formats-does-calibre-support-conversion-to-from
+[17]: https://opensourcemusings.com/three-ebook-readers-for-the-linux-desktop
+[18]: https://creativecommons.org/licenses/by-sa/4.0/
diff --git a/translated/tech/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md b/published/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md
similarity index 60%
rename from translated/tech/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md
rename to published/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md
index 53dc123695..f005d928fa 100644
--- a/translated/tech/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md
+++ b/published/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md
@@ -1,8 +1,8 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11992-1.html)
[#]: subject: (Three Ways to Exclude/Hold/Prevent a Specific Package from an apt Upgrade)
[#]: via: (https://www.2daygeek.com/debian-ubuntu-exclude-hold-prevent-packages-from-apt-get-upgrade/)
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
@@ -10,53 +10,45 @@
从 apt 升级中排除/保留/阻止特定软件包的三种方法
======
-有时,由于某些应用依赖性,你可能会意外更新未更新的软件包。
+![](https://img.linux.net.cn/data/attachment/album/202003/13/103902tfyv8eeuo5jf9ifo.jpg)
-在整个系统更新或自动包升级过程中一直会发生。
+有时,由于某些应用依赖性,你可能会意外更新不想更新的软件包。这在全系统更新或自动包升级时经常会发生。如果发生这种情况,可能会破坏应用的功能。这会造成严重的问题,你需要花费大量时间来解决问题。
-如果发生这种情况,可能会破坏应用的功能。
+如何避免这种情况?如何从 `apt-get` 更新中排除软件包?
-这会造成严重的问题,你需要花费大量时间来解决问题。
-
-如果你要**[从 Yum Update 中排除特定软件包][1]**,请参考它。
-
-如何避免这种情况?
-
-如何从 apt-get 更新中排除软件包?
+> 如果你要[从 Yum Update 中排除特定软件包][1],请参考这篇。
是的,可以在 Debian 和 Ubuntu 系统上使用以下三种方法来完成。
- * **[apt-mark 命令][2]**
- * **[dpkg 命令][3]**
- * aptitude 命令
-
-
+* [apt-mark 命令][2]
+* [dpkg 命令][3]
+* aptitude 命令
我们将分别详细展示。
### 方法 1:如何使用 apt-mark 命令排除 Debian/Ubuntu 系统上的软件包更新
-apt-mark 用于将软件包标记/取消标记为自动安装。
+`apt-mark` 用于将软件包标记/取消标记为自动安装。
-hold 选项用于将软件包标记为已阻止,以防止软件包被自动安装、升级或删除。
+`hold` 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。
-unhold 选项用于取消软件包的先前设置,以允许重复执行所有操作。
+`unhold` 选项用于取消先前面的设置,以允许重复执行所有操作。
-运行以下命令以使用 apt-mark 命令保留指定的软件包。
+运行以下命令以使用 `apt-mark` 命令保留指定的软件包。
```
$ sudo apt-mark hold nano
nano set on hold.
```
-保留软件包后,请运行以下 apt-mark 命令查看它们。
+保留软件包后,请运行以下 `apt-mark` 命令查看它们。
```
$ sudo apt-mark showhold
nano
```
-这表明在执行完整的系统更新时,不会升级 **“nano”** 包。
+这表明在执行完整的系统更新时,不会升级 nano 包。
```
$ sudo apt update
@@ -70,7 +62,7 @@ The following packages have been kept back:
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
```
-运行以下命令,使用 apt-mark 命令取消对 “nano” 包的保留。
+运行以下命令,使用 `apt-mark` 命令取消保留 nano 包。
```
$ sudo apt-mark unhold nano
@@ -79,17 +71,17 @@ Canceled hold on nano.
### 方法 2:如何使用 dpkg 命令在 Debian/Ubuntu 系统上排除软件包更新
-dpkg 命令是一个 CLI 工具,用于安装,构建,删除和管理 Debian 软件包。dpkg 的主要且更用户友好的前端是 aptitude。
+`dpkg` 命令是一个 CLI 工具,用于安装、构建、删除和管理 Debian 软件包。`dpkg` 的主要且更用户友好的前端是 `aptitude`。
-运行以下命令使用 dpkg 命令阻止给定的软件包。
+运行以下命令使用 `dpkg` 命令阻止给定的软件包。
-**语法:**
+语法:
```
$ echo "package_name hold" | sudo dpkg --set-selections
```
-运行以下 dpkg 命令以保留 **“apache2”** 包。
+运行以下 `dpkg` 命令以保留 apache2 包。
```
$ echo "apache2 hold" | sudo dpkg --set-selections
@@ -102,7 +94,7 @@ $ sudo dpkg --get-selections | grep "hold"
apache2 hold
```
-它会显示在执行完整的系统更新时,不会升级 **“apache2”** 包。
+它会显示在执行完整的系统更新时,不会升级 apache2包。
```
$ sudo apt update
@@ -116,15 +108,15 @@ The following packages have been kept back:
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
```
-运行以下命令,使用 dpkg 命令取消对指定软件包的保留。
+运行以下命令,使用 `dpkg` 命令取消对指定软件包的保留。
-**语法:**
+语法:
```
$ echo "package_name install" | sudo dpkg --set-selections
```
-运行以下命令,使用 dpkg 命令取消保留 “apache2” 包。
+运行以下命令,使用 `dpkg` 命令取消保留 apache2 包。
```
$ echo "apache2 install" | sudo dpkg --set-selections
@@ -132,17 +124,17 @@ $ echo "apache2 install" | sudo dpkg --set-selections
### 方法 3:如何使用 aptitude 命令排除 Debian/Ubuntu 系统上的软件包更新
-aptitude 命令是 Debian 及其衍生版本的基于文本的软件包管理界面。
+`aptitude` 命令是 Debian 及其衍生版本的基于文本的软件包管理界面。
它允许用户查看软件包列表并执行软件包管理任务,例如安装、升级和删除软件包。它可以从可视界面或命令行执行操作。
-运行以下命令,使用 aptitude 命令保留指定的软件包。
+运行以下命令,使用 `aptitude` 命令保留指定的软件包。
```
$ sudo aptitude hold python3
```
-保留某些软件包后,请运行以下 aptitude 命令查看它们。
+保留某些软件包后,请运行以下命令查看它们。
```
$ sudo dpkg --get-selections | grep "hold"
@@ -152,7 +144,7 @@ $ sudo apt-mark showhold
python3
```
-这表明在执行完整的系统更新时,不会升级 **“python3”** 软件包。
+这表明在执行完整的系统更新时,不会升级 python3 软件包。
```
$ sudo apt update
@@ -166,7 +158,7 @@ The following packages have been kept back:
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
```
-使用 apt-mark 命令运行以下命令以解除对 **“python3”** 软件包的保留。
+使用 `aptitude ` 命令运行以下命令以解除对 python3 软件包的保留。
```
$ sudo aptitude unhold python3
@@ -179,7 +171,7 @@ via: https://www.2daygeek.com/debian-ubuntu-exclude-hold-prevent-packages-from-a
作者:[Magesh Maruthamuthu][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20200311 How to install pip to manage PyPI packages easily.md b/published/20200311 How to install pip to manage PyPI packages easily.md
new file mode 100644
index 0000000000..b6453085c1
--- /dev/null
+++ b/published/20200311 How to install pip to manage PyPI packages easily.md
@@ -0,0 +1,145 @@
+[#]: collector: (lujun9972)
+[#]: translator: (HankChow)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11993-1.html)
+[#]: subject: (How to install pip to manage PyPI packages easily)
+[#]: via: (https://opensource.com/article/20/3/pip-linux-mac-windows)
+[#]: author: (Vijay Singh Khatri https://opensource.com/users/vijaytechnicalauthor)
+
+安装 pip 轻松管理 PyPI 软件包
+======
+
+> 在 Linux、Mac 或 Windows 上为旧版 Python 安装 pip。
+
+![](https://img.linux.net.cn/data/attachment/album/202003/14/102539wq3a73opalpzoabb.jpg)
+
+Python 是一种功能强大、流行广泛的编程语言,在常规编程、数据科学等很多方面它都有丰富的软件包可供使用。但这些软件包通常都不会在 Python 安装时自动附带,而是需要由用户自行下载、安装和管理。所有的这些软件包(包括库和框架)都存放在一个名叫 [PyPI][2](也就是 Python 软件包索引)的中央存储库当中,而 `pip`(也就是首选安装程序)则是管理这个中央存储库的工具。
+
+在安装 `pip` 之后,管理 PyPI 的软件包就变得很方便了。大部分的软件包都可以通过在终端或者命令行界面执行 `python -m pip install <软件包名>` 这样的命令来完成安装。
+
+较新版本的 Python 3(3.4 或以上)和 Python 2(2.7.9 或以上)都已经预装了 `pip`,旧版本的 Python 没有自带 `pip`,但可以另外安装。
+
+在这篇文章中,我将会介绍 `pip` 在 Linux、Mac 和 Windows 系统上的安装过程。想要了解更多详细信息,可以参考 [pip.pypa][3] 的文档。
+
+### 首先需要安装 Python
+
+首先你的系统中需要安装好 Python,否则 `pip` 安装器无法理解任何相关的命令。你可以在命令行界面、Bash 或终端执行 `python` 命令确认系统中是否已经安装 Python,如果系统无法识别 `python` 命令,请先[下载 Python][4] 并安装。安装完成后,你就可以看到一些引导你安装 `pip` 的提示语了。
+
+### 在 Linux 上安装 pip
+
+在不同发行版的 Linux 上,安装 `pip` 的命令也有所不同。
+
+在 Fedora、RHEL 或 CentOS 上,执行以下命令安装:
+
+```
+$ sudo dnf install python3
+```
+
+在 Debian 或 Ubuntu 上,使用 `apt` 包管理工具安装:
+
+```
+$ sudo apt install python3-pip
+```
+
+其它的发行版可能还会有不同的包管理工具,比如 Arch Linux 使用的是 `pacman`:
+
+```
+$ sudo pacman -S python-pip
+```
+
+执行 `pip --version` 命令就可以确认 `pip` 是否已经正确安装。
+
+在 Linux 系统上安装 `pip` 就是这样简单,你可以直接跳到“使用 pip”部分继续阅读。
+
+### 在 Mac 上安装 pip
+
+MacOS 已经预装了 Python,但 Python 版本一般是比较旧的。如果你要使用 Python 的话,建议[另外安装 Python 3][6]。
+
+在 Mac 上可以使用 [homebrew][7] 安装 Python 3:
+
+```
+$ brew update && brew upgrade python
+```
+
+如果你安装的是以上提到的新版本 Python 3,它会自带 `pip` 工具。你可以使用以下命令验证:
+
+```
+$ python3 -m pip --version
+```
+
+如果你使用的是 Mac,安装过程也到此结束,可以从“使用 pip”部分继续阅读。
+
+### 在 Windows 上安装 pip
+
+以下 `pip` 安装过程是针对 Windows 8 和 Windows 10 的。下面文章中的截图是 Windows 10 环境下的截图,但对 Windows 8 同样适用。
+
+首先确认 [Python 已经安装完成][8]。
+
+如果你想在 Windows 系统上像 Linux 一样使用包管理工具,[Chocolatey][9] 是一个不错的选择,它可以让 Python 的调用和更新变得更加方便。Chocolatey 在 PowerShell 中就可以运行,只需要简单的命令,Python 就可以顺利安装。
+
+```
+PS> choco install python
+```
+
+接下来就可以使用 `pip` 安装所需的软件包了。
+
+### 使用 pip
+
+在 Linux、BSD、Windows 和 Mac 上,`pip` 都是以同样的方式使用的。
+
+例如安装某个库:
+
+```
+python3 -m pip install foo --user
+```
+
+卸载某个已安装的库:
+
+```
+python3 -m pip uninstall foo
+```
+
+按照名称查找软件包:
+
+```
+python3 -m pip search foo
+```
+
+将 `pip` 更新到一个新版本:
+
+```
+$ sudo pip install --upgrade pip
+```
+
+需要注意的是,在 Windows 系统中不需要在前面加上 `sudo` 命令,这是因为 Windows 通过独有的方式管理用户权限,对应的做法是[创建一个执行策略例外][10]。
+
+```
+python -m pip install --upgrade pip
+```
+
+希望本文介绍的的方法能对你有所帮助,欢迎在评论区分享你的经验。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/pip-linux-mac-windows
+
+作者:[Vijay Singh Khatri][a]
+选题:[lujun9972][b]
+译者:[HankChow](https://github.com/HankChow)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/vijaytechnicalauthor
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
+[2]: https://pypi.org/
+[3]: https://pip.pypa.io/en/stable/installing/
+[4]: https://www.python.org/downloads/
+[5]: tmp.u1JOYd3gs9#usage
+[6]: https://opensource.com/article/19/5/python-3-default-mac
+[7]: https://brew.sh
+[8]: https://opensource.com/article/19/8/how-install-python-windows
+[9]: https://opensource.com/article/20/3/chocolatey
+[10]: https://opensource.com/article/20/3/chocolatey#admin
diff --git a/sources/news/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md b/sources/news/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md
new file mode 100644
index 0000000000..b4c58f249e
--- /dev/null
+++ b/sources/news/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md
@@ -0,0 +1,116 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (GNOME 3.36 Released With Visual & Performance Improvements)
+[#]: via: (https://itsfoss.com/gnome-3-36-release/)
+[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
+
+GNOME 3.36 Released With Visual & Performance Improvements
+======
+
+The latest version GNOME 3.36 also codenamed as “Gresik” has finally landed after 6 months of [GNOME 3.34][1] release.
+
+Not just limited to the feature additions, but GNOME 3.36 improves on a lot of things that we needed.
+
+In this article, I’ll highlight the key changes with GNOME’s new release.
+
+### GNOME 3.36 Key Improvements
+
+If you want a quick look at what has changed, you can take a look at the official video below:
+
+[Subscribe to our YouTube channel for Linux videos][2]
+
+Now, let me highlight the changes in the latest release separately:
+
+#### GNOME Shell Extensions App
+
+You can easily manage your GNOME shell extensions right through a dedicated “Extensions” app.
+
+![][3]
+
+So, you can update, configure, delete or disable the existing extension using the app.
+
+#### Do Not Disturb Toggle
+
+![][4]
+
+You might have already noticed this on Pop!_OS or other Linux distros.
+
+However, GNOME 3.36 now implements a DND toggle in the notifications pop-over area out of the box. You won’t be notified of anything unless you turn it off.
+
+#### Lock Screen Improvements
+
+![][5]
+
+With the new version, the lock screen won’t need an additional slide (or animation) before entering the credentials. Instead, you will be directly greeted by the login screen.
+
+Also, to improve consistency, the background image of the lockscreen will be a blurred out version of your wallpaper.
+
+So, overall, the improvements to the lock screen aim to make it easier to access while improving the look/feel of it.
+
+#### Visual Changes
+
+![][6]
+
+Including the obvious new additions – there are several design changes that have improved the overall look and feel of GNOME 3.36.
+
+Ranging from the icon redesign to the folders and system dialogues, a lot of minor improvements are in place to enhance the user experience on GNOME 3.36.
+
+Also, the settings app has been tweaked to make the options easier to access along with minor interface re-designs.
+
+#### Major Performance Improvement
+
+GNOME claims that this update also brings in performance improvement for the GNOME desktop.
+
+You will have a noticeable difference in the performance when using a distribution with GNOME 3.36 on board. Be it an animation, a redesign, or a minor tweak, everything that has been done for GNOME 3.36 positively impacts the performance for the users.
+
+#### Other Changes
+
+In addition to all the key changes mentioned above, there’s a bunch of other improvements like:
+
+ * Clock redesign
+ * User documentation update
+ * GNOME Setup assistant improvements
+
+
+
+And, a lot of stuff here and there. You can take a look at the [official release notes][7] to learn more about it.
+
+### How to get GNOME 3.36?
+
+Even though GNOME 3.36 has officially released. It will take a while for the Linux distributions to let you easily upgrade your GNOME experience.
+
+[Ubuntu 20.04 LTS][8] release will include the latest version out of the box. You can wait for it.
+
+Other [popular Linux distributions][9] like Fedora, OpenSuse, Pop!_OS should soon include GNOME 3.36 soon enough. [Arch Linux][10] has already upgraded to GNOME 3.36.
+
+I’ll advise you to wait it out till you get an update for your distribution. Nevertheless, you can take a look at the [source code][11] or try the upcoming development editions of popular distros that could potentially feature GNOME 3.36.
+
+What do you think about GNOME 3.36? Let me know your thoughts in the comments below.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/gnome-3-36-release/
+
+作者:[Ankush Das][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/ankush/
+[b]: https://github.com/lujun9972
+[1]: https://itsfoss.com/gnome-3-34-release/
+[2]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
+[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/extensions-gnome.jpg?ssl=1
+[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/dnd-gnome.jpg?ssl=1
+[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/gnome-lockscreen.jpg?ssl=1
+[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/gnome-settings.jpg?ssl=1
+[7]: https://help.gnome.org/misc/release-notes/3.36/
+[8]: https://itsfoss.com/ubuntu-20-04-release-features/
+[9]: https://itsfoss.com/best-linux-distributions/
+[10]: https://www.archlinux.org/
+[11]: https://gitlab.gnome.org/GNOME
diff --git a/sources/talk/20200214 Linux is our love language.md b/sources/talk/20200214 Linux is our love language.md
deleted file mode 100644
index 397ddee4d3..0000000000
--- a/sources/talk/20200214 Linux is our love language.md
+++ /dev/null
@@ -1,83 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (Linux is our love language)
-[#]: via: (https://opensource.com/article/20/2/linux-love-language)
-[#]: author: (Christopher Cherry https://opensource.com/users/chcherry)
-
-Linux is our love language
-======
-When a wife teaches a husband some new tech skills, they both learn a
-lot more than they expect.
-![Red heart with text "you are not alone"][1]
-
-2019 was a year of learning in the Cherry household. I am a senior software engineer who set out to learn new skills and, along the way, I taught my husband, Chris. By teaching him some of the things I learned and asking him to work through my technology walkthrough articles, I helped Chris learn new skills that enabled him to pivot his career deeper into the technology field. And I learned new ways to make my walkthroughs and training materials more accessible for readers to digest.
-
-In this article, we talk about what we learned individually and from each other, then we explore what it means for their future.
-
-### Questions for the student
-
-**Jess:** Chris, what made you want to learn more about my field?
-
-**Chris:** It was primarily to further my career. Being in network engineering has shown me that being an expert only on networks is not as valuable as it once was, and I have to know a little bit of everything. Since the network is often blamed for outages or application challenges these days, I wanted to understand more from a developer's perspective on writing applications so I could see how they depend on the network as a resource.
-
-**Jess:** What did I teach you first, and what did you learn from it?
-
-**Chris:** It all started with installing Linux for the first time, then adding [Ansible][2]. Each Linux distribution I worked with was easy enough to install, as long as the hardware was compatible, but compatibility wasn't always clear. That meant sometimes I learned first-hand how to troubleshoot Linux within the first five minutes of running an installation (and I liked it). Ansible gave me a reason to learn Linux package managers to install the software. Once it was installed, I quickly learned how package management handles dependencies as I looked at the files that yum installed, so Ansible, which is written in Python, can run on my system. From there, I started to install all kinds of applications with Ansible.
-
-**Jessica:** Do you like the way I taught you?
-
-**Chris:** We had our struggles at first, until we ironed out how I like to learn and how you should present the best way for me to learn. In the beginning, it was hard to follow what you meant. For instance, when you said things like "a Docker container," I had no reference to what you were talking about. Early on, the response was, "well, it's a container," which meant nothing to me at the time. Once I got you to explain it in more detail, it became a lot more fun to learn.
-
-**Jess:** To be fair, this was a big lesson for me as well. I hadn't trained anyone with less knowledge on this technology than me before you, so you helped me realize that I needed to be clearer with my explanations. Thanks for that.
-
-How did you feel about testing my articles, the ones where I had you run through the steps?
-
-**Chris:** Personally, I thought it would be easy, and boy, was I wrong. One of the main things I learned from these, like your [introduction to Vagrant][3], was how each Linux distribution varies more than I realized. The operating system (OS) changes how you set it up, the requirements to run, and the specific commands. It seems like a lot more variability than there is with the network gear I've worked on. So I started to pay a lot more attention to the instructions and whether they were written for my OS or another one (and how difficult it can be to know sometimes). I seemed to break a lot of things along the way.
-
-**Jess:** I break stuff all day, so different paths for different problems are daily occurrences for me.
-
-### Questions for the teacher
-
-**Chris:** Jess, would you change anything with the way you taught me so far?
-
-**Jess:** I'd have liked to make you read more, as I do. Learning new technology has me churning through books. I read a book and a half, if not two books, a week, and that's with spending one hour in the morning and one hour before bed every day. I also pick one project to run through for two weeks for about an hour a day to reinforce the book skills. And that's in addition to the tech articles I read for the first hour of my day while taking in an immense amount of coffee. When I think about your goal to grow your career, I think books are an important element alongside the great blog posts and articles we talk about. I feel my reading regiment has kept me up to speed, and if you did the same, you would catch up to me pretty quickly.
-
-**Chris:** So did the student teach the teacher in any way?
-
-**Jess:** I learned a great deal about being patient from you. For instance, after walking through an installation of Ansible, I asked what you wanted to do next. Your first answer was, "I don't know," which was hard for me because I want you to learn what you want to learn. So I changed my approach, and now we talk more about what you want to achieve before walking through installing anything. When we moved on to the Vagrant article we worked on together, I created it with an end goal in mind, so we had something to achieve right away.
-
-This actually made a massive change in how I do training at work. Now I ask more questions on how people learn and work hand-in-hand more often than I did before. I am more likely to sit and go through and make sure someone understands what I'm saying and what we're doing. I wasn't really before.
-
-### What we learned together
-
-As a couple, we both grew from collaborating on technology over the last year.
-
-**Chris:** I'm blown away at how much I learned. Over the course of a year, I understand new operating systems, how to use an API, web application deployment with Ansible, and standing up virtual machines with Vagrant. I also learned how documentation makes life better, so it's worth the time it takes to write some. In this field of work, however, behavior isn't always documented, so I've learned to be ready to work through tough issues and document how I fix them.
-
-**Jess:** Beyond what I learned from teaching you, I've focused on learning a good deal about Kubernetes in cloud environments. That includes deployment strategies, the complexity of the Kubernetes API, building my own containers, and securing these environments. I've also saved time to dabble: toying around with serverless code, AI models, Python, and graphically displaying heat maps. It's been a good year.
-
-What's next for us? It's yet to be seen, but I can assure you that we're going to share it here on Opensource.com.
-
-**Who did you mentor in 2019, or who are you mentoring in 2020? Tell us about it in the comments.**
-
-I can see the brightness of curiosity in my six year old niece Shuchi's eyes when she explores a...
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/2/linux-love-language
-
-作者:[Christopher Cherry][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/chcherry
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/red-love-heart-alone-stone-path.jpg?itok=O3q1nEVz (Red heart with text "you are not alone")
-[2]: https://opensource.com/resources/what-ansible
-[3]: https://opensource.com/resources/vagrant
diff --git a/sources/talk/20200306 How I learned about burnout the hard way.md b/sources/talk/20200306 How I learned about burnout the hard way.md
index ce9af6fb52..cce3324e7e 100644
--- a/sources/talk/20200306 How I learned about burnout the hard way.md
+++ b/sources/talk/20200306 How I learned about burnout the hard way.md
@@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
-[#]: translator: ( )
+[#]: translator: (chuan-325)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
diff --git a/sources/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md b/sources/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md
deleted file mode 100644
index cddc7346ed..0000000000
--- a/sources/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md
+++ /dev/null
@@ -1,61 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (2020 Will Be a Year of Hindsight for SD-WAN)
-[#]: via: (https://www.networkworld.com/article/3531315/2020-will-be-a-year-of-hindsight-for-sd-wan.html)
-[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/)
-
-2020 Will Be a Year of Hindsight for SD-WAN
-======
-
-metamorworks
-
-The expression “hindsight is 20/20” couldn’t be truer for software-defined wide-area networking (SD-WAN). To summarize the past few years: Cloud computing and digital transformation drove companies to re-evaluate traditional WAN technology, which no longer met their growing business needs. That’s when SD-WAN emerged as a promising new technology.
-
-SD-WAN was designed to address the problem of traffic management from physical devices and to enable software-based provisioning from the cloud. Many initial SD-WAN deployments were fueled by the desire to replace expensive multi-protocol label switching (MPLS). Companies were hopeful that it could magically solve all their networking problems. But in practice, basic SD-WAN solutions fell well short on this promise.
-
-Fast forward to the present, and much of the hype surrounding SD-WAN has settled, and early implementations are behind us. Now it’s time to look back on what we learned in 2019 and what to improve upon in 2020. So, let’s dive in.
-
-### **1\. It’s not about cost savings.**
-
-Most companies choose SD-WAN as an MPLS replacement because it can lower WAN costs. However, [cost savings][1] can vary with SD-WAN, so it shouldn’t be used as a primary driver for deploying the technology. Companies should instead focus on improving network agility—such as enabling faster site deployment and reducing configuration times—whatever their needs may be. The main driver for SD-WAN is to make networks more efficient; if done successfully, the cost savings will follow.
-
-### **2\. WAN optimization is necessary.**
-
-Speaking of efficiency, [WAN optimization][2] improves the performance of application and data traffic. By applying techniques like protocol acceleration, deduplication, compression, and caching, WAN optimization can increase bandwidth, reduce latency, and mitigate packet loss. The initial notion was that SD-WAN could eliminate the requirement for WAN optimization altogether, but we now know that some applications need additional performance. The technologies complement—not replace—each other. And they should be used to address different problems.
-
-### **3\. Security can’t be an afterthought.**
-
-SD-WAN has many benefits, one of which is using broadband internet to quickly send enterprise application traffic. But this approach also poses security risks since it exposes users and their local networks to the untrusted public internet. Security should be part of SD-WAN implementation from the beginning, as opposed to an afterthought. Companies can achieve the desired application performance and protection by positioning security close to branch locations using services like [cloud-hosted security][3].
-
-### **4\. Visibility is critical to SD-WAN success.**
-
-Having [visibility][4] into application and data traffic takes the guesswork out of network management. The best place to start is at the pre-deployment phase, where companies can assess their existing capabilities and what’s missing before SD-WAN is implemented. Visibility, in the form of day-to-day monitoring and alerts, continues to play an important role after deployment. Companies that understand what’s going on in their network are better prepared to respond to performance issues and can use that knowledge to avoid future problems.
-
-### **5\. Wireless WAN isn’t ready for prime time.**
-
-SD-WAN connects users to applications via any transport, including broadband and 4G/LTE (Long Term Evolution) wireless. That’s why [mobile connectivity][5] is increasingly being integrated into SD-WAN solutions. While companies are eager to use 4G as a potential transport alternative—especially in remote locations—the resulting costs of pay-per-use 4G services are high. Additionally, 4G can be problematic due to latency and bandwidth limitations. The best approach is to wait for service providers to deploy 5G with better pricing options. This will be the year when we see 5G rollouts and more focus on wireless SD-WAN.
-
-Be sure to watch this SD-WAN video series: [Everything you should know about SD-WAN][6].
-
---------------------------------------------------------------------------------
-
-via: https://www.networkworld.com/article/3531315/2020-will-be-a-year-of-hindsight-for-sd-wan.html
-
-作者:[Zeus Kerravala][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://www.networkworld.com/author/Zeus-Kerravala/
-[b]: https://github.com/lujun9972
-[1]: https://blog.silver-peak.com/to-maximize-the-value-of-sd-wan-look-past-hardware-savings
-[2]: https://blog.silver-peak.com/sd-wan-vs-wan-optimization
-[3]: https://blog.silver-peak.com/sd-wans-enable-scalable-local-internet-breakout-but-pose-security-risk
-[4]: https://blog.silver-peak.com/know-the-true-business-drivers-for-sd-wan
-[5]: https://blog.silver-peak.com/mobility-and-sd-wan-part-1-sd-wan-with-4g-lte-is-a-reality
-[6]: https://www.silver-peak.com/everything-you-need-to-know-about-sd-wan
diff --git a/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md b/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md
new file mode 100644
index 0000000000..d99b38c7b8
--- /dev/null
+++ b/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md
@@ -0,0 +1,92 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (Next wave of digital transformation requires better security, automation)
+[#]: via: (https://www.networkworld.com/article/3531448/next-wave-of-digital-transformation-requires-better-security-automation.html)
+[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/)
+
+Next wave of digital transformation requires better security, automation
+======
+F5 report highlights the challenges of digital initiatives, including a struggle to secure multi-cloud environments and a lack of IT skills required to extend automation efforts.
+Loops7 / Getty Images
+
+Digital transformation is a top-of-mind priority for CIOs who want innovative ways to deploy applications and run IT operations. In today's digital economy, companies that don't depend on applications to support their business are rare. On the contrary, most companies have some kind of digital transformation initiative in place, which is driving the adoption of cloud-native architectures and application services.
+
+A new report from application delivery vendor F5 Networks finds businesses are entering the second phase of digital transformation by automating more parts of their networks. Based on a survey of nearly 2,600 senior leaders globally—from various industries, company sizes, and roles—the [_2020 State of Application Services Report_][1] uncovered five key trends shaping the application landscape.
+
+**READ MORE:** [Top 10 underused SD-WAN features][2]
+
+### 1\. Every company is undergoing a digital transformation
+
+Having conducted its annual survey for six years in a row, F5 consistently found IT optimization and business process optimization to be the top reported benefits for companies with digital transformation initiatives. At this point, most companies have mastered automation of individual tasks by digitizing IT and business processes—which the report classifies as phase one of digital transformation.
+
+Moving on to phase two, companies are shifting their focus to reducing complexity and supporting apps with a consistent set of services. External-facing apps make up a portion (45%) of an average company's portfolio and help generate revenue. Yet, the internal-facing ones—like productivity and operational apps—are vital to digitizing business processes.
+
+Modern, microservices/cloud-native apps now make up approximately 15% of a company's portfolio, compared to 11% for mainframe-hosted apps. This mix of new and older generation apps indicates that businesses are dealing with a diverse app portfolio. As more businesses adopt an application-centric mindset, they can start managing their app portfolio like a business asset.
+
+### 2\. Organizations struggle to secure multi-cloud environments
+
+Every company has different needs, which is why most choose the best cloud for their applications on a case-by-case basis, the report finds. Businesses are adopting cloud platforms at a high rate, with 27% planning to have more than half of their applications in the cloud by the end of 2020.
+
+For 87% of companies, multi-cloud is the preferred choice due to its flexibility. Multi-cloud typically includes a mix of infrastructure-as-a-service (IaaS) environments, so a company can choose to deploy multiple software-as-a-service (SaaS) or platform-as-a-service (PaaS) cloud services.
+
+[][3]
+
+However, multi-cloud environments pose challenges for businesses when it comes to maintaining security, policy, and compliance, according to the report's respondents. Companies are dealing with applications that reach hundreds to millions of end users—each one with its own security risk. Meanwhile, many don't have the expertise to protect the apps.
+
+A whopping 71% of companies surveyed by F5 reported a skills gap in security. Only 45% of companies are confident that they're able to secure apps in the public cloud, while 62% think they can protect apps in an on-premises data center. The most confident companies have consistency across multiple architectures and multiple infrastructures, ensuring security and performance of all apps in their portfolio.
+
+### 3\. Automation key to boosting efficiency
+
+Manual processes may have been the norm for legacy networks, but modern networks require automation. That's why most companies (73%) have embraced it.
+
+In this year's report, F5 observed more consistent use of automation in the deployment pipeline than in previous years. Automation of application infrastructure, network, application services, and security is nearly equal across the board at approximately 40% for survey respondents. (See also: [Enterprises being won over by speed, effectiveness of network automation][4])
+
+Interestingly, more companies are choosing open source and continuous integration/continuous delivery (CI/CD) tools for automation over proprietary vendor solutions. The report found there is a need for open ecosystems with the increasing use of CI/CD tools, as businesses search for ways to address problems that slow down automation. Companies said their biggest struggles are with skill gaps in enterprise IT, integrating toolsets across vendors and devices, and the cost of new tools.
+
+### 4\. Security app services are most widely deployed
+
+Modern networks require application services—a pool of services necessary to deploy, run, and secure apps across on-premises or multi-cloud environments. Today, 69% of companies are using 10 or more application services, such as ingress control and service discovery. Ingress control is a relatively new application service that has become essential to companies with high API call volumes. It's one of many examples of the growing adoption of microservices-based apps.
+
+Security services remain as the most widely deployed, with these in particular dominating the top five: SSL VPN and firewall services (81%); IPS/IDS, antivirus, and spam mitigation (77%); load balancing and DNS (68%); web application firewalls (WAF) and DDoS protection (each at 67%).
+
+Over the next 12 months, the evolution of cloud and modern app architectures will continue to shape application services. At the top of the list (41%) is software-defined wide-area networking ([SD-WAN][5]). SD-WAN enables software-based provisioning from the cloud to meet modern application demands. Early SD-WAN deployments focused on replacing costly multi-protocol label switching (MPLS), but there is now greater emphasis on security as a core requirement for SD-WAN.
+
+### 5\. DevOps picks up responsibility for app services
+
+Although IT operations is still primarily responsible for deploying app services, the report revealed a shift taking place from single-function to ops-oriented team structures—such SecOps and DevOps.
+
+The responsibility for securing, optimizing, and managing apps by DevOps teams is growing, fueled by cloud and container-native applications. Compared to just a few years ago, businesses have developed a preference for containers over virtual appliances for app services. Container preference grew from just 6% in 2017 to 18% in 2020, surpassing virtual machines (15%) and hardware (15%).
+
+Regardless of preference, the challenges of modern app architectures call for collaboration between teams. IT operations and DevOps don't have to be mutually exclusive and can work together to address those challenges.
+
+### What's Next?
+
+Senior leaders surveyed in the report see big data analytics coming into play in the next two to five years.
+
+Companies today only use a small portion of their data and aren't taking full advantage of it. In the third phase of the digital transformation, businesses can begin leveraging data captured by apps via artificial intelligence (AI)-powered analytics. The harnessed data can provide valuable insights to improve business processes.
+
+Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind.
+
+--------------------------------------------------------------------------------
+
+via: https://www.networkworld.com/article/3531448/next-wave-of-digital-transformation-requires-better-security-automation.html
+
+作者:[Zeus Kerravala][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.networkworld.com/author/Zeus-Kerravala/
+[b]: https://github.com/lujun9972
+[1]: https://www.f5.com/state-of-application-services-report
+[2]: https://www.networkworld.com/article/3518992/top-10-underused-sd-wan-features.html
+[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage)
+[4]: https://www.networkworld.com/article/3530275/enterprises-being-won-over-by-speed-effectiveness-of-network-automation.html
+[5]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html
+[6]: https://www.facebook.com/NetworkWorld/
+[7]: https://www.linkedin.com/company/network-world
diff --git a/sources/talk/20200313 What is the internet backbone and how it works.md b/sources/talk/20200313 What is the internet backbone and how it works.md
new file mode 100644
index 0000000000..7a163fce7f
--- /dev/null
+++ b/sources/talk/20200313 What is the internet backbone and how it works.md
@@ -0,0 +1,73 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (What is the internet backbone and how it works)
+[#]: via: (https://www.networkworld.com/article/3532318/what-is-the-internet-backbone-and-how-it-works.html)
+[#]: author: (Tim Greene https://www.networkworld.com/author/Tim-Greene/)
+
+What is the internet backbone and how it works
+======
+Tier 1 internet service providers (ISP) mesh their high-speed fiber-optic networks together to create the internet backbone, which moves traffic efficiently among geographic regions.
+[Gerd Altmann][1] [(CC0)][2]
+
+The internet generates massive amounts of computer-to-computer traffic, and insuring all that traffic can be delivered anywhere in the world requires the aggregation of a vast array of high-speed networks collectively known as the internet backbone, but how does that work?
+
+### What is the internet backbone?
+
+Like any other network, the internet consists of access links that move traffic to high-bandwidth routers that move traffic from its source over the best available path toward its destination. This core is made up of individual high-speed fiber-optic networks that peer with each other to create the internet backbone.
+
+The individual core networks are privately owned by Tier 1 internet service providers (ISP), giant carriers whose networks are tied together. These providers include AT&T, CenturyLink, Cogent Communications, Deutsche Telekom, Global Telecom and Technology (GTT), NTT Communications, Sprint, Tata Communications, Telecom Italia Sparkle, Telia Carrier, and Verizon.
+
+[[Get regularly scheduled insights by signing up for Network World newsletters.]][3]
+
+By joining these long-haul networks together, Tier 1 ISPs create a single worldwide network that gives all of them access to the entire internet routing table so they can efficiently deliver traffic to its destination through a hierarchy of progressively more local ISPs.
+
+In addition to being physically connected, these backbone providers are held together by a shared network protocol, TCP/IP. They are actually two protocols, transport control protocol and internet protocol that set up connections between computers, insuring that the connections are reliable and formating messages into packets.
+
+### Internet exchange points (IXP) tie the backbone together
+
+Backbone ISPs connect their networks at peering points, neutrally owned locations with high-speed switches and routers that move traffic among the peers. These are often owned by third parties, sometimes non-profits, that facilitate unifying the backbone.
+
+Participating Tier 1 ISPs help fund the IXPs, but don’t charge each other for transporting traffic from the other Tier 1 ISPs in a relationship known as settlement-free peering. Such agreements eliminate potential financial disputes that might have the result of slowing down internet performance.
+
+[][4]
+
+### How fast is the backbone?
+
+The internet backbone is made up of the fastest routers, which can deliver 100Gbps trunk speeds. These routers are made by vendors including Cisco, Extreme, Huawei, Juniper, and Nokia, and use the border gateway protocol (BGP) to route traffic among themselves.
+
+### How traffic gets on the backbone
+
+Below the Tier 1 ISPs are smaller Tier 2 and Tier 3 ISPs.
+
+Tier 3 providers provide businesses and consumers with access to the internet. These providers have no access of their own to the internet backbone, so on their own would not be able to connect their customers to all of the billions of internet-attached computers.
+
+Buying access to Tier 1 providers is expensive. So often Tier 3 ISPs contract with Tier 2 (regional) ISPs that have their own networks that can deliver traffic to a limited geographic area but not to all internet-attached devices.
+
+In order to do that, Tier 2 ISPs contract with Tier 1 ISPs for access to the global backbone, and in that way make the entire internet accesssible to their customers.
+
+This arrangment makes it possible for traffic from a computer on one side of the world to connect to one on the other side. That traffic goes from a source computer to a Tier 3 ISP that routes it to a Tier 2 ISP that routes it to a Tier 1 backbone provider that routes it to the appropriate Tier 2 ISP that routes it to a Tier 3 access provider that delivers it to the destination computer.
+
+Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind.
+
+--------------------------------------------------------------------------------
+
+via: https://www.networkworld.com/article/3532318/what-is-the-internet-backbone-and-how-it-works.html
+
+作者:[Tim Greene][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.networkworld.com/author/Tim-Greene/
+[b]: https://github.com/lujun9972
+[1]: https://pixabay.com/en/social-media-digitization-faces-3271592/
+[2]: https://creativecommons.org/publicdomain/zero/1.0/
+[3]: https://www.networkworld.com/newsletters/signup.html
+[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage)
+[5]: https://www.facebook.com/NetworkWorld/
+[6]: https://www.linkedin.com/company/network-world
diff --git a/sources/tech/20190116 Best Audio Editors For Linux.md b/sources/tech/20190116 Best Audio Editors For Linux.md
index d588c886e2..3b14f5b366 100644
--- a/sources/tech/20190116 Best Audio Editors For Linux.md
+++ b/sources/tech/20190116 Best Audio Editors For Linux.md
@@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
-[#]: translator: ( )
+[#]: translator: (MFGJT)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
diff --git a/sources/tech/20191223 Prioritizing simplicity in your Python code.md b/sources/tech/20191223 Prioritizing simplicity in your Python code.md
deleted file mode 100644
index 53662a8f1c..0000000000
--- a/sources/tech/20191223 Prioritizing simplicity in your Python code.md
+++ /dev/null
@@ -1,59 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (Prioritizing simplicity in your Python code)
-[#]: via: (https://opensource.com/article/19/12/zen-python-simplicity-complexity)
-[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
-
-Prioritizing simplicity in your Python code
-======
-This is the second part of a special series about the Zen of Python
-focusing on the third and fourth principles: simplicity and complexity.
-![Person reading a book and digital copy][1]
-
-> "Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y plus rien à retrancher."
->
-> "It seems that perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away."
-> —Antoine de Saint-Exupéry, _[Terre des Hommes][2]_, 1939
-
-A common concern in programming is the struggle with complexity. It is easy for any programmer to make a program so complicated no expert can debug it or modify it. The [Zen of Python][3] would not be complete if it did not touch on this.
-
-### Simple is better than complex.
-
-When it is possible to choose at all, choose the simple solution. Python is rarely in the business of _disallowing_ things. This means it is possible, and even straightforward, to design baroque programs to solve straightforward problems.
-
-It is worthwhile to remember at each point that simplicity is one of the easiest things to lose and the hardest to regain when writing code.
-
-This can mean choosing to write something as a function, rather than introducing an extraneous class. This can mean avoiding a robust third-party library in favor of writing a two-line function that is perfect for the immediate use-case. Most often, it means avoiding predicting the future in favor of solving the problem at hand.
-
-It is much easier to change the program later, especially if simplicity and beauty were among its guiding principles than to load the code down with all possible future variations.
-
-### Complex is better than complicated.
-
-This is possibly the most misunderstood principle because understanding the precise meanings of the words is crucial. Something is _complex_ when it is composed of multiple parts. Something is _complicated_ when it has a lot of different, often hard to predict, behaviors.
-
-When solving a hard problem, it is often the case that no simple solution will do. In that case, the most Pythonic strategy is to go "bottom-up." Build simple tools and combine them to solve the problem.
-
-This is where techniques like _object composition_ shine. Instead of having a complicated inheritance hierarchy, have objects that forward some method calls to a separate object. Each of those can be tested and developed separately and then finally put together.
-
-Another example of "building up" is using [singledispatch][4], so that instead of one complicated object, we have a simple, mostly behavior-less object and separate behaviors.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/19/12/zen-python-simplicity-complexity
-
-作者:[Moshe Zadka][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/moshez
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (Person reading a book and digital copy)
-[2]: https://en.wikipedia.org/wiki/Wind,_Sand_and_Stars
-[3]: https://www.python.org/dev/peps/pep-0020/
-[4]: https://opensource.com/article/19/5/python-singledispatch
diff --git a/sources/tech/20200204 DevOps vs Agile- What-s the difference.md b/sources/tech/20200204 DevOps vs Agile- What-s the difference.md
deleted file mode 100644
index d83e9c17f7..0000000000
--- a/sources/tech/20200204 DevOps vs Agile- What-s the difference.md
+++ /dev/null
@@ -1,170 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: (messon007)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (DevOps vs Agile: What's the difference?)
-[#]: via: (https://opensource.com/article/20/2/devops-vs-agile)
-[#]: author: (Taz Brown https://opensource.com/users/heronthecli)
-
-DevOps vs Agile: What's the difference?
-======
-The difference between the two is what happens after development.
-![Pair programming][1]
-
-Early on, software development didn't really fit under a particular management umbrella. Then along came [waterfall][2], which spoke to the idea that software development could be defined by the length of time an application took to create or build.
-
-Back then, it often took long periods of time to create, test, and deploy software because there were no checks and balances during the development process. The results were poor software quality with defects and bugs and unmet timelines. The focus was on long, drawn-out plans for software projects.
-
-Waterfall projects have been associated with the [triple constraint][3] model, which is also called the project management triangle. Each side of the triangle represents a component of the triple constraints of project management: **scope**, **time**, and **cost**. As [Angelo Baretta writes][4], the triple constraint model "says that cost is a function of time and scope, that these three factors are related in a defined and predictable way… [I]f we want to shorten the schedule (time), we must increase cost. It says that if we want to increase scope, we must increase cost or schedule."
-
-### Transitioning from waterfall to agile
-
-Waterfall came from manufacturing and engineering, where a linear process makes sense; you build the wall before you build the roof. Similarly, software development problems were viewed as something that could be solved with planning. From beginning to end, the development process was clearly defined by a roadmap that would lead to the final delivery of a product.
-
-Eventually, waterfall was recognized as detrimental and counterintuitive to software development because, often, the value could not be determined until the very end of the project cycle, and in many cases, the projects failed. Also, the customer didn't get to see any working software until the end of the project.
-
-Agile takes a different approach that moves away from planning the entire project, committing to estimated dates, and being accountable to a plan. Rather, agile assumes and embraces uncertainty. It is built around the idea of responding to change instead of charging past it or ignoring the need for it. Instead, change is considered as a way to fulfill the needs of the customer.
-
-### Agile values
-
-Agile is governed by the Agile Manifesto, which defines [12 principles][5]:
-
- 1. Satisfying the customer is the top priority
- 2. Welcome changing requirements, even late in development
- 3. Deliver working software frequently
- 4. Development and business must work together
- 5. Build projects around motivated people
- 6. Face-to-face communication is the most efficient and effective method of conveying information
- 7. The primary measure of success is working software
- 8. Agile processes promote sustainable development
- 9. Maintain continuous attention to technical excellence and good design
- 10. Simplicity is essential
- 11. The best architectures, requirements, and designs emerge from self-organizing teams
- 12. Regularly reflect on work, then tune and adjust behavior
-
-
-
-Agile's four [core values][6] are:
-
- * **Individuals and interactions** over processes and tools
- * **Working software** over comprehensive documentation
- * **Customer collaboration** over contract negotiation
- * **Responding to change** over following a plan
-
-
-
-This contrasts with waterfall's rigid planning style. In agile, the customer is a member of the development team rather than engaging only at the beginning, when setting business requirements, and at the end, when reviewing the final product (as in waterfall). The customer helps the team write the [acceptance criteria][7] and remains engaged throughout the process. In addition, agile requires changes and continuous improvement throughout the organization. The development team works with other teams, including the project management office and the testers. What gets done and when are led by a designated role and agreed to by the team as a whole.
-
-### Agile software development
-
-Agile software development requires adaptive planning, evolutionary development, and delivery. Many software development methodologies, frameworks, and practices fall under the umbrella of being agile, including:
-
- * Scrum
- * Kanban (visual workflow)
- * XP (eXtreme Programming)
- * Lean
- * DevOps
- * Feature-driven development (FDD)
- * Test-driven development (TDD)
- * Crystal
- * Dynamic systems development method (DSDM)
- * Adaptive software development (ASD)
-
-
-
-All of these have been used on their own or in combination for developing and deploying software. The most common are [scrum, kanban][8] (or the combination called scrumban), and DevOps.
-
-[Scrum][9] is a framework under which a team, generally consisting of a scrum master, product owner, and developers, operates cross-functionally and in a self-directed manner to increase the speed of software delivery and
-
-to bring greater business value to the customer. The focus is on faster iterations with smaller [increments][10].
-
-[Kanban][11] is an agile framework, sometimes called a workflow management system, that helps teams visualize their work and maximize efficiency (thus being agile). Kanban is usually represented by a digital or physical board. A team's work moves across the board, for example, from not started, to in progress, testing, and finished, as it progresses. Kanban allows each team member to see the state of all work at any time.
-
-### DevOps values
-
-DevOps is a culture, a state of mind, a way that software development or infrastructure is, and a way that software and applications are built and deployed. There is no wall between development and operations; they work simultaneously and without silos.
-
-DevOps is based on two other practice areas: lean and agile. DevOps is not a title or role within a company; it's really a commitment that an organization or team makes to continuous delivery, deployment, and integration. According to [Gene Kim][12], author of _The Phoenix Project_ and _The Unicorn Project_, there are three "ways" that define the principles of DevOps:
-
- * The First Way: Principles of flow
- * The Second Way: Principles of feedback
- * The Third Way: Principles of continuous learning
-
-
-
-### DevOps software development
-
-DevOps does not happen in a vacuum; it is a flexible practice that, in its truest form, is a shared culture and mindset around software development and IT or infrastructure implementation.
-
-When you think of automation, cloud, microservices, you think of DevOps. In an [interview][13], _Accelerate: Building and Scaling High Performing Technology Organizations_ authors Nicole Forsgren, Jez Humble, and Gene Kim explained:
-
-> * Software delivery performance matters, and it has a significant impact on organizational outcomes such as profitability, market share, quality, customer satisfaction, and achieving organizational and mission goals.
-> * High performers achieve levels of throughput, stability, and quality; they're not trading off to achieve these attributes.
-> * You can improve your performance by implementing practices from the lean, agile, and DevOps playbooks.
-> * Implementing these practices and capabilities also has an impact on your organizational culture, which in turn has an impact on both your software delivery performance and organizational performance.
-> * There's still lots of work to do to understand how to improve performance.
->
-
-
-### DevOps vs. agile
-
-Despite their similarities, DevOps and agile are not the same, and some argue that DevOps is better than agile. To eliminate the confusion, it's important to get down to the nuts and bolts.
-
-#### Similarities
-
- * Both are software development methodologies; there is no disputing this.
- * Agile has been around for over 20 years, and DevOps came into the picture fairly recently.
- * Both believe in fast software development, and their principles are based on how fast software can be developed without causing harm to the customer or operations.
-
-
-
-#### Differences
-
- * **The difference between the two** is what happens after development.
- * Software development, testing, and deployment happen in both DevOps and agile. However, pure agile tends to stop after these three stages. In contrast, DevOps includes operations, which happen continually. Therefore, monitoring and software development are also continuous.
- * In agile, separate people are responsible for developing, testing, and deploying the software. In DevOps, the DevOps engineering role is are responsible for everything; development is operations, and operations is development.
- * DevOps is more associated with cost-cutting, and agile is more synonymous with lean and reducing waste, and concepts like agile project accounting and minimum viable product (MVP) are relevant.
- * Agile focuses on and embodies empiricism (**adaptation**, **transparency**, and **inspection**) instead of predictive measures.
-
-Agile | DevOps
----|---
-Feedback from customer | Feedback from self
-Smaller release cycles | Smaller release cycles, immediate feedback
-Focus on speed | Focus on speed and automation
-Not the best for business | Best for business
-
-### Wrapping up
-
-Agile and DevOps are distinct, although their similarities lead people to think they are one and the same. This does both agile and DevOps a disservice.
-
-In my experience as an agilist, I have found it valuable for organizations and teams to understand—from a high level—what agile and DevOps are and how they aid teams in working faster and more efficiently, delivering quality faster, and improving customer satisfaction.
-
-Agile and DevOps are not adversarial in any way (or at least the intent is not there). They are more allies than enemies in the agile revolution. Agile and DevOps can operate exclusively and inclusively, which allows both to exist in the same space.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/2/devops-vs-agile
-
-作者:[Taz Brown][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/heronthecli
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/collab-team-pair-programming-code-keyboard.png?itok=kBeRTFL1 (Pair programming)
-[2]: http://www.agilenutshell.com/agile_vs_waterfall
-[3]: https://en.wikipedia.org/wiki/Project_management_triangle
-[4]: https://www.pmi.org/learning/library/triple-constraint-erroneous-useless-value-8024
-[5]: https://agilemanifesto.org/principles.html
-[6]: https://agilemanifesto.org/
-[7]: https://www.productplan.com/glossary/acceptance-criteria/
-[8]: https://opensource.com/article/19/8/scrum-vs-kanban
-[9]: https://www.scrum.org/
-[10]: https://www.scrum.org/resources/what-is-an-increment
-[11]: https://www.atlassian.com/agile/kanban
-[12]: https://itrevolution.com/the-unicorn-project/
-[13]: https://www.infoq.com/articles/book-review-accelerate/
diff --git a/sources/tech/20200309 6 Raspberry Pi tutorials to try out.md b/sources/tech/20200309 6 Raspberry Pi tutorials to try out.md
deleted file mode 100644
index a129774aae..0000000000
--- a/sources/tech/20200309 6 Raspberry Pi tutorials to try out.md
+++ /dev/null
@@ -1,67 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: (geekpi)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (6 Raspberry Pi tutorials to try out)
-[#]: via: (https://opensource.com/article/20/3/raspberry-pi-tutorials)
-[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
-
-6 Raspberry Pi tutorials to try out
-======
-Each of these Raspberry Pi projects is designed to make your life easier
-and more productive.
-![Cartoon graphic of Raspberry Pi board][1]
-
-There's nothing like the thrill of experiencing the result of your Raspberry Pi creation. After hours of coding, testing, and building with your bare hands, your project starts to finally take shape and you can’t help but yell "woohoo!." I’m fascinated by the possibilities of what the Raspberry Pi can bring to daily life. Whether you are looking to learn something new, try a productivity hack, or just have fun, there is a Raspberry Pi project for you in this round-up.
-
-### Set up a VPN server
-
-This [tutorial][2] teaches you how to use the Raspberry Pi to add a layer of network security. Not only does this project have practical advantages, but it also sets you up for lots of fun to be had. The extra security will give you peace of mind to play around with other projects, like the ones listed below.
-
-### Create an object-tracking camera
-
-The Raspberry Pi is appealing because it offers a low barrier of entry to learn about new technologies like machine learning. This [step-by-step guide][3] gives thorough instructions on how to build a camera that pans and tilts in order to track movement with TensorFlow and your Raspberry Pi.
-
-### Display your favorite memories using a photo slideshow
-
-Have you ever asked yourself: "What should I do with all of these digital photos?." If you are like me, then the answer is **yes**. I am definitely known as the picture-taker in my circle of friends and family. That’s why I love this Raspberry Pi project. In [this tutorial][4], you’ll learn how to set up a photo slideshow so you can display your favorite memories in your home with ease. No printer necessary!
-
-### Play retro video games
-
-If you feel nostalgic about retro gaming systems, you’ll want to try [this tutorial][5]. Learn what kind of devices work for running an Amiga emulator including the Raspberry Pi. After going through the set-up instructions, you’ll be playing your favorite Amiga games on your Raspberry Pi.
-
-### Build a clock for your entertainment center
-
-Home entertainment centers have evolved so much in the last decade. My family relies solely on streaming services for watching shows and movies. I love this because I can control my TV from my mobile device or voice assistant. However, there’s a level of convenience that’s missing when you no longer can glance at a clock! Follow [these quick steps][6] to build your own clock display from scratching using your Raspberry Pi.
-
-### Scale your homebrewed beer operation
-
-In [this tutorial][7], a seasoned homebrewer shares his experience with setting up an electric beer-brewing system. This project requires more of an investment in hardware and parts upfront, but the resulting efficiency and consistency make it all worth it. Cheers to that!
-
-If you are a Raspberry Pi newb like me, then I recommend checking out our downloadable Raspberry Pi guides. Our [one-page cheat sheet][8] offers step-by-step instructions for how to get started. For more tips and tutorials, our [comprehensive guide][9] covers topics like choosing a Raspberry Pi, keeping it updated, contributing to the community and everything in between.
-
-Which Raspberry Pi project will you try? Let us know in the comments.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/3/raspberry-pi-tutorials
-
-作者:[Lauren Pritchett][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/lauren-pritchett
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/raspberrypi_cartoon.png?itok=m3TcBONJ (Cartoon graphic of Raspberry Pi board)
-[2]: https://opensource.com/article/19/6/raspberry-pi-vpn-server
-[3]: https://opensource.com/article/20/1/object-tracking-camera-raspberry-pi
-[4]: https://opensource.com/article/19/2/wifi-picture-frame-raspberry-pi
-[5]: https://opensource.com/article/19/3/amiga-raspberry-pi
-[6]: https://opensource.com/article/17/7/raspberry-pi-clock
-[7]: https://opensource.com/article/17/7/brewing-beer-python-and-raspberry-pi
-[8]: https://opensource.com/downloads/getting-started-raspberry-pi-cheat-sheet
-[9]: https://opensource.com/downloads/raspberry-pi-guide
diff --git a/sources/tech/20200311 How to install pip to manage PyPI packages easily.md b/sources/tech/20200311 How to install pip to manage PyPI packages easily.md
deleted file mode 100644
index 88f5eb072b..0000000000
--- a/sources/tech/20200311 How to install pip to manage PyPI packages easily.md
+++ /dev/null
@@ -1,155 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: ( )
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (How to install pip to manage PyPI packages easily)
-[#]: via: (https://opensource.com/article/20/3/pip-linux-mac-windows)
-[#]: author: (Vijay Singh Khatri https://opensource.com/users/vijaytechnicalauthor)
-
-How to install pip to manage PyPI packages easily
-======
-Install the pip package manager on older versions of Python on Linux,
-Mac, and Windows that don't come preinstalled with pip.
-![Person typing on a 1980's computer][1]
-
-Python is a powerful and popular programming language with many packages that are useful for general programming, data science, and many other things. These packages are not included with the Python installation, so you have to download, install, and manage them separately. All of these packages (libraries and frameworks) are stored in a central repository called the Python Package Index, or [PyPI][2] for short. This is where pip (short for Preferred Installer Program), Python's package manager, comes into the picture.
-
-Installing Python pip on your system allows you to manage PyPI packages easily. Many of these packages can be installed just by typing **python -m pip install <package-name>** into a terminal or command-line.
-
-Newer versions of Python 3 (3.4 and higher) and Python 2 (2.7.9 and higher) come preloaded with pip. Older versions of Python didn't include pip, but it can be installed retroactively.
-
-In this article, I explain how to install pip on Linux, Mac, and Windows computers. You can also check the [pip.pypa][3] documentation for more information.
-
-### Make sure Python is installed
-
-If you don't already have Python installed on your system, do that first; otherwise, the pip installer won't understand any commands. To check whether you have Python, enter **python** in your command line, Bash, or terminal window and see what happens. If the command is not recognized, then you need to [download Python][4]. If you have Python installed, you will see a lot of commands and other stuff that will indicate you can install pip.
-
-### Install Python pip on Linux
-
-The command you use to install pip on Linux depends on the distribution you use.
-
-On Fedora, RHEL, and CentOS:
-
-
-```
-`$ sudo dnf install python3`
-```
-
-For Debian or Ubuntu, use the Apt package:
-
-
-```
-`$ sudo apt install python3-pip`
-```
-
-Other distributions may have their own package manager. For example, Arch Linux uses pacman:
-
-
-```
-`$ sudo pacman -S python-pip`
-```
-
-To find out whether pip is installed properly, check the version using the **\--version** option.
-
-That's all you need. You can skip down to the [using pip][5] section of this article.
-
-### Install Python pip on Mac
-
-MacOS comes with Python installed by default, but the version provided by Apple is almost always outdated, even right an OS release. If you're working with Python, you should [use a custom install of Python 3][6].
-
-To install Python 3 on a Mac, use [homebrew][7]:
-
-
-```
-`$ brew update && brew upgrade python`
-```
-
-Because you've installed a recent version of Python3, pip is also installed. ****You can verify it with:
-
-
-```
-`$ python3 -m pip --version`
-```
-
-That's all you need. You can skip down to the [using pip][5] section of this article.
-
-### Install Python pip on Windows
-
-To install pip, you must have Windows 8 or 10. The screenshots below are from Windows 10 (but the same commands work for Windows 8).
-
-Once you confirm you have [Python installed][8].
-
-If you want the same luxuries as Linux users have with a package manager, you can use the [Chocolatey][9] package manager for Windows. This provides easy access to Python but also easy updates. You can use it in the open source PowerShell application to make amazing things happen in just a few commands.
-
-
-```
-`PS> choco install python`
-```
-
-That's it! You can now use pip to install any package you need.
-
-### Using Python pip
-
-Python pip works exactly the same way on each platform: Linux, BSD, Windows, Mac, and so on.
-
-To install the imaginary library **foo**, use:
-
-
-```
-`python3 -m pip install foo --user`
-```
-
-To uninstall it:
-
-
-```
-`python3 -m pip uninstall foo`
-```
-
-To search for a package:
-
-
-```
-`python3 -m pip search foo`
-```
-
-To upgrade to a new version of pip:
-
-
-```
-`$ sudo pip install --upgrade pip`
-```
-
-On Windows, omit the **sudo** command (Windows has its own method of privilege management, so you may need to [create an exception to your execution policy][10]).
-
-
-```
-`python -m pip install --upgrade pip`
-```
-
-I hope you tried the installation methods described in this article and that they helped you. Please share your experience in the comments.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/3/pip-linux-mac-windows
-
-作者:[Vijay Singh Khatri][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/vijaytechnicalauthor
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/1980s-computer-yearbook.png?itok=eGOYEKK- (Person typing on a 1980's computer)
-[2]: https://pypi.org/
-[3]: https://pip.pypa.io/en/stable/installing/
-[4]: https://www.python.org/downloads/
-[5]: tmp.u1JOYd3gs9#usage
-[6]: https://opensource.com/article/19/5/python-3-default-mac
-[7]: https://brew.sh
-[8]: https://opensource.com/article/19/8/how-install-python-windows
-[9]: https://opensource.com/article/20/3/chocolatey
-[10]: https://opensource.com/article/20/3/chocolatey#admin
diff --git a/sources/tech/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md b/sources/tech/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md
index 4e2c42ba52..6363f00e1b 100644
--- a/sources/tech/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md
+++ b/sources/tech/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md
@@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
-[#]: translator: ( )
+[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
diff --git a/sources/tech/20200312 How to write effective documentation for your open source project.md b/sources/tech/20200312 How to write effective documentation for your open source project.md
new file mode 100644
index 0000000000..c10c1bb7b8
--- /dev/null
+++ b/sources/tech/20200312 How to write effective documentation for your open source project.md
@@ -0,0 +1,113 @@
+[#]: collector: (lujun9972)
+[#]: translator: (HankChow)
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (How to write effective documentation for your open source project)
+[#]: via: (https://opensource.com/article/20/3/documentation)
+[#]: author: (Kevin Xu https://opensource.com/users/kevin-xu)
+
+How to write effective documentation for your open source project
+======
+Documentation quality can make the difference in people trying your
+project or passing it by.
+![A pink typewriter][1]
+
+Unfortunately, good code won't speak for itself. Even the most elegantly designed and well-written codebase that solves the most pressing problem in the world won't just get adopted on its own. You, the open source creator, need to speak for your code and breathe life into your creation. That's where technical writing and documentation come in.
+
+A project's documentation gets the most amount of traffic, by far. It's the place where people decide whether to continue learning about your project or move on. Thus, spending time and energy on documentation and technical writing, focusing on the most important section, "Getting Started," will do wonders for your project's traction.
+
+Writing may feel uncomfortable, even daunting, to many of you. As engineers, we are trained more to write code than to write _about_ code. Many people also speak English as a second or even third language and may feel insecure or intimidated about writing in English. (I learned English as a second language, and my mother tongue is Mandarin Chinese, so I feel your pain.)
+
+But we can't get around the reality that, if you want your project to have a broad, global reach, English is the language you must use. Don't fear. I wrote this post with those challenges in mind. You don't need to be the next Shakespeare to find the advice here useful.
+
+### Five actionable writing tips
+
+Here are five actionable writing tips you can apply today. They may seem painfully simple and obvious, yet they are ignored over and over again in technical writing.
+
+ 1. **Use** [**active voice**][2]**:** Active voice: "You can change these configurations by…" vs. passive voice: "These configurations can be changed by…"
+ 2. **Use simple, short sentences:** While not open source, [Hemingway App][3] and [Grammarly][4] are both helpful tools.
+ 3. **Format for easy reading:** Use headings, bullet points, and links to break up information into chunks instead of long explanatory paragraphs.
+ 4. **Keep it visual:** Use tables and diagrams, not sentences, to represent information with multiple dimensions.
+ 5. **Mind your spelling and grammar:** Always, always, always spell check for typos and grammar check for polish.
+
+
+
+By applying these tips consistently in your writing and editing workflow, you achieve two big goals: efficient communication and building trust.
+
+ * **Efficient communication:** Engineers don't want to read long-winded, meandering paragraphs in documentation (they have novels for that). They want to get technical information or instructions (when it's a guide) as efficiently as possible. Thus, your writing needs to be lean and useful. (That being said, it's fine to apply some humor, emojis, and "fluff" here and there to give your project some personality and make it more memorable. How exactly you do that will depend on _your_ personality.)
+ * **Building trust:** The most valuable currency you must accrue, especially in the early days of building your project, is trust. Trust comes not only from your code quality but also from the quality of writing that talks about your code. Thus, please apply the same polish to your writing that you would to your code. This is the main reason for point 5 above (on spelling and grammar checks).
+
+
+
+### Start with Getting Started documentation
+
+With these fundamental techniques baked into your writing, the section you should spend the most time on in your documentation is the Getting Started section. This is, by far, the most important section and a classic example of the "[80/20 rule][5]" in action. Most of the web traffic to your project lands on your documentation, and most of _that_ lands on Getting Started. If it is well-constructed, you will get a new user right away. If not, the visitor will bounce and likely never come back.
+
+How do you construct a good Getting Started section? I propose this three-step process:
+
+ 1. **Make it a task:** An effective Getting Started guide should be task-oriented—a discrete mini-project that a developer can accomplish. It should _not_ contain too much information about the architectural design, core concept, and other higher-level information. A single, visual architectural overview is fine, but don't devote multiple paragraphs to how and why your project is the best-designed solution. That information belongs somewhere else (more on that below). Instead, the Getting Started section should mostly be a list of steps and commands to… well, get your project started!
+ 2. **Can be finished in less than 30 minutes:** The core takeaway here is that the time to completion should be as low as possible; 30 minutes is the upper bound. This time limit also assumes the user has relatively little context about your project. This is important to keep in mind. Most people who bother to go through your Getting Started guide are members of a technical audience with a vague understanding of your project but not much more than that. They are there to try something out before they decide to spend more time digging deeper. "Time to completion" is a metric you should measure to continuously improve your Getting Started guide.
+ 3. **Do something meaningful:** What "meaningful" means depends on the open source project. It is important to think hard about what that is, tightly define it into a task, and allow a developer who completes your Getting Started guide to achieve that meaningful task. This meaningful task must speak directly to your project's value; otherwise, it will leave developers feeling like they just wasted their time.
+
+
+
+For inspiration: If you are a distributed database project, perhaps "meaningful" means the whole cluster remains available with no downtime after you kill some nodes. If you are a data analytics or business intelligence tool, perhaps "meaningful" means quickly generating a dashboard with different visualizations after loading some data. Whatever "meaningful" means to your project, it should be achievable quickly and locally on a laptop.
+
+A good example is [Linkerd's Getting Started][6]. Linkerd is an open source service mesh for Kubernetes. I'm a novice in Kubernetes and even less familiar with service mesh. Yet, I completed Linkerd's Getting Started guide on my laptop without much hassle, and the experience gave me a taste of what operating a service mesh is all about.
+
+The three-step process above could be a helpful framework for designing a highly efficient Getting Started section in a measurable way. It is also related to the time-to-value metric when it comes to [productizing your open source project][7].
+
+### Other core components
+
+Besides carefully calibrating and optimizing your Getting Started, there are five other top-level components that are necessary to build full-fledged documentation: architectural design, in-production usage guide, use cases, references, and roadmap.
+
+ * **Architectural design:** This is a deep-dive into your project's architecture and the rationales behind your design decisions, full of the details that you strategically glossed over in your Getting Started guide. This section is a big part of your overall [product marketing plan][8]. This section, usually filled with visuals and drawings, is meant to turn a casual hobbyist into an expert enthusiast who is interested in investing time in your project for the long term.
+ * **In-production usage guide:** There is a world of difference between trying something out on a laptop and deploying it in production. Guiding a user who wants to use your project more seriously is an important next step. Demonstrating in-production operational knowledge is also how you attract your initial business customers who may like the promise of the technology but don't know or don't feel confident about using it in a production environment.
+ * **Use cases:** The value of social proof is obvious, so listing your in-production adopters is important. The key here is to make sure this information is easy to find. It will likely be the second most popular link after Getting Started.
+ * **References:** This section explains the project in detail and allows the user to examine and understand it under a microscope. It also functions as a dictionary where people look up information when needed. Some open source creators spend an inordinate amount of time spelling out every nuance and edge case of their project here. The motivation is understandable but unnecessary at the outset when your time is limited. It's more effective to reach a balance between detail and ways to get help: links to your community forum, Stack Overflow tag, or a separate FAQ page would do.
+ * **Roadmap:** Laying out your future vision and plan with a rough timeline will keep users interested and incentivized for the long-term. Your project may not be perfect now, but you have a plan to perfect it. The Roadmap section is also a great place to get your community involved to build a strong ecosystem, so make sure you have a link that tells people how to voice their thoughts and opinions regarding the roadmap. (I'll write about community-building specifics in the future.)
+
+
+
+You may not have all these components fully fleshed out yet, and some parts may materialize later than others, especially the use cases. However, be intentional about building these out over time. Addressing these five elements is the critical next step to your users' journey into your project, assuming they had a good experience with Getting Started.
+
+One last note: include a clear one-sentence statement on what license you are using (probably in Getting Started, README, or somewhere else highly visible). This small touch will make vetting your project for adoption from the end user's side much more efficient.
+
+### Spend 20% of your time writing
+
+Generally, I recommend spending 10–20% of your time writing. Putting it in context: If you are working on your project full time, it's about half a day to one full day per week.
+
+The more nuanced point here is you should work writing into your normal workflow, so it becomes a routine, not an isolated chore. Making incremental progress over time, rather than doing all the writing in one giant sitting, is what will help your project reach that ultimate goal: traction and trust.
+
+* * *
+
+_Special thanks to [Luc Perkins][9], developer advocate at the Cloud Native Computing Foundation, for his invaluable input._
+
+_This article originally appeared on_ _[COSS Media][10]_ _and is republished with permission._
+
+Nigel Babu offers 10 tips for taking your project's documentation to the next level.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/documentation
+
+作者:[Kevin Xu][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/kevin-xu
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-docdish-typewriter-pink.png?itok=OXJBtyYf (A pink typewriter)
+[2]: https://www.grammar-monster.com/glossary/active_voice.htm
+[3]: http://www.hemingwayapp.com/
+[4]: https://www.grammarly.com/
+[5]: https://en.wikipedia.org/wiki/Pareto_principle
+[6]: https://linkerd.io/2/getting-started/
+[7]: https://opensource.com/article/19/11/products-open-source-projects
+[8]: https://opensource.com/article/20/2/product-marketing-open-source-project
+[9]: https://twitter.com/lucperkins
+[10]: https://coss.media/open-source-documentation-technical-writing-101/
diff --git a/sources/tech/20200312 Make SSL certs easy with k3s.md b/sources/tech/20200312 Make SSL certs easy with k3s.md
new file mode 100644
index 0000000000..36f0ca7849
--- /dev/null
+++ b/sources/tech/20200312 Make SSL certs easy with k3s.md
@@ -0,0 +1,349 @@
+[#]: collector: (lujun9972)
+[#]: translator: (wxy)
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (Make SSL certs easy with k3s)
+[#]: via: (https://opensource.com/article/20/3/ssl-letsencrypt-k3s)
+[#]: author: (Lee Carpenter https://opensource.com/users/carpie)
+
+Make SSL certs easy with k3s
+======
+How to encrypt your website with k3s and Letsencrypt on a Raspberry Pi.
+![Files in a folder][1]
+
+In a [previous article][2], we deployed a couple of simple websites on our k3s cluster. There were non-encrypted sites. Now that's fine, and they work, but non-encrypted is very last century! These days most websites are encrypted. In this article, we are going to install [cert-manager][3] and use it to deploy TLS encrypted sites on our cluster. Not only will the sites be encrypted, but they will be using valid public certificates that are automatically provisioned and automatically renewed from [Let's][4] [Encrypt][4]! Let's get started!
+
+### Materials needed
+
+To follow along with the article, you will need [the k3s Raspberry Pi cluster][5] we built in a previous article. Also, you will need a public static IP address and a domain name that you own and can create DNS records for. If you have a dynamic DNS provider that provides a domain name for you, that may work as well. However, in this article, we will be using a static IP and [CloudFlare][6] to manually create DNS "A" records.
+
+As we create configuration files in this article, if you don't want to type them out, they are all available for download [here][7].
+
+### Why are we using cert-manager?
+
+Traefik (which comes pre-bundled with k3s) actually has Let's Encrypt support built-in, so you may be wondering why we are installing a third-party package to do the same thing. At the time of this writing, Traefik's Let's Encrypt support retrieves certificates and stores them in files. Cert-manager retrieves certificates and stores them in Kubernetes **secrets**. **Secrets** can be simply referenced by name and, therefore, easier to use, in my opinion. That is the main reason we are going to use cert-manager in this article.
+
+### Installing cert-manager
+
+Mostly we will simply follow the cert-manager [documentation][8] for installing on Kubernetes. Since we are working with an ARM architecture, however, we will be making slight changes, so we will go through the procedure here.
+
+The first step is to create the cert-manager namespace. The namespace helps keep cert-manager's pods out of our default namespace, so we do not have to see them when we do things like **kubectl get pods** with our own pods. Creating the namespace is simple:
+
+
+```
+kubectl create namespace cert-manager
+```
+
+The installation instructions have you download the cert-manager YAML configuration file and apply it to your cluster all in one step. We need to break that into two steps in order to modify the file for our ARM-based Pis. We will download the file and do the conversion in one step:
+
+
+```
+curl -sL \
+ |\
+sed -r 's/(image:.*):(v.*)$/\1-arm:\2/g' > cert-manager-arm.yaml
+```
+
+This downloads the configuration file and updates all the contained docker images to be the ARM versions. To check what it did:
+
+
+```
+$ grep image: cert-manager-arm.yaml
+ image: "quay.io/jetstack/cert-manager-cainjector-arm:v0.11.0"
+ image: "quay.io/jetstack/cert-manager-controller-arm:v0.11.0"
+ image: "quay.io/jetstack/cert-manager-webhook-arm:v0.11.0"
+```
+
+As we can see, the three images now have **-arm** added to the image name. Now that we have the correct file, we simply apply it to our cluster:
+
+
+```
+`kubectl apply -f cert-manager-arm.yaml`
+```
+
+This will install all of cert-manager. We can know when the installation finished by checking with **kubectl --namespace cert-manager get pods** until all pods are in the **Running** state.
+
+That is actually it for cert-manager installation!
+
+### A quick overview of Let's Encrypt
+
+The nice thing about Let's Encrypt is that they provide us with publicly validated TLS certificates for free! This means that we can have a completely valid TLS encrypted website that anyone can visit for our home or hobby things that do not make money to support themselves without paying out of our own pocket for TLS certificates! Also, when using Let's Encrypt certificates with cert-manager, the entire process of procuring the certificates is automated. Certificate renewal is also automated!
+
+But how does this work? Here is a simplified explanation of the process. We (or cert-manager on our behalf) issue a request for a certificate to Let's Encrypt for a domain name that we own. Let's Encrypt verifies that we own that domain by using an ACME DNS or HTTP validation mechanism. If the verification is successful, Let's Encrypt provides us with certificates, which cert-manager installs in our website (or other TLS encrypted endpoint). These certificates are good for 90 days before the process needs to be repeated. Cert-manager, however, will automatically keep the certificates up-to-date for us.
+
+In this article, we will use the HTTP validation method as it is simpler to set up and works for the majority of use cases. Here is the basic process that will happen behind the scenes. Cert-manager will issue a certificate request to Let's Encrypt. Let's Encrypt will issue an ownership verification challenge in response. The challenge will be to put an HTTP resource at a specific URL under the domain name that the certificate is being requested for. The theory is that if we can put that resource at that URL and Let's Encrypt can retrieve it remotely, then we must really be the owners of the domain. Otherwise, either we could not have placed the resource in the correct place, or we could not have manipulated DNS to allow Let's Encrypt to get to it. In this case, cert-manager puts the resource in the right place and automatically creates a temporary **Ingress** record that will route traffic to the correct place. If Let's Encrypt can read the challenge and it is correct, it will issue the certificates back to cert-manager. Cert-manager will then store the certificates as secrets, and our website (or whatever) will use those certificates for securing our traffic with TLS.
+
+### Preparing our network for the challenges
+
+I'm assuming that you are wanting to set this up on your home network and have a router/access point that is connected in some fashion to the broader internet. If that is not the case, the following process may not be what you need.
+
+To make the challenge process work, we need the domain that we are requesting a certificate for to route to our k3s cluster on port 80. To do that, we need to tell the world's DNS system where that is. So, we'll need to map the domain name to our public IP address. If you do not know what your public IP address is, you can go to somewhere like [WhatsMyIP][9], and it will tell you. Next, we need to enter a DNS "A" record that maps our domain name to our public IP address. For this to work reliably, you need a static public IP address, or you may be able to use a dynamic DNS provider. Some dynamic DNS providers will issue you a domain name that you may be able to use with these instructions. I have not tried this, so I cannot say for sure it works with all providers.
+
+For this article, we are going to assume a static public IP and use CloudFlare to set the DNS "A" records. You may use your own DNS provider if you wish. The important part is that you are able to set the "A" records.
+
+For this rest of the article, I am going to use **[k3s.carpie.net][10]** as the example domain since this is a domain I own. You would obviously replace that with whatever domain you own.
+
+Ok, for the sake of example, assume our public IP address is 198.51.100.42. We would go to our DNS provider's DNS record section and add a record of type "A," with a name of **[k3s.carpie.net][10]** (CloudFlare assumes the domain, so there we could just enter **k3s**) and enter 198.51.100.42 as the IPv4 address.
+
+![][11]
+
+Be aware that sometimes it takes a while for the DNS updates to propagate. It may be several hours before you can resolve the name. It is imperative that the name resolves before moving on. Otherwise, all our certificate requests will fail.
+
+We can check that the name resolves using the **dig** command:
+
+
+```
+$ dig +short k3s.carpie.net
+198.51.100.42
+```
+
+Keep running the above command until an IP is returned. Just a note about CloudFlare: ClouldFlare provides a service that hides your actual IP by proxying the traffic. In this case, we'll get back a CloudFlare IP instead of our IP. This should work fine for our purposes.
+
+The final step for network configuration is configuring our router to route incoming traffic on ports 80 and 443 to our k3s cluster. Sadly, router configuration screens vary widely, so I can't tell you exactly what yours will look like. Most of the time, the admin page we need is under "Port forwarding" or something similar. I have even seen it listed under "Gaming" (which is apparently what port forwarding is mostly used for)! Let's see what the configuration looks like for my router.
+
+![][12]
+
+If you had my setup, you would go to 192.168.0.1 to log in to the router administration application. For this router, it's under **NAT / QoS** -> **Port Forwarding**. Here we set port **80**, **TCP** protocol to forward to 192.168.0.50 (the IP of **kmaster** our master node) port **80**. We also set port **443** to map to **kmaster** as well. This is technically not needed for the challenges, but at the end of the article, we are going to deploy a TLS enabled website, and we will need **443** mapped to get to it. So it's convenient to go ahead and map it now. We save and apply the changes, and we should be good to go!
+
+### Configuring cert-manager to use Lets Encrypt (staging)
+
+Now we need to configure cert-manager to issue certificates through Let's Encrypt. Let's Encrypt provides a staging (e.g., test) environment for us to sort out our configurations on. It is much more tolerant of mistakes and frequency of requests. If we bumble around on the production environment, we'll very quickly find ourselves temporarily banned! As such, we'll manually test requests using the staging environment.
+
+Create a file, **letsencrypt-issuer-staging.yaml** with the contents:
+
+
+```
+apiVersion: cert-manager.io/v1alpha2
+kind: ClusterIssuer
+metadata:
+ name: letsencrypt-staging
+spec:
+ acme:
+ # The ACME server URL
+ server:
+ # Email address used for ACME registration
+ email: <your_email>@example.com
+ # Name of a secret used to store the ACME account private key
+ privateKeySecretRef:
+ name: letsencrypt-staging
+ # Enable the HTTP-01 challenge provider
+ solvers:
+ - http01:
+ ingress:
+ class: traefik
+```
+
+Make sure to update the email address to your address. This is how Let's Encrypt contacts us if something is wrong or we are doing bad things!
+
+Now we create the issuer with:
+
+
+```
+`kubectl apply -f letsencrypt-issuer-staging.yaml`
+```
+
+We can check that the issuer was created successfully with:
+
+
+```
+`kubectl get clusterissuers`
+```
+
+**Clusterissuers** is a new Kubernetes resource type created by cert-manager.
+
+Let's now request a test certificate manually. For our sites, we will not need to do this; we are just testing out the process to make sure our configuration is correct.
+
+Create a certificate request file, **le-test-certificate.yaml** with the contents:
+
+
+```
+apiVersion: cert-manager.io/v1alpha2
+kind: Certificate
+metadata:
+ name: k3s-carpie-net
+ namespace: default
+spec:
+ secretName: k3s-carpie-net-tls
+ issuerRef:
+ name: letsencrypt-staging
+ kind: ClusterIssuer
+ commonName: k3s.carpie.net
+ dnsNames:
+ - k3s.carpie.net
+```
+
+This record just says we want to request a certificate for the domain **[k3s.carpie.net][10]**, using a **ClusterIssuer** named **letsencrypt-staging** (which we created in the previous step) and store the certificate files in the Kubernetes secret named **k3s-carpie-net-tls**.
+
+Apply it like normal:
+
+
+```
+`kubectl apply -f le-test-certificate.yaml`
+```
+
+We can check the status with:
+
+
+```
+`kubectl get certificates`
+```
+
+If we see something like:
+
+
+```
+NAME READY SECRET AGE
+k3s-carpie-net True k3s-carpie-net-tls 30s
+```
+
+We are good to go! (The key here is **READY** being **True**).
+
+### Troubleshooting certificate request issues
+
+That's the happy path. If **READY** is **False**, we could give it some time and check the status again in case it takes a bit. If it stays **False,** then we have an issue we need to troubleshoot. At this point, we can walk the chain of Kubernetes resources until we find a status message that tells us the problem.
+
+Let's say that we did the request above, and **READY** was **False**. We start the troubleshooting with:
+
+
+```
+`kubectl describe certificates k3s-carpie-net`
+```
+
+This will return a lot of information. Usually, the helpful things are in the **Events:** section, which is typically at the bottom. Let's say the last event was **Created new CertificateRequest resource "k3s-carpie-net-1256631848**. We would then describe that request:
+
+
+```
+`kubectl describe certificaterequest k3s-carpie-net-1256631848`
+```
+
+Now let's say the last event there was **Waiting on certificate issuance from order default/k3s-carpie-net-1256631848-2342473830**.
+
+Ok, we can describe the order:
+
+
+```
+`kubectl describe orders default/k3s-carpie-net-1256631848-2342473830`
+```
+
+Let's say that has an event that says **Created Challenge resource "k3s-carpie-net-1256631848-2342473830-1892150396" for domain "[k3s.carpie.net][10]"**. Let's describe the challenge:
+
+
+```
+`kubectl describe challenges k3s-carpie-net-1256631848-2342473830-1892150396`
+```
+
+The last event returned from here is **Presented challenge using http-01 challenge mechanism**. That looks ok, so we scan up the describe output and see a message **Waiting for http-01 challenge propagation: failed to perform self check GET request … no such host**. Finally! We have found the problem! In this case, **no such host** means that the DNS lookup failed, so then we would go back and manually check our DNS settings and that our domain's DNS resolves correctly for us and make any changes needed.
+
+### Clean up our test certificates
+
+We actually want a real certificate for the domain name we used, so let's go ahead and clean up both the certificate and the secret we just created:
+
+
+```
+kubectl delete certificates k3s-carpie-net
+kubectl delete secrets k3s-carpie-net-tls
+```
+
+### Configuring cert-manager to use Let's Encrypt (production)
+
+Now that we have test certificates working, it's time to move up to production. Just like we configured cert-manager for Let's Encrypt staging environment, we need to do the same for production now. Create a file (you can copy and modify staging if desired) named **letsencrypt-issuer-production.yaml** with the contents:
+
+
+```
+apiVersion: cert-manager.io/v1alpha2
+kind: ClusterIssuer
+metadata:
+name: letsencrypt-prod
+spec:
+acme:
+ # The ACME server URL
+ server:
+ # Email address used for ACME registration
+ email: <your_email>@example.com
+ # Name of a secret used to store the ACME account private key
+ privateKeySecretRef:
+ name: letsencrypt-prod
+ # Enable the HTTP-01 challenge provider
+ solvers:
+ - http01:
+ ingress:
+ class: traefik
+```
+
+(If you are copying from the staging, the only that changes is the **server:** URL. Don't forget the email)!
+
+Apply with:
+
+
+```
+`kubectl apply -f letsencrypt-issuer-production.yaml`
+```
+
+### Request a certificate for our website
+
+It's important to note that all the steps we have completed to this point are one time set up! For any additional requests in the future, we can start at this point in the instructions!
+
+Let's deploy that same site we deployed in the [previous article][13]. (If you still have it around, you can just modify the YAML file. If not, you may want to recreate it and re-deploy it).
+
+We just need to modify **mysite .yaml's** **Ingress** section to be:
+
+
+```
+\---
+apiVersion: networking.k8s.io/v1beta1
+kind: Ingress
+metadata:
+ name: mysite-nginx-ingress
+ annotations:
+ kubernetes.io/ingress.class: "traefik"
+ cert-manager.io/cluster-issuer: letsencrypt-prod
+spec:
+ rules:
+ - host: k3s.carpie.net
+ http:
+ paths:
+ - path: /
+ backend:
+ serviceName: mysite-nginx-service
+ servicePort: 80
+ tls:
+ - hosts:
+ - k3s.carpie.net
+ secretName: k3s-carpie-net-tls
+```
+
+Please note that just the **Ingress** section of **mysite.yaml** is shown above. The changes are the addition of the **annotation [cert-manager.io/cluster-issuer][14]: letsencrypt-prod**. This tells traefik which issuer to use when creating certificates. The only other addition is the **tls:** block. This tells traefik that we expect to have TLS on host **[k3s.carpie.net][10],** and we expect the TLS certificate files to be stored in the secret **k3s-carpie-net-tls**.
+
+Please remember that we did not create these certificates! (Well, we created test certificates similarly named, but we deleted those.) Traefik will read this and go looking for the secret. When it does not find it, it sees the annotation saying we want to use **letsencrypt-prod** issuer to procure one. From there, it will make the request and install the certificate in the secret for us!
+
+We're done! Let's try it out.
+
+There it is in all its encrypted TLS beauty! Congratulations!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/ssl-letsencrypt-k3s
+
+作者:[Lee Carpenter][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/carpie
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/files_documents_paper_folder.png?itok=eIJWac15 (Files in a folder)
+[2]: https://carpie.net/articles/ingressing-with-k3s
+[3]: https://cert-manager.io/
+[4]: https://letsencrypt.org/
+[5]: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s
+[6]: https://cloudflare.com/
+[7]: https://gitlab.com/carpie/k3s_using_certmanager/-/archive/master/k3s_using_certmanager-master.zip
+[8]: https://cert-manager.io/docs/installation/kubernetes/
+[9]: https://whatsmyip.org/
+[10]: http://k3s.carpie.net
+[11]: https://opensource.com/sites/default/files/uploads/ep011_dns_example.png
+[12]: https://opensource.com/sites/default/files/uploads/ep011_router.png
+[13]: https://carpie.net/articles/ingressing-with-k3s#deploying-a-simple-website
+[14]: http://cert-manager.io/cluster-issuer
diff --git a/sources/tech/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md b/sources/tech/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md
new file mode 100644
index 0000000000..91428b551b
--- /dev/null
+++ b/sources/tech/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md
@@ -0,0 +1,219 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (6 Best AUR (Arch User Repository) Helpers for Arch Linux)
+[#]: via: (https://www.2daygeek.com/best-aur-arch-user-repository-helpers-arch-linux-manjaro/)
+[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
+
+6 Best AUR (Arch User Repository) Helpers for Arch Linux
+======
+
+Arch Linux is a Linux distribution largely based on the binary packages which targets x86-64 microprocessors computers.
+
+Arch Linux uses rolling release model wherein the updates are frequently delivered over to applications.
+
+It has package manager called **[pacman][1]** which allows to install, remove and update software packages.
+
+Newbies are advised to step in after gaining hand on experience with other Linux flavors since Arch Linux is built for experienced users.
+
+### What is AUR (Arch User Repository)?
+
+[Arch User Repository][2] commonly referred as AUR is the community-based software repository for Arch users.
+
+User compiled packages get into the Arch official repository, based on the package popularity honored by AUR Community.
+
+### What is AUR Helper?
+
+[AUR helper][3] is a wrapper that allows user to install the package from AUR Repository without manual intervention.
+
+Usages such as searching of packages, resolving dependencies, retrieval and build AUR packages, Web content retrieval and submission of AUR packages are being automated.
+
+**The 6 best AUR helpers are listed below:**
+
+ * Yay (Yet another Yogurt)
+ * Pakku
+ * Pacaur
+ * Pikaur
+ * Trizen
+ * Aura
+
+
+
+### 1) Yay (Yet another Yogurt)
+
+[Yay][4] is a best CLI based AUR helper for Arch Linux, written in GO Language. Yay is based on the design of yaourt, apacman and pacaur.
+
+Best recommended for newbies. Similar to that of Pacman, with features matching many of the commands and options used in pacman.Allows users to find matching package providers during search and allow selection.
+
+### How to Install yay
+
+Run the following commands one by one to install yay on Arch Linux based systems.
+
+```
+$ sudo pacman -S git go base-devel
+$ git clone https://aur.archlinux.org/yay.git
+$ cd yay
+$ makepkg -si
+```
+
+### How to Use yay
+
+This use the same syntax like pacman, use the following command to install a package through yay.
+
+```
+$ yay -s arch-wiki-man
+```
+
+### 2) Pakku
+
+[Pakku][5] can be treated as another Pacman however dwells in its initial stage. It is a wrapper which allows users to search or install packages from AUR.
+
+It does a decent job of removing the dependencies and also allows to install packages by cloning the PKGBUILD.
+
+### How to Install Pakku
+
+To install pakku on Arch Linux based systems, run the following commands one by one.
+
+```
+$ sudo pacman -S git base-devel
+$ git clone https://aur.archlinux.org/pakku.git
+$ cd pakku
+$ makepkg -si
+```
+
+### How to Use Pakku
+
+It uses the same syntax as pacman, use the following command to install a package with pakku.
+
+```
+$ pakku -s dropbox
+```
+
+### 3) Pacaur
+
+Another CLI based AUR helper that helps to reduce the user prompt interaction.
+
+[Pacaur][6] is designed for advanced users who are inclined towards automation for repetitive tasks. Users are expected to be familiar with the AUR manual build process with makepkg and its configuration.
+
+### How to Install Pacaur
+
+To install pakku on Arch Linux based systems, run the following commands one by one.
+
+```
+$ sudo pacman -S git base-devel
+$ git clone https://aur.archlinux.org/pacaur.git
+$ cd pacaur
+$ makepkg -si
+```
+
+### How to Use Pacaur
+
+It uses the same syntax as pacman, use the following command to install a package with Pacaur.
+
+```
+$ pacaur -s spotify
+```
+
+### 4) Pikaur
+
+[Pikaur][7] is a AUR helper with minimal dependencies and review PKGBUILDs all in once, next build them all without user interaction.
+
+Pikaur will inform Pacman about the next step by mastering the pacman.
+
+### How to Install Pikaur
+
+To install pakku on Arch Linux based systems, run the following commands one by one.
+
+```
+$ sudo pacman -S git base-devel
+$ git clone https://aur.archlinux.org/pikaur.git
+$ cd pikaur
+$ makepkg -fsri
+```
+
+### How to Use Pikaur
+
+It uses the same syntax as pacman, use the following command to install a package with Pikaur.
+
+```
+$ pacaur -s spotify
+```
+
+### 5) Trizen
+
+[Trizen][8] is a command line based lightweight wrapper for AUR, written in Perl. Speed oriented AUR helper which allows users to search, install packages and also permits to read AUR package comments.
+
+Edit support for text files and the Input/output uses UTF-8 support. Built-in interaction with ‘pacman’.
+
+### How to Install Trizen
+
+To install pakku on Arch Linux based systems, run the following commands one by one.
+
+```
+$ sudo pacman -S git base-devel
+$ git clone https://aur.archlinux.org/trizen.git
+$ cd trizen
+$ makepkg -si
+```
+
+### How to Use Trizen
+
+It uses the same syntax as pacman, use the following command to install a package with Trizen.
+
+```
+$ pacaur -s google-chrome
+```
+
+### 6) Aura
+
+[Aura][9] is a secure, multilingual package manager for Arch Linux and the AUR, written in Haskell. It supports many Pacman operations and sub-options which allows easy development and beautiful code.
+
+It automates the process of installating packages from the Arch User Repositories.Users normally face difficulties in system upgrade when using Aura.
+
+### How to Install Aura
+
+To install pakku on Arch Linux based systems, run the following commands one by one.
+
+```
+$ sudo pacman -S git base-devel
+$ git clone https://aur.archlinux.org/aura.git
+$ cd aura
+$ makepkg -si
+```
+
+### How to Use Aura
+
+It uses the same syntax as pacman, use the following command to install a package with Aura.
+
+```
+$ pacaur -s android-sdk
+```
+
+### Conclusion:
+
+Users can make their choice among the above 6 AUR helpers by analyzing through.
+
+--------------------------------------------------------------------------------
+
+via: https://www.2daygeek.com/best-aur-arch-user-repository-helpers-arch-linux-manjaro/
+
+作者:[Magesh Maruthamuthu][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.2daygeek.com/author/magesh/
+[b]: https://github.com/lujun9972
+[1]: https://www.2daygeek.com/pacman-command-examples-manage-packages-arch-linux-system/
+[2]: https://wiki.archlinux.org/index.php/Arch_User_Repository
+[3]: https://wiki.archlinux.org/index.php/AUR_helpers
+[4]: https://github.com/Jguer/yay
+[5]: https://github.com/kitsunyan/pakku
+[6]: https://github.com/E5ten/pacaur
+[7]: https://github.com/actionless/pikaur
+[8]: https://github.com/trizen/trizen
+[9]: https://github.com/fosskers/aura
diff --git a/sources/tech/20200313 How to Change MAC Address in Linux.md b/sources/tech/20200313 How to Change MAC Address in Linux.md
new file mode 100644
index 0000000000..80d304d3d3
--- /dev/null
+++ b/sources/tech/20200313 How to Change MAC Address in Linux.md
@@ -0,0 +1,179 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (How to Change MAC Address in Linux)
+[#]: via: (https://itsfoss.com/change-mac-address-linux/)
+[#]: author: (Community https://itsfoss.com/author/itsfoss/)
+
+How to Change MAC Address in Linux
+======
+
+Before I show you how to change Mac address in Linux, let’s first discuss why would you change it in the first place.
+
+You may have several reasons. Maybe you don’t want your actual [MAC address][1] (also called physical address) to be exposed on a public network? Other case can be that the network administrator might have blocked a particular MAC address in the router or firewall.
+
+One practical ‘benefit’ is that some public network (like Airport WiFi) allows free internet for a limited time. If you want to use the internet beyond that, spoofing your Mac address may trick the network in believing that it’s a new device. It’s a famous meme as well.
+
+![Airport WiFi Meme][2]
+
+I am going to show the steps for changing MAC address (also called spoofing/faking MAC address).
+
+### Changing MAC address in Linux
+
+Let’s go through each step:
+
+#### Step 1: Find your MAC address and network interface
+
+Let’s find out some [details about the network card in Linux][3]. Use this command to get the network interface details:
+
+```
+ip link show
+```
+
+In the output, you’ll see several details along with the MAC address:
+
+```
+1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
+ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+2: eno1: mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
+ link/ether 94:c6:f8:a7:d7:30 brd ff:ff:ff:ff:ff:ff
+3: enp0s31f6: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
+ link/ether 38:42:f8:8b:a7:68 brd ff:ff:ff:ff:ff:ff
+4: docker0: mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
+ link/ether 42:02:07:8f:a7:38 brd ff:ff:ff:ff:ff:ff
+```
+
+As you can see, in this case, my network interface is called **enp0s31f6** and its MAC address is **38:42:f8:8b:a7:68**.
+
+You may want to note it down on a secure place to revert to this original MAC address later on.
+
+Now you may proceed to changing the MAC address.
+
+Attention!
+
+If you do this on a network interface which is currently in use, probably your network connection will be terminated. So either try this method on an additional card or be prepared to restart your network.
+
+#### Method 1: Change MAC address using Macchanger
+
+![][4]
+
+[Macchanger][5] is simple utility to view, modify, and manipulate MAC addresses for your Network interface cards. It is available in almost all GNU/Linux operating systems and you can install is using the package installer of your distribution.
+
+On Arch Linux or Manjaro:
+
+```
+sudo pacman -S macchanger
+```
+
+On Fedora, CentOS, RHEL:
+
+```
+sudo dnf install macchanger
+```
+
+On Debian, Ubuntu, Linux Mint, Kali Linux:
+
+```
+sudo apt install macchanger
+```
+
+**Important!** You’ll be asked to specify whether macchanger should be set up to run automatically every time a network device is brought up or down. This gives a new MAC address whenever you attach an Ethernet cable or re-enable WiFi.
+
+![Not a good idea to run it automatically][6]
+
+I recommend not to run it automatically, unless you really need to change your MAC address every time. So, choose No (by pressing tab key) and hit Enter key to continue.
+
+##### How to Use Macchanger to change MAC address
+
+Do you remember your network interface name? You got it in the Step 1 earlier.
+
+Now, to assign any random MAC address to this network card, use:
+
+```
+sudo macchanger -r enp0s31f6
+```
+
+After changing the MAC id, verify it using command:
+
+```
+ip addr
+```
+
+You will now see that MAC has been spoofed.
+
+To change the MAC address to a specific value, specify any custom MAC address using command:
+
+```
+macchanger --mac=XX:XX:XX:XX:XX:XX
+```
+
+Where XX:XX:XX:XX:XX:XX is the new MAC id that you want to change.
+
+Finally, to revert the MAC address to its original hardware value, run the following command:
+
+```
+macchanger -p enp0s31f6
+```
+
+However, you don’t have to do this. Once you reboot the system, the changes will be automatically lost, and the actual MAC address will be restored again.
+
+You can always check the man page for more details.
+
+#### Method 2: Changing Mac address using iproute2 [intermediate knowledge]
+
+I would recommend using Macchanger but if you don’t want to use it, there is another way to change the MAC address in Linux.
+
+First, turn off the network card using command:
+
+```
+sudo ip link set dev enp0s31f6 down
+```
+
+Next, set the new MAC using command:
+
+```
+sudo ip link set dev enp0s31f6 address XX:XX:XX:XX:XX:XX
+```
+
+Finally, turn the network back on with this command:
+
+```
+sudo ip link set dev enp0s31f6 up
+```
+
+Now, verify new MAC address:
+
+```
+ip link show enp0s31f6
+```
+
+That’s it. You have successfully changed the MAC address in true Linux style. Stay tuned with It’s FOSS for more Linux tutorial and tips.
+
+![][7]
+
+### Dimitrios Savvopoulos
+
+Dimitrios is an MSc Mechanical Engineer but a Linux enthusiast in heart. He is well settled in Solus OS but curiosity drives him to constantly test other distros. Challenge is part of his personality and his hobby is to compete from 5k to the marathon distance.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/change-mac-address-linux/
+
+作者:[Community][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/itsfoss/
+[b]: https://github.com/lujun9972
+[1]: https://en.wikipedia.org/wiki/MAC_address
+[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/airport_wifi_meme.jpg?ssl=1
+[3]: https://itsfoss.com/find-network-adapter-ubuntu-linux/
+[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/Change_MAC_Address_Linux.jpg?ssl=1
+[5]: https://github.com/alobbs/macchanger
+[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/configuring_mcchanger.jpg?ssl=1
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1
diff --git a/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md b/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md
new file mode 100644
index 0000000000..5b6ca689d7
--- /dev/null
+++ b/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md
@@ -0,0 +1,472 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (How to set up the Raspberry Pi Zero for travel)
+[#]: via: (https://opensource.com/article/20/3/raspberry-pi-zero)
+[#]: author: (Peter Garner https://opensource.com/users/petergarner)
+
+How to set up the Raspberry Pi Zero for travel
+======
+You don't have to invest large amounts of money to build a relatively
+powerful system that can be taken on the road and used productively.
+![Airplane flying with a globe background][1]
+
+For some time now, I've been a huge fan of the [Raspberry Pi][2] computer in all of its various forms. I have a number of them, and each has a server role to play. Most of the time, they work extremely well, and I'm safe in the knowledge that the small amount of power they consume is keeping the bills down.
+
+If you've read my blog before, you may have read my account of how I [migrated my desktop computing][3] to a Pi 3. This worked well for quite a while, but I finally had to accept that editing large graphics and multimedia files was a problem, so I replaced it with an [Intel NUC][4]. My hankering for Pi experimentation was still there, though, and I decided to do a "what-if" exercise and see if it could survive on the road. And that's when I dragged my Pi Zero out of retirement from my spares box.
+
+### Why travel with a Raspberry Pi
+
+_"Why would I want to do this? Surely the trend is to travel with as powerful a device as possible?"_
+
+Well, it's like this. Last year, my employer issued a decree that in order to conform to its security policy, we would no longer be able to check laptops in as luggage, and not long after, the US government decided to summarily ban carrying laptops in hand baggage to and from certain countries, y'know, for security. So how do we get around that one? The sensible option would be to not travel with a laptop and use a hot-desk style spare at the destination. After all, everything is in the cloud now, right? Or, you could carry your important, commercially sensitive data on a CD/DVD or memory stick, but only if it's encrypted to a standard and your employer's data handling policy allows that.
+
+The problem is multi-faceted though: What if your role is such that you need to be able to fix software/systems on-the-go and you don't always have access to a "spare" laptop? On the occasions when I travel (by train), I have to lug my laptop with me, and it's a pain over the course of a day. Then there's the loss/theft/damage problem. Laptops can be easy targets, they can get left on trains, or you could be mugged. Or there's the "[evil maid][5]" scenario, in which someone interferes with your device without your knowledge. The list goes on.
+
+So, here's what you can get with a Pi Zero portable computer:
+
+ * It's small enough to fit in hand baggage or your pocket.
+ * It's cheap enough at $8 to buy another if yours gets lost/stolen/damaged.
+ * The entire OS and data are held on a "disk" that is as small as a fingernail, is cheap, and is easily bought in a wide variety of retail outlets. If need be, you can create a new one from a borrowed card from a phone.
+ * A full development environment with the ability to work offline or online. It can also act as an SSH server so that more than one person can use it at once.
+ * Safe storage: If you are paranoid or traveling on certain airlines, you can remove the "disk" and store it in your wallet or on your person. If your computer is stolen in transit, go and buy another one off the shelf: you're already set up with the OS.
+ * Network-tolerant: Around the world, there are country-specific WiFi frequencies, and a simple text-file change enables you to be compliant within minutes.
+ * Keyboard independent: You can use a compliant Bluetooth keyboard, but when you need to do something more demanding, you can just plug any USB keyboard into the spare USB connector using an On-The-Go cable.
+ * Power supply tolerant: My 3300mAh power bank can run the Pi Zero for about eight hours, but if all else fails, you can use a TV's USB connector to power it. Generally speaking, if a TV has HDMI, it will also have a USB socket, and the Zero only draws about 120mA. Or use someone's phone charger!
+ * Finally, if you're unfortunate enough to lose/damage your "disk," you can easily create another by downloading your 2GB image from a secure location in the cloud and burning it to a new card. Try doing _that_ with a normal laptop.
+
+
+
+That's motivation enough for me!
+
+Here is my finished product, with a beer coaster for scale.
+
+![Pi Zero W setup][6]
+
+### How I set up the Pi Zero for travel
+
+The cheap-as-chips Pi Zero has always been a bit of an odd beast, in my opinion. It features a single-core CPU and has a frugal 512MB of memory, some of which it has to share with the onboard video. The Raspbian OS currently based on Debian Stretch is touted as being suitable for the Zero with the LXDE-based "Pixel" GUI desktop, and indeed it can be loaded and started—but in reality, the poor thing really struggles to manage a GUI _and_ run useful software.
+
+Nevertheless, I was determined to give it a good try and set it up with the apps that have the smallest memory footprint. I'd already been around this loop with the Pi 3, so it was more of the same—only even more so! Bearing in mind this was to be a road warrior's computer, here's what I wanted to have on it:
+
+Web browser | Lightweight but with privacy in mind
+---|---
+Email | IMAP-capable and seamlessly supporting GPG
+XMPP/Jabber client | No-nonsense messaging
+VPN client | I'm on the road, remember
+Tor client | Always useful...
+Music | I carry a few MP3s, but internet radio is cool, too
+Multiple desktops | Useful with a small screen
+Editor/IDE | Hey, it's a working computer!
+FTP/SFTP client | Hey, it's a working computer!
+
+All in all, it's a very useful bundle for my purposes, and if I achieve a balanced environment, it could actually work.
+
+### Hardware
+
+The hardware was a bit of a challenge. The battery was not a problem, as I have a variety of rechargeable power packs with varying capacity, so it is really just a question of picking a suitable one for the day. The only prerequisite was that the battery should be able to take a charge while being used, and all my Jackery brand batteries do this.
+
+For my "disk," I opted for my in-house standard 32GB SanDisk Extreme microSDHC. They're very reliable, and the size is big enough to hold a lot of software and data while still remaining affordable.
+
+The video output would, I anticipated, be HDMI-out using the Zero's mini-HDMI connector. This suited my purposes well, as the majority of hotel TVs use this interface. Audio would also go via HDMI.
+
+That left the human interface devices (HID), and this, predictably, caused the most consternation. I hate Bluetooth with a passion, and with the Zero's limited connectors, I'd have to bite the bullet and use a Bluetooth keyboard and mouse, preferably a combined one—and small. There's no point in having a tiny computer if you have lug a great honking keyboard around as well, so my unhappy quest began.
+
+### Bluetooth woes
+
+The Zero has a limited number of USB connectors on board—just one, if you allow for the power connector, which obviously means you have limited connection options. You could always use a USB extender hub, but then that's more to carry—including another power supply. That basically leaves you trying to connect a keyboard and mouse via Bluetooth. I don't believe the hype about how it can "_easily connect a wide variety of devices together,_" and I wrestle with a variety of allegedly standard devices trying to get the bloody things to play nicely together. Part of the problem with the Pi (I think) is that there's some unintended interaction between WiFi and Bluetooth that causes weird stuff to happen. My problem was that I was able to connect to the Pi using a keyboard _or_ a mouse, but not both reliably at the same time. And yes, I have a variety of allegedly standards-following Bluetooth devices, none of which decided to work together properly.
+
+At this point, I was wondering if there was a Bluetooth Samaritan's Helpline, but there wasn't, so what the heck was I going to do?! Temporarily, I resorted to using an Apple USB keyboard with two USB sockets; this was useful for setup but not for being on the road. In the end, I spent hours browsing eBay and Amazon, and then I found it: a "_3- in-1 Mini Wireless Bluetooth Keyboard Mouse Touchpad For Windows iOS Android UK - Backlit, Ultra-thin, Built-in Rechargeable Battery, QWERTY_." Perfect on paper, but would it work? I sent off the money, and four days later, a slim package arrived from China. And it bloody well worked!! First time, every time, it got on with the Pi like pie and chips. I promptly ordered another one—accidents happen, and I wouldn't want to be left in the lurch.
+
+So, with my hardware lineup complete, I could settle down to setting up the Pi proper.
+
+### The GUI and the Pi
+
+Going back to my software requirements, I thought long and hard about the smallest desktop environment and went with the supplied LXDE desktop, which I'd used several times on other projects. Although the Pi struggled a bit with screen handling, it generally performed well, and I started setting up my software.
+
+Web browser 1
+
+Midori: a good compromise between size and modernity. Supports private browsing and is bundled with the Pi
+
+Web browser 2
+
+Links2 in graphic mode: lightweight, fast, secure, works with proxies
+
+Email
+
+Sylpheed: small, light, and works well with GPG
+
+XMPP/Jabber client
+
+Profanity. It's great!
+
+VPN client
+
+OpenVPN
+
+Tor client
+
+Ha! Links2 again
+
+Music
+
+SMPlayer: the GUI for MPlayer
+
+Editor/IDE
+
+Geany: small and light but powerful
+
+Image viewer/editor
+
+Pinta
+
+FTP/SFTP client
+
+Filezilla
+
+**Other stuff:**
+
+Midnight Commander
+
+Not just a file manager (more later)
+
+Tor proxy server
+
+Always on, so I can use Tor as needed
+
+Nmap
+
+I sometimes need to test stuff
+
+vnStat
+
+Monitor data usage on the wlan0 interface
+
+SSH/SFTP server
+
+Standard issue on this distro
+
+UFW
+
+Firewall; can't be too careful!
+
+Gopher client
+
+Gopherspace! It's still out there, and I use the _original_ Gopher client!
+
+All of the above are tried, tested, and very stable packages. The web browser decision was a calculated one: the Zero doesn't _really_ have what it takes to negotiate a modern ~~bloated, ad-ridden~~ website, and honestly, I have a phone that can handle that sort of thing. Likewise, the decision to run a Tor proxy: it's very handy to be able to access Marianas Web, and using Links2 as a browser means that the risk is minimal.
+
+Sylpheed is a mature package that I believe has largely been replaced by Claws but is actually less demanding of resources. GPG integrated seamlessly with it, and I was able to exchange signed/encrypted messages with ease. It renders both plain-text and HTML messages well, and the interface is uncluttered.
+
+I needed a _simple_ XMPP/Jabber client. The problem I've found with many apps of this type is that they try to incorporate multiple messaging standards when I only really need XMPP. Profanity is ideal as it does one job and does it very well.
+
+### System setup
+
+I spent a considerable amount of time setting up the OS for the best performance; a task made easier because I have set up numerous Raspberry Pis before. In such a small (as in memory) system, the decision to use a swap file was not taken lightly, and unfortunately, using a GUI desktop meant that the swap is in frequent use. The alternative is to not have one and hope that the system doesn't freeze up too much. I went with the suggested default of 100MB.
+
+I then looked at logging. As this was supposed to be a small, portable system, I didn't see much point in having extensive logging, especially as it would have a negative effect on the SDHC card in the long term. One solution was a combination of disabling logging in apps wherever possible and sacrificing a little memory to create a tmpfs in-memory filesystem. This would have the added advantage that it would be recreated on each boot. So, I worked out that 8MB could be used for this and duly updated **/etc/fstab**. This works extremely well.
+
+
+```
+`tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=8m 0 0`
+```
+
+I also had to update **/etc/rc.local** to provide some essential directories on startup; this kept the rsyslog and Tor daemons happy.
+
+
+```
+mkdir -p /var/log/rsyslog
+mkdir -p /var/log/tor/
+mkdir -p /var/log/vnstat/
+chown vnstat.root /var/log/vnstat/
+chown debian-tor /var/log/tor/
+```
+
+With all that in place, the little computer was almost ready for Prime Time. But there was a problem. I've already mentioned the frugal amount of memory on the Zero, and even with the GUI and apps pared down to the bone, I was regularly using swap space. To make matters worse, much worse, my carefully set up desktop menus were having problems.
+
+The Pi desktop comes with an _incredible_ amount of software installed, mainly to satisfy its original purpose as an educational machine. I decided early on to edit the menus to remove a lot of the "junk" and replace it with my list of apps, so I fired up the Main Menu Editor app. Normally this is quite responsive, but on the resource-challenged Zero, it had worrying lags and pauses as I made changes. Ultimately, it meant that my ad-hoc menus were corrupted, and worse still, the default Pi menus had been reinstated. Searching for help with this problem revealed that the menu system is convoluted, and if an update is not saved properly, the defaults will be substituted.
+
+I looked at the structure of the menus as best I could and decided that trying to pick the frigging things apart was more trouble than it was worth. So, I ditched LXDE/Pixel and installed XFCE (and its even lighter-weight GUI) in its place. This time, the menu editor seemed more stable, but as I made the changes, I realized that yes, it was happening again. At that point, I had a tantrum and threw my toys out of the pram. I'd reached a crossroads in my road-warrior setup: it worked very well apart from the menus, and I felt I couldn't go back after all that work, so, with a heavy heart, I had a drastic rethink. It was supposed to be a hacker's machine, right? It was Linux and, to many like-minded people, that meant a text-based interface, right?
+
+So I did what I had to do: I ditched the accursed GUI! Yes, go back to the '90s, maybe even earlier, and Run it Like a Boss.™ The main problem I had in my mind was that I'd no longer have nice, safe, icon-driven apps and multiple desktops to work with. My WiFi/network switcher would be no more, and worse still, I'd have to try and manage Bluetooth from the command line. That was going to be a major challenge, but I decided to proceed anyway, and I had a cloned copy of my microSDHC just in case I lost my nerve.
+
+### Set it up again
+
+Incidentally, if I were using a full-spec Raspberry Pi 3, I wouldn't have been in this situation. But it was my choice, so… This exercise started out well. I was already rebooting into the terminal login prompt, and the Bluetooth keyboard was working, so I was able to log in (previously, I'd run **startx** to get to the desktop). Since I no longer had the desktop bloat to worry about, my memory usage was a mere 78MB and no swap usage; I felt better already. But what about the apps that make life easy? I did more hunting around, and here's what I came up with.
+
+Web browser
+
+Links2 _not_ in graphic mode: lightweight, fast, secure, works with proxies
+
+Email
+
+(Neo)Mutt: powerful, extensible and works well with GPG
+
+XMPP/Jabber client
+
+Profanity. It's great!
+
+VPN client
+
+OpenVPN
+
+Tor client
+
+Ha! Links2 again
+
+Music
+
+Midnight Commander + mpg123
+
+Editor/IDE
+
+Nano: I'm using it to write this
+
+FTP/SFTP client
+
+Midnight Commander
+
+File manager
+
+Midnight Commander
+
+**Other stuff**
+
+Tor proxy server
+
+Always on, so I can use Tor as needed
+
+Nmap
+
+I sometimes need to test stuff
+
+vnStat
+
+Monitor data usage on the wlan0 interface
+
+SSH/SFTP server
+
+Standard issue on this distro
+
+Gopher client
+
+Gopherspace! It's still out there, and I use the _original_ Gopher client!
+
+**Graphics workarounds**
+
+fbcat
+
+Takes a screenshot using the framebuffer device
+
+fbi
+
+Linux framebuffer imageviewer: displays images in a terminal
+
+fbgs
+
+Displays PostScript/PDF files using the Linux framebuffer device on a terminal
+
+pnmtopng
+
+Converts a PPM into a PNG file
+
+You'll notice that there's not too much change there, with a few notable exceptions to display graphical content.
+
+### Do it again, and do it properly
+
+Things looked good, but I still had some issues to solve.
+
+#### Desktops
+
+"But what about the multiple desktops?!" I hear you asking, "How will you view images or connect to WiFi networks?" I needed to find a solution, and fast. For the multiple desktop thing, I decided to install tmux, the Linux Terminal Multiplexer. There are so many good reasons to run tmux on a Linux system, but my key reasons are that it makes multi-screen working possible, and it uses very little memory. It also enables me to connect to the Pi via SSH and take over the session, as you can see below.
+
+![tmux running on Raspberry Pi][7]
+
+#### Music
+
+I must say that it's very important to me to be able to listen to music while I'm working or relaxing, so the loss of (S)MPlayer was a major blow. I was able to listen to single MP3s or complete playlists. I was able to stream internet radio. Sigh. Midnight Commander came to the rescue with its ability to handle various file types. The secret is in the Extension File menu, which looks like this for me:
+
+
+```
+shell/i/.mp3
+ Open=/usr/lib/mc/ext.d/sound.sh open mp3
+regex/i/\\.(m3u|pls)$
+ Open=/usr/lib/mc/ext.d/sound.sh open playlist
+```
+
+And my sound.sh looks like this:
+
+
+```
+#!/bin/bash
+do_open_action() {
+ filetype=$1
+ case "${filetype}" in
+ playlist)
+ mpg123 -C -@ "${MC_EXT_FILENAME}"
+ ;;
+ m3u)
+ mpg123 -C -@ "${MC_EXT_FILENAME}"
+ ;;
+ mp3)
+ mpg123 -C "${MC_EXT_FILENAME}"
+ ;;
+ *)
+ ;;
+ esac
+ }
+case "${action}" in
+open)
+ ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
+ do_open_action "${filetype}"
+ ;;
+*)
+ ;;
+esac
+```
+
+Tapping Enter on an MP3 will play the file, or tapping on an M3U playlist will play whatever's in the playlist. I used the **-C** option so that I could have access to mpg123's controls. Sorted!
+
+#### SFTP/FTP clients
+
+Midnight Commander again! You can set up a client connection entry with the built-in menu and use **CTL+\** to select it from a drop-down. The FTP site is rendered in one of the panels as a directory structure, and you can just treat it as you would a local filesystem. SFTP is a bit harder, as you have to set it up as an SSH connection and then copy as required; it's OK if you have password authentication, but for public key authentication, I found it less involved to use SFTP from the command line. For reference, this is the syntax:
+
+
+```
+sftp://[user@]machine:[port]/[remote-dir]
+
+The user, port and remote-dir elements are optional.
+```
+
+![MC FTP client example][8]
+
+#### WiFi selector
+
+In the GUI world, I had had a nice, icon-based WiFi network manager app that I could use to switch between networks. The text-mode alternative is the bizarrely named wicd-curses*.* It's an app that communicates with wicd (wireless control daemon) using cursor keys, and it works very well. I had to disable the dhcpcd service using systemctl to get it to work, but at least it lets me select the appropriate network, including my home network or my phone's wireless hotspot when I'm out on the road. Here's [how to do it][9].
+
+![wicd-curses WiFi app][10]
+
+#### Email and web browsing
+
+For email and web browsing, I use Mutt (Neomutt) and Links2, respectively, and they just work.
+
+#### Gopher
+
+Trust me; you're not old enough to remember Gopher, the text mode forerunner of the WWW. Strictly speaking, it was before my time as well, but I run a thriving Gopher server, so I need a client. Here's what a Gopher server looks like running on a Raspberry Pi.
+
+
+```
+ gopher://gopher.petergarner.net:70
+
+__/\\\\\\\\\\\\\\\\\\_______/\\\\\\\\\\\\\\\\\\\\\\\\\\__________________/\\\\\\____
+_/\\\\\///////\\\\\\____\/\\\\\/////////\\\\\\______________/\\\\\\\\\\____
+_\/\\\\\\_____\/\\\\\\___\/\\\\\\_______\/\\\\\\__/\\\\\\_______/\\\\\/\\\\\\____
+_\/\\\\\\\\\\\\\\\\\\\\\/____\/\\\\\\\\\\\\\\\\\\\\\\\\\/___\///______/\\\\\/\/\\\\\\____
+_\/\\\\\//////\\\\\\____\/\\\\\/////////_____/\\\\\\_____/\\\\\/__\/\\\\\\____
+_\/\\\\\\____\//\\\\\\___\/\\\\\\_____________\/\\\\\\____/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\_
+_\/\\\\\\_____\//\\\\\\__\/\\\\\\_____________\/\\\\\\\\__///////////\\\\\//__
+_\/\\\\\\______\//\\\\\\_\/\\\\\\_____________\/\\\\\\_______________\/\\\\\\___
+_\///________\///__\///______________\///_________________\///___
+
+ Welcome to... "The Rpi4 Gopher"
+ ... your source for local information, and beyond!
+
+ --> [14] About this server (and legal)/
+
+ -- Content
+
+ [18] Tech-related/
+ [19] Politics and Propaganda (from all sides)/
+ [20] Cyber and Internet related/
+ [21] Stuff (filed under "miscellany")/
+.....
+```
+
+### Performance
+
+Overall, I'm pleased to say that my switch to text mode has been very beneficial with userland tasks handled responsively. As you can see from a typical **top** display, there's plenty of available and cached memory remaining from the original 512MB. Right now, I'm listening to a playlist, writing this article in an SSH-connected tmux session, running top**,** and Mutt is handling emails.
+
+On a regular basis, that's all I'll probably need to do, but it's great to have the option to develop and test software on the go, if I need to. Here's a simple Python script to get the Pi's CPU serial number (type):
+
+
+```
+>>> #!/usr/bin/env python
+...
+>>> import subprocess
+>>>
+>>> def GetCPUserial():
+... cpuinfo = subprocess.check_output(["/bin/cat", "/proc/cpuinfo"])
+... cpuinfo = cpuinfo.replace("\t","")
+... cpuinfo = cpuinfo.split("\n")
+... [ legend, cpuserial ] = cpuinfo[11].split(' ')
+... return cpuserial
+...
+>>> print GetCPUserial()
+9000c1
+>>>
+
+[/code] [code]
+
+top - 15:55:47 up 5:49, 6 users, load average: 0.21, 0.25, 0.34
+Tasks: 112 total, 1 running, 110 sleeping, 1 stopped, 0 zombie
+%Cpu(s): 3.9 us, 5.8 sy, 0.0 ni, 90.3 id, 0.0 wa, 0.0 hi, 0.0 si,
+
+KiB Mem : 493252 total, 37984 free, 73248 used, 382020 buff/cache
+KiB Swap: 102396 total, 102392 free, 4 used. 367336 avail Mem
+```
+
+I take regular backups, of course, using the indispensable [rpi-clone][11]. The beauty of this app is that I can copy the entire microSDHC card to another while the Pi is running. It also has the advantage that if I use a smaller capacity card, it will automatically and safely take this into account. I use a 32GB card, but I can dump it to an 8GB card because I'm only using about 4GB. The converse is true for a larger destination card. If you add only one utility to your Pi, this should be it—it's saved me more grief than _anything_ I've ever used! You can also use it to create distribution copies of your system.
+
+#### Battery life
+
+I can only describe the battery life as "impressive." Once the Zero is booted up, it takes an average 0.15A / 0.65W with the following running:
+
+ * System
+ * Bluetooth
+ * WiFi
+ * Audio (HDMI) subsystem
+ * Video (HDMI) subsystem
+
+
+
+I've measured 20 hours of mixed usage from my 6000mAh Jackery Jetpack power bank, and if I disable WiFi and just use it in "local" mode, possibly more. It's certainly practical to use it with my smaller, 3300mAh Anker battery, which unfortunately isn't rechargeable while in use. I also have a 20,000mAh battery for long trips: I have yet to try that out.
+
+### Taking it on the road
+
+In terms of computing as a challenge, setting up the Zero has been a really valuable exercise. It's taught me to become acquainted with the operating system and app software at a low level in order to squeeze the maximum amount of memory from the system. It's also taught me that I don't have to invest large amounts of money to build a relatively powerful system that can be taken on the road and used productively.
+
+Now that I've almost finished setting it up, it's time to actually _take_ it on the road and see how it runs in the field. Hey, maybe I'll actually take into a field and see if I can do some work and listen to music.
+
+* * *
+
+_This was originally published on [Peter Garner's blog][12] under a CC BY-NC-ND 4.0 license and is reused here with the author's permission._
+
+Having recently co-authored a book about building things with the Raspberry Pi ( Raspberry Pi Hacks...
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/raspberry-pi-zero
+
+作者:[Peter Garner][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/petergarner
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plane_travel_world_international.png?itok=jG3sYPty (Airplane flying with a globe background)
+[2]: https://opensource.com/resources/raspberry-pi
+[3]: https://www.petergarner.net/projects/Mac_Mini_to_rpi-part_1.pdf
+[4]: https://en.wikipedia.org/wiki/Next_Unit_of_Computing
+[5]: http://threatbrief.com/evil-maid-attack/
+[6]: https://opensource.com/sites/default/files/uploads/pi-zero-on-the-road.jpg (Pi Zero W setup)
+[7]: https://opensource.com/sites/default/files/uploads/tmux-on-pi.png (tmux running on Raspberry Pi)
+[8]: https://opensource.com/sites/default/files/uploads/ftp-client-mc.png (MC FTP client example)
+[9]: https://www.raspberrypi.org/forums/viewtopic.php?t=150124#p987430
+[10]: https://opensource.com/sites/default/files/uploads/wifi-selector.png (wicd-curses WiFi app)
+[11]: https://github.com/billw2/rpi-clone
+[12]: https://petergarner.net/notes/index.php?thisnote=20180202-Travels%20with%20a%20Pi
diff --git a/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md b/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md
new file mode 100644
index 0000000000..dba4bce1f8
--- /dev/null
+++ b/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md
@@ -0,0 +1,118 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (How to whiteboard collaboratively with Drawpile)
+[#]: via: (https://opensource.com/article/20/3/drawpile)
+[#]: author: (Seth Kenlon https://opensource.com/users/seth)
+
+How to whiteboard collaboratively with Drawpile
+======
+Need to whiteboard or draw something with others? Give Drawpile a try.
+![markers for a whiteboard][1]
+
+Thanks to applications like [Krita][2] and [MyPaint][3], open source software users have all the tools they need to create stunning digital paintings. They are so good that you can see [art created with Krita][4] in some of your [favorite RPG books][5]. And it's getting better all the time; for example, [GIMP][6] 2.10 adopted MyPaint's brush engine, so users can benefit from MyPaint without even installing the whole application.
+
+But what about collaborative illustration? What do two or more artists do when they want to work together on one piece? What does your work team use when you need to whiteboard during a business meeting? Those are the questions, and the answer is [Drawpile][7].
+
+![Drawpile's UI][8]
+
+Nyarlathotep by Sophia Eberhard
+
+Drawpile is a drawing application for Linux, Windows, and macOS. It's got a respectable brush engine and all the basic editorial tools (selection tools, flips and flops, mirror, and so on) to make it a good freehand digital paint application. But its most powerful feature is its easy multi-user mode. If you have Drawpile installed, you can host a drawing session from your computer or on a Drawpile server, allowing other users to join you in your virtual studio. This goes well beyond a screen-share session, which would just allow other users to _view_ your painting, and it's not a remote desktop with just one cursor. Drawpile enables several users, each with their own brush, to work on the same canvas at the same time over a network that can span the globe.
+
+### Installing Drawpile
+
+If you're using Linux, Drawpile is available as a [Flatpak][9] from [Flathub.org][10].
+
+On Windows and macOS, download and install Drawpile from [Drawpile's download page][11]. When you first launch it on macOS, you must right-click on its icon and select **Open** to accept that it hasn't been signed by a registered Apple developer.
+
+### Drawing with Drawpile
+
+The Drawpile interface is simple and minimal. Along the right side of the application window are docked palettes, and along the top is a toolbar. Most of the tools available to you are visible: paint brushes, paint buckets, lines, Bézier curves, and so on.
+
+For quick access to brushes, Drawpile allows you to assign a unique brush, along with all of its settings (including color), to the number keys **1** through **5** on your keyboard. It's an efficient and easy way to quickly move between drawing tools. The **6** key holds an eraser.
+
+Drawpile also has layers, so you can keep different parts of your painting separate until you combine them for your final render. If you're an animator, you can even use Drawpile's onion skin and flipbook features (both available in the **Layer** menu) to do rudimentary frame-by-frame animation. Unlike Krita, Drawpile doesn't feature an [animation timeline][12], but it's enough for quick and fun animations.
+
+### Custom brushes
+
+Drawpile isn't Krita or MyPaint, so its brush engine is simple in comparison. The preset brushes have the usual properties, though, including:
+
+ * **Opacity** adjusts how your strokes blend with existing paint
+ * **Hardness** defines the edges of your stroke
+ * **Smudging** allows existing strokes to be affected by your brush
+ * **Color pickup** allows your paint to pick up color from existing strokes
+ * **Spacing** controls how often the full brush cursor is sampled during a stroke
+
+
+
+Most of these are pressure-sensitive, so if you're using a drawing tablet (Wacom, for instance), then your brush strokes are dynamic depending upon pen pressure. The tablet support is borrowed from Krita, and it makes a big difference (although it's probably overkill for mock-ups or whiteboarding sessions).
+
+When you find a brush setting you like, you can add it to your brush set so you can use it again later. To add a brush, click the **Menu** button in the top-right corner of the docked **Brushes** palette and select **Add brush**.
+
+![Adding a brush in Drawpile][13]
+
+If the **Brushes** palette isn't visible, go to the **View** menu in the top menu bar and select **Brushes** from the **Docks** submenu.
+
+### Collaborative drawing
+
+To participate in a shared drawing session, go to the **Session** menu and click either **Host** to host a session or **Join** to join in on an existing one.
+
+#### Hosting a session
+
+If you're hosting a session, give your session a title and an optional password (or leave it blank to allow anyone in). In the **Server** section, set whether you're hosting the session from your computer or from someone else's server. You can host sessions on **pub.drawpile.net** for free, but all of your data will be sent out to the internet, which could affect performance. If you have a good internet connection, the lag is negligible, but if you're not confident in your internet speed or there's no reason to go out to the internet because your collaborators are in the same building as you, then you can host your session locally.
+
+![Settings for hosting a session][14]
+
+If you host locally, you must provide your IP address or computer name (ending in **.local**) to your collaborators so their Drawpile apps can find your computer. You can find your computer name in the **Sharing** preferences of the GNOME desktop if you're on Linux:
+
+![Sharing Drawpile in GNOME][15]
+
+You must enable Remote Login, and possibly adjust your [firewall settings][16] to allow other users to get through.
+
+On macOS and Windows, you may be running a firewall, and you may need to provide additional sharing permissions in your control panel or system settings.
+
+#### Joining a session
+
+If you're joining a session, you need to know either the URL or the IP address of the session you're trying to join. A URL is like a website address, such as syntheticdreams.net/listing. An IP address is the numerical version of a URL, such as 93.184.216.34. Some IP addresses are internal to your building, while others exist out on the internet. If you haven't been invited to a drawing session, you might be able to find a public group on Drawpile's [Communities][17] page.
+
+### Drawing with friends
+
+Open source has always been about sharing. Drawpile is not only software you can share with your friends and colleagues; it's software that allows you to work with them in a fun and creative way. Try Drawpile for your next project or boardroom meeting!
+
+Nick Hamilton talks about what he loves about the open source digital painting tool, Krita, prior...
+
+Akkana Peck shares three of her favorite GIMP tools.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/drawpile
+
+作者:[Seth Kenlon][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/seth
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/markers_whiteboard_draw.png?itok=hp6v1gHC (markers for a whiteboard)
+[2]: https://krita.org/en/
+[3]: http://mypaint.org
+[4]: https://krita.org/en/item/interview-with-alexandru-sabo/
+[5]: https://paizo.com/products/btpy9g9x?Pathfinder-Roleplaying-Game-Bestiary-5
+[6]: https://www.gimp.org/
+[7]: https://drawpile.net
+[8]: https://opensource.com/sites/default/files/uploads/drawpile-ui.jpg (Drawpile's UI)
+[9]: https://opensource.com/article/19/10/how-build-flatpak-packaging
+[10]: https://flathub.org/apps/details/net.drawpile.drawpile
+[11]: https://drawpile.net/download/
+[12]: https://opensource.com/life/16/10/animation-krita
+[13]: https://opensource.com/sites/default/files/uploads/drawpile-brush-add.jpg (Adding a brush in Drawpile)
+[14]: https://opensource.com/sites/default/files/uploads/drawpile-session-host.png (Settings for hosting a session)
+[15]: https://opensource.com/sites/default/files/uploads/gnome-sharing.png (Sharing Drawpile in GNOME)
+[16]: https://opensource.com/article/19/7/make-linux-stronger-firewalls
+[17]: https://drawpile.net/communities
diff --git a/sources/tech/20200313 Open source alternative for multi-factor authentication- privacyIDEA.md b/sources/tech/20200313 Open source alternative for multi-factor authentication- privacyIDEA.md
new file mode 100644
index 0000000000..382aa368e5
--- /dev/null
+++ b/sources/tech/20200313 Open source alternative for multi-factor authentication- privacyIDEA.md
@@ -0,0 +1,85 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (Open source alternative for multi-factor authentication: privacyIDEA)
+[#]: via: (https://opensource.com/article/20/3/open-source-multi-factor-authentication)
+[#]: author: (Cornelius Kölbel https://opensource.com/users/cornelius-k%C3%B6lbel)
+
+Open source alternative for multi-factor authentication: privacyIDEA
+======
+As technology changes, so too will our need to adapt our authentication
+mechanisms.
+![Three closed doors][1]
+
+Two-factor authentication, or multi-factor authentication, is not a topic only for nerds anymore. Many services on the internet provide it, and many end-users demand it. While the average end-user might only realize that his preferred web site either offers MFA or it does not, there is more to it behind the scene.
+
+The two-factor market is changing, and changing rapidly. New authentication methods arise, classical vendors are merging, and products have disappeared.
+
+The end-user might not be bothered at all, but organizations and companies who want to require multi-factor authentication for their users may wonder where to turn to and which horse to bet on.
+
+Companies like Secure Computing, Aladdin, SafeNet, Cryptocard, Gemalto, and Thales have been providing authentication solutions for organizations for some decades and have been involved in a round dance of [mergers and acquisitions][2] during the last ten years. And the user was the one who suffered. While the IT department thought it was rolling out a reliable software of a successful vendor, a few years later, they were confronted with the product being end-of-life.
+
+### How the cloud changes things
+
+In 1986, RSA released RSA SecurID, a physical hardware token displaying magic numbers based on an unknown, proprietary algorithm. But, almost 20 years later, thanks to the Open Authentication Initiative, HOTP (RFC4226) and TOTP (RFC6238) were specified—originally for OTP hardware tokens.
+
+SMS Passcode, which specialized in authenticating by sending text messages, was founded in 2005; no hardware token required. While other on-premises solutions kept the authentication server and the enrollment in a confined environment, with SMS Passcode, the authentication information (a secret text message) was transported via the mobile network to the user.
+
+The iPhone 1 was released in 2007, and the Android phone quickly followed. DUO Security was founded in 2009 as a specific cloud MFA provider, with the smartphone acting as a second factor. Both vendors concentrated on a new second factor—the phone with a text message or the smartphone with an app—and they offered and used infrastructure that was not part of the company's network anymore.
+
+Classical on-premises vendors started to move to the cloud, either by offering their new services or acquiring smaller vendors with cloud solutions, such as SafeNet's [acquisition of Cryptocard in 2012][3]. It seemed tempting for classical vendors to offer cloud services—no software updates on-premises, no support cases, unlimited scaling, and unlimited revenue.
+
+Even the old top dog, RSA, now offers a "Cloud Authentication Service." And doesn't it make sense to put authentication services in the cloud? The data is hosted at cloud services like Azure, the identities are hosted in the cloud at Azure AD, so why not put authentication there with Azure MFA? This approach might make sense for companies with a complete cloud-centric approach, but it also probably locks you into one specific vendor.
+
+Cloud seems a big topic also for multi-factor authentication. But what if you want to stay on-prem?
+
+### The state of multi-factor authentication technology
+
+Multi-factor authentication has also come a long way since 1986, when RSA introduced its first OTP tokens. A few decades ago, well-paid consultants made a living by rolling PKI concepts, since smartcard authentication needed a working certificate infrastructure.
+
+After having OTP keyfob tokens and smartphones with HOTP and TOTP apps and even push notification, the current state-of-the-art authentication seems to be FIDO2/WebAuthn. While U2F was specified by the FIDO Alliance alone, WebAuthn was specified by no one else than W3C, and the good news is, the base requirements have been integrated into all browsers except Internet Explorer.
+
+However, applications still need to add a lot of code when supporting Webauthn. But WebAuthn allows for new authentication devices like TPM chips in tablets, computers, and smartphones or cheap and small hardware devices. But U2F also looked good back then, and even it did not make the breakthrough. Will WebAuthn do it?
+
+So these are challenging times since currently, you probably cannot use WebAuthn, but in two years, you'll probably want to. Thus, you need a system that allows you to adapt your authentication mechanisms.
+
+### Getting actual requirements
+
+This is one of the first requirements when you are about to choose a flexible multi-factor authentication solution. It will not work out to solely rely on text messages, or on one single smartphone app or only WebAuthn tokens. The smartphone app may vanish; the WebAuthn devices might not be applicable in all situations.
+
+When looking at the mergers and acquisitions, we learned that it did happen and can happen again; that the software goes end-of-life, or the vendors cease their cloud services. And sometimes it is only the last few months that hurt, when the end of sales means that you cannot buy any new user licenses or onboard any new users! To get a lasting solution, you need to be independent on cloud services and vendor decisions. The safest way to do so is to go for an open source solution.
+
+But when going for an open source solution, you want to get a reliable system, reliable meaning that you can be sure to get updates that do not break and that bugs will be fixed, and there are people to be asked.
+
+### An open source alternative: privacyIDEA
+
+Concentrated experiences in the two-factor market since 2004 have been incorporated into the open source software alternative: [privacyIDEA][4].
+
+privacyIDEA is an open source solution providing a wide variety of different authentication technologies. It started with HOTP and TOTP tokens, but it also supports SMS, email, push notifications, SSH keys, X.509 certificates, Yubikeys, Nitrokeys, U2F, and a lot more. Currently, the support for WebAuthn is added.
+
+The modular structure of the token types (being Python classes) allows new types to be added quickly, making it the most flexible in regards to authentication methods. It runs on-premises at a central location in your network. This way, you stay flexible, have control over your network, and keep pace with the latest developments.
+
+privacyIDEA comes with a mighty and flexible policy framework that allows you to adapt privacyIDEA to your needs. The unique event handler modules enable you to fit privacyIDEA into your existing workflows or create new workflows that work the best for your scenario. It is also plays nice with the others and integrates with identity and authentication solutions like FreeRADIUS, simpleSAMLphp, Keycloak, or Shibboleth. This flexibility may be the reason organizations like the World Wide Web Consortium and companies like Axiad are using privacyIDEA.
+
+privacyIDEA is developed [on GitHub][5] and backed by a Germany-based company providing services and support worldwide.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/open-source-multi-factor-authentication
+
+作者:[Cornelius Kölbel][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/cornelius-k%C3%B6lbel
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDU_UnspokenBlockers_1110_A.png?itok=x8A9mqVA (Three closed doors)
+[2]: https://netknights.it/en/consolidation-of-the-market-and-migrations/
+[3]: https://www.infosecurity-magazine.com/news/safenet-acquires-cryptocard/
+[4]: https://privacyidea.org
+[5]: https://github.com/privacyidea/privacyidea
diff --git a/sources/tech/20200314 How to Install Netbeans on Ubuntu and Other Linux.md b/sources/tech/20200314 How to Install Netbeans on Ubuntu and Other Linux.md
new file mode 100644
index 0000000000..f3aec02c88
--- /dev/null
+++ b/sources/tech/20200314 How to Install Netbeans on Ubuntu and Other Linux.md
@@ -0,0 +1,106 @@
+[#]: collector: (lujun9972)
+[#]: translator: ( )
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (How to Install Netbeans on Ubuntu and Other Linux)
+[#]: via: (https://itsfoss.com/install-netbeans-ubuntu/)
+[#]: author: (Community https://itsfoss.com/author/itsfoss/)
+
+How to Install Netbeans on Ubuntu and Other Linux
+======
+
+_**In this tutorial, you’ll learn various ways to install Netbeans IDE on Ubuntu and other Linux distributions.**_
+
+[NetBeans][1] is an open source integrated development environment that comes with good cross-platform support. This tool has been recognized by the Java and C/C++ development community widely.
+
+The development environment is quite flexible. You can configure this tool to support a wide array of development objectives. Practically, you can develop Web, Desktop and Mobile Applications without leaving this platform. It’s amazing, isn’t it? Besides this, the user can add a wide array of known languages such as [PHP][2], C, C++, HTML, [Ajax][3], JavaScript, JSP, Ruby on Rails and the list goes on and on!
+
+If you are looking to install Netbeans on Linux, you have several ways to do that. I have written this tutorial primarily for Ubuntu but some installation methods are applicable to other distributions as well.
+
+ * [Installing Netbeans on Ubuntu using apt][4]: for Ubuntu and Ubuntu-based distributions but usually **it has older version of Netbeans**
+ * [Installing Netbeans on Ubuntu using Snap][5]: for any Linux distribution that has Snap packaging support enabled
+ * [Installing Netbeans using Flatpak][6]: for any Linux distribution with Flatpak package support
+
+
+
+### Installing Netbeans IDE on Ubuntu using Apt package manager
+
+If you search for Netbeans in Ubuntu Software Center, you’ll find two Netbeans available. The Apache Netbeans is the snap version which is bigger in download size but gives you the latest Netbeans.
+
+You can install it in one click. No need to open terminal. Easiest way.
+
+![Apache Netbeans in Ubuntu Software Center][7]
+
+You may also opt for using the apt command but with apt version, you won’t get the latest Netbeans. For example, at the time of writing this tutorial, Ubuntu 18.04 has Netbeans version 10 available via Apt while Snap has the latest Netbeans 11.
+
+If you are a fan of [apt or apt-get][8], you can [enable the universe repository][9] and install Netbeans using this command in the terminal:
+
+```
+sudo apt install netbeans
+```
+
+### Installing Netbeans IDE on any Linux distribution using Snap
+
+![][10]
+
+Snap is a universal package manager and if [you have enabled Snap on your distribution][11], you can install it using the following command:
+
+```
+sudo snap install netbeans --classic
+```
+
+The process might take some time to complete because the total download size is around 1 GB. Once done, you will see the app in the application launcher.
+
+Not only you’ll get the latest Netbeans with Snap, the installed version will be automatically updated to the newer version.
+
+### Installing Netbeans using Flatpak
+
+[Flatpak][12] is another universal packaging like Snap. Some distributions support Flatpak by default while you can [enable Flatpak support][13] on others.
+
+Once you have the Flatpak support on your distribution, you can use the following command to install Netbeans:
+
+```
+flatpak install flathub org.apache.netbeans
+```
+
+Alernatively, you can always download the source code of this open source software and compile it yourself.
+
+[Download Netbeans][14]
+
+Hopefully, you selected one of the above methods to install Netbeans on your Ubuntu Linux system. But which one did you use? Did you face any issues? Do let us know.
+
+![][15]
+
+### Srimanta Koley
+
+Srimanta is a passionate writer, a distrohopper & open source enthusiast. He is extremely fond of everything related to technology. He loves to read books and has an unhealthy addiction to the 90s!
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/install-netbeans-ubuntu/
+
+作者:[Community][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/itsfoss/
+[b]: https://github.com/lujun9972
+[1]: https://netbeans.org/
+[2]: https://www.php.net/
+[3]: https://en.wikipedia.org/wiki/Ajax_(programming)
+[4]: tmp.ZNFNEC210y#apt
+[5]: tmp.ZNFNEC210y#snap
+[6]: tmp.ZNFNEC210y#flatpak
+[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/apache-netbeans-ubuntu-software-center.jpg?ssl=1
+[8]: https://itsfoss.com/apt-vs-apt-get-difference/
+[9]: https://itsfoss.com/ubuntu-repositories/
+[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/Install_Netbeans_Linux.jpg?ssl=1
+[11]: https://itsfoss.com/install-snap-linux/
+[12]: https://flatpak.org/
+[13]: https://itsfoss.com/flatpak-guide/
+[14]: https://netbeans.apache.org/download/index.html
+[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/srimanta.jpg?ssl=1
diff --git a/translated/talk/20200214 Linux is our love language.md b/translated/talk/20200214 Linux is our love language.md
new file mode 100644
index 0000000000..1d539af505
--- /dev/null
+++ b/translated/talk/20200214 Linux is our love language.md
@@ -0,0 +1,83 @@
+[#]: collector: (lujun9972)
+[#]: translator: (sndnvaps)
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (Linux is our love language)
+[#]: via: (https://opensource.com/article/20/2/linux-love-language)
+[#]: author: (Christopher Cherry https://opensource.com/users/chcherry)
+
+Linux 是我们最喜爱的语言
+======
+当一个妻子教丈夫一些新技能的时候,他们会学到比他们期待更多的知识。
+![红心 "你不是孤单的"][1]
+
+2019年是樱桃家族学习的一年。我是一个喜欢学习新技术的高级软件工程师,并把学到的内容教给我的丈夫 Chris。通过教他一些我学到的东西并让他完成我的技术演练文章,我帮助Chris学习到了新技术,使他能够将自己的职业生涯更深入地转向技术领域。我学习到了新的方法,使我的演练和培训材料更易于让读者理解。
+
+通过这篇文章,我们来讨论一下我们从双方中各自学习到了什么东西,这学习到的内容对于我们的未来有何影响。
+
+### 对于学生的问题
+
+**Jess:** Chris, 是什么导致你想深入都学习我所学领域的技能呢?
+
+**Chris:** 主要目的是为了让我事业更进一步。作为一个网络工程师的经历告诉我,现在的网络专家已经不像以前一样有价值了,我必须掌握更多的知识。由于网络经常被认为是造成这些天程序中断或程序出错的原因,我想从开发人员的角度了解更多关于编写应用程序的知识,以便于了解它们如何依赖网络资源。
+
+**Jess:** 你想让我先教你什么内容呢,你想从中学到什么东西?
+
+**Chris:** 首先要学习怎样安装Linux系统,之后再安装[Ansible][2]程序。只要硬件能配对得上,每一个Linux发生版都很容易安装上,但可能会出现个别不兼容的情况。这就需要我学习如何解决系统安装前5分钟出现的问题了(这个我最喜欢了)。Ansible 给了一个我使用软件管理器安装程序的理由。当程序安装完成后,我快速学习到程序管理器如何处理程序的依赖项目,通过查看yum已经安装的程序,我发现Ansible是用Python写的,所以能在我的系统运行。自此之后,我都通过Ansible来安装各种各样的程序。
+
+**Jessica:** 你喜欢我这种教学方式不?
+
+**Chris:** 我们一开始有过争吵,直到我们弄清楚了我喜欢的学习方式,你应该怎样为我提供最好的学习方式。在一开始的时候,我很难跟上你讲的内容。例如,当你说"a Docker container,"的时候,我完全不知道你在讲什么。比较早的时候,我的回答就是”这是一个容器",然而这对我来说,完全没有意义。我比较喜欢你对这些内容进行一些更深入的讲解,这让学习更有趣。
+
+**Jess:** 老实说,这对我来说也是一堂大的课程。我从来没有教过在这个技术领域知识比我少的人在你之前,所以你帮助我认识到更多细节内容在解释的时候。我也得说声谢谢。
+
+当你通过这几个学习步骤的时候,你觉得我的这篇测试文章怎样呢?
+
+
+**Chris:** 就个人而已,对于男生来说这很容易,但我错了。在我主要学习的内容中,像你[介绍的Vagrant][3]程序,它在不同的Linux发生版本的变化比我想像的要多。操作系统(OS)会按你的要求更改设置方式、运行要求和特定命令。这看起来比我用的网络设备变化更大。这让我花费更多的精力去查看对应我的系统或其它系统(在某此时候,这个比较难以理解)。在这学习路上,我似乎碰到了很多不懂的事情。
+
+**Jess:** 我每天都会遇到各种各样的问题,所以不同的方法处理不同的问题这就是日常生活。
+
+### 对于老师的问题
+
+**Chris:** Jess, 你现在教我的方式有什么改变呢?
+
+**Jess:** 我会让你读多一些书,我也是。通过翻译书籍来学习新技术。每天起床后一小时和睡觉前一小时我都会看书,花费一个星期左右我就能看一到两本书。我也会创建为期两周的任务计划来实践我从书本中学习到的技能。这是除了我一天中第一个小时在喝大量咖啡时读到的科技文章之外的。当我在想如何让你增长职业技能的目标的时候,我认为书籍是一个重要的元素除了厉害博客文章和我们谈论的文章。我觉得我的阅读量使我理解增加了速度,如果你也这么做了,你也会很快赶上我的。
+
+**Chris:** 那么学生有没有教过老师呢?
+
+**Jess:** 我在你那里学习到耐心。举个例子,当你完成了安装Ansible的时候,我问你,下一步要怎样操作的时候。你直接回复我,“不知道”,这不是我想让你学习到的内容。所以我改变了策略,我们来说一说,你想在安装程序的过程前需要学习到什么东西。当我们在写Vagrant文章的时候,我们一起进行相应的演示操作,我以创建它为目标,所以我们在最后都有所获得。
+
+这实际上对我在工作中的培训方式产生了巨大的改变。现在我讲更多问题在大家学习的过程中,并手把手进行讲解,这比我之前要做的多。我更愿意坐下来仔细检查,确保有人明白我在说什么和我们在做什么。这是我之前从来没有做过的。
+
+### 我们在一直学到的东西
+
+做为一对夫妇,我们的技术都有所增长在这一年的技术合作中。
+
+**Chris:** 我对自己学到的东西感到震惊。通过一年课程学习,我认识了新操作系统,如何使用API,使用Ansible开发网络程序,和使用Vagrant启动虚拟机器。我还学习到了文档如何让生活变得更好,所以我也会尝试去写一写。然而,在这个工作领域,行为并不总是被记录在案,所以我学会了准备好处理棘手的问题,并记录如何解决它们。
+
+**Jess:** 除了我在教你中学到的知识外,我还专注于学习Kubernetes在云环境中的应用知识。这包括开发阶段,Kubernetes API的复杂度,创建我自己的容器,并对环境进行加密处理。我还节省了部分时间来学习更有趣的东西,研究无服务终端的代码、人工知识模型、Python和以图形方式显示热成像。对于我来说,这一年也很充足。
+
+我们下一个目标是什么?现在还不知道,但我可以向您保证,我们将会在Opensoruce.com上面进行分享它。
+
+** 2019年你辅导了谁,或2020年又准备辅导谁。在评论中告诉我们。 **
+
+我能从我六岁的侄女舒淇身上看到好奇的光辉,当她发现探索的时候。。。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/2/linux-love-language
+
+作者:[Christopher Cherry][a]
+选题:[lujun9972][b]
+译者:[sndnvaps](https://github.com/sndnvaps)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/chcherry
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/red-love-heart-alone-stone-path.jpg?itok=O3q1nEVz (红心 "你不是孤单的")
+[2]: https://opensource.com/resources/what-ansible
+[3]: https://opensource.com/resources/vagrant
diff --git a/translated/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md b/translated/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md
new file mode 100644
index 0000000000..3a243477c4
--- /dev/null
+++ b/translated/talk/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md
@@ -0,0 +1,63 @@
+[#]: collector: (lujun9972)
+[#]: translator: (hkurj)
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (2020 Will Be a Year of Hindsight for SD-WAN)
+[#]: via: (https://www.networkworld.com/article/3531315/2020-will-be-a-year-of-hindsight-for-sd-wan.html)
+[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/)
+
+2020年将会着眼于SD-WAN
+======
+
+对于软件定义的广域网(SD-WAN),“过去看起来困难的选择,知道了这些选择的结果后,现在看起来就很清晰了” 这一说法再合适不过了。总结过去的几年:云计算和数字化转型促使公司重新评估传统的WAN技术,该技术不再能够满足其不断增长的业务需求。从那时起,SD-WAN成为一种有前途的新技术。
+
+SD-WAN旨在解决物理设备的流量管理问题,并支持从云进行基于软件的配置。替换昂贵的多协议标签交换(MPLS)的愿望推动了许多最初的SD-WAN部署。公司希望它可以神奇地解决他们所有的网络问题。但是在实践中,基本的SD-WAN解决方案远没有实现这一愿景。
+
+快速发展到现在,围绕SD-WAN的炒作已经尘埃落定,并且早期的实施工作已经过去。现在是时候回顾一下我们在2019年学到的东西以及在2020年要改进的地方。所以,让我们开始吧。
+
+
+### **1\. 这与节省成本无关**
+
+大多数公司选择SD-WAN作为MPLS的替代品,因为它可以降低WAN成本。但是,[节省的成本] [1]会随SD-WAN的不同而异,因此不应将其用作部署该技术的主要驱动力。无论公司需要什么,公司都应该专注于提高网络敏捷性,例如实现更快的站点部署和减少配置时间。 SD-WAN的主要驱动力是使网络更高效。如果成功实现那么成本也会随之降低。
+
+
+### **2\. WAN优化是必要的**
+
+说到效率,[WAN优化] [2]提高了应用程序和数据流量的性能。通过应用协议加速,重复数据删除,压缩和缓存等技术,WAN优化可以增加带宽,减少等待时间并减轻数据包丢失。最初的想法是SD-WAN可以完成对WAN优化的需求,但是我们现在知道某些应用程序需要额外的性能。这些技术相互补充,而不是相互替代。它们应该用来解决不同的问题。
+
+
+### **3\. 安全性不应该事后考虑。**
+
+SD-WAN具有许多优点,其中之一就是使用宽带互联网快速发送企业应用程序流量。但是这种方法也带来了安全风险,因为它使用户及其本地网络暴露于不受信任的公共互联网中。从一开始,安全性就应该成为SD-WAN实施的一部分,而不是在事后。公司可以通过使用[安全的云托管] [3]之类的服务,将安全性放在分支机构附近,从而实现所需的应用程序性能和保护。
+
+
+### **4\. 可见性对于SD-WAN成功至关重要**
+
+在应用程序和数据流量中具有[可见性] [4],这使网络管理不再需要猜测。最好的起点是部署前阶段,在此阶段,公司可以评估其现有功能以及在实施SD-WAN之前缺少的功能。可见的日常监视和警报形式显示在部署后继续发挥重要作用。了解网络中正在发生什么情况的公司会更好地准备应对性能问题,并可以利用这些知识来避免将来出现问题。
+
+### **5\. 无线广域网尚未准备就绪**
+
+SD-WAN可通过任何传输将用户连接到应用程序,包括宽带和4G / LTE(Long Term Evolution)无线。这就是[移动互联] [5]越来越多地集成到SD-WAN解决方案中的原因。尽管公司渴望将4G用作潜在的传输替代方案(尤其是在偏远地区),但按使用付费4G服务所产生的成本却很高。此外,由于延迟和带宽限制,4G可能会出现问题。最好的方法是等待服务提供商以更好的价格选择部署5G。今年将是我们看到5G推出并更加关注无线SD-WAN的一年。
+
+请务必观看以下SD-WAN视频系列:[你应该知道的所有关于SD-WAN的知识] [6]。
+
+--------------------------------------------------------------------------------
+
+via: https://www.networkworld.com/article/3531315/2020-will-be-a-year-of-hindsight-for-sd-wan.html
+
+作者:[Zeus Kerravala][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/hkurj)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.networkworld.com/author/Zeus-Kerravala/
+[b]: https://github.com/lujun9972
+[1]: https://blog.silver-peak.com/to-maximize-the-value-of-sd-wan-look-past-hardware-savings
+[2]: https://blog.silver-peak.com/sd-wan-vs-wan-optimization
+[3]: https://blog.silver-peak.com/sd-wans-enable-scalable-local-internet-breakout-but-pose-security-risk
+[4]: https://blog.silver-peak.com/know-the-true-business-drivers-for-sd-wan
+[5]: https://blog.silver-peak.com/mobility-and-sd-wan-part-1-sd-wan-with-4g-lte-is-a-reality
+[6]: https://www.silver-peak.com/everything-you-need-to-know-about-sd-wan
diff --git a/translated/tech/20200204 DevOps vs Agile- What-s the difference.md b/translated/tech/20200204 DevOps vs Agile- What-s the difference.md
new file mode 100644
index 0000000000..8a3cc0ce49
--- /dev/null
+++ b/translated/tech/20200204 DevOps vs Agile- What-s the difference.md
@@ -0,0 +1,181 @@
+[#]: collector: "lujun9972"
+[#]: translator: "messon007"
+[#]: reviewer: " "
+[#]: publisher: " "
+[#]: url: " "
+[#]: subject: "DevOps vs Agile: What's the difference?"
+[#]: via: "https://opensource.com/article/20/2/devops-vs-agile"
+[#]: author: "Taz Brown https://opensource.com/users/heronthecli"
+
+DevOps和敏捷: 究竟有什么区别?
+======
+
+两者之间的区别在于开发完毕之后发生的事情。
+
+![Pair programming][1]
+
+
+早期, 软件开发并没有特定的管理流程。随后出现了[瀑布开发流程][2], 它提出软件开发活动可以被开发和构建应用所耗费的时间来定义。
+
+那时候, 由于在开发流程中没有审查环节和权衡考虑, 常常需要花费很长的时间来开发, 测试和部署软件。交付的软件也是带有缺陷和Bug的质量较差的软件, 而且交付时间也不满足要求。那时候软件项目管理的重点是长期计划。
+
+瀑布流程与[三重约束模型][3]相关, 三重约束模型也称为项目管理三角形。三角形的每一个边代表项目管理三要素的一个要素: **范围, 时间和成本**. 正如[Angelo Baretta写到][4], 三重约束模型认为成本是时间和范围的函数, 这三个约束以一种确定的, 可预测的方式相互作用。如果我们想缩短时间, 就必须增加成本。如果我们想增加范围, 就必须增加成本或时间。
+
+### 从瀑布流程过渡到敏捷开发
+
+瀑布流程来源于生产和工程领域, 这些领域适合线性化的流程: 正如房屋封顶之前需要先盖好支撑墙。 相似地, 软件开发问题被认为可以通过提前做好计划来解决。从头到尾,开发流程被路线图清晰地定义,顺从路线图就可以得到最终交付的产品。
+
+最终, 瀑布模型被认为对软件开发是不利的而且违反人的直觉, 因为直到开发流程的最后才能体现出其价值, 这导致许多项目最终都以失败告终。而且, 在项目结束前客户看不到任何可以工作的软件。
+
+敏捷采用了一种不同的方法, 它抛弃了规划整个项目, 承诺估计的时间点, 简单的遵循计划。与瀑布流程相反, 它假设和拥抱不确定性。它的理念是以响应变化代替讨论过去, 它认为变更是客户需求的一部分。
+
+### 敏捷价值观
+
+敏捷由敏捷宣言代言, 敏捷宣言定义了[12条原则][5]:
+
+ 1. 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
+
+ 2. 欣然面对需求变化,即使在开发后期也一样。
+
+ 3. 经常交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
+
+ 4. 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
+
+ 5. 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
+
+ 6. 面对面沟通是传递信息的最佳的也是效率最高的方法。
+
+ 7. 可工作的软件是进度的首要度量标准。
+
+ 8. 敏捷流程倡导可持续的开发,责任人、开发人员和用户要能够共同维持其步调稳定延续。
+
+ 9. 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
+
+ 10. 以简洁为本,它是极力减少不必要工作量的艺术。
+
+ 11. 最好的架构, 需求和设计出自自组织团队
+
+ 12. 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
+
+
+
+敏捷的四个[核心价值观][6]是:
+
+ * **个体和互动** 高于 流程和工具
+ * **工作的软件** 高于 详尽的文档
+ * **客户合作** 高于 合同谈判
+ * **响应变化** 高于 遵循计划
+
+
+这与瀑布流程死板的计划风格相反。在敏捷流程中,客户是开发团队的一员,而不仅仅是在项目开始时参与项目需求的定义, 在项目结束时验收最终的产品。客户帮忙团队完成[准入标准][7],保持参与整个流程。另外,敏捷需要整个组织的变化和持续的改进。开发团队和其他团队一起合作, 包括项目管理团队和测试团队。做什么和计划什么时候做由指定的角色领导, 并由整个团队同意。
+
+### 敏捷软件开发
+
+敏捷软件开发需要自适应的规划,演进式的开发和交付。许多软件开发方法,框架和实践遵从敏捷的理念,包括:
+
+ * Scrum
+ * Kanban (可视化工作流)
+ * XP(极限编程)
+ * 精益
+ * DevOps
+ * 特性驱动开发(FDD)
+ * 测试驱动开发(TDD)
+ * 水晶方法
+ * 动态系统开发方法(DSDM)
+ * 自适应软件开发(ASD)
+
+
+
+所有这些已经被单独用于或一起用于开发和部署软件。最常用的是[scrum][8], kanban(或scrumban)和DevOps.
+
+[Scrum][9]是一个框架, 采用该框架的团队通常由一个scrum教练, 产品经理和开发人员组成, 该功能团队采用自主的工作方式, 能够加快软件交付速度从而给客户带来巨大的商业价值。其关注点是[较小增量][10]的快速迭代。
+
+[Kanban][11]是一个敏捷框架,有时也叫工作流管理系统,它能帮助团队可视化他们的工作从而最大化效率。Kanban通常由数字或物理展示板来呈现。团队的工作移到展示板上,例如未启动,进行中, 测试中, 已完成。Kanban使得每个团队成员可以随时看到所有工作的状态。
+
+### DevOps价值观
+
+DevOps是一种文化, 思维状态, 一种软件开发的方式或者基础设施开发的方式,一种软件和应用被构建和部署的方式。它假设开发和运维之间没有隔阂, 他们一起合作,没有矛盾。
+
+DevOps基于两个其他实践: 精益和敏捷。DevOps不是一个公司内的岗位或角色;它是一个组织或团队对持续交付,持续部署和持续集成的坚持不懈的追求。[Gene Kim][12](Phoenix项目和Unicorn项目的作者)认为,有三种方式定义DevOps的理念:
+
+ * 第一种: 自动化流程
+ * 第二种: 快速反馈
+ * 第三种: 持续学习
+
+
+
+### DevOps软件开发
+
+DevOps不会凭空产生;它是一种灵活的实践,它的本质是一种关于软件开发和IT基础设施实施的共享文化和思想。
+
+当你想到自动化,云,微服务时,你会想到DevOps。在一次[访谈][13]中, "*加速构建和扩张高性能技术组织*"的作者Nicol Forsgren, Jez Humble和Gene Kim这样解释到:
+
+> * 软件交付能力关系到甚至极大地影响到组织结果例如利润,市场份额,质量,客户满意度以及达成组织的战略目标。
+> * 优秀的团队能达到很高的交付量,稳定性和质量;他们并没有为了获得这些属性而进行取舍。
+> * 你可以通过实施精益,敏捷和DevOps中的实践来提升能力。
+> * 实施这些实践和能力也会影响你的组织文化,并且会进一步对你的软件交付能力和组织能力产生有益的提升。
+> * 懂得怎样改进能力需要做很多工作。
+>
+
+
+### DevOps和敏捷的对比
+
+DevOps和敏捷有相似性,但是他们不完全相同,一些人认为DevOps比敏捷更好。为了避免造成混淆,深入地了解他们是很重要的。
+
+#### 相似之处
+
+ * 毫无疑问,两者都是软件开发技术;
+ * 敏捷已经存在了20多年,DevOps是最近才出现的。
+ * 两者都追求软件的快速开发,它们的理念都基于怎样在不伤害客户或运维利益的情况下快速开发出软件。
+
+
+
+#### 不同之处
+
+ * **两者的差异** 在于软件开发完成后发生的事情。
+ * 在DevOps和敏捷中,软件开发,测试和部署的阶段都相同。然而,敏捷流程在这三个阶段之后会终止。相反,DevOps包括后续持续的运维。因此,DevOps会持续的监控软件运行情况和进行持续的开发。
+ * 敏捷中,不同的人负责软件的开发,测试和部署。而DevOps的工程角色负责所有活动,开发即运维,运维即开发。
+ * DevOps更关注于削减成本,而敏捷则是精益和减少浪费的代名词,侧重于像敏捷项目会计和最小可行产品的概念。
+ * **敏捷专注于并体现了经验主义(适应,透明和检查),而不是预测性措施。**
+
+敏捷 | DevOps
+---|---
+从客户得到反馈 | 从自己得到反馈
+较小的发布周期 | 较小的发布周期,立即反馈
+聚焦于速度 | 聚焦于速度和自动化
+对业务不是最好 | 对业务最好
+
+### 总结
+
+敏捷和DevOps是截然不同的,尽管它们的相似之处使人们认为它们是相同的。 这对敏捷和DevOps都是一种伤害。
+
+根据我作为一名敏捷专家的经验,我发现对于组织和团队从高层次上了解敏捷和DevOps是什么,以及它们如何帮助团队更高效地工作,更快地交付高质量产品从而提高客户满意度非常有价值。
+
+敏捷和DevOps绝不是对抗性的(或至少没有这个意图)。在敏捷革命中,他们更像是盟友而不是敌人。敏捷和DevOps可以相互协作一致对外,因此可以在相同的场合共存。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/2/devops-vs-agile
+
+作者:[Taz Brown][a]
+选题:[lujun9972][b]
+译者:[messon007](https://github.com/messon007)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/heronthecli
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/collab-team-pair-programming-code-keyboard.png?itok=kBeRTFL1 "Pair programming"
+[2]: http://www.agilenutshell.com/agile_vs_waterfall
+[3]: https://en.wikipedia.org/wiki/Project_management_triangle
+[4]: https://www.pmi.org/learning/library/triple-constraint-erroneous-useless-value-8024
+[5]: https://agilemanifesto.org/principles.html
+[6]: https://agilemanifesto.org/
+[7]: https://www.productplan.com/glossary/acceptance-criteria/
+[8]: https://opensource.com/article/19/8/scrum-vs-kanban
+[9]: https://www.scrum.org/
+[10]: https://www.scrum.org/resources/what-is-an-increment
+[11]: https://www.atlassian.com/agile/kanban
+[12]: https://itrevolution.com/the-unicorn-project/
+[13]: https://www.infoq.com/articles/book-review-accelerate/
diff --git a/translated/tech/20200225 3 eBook readers for the Linux desktop.md b/translated/tech/20200225 3 eBook readers for the Linux desktop.md
deleted file mode 100644
index d92173eb57..0000000000
--- a/translated/tech/20200225 3 eBook readers for the Linux desktop.md
+++ /dev/null
@@ -1,116 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: (wenwensnow)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (3 eBook readers for the Linux desktop)
-[#]: via: (https://opensource.com/article/20/2/linux-ebook-readers)
-[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt)
-
-Linux桌面版本下的3个电子书阅读器应用
-======
-
-任意一个开源电子书应用都能使你在大屏设备上的阅读体验得到提升。
-![电脑浏览器阅读书籍界面][1]
-
-我通常使用手机或Kobo阅读器阅读电子书,在大屏设备上阅读书籍总是令人不快。但很多人经常在自己的笔记本或桌面上阅读电子书,如果你有这种需求(或者你认为以后会遇到这种情况),我想向你介绍三种Linux桌面版下的电子书阅读器。
-
-### Bookworm
-
-[Bookworm][2]意在成为一个"简洁,专注于电子书的阅读器."事实证明它也确实做到了。Bookworm 内置一系列基础功能,有人抱怨它太过 _简单_ ,缺少 _功能_ (虽然功能这词显然有点指意不明)。Bookworm在没有任何无用部分的情况下起到了应有作用。
-
-应用界面整洁干净。
-
-![Bookworm 电子书应用][3]
-
-你可通过以下方式查看书籍:
-
- * 空格键前往下一页
- * 上下方向键跳转所在行
- * 左右方向键跳转至前或后一章
-
-你也可以通过添加注释或书签跳转至特定页面
-
-![Bookworm注释][4]
-
-Bookworm 没有太多设置选项。你能调整书籍字体大小及间距,开启双页或夜间模式。在应用中添加新文件夹后,Bookworm会自动扫描文件夹中的电子书。
-
-![Bookworm 参数设置][5]
-
-Bookworm 支持常用的电子书格式:EPUB, PDF, MOBI ,[FB2][6],你还能用它阅读[CBR][7] 和CBZ格式的数字版漫画。我只在Bookworm上测试了前三种格式,PDF倒是能打开,但加载速度很慢,格式也很难看。
-
-### Foliate
-
-单从功能上来说,[Foliate][8] 确实比Bookworm强上一些。Foliate不仅功能更强,它还有更多设置选项。这个功能多样,简单干净的应用满足了所有要求。
-
-![Foliate 电子书应用][9]
-
-在Foliate中可以通过空格,方向键,向上或向下翻页键浏览电子书,这里没什么特别的。
-
-你还可以在书籍中添加注释,查找以及翻译字句,查询字词含义。如果你电脑上安装了智能语音应用,Foliate还能将文本朗读出来。
-
-![在Foliate中的注释文本][10]
-
-Foliate与Bookworm相比有更多自定义选项。你能在应用中修改字体类型及大小,行间距,电子书页边距,也可以调高或降低屏幕亮度,选择四个应用内置主题。
-
-![Foliate 设置][11]
-
-你可以在Foliate上阅读 EPUB, MOBI, AZW, AZW3 格式的电子书。以防万一我可以提前告诉你,后三种格式是亚马逊Kindle阅读器上架书籍所特有的格式。
-
-### Calibre电子书阅读器
-
-[电子书阅读器][12]是[Calibre][13] 电子书管理工具的一个组件,就像之前提到的一样,电子书阅读器这部分并不是软件整体最棒的部分。
-
-![电子书阅读器应用][14]
-
-不过别被上面的话吓到,它也的确是个桌面电子书阅读器。
-
-在Calibre电子书阅读器中,你可以通过方向键,向上/向下翻页键以及空格浏览书籍,还能在在线字典中查找词语含义,添加书签。 这一阅读器没有注释功能,但内置的搜索引擎却很好用,你还能将书籍保存为PDF格式(虽然我不太明白你为什么要这么做)
-
-不过参数设置这里确是它出彩的地方,它的可选设置比Bookworm和Foliate加起来都多,从字体到文本布局,页面分割方式你都能改。除此之外,你还能自定义应用按键设置,将你喜欢的词典网站添加进来,方便阅读查找。
-
-![电子书参数设置][15]
-
-Calibre电子书阅读器一个很有用的功能,就是把自行设置的CSS配置文件效果应用到电子书上。以防万一我可以提前告诉你,CSS是一种调整网页格式的方法(这类文件就是许多电子书的一个组成部分)。如果你是使用CSS的高手,你可以将自己的CSS文件复制粘贴到配置窗口的**User stylesheet** 部分,这就是个性化的究极办法。
-
-据开发者描述,这一电子书阅读器“能支持所有主流电子书格式。” 如果你想知道具体支持格式是什么,[这是列表链接][16]。我测试了列表中的一小部分格式,没有发现问题。
-
-### 留在最后的话
-
-不管你只是单纯想找个电子书阅读器,还是有个更多复杂功能的应用,上文提到的三个选择都很不错,而且它们都能提升你在大屏设备上的阅读体验。
-
-* * *
-
-_这篇文章基于一篇发布在[Open Source Musings][17]上的文章,并适用于[CC BY-SA 4.0][18]许可证_
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/2/linux-ebook-readers
-
-作者:[Scott Nesbitt][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/scottnesbitt
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_browser_program_books_read.jpg?itok=iNMWe8Bu (Computer browser with books on the screen)
-[2]: https://babluboy.github.io/bookworm/
-[3]: https://opensource.com/sites/default/files/uploads/bookworm-reading.png (Bookworm e-book application)
-[4]: https://opensource.com/sites/default/files/uploads/bookworm-annotations.png (Annotations in Bookworm)
-[5]: https://opensource.com/sites/default/files/uploads/bookworm-preferences.png (Bookworm preferences)
-[6]: https://en.wikipedia.org/wiki/FictionBook
-[7]: https://en.wikipedia.org/wiki/Comic_book_archive
-[8]: https://johnfactotum.github.io/foliate/
-[9]: https://opensource.com/sites/default/files/uploads/foliate-reading.png (Foliate e-book application)
-[10]: https://opensource.com/sites/default/files/uploads/foliate-annotation_0.png
-[11]: https://opensource.com/sites/default/files/uploads/foliate-settings.png (Foliate settings)
-[12]: https://calibre-ebook.com/about
-[13]: https://opensourcemusings.com/managing-your-ebooks-with-calibre
-[14]: https://opensource.com/sites/default/files/uploads/e-book_viewer-reading.png (E-book Viewer application)
-[15]: https://opensource.com/sites/default/files/uploads/ebook-viewer-preferences.png (E-book Viewer preferences)
-[16]: https://manual.calibre-ebook.com/faq.html#what-formats-does-calibre-support-conversion-to-from
-[17]: https://opensourcemusings.com/three-ebook-readers-for-the-linux-desktop
-[18]: https://creativecommons.org/licenses/by-sa/4.0/
diff --git a/translated/tech/20200309 6 Raspberry Pi tutorials to try out.md b/translated/tech/20200309 6 Raspberry Pi tutorials to try out.md
new file mode 100644
index 0000000000..9f9aeb5e1a
--- /dev/null
+++ b/translated/tech/20200309 6 Raspberry Pi tutorials to try out.md
@@ -0,0 +1,66 @@
+[#]: collector: (lujun9972)
+[#]: translator: (geekpi)
+[#]: reviewer: ( )
+[#]: publisher: ( )
+[#]: url: ( )
+[#]: subject: (6 Raspberry Pi tutorials to try out)
+[#]: via: (https://opensource.com/article/20/3/raspberry-pi-tutorials)
+[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett)
+
+6 个可以尝试的树莓派教程
+======
+这些树莓派项目均旨在简化你的生活并提高生产力。
+![Cartoon graphic of Raspberry Pi board][1]
+
+没有什么比体验树莓派创作结果更令人兴奋了。经过数小时的编程、测试和徒手构建,你的项目终于开始成形,你不禁大喊 “woohoo!”。树莓派可以带给日常生活的可能性让我着迷。无论你是想学习新知识、尝试提高效率还是只是乐在其中,本文总有一个树莓派项目适合你。
+
+### 设置 VPN 服务器
+
+本[教程][[2]教你如何使用树莓派添加网络安全层。这个项目不仅有实际好处,而且还能为你带来很多乐趣。额外的安全性使你可以放心地做其他项目,例如下面列出的项目。
+
+### 创建一个物体跟踪摄像机
+
+树莓派之所以具有吸引力,是因为它提供了较低的入门门槛来学习机器学习等新技术。这份[逐步指南][3]提供了详尽的说明,说明了如何构建一个全景摄像头,以便使用 TensorFlow 和树莓派跟踪运动。
+
+### 使用照片幻灯片展示你最喜欢的回忆
+
+你是否曾经问过自己:“我应该怎么处理这些数码照片?”。如果你像我一样,那么答案是“是”。在朋友和家人圈子中,我被公认为摄像爱好者。这就是为什么我喜欢这个树莓派项目。在[本教程][4]中,你将学习如何设置照片幻灯片,以便轻松地在家里展示自己喜欢的回忆,而无需打印机!
+
+### 玩复古电子游戏
+
+如果你对复古游戏系统怀有怀旧之情,那么可以尝试[本教程][5]。了解包括树莓派在内的哪些设备可以运行 Amiga 模拟器。完成设置后,你将可在树莓派上玩自己喜欢的 Amiga 游戏。
+
+### 为你的娱乐中心搭建时钟
+
+在过去的十年中,家庭娱乐中心发生了很大的变化。我的家人完全依靠流媒体服务来观看节目和电影。我之所以爱它是因为我可以通过移动设备或语音助手控制电视。但是,当你不再能看眼时钟时,便会失去一定程度的便利!请遵循[这些步骤][6],使用树莓派从头开始搭建自己的时钟显示。
+
+### 扩大自制啤酒的生产规模
+
+在[本教程][7]中,经验丰富的家庭酿酒师分享了他建立电动啤酒酿造系统的经验。该项目需要在硬件和零件上进行更多的前期投资,但由此产生的效率和一致性让这些值得。为此祝贺!
+
+如果你是像我这样的树莓派新手,那么我建议你阅读我们可下载的树莓派指南。我们的[单页速查表][8]提供了入门指南。有关更多技巧和教程,我们的[综合指南][9]涵盖了一些主题,例如选择树莓派、保持更新、为社区做出贡献等。
+
+你会尝试哪个树莓派项目?让我们在评论中知道。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/3/raspberry-pi-tutorials
+
+作者:[Lauren Pritchett][a]
+选题:[lujun9972][b]
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/lauren-pritchett
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/raspberrypi_cartoon.png?itok=m3TcBONJ (Cartoon graphic of Raspberry Pi board)
+[2]: https://opensource.com/article/19/6/raspberry-pi-vpn-server
+[3]: https://opensource.com/article/20/1/object-tracking-camera-raspberry-pi
+[4]: https://opensource.com/article/19/2/wifi-picture-frame-raspberry-pi
+[5]: https://opensource.com/article/19/3/amiga-raspberry-pi
+[6]: https://opensource.com/article/17/7/raspberry-pi-clock
+[7]: https://opensource.com/article/17/7/brewing-beer-python-and-raspberry-pi
+[8]: https://opensource.com/downloads/getting-started-raspberry-pi-cheat-sheet
+[9]: https://opensource.com/downloads/raspberry-pi-guide