diff --git a/published/20160503 Cloud Commander - A Web File Manager With Console And Editor.md b/published/20160503 Cloud Commander - A Web File Manager With Console And Editor.md
new file mode 100644
index 0000000000..ff9792dbea
--- /dev/null
+++ b/published/20160503 Cloud Commander - A Web File Manager With Console And Editor.md
@@ -0,0 +1,143 @@
+Cloud Commander:一个有控制台和编辑器的 Web 文件管理器
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-A-Web-File-Manager-With-Console-And-Editor-720x340.png)
+
+**Cloud Commander** 是一个基于 web 的文件管理程序,它允许你通过任何计算机、移动端或平板电脑的浏览器查看、访问或管理系统文件或文件夹。它有两个简单而又经典的面板,并且会像你设备的显示尺寸一样自动转换大小。它也拥有两款内置的叫做 **Dword** 和 **Edward** 的文本编辑器,它们支持语法高亮,并带有一个支持系统命令行的控制台。因此,您可以随时随地编辑文件。Cloud Commander 服务器是一款在 Linux、Windows、Mac OS X 运行的跨平台应用,而且该应用客户端可以在任何一款浏览器上运行。它是用 **JavaScript/Node.Js** 写的,并使用 **MIT** 许可证。
+
+在这个简易教程中,让我们看一看如何在 Ubuntu 18.04 LTS 服务器上安装 Cloud Commander。
+
+### 前提条件
+
+像我之前提到的,是用 Node.js 写的。所以为了安装 Cloud Commander,我们需要首先安装 Node.js。要执行安装,参考下面的指南。
+
+- [如何在 Linux 上安装 Node.js](https://www.ostechnix.com/install-node-js-linux/)
+
+### 安装 Cloud Commander
+
+在安装 Node.js 之后,运行下列命令安装 Cloud Commander:
+
+```
+$ npm i cloudcmd -g
+```
+
+祝贺!Cloud Commander 已经安装好了。让我们往下继续看看 Cloud Commander 的基本使用。
+
+### 开始使用 Cloud Commander
+
+运行以下命令启动 Cloud Commander:
+
+```
+$ cloudcmd
+```
+
+**输出示例:**
+
+```
+url: http://localhost:8000
+```
+
+现在,打开你的浏览器并转到链接:`http://localhost:8000` 或 `http://IP-address:8000`。
+
+从现在开始,您可以直接在本地系统或远程系统或移动设备,平板电脑等Web浏览器中创建,删除,查看,管理文件或文件夹。
+
+![][2]
+
+如你所见上面的截图,Clouder Commander 有两个面板,十个热键 (`F1` 到 `F10`),还有控制台。
+
+每个热键执行的都是一个任务。
+
+ * `F1` – 帮助
+ * `F2` – 重命名文件/文件夹
+ * `F3` – 查看文件/文件夹
+ * `F4` – 编辑文件
+ * `F5` – 复制文件/文件夹
+ * `F6` – 移动文件/文件夹
+ * `F7` – 创建新目录
+ * `F8` – 删除文件/文件夹
+ * `F9` – 打开菜单
+ * `F10` – 打开设置
+
+#### Cloud Commmander 控制台
+
+点击控制台图标。这即将打开系统默认的命令行界面。
+
+![][3]
+
+在此控制台中,您可以执行各种管理任务,例如安装软件包、删除软件包、更新系统等。您甚至可以关闭或重新引导系统。 因此,Cloud Commander 不仅仅是一个文件管理器,还具有远程管理工具的功能。
+
+#### 创建文件/文件夹
+
+要创建新的文件或文件夹就右键单击任意空位置并找到 “New - >File or Directory”。
+
+![][4]
+
+#### 查看文件
+
+你可以查看图片,查看音视频文件。
+
+![][5]
+
+#### 上传文件
+
+另一个很酷的特性是我们可以从任何系统或设备简单地上传一个文件到 Cloud Commander 系统。
+
+要上传文件,右键单击 Cloud Commander 面板的任意空白处,并且单击“Upload”选项。
+
+![][6]
+
+选择你想要上传的文件。
+
+另外,你也可以上传来自像 Google 云盘、Dropbox、Amazon 云盘、Facebook、Twitter、Gmail、GitHub、Picasa、Instagram 还有很多的云服务上的文件。
+
+要从云端上传文件, 右键单击面板的任意空白处,并且右键单击面板任意空白处并选择“Upload from Cloud”。
+
+![][7]
+
+选择任意一个你选择的网络服务,例如谷歌云盘。点击“Connect to Google drive”按钮。
+
+![][8]
+
+下一步,用 Cloud Commander 验证你的谷歌云端硬盘,从谷歌云端硬盘选择文件并点击“Upload”。
+
+![][9]
+
+#### 更新 Cloud Commander
+
+要更新到最新的可用版本,执行下面的命令:
+
+```
+$ npm update cloudcmd -g
+```
+
+#### 总结
+
+据我测试,它运行很好。在我的 Ubuntu 服务器测试期间,我没有遇到任何问题。此外,Cloud Commander 不仅是基于 Web 的文件管理器,还可以充当执行大多数 Linux 管理任务的远程管理工具。 您可以创建文件/文件夹、重命名、删除、编辑和查看它们。此外,您可以像在终端中在本地系统中那样安装、更新、升级和删除任何软件包。当然,您甚至可以从 Cloud Commander 控制台本身关闭或重启系统。 还有什么需要的吗? 尝试一下,你会发现它很有用。
+
+目前为止就这样吧。 我将很快在这里发表另一篇有趣的文章。 在此之前,请继续关注我们。
+
+祝贺!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/cloud-commander-a-web-file-manager-with-console-and-editor/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[fuzheng1998](https://github.com/fuzheng1998)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://www.ostechnix.com/author/sk/
+[1]:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
+[2]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-Google-Chrome_006-4.jpg
+[3]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-Google-Chrome_007-2.jpg
+[4]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-commander-file-folder-1.png
+[5]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_008-1.jpg
+[6]:http://www.ostechnix.com/wp-content/uploads/2016/05/cloud-commander-upload-2.png
+[7]:http://www.ostechnix.com/wp-content/uploads/2016/05/upload-from-cloud-1.png
+[8]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_009-2.jpg
+[9]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_010-1.jpg
diff --git a/translated/tech/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md b/published/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md
similarity index 83%
rename from translated/tech/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md
rename to published/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md
index 198c8d0ffa..b6bb716ece 100644
--- a/translated/tech/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md
+++ b/published/20171003 Trash-Cli - A Command Line Interface For Trashcan On Linux.md
@@ -1,4 +1,4 @@
-Trash-Cli : Linux 上的命令行回收站工具
+Trash-Cli:Linux 上的命令行回收站工具
======
相信每个人都对回收站很熟悉,因为无论是对 Linux 用户,还是 Windows 用户,或者 Mac 用户来说,它都很常见。当你删除一个文件或目录的时候,该文件或目录会被移动到回收站中。
@@ -33,31 +33,27 @@ $ sudo apt install trash-cli
```
$ sudo yum install trash-cli
-
```
对于 Fedora 用户,使用 [dnf][6] 命令来安装 Trash-Cli:
```
$ sudo dnf install trash-cli
-
```
对于 Arch Linux 用户,使用 [pacman][7] 命令来安装 Trash-Cli:
```
$ sudo pacman -S trash-cli
-
```
对于 openSUSE 用户,使用 [zypper][8] 命令来安装 Trash-Cli:
```
$ sudo zypper in trash-cli
-
```
-如果你的发行版中没有提供 Trash-Cli 的安装包,那么你也可以使用 pip 来安装。为了能够安装 python 包,你的系统中应该会有 pip 包管理器。
+如果你的发行版中没有提供 Trash-Cli 的安装包,那么你也可以使用 `pip` 来安装。为了能够安装 python 包,你的系统中应该会有 `pip` 包管理器。
```
$ sudo pip install trash-cli
@@ -66,7 +62,6 @@ Collecting trash-cli
Installing collected packages: trash-cli
Running setup.py bdist_wheel for trash-cli ... done
Successfully installed trash-cli-0.17.1.14
-
```
### 如何使用 Trash-Cli
@@ -81,7 +76,7 @@ Trash-Cli 的使用不难,因为它提供了一个很简单的语法。Trash-C
下面,让我们通过一些例子来试验一下。
-1)删除文件和目录:在这个例子中,我们通过运行下面这个命令,将 2g.txt 这一文件和 magi 这一文件夹移动到回收站中。
+1) 删除文件和目录:在这个例子中,我们通过运行下面这个命令,将 `2g.txt` 这一文件和 `magi` 这一文件夹移动到回收站中。
```
$ trash-put 2g.txt magi
@@ -89,7 +84,7 @@ $ trash-put 2g.txt magi
和你在文件管理器中看到的一样。
-2)列出被删除了的文件和目录:为了查看被删除了的文件和目录,你需要运行下面这个命令。之后,你可以在输出中看到被删除文件和目录的详细信息,比如名字、删除日期和时间,以及文件路径。
+2) 列出被删除了的文件和目录:为了查看被删除了的文件和目录,你需要运行下面这个命令。之后,你可以在输出中看到被删除文件和目录的详细信息,比如名字、删除日期和时间,以及文件路径。
```
$ trash-list
@@ -97,7 +92,7 @@ $ trash-list
2017-10-01 01:40:50 /home/magi/magi/magi
```
-3)从回收站中恢复文件或目录:任何时候,你都可以通过运行下面这个命令来恢复文件和目录。它将会询问你来选择你想要恢复的文件或目录。在这个例子中,我打算恢复 2g.txt 文件,所以我的选择是 0 。
+3) 从回收站中恢复文件或目录:任何时候,你都可以通过运行下面这个命令来恢复文件和目录。它将会询问你来选择你想要恢复的文件或目录。在这个例子中,我打算恢复 `2g.txt` 文件,所以我的选择是 `0` 。
```
$ trash-restore
@@ -106,7 +101,7 @@ $ trash-restore
What file to restore [0..1]: 0
```
-4)从回收站中删除文件:如果你想删除回收站中的特定文件,那么可以运行下面这个命令。在这个例子中,我将删除 magi 目录。
+4) 从回收站中删除文件:如果你想删除回收站中的特定文件,那么可以运行下面这个命令。在这个例子中,我将删除 `magi` 目录。
```
$ trash-rm magi
@@ -118,11 +113,10 @@ $ trash-rm magi
$ trash-empty
```
-6)删除超过 X 天的垃圾文件:或者,你可以通过运行下面这个命令来删除回收站中超过 X 天的文件。在这个例子中,我将删除回收站中超过 10 天的项目。
+6)删除超过 X 天的垃圾文件:或者,你可以通过运行下面这个命令来删除回收站中超过 X 天的文件。在这个例子中,我将删除回收站中超过 `10` 天的项目。
```
$ trash-empty 10
-
```
Trash-Cli 可以工作的很好,但是如果你想尝试它的一些替代品,那么你也可以试一试 [gvfs-trash][9] 和 [autotrash][10] 。
@@ -133,7 +127,7 @@ via: https://www.2daygeek.com/trash-cli-command-line-trashcan-linux-system/
作者:[2daygeek][a]
译者:[ucasFL](https://github.com/ucasFL)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/translated/tech/20180131 What I Learned from Programming Interviews.md b/published/20180131 What I Learned from Programming Interviews.md
similarity index 58%
rename from translated/tech/20180131 What I Learned from Programming Interviews.md
rename to published/20180131 What I Learned from Programming Interviews.md
index 2f9c01b6ff..1c090b8e97 100644
--- a/translated/tech/20180131 What I Learned from Programming Interviews.md
+++ b/published/20180131 What I Learned from Programming Interviews.md
@@ -1,29 +1,28 @@
我从编程面试中学到的
-============================================================
-
+======
![](https://cdn-images-1.medium.com/max/1250/1*DXPdaGPM4oM6p5nSkup7IQ.jpeg)
-聊聊白板编程面试
-在2017年,我参加了[Grace Hopper Celebration][1]‘计算机行业中的女性’这一活动。这个活动是这类科技活动中最大的一个。共有17,000名女性IT工作者参加。
+*聊聊白板编程面试*
-这个会议有个大型的配套招聘会,会上有招聘公司来面试会议参加者。有些人甚至现场拿到offer。我在现场晃荡了一下,注意到一些应聘者看上去非常紧张忧虑。我还隐隐听到应聘者之间的谈话,其中一些人谈到在面试中做的并不好。
+在 2017 年,我参加了 ‘计算机行业中的女性’ 的[Grace Hopper 庆祝活动][1]。这个活动是这类科技活动中最大的一个。共有 17,000 名女性IT工作者参加。
-我走近我听到谈话的那群人并和她们聊了起来并给了一些面试上的小建议。我想我的建议还是比较偏基本的,如“(在面试时)一开始给出个能工作的解决方案也还说的过去”之类的,但是当她们听到我的一些其他的建议时还是颇为吃惊。
+这个会议有个大型的配套招聘会,会上有招聘公司来面试会议参加者。有些人甚至现场拿到 offer。我在现场晃荡了一下,注意到一些应聘者看上去非常紧张忧虑。我还隐隐听到应聘者之间的谈话,其中一些人谈到在面试中做的并不好。
-为了能更多的帮到像她们一样的白面面试者,我收集了一些过去对我有用的小点子,这些小点子我已经发表在了[prodcast episode][2]上。它们也是这篇文章的主题。
+我走近我听到谈话的那群人并和她们聊了起来并给了一些面试上的小建议。我想我的建议还是比较偏基本的,如“(在面试时)一开始给出个能工作的解决方案也还说的过去”之类的,但是当她们听到我的一些其他的建议时还是颇为吃惊。
+
+为了能更多的帮到像她们一样的小白面试者,我收集了一些过去对我有用的小点子,这些小点子我已经发表在了 [prodcast episode][2] 上。它们也是这篇文章的主题。
为了实习生职位和全职工作,我做过很多次的面试。当我还在大学主修计算机科学时,学校每个秋季学期都有招聘会,第一轮招聘会在校园里举行。(我在第一和最后一轮都搞砸过。)不过,每次面试后,我都会反思哪些方面我能做的更好,我还会和朋友们做模拟面试,这样我就能从他们那儿得到更多的面试反馈。
-不管我们怎么样找工作: 工作中介,网络,或者学校招聘,他们的招聘流程中都会涉及到技术面试:
+不管我们怎么样找工作: 工作中介、网络,或者学校招聘,他们的招聘流程中都会涉及到技术面试:
近年来,我注意到了一些新的不同的面试形式出现了:
* 与招聘方的一位工程师结对编程
* 网络在线测试及在线编码
-* 白板编程(LCTT译者注: 这种形式应该不新了)
-
+* 白板编程(LCTT 译注: 这种形式应该不新了)
我将重点谈谈白板面试,这种形式我经历的最多。我有过很多次面试,有些挺不错的,有些被我搞砸了。
@@ -31,7 +30,7 @@
首先,我想回顾一下我做的不好的地方。知错能改,善莫大焉。
-当面试者提出一个要我解决的问题时, 我立即马上立刻开始在白板上写代码,_什么都不问。_
+当面试者提出一个要我解决的问题时, 我立即马上立刻开始在白板上写代码,_什么都不问。_
这里我犯了两个错误:
@@ -41,7 +40,7 @@
#### 只会默默思考,不去记录想法或和面试官沟通
-在面试中,很多时候我也会傻傻站在那思考,什么都不写。我和一个朋友模拟面试的时候,他告诉我因为他曾经和我一起工作过所以他知道我在思考,但是如果他是个陌生的面试官的话,他会觉得要么我正站在那冥思苦想,毫无头绪。不要急匆匆的直奔解题而去是很重要的。花点时间多想想各种解题的可能性。有时候面试官会乐意和你一起探索解题的步骤。不管怎样,这就是在一家公司开工作会议的的普遍方式,大家各抒己见,一起讨论如何解决问题。
+在面试中,很多时候我也会傻傻站在那思考,什么都不写。我和一个朋友模拟面试的时候,他告诉我因为他曾经和我一起工作过所以他知道我在思考,但是如果他是个陌生的面试官的话,他会觉得我正站在那冥思苦想,毫无头绪。不要急匆匆的直奔解题而去是很重要的。花点时间多想想各种解题的可能性。有时候面试官会乐意和你一起探索解题的步骤。不管怎样,这就是在一家公司开工作会议的的普遍方式,大家各抒己见,一起讨论如何解决问题。
### 想到一个解题方法
@@ -50,30 +49,27 @@
这是对我管用的步骤:
1. 头脑风暴
-
2. 写代码
-
3. 处理错误路径
-
4. 测试
-#### 1\. 头脑风暴
+#### 1、 头脑风暴
对我来说,我会首先通过一些例子来视觉化我要解决的问题。比如说如果这个问题和数据结构中的树有关,我就会从树底层的空节点开始思考,如何处理一个节点的情况呢?两个节点呢?三个节点呢?这能帮助你从具体例子里抽象出你的解决方案。
-在白板上先写下你的算法要做的事情列表。这样做,你往往能在开始写代码前就发现bug和缺陷(不过你可得掌握好时间)。我犯过的一个错误是我花了过多的时间在澄清问题和头脑风暴上,最后几乎没有留下时间给我写代码。你的面试官可能没有机会看你在白板上写下代码,这可太糟了。你可以带块手表,或者房间有钟的话,你也可以抬头看看时间。有些时候面试者会提醒你你已经得到了所有的信息(这时你就不要再问别的了),'我想我们已经把所有需要的信息都澄清了,让我们写代码实现吧'
+在白板上先写下你的算法要做的事情列表。这样做,你往往能在开始写代码前就发现 bug 和缺陷(不过你可得掌握好时间)。我犯过的一个错误是我花了过多的时间在澄清问题和头脑风暴上,最后几乎没有留下时间给我写代码。你的面试官可能没有机会看你在白板上写下代码,这可太糟了。你可以带块手表,或者房间有钟的话,你也可以抬头看看时间。有些时候面试者会提醒你你已经得到了所有的信息(这时你就不要再问别的了),“我想我们已经把所有需要的信息都澄清了,让我们写代码实现吧”。
-#### 2\. 开始写代码,一气呵成
+#### 2、 开始写代码,一气呵成
-如果你还没有得到问题的完美解决方法,从最原始的解法开始总的可以的。当你在向面试官解释最显而易见的解法时,你要想想怎么去完善它,并指明这种做法是最原始,未加优化的。(请熟悉算法中的O()的概念,这对面试非常有用。)在向面试者提交前请仔细检查你的解决方案两三遍。面试者有时会给你些提示, ‘还有更好的方法吗?’,这句话的意思是面试官提示你有更优化的解决方案。
+如果你还没有得到问题的完美解决方法,从最原始的解法开始总是可以的。当你在向面试官解释最显而易见的解法时,你要想想怎么去完善它,并指明这种做法是最原始的,未加优化的。(请熟悉算法中的 `O()` 的概念,这对面试非常有用。)在向面试者提交前请仔细检查你的解决方案两三遍。面试者有时会给你些提示, “还有更好的方法吗?”,这句话的意思是面试官提示你有更优化的解决方案。
-#### 3\. 错误处理
+#### 3、 错误处理
-当你在编码时,对你想做错误处理的代码行做个注释。当面试者说,'很好,这里你想到了错误处理。你想怎么处理呢?抛出异常还是返回错误码?',这将给你个机会去引出关于代码质量的一番讨论。当然,这种地方提出几个就够了。有时,面试者为了节省编码的时间,会告诉你可以假设外界输入的参数都已经通过了校验。不管怎样,你都要展现你对错误处理和编码质量的重要性的认识。
+当你在编码时,对你想做错误处理的代码行做个注释。当面试者说,“很好,这里你想到了错误处理。你想怎么处理呢?抛出异常还是返回错误码?”,这将给你个机会去引出关于代码质量的一番讨论。当然,这种地方提出几个就够了。有时,面试者为了节省编码的时间,会告诉你可以假设外界输入的参数都已经通过了校验。不管怎样,你都要展现你对错误处理和编码质量的重要性的认识。
-#### 4\. 测试
+#### 4、 测试
-在编码完成后,用你在前面头脑风暴中写的用例来在你脑子里“跑”一下你的代码,确定万无一失。例如你可以说,‘让我用前面写下的树的例子来跑一下我的代码,如果是一个节点是什么结果,如果是两个节点是什么结果。。。’
+在编码完成后,用你在前面头脑风暴中写的用例来在你脑子里“跑”一下你的代码,确定万无一失。例如你可以说,“让我用前面写下的树的例子来跑一下我的代码,如果是一个节点是什么结果,如果是两个节点是什么结果……”
在你结束之后,面试者有时会问你你将会怎么测试你的代码,你会涉及什么样的测试用例。我建议你用下面不同的分类来组织你的错误用例:
@@ -83,7 +79,7 @@
2. 错误用例
3. 期望的正常用例
-对于性能测试,要考虑极端数量下的情况。例如,如果问题是关于列表的,你可以说你将会使用一个非常大的列表以及的非常小的列表来测试。如果和数字有关,你将会测试系统中的最大整数和最小整数。我建议读一些有关软件测试的书来得到更多的知识。在这个领域我最喜欢的书是[How We Test Software at Microsoft][3]。
+对于性能测试,要考虑极端数量下的情况。例如,如果问题是关于列表的,你可以说你将会使用一个非常大的列表以及的非常小的列表来测试。如果和数字有关,你将会测试系统中的最大整数和最小整数。我建议读一些有关软件测试的书来得到更多的知识。在这个领域我最喜欢的书是 《[我们在微软如何测试软件][3]》。
对于错误用例,想一下什么是期望的错误情况并一一写下。
@@ -91,50 +87,45 @@
### “你还有什么要问我的吗?”
-面试最后总是会留几分钟给你问问题。我建议你在面试前写下你想问的问题。千万别说,‘我没什么问题了’,就算你觉得面试砸了或者你对这间公司不怎么感兴趣,你总有些东西可以问问。你甚至可以问面试者他最喜欢自己的工作什么,最讨厌自己的工作什么。或者你可以问问面试官的工作具体是什么,在用什么技术和实践。不要因为觉得自己在面试中做的不好而心灰意冷,不想问什么问题。
+面试最后总是会留几分钟给你问问题。我建议你在面试前写下你想问的问题。千万别说,“我没什么问题了”,就算你觉得面试砸了或者你对这间公司不怎么感兴趣,你总有些东西可以问问。你甚至可以问面试者他最喜欢自己的工作什么,最讨厌自己的工作什么。或者你可以问问面试官的工作具体是什么,在用什么技术和实践。不要因为觉得自己在面试中做的不好而心灰意冷,不想问什么问题。
### 申请一份工作
-
-关于找工作申请工作,有人曾经告诉我,你应该去找你真正有激情工作的地方。去找一家你喜欢的公司,或者你喜欢使用的产品,看看你能不能去那儿工作。
+关于找工作和申请工作,有人曾经告诉我,你应该去找你真正有激情工作的地方。去找一家你喜欢的公司,或者你喜欢使用的产品,看看你能不能去那儿工作。
我个人并不推荐你用上述的方法去找工作。你会排除很多很好的公司,特别是你是在找实习工作或者入门级的职位时。
-你也可以集中在其他的一些目标上。如:我想从这个工作里得到哪方面的更多经验?这个工作是关于云计算?Web开发?或是人工智能?当在招聘会上与招聘公司沟通是,看看他们的工作单位有没有在这些领域的。你可能会在一家并非在你的想去公司列表上的公司(或非盈利机构)里找到你想找的职位。
+你也可以集中在其他的一些目标上。如:我想从这个工作里得到哪方面的更多经验?这个工作是关于云计算?Web 开发?或是人工智能?当在招聘会上与招聘公司沟通时,看看他们的工作单位有没有在这些领域的。你可能会在一家并非在你的想去公司列表上的公司(或非盈利机构)里找到你想找的职位。
#### 换组
-在这家公司里的第一个组里呆了一年半以后,我觉得是时候去探索一下不同的东西了。我找到了一个我喜欢的组并进行了4轮面试。结果我搞砸了。
-
-
-我什么都没有准备,甚至都没在白板上练练手。我当时的逻辑是,如果我都已经在一家公司干了快2年了,我还需要练什么?我完全错了,我在接下去的白板面试中跌跌撞撞。我的板书写得太小,而且因为没有从最左上角开始写代码,我的代码大大超出了一个白板的空间,这些都导致了白板面试失败。
+在这家公司里的第一个组里呆了一年半以后,我觉得是时候去探索一下不同的东西了。我找到了一个我喜欢的组并进行了 4 轮面试。结果我搞砸了。
+我什么都没有准备,甚至都没在白板上练练手。我当时的逻辑是,如果我都已经在一家公司干了快 2 年了,我还需要练什么?我完全错了,我在接下去的白板面试中跌跌撞撞。我的板书写得太小,而且因为没有从最左上角开始写代码,我的代码大大超出了一个白板的空间,这些都导致了白板面试失败。
我在面试前也没有刷过数据结构和算法题。如果我做了的话,我将会在面试中更有信心。就算你已经在一家公司担任了软件工程师,在你去另外一个组面试前,我强烈建议你在一块白板上演练一下如何写代码。
+对于换项目组这件事,如果你是在公司内部换组的话,事先能同那个组的人非正式聊聊会很有帮助。对于这一点,我发现几乎每个人都很乐于和你一起吃个午饭。人一般都会在中午有空,约不到人或者别人正好有会议冲突的风险会很低。这是一种非正式的途径来了解你想去的组正在干什么,以及这个组成员个性是怎么样的。相信我,你能从一次午餐中得到很多信息,这可会对你的正式面试帮助不小。
-对于换项目组这件事,如果你是在公司内部换组的话,事先能同那个组的人非正式聊聊会很有帮助。对于这一点,我发现几乎每个人都很乐于和你一起吃个午饭。人一般都会在中午有空,约不到人或者别人正好有会议冲突的风险会很低。这是一种非正式的途径来了解你想去的组正在干什么,以及这个组成员个性是怎么样的。相信我, 你能从一次午餐中得到很多信息,这可会对你的正式面试帮助不小。
+非常重要的一点是,你在面试一个特定的组时,就算你在面试中做的很好,因为文化不契合的原因,你也很可能拿不到 offer。这也是为什么我一开始就想去见见组里不同的人的原因(有时这也不太可能),我希望你不要被一次拒绝所击倒,请保持开放的心态,选择新的机会,并多多练习。
-非常重要的一点是,你在面试一个特定的组时,就算你在面试中做的很好,因为文化不契合的原因,你也很可能拿不到offer。这也是为什么我一开始就想去见见组里不同的人的原因(有时这也不太可能),我希望你不要被一次拒绝所击倒,请保持开放的心态,选择新的机会,并多多练习。
-
-
-以上内容来自["Programming interviews"][4] 章节,选自 [The Women in Tech Show: Technical Interviews with Prominent Women in Tech][5]
+以上内容选自 《[The Women in Tech Show: Technical Interviews with Prominent Women in Tech][5]》的 “[编程面试][4]”章节,
--------------------------------------------------------------------------------
作者简介:
-微软研究院Software Engineer II, www.thewomenintechshow.com站长,所有观点都只代表本人意见。
+微软研究院 Software Engineer II, www.thewomenintechshow.com 站长,所有观点都只代表本人意见。
------------
via: https://medium.freecodecamp.org/what-i-learned-from-programming-interviews-29ba49c9b851
-作者:[Edaena Salinas ][a]
-译者:DavidChenLiang (https://github.com/DavidChenLiang)
-校对:[校对者ID](https://github.com/校对者ID)
+作者:[Edaena Salinas][a]
+译者:[DavidChenLiang](https://github.com/DavidChenLiang)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20180518 Mastering CI-CD at OpenDev.md b/published/20180518 Mastering CI-CD at OpenDev.md
new file mode 100644
index 0000000000..5418e196e9
--- /dev/null
+++ b/published/20180518 Mastering CI-CD at OpenDev.md
@@ -0,0 +1,53 @@
+在 OpenDev 大会上学习 CI/CD
+======
+> 未来的开发工作需要非常精通 CI/CD 流程。
+
+![在OpenDev上,掌握CI/CD](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_opennature_3.png?itok=J1OSECM_)
+
+在 2017 年启动后,OpenDev 大会现在已是一个年度活动。在去年 9 月的首届活动上,会议的重点是边缘计算。今年的活动,于 5 月 22 - 23 日举行,会议的重点是持续集成和持续发布 (CI/CD),并与 OpenStack 峰会一起在温哥华举行。
+
+基于我在 OpenStack 项目的 CI/CD 系统的技术背景和我近期进入容器下的 CI/CD 方面的经验,我被邀请加入 OpenDev CI/CD 计划委员会。今天我经常借助很多开源技术,例如 [Jenkins][3]、[GitLab][2]、[Spinnaker][4] 和 [Artifactory][5] 来讨论 CI/CD 流程。
+
+这次活动对我来说是很激动人心的,因为我们将在这个活动中融合两个开源基础设施理念。首先,我们将讨论可以被任何组织使用的 CI/CD 工具。为此目的,在 [讲演][6] 中,我们将听到关于开源 CI/CD 工具的使用讲演,一场来自 Boris Renski 的关于 Spinnaker 的讲演,和一场来自 Jim Blair 的关于 [Zuul][7] 的讲演。同时,讲演会涉及关于开源技术的偏好的高级别话题,特别是那种跨社区的和本身就是开源项目的。从Fatih Degirmenci 和 Daniel Farrel 那里,我们将听到关于在不同社区分享持续发布实践经历,接着 Benjamin Mako Hill 会为我们带来一场关于为什么自由软件需要自由工具的分享。
+
+在分享 CI/CD 相对新颖的特性后,接下来的活动是对话、研讨会和协作讨论的混合组合。当从人们所提交的讲座和研讨会中进行选择,并提出协作讨论主题时,我们希望确保有一个多样灵活的日程表,这样任何参与者都能在 CI/CD 活动进程中发现有趣的东西。
+
+这些讲座会是标准的会议风格,选择涵盖关键主题,如制定 CI/CD 流程,在实践 DevOps 时提升安全性,以及更具体的解决方案,如基于容器关于 Kubernetes 的 [Aptomi][8] 和在 ETSI NFV 环境下 CI/CD。这些会话的大部分将会是作为给新接触 CI/CD 或这些特定技术的参与者关于这些话题和理念的简介。
+
+交互式的研讨会会持续相对比较长的时间,参与者将会在思想上得到特定的体验。这些研讨会包括 “[在持续集成任务中的异常检测][9]”、“[如何安装 Zuul 和配置第一个任务][10]”,和“[Spinnake 101:快速可靠的软件发布][11]”。(注意这些研讨会空间是有限的,所以设立了一个 RSVP 系统。你们将会在会议的链接里找到一个 RSVP 的按钮。)
+
+可能最让我最兴奋的是协作讨论,这些协作讨论占据了一半以上的活动安排。协作讨论的主题由计划委员会选取。计划委员会根据我们在社区里所看到来选取对应的主题。这是“鱼缸”风格式的会议,通常是几个人聚在一个房间里围绕着 CI/CD 讨论某一个主题。
+
+这次会议风格的理念是来自于开发者峰会,最初是由 Ubuntu 社区提出,接着 OpenStack 社区也在活动上采纳。这些协作讨论的主题包含不同的会议,这些会议是关于 CI/CD 基础,可以鼓励跨社区协作的提升举措,在组织里推行 CI/CD 文化,和为什么开源 CI/CD 工具如此重要。采用共享文档来做会议笔记,以确保尽可能的在会议的过程中分享知识。在讨论过程中,提出行动项目也是很常见的,因此社区成员可以推动和所涉及的主题相关的倡议。
+
+活动将以联合总结会议结束。联合总结会议将总结来自协同讨论的关键点和为即将在这个领域工作的参与者指出可选的职业范围。
+
+可以在 [OpenStack 峰会注册页][13] 上注册参加活动。或者可以在温哥华唯一指定售票的会议中心购买活动的入场券,价格是 $199。更多关于票和全部的活动安排见官网 [OpenDev 网站][1]。
+
+我希望你们能够加入我们,并在温哥华渡过令人激动的两天,并且在这两天的活动中学习,协作和在 CI/CD 取得进展。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/5/opendev
+
+作者:[Elizabeth K.Joseph][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[jamelouis](https://github.com/jamelouis)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://opensource.com/users/pleia2
+[1]:http://2018.opendevconf.com/
+[2]:https://about.gitlab.com/
+[3]:https://jenkins.io/
+[4]:https://www.spinnaker.io/
+[5]:https://jfrog.com/artifactory/
+[6]:http://2018.opendevconf.com/schedule/
+[7]:https://zuul-ci.org/
+[8]:http://aptomi.io/
+[9]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21692/anomaly-detection-in-continuous-integration-jobs
+[10]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21693/how-to-install-zuul-and-configure-your-first-jobs
+[11]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21699/spinnaker-101-releasing-software-with-velocity-and-confidence
+[12]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21831/opendev-cicd-joint-collab-conclusion
+[13]:https://www.eventbrite.com/e/openstack-summit-may-2018-vancouver-tickets-40845826968?aff=VancouverSummit2018
diff --git a/published/20180720 How to build a URL shortener with Apache.md b/published/20180720 How to build a URL shortener with Apache.md
new file mode 100644
index 0000000000..8fc2d473d1
--- /dev/null
+++ b/published/20180720 How to build a URL shortener with Apache.md
@@ -0,0 +1,77 @@
+如何使用 Apache 构建 URL 缩短服务
+======
+> 用 Apache HTTP 服务器的 mod_rewrite 功能创建你自己的短链接。
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/openweb-osdc-lead.png?itok=yjU4KliG)
+
+很久以前,人们开始在 Twitter 上分享链接。140 个字符的限制意味着 URL 可能消耗一条推文的大部分(或全部),因此人们使用 URL 缩短服务。最终,Twitter 加入了一个内置的 URL 缩短服务([t.co][1])。
+
+字符数现在不重要了,但还有其他原因要缩短链接。首先,缩短服务可以提供分析功能 —— 你可以看到你分享的链接的受欢迎程度。它还简化了制作易于记忆的 URL。例如,[bit.ly/INtravel][2] 比更容易记住。如果你想预先共享一个链接,但还不知道最终地址,这时 URL 缩短服务可以派上用场。。
+
+与任何技术一样,URL 缩短服务并非都是正面的。通过屏蔽最终地址,缩短的链接可用于指向恶意或冒犯性内容。但是,如果你仔细上网,URL 缩短服务是一个有用的工具。
+
+我们之前在网站上[发布过缩短服务的文章][3],但也许你想要运行一些由简单的文本文件支持的缩短服务。在本文中,我们将展示如何使用 Apache HTTP 服务器的 mod_rewrite 功能来设置自己的 URL 缩短服务。如果你不熟悉 Apache HTTP 服务器,请查看 David Both 关于[安装和配置][4]它的文章。
+
+### 创建一个 VirtualHost
+
+在本教程中,我假设你购买了一个很酷的域名,你将它专门用于 URL 缩短服务。例如,我的网站是 [funnelfiasco.com][5],所以我买了 [funnelfias.co][6] 用于我的 URL 缩短服务(好吧,它不是很短,但它可以满足我的虚荣心)。如果你不将缩短服务作为单独的域运行,请跳到下一部分。
+
+第一步是设置将用于 URL 缩短服务的 VirtualHost。有关 VirtualHost 的更多信息,请参阅 [David Both 的文章][7]。这步只需要几行:
+
+```
+
+ ServerName funnelfias.co
+
+```
+
+### 创建重写规则
+
+此服务使用 HTTPD 的重写引擎来重写 URL。如果你在上面的部分中创建了 VirtualHost,则下面的配置跳到你的 VirtualHost 部分。否则跳到服务器的 VirtualHost 或主 HTTPD 配置。
+
+```
+ RewriteEngine on
+ RewriteMap shortlinks txt:/data/web/shortlink/links.txt
+ RewriteRule ^/(.+)$ ${shortlinks:$1} [R=temp,L]
+```
+
+第一行只是启用重写引擎。第二行在文本文件构建短链接的映射。上面的路径只是一个例子。你需要使用系统上使用有效路径(确保它可由运行 HTTPD 的用户帐户读取)。最后一行重写 URL。在此例中,它接受任何字符并在重写映射中查找它们。你可能希望重写时使用特定的字符串。例如,如果你希望所有缩短的链接都是 “slX”(其中 X 是数字),则将上面的 `(.+)` 替换为 `(sl\d+)`。
+
+我在这里使用了临时重定向(HTTP 302)。这能让我稍后更新目标 URL。如果希望短链接始终指向同一目标,则可以使用永久重定向(HTTP 301)。用 `permanent` 替换第三行的 `temp`。
+
+### 构建你的映射
+
+编辑配置文件 `RewriteMap` 行中的指定文件。格式是空格分隔的键值存储。在每一行上放一个链接:
+
+```
+ osdc https://opensource.com/users/bcotton
+ twitter https://twitter.com/funnelfiasco
+ swody1 https://www.spc.noaa.gov/products/outlook/day1otlk.html
+```
+
+### 重启 HTTPD
+
+最后一步是重启 HTTPD 进程。这是通过 `systemctl restart httpd` 或类似命令完成的(命令和守护进程名称可能因发行版而不同)。你的链接缩短服务现已启动并运行。当你准备编辑映射时,无需重新启动 Web 服务器。你所要做的就是保存文件,Web 服务器将获取到差异。
+
+### 未来的工作
+
+此示例为你提供了基本的 URL 缩短服务。如果你想将开发自己的管理接口作为学习项目,它可以作为一个很好的起点。或者你可以使用它分享容易记住的链接到那些容易忘记的 URL。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/7/apache-url-shortener
+
+作者:[Ben Cotton][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://opensource.com/users/bcotton
+[1]:http://t.co
+[2]:http://bit.ly/INtravel
+[3]:https://opensource.com/article/17/3/url-link-shortener
+[4]:https://opensource.com/article/18/2/how-configure-apache-web-server
+[5]:http://funnelfiasco.com
+[6]:http://funnelfias.co
+[7]:https://opensource.com/article/18/3/configuring-multiple-web-sites-apache
diff --git a/published/20180804 Installing Andriod on VirtualBox.md b/published/20180804 Installing Andriod on VirtualBox.md
new file mode 100644
index 0000000000..5f69eee83a
--- /dev/null
+++ b/published/20180804 Installing Andriod on VirtualBox.md
@@ -0,0 +1,162 @@
+在 VirtualBox 中安装 Android 系统
+======
+
+如果你正在开发 Android 应用,也许会遇到小麻烦。诚然,ios 移动开发有 macOS 系统平台为其提供友好便利性, Android 开发仅有支持少部分 Android 系统(其中还包括可穿戴设备系统)的 Android Studio 工具。
+
+毋庸置疑,所有的二进制工具、SDK 工具、开发框架工具以及调试器都会产生大量日志和其他各种文件,使得你的文件系统很混乱。一个有效的解决方法就是在 VirtualBox 中安装 Android 系统,这样还解决了 Android 开发中最为棘手问题之一 —— 设备模拟器。你可以在该虚拟机里测试应用程序,也可以使用 Android 的内部功能。因此,让我们迫不及待的开始吧!
+
+### 准备工作
+
+首先,你需要在你的系统上安装 VirtualBox,可从[这里][1]下载 Windows 版本、macOS 版本或者各种 Linux 版本的 VitualBox。然后,你需要一个能在 x86 平台运行的 Android 镜像,因为 VirtualBox 为虚拟机提供运行 x86 或者 x86\_64(即 AMD64)平台的功能。
+
+虽然大部分 Android 设备都在 ARM 上运行,但我们依然可以从 [Android on x86 项目][2] 中获得帮助。这些优秀的开发者已经将 Android 移植到 x86 平台上运行(包括实体机和虚拟机),我们可以下载最新版本的 Android 7.1。你也可以用之前更为稳定的版本,本文写作时最新稳定版是 Android 6.0。
+
+### 创建 VM 虚拟机
+
+打开 VirtualBox,单击左上角的 “新建” 按钮,在弹出的窗口中选择 “类型:Linux” ,然后根据下载的 ISO 镜像来确定版本,x86 对应 “32-bit”,x86_64 对应 “64-bit”,此处选择 “Linux 2.6 / 3.x / 4.x (64-bit)”。
+
+RAM 大小设置为 2 GB 到你系统能提供的最大内存之间。如果你想模拟真实的使用环境你可以设置 6 GB RAM 和 32 GB ROM。
+
+![][3]
+
+![][4]
+
+创建完成后,你还需要做一些设置,添加更多的处理器核心,提高开机显示内存。在 VM 上打开设置选项,“设置 -> 系统 -> 处理器”,如果硬件条件允许,可以多分配一些处理器。
+
+![][5]
+
+在 “设置 -> 显示 -> 显存大小” 中,你可以分配一大块内存并开启 3D 加速功能。
+
+![][6]
+
+现在我们可以启动 VM 虚拟机了。
+
+### 安装 Android
+
+首次启动 VM 虚拟机,VirtualBox 会提示你需要提供启动媒介,选择之前下载好的Android 镜像。
+
+![][7]
+
+下一步,如果想长时间使用 Android,选择 “Installation” 选项,你也可以选择 Live 模式体验 Android 环境。
+
+![][8]
+
+按回车键。
+
+#### 分区
+
+分区是通过文本界面操作,并没有友好的 GUI 界面,所以每个操作都需要小心对待。例如,在第一屏中还没有创建分区并且只检测到原始(虚拟)硬盘时显示如下。
+
+![][9]
+
+红色字母 `C` 和 `D` 表明 `C` 开头选项可以创建或者修改分区,`D` 开头选项可以检测设备。你可以选择 `D` 开头选项,然后它就会检测硬盘,也可不进行这步操作,因为在启动的时候它会自动检测。
+
+我们选择 `C` 开头选项,在虚拟盘中创建分区。官方不推荐使用 GPT 格式,所以我们选择 “No” 并按回车键。
+
+![][10]
+
+现在你被引导到 fdisk 工具页面。
+
+![][11]
+
+为了简洁起见,我们就只创建一个较大的分区,使用方向键来选择 “New” ,然后选择 “Primary”,按回车键以确认。
+
+![][12]
+
+分区大小系统已经为你计算好了,按回车键确认。
+
+![][13]
+
+这个分区就是 Android 系统所在的分区,所以需要它是可启动的。选择 “Bootable”,然后按回车键(上方表格中 “Flags” 标志下面会出现 “boot” 标志),进一步,选择 “Write” 选项,保存刚才的操作记录并写入分区表。
+
+![][14]
+
+现在你可以选择退出分区工具,然后继续安装过程。
+
+![][15]
+
+#### 文件系统格式化为 EXT4 并安装 Android
+
+在“Choose Partition”分区页面上会出现一个刚刚我们创建的分区,选择它并点击“OK”进入。
+
+![][16]
+
+在下一个菜单中选择 Ext4 作为实际的文件系统,在下一页中选择 “Yes” 然后格式化开始。会提示是否安装 GRUB 引导工具以及是否允许在目录 `/system` 进行读写,都选择 “Yes” 。现在,安装进程开始。
+
+安装完成后,当系统提示可以重启的时候你可以安全地重启系统。在重启之前,你可以先关机,然后在 VitualBox 的 “设置 -> 存储” 中检查 Android iso 镜像是否还连接在虚拟机上,如果在,将它移除。
+
+![][17]
+
+移除安装媒介并保存修改,再去启动 VM 虚拟机。
+
+#### 运行 Android
+
+在 GRUB 引导界面,有调试模式和普通模式的选项。我们选择默认选项,如下图所示。
+
+![][18]
+
+如果一切正常,你将会看到如下界面:
+
+![][19]
+
+如今的 Android 系统使用触摸交互而不是鼠标。不过 Android-x86 平台提供了鼠标操作支持,但开始时可能需要方向键来辅助操作。
+
+![][20]
+
+移动到”let’s go“按钮并按下回车键。选择 “Set up as new” 选项,回车确认。
+
+![][21]
+
+在提示用谷歌账户登陆之前,系统检查更新并检测设备信息。你可以跳过这一步,直接去设置日期和时间、用户名等。
+
+还有一些其他的选项,和让你设置一个新的 Android 设备类似。选择 “I Agree” 选项同意有关更新、服务等的相应的选项,当然谷歌的服务条款是不得不同意的。
+
+![][22]
+
+在这之后,因为它是个虚拟机,所以可能需要添加额外的 email 账户来设置 “On-body detection”,大部分的选项对我们来说都没有多大作用,因此可以选择 ”All Set“。
+
+接下来,它会提示你选择主屏应用,这个根据个人需求选择。现在我们进入了一个虚拟的 Android 系统。
+
+![][23]
+
+如果你需要在 VM 做一些交互测试,有个可触摸屏幕会提供很大的方便,因为那样才更接近真实使用环境。
+
+希望这篇教程会给你带来帮助。
+
+--------------------------------------------------------------------------------
+
+via: https://linuxhint.com/install_android_virtualbox/
+
+作者:[Ranvir Singh][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[jrglinux](https://github.com/jrglinux)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://linuxhint.com/author/sranvir155/
+[1]:https://www.virtualbox.org/wiki/Downloads
+[2]:http://www.android-x86.org/
+[3]:https://linuxhint.com/wp-content/uploads/2018/08/a.png
+[4]:https://linuxhint.com/wp-content/uploads/2018/08/a1.png
+[5]:https://linuxhint.com/wp-content/uploads/2018/08/a2.png
+[6]:https://linuxhint.com/wp-content/uploads/2018/08/a3.png
+[7]:https://linuxhint.com/wp-content/uploads/2018/08/a4.png
+[8]:https://linuxhint.com/wp-content/uploads/2018/08/a5.png
+[9]:https://linuxhint.com/wp-content/uploads/2018/08/a6.png
+[10]:https://linuxhint.com/wp-content/uploads/2018/08/a7.png
+[11]:https://linuxhint.com/wp-content/uploads/2018/08/a8.png
+[12]:https://linuxhint.com/wp-content/uploads/2018/08/a9.png
+[13]:https://linuxhint.com/wp-content/uploads/2018/08/a10.png
+[14]:https://linuxhint.com/wp-content/uploads/2018/08/a11.png
+[15]:https://linuxhint.com/wp-content/uploads/2018/08/a12.png
+[16]:https://linuxhint.com/wp-content/uploads/2018/08/a13.png
+[17]:https://linuxhint.com/wp-content/uploads/2018/08/a14.png
+[18]:https://linuxhint.com/wp-content/uploads/2018/08/a16.png
+[19]:https://linuxhint.com/wp-content/uploads/2018/08/a17.png
+[20]:https://linuxhint.com/wp-content/uploads/2018/08/a18.png
+[21]:https://linuxhint.com/wp-content/uploads/2018/08/a19.png
+[22]:https://linuxhint.com/wp-content/uploads/2018/08/a20.png
+[23]:https://linuxhint.com/wp-content/uploads/2018/08/a21.png
+
+
diff --git a/translated/tech/20180808 5 applications to manage your to-do list on Fedora.md b/published/20180808 5 applications to manage your to-do list on Fedora.md
similarity index 58%
rename from translated/tech/20180808 5 applications to manage your to-do list on Fedora.md
rename to published/20180808 5 applications to manage your to-do list on Fedora.md
index dbd9aac972..99a163bf4f 100644
--- a/translated/tech/20180808 5 applications to manage your to-do list on Fedora.md
+++ b/published/20180808 5 applications to manage your to-do list on Fedora.md
@@ -3,46 +3,45 @@
![](https://fedoramagazine.org/wp-content/uploads/2018/08/todoapps-816x345.jpg)
-有效管理待办事项可以为你的工作效率创造奇迹。有些人更喜欢在文本中保存待办事项,甚至只使用记事本和笔。对于需要更多待办事项功能的用户,他们通常会使用应用程序。在本文中,我们将重点介绍 4 个图形程序和一个基于终端的工具来管理待办事项。
+有效管理待办事项(to-do)可以为你的工作效率创造奇迹。有些人更喜欢在文本中保存待办事项,甚至只使用记事本和笔。对于需要更多待办事项功能的用户,他们通常会使用应用程序。在本文中,我们将重点介绍 4 个图形程序和一个基于终端的工具来管理待办事项。
### GNOME To Do
-GNOME To Do][1] 是专为 GNOME 桌面(Fedora Workstation 的默认桌面)设计的个人任务管理器。将 GNOME To Do 与其他程序进行比较时,它有一系列简洁的功能。
+[GNOME To Do][1] 是专为 GNOME 桌面(Fedora Workstation 的默认桌面)设计的个人任务管理器。GNOME To Do 与其他程序进行比较,它有一系列简洁的功能。
-GNOME To Do 提供列表形式的任务组织,并能为该列表指定颜色。此外,可以为各个任务分配截止日期和优先级,以及每项任务的注释。此外,GNOME To Do 还支持扩展,能添加更多功能,包括支持 [todo.txt][2] 以及与 [todoist][3] 等在线服务同步。
+GNOME To Do 提供列表形式的任务组织方式,并能为该列表指定颜色。此外,可以为各个任务分配截止日期和优先级,以及每项任务的注释。此外,GNOME To Do 还支持扩展,能添加更多功能,包括支持 [todo.txt][2] 以及与 [todoist][3] 等在线服务同步。
![][4]
使用软件中心或者在终端中使用下面的命令安装 GNOME To Do:
+
```
sudo dnf install gnome-todo
-
```
### Getting things GNOME!
-、在 GNOME To Do 存在之前,在 GNOME 上追踪任务的首选程序是 [Getting things GNOME!][5] 这个稍来的 GNOME 程序有多个窗口层,能然你同时显示多个任务的细节。GTG 没有任务列表,它能在任务中添加子任务,甚至在子任务中添加子任务。GTG 同样能添加截止日期和开始日期。通过插件同步其他程序和服务也是可能的。
+在 GNOME To Do 出现之前,在 GNOME 上追踪任务的首选程序是 [Getting things GNOME!][5] 这个老式的 GNOME 程序采用多窗口布局,能让你同时显示多个任务的细节。GTG 没有任务列表,它能在任务中添加子任务,甚至在子任务中添加子任务。GTG 同样能添加截止日期和开始日期。也可以通过插件同步其他程序和服务。
![][6]
在软件中心或者在终端中使用下面的命令安装 Getting Things GNOME:
+
```
sudo dnf install gtg
-
```
### Go For It!
-[Go For It!][7] 是一个超级简单的任务管理程序。它能简单地创建一个任务列表,并在完成后标记它们。它没有组任务,也不能创建子任务。默认 Go For It! 将任务存储在 todo.txt 中,这能更方便地同步到在线服务或者其他程序中。额外地,Go For It! 包含了一个简单定时器来追踪你在当前任务花费了多少时间。
+[Go For It!][7] 是一个超级简单的任务管理程序。它能简单地创建一个任务列表,并在完成后标记它们。它不能将任务分组,也不能创建子任务。Go For It! 默认将任务存储为 todo.txt 格式,这能更方便地同步到在线服务或者其他程序中。额外地,Go For It! 包含了一个简单定时器来追踪你在当前任务花费了多少时间。
![][8]
-Go For It 能在 Flathub 应用仓库中找到。要安装它,只需[启用 Flathub 作为软件源][9],接着在软件中心中安装。
-
+Go For It! 能在 Flathub 应用仓库中找到。要安装它,只需[启用 Flathub 作为软件源][9],接着在软件中心中安装。
### Agenda
-如果你在寻找一款非常简单的待办应用,[Agenda][10] 非常合适。创建任务,标记完成,接着从列表中删除它们。Agenda 会在你删除它们之前显示所有任务(完成或者进行中)。
+如果你在寻找一款非常简单的待办应用,非 [Agenda][10] 莫属。创建任务,标记完成,接着从列表中删除它们。Agenda 会在你删除它们之前一直显示所有任务(完成的或者进行中)。
![][11]
@@ -57,12 +56,11 @@ Agenda 能从 Flathub 应用仓库下载。要安装它,只需[启用 Flathub
![][14]
在终端中使用这个命令安装 Taskwarrior:
+
```
sudo dnf install task
-
```
-
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/5-tools-to-manage-your-to-do-list-on-fedora/
@@ -70,7 +68,7 @@ via: https://fedoramagazine.org/5-tools-to-manage-your-to-do-list-on-fedora/
作者:[Ryan Lerch][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@@ -88,4 +86,4 @@ via: https://fedoramagazine.org/5-tools-to-manage-your-to-do-list-on-fedora/
[11]:https://fedoramagazine.org/wp-content/uploads/2018/08/agenda.png
[12]:https://taskwarrior.org/
[13]:https://fedoramagazine.org/getting-started-taskwarrior/
-[14]:https://fedoramagazine.org/wp-content/uploads/2018/08/taskwarrior.png
\ No newline at end of file
+[14]:https://fedoramagazine.org/wp-content/uploads/2018/08/taskwarrior.png
diff --git a/translated/tech/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md b/published/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md
similarity index 71%
rename from translated/tech/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md
rename to published/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md
index ce4a4c2b08..9eff0b65d3 100644
--- a/translated/tech/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md
+++ b/published/20180829 Add GUIs to your programs and scripts easily with PySimpleGUI.md
@@ -1,31 +1,33 @@
使用 PySimpleGUI 轻松为程序和脚本增加 GUI
======
+> 五分钟创建定制 GUI。
+
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/web_browser_desktop_devlopment_design_system_computer.jpg?itok=pfqRrJgh)
-对于 `.exe` 类型的程序文件,我们可以通过双击鼠标左键打开;但对于 `.py` 类型的 Python 程序,几乎不会有人尝试同样的操作。对于一个(非程序员类型的)典型用户,他们双击打开 `.exe` 文件时预期弹出一个可以交互的窗体。基于 `Tkinter`,可以通过标准 Python 安装的方式提供 GUI,但很多程序都不太可能这样做。
+对于 `.exe` 类型的程序文件,我们可以通过双击鼠标左键打开;但对于 `.py` 类型的 Python 程序,几乎不会有人尝试同样的操作。对于一个(非程序员类型的)典型用户,他们双击打开 `.exe` 文件时预期弹出一个可以交互的窗体。基于 Tkinter,可以通过标准 Python 安装的方式提供 GUI,但很多程序都不太可能这样做。
如果打开 Python 程序并进入 GUI 界面变得如此容易,以至于真正的初学者也可以掌握,会怎样呢?会有人感兴趣并使用吗?这个问题不好回答,因为直到今天创建自定义 GUI 布局仍不是件容易的事情。
-在为程序或脚本增加 GUI 这件事上,似乎存在能力的“错配”。(缺乏这方面能力的)真正的初学者被迫只能使用命令行方式,而很多(具备这方面能力的)高级程序员却不愿意花时间创建一个 `Tkinter` GUI。
+在为程序或脚本增加 GUI 这件事上,似乎存在能力的“错配”。(缺乏这方面能力的)真正的初学者被迫只能使用命令行方式,而很多(具备这方面能力的)高级程序员却不愿意花时间创建一个 Tkinter GUI。
### GUI 框架
-Python 的 GUI 框架并不少,其中 `Tkinter`,`wxPython`,`Qt` 和 `Kivy` 是几种比较主流的框架。此外,还有不少在上述框架基础上封装的简化框架,例如 `EasyGUI`,`PyGUI` 和 `Pyforms` 等。
+Python 的 GUI 框架并不少,其中 Tkinter,wxPython,Qt 和 Kivy 是几种比较主流的框架。此外,还有不少在上述框架基础上封装的简化框架,例如 EasyGUI,PyGUI 和 Pyforms 等。
但问题在于,对于初学者(这里是指编程经验不超过 6 个月的用户)而言,即使是最简单的主流框架,他们也无从下手;他们也可以选择封装过的(简化)框架,但仍难以甚至无法创建自定义 GUI 布局。即便学会了某种(简化)框架,也需要编写连篇累牍的代码。
-[`PySimpleGUI`][1] 尝试解决上述 GUI 难题,它提供了一种简单明了、易于理解、方便自定义的 GUI 接口。如果使用 `PySimpleGUI`,很多复杂的 GUI 也仅需不到 20 行代码。
+[PySimpleGUI][1] 尝试解决上述 GUI 难题,它提供了一种简单明了、易于理解、方便自定义的 GUI 接口。如果使用 PySimpleGUI,很多复杂的 GUI 也仅需不到 20 行代码。
### 秘诀
-`PySimpleGUI` 极为适合初学者的秘诀在于,它已经包含了绝大多数原本需要用户编写的代码。`PySimpleGUI` 处理按钮回调,无需用户编写代码。对于初学者,在几周内掌握函数的概念已经不容易了,要求其理解回调函数似乎有些强人所难。
+PySimpleGUI 极为适合初学者的秘诀在于,它已经包含了绝大多数原本需要用户编写的代码。PySimpleGUI 会处理按钮回调,无需用户编写代码。对于初学者,在几周内掌握函数的概念已经不容易了,要求其理解回调函数似乎有些强人所难。
-在大部分 GUI 框架中,布局 GUI 小部件通常需要写一些代码,每个小部件至少 1-2 行。`PySimpleGUI` 使用了“auto-packer”技术,可以自动创建布局。因而,布局 GUI 窗口不再需要 `pack` 或 `grid` 系统。
+在大部分 GUI 框架中,布局 GUI 小部件通常需要写一些代码,每个小部件至少 1-2 行。PySimpleGUI 使用了 “auto-packer” 技术,可以自动创建布局。因而,布局 GUI 窗口不再需要 pack 或 grid 系统。
-(LCTT 译注:这里提到的 `pack` 和 `grid` 都是 `Tkinter` 的布局管理器,另外一种叫做 `place`)
+(LCTT 译注:这里提到的 pack 和 grid 都是 Tkinter 的布局管理器,另外一种叫做 place 。)
-最后,`PySimpleGUI` 框架编写中有效利用 Python 语言特性,降低用户代码量并简化GUI 数据返回的方式。在窗体布局中创建小部件时,小部件会被部署到对应的布局中,无需额外的代码。
+最后,PySimpleGUI 框架编写中有效地利用了 Python 语言特性,降低用户代码量并简化 GUI 数据返回的方式。在窗体布局中创建小部件时,小部件会被部署到对应的布局中,无需额外的代码。
### GUI 是什么?
@@ -37,13 +39,13 @@ button, values = GUI_Display(gui_layout)
绝大多数 GUI 支持的用户行为包括鼠标点击(例如,“确认”,“取消”,“保存”,“是”和“否”等)和内容输入。GUI 本质上可以归结为一行代码。
-这也正是 `PySimpleGUI` (简单 GUI 模式)的工作原理。当执行命令显示 GUI 后,除非点击鼠标关闭窗体,否则不会执行任何代码。
+这也正是 PySimpleGUI (的简单 GUI 模式)的工作原理。当执行命令显示 GUI 后,除非点击鼠标关闭窗体,否则不会执行任何代码。
-当然还有更复杂的 GUI,其中鼠标点击后窗口并不关闭;例如,机器人的远程控制界面,聊天窗口等。这类复杂的窗体也可以用 `PySimpleGUI` 创建。
+当然还有更复杂的 GUI,其中鼠标点击后窗口并不关闭;例如,机器人的远程控制界面,聊天窗口等。这类复杂的窗体也可以用 PySimpleGUI 创建。
### 快速创建 GUI
-`PySimpleGUI` 什么时候有用呢?显然,是你需要 GUI 的时候。仅需不超过 5 分钟,就可以让你创建并尝试 GUI。最便捷的 GUI 创建方式就是从 [PySimpleGUI 经典实例][2]中拷贝一份代码。具体操作流程如下:
+PySimpleGUI 什么时候有用呢?显然,是你需要 GUI 的时候。仅需不超过 5 分钟,就可以让你创建并尝试 GUI。最便捷的 GUI 创建方式就是从 [PySimpleGUI 经典实例][2]中拷贝一份代码。具体操作流程如下:
* 找到一个与你需求最接近的 GUI
* 从经典实例中拷贝代码
@@ -93,13 +95,14 @@ button, (name,) = form.LayoutAndRead(layout)
### 5 分钟内创建一个自定义 GUI
-在简单布局的基础上,通过修改经典实例中的代码,5 分钟内即可使用 `PySimpleGUI` 创建自定义布局。
+在简单布局的基础上,通过修改经典实例中的代码,5 分钟内即可使用 PySimpleGUI 创建自定义布局。
-在 `PySimpleGUI` 中,小部件被称为元素。元素的名称与编码中使用的名称保持一致。
+在 PySimpleGUI 中,小部件被称为元素。元素的名称与编码中使用的名称保持一致。
-(LCTT 译注:`Tkinter` 中使用小部件这个词)
+(LCTT 译注:Tkinter 中使用小部件这个词)
#### 核心元素
+
```
Text
InputText
@@ -121,7 +124,7 @@ Column
#### 元素简写
-`PySimpleGUI` 还包含两种元素简写方式。一种是元素类型名称简写,例如 `T` 用作 `Text` 的简写;另一种是元素参数被配置了默认值,你可以无需指定所有参数,例如 `Submit` 按钮默认的文本就是“Submit”。
+PySimpleGUI 还包含两种元素简写方式。一种是元素类型名称简写,例如 `T` 用作 `Text` 的简写;另一种是元素参数被配置了默认值,你可以无需指定所有参数,例如 `Submit` 按钮默认的文本就是 “Submit”。
```
T = Text
@@ -164,9 +167,9 @@ RealtimeButton
(LCTT 译注:其实就是返回 `Button` 类实例的函数)
-上面就是 `PySimpleGUI` 支持的全部元素。如果不在上述列表之中,就不会在你的窗口布局中生效。
+上面就是 PySimpleGUI 支持的全部元素。如果不在上述列表之中,就不会在你的窗口布局中生效。
-(LCTT 译注:上述都是 `PySimpleGUI` 的类名、类别名或返回实例的函数,自然只能使用列表内的。)
+(LCTT 译注:上述都是 PySimpleGUI 的类名、类别名或返回实例的函数,自然只能使用列表内的。)
#### GUI 设计模式
@@ -182,7 +185,7 @@ form = sg.FlexForm('Simple data entry form')
button, values = form.LayoutAndRead(layout)
```
-(LCTT 译注:这段代码无法运行,只是为了说明每个程序都会用到的设计模式)
+(LCTT 译注:这段代码无法运行,只是为了说明每个程序都会用到的设计模式。)
对于绝大多数 GUI,编码流程如下:
@@ -190,7 +193,7 @@ button, values = form.LayoutAndRead(layout)
* 以“列表的列表”的形式定义 GUI
* 展示 GUI 并获取元素的值
-上述流程与 `PySimpleGUI` 设计模式部分的代码一一对应。
+上述流程与 PySimpleGUI 设计模式部分的代码一一对应。
#### GUI 布局
@@ -201,7 +204,6 @@ button, values = form.LayoutAndRead(layout)
```
layout = [ [Text('Row 1')],
[Text('Row 2'), Checkbox('Checkbox 1', OK()), Checkbox('Checkbox 2'), OK()] ]
-
```
上述布局对应的效果如下:
@@ -220,24 +222,24 @@ button, values = form.LayoutAndRead(layout)
窗体返回的结果由两部分组成:一部分是被点击按钮的名称,另一部分是一个列表,包含所有用户输入窗体的值。
-在这个例子中,窗体显示后用户直接点击 `OK` 按钮,返回的结果如下:
+在这个例子中,窗体显示后用户直接点击 “OK” 按钮,返回的结果如下:
```
button == 'OK'
values == [False, False]
```
-`Checkbox` 类型元素返回 `True` 或 `False` 类型的值。由于默认处于未选中状态,两个元素的值都是 `False`。
+Checkbox 类型元素返回 `True` 或 `False` 类型的值。由于默认处于未选中状态,两个元素的值都是 `False`。
### 显示元素的值
一旦从 GUI 获取返回值,检查返回变量中的值是个不错的想法。与其使用 `print` 语句进行打印,我们不妨坚持使用 GUI 并在一个窗口中输出这些值。
-(LCTT 译注:考虑使用的是 Python 3 版本,`print` 应该是函数而不是语句)
+(LCTT 译注:考虑使用的是 Python 3 版本,`print` 应该是函数而不是语句。)
-在 `PySimpleGUI` 中,有多种消息框可供选取。传递给消息框(函数)的数据会被显示在消息框中;函数可以接受任意数目的参数,你可以轻松的将所有要查看的变量展示出来。
+在 PySimpleGUI 中,有多种消息框可供选取。传递给消息框(函数)的数据会被显示在消息框中;函数可以接受任意数目的参数,你可以轻松的将所有要查看的变量展示出来。
-在 `PySimpleGUI` 中,最常用的消息框是 `MsgBox`。要展示上面例子中的数据,只需编写一行代码:
+在 PySimpleGUI 中,最常用的消息框是 `MsgBox`。要展示上面例子中的数据,只需编写一行代码:
```
MsgBox('The GUI returned:', button, values)
@@ -245,7 +247,7 @@ MsgBox('The GUI returned:', button, values)
### 整合
-好了,你已经了解了基础知识,让我们创建一个包含尽可能多 `PySimpleGUI` 元素的窗体吧!此外,为了更好的感观效果,我们将采用绿色/棕褐色的配色方案。
+好了,你已经了解了基础知识,让我们创建一个包含尽可能多 PySimpleGUI 元素的窗体吧!此外,为了更好的感观效果,我们将采用绿色/棕褐色的配色方案。
```
import PySimpleGUI as sg
@@ -284,7 +286,7 @@ button, values = form.LayoutAndRead(layout)
sg.MsgBox(button, values)
```
-看上面要写不少代码,但如果你试着直接使用 `Tkinter` 框架实现同样的 GUI,你很快就会发现 `PySimpleGUI` 版本的代码是多么的简洁。
+看上面要写不少代码,但如果你试着直接使用 Tkinter 框架实现同样的 GUI,你很快就会发现 PySimpleGUI 版本的代码是多么的简洁。
![](https://opensource.com/sites/default/files/uploads/pysimplegui-everything.jpg)
@@ -317,7 +319,7 @@ else:
#### 安装方式
-支持 `Tkinter` 的系统就支持 `PySimpleGUI`,甚至包括树莓派,但你需要使用 Python 3。
+支持 Tkinter 的系统就支持 PySimpleGUI,甚至包括树莓派,但你需要使用 Python 3。
```
pip install PySimpleGUI
@@ -336,7 +338,7 @@ via: https://opensource.com/article/18/8/pysimplegui
作者:[Mike Barnett][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[pinewall](https://github.com/pinewall)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20180831 6 open source tools for making your own VPN.md b/published/20180831 6 open source tools for making your own VPN.md
new file mode 100644
index 0000000000..19e668c20c
--- /dev/null
+++ b/published/20180831 6 open source tools for making your own VPN.md
@@ -0,0 +1,109 @@
+6 个打造你自己的 VPN 的开源工具
+======
+
+> 想尝试建立您自己的 VPN,但是不确定从哪里开始吗?
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/vpn_scrabble_networking.jpg?itok=pdsUHw5N)
+
+如果您想尝试建立您自己的 VPN,但是不确定从哪里开始,那么您来对地方了。我将比较 6 个在您自己的服务器上搭建和使用 VPN 的最好的自由和开源工具。不管您是想为您的企业建立站点到站点的 VPN,还是只是想创建一个远程代理访问以解除访问限制并对 ISP 隐藏你的互联网流量,都可以通过 VPN 来达成。
+
+根据您的需求和条件,并参考您自己的技术特长、环境以及您想要通过 VPN 实现的目标。需要考虑以下因素:
+
+ * VPN 协议
+ * 客户端的数量和设备类型
+ * 服务端的兼容性
+ * 需要的技术专业能力
+
+### Algo
+
+[Algo][1] 是从下往上设计的,可以为需要互联网安全代理的商务旅客创建 VPN 专用网。它“只包括您所需要的最小化的软件”,这意味着为了简单而牺牲了可扩展性。Algo 是基于 StrongSwan 的,但是删除了所有您不需要的东西,这有另外一个好处,那就是去除了新手可能不会注意到的安全漏洞。
+
+作为额外的奖励,它甚至可以屏蔽广告!
+
+Algo 只支持 IKEv2 协议和 Wireguard。因为对 IKEv2 的支持现在已经内置在大多数设备中,所以它不需要像 OpenVPN 这样的客户端应用程序。Algo 可以使用 Ansible 在 Ubuntu (首选选项)、Windows、RedHat、CentOS 和 FreeBSD 上部署。 使用 Ansible 可以自动化安装,它会根据您对一组简短的问题的回答来配置服务。卸载和重新部署也非常容易。
+
+Algo 可能是在本文中安装和部署最简单和最快的 VPN。它非常简洁,考虑周全。如果您不需要其他工具提供的高级功能,只需要一个安全代理,这是一个很好的选择。请注意,Algo 明确表示,它不是为了解除地理封锁或逃避审查,主要是为了加密。
+
+### Streisand
+
+[Streisand][2] 可以使用一个命令安装在任何 Ubuntu 16.04 服务器上;这个过程大约需要 10 分钟。它支持 L2TP、OpenConnect、OpenSSH、OpenVPN、Shadowsocks、Stunnel、Tor bridge 和 WireGuard。根据您选择的协议,您可能需要安装客户端应用程序。
+
+在很多方面,Streisand 与 Algo 相似,但是它提供了更多的协议和定制。这需要更多的工作来管理和维护,但也更加灵活。注意 Streisand 不支持 IKEv2。因为它的多功能性,我认为 Streisand 在某国和土耳其这样的地方绕过审查制度更有效,但是 Algo 的安装更容易和更快。
+
+使用 Ansible 可以自动化安装,所以不需要太多的专业技术知识。通过向用户发送自定义生成的连接指令,包括服务器 SSL 证书的嵌入副本,可以轻松添加更多用户。
+
+卸载 Streisand 是一个快速无痛的过程,您也可以随时重新部署。
+
+### OpenVPN
+
+[OpenVPN][3] 要求客户端和服务器应用程序使用其同名的协议建立 VPN 连接。OpenVPN 可以根据您的需求进行调整和定制,但它也需要更多专业技术知识。它支持远程访问和站点到站点配置;如果您计划使用 VPN 作为互联网代理,前者是您所需要的。因为在大多数设备上使用 OpenVPN 需要客户端应用程序,所以最终用户必须保持更新。
+
+服务器端您可以选择部署在云端或你自己的 Linux 服务器上。兼容的发行版包括 CentOS 、Ubuntu 、Debian 和 openSUSE。Windows 、MacOS 、iOS 和 Android 都有客户端应用程序,其他设备也有非官方应用程序。企业可以选择设置一个 OpenVPN 接入服务器,但是对于想要使用社区版的个人来说,这可能有点过分。
+
+OpenVPN 使用静态密钥加密来配置相对容易,但并不十分安全。相反,我建议使用 [easy-rsa][4] 来设置它,这是一个密钥管理包,可以用来设置公钥基础设施(PKI)。这允许您一次连接多个设备,并因此得到完美前向保密和其他好处的保护。OpenVPN 使用 SSL/TLS 进行加密,而且您可以在配置中指定 DNS 服务器。
+
+OpenVPN 可以穿透防火墙和 NAT 防火墙,这意味着您可以使用它绕过可能会阻止连接的网关和防火墙。它同时支持 TCP 和 UDP 传输。
+
+### StrongSwan
+
+您可能会遇到一些名称中有 “Swan” 的各种 VPN 工具。FreeS/WAN 、OpenSwan、LibreSwan 和 [strongSwan][5] 都是同一个项目的分叉,后者是我个人最喜欢的。在服务器端,strongSwan 可以运行在 Linux 2.6、3.x 和 4x 内核、Android、FreeBSD、macOS、iOS 和 Windows 上。
+
+StrongSwan 使用 IKEv2 协议和 IPSec 。与 OpenVPN 相比,IKEv2 连接速度更快,同时提供了很好的速度和安全性。如果您更喜欢不需要在客户端安装额外应用程序的协议,这将非常有用,因为现在生产的大多数新设备都支持 IKEv2,包括 Windows、MacOS、iOS 和 Android。
+
+StrongSwan 并不特别容易使用,尽管文档不错,但它使用的词汇与大多数其他工具不同,这可能会让人比较困惑。它的模块化设计让它对企业来说很棒,但这也意味着它不是很精简。这当然不像 Algo 或 Streisand 那么简单。
+
+访问控制可以基于使用 X.509 属性证书的组成员身份,这是 strongSwan 独有的功能。它支持用于集成到其他环境(如 Windows Active Directory)中的 EAP 身份验证方法。strongSwan 可以穿透NAT 网络防火墙。
+
+### SoftEther
+
+[SoftEther][6] 是由日本筑波大学的一名研究生发起的一个项目。SoftEther VPN 服务器和 VPN 网桥可以运行在 Windows、Linux、OSX、FreeBSD 和 Solaris 上,而客户端应用程序可以运行在 Windows、Linux 和 MacOS 上。VPN 网桥主要用于需要设置站点到站点 VPN 的企业,因此单个用户只需要服务器和客户端程序来设置远程访问。
+
+SoftEther 支持 OpenVPN、L2TP、SSTP 和 EtherIP 协议,由于采用“基于 HTTPS 的以太网”伪装,它自己的 SoftEther 协议声称能够免疫深度数据包检测。SoftEther 还做了一些调整,以减少延迟并增加吞吐量。此外,SoftEther 还包括一个克隆功能,允许您轻松地从 OpenVPN 过渡到 SoftEther。
+
+SoftEther 可以穿透 NAT 防火墙并绕过防火墙。在只允许 ICMP 和 DNS 数据包的受限网络上,您可以利用 SoftEther 的基于 ICMP 或 DNS 的 VPN 方式来穿透防火墙。SoftEther 可与 IPv4 和 IPv6 一起工作。
+
+SoftEther 比 OpenVPN 和 strongSwan 更容易设置,但比 Streisand 和 Algo 要复杂。
+
+### WireGuard
+
+[WireGuard][7] 是这个名单上最新的工具;它太新了,甚至还没有完成。也就是说,它为部署 VPN 提供了一种快速简便的方法。它旨在通过使 IPSec 更简单、更精简来改进它,就像 SSH 一样。
+
+与 OpenVPN 一样,WireGuard 既是一种协议,也是一种用于部署使用所述协议的 VPN 的软件工具。一个关键特性是“加密密钥路由”,它将公钥与隧道内允许的 IP 地址列表相关联。
+
+WireGuard 可用于 Ubuntu、Debian、Fedora、CentOS、MacOS、Windows 和安卓系统。WireGuard 可在 IPv4 和 IPv6 上工作。
+
+WireGuard 比大多数其他 VPN 协议轻得多,它只在需要发送数据时才发送数据包。
+
+开发人员说,WireGuard 还不应该被信任,因为它还没有被完全审计过,但是欢迎你给它一个机会。这可能是下一个热门!
+
+### 自制 VPN vs. 商业 VPN
+
+制作您自己的 VPN 为您的互联网连接增加了一层隐私和安全,但是如果您是唯一一个使用它的人,那么装备精良的第三方,比如政府机构,将很容易追踪到你的活动。
+
+此外,如果您计划使用您的 VPN 来解锁地理锁定的内容,自制的 VPN 可能不是最好的选择。因为您只能从一个 IP 地址连接,所以你的 VPN 服务器很容易被阻止。
+
+好的商业 VPN 不存在这些问题。有了像 [ExpressVPN][8] 这样的提供商,您可以与数十甚至数百个其他用户共享服务器的 IP 地址,这使得跟踪一个用户的活动几乎变得不可能。您也可以从成百上千的服务器中选择,所以如果其中一台被列入黑名单,你可以切换到另一台。
+
+然而,商业 VPN 的权衡是,您必须相信提供商不会窥探您的互联网流量。一定要选择一个有明确的无日志政策的信誉良好的供应商。
+
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/8/open-source-tools-vpn
+
+作者:[Paul Bischoff][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[heguangzhi](https://github.com/heguangzhi)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/paulbischoff
+[1]: https://blog.trailofbits.com/2016/12/12/meet-algo-the-vpn-that-works/
+[2]: https://github.com/StreisandEffect/streisand
+[3]: https://openvpn.net/
+[4]: https://github.com/OpenVPN/easy-rsa
+[5]: https://www.strongswan.org/
+[6]: https://www.softether.org/
+[7]: https://www.wireguard.com/
+[8]: https://www.comparitech.com/vpn/reviews/expressvpn/
diff --git a/translated/tech/20180906 Two open source alternatives to Flash Player.md b/published/20180906 Two open source alternatives to Flash Player.md
similarity index 69%
rename from translated/tech/20180906 Two open source alternatives to Flash Player.md
rename to published/20180906 Two open source alternatives to Flash Player.md
index 0126bf950a..1d0911abcd 100644
--- a/translated/tech/20180906 Two open source alternatives to Flash Player.md
+++ b/published/20180906 Two open source alternatives to Flash Player.md
@@ -1,33 +1,33 @@
Flash Player 的两种开源替代方案
======
+> Adobe 将于 2020 年终止对 Flash 媒体播放器的支持,但仍有很多人们希望访问的 Flash 视频。这里有两个开源的替代品或许可以帮到你。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bulb-light-energy-power-idea.png?itok=zTEEmTZB)
-2017 年 7 月,Adobe 为 Flash Media Player 敲响了[丧钟][1],宣布将在 2020 年终止对曾经无处不在的在线视频播放器的支持。但事实上,在一系列损害了其声誉的零日攻击后,Flash 的份额在过去的 8 年一直在下跌。苹果公司在 2010 年宣布它不会支持这项技术后,其未来趋于黯淡,并且在谷歌停止在 Chrome 浏览器中默认启用 Flash(支持 HTML5)后,它的消亡在 2016 年加速。
+2017 年 7 月,Adobe 为 Flash Media Player 敲响了[丧钟][1],宣布将在 2020 年终止对曾经无处不在的在线视频播放器的支持。但事实上,在一系列损害了其声誉的零日攻击后,Flash 的份额在过去的 8 年一直在下跌。苹果公司在 2010 年宣布它不会支持这项技术后,其未来趋于黯淡,并且在谷歌停止在 Chrome 浏览器中默认启用 Flash(支持 HTML5)后,它的消亡在 2016 年进一步加速。
即便如此,Adobe 仍然每月发布该软件的更新,截至 2018 年 8 月,它在网站的使用率从 2011 年的 28.5% 下降到[仅 4.4%] [2]。还有更多证据表明 Flash 的下滑:谷歌工程总监 [Parisa Tabriz 说][3]通过浏览器访问 Flash 内容的 Chrome 用户数量从 2014 年的 80% 下降到 2018 年的 8%。
-尽管如今很少有视频创作者以 Flash 格式发布,但仍有很多人们希望在未来几年内访问的 Flash 视频。鉴于官方支持的日期已经屈指可数,开源软件创建者有很好的机会介入 Adobe Flash Media Player 的替代品。这其中两个应用是 Lightspark 和 GNU Gnash。它们都不是完美的替代品,但来自贡献者的帮助可以使它们成为可行的替代品。
+尽管如今很少有视频创作者以 Flash 格式发布,但仍有很多人们希望在未来几年内访问的 Flash 视频。鉴于官方支持的日期已经屈指可数,开源软件创建者有很好的机会涉足 Adobe Flash 媒体播放器的替代品。这其中两个应用是 Lightspark 和 GNU Gnash。它们都不是完美的替代品,但来自贡献者的帮助可以使它们成为可行的替代品。
### Lightspark
[Lightspark][4] 是 Linux 上的 Flash Player 替代品。虽然它仍处于 alpha 状态,但自从 Adobe 在 2017 宣布废弃 Adobe 以来,开发速度已经加快。据其网站称,Lightspark 实现了 60% 的 Flash API,可在许多流行网站包括 BBC 新闻、Google Play 音乐和亚马逊音乐上[使用][5]。
-Lightspark 是用 C++/C 编写的,并在 [LGPLv3][6] 下许可。该项目列出了 41 个贡献者,并正在积极征求错误报告和其他贡献。有关更多信息,请查看其[ GitHub 仓库][5]。
+Lightspark 是用 C++/C 编写的,并在 [LGPLv3][6] 下许可。该项目列出了 41 个贡献者,并正在积极征求错误报告和其他贡献。有关更多信息,请查看其 [GitHub 仓库][5]。
### GNU Gnash
[GNU Gnash][7] 是一个用于 GNU/Linux 操作系统,包括 Ubuntu、Fedora 和 Debian 的 Flash Player。它作为独立软件和插件可用于 Firefox 和 Konqueror 浏览器中。
-Gnash 的主要缺点是它不支持最新版本的 Flash 文件 - 它支持大多数 Flash SWF v7 功能,一些 v8 和 v9 功能,不支持 v10 文件。它处于测试阶段,由于它在[ GNU GPLv3 或更高版本][8]下许可,因此你可以帮助实现它的现代化。访问其[项目页面][9]获取更多信息。
+Gnash 的主要缺点是它不支持最新版本的 Flash 文件 —— 它支持大多数 Flash SWF v7 功能,一些 v8 和 v9 功能,不支持 v10 文件。它处于测试阶段,由于它在 [GNU GPLv3 或更高版本][8]下许可,因此你可以帮助实现它的现代化。访问其[项目页面][9]获取更多信息。
-### 想要创建Flash吗?
+### 想要创建 Flash 吗?
-* 仅因为大多数人都不会发布 Flash 视频,但这并不意味着永远不需要创建 SWF 文件。如果你发现自己需要,这两个开源工具可能会有所帮助:
-
- * [Motion-Twin ActionScript 2 编译器][10](MTASC):一个命令行编译器,它可以在没有 Adobe Animate(Adobe 当前的视频创建软件)的情况下生成 SWF 文件。
- * [Ming][11]:用 C 编写的可以生成 SWF 文件的库。它还包含一些可用于处理 Flash 的[程序][12]。
+仅因为大多数人都不会发布 Flash 视频,但这并不意味着永远不需要创建 SWF 文件。如果你发现自己需要,这两个开源工具可能会有所帮助:
+* [Motion-Twin ActionScript 2 编译器][10](MTASC):一个命令行编译器,它可以在没有 Adobe Animate(Adobe 当前的视频创建软件)的情况下生成 SWF 文件。
+* [Ming][11]:用 C 编写的可以生成 SWF 文件的库。它还包含一些可用于处理 Flash 的[程序][12]。
--------------------------------------------------------------------------------
@@ -37,7 +37,7 @@ via: https://opensource.com/alternatives/flash-media-player
作者:[Opensource.com][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[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/translated/tech/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md b/published/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md
similarity index 61%
rename from translated/tech/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md
rename to published/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md
index 152bb75d23..652ebd6c1d 100644
--- a/translated/tech/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md
+++ b/published/20180909 What is ZFS- Why People Use ZFS- [Explained for Beginners].md
@@ -3,23 +3,23 @@
![ZFS filesystem][9]
-今天,我们来谈论一下 ZFS,一个高级文件系统。我们将讨论 ZFS 从何而来,它是什么,以及为什么它在科技界和企业界如此受欢迎。
+今天,我们来谈论一下 ZFS,一个先进的文件系统。我们将讨论 ZFS 从何而来,它是什么,以及为什么它在科技界和企业界如此受欢迎。
虽然我是一个美国人,但我更喜欢读成 ZedFS 而不是 ZeeFS,因为前者听起来更酷一些。你可以根据你的个人喜好来发音。
-注意:在这篇文章中,你将会看到很多次 ZFS。当我在谈论特性和安装的时候,我所指的是 OpenZFS 。自从 Oracle 公司放弃 OpenSolaris 项目之后,ZFS(由 Oracle 公司开发)和 OpenZFS 已经走向了不同的发展道路。
+> 注意:在这篇文章中,你将会看到 ZFS 被提到很多次。当我在谈论特性和安装的时候,我所指的是 OpenZFS 。自从甲骨文公司放弃 OpenSolaris 项目之后,ZFS(由甲骨文公司开发)和 OpenZFS 已经走向了不同的发展道路。(后面详述)
### ZFS 的历史
-Z 文件系统(ZFS)是在 2001 年由 [Matthew Ahrens 和 Jeff Bonwick][1] 开发的。ZFS 是作为 Sun 公司的[微系统][2] [OpenSolaris][3] 的下一代文件系统而设计的。在 2008 年,ZFS 被移植到了 FreeBSD 。同一年,一个新的项目也开始了:[ZFS to Linux][4] 。然而,由于 ZFS 是[通用开发和发布许可证(CDDL)][5]许可的,它和 [GNU 通用公共许可证][6] 不兼容,因此不能将它迁移到 Linux 内核中。为了解决这个问题,绝大多数 Linux 发行版提供了一些方法来安装 ZFS 。
+Z 文件系统(ZFS)是由 [Matthew Ahrens 和 Jeff Bonwick][1] 在 2001 年开发的。ZFS 是作为[太阳微系统][2] 公司的 [OpenSolaris][3] 的下一代文件系统而设计的。在 2008 年,ZFS 被移植到了 FreeBSD 。同一年,一个移植 [ZFS 到 Linux][4] 的项目也启动了。然而,由于 ZFS 是[通用开发和发布许可证][5](CDDL)许可的,它和 [GNU 通用公共许可证][6] 不兼容,因此不能将它迁移到 Linux 内核中。为了解决这个问题,绝大多数 Linux 发行版提供了一些方法来安装 ZFS 。
-在 Oracle 公司收购 Sun 公司之后不久,微系统 OpenSolaris 就闭源了,这使得 ZFS 的最新开发也闭源了。许多 ZFS 开发者对这件事情非常不开心。[三分之二的 ZFS 核心开发者][1],包括 Ahrens 和 Bonwick,因为这个决定而离开了 Oracle 公司。他们加入其他公司,并于 2013 年 9 月创立了 [OpenZFS][7] 这一项目。该项目引领着 ZFS 的开源开发。
+在甲骨文公司收购太阳微系统公司之后不久,OpenSolaris 就闭源了,这使得 ZFS 的之后的开发也变成闭源的了。许多 ZFS 开发者对这件事情非常不满。[三分之二的 ZFS 核心开发者][1],包括 Ahrens 和 Bonwick,因为这个决定而离开了甲骨文公司。他们加入了其它公司,并于 2013 年 9 月创立了 [OpenZFS][7] 这一项目。该项目引领着 ZFS 的开源开发。
-让我们回到上面提到的许可证问题上。既然 OpenZFS 项目已经和 Oracle 公司分离开了,有人可能好奇他们为什么不使用和 GPL 兼容的许可证,这样就可以把它加入到 Linux 内核中了。根据 [OpenZFS 官网][8] 的介绍,更改许可证需要联系所有为当前 OpenZFS 实现贡献过代码的人(包括初始公共 ZFS 代码以及 OpenSolaris 代码),并得到他们的许可才行。这几乎是不可能的(因为一些贡献者可能已经去世了或者很难找到),因此他们决定保留原来的许可证。
+让我们回到上面提到的许可证问题上。既然 OpenZFS 项目已经和 Oracle 公司分离开了,有人可能好奇他们为什么不使用和 GPL 兼容的许可证,这样就可以把它加入到 Linux 内核中了。根据 [OpenZFS 官网][8] 的介绍,更改许可证需要联系所有为当前 OpenZFS 实现贡献过代码的人(包括初始的公共 ZFS 代码以及 OpenSolaris 代码),并得到他们的许可才行。这几乎是不可能的(因为一些贡献者可能已经去世了或者很难找到),因此他们决定保留原来的许可证。
### ZFS 是什么,它有什么特性?
-正如前面所说过的,ZFS 是一个高级文件系统。因此,它有一些有趣的[特性][10]。比如:
+正如前面所说过的,ZFS 是一个先进的文件系统。因此,它有一些有趣的[特性][10]。比如:
* 存储池
* 写时拷贝
@@ -27,28 +27,27 @@ Z 文件系统(ZFS)是在 2001 年由 [Matthew Ahrens 和 Jeff Bonwick][1]
* 数据完整性验证和自动修复
* RAID-Z
* 最大单个文件大小为 16 EB(1 EB = 1024 PB)
- * 最大 256 万亿的四次方 ZB(1 ZB = 1024 EB)的存储
-
-
+ * 最大 256 千万亿(256*10^15 )的 ZB(1 ZB = 1024 EB)的存储
让我们来深入了解一下其中一些特性。
#### 存储池
-与大多数文件系统不同,ZFS 结合了文件系统和卷管理器的特性。这意味着,它与其他文件系统不同,ZFS 可以创建跨域一系列硬盘或池的文件系统。不仅如此,你还可以通过添加硬盘来增大池的存储容量。ZFS 可以进行[分区和格式化][11]。
+与大多数文件系统不同,ZFS 结合了文件系统和卷管理器的特性。这意味着,它与其他文件系统不同,ZFS 可以创建跨越一系列硬盘或池的文件系统。不仅如此,你还可以通过添加硬盘来增大池的存储容量。ZFS 可以进行[分区和格式化][11]。
![Pooled storage in ZFS][12]
+
*ZFS 存储池*
#### 写时拷贝
-[写时拷贝][13]是另一个有趣并且很酷的特性。在大多数文件系统上,当数据被重写时,它将永久丢失。而在 ZFS 中,新数据会写到不同的块。写完成之后,更新文件系统元数据信息,使之指向新的数据块(LCTT 译注:更新之后,原数据块成为磁盘上的垃圾,需要有对应的垃圾回收机制)。这确保了如果在写新数据的时候系统崩溃(或者发生其它事,比如突然断电),那么原数据将会保存下来。这也意味着,在系统发生崩溃之后,不需要运行 [fsck][14] 来检查和修复文件系统。
+[写时拷贝][13]是另一个有趣并且很酷的特性。在大多数文件系统上,当数据被重写时,它将永久丢失。而在 ZFS 中,新数据会写到不同的块。写完成之后,更新文件系统元数据信息,使之指向新的数据块(LCTT 译注:更新之后,原数据块成为磁盘上的垃圾,需要有对应的垃圾回收机制)。这确保了如果在写新数据的时候系统崩溃(或者发生其它事,比如突然断电),那么原数据将会保存下来。这也意味着,在系统发生崩溃之后,不需要运行 [fsck][14] 来检查和修复文件系统。
#### 快照
写时拷贝使得 ZFS 有了另一个特性:快照。ZFS 使用快照来跟踪文件系统中的更改。[快照][13]包含文件系统的原始版本(文件系统的一个只读版本),实时文件系统则包含了自从快照创建之后的任何更改。没有使用额外的空间。因为新数据将会写到实时文件系统新分配的块上。如果一个文件被删除了,那么它在快照中的索引也会被删除。所以,快照主要是用来跟踪文件的更改,而不是文件的增加和创建。
-快照可以挂载成只读的,以用来恢复一个文件的过去版本。实时系统也可以回滚到之前的快照。回滚之后,自从快照创建之后的所有更改将会丢失。
+快照可以挂载成只读的,以用来恢复一个文件的过去版本。实时文件系统也可以回滚到之前的快照。回滚之后,自从快照创建之后的所有更改将会丢失。
#### 数据完整性验证和自动修复
@@ -56,11 +55,11 @@ Z 文件系统(ZFS)是在 2001 年由 [Matthew Ahrens 和 Jeff Bonwick][1]
#### RAID-Z
-ZFS 不需要任何额外软件或硬件就可以处理 RAID(磁盘阵列)。毫无奇怪,因为 ZFS 有自己的 RAID 实现:RAID-Z 。RAID-Z 是 RAID-5 的一个变种,不过它克服了 RAID-5 的写漏洞:意外重启之后,数据和校验信息会变得不同步(LCTT 译注:RAID-5 的 stripe 在正写数据时,如果这时候电源中断,那么奇偶校验数据将跟该部分数据不同步,因此前边的写无效;RAID-Z 用了 “variable-width RAID stripes” 技术,因此所有的写都是 full-stripe writes)。为了使用基本级别的 [RAID-Z][15](RAID-Z1),你需要至少三块磁盘,其中两块用来存储数据,另外一块用来存储[奇偶校验信息][16]。而RAID-Z2 需要至少两块磁盘存储数据以及两块磁盘存储校验信息。RAID-Z3 需要至少两块磁盘存储数据以及三块磁盘存储校验信息。另外,只能向 RAID-Z 池中加入偶数倍的磁盘,而不能是奇数倍的。
+ZFS 不需要任何额外软件或硬件就可以处理 RAID(磁盘阵列)。毫不奇怪,因为 ZFS 有自己的 RAID 实现:RAID-Z 。RAID-Z 是 RAID-5 的一个变种,不过它克服了 RAID-5 的写漏洞:意外重启之后,数据和校验信息会变得不同步(LCTT 译注:RAID-5 的条带在正写入数据时,如果这时候电源中断,那么奇偶校验数据将跟该部分数据不同步,因此前边的写无效;RAID-Z 用了 “可变宽的 RAID 条带” 技术,因此所有的写都是全条带写入)。为了使用[基本级别的 RAID-Z][15](RAID-Z1),你需要至少三块磁盘,其中两块用来存储数据,另外一块用来存储[奇偶校验信息][16]。而 RAID-Z2 需要至少两块磁盘存储数据以及两块磁盘存储校验信息。RAID-Z3 需要至少两块磁盘存储数据以及三块磁盘存储校验信息。另外,只能向 RAID-Z 池中加入偶数倍的磁盘,而不能是奇数倍的。
#### 巨大的存储潜力
-创建 ZFS 的时候,它就被设计成了[最后一个文件系统][17] 。那时候,大多数文件系统都是 64 位的,ZFS 的创建者决定直接跳到 128 位,等到将来再来证明这是对的。这意味着 ZFS 的容量大小是 32 位或 64 位文件系统的 160 亿亿倍。事实上,Jeff Bonwick(其中一个创建者)说:“完全填满一个 128 位的存储池所需要的[能量][18],从字面上讲,比煮沸海洋需要的还多。”
+创建 ZFS 的时候,它是作为[最后一个文件系统][17]而设计的 。那时候,大多数文件系统都是 64 位的,ZFS 的创建者决定直接跳到 128 位,等到将来再来证明这是对的。这意味着 ZFS 的容量大小是 32 位或 64 位文件系统的 1600 亿亿倍。事实上,Jeff Bonwick(其中一个创建者)说:“完全填满一个 128 位的存储池所需要的[能量][18],从字面上讲,比煮沸海洋需要的还多。”
### 如何安装 ZFS?
@@ -85,7 +84,7 @@ via: https://itsfoss.com/what-is-zfs/
作者:[John Paul][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[ucasFL](https://github.com/ucasFL)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/translated/tech/20180910 Randomize your MAC address using NetworkManager.md b/published/20180910 Randomize your MAC address using NetworkManager.md
similarity index 61%
rename from translated/tech/20180910 Randomize your MAC address using NetworkManager.md
rename to published/20180910 Randomize your MAC address using NetworkManager.md
index 1b9eeece65..54485e6ca4 100644
--- a/translated/tech/20180910 Randomize your MAC address using NetworkManager.md
+++ b/published/20180910 Randomize your MAC address using NetworkManager.md
@@ -5,13 +5,13 @@
今时今日,无论在家里的沙发上,还是在外面的咖啡厅,只要打开笔记本电脑,连上 Wi-Fi,就能通过网络与外界保持联系。但现在的 Wi-Fi 热点们大都能够通过[每张网卡对应的唯一 MAC 地址][1]来追踪你的设备。下面就来看一下如何避免被追踪。
-现在很多人已经开始注重个人隐私这个问题。个人隐私问题并不仅仅指防止他人能够访问到你电脑上的私有内容(这又是另一个问题了),而更多的是指可追踪性,也就是是否能够被轻易地统计和追踪到。大家都应该[对此更加重视][2]。同时,这方面的底线是,服务提供者在得到了用户的授权后才能对用户进行追踪,例如机场的计时 Wi-Fi 只有在用户授权后才能够使用。
+现在很多人已经开始注重个人隐私这个问题。个人隐私问题并不仅仅指防止他人能够访问到你电脑上的私有内容(这又是另一个问题了),而更多的是指可追踪性,也就是是否能够被轻易地统计和追踪到。大家都应该[对此更加重视][2]。同时,这方面的底线是,服务提供者在得到了用户的授权后才能对用户进行追踪,例如机场的计时 Wi-Fi 只有在用户授权后才能够使用。
-因为固定的 MAC 地址能被轻易地追踪到,所以应该定时进行更换,随机的 MAC 地址是一个好的选择。由于 MAC 地址一般只在局域网内使用,因此随机的 MAC 地址也不太容易产生[冲突][3]。
+因为固定的 MAC 地址能被轻易地追踪到,所以应该定时进行更换,随机的 MAC 地址是一个好的选择。由于 MAC 地址一般只在局域网内使用,因此随机的 MAC 地址也不大会产生[冲突][3]。
### 配置 NetworkManager
-要将随机的 MAC 地址默认应用与所有的 Wi-Fi 连接,需要创建 /etc/NetworkManager/conf.d/00-macrandomize.conf 这个文件:
+要将随机的 MAC 地址默认地用于所有的 Wi-Fi 连接,需要创建 `/etc/NetworkManager/conf.d/00-macrandomize.conf` 这个文件:
```
[device]
@@ -21,51 +21,47 @@ wifi.scan-rand-mac-address=yes
wifi.cloned-mac-address=stable
ethernet.cloned-mac-address=stable
connection.stable-id=${CONNECTION}/${BOOT}
-
```
然后重启 NetworkManager :
```
systemctl restart NetworkManager
-
```
-以上配置文件中,将 cloned-mac-address 的值设置为 stable 就可以在每次 NetworkManager 激活连接的时候都生成相同的 MAC 地址,但连接时使用不同的 MAC 地址。如果要在每次激活连接时获得随机的 MAC 地址,需要将 cloned-mac-address 的值设置为 random。
+以上配置文件中,将 `cloned-mac-address` 的值设置为 `stable` 就可以在每次 NetworkManager 激活连接的时候都生成相同的 MAC 地址,但连接时使用不同的 MAC 地址。如果要在每次激活连接时也获得随机的 MAC 地址,需要将 `cloned-mac-address` 的值设置为 `random`。
-设置为 stable 可以从 DHCP 获取相同的 IP 地址,也可以让 Wi-Fi 的强制主页根据 MAC 地址记住你的登录状态。如果设置为 random ,在每次连接的时候都需要重新认证(或者点击“我同意”),在使用机场 Wi-Fi 的时候会需要到这种 random 模式。可以在 NetworkManager 的[博客文章][4]中参阅到有关使用 nmcli 从终端配置特定连接的详细说明。
+设置为 `stable` 可以从 DHCP 获取相同的 IP 地址,也可以让 Wi-Fi 的[强制主页](https://en.wikipedia.org/wiki/Captive_portal)根据 MAC 地址记住你的登录状态。如果设置为 `random` ,在每次连接的时候都需要重新认证(或者点击“我同意”),在使用机场 Wi-Fi 的时候会需要到这种 `random` 模式。可以在这篇 NetworkManager 的[博客文章][4]中参阅到有关使用 `nmcli` 从终端配置特定连接的详细说明。
-使用 ip link 命令可以查看当前的 MAC 地址,MAC 地址将会显示在 ether 一词的后面。
+使用 `ip link` 命令可以查看当前的 MAC 地址,MAC 地址将会显示在 `ether` 一词的后面。
```
$ ip link
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
+ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
- link/ether 52:54:00:5f:d5:4e brd ff:ff:ff:ff:ff:ff
+ link/ether 52:54:00:5f:d5:4e brd ff:ff:ff:ff:ff:ff
3: wlp1s0: mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
- link/ether 52:54:00:03:23:59 brd ff:ff:ff:ff:ff:ff
-
+ link/ether 52:54:00:03:23:59 brd ff:ff:ff:ff:ff:ff
```
### 什么时候不能随机化 MAC 地址
-当然,在某些情况下确实需要能被追踪到。例如在家用网络中,可能需要将路由器配置为对电脑分配一致的 IP 地址以进行端口转发;再例如公司的雇主可能需要根据 MAC 地址来提供 Wi-Fi 服务,这时候就需要进行追踪。要更改特定的 Wi-Fi 连接,请使用 nmcli 查看 NetworkManager 连接并显示当前设置:
+当然,在某些情况下确实需要能被追踪到。例如在家用网络中,可能需要将路由器配置为对电脑分配一致的 IP 地址以进行端口转发;再例如公司的雇主可能需要根据 MAC 地址来提供 Wi-Fi 服务,这时候就需要进行追踪。要更改特定的 Wi-Fi 连接,请使用 `nmcli` 查看 NetworkManager 连接并显示当前设置:
```
$ nmcli c | grep wifi
-Amtrak_WiFi 5f4b9f75-9e41-47f8-8bac-25dae779cd87 wifi --
-StaplesHotspot de57940c-32c2-468b-8f96-0a3b9a9b0a5e wifi --
-MyHome e8c79829-1848-4563-8e44-466e14a3223d wifi wlp1s0
+Amtrak_WiFi 5f4b9f75-9e41-47f8-8bac-25dae779cd87 wifi --
+StaplesHotspot de57940c-32c2-468b-8f96-0a3b9a9b0a5e wifi --
+MyHome e8c79829-1848-4563-8e44-466e14a3223d wifi wlp1s0
...
$ nmcli c show 5f4b9f75-9e41-47f8-8bac-25dae779cd87 | grep cloned
-802-11-wireless.cloned-mac-address: --
+802-11-wireless.cloned-mac-address: --
$ nmcli c show e8c79829-1848-4563-8e44-466e14a3223d | grep cloned
-802-11-wireless.cloned-mac-address: stable
-
+802-11-wireless.cloned-mac-address: stable
```
-以下这个例子使用 Amtrak 的完全随机 MAC 地址(使用默认配置)和 MyHome 的永久 MAC 地址(使用 stable 配置)。永久 MAC 地址是在硬件生产的时候分配到网络接口上的,网络管理员能够根据永久 MAC 地址来查看[设备的制造商 ID][5]。
+这个例子在 Amtrak 使用完全随机 MAC 地址(使用默认配置)和 MyHome 的永久 MAC 地址(使用 `stable` 配置)。永久 MAC 地址是在硬件生产的时候分配到网络接口上的,网络管理员能够根据永久 MAC 地址来查看[设备的制造商 ID][5]。
更改配置并重新连接活动的接口:
@@ -76,7 +72,6 @@ $ nmcli c down e8c79829-1848-4563-8e44-466e14a3223d
$ nmcli c up e8c79829-1848-4563-8e44-466e14a3223d
$ ip link
...
-
```
你还可以安装 NetworkManager-tui ,就可以通过可视化界面菜单来编辑连接。
@@ -92,7 +87,7 @@ via: https://fedoramagazine.org/randomize-mac-address-nm/
作者:[sheogorath][a],[Stuart D Gathman][b]
选题:[lujun9972](https://github.com/lujun9972)
译者:[HankChow](https://github.com/HankChow)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/translated/tech/20180929 Getting started with the i3 window manager on Linux.md b/published/20180929 Getting started with the i3 window manager on Linux.md
similarity index 55%
rename from translated/tech/20180929 Getting started with the i3 window manager on Linux.md
rename to published/20180929 Getting started with the i3 window manager on Linux.md
index 70f4b895dc..2aa0df4c6b 100644
--- a/translated/tech/20180929 Getting started with the i3 window manager on Linux.md
+++ b/published/20180929 Getting started with the i3 window manager on Linux.md
@@ -1,30 +1,34 @@
-在Linux上使用 i3 作为窗口管理器的入门教程
+i3 窗口管理器入门
======
+> 本篇文章会介绍如何在 Fedora 系统中,安装、配置、使用 i3 瓦片式桌面管理器。
+
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/windows-tiling-windows-wall.png?itok=mTH7uVrn)
-在我的文章[5 reasons the i3 window manager makes Linux better][1],我分享了选择 [i3 window manager][2] 作为一种Linux桌面替代方案的最主要五个理由。
-在本篇文章中,我将向大家展示,如何在 Fedora 28 上安装与配置 i3。
+在我的文章 [i3 桌面让 Linux 更好的 5 个理由][1],我分享了选择 [i3 桌面管理器][2] 作为一种 Linux 桌面替代方案的最主要五个理由。
-### 1\. 安装
+在本篇文章中,我将向大家展示,如何在 Fedora 28 上安装与简单配置 i3。
+
+### 1、 安装
首先进入 Fedora 系统中,打开一个终端。使用 `dnf` 来安装需要的软件包,如下:
+
```
[ricardo@f28i3 ~]$ sudo dnf install -y i3 i3-ipc i3status i3lock dmenu terminator --exclude=rxvt-unicode
Last metadata expiration check: 1:36:15 ago on Wed 08 Aug 2018 12:04:31 PM EDT.
Dependencies resolved.
================================================================================================
- Package Arch Version Repository Size
+ Package Arch Version Repository Size
================================================================================================
Installing:
- dmenu x86_64 4.8-1.fc28 fedora 33 k
- i3 x86_64 4.15-1.fc28 fedora 323 k
- i3-ipc noarch 0.1.4-12.fc28 fedora 14 k
- i3lock x86_64 2.9.1-2.fc28 fedora 33 k
- i3status x86_64 2.12-1.fc28 updates 62 k
- terminator noarch 1.91-4.fc28 fedora 570 k
+ dmenu x86_64 4.8-1.fc28 fedora 33 k
+ i3 x86_64 4.15-1.fc28 fedora 323 k
+ i3-ipc noarch 0.1.4-12.fc28 fedora 14 k
+ i3lock x86_64 2.9.1-2.fc28 fedora 33 k
+ i3status x86_64 2.12-1.fc28 updates 62 k
+ terminator noarch 1.91-4.fc28 fedora 570 k
Installing dependencies:
- dzen2 x86_64 0.8.5-21.20100104svn.fc28 fedora 60 k
+ dzen2 x86_64 0.8.5-21.20100104svn.fc28 fedora 60 k
... Skipping dependencies/install messages
@@ -36,55 +40,56 @@ Complete!
据用户目前的系统状态,在命令执行过程中可能会安装很多依赖。等待所有的依赖安装完成,之后重启你的电脑。
-### 2. 登录与初始化
+### 2、 首次登录与初始化
-在你的机器重启之后,你便可以第一次体验 i3 了。在 GNOME Display Manager (GDM),选择你的用户名,之后先别着急输密码,点击下方的密码输入框下方的小齿轮,之后选择 i3 ,像下方这样:
+在你的机器重启之后,你便可以第一次体验 i3 了。在 GNOME 显示管理器(GDM)屏幕,选择你的用户名,之后先别着急输密码,点击下方的密码输入框下方的小齿轮,之后选择 i3 而不是 GNOME,像下方这样:
![](https://opensource.com/sites/default/files/uploads/i3_first_login_small.png)
-输入你的密码,并点击 `Sign In`。在你第一次登入之后,会先看到 i3 的配置界面:
+输入你的密码,并点击 “Sign In”。在你第一次登入之后,会先看到 i3 的配置界面:
![](https://opensource.com/sites/default/files/uploads/i3_first_configuration_small.png)
-点击 `ENTER` 就会在 `$HOME/.config/i3` 生成一个配置文件,之后你可以通过这个配置文件来定制化 i3's 的一些行为。
+点击回车键就会在 `$HOME/.config/i3` 生成一个配置文件,之后你可以通过这个配置文件来定制化 i3 的一些行为。
-在下一屏,你需要选择你的 `Mod` 键。这一步很关键,因为 `Mod` 键通常都会作为 i3's 命令快捷键的发起键。按 `ENTER` 会选择 `Win` 键作为默认的 `Mod` 键。如果你的键盘没有 `Win` 键,用 `Alt` 键做替代,用方向键键选择后按 `ENTER` 确认。
+在下一屏,你需要选择你的 `Mod` 键。这一步很关键,因为 `Mod` 键通常都会作为 i3 命令快捷键的发起键。按回车会选择 `Win` 键作为默认的 `Mod` 键。如果你的键盘没有 `Win` 键,用 `Alt` 键做替代,用方向键键选择后按回车键确认。
![](https://opensource.com/sites/default/files/uploads/i3_generate_config_small.png)
-现在你就登录到了 i3 的系统中。由于 i3 是一个最小化的窗口管理器,你会看到一个黑屏窗口,以及屏幕底端显式的状态栏:
+现在你就登录到了 i3 的系统中。由于 i3 是一个极简的窗口管理器,你会看到一个黑屏窗口,以及屏幕底端显示的状态栏:
![](https://opensource.com/sites/default/files/uploads/i3_start_small.png)
接下来,让我们看看 i3 的如何实际使用。
-### 3\. 基本的快捷键
+### 3、 基本的快捷键
-现在你已经登录到了 i3 的会话中,你需要几个基本的快捷键来应对基本的操作。
+现在你已经登录到了 i3 会话中,你需要几个基本的快捷键来应对基本的操作。
大多数的 i3 快捷键都会用到之前配置的 `Mod` 键。在下面的例子中,当我提到 `Mod` 键,请根据情况使用你定义的做替换。通常使用 `Win` 键或者 `Alt` 键。
-首先,打开一个终端,使用 `Mod+ENTER`。重复打开几个终端,观察 i3 是如何自动将它们在桌面中排列。默认情况下, i3 会在水平的方向分割屏幕;使用 `Mod + v` 来垂直分割,再按 `Mod + h` 会恢复水平分割模式。
+首先,要打开一个终端,可以使用 `Mod+ENTER`。重复打开几个终端,观察 i3 是如何自动将它们在桌面中排列。默认情况下, i3 会在水平的方向分割屏幕;使用 `Mod + v` 来垂直分割,再按 `Mod + h` 会恢复水平分割模式。
![](https://opensource.com/sites/default/files/uploads/i3_3terminal_tiled_small.png)
-当需要启动其他的应用,按 `Mod + d` 来打开 `dmenu`,一个简单的文字应用菜单。默认情况下,`dmenu` 会呈现出所有在你 `$PATH` 中设置的应用。使用方向键来选择你想启动的应用,同时你可以键入应用的名称,来缩小选择的范围,之后按 `ENTER` 来启动选择的应用。
+当需要启动其他的应用,按 `Mod + d` 来打开 `dmenu`,一个简单的文字应用菜单。默认情况下,`dmenu` 会呈现出所有在你 `$PATH` 中设置的应用。使用方向键来选择你想启动的应用,同时你可以键入应用的名称,来缩小选择的范围,之后按回车键来启动选择的应用。
![](https://opensource.com/sites/default/files/uploads/i3_dmenu.png)
如果你的应用没有提供退出的方法,你可以使用 i3 来关闭对应的窗口,通过按 `Mod + Shift +q`。注意,你可能会丢失未保存的工作内容。
-最后,当你想关闭会话并退出 i3,按 `Mod + Shift +e`。之后会在窗口的上方提示你是否退出。点击 `Yes, exit i3` 退出,或选择 `X` 来取消。
+最后,当你想关闭会话并退出 i3,按 `Mod + Shift +e`。之后会在窗口的上方提示你是否退出。点击 “Yes, exit i3” 退出,或选择 “X” 来取消。
![](https://opensource.com/sites/default/files/uploads/i3_exit_small.png)
-这些就是 i3 中最基本的快捷键,如果想了解更多,请查阅官方文档 [documentation][3]。
+这些就是 i3 中最基本的快捷键,如果想了解更多,请查阅官方[文档][3]。
-### 4\. 替换GDM
+### 4、 替换 GDM
-使用 i3 window manager 会降低你操作系统的内存占用;然而,Fedora 依然会使用 GDM 作为登录的窗口。GDM 会载入几个与 GNOME 相关的库从而占用内存。
+使用 i3 窗口管理器会降低你操作系统的内存占用;然而,Fedora 依然会使用 GDM 作为登录屏。GDM 会载入几个与 GNOME 相关的库从而占用内存。
+
+如果你想进一步的降低你的内存占用,你可以使用一些更轻量级的显示管理器来替换 GDM,比如 lightdm :
-如果你想进一步的降低你的内存占用,你可以使用一些更轻量级的窗口管理器来替换 GDM,比如 `lightdm`:
```
[ricardo@f28i3 ~]$ sudo dnf install -y lightdm
[ricardo@f28i3 ~]$ sudo systemctl disable gdm
@@ -107,7 +112,7 @@ via: https://opensource.com/article/18/8/getting-started-i3-window-manager
作者:[Ricardo Gerardi][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[sd886393](https://github.com/sd886393)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/sources/talk/20180907 What do open source and cooking have in common.md b/sources/talk/20180907 What do open source and cooking have in common.md
deleted file mode 100644
index 4dacfe62f0..0000000000
--- a/sources/talk/20180907 What do open source and cooking have in common.md
+++ /dev/null
@@ -1,79 +0,0 @@
-What do open source and cooking have in common?
-======
-
-![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/waffles-recipe-eggs-cooking-mix.png?itok=Fp06VOBx)
-
-What’s a fun way to promote the principles of free software without actually coding? Here’s an idea: open source cooking. For the past eight years, this is what we’ve been doing in Munich.
-
-The idea of _open source cooking_ grew out of our regular open source meetups because we realized that cooking and free software have a lot in common.
-
-### Cooking together
-
-The [Munich Open Source Meetings][1] is a series of recurring Friday night events that was born in [Café Netzwerk][2] in July 2009. The meetings help provide a way for open source project members and enthusiasts to get to know each other. Our motto is: “Every fourth Friday for free software.” In addition to adding some weekend workshops, we soon introduced other side events, including white sausage breakfast, sauna, and cooking.
-
-The first official _Open Source Cooking_ meetup was admittedly rather chaotic, but we’ve improved our routine over the past eight years and 15 events, and we’ve mastered the art of cooking delicious food for 25-30 people.
-
-Looking back at all those evenings, similarities between cooking together and working together in open source communities have become more clear.
-
-### FLOSS principles at play
-
-Here are a few ways cooking together is like working together on open source projects:
-
- * We enjoy collaborating and working toward a result we share.
- * We’ve become a community.
- * As we share a common interest and enthusiasm, we learn more about ourselves, each other, and what we’re working on together.
- * Mistakes happen. We learn from them and share our knowledge to our mutual benefit, so hopefully we avoid repeating the same mistakes.
- * Everyone contributes what they’re best at, as everyone has something they’re better at than someone else.
- * We motivate others to contribute and join us.
- * Coordination is key, but a bit chaotic.
- * Everyone benefits from the results!
-
-
-
-### Smells like open source
-
-Like any successful open source-related meetup, open source cooking requires some coordination and structure. Ahead of the event, we run a _call for recipes_ in which all participants can vote. Rather than throwing a pizza into a microwave, we want to create something delicious and tasty, and so far we’ve had Japanese, Mexican, Hungarian, and Indian food, just to name a few.
-
-Like in real life, cooking together requires having respect and mutual understanding for each other, so we always try to have dishes for vegans, vegetarians, and people with allergies and food preferences. A little beta test at home can be helpful (and fun!) when preparing for the big release.
-
-Scalability matters, and shopping for our “build requirements” at the grocery store easily can eat up three hours. We use a spreadsheet (LibreOffice Calc, naturally) for calculating ingredient requirements and costs.
-
-For every dinner course we have a “package maintainer” working with volunteers to make the menu in time and to find unconventional solutions to problems that arise.
-
-Not everyone is a cook by profession, but with a little bit of help and a good distribution of tasks and responsibilities, it’s rather easy to parallelize things — at some point, 18kg of tomatoes and 100 eggs really don’t worry you anymore, believe me! The only real scalability limit is the stove with its four hotplates, so maybe it’s time to invest in an infrastructure budget.
-
-Time-based releasing, on the other hand, isn’t working as reliably as it should, as we usually serve the main dish at a rather “flexible” time between 21:30 und 01:30, but that’s not a release blocker, either.
-
-And, as with in many open source projects, cooking documentation has room for improvement. Cleanup tasks such as washing the dishes, surely can be optimized further, too.
-
-### Future flavor releases
-
-Some of our future ideas include:
-
- * cooking in a foreign country,
- * finally buying and cooking that large 700 € pumpkin, and
- * find a grocery store that donates a percentage of our purchases to a good cause.
-
-
-
-The last item is also an important aspect about the free software movement: Always remember there are people who are not living on the sunny side, who do not have the same access to resources, and who are otherwise struggling. How can the open nature of what we’re doing help them?
-
-With all that in mind, I am looking forward to the next Open Source Cooking meetup. If reading about them makes you hungry and you’d like to run own event, we’d love to see you adapt our idea or even fork it. And we’d love to have you join us in a meetup, and perhaps even do some mentoring and QA.
-
-Article originally appeared on [blog.effenberger.org][3]. Reprinted with permission.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/9/open-source-cooking
-
-作者:[Florian Effenberger][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/floeff
-[1]: https://www.opensourcetreffen.de/
-[2]: http://www.cafe-netzwerk.de/
-[3]: https://blog.effenberger.org/2018/05/28/what-do-open-source-and-cooking-have-in-common/
diff --git a/sources/talk/20180916 Linus, His Apology, And Why We Should Support Him.md b/sources/talk/20180916 Linus, His Apology, And Why We Should Support Him.md
new file mode 100644
index 0000000000..e2bf768324
--- /dev/null
+++ b/sources/talk/20180916 Linus, His Apology, And Why We Should Support Him.md
@@ -0,0 +1,57 @@
+heguangzhi translating
+
+
+Linus, His Apology, And Why We Should Support Him
+======
+
+![](https://i1.wp.com/www.jonobacon.com/wp-content/uploads/2018/09/Linus-Torvalds-640x353.jpg?resize=640%2C353&ssl=1)
+
+Today, Linus Torvalds, the creator of Linux, which powers everything from smartwatches to electrical grids posted [a pretty remarkable note on the kernel mailing list][1].
+
+As a little bit of backstory, Linus has sometimes come under fire for the ways in which he has expressed feedback, provided criticism, and reacted to various scenarios on the kernel mailing list. This criticism has been fair in many cases: he has been overly aggressive at times, and while the kernel maintainers are a tight-knit group, the optics, particularly for those new to kernel development has often been pretty bad.
+
+Like many conflict scenarios, this feedback has been communicated back to him in both constructive and non-constructive ways. Historically he has been seemingly reluctant to really internalize this feedback, I suspect partially because (a) the Linux kernel is a very successful project, and (b) some of the critics have at times gone nuclear at him (which often doesn’t work as a strategy towards defensive people). Well, things changed today.
+
+In his post today he shared some self-reflection on this feedback:
+
+> This week people in our community confronted me about my lifetime of not understanding emotions. My flippant attacks in emails have been both unprofessional and uncalled for. Especially at times when I made it personal. In my quest for a better patch, this made sense to me. I know now this was not OK and I am truly sorry.
+
+He went on to not just share an admission that this has been a problem, but to also share a very personal acceptance that he struggles to understand and engage with people’s emotions:
+
+> The above is basically a long-winded way to get to the somewhat painful personal admission that hey, I need to change some of my behavior, and I want to apologize to the people that my personal behavior hurt and possibly drove away from kernel development entirely. I am going to take time off and get some assistance on how to understand people’s emotions and respond appropriately.
+
+His post is sure to light up the open source, Linux, and tech world for the next few weeks. For some it will be celebrated as a step in the right direction. For some it will be too little too late, and their animus will remain. For some they will be cautiously supportive, but defer judgement until they have seen his future behavior demonstrate substantive changes.
+
+### My Take
+
+I wouldn’t say I know Linus very closely; we have a casual relationship. I see him at conferences from time to time, and we often bump into each other and catch up. I interviewed him for my book and for the Global Learning XPRIZE. From my experience he is a funny, genuine, friendly guy. Interestingly, and not unusually at all for open source, his online persona is rather different to his in-person persona. I am not going to deny that when I would see these dust-ups on LKML, it didn’t reflect the Linus I know. I chalked it down to a mixture of his struggles with social skills, dogmatic pragmatism, and ego.
+
+His post today is a pretty remarkable change of posture for him, and I encourage that we as a community support him in making these changes.
+
+**Accepting these personal challenges is tough, particularly for someone in his position**. Linux is a global phenomenon. It has resulted in billions of dollars of technology creation, powering thousands of companies, and changing the norms around of how software is consumed and created. It is easy to forget that Linux was started by a quiet Finnish kid in his university dorm room. It is important to remember that **just because Linux has scaled elegantly, it doesn’t mean that Linus has been able to**. He isn’t a codebase, he is a human being, and bugs are harder to spot and fix in humans. You can’t just deploy a fix immediately. It takes time to identify the problem and foster and grow a change. The starting point for this is to support people in that desire for change, not re-litigate the ills of the past: that will get us nowhere quickly.
+
+[![Young Linus Torvalds][2]][3]
+
+I am also mindful of ego. None of us like to admit we have an ago, but we all do. You don’t get to build one of the most fundamental technologies in the last thirty years and not have an ego. He built it…they came…and a revolution was energized because of what he created. While Linus’s ego is more subtle, and thankfully doesn’t extend to faddish self-promotion, overly expensive suits, and forays into Hollywood (quite the opposite), his ego has naturally resulted in abrupt opinions on how his project should run, sometimes plugging fingers in his ears to particularly challenging viewpoints from others. **His post today is a clear example of him putting Linux as a project ahead of his own personal ego**.
+
+This is important for a few reasons. Firstly, being in such a public position and accepting your personal flaws isn’t a problem many people face, and isn’t a situation many people handle well. I work with a lot of CEOs, and they often say it is the loneliest job on the planet. I have heard American presidents say the same in interviews. This is because they are the top of the tree with all the responsibility and expectations on their shoulders. Put yourself in Linus’s position: his little project has blown up into a global phenomenon, and he didn’t necessarily have the social tools to be able to handle this change. Ego forces these internal struggles under the surface and to push them down and avoid them. So, to accept them as publicly and openly as he did today is a very firm step in the right direction. Now, the true test will be results, but we need to all provide the breathing space for him to accomplish them.
+
+So, I would encourage everyone to give Linus a shot. This doesn’t mean the frustrations of the past are erased, and he has acknowledged and apologized for these mistakes as a first step. He has accepted he struggles with understanding other’s emotions, and a desire to help improve this for the betterment of the project and himself. **He is a human, and the best tonic for humans to resolve their own internal struggles is the support and encouragement of other humans**. This is not unique to Linus, but to anyone who faces similar struggles.
+
+All the best, Linus.
+
+--------------------------------------------------------------------------------
+
+via: https://www.jonobacon.com/2018/09/16/linus-his-apology-and-why-we-should-support-him/
+
+作者:[Jono Bacon][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.jonobacon.com/author/admin/
+[1]: https://lkml.org/lkml/2018/9/16/167
+[2]: https://i1.wp.com/www.jonobacon.com/wp-content/uploads/2018/09/linus.jpg?resize=499%2C342&ssl=1
+[3]: https://i1.wp.com/www.jonobacon.com/wp-content/uploads/2018/09/linus.jpg?ssl=1
diff --git a/sources/talk/20180917 How gaming turned me into a coder.md b/sources/talk/20180917 How gaming turned me into a coder.md
new file mode 100644
index 0000000000..f5675c4628
--- /dev/null
+++ b/sources/talk/20180917 How gaming turned me into a coder.md
@@ -0,0 +1,103 @@
+How gaming turned me into a coder
+======
+
+Text-based adventure gaming leads to a satisfying career in tech.
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboard_numbers_letters_type_game.jpg?itok=fLlWGw1K)
+
+I think the first word I learned to type fast—and I mean really fast—was "fireball."
+
+Like most of us, I started my typing career with a "hunt-and-peck" technique, using my index fingers and keeping my eyes focused on the keyboard to find letters as I needed them. It's not a technique that allows you to read and write at the same time; you might call it half-duplex. It was okay for typing **cd** and **dir** , but it wasn't nearly fast enough to get ahead in the game. Especially if that game was a MUD.
+
+### Gaming with multi-user dungeons
+
+MUD is short for multi-user dungeon. Or multi-user domain, depending on who (and when) you ask. MUDs are text-based adventure games, like [Colossal Cave Adventure][1] and Zork, which you may have heard about in Season 2 [Episode 1][2] of [Command Line Heroes][3]. But MUDs have an extra twist: you aren't the only person playing them. They allow you to group with others to tackle particularly nasty beasts, trade goods, and make new friends. They were the great granddaddies of modern massively multiplayer online role-playing games (MMORPGs) like Everquest and World of Warcraft. And, for an aspiring command-line hero, they offered an experience those modern games still don't.
+
+My "home MUD" was NyxMud, which you could access by telnetting to port 2000 of nyx.cs.du.edu. It was the first command line I ever mastered. In a lot of ways, it allowed me to be a hero—or at least play the part of one.
+
+One special quality of NyxMud was that every time you connected to play, you started with an empty inventory. The gold you collected was still there from your last session, but none of your hard-won weapons, armor, or magical items were. So, at the end of every session, you had to make it back to a store to sell everything… and you would get a fraction of what you paid. If you were killed, the first player who encountered your lifeless body could take everything you had.
+
+![dying and losing everything in a MUD.][5]
+
+This shows what it looks like when you die and lose everything in a MUD
+
+This made the game extremely sticky. Selling everything and quitting was a horrible thing to do, fiscally speaking. It meant that your session had to be profitable. If you didn't earn enough gold through looting and quests between the time you bought and sold your gear, you wouldn't be able to equip yourself as well the next time you played. If you died, it was even worse: You might find yourself killing balls of slime with a newbie sword as you scraped together enough gold for better gear.
+
+I never wanted to "pay the store tax" by selling my gear, which meant a lot of late nights and sleeping through morning biology classes. Every modern game designer wants you to say, "I can't have dinner now, Dad, I have to keep playing or I'm in big trouble." NyxMud had me so hooked that I was saying that several decades ago.
+
+So when it came time to "cast fireball" or die an imminent and ruinous death, I was forced to learn how to type properly. It also forced me to take a social approach to the game—having friends around to fight off scavengers allowed me to reclaim my gear when I died.
+
+Command-line heroes all have some things in common: They work with others and they type wicked fast. NyxMud trained me to do both.
+
+### From gamer to creator
+
+NyxMud was not the largest MUD by any measure. But it was still an expansive world filled with hundreds of areas and dozens of epic adventures, each one tailored to a different level of a player's advancement. Over time, it became apparent that not all these areas were created by the same person. The term "user-generated content" was yet to be invented, but the concept was dead simple even to my young mind: This entire world was created by a group of people, other players.
+
+Once you completed each of the challenging quests and achieved level 20, you became a wizard. This was a singularity of sorts, beyond which existed a reality known only to a few. During lunch breaks at school, my circle of friends would muse about the powers of a wizard; you see, we knew wizards could create rooms, beasts, items, and quests. We knew they could kill players at will. We really didn't know much else about their powers. The whole thing was shrouded in mystery.
+
+In our group of high school friends, Eddie was the first to become a wizard. His flaunting and taunting threw us into overdrive, and Jared was quick to follow. I was last, but only by a day or two. Now that 25 years have passed, let's just call it a three-way tie. We discovered it was pretty much what we thought. We could create rooms, beasts, items, and quests. We could kill players. Oh, and we could become invisible. In NyxMud, that was just about it.
+
+![a wizard’s private workroom][7]
+
+This shows a wizard’s private workroom.
+
+Wizards used the Wand of Creation, an item invented by Quasi (rhymed with "crazy"), the grand wizard. He alone had access to the code for the engine, due to a strict policy set by the administrator of the Nyx system where it ran. So, he created a complicated, magical object that would allow users to generate new game elements. This wand, when invoked, ran the wizard through a menu-based workflow for creating rooms and objects, establishing quest objectives, and designing terrible monsters.
+
+Having that magical wand was enough. I immediately set to work creating new lands and grand adventures across a series of islands, each with a different, exotic climate and theme. I found immense pleasure in hovering, invisible, as the savage beasts from my imagination would slay intrepid adventurers over and over again. But it was even better to see players persevere after a hard battle, knowing I had tweaked and tuned my quests to be just within the realm of possibility.
+
+Being accepted into this elite group of creators was one of the more rewarding and satisfying moments of my young life. Each new wizard would have to pass my test, spending countless hours and sleepless nights, just as I did, to complete the quests of the wizards before me. I had proven my value through dedication and contribution. It was just a game, but it was also a community—the first one I encountered, and the one that showed me how powerful a properly run [meritocracy][8] could be.
+
+### From creator to coder
+
+NyxMud was based on the LPMud codebase, which was created by Lars Pensjö. LPMud was not the first MUD software developed, but it contained one very important innovation: It allowed players to code the game from within the game. It accomplished this by separating the mudlib, which contained all the content and user-facing functionality, from the driver, which acted as a real-time interpreter for the mudlib and provided access to basic network and storage resources. This architecture meant the mudlib could be edited on-the-fly by virtually untrusted people (e.g., players like me) who could augment the game experience without being able to do anything particularly harmful to the server it was running on. The driver provided an "air gap."
+
+This air gap was not enough for NyxMud; it was allowed to exist only if a single person could be trusted to write all the code. In most LPMud systems, players who became wizards could use **ls** , **cd** , and **ed** to traverse the mudlib and modify files, all from the same command line they had used countless times for casting fireballs and drinking potions. Quasi went to great lengths to modify the Nyx mudlib so wizards couldn't traipse around the system with a full set of sharp tools. The Wand of Creation was born.
+
+As a wizard who hadn't played any other MUDs, I didn't miss what I never had. Besides, I didn't have a way to access any systems at the time—telnet was disabled on Nyx, which was my only connection to the internet. But I did have access to Usenet, which provided me with [The Totally Unofficial List of Internet Muds][9]. It was clear there was more of the MUD universe for me to discover. I read all the documentation about mudlibs I could get my hands on and got some exposure to [LPC][10], the niche programming language used to create new content.
+
+I convinced my dad to make an investment in my future by paying for a shell account at Netcom (remember that?). With that account, I could connect to any MUD I wanted, and, based on several strong recommendations, I chose Viking MUD. It still [exists today][11]. It was a real MUD, the bleeding edge, and it showcased the true potential of a universe built with code instead of the limited menu system of a magical wand. But, to be honest, I never got very far as a player. I really wanted to learn how to code, and I didn't want to slay slimeballs with a noobsword for hours to get there.
+
+There was a very small window of time—between February and August 1992, according to Lauren P. Burka's [Mud Timeline][12]—where the perfect place existed for my exploration. The Mud Institute (TMI for short) was a very special MUD designed to teach people how to program in LPC, illuminating the darkest corners of the mudlib. It offered immediate omnipotence to all who applied and built a community for the development of a new generation of LPMuds.
+
+![a snippet of code from the wizard's workroom][14]
+
+This is a snippet of code from the wizard's workroom.
+
+This was my first exposure to C programming, as LPC was essentially a flavor of C that shared the same types, control structures, and syntax. It was C with training wheels, designed for rapid creation of content but allowing coders to develop intricate game scenarios (if they had the chops). I had always seen the curly brace on my keyboard, and now I knew what it was used for. The only thing I can remember creating was a special vending machine, somewhat inspired by the Wand of Creation, that would create the monster of your choice on-the-spot.
+
+TMI was not a long-lasting phenomenon; in fact, it was gone almost before I had a chance to discover it. It quickly abandoned its educational charter, although its efforts were ultimately productive with the release of [MudOS][15]—which still lives through its modern-day descendant, [FluffOS][16]. But what a treasure trove of knowledge about a highly specific subject! Immediately after logging in, I was presented with a complete set of developer tools, a library of instructional materials, and a ton of interesting sample code to learn from.
+
+I never talked to anyone or asked for any help, and I never had to. The community had published just enough resources for me to get started by myself. I was able to learn the basics of structured programming without a textbook or teacher, all within the context of a fantastical computer game. As a result, I have had a long and (mostly) fulfilling career in technology.
+
+The line from Field of Dreams, "if you build it, they will come," is almost certainly untrue for communities.** **The folks at The Mud Institute built the makings of a great community, but I can't say they were successful. They didn't become a widely known wizarding school—in fact, it's really hard to find any information about TMI at all. If you build it, they may not come; if they do, you may still fail. But it still accomplished something wonderful that its creators never thought to predict: It got me excited about programming.
+
+For more on the gamer-to-coder phenomenon and its effect on open source community culture, check out [Episode 1 of Season 2 of Command Line Heroes][2].
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/gamer-coder
+
+作者:[Ross Turk][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/rossturk
+[1]: https://opensource.com/article/17/6/revisit-colossal-cave-adventure-open-adventure
+[2]: https://www.redhat.com/en/command-line-heroes/season-2/press-start
+[3]: https://www.redhat.com/en/command-line-heroes
+[4]: /file/409311
+[5]: https://opensource.com/sites/default/files/uploads/sourcecode_wizard_workroom.png (dying and losing everything in a MUD)
+[6]: /file/409306
+[7]: https://opensource.com/sites/default/files/uploads/wizard_workroom.png (a wizard’s private workroom)
+[8]: https://opensource.com/open-organization/16/8/how-make-meritocracy-work
+[9]: http://textfiles.com/internet/mudlist.txt
+[10]: https://en.wikipedia.org/wiki/LPC_(programming_language)
+[11]: https://www.vikingmud.org
+[12]: http://www.linnaean.org/~lpb/muddex/mudline.html
+[13]: /file/409301
+[14]: https://opensource.com/sites/default/files/uploads/firstroom_newplayer.png (a snippet of code from the wizard's workroom)
+[15]: https://en.wikipedia.org/wiki/MudOS
+[16]: https://github.com/fluffos/fluffos
diff --git a/sources/talk/20180919 5 ways DevSecOps changes security.md b/sources/talk/20180919 5 ways DevSecOps changes security.md
new file mode 100644
index 0000000000..28e4b90eec
--- /dev/null
+++ b/sources/talk/20180919 5 ways DevSecOps changes security.md
@@ -0,0 +1,76 @@
+5 ways DevSecOps changes security
+======
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/security-lock-password.jpg?itok=KJMdkKum)
+
+There’s been an ongoing kerfuffle over whether we need to expand [DevOps][1] to explicitly bring in security. After all, the thinking goes, [DevOps][2] has always been something of a shorthand for a broad set of new practices, using new tools (often open source) and built on more collaborative cultures. Why not [DevBizOps][3] for better aligning with business needs? Or DevChatOps to emphasize better and faster communications?
+
+However, [as John Willis wrote earlier this year][4] on his coming around to the [DevSecOps][5] terminology, “Hopefully, someday we will have a world where we no longer have to use the word DevSecOps and security will be an inherent part of all service delivery discussions. Until that day, and at this point, my general conclusion is that it’s just three new characters. More importantly, the name really differentiates the problem statement in a world where we as an industry are not doing a great job on information security.”
+
+So why aren’t we doing a great job on [information security][6], and what does it mean to do a great job in a DevSecOps context?
+
+We’ve arguably never done a great job of information security in spite of (or maybe because of) the vast industry of complex point products addressing narrow problems. But we also arguably did a good enough job during the era when defending against threats focused on securing the perimeter, network connections were limited, and most users were employees using company-provided devices.
+
+Those circumstances haven’t accurately described most organizations’ reality for a number of years now. But the current era, which brings in not only DevSecOps but new application architectural patterns, development practices, and an increasing number of threats, defines a stark new normal that requires a faster pace of change. It’s not so much that DevSecOps in isolation changes security, but that infosec circa 2018 requires new approaches.
+
+Consider these five areas.
+
+### Automation
+
+Lots of automation is a hallmark of DevOps generally. It’s partly about speed. If you’re going to move fast (and not break things), you need to have repeatable processes that execute without a lot of human intervention. Indeed, automation is one of the best entry points for DevOps, even in organizations that are still mostly working on monolithic legacy apps. Automating routine processes associated with configurations or testing with easy-to-use tools such as [Ansible][7] is a common quick hit for starting down the path to DevOps.
+
+DevSecOps is no different. Security today is a continuous process rather than a discrete checkpoint in the application lifecycle, or even a weekly or monthly check. When vulnerabilities are found and fixes issued by a vendor, it’s important they be applied quickly given that exploits taking advantage of those vulnerabilities will be out soon.
+
+### "Shift left"
+
+Traditional security is often viewed as a gatekeeper at the end of the development process. Check all the boxes and your app goes into production. Otherwise, try again. Security teams have a reputation for saying no a lot.
+
+Therefore, the thinking goes, why not move security earlier (left in a typical left-to-right drawing of a development pipeline)? Security may still say no, but the consequences of rework in early-stage development are a lot less than they are when the app is complete and ready to ship.
+
+I don’t like the “shift left” term, though. It implies that security is still a one-time event that’s just been moved earlier. Security needs to be a largely automated process everywhere in the application lifecycle, from the supply chain to the development and test process all the way through deployment.
+
+### Manage dependencies
+
+One of the big changes we see with modern app development is that you often don’t write most of the code. Using open source libraries and frameworks is one obvious case in point. But you may also just use external services from public cloud providers or other sources. In many cases, this external code and services will dwarf what you write yourself.
+
+As a result, DevSecOps needs to include a serious focus on your [software supply chain][8]. Are you getting your software from trusted sources? Is it up to date? Is it integrated into the security processes that you use for your own code? What policies do you have in place for which code and APIs you can use? Is commercial support available for the components that you are using for your own production code?
+
+No set of answers are going to be appropriate in all cases. They may be different for a proof-of-concept versus an at-scale production workload. But, as has been the case in manufacturing for a long time (and DevSecOps has many analogs in how manufacturing has evolved), the integrity of the supply chain is critical.
+
+### Visibility
+
+I’ve talked a lot about the need for automation throughout all the stages of the application lifecycle. That makes the assumption that we can see what’s going on in each of those stages.
+
+Effective DevSecOps requires effective instrumentation so that automation knows what to do. This instrumentation falls into a number of categories. There are long-term and high-level metrics that help tell us if the overall DevSecOps process is working well. There are critical alerts that require immediate human intervention (the security scanning system is down!). There are alerts, such as for a failed scan, that require remediation. And there are logs of the many parameters we capture for later analysis (what’s changing over time? What caused that failure?).
+
+### Services vs. monoliths
+
+While DevSecOps practices can be applied across many types of application architectures, they’re most effective with small and loosely coupled components that can be updated and reused without potentially forcing changes elsewhere in the app. In their purest form, these components can be [microservices][9] or functions, but the general principles apply wherever you have loosely coupled services communicating over a network.
+
+This pattern does introduce some new security challenges. The interactions between components can be complex and the total attack surface can be larger because there are now more entry points to the application across the network.
+
+On the other hand, this type of architecture also means that automated security and monitoring also has more granular visibility into the application components because they’re no longer buried deep within a monolithic application.
+
+Don’t get too wrapped up in the DevSecOps term, but take it as a reminder that security is evolving because the way that we write and deploy applications is evolving.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/devsecops-changes-security
+
+作者:[Gordon Haff][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/ghaff
+[1]: https://opensource.com/resources/devops
+[2]: https://opensource.com/tags/devops
+[3]: https://opensource.com/article/18/5/steps-apply-devops-culture-beyond-it
+[4]: https://www.devsecopsdays.com/articles/its-just-a-name
+[5]: https://opensource.com/article/18/4/devsecops
+[6]: https://opensource.com/article/18/6/where-cycle-security-devops
+[7]: https://opensource.com/tags/ansible
+[8]: https://opensource.com/article/17/1/be-open-source-supply-chain
+[9]: https://opensource.com/tags/microservices
diff --git a/sources/talk/20180919 How Writing Can Expand Your Skills and Grow Your Career.md b/sources/talk/20180919 How Writing Can Expand Your Skills and Grow Your Career.md
new file mode 100644
index 0000000000..a862920028
--- /dev/null
+++ b/sources/talk/20180919 How Writing Can Expand Your Skills and Grow Your Career.md
@@ -0,0 +1,46 @@
+How Writing Can Expand Your Skills and Grow Your Career
+======
+
+![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/graffiti-1281310_1920.jpg?itok=RCayfGKv)
+
+At the recent [Open Source Summit in Vancouver][1], I participated in a panel discussion called [How Writing can Change Your Career for the Better (Even if You don't Identify as a Writer][2]. The panel was moderated by Rikki Endsley, Community Manager and Editor for Opensource.com, and it included VM (Vicky) Brasseur, Open Source Strategy Consultant; Alex Williams, Founder, Editor in Chief, The New Stack; and Dawn Foster, Consultant, The Scale Factory.
+
+The talk was [inspired by this article][3], in which Rikki examined some ways that writing can "spark joy" and improve your career in unexpected ways. Full disclosure: I have known Rikki for a long time. We worked at the same company for many years, raised our children together, and remain close friends.
+
+### Write and learn
+
+As Rikki noted in the talk description, “even if you don't consider yourself to be ‘a writer,’ you should consider writing about your open source contributions, project, or community.” Writing can be a great way to share knowledge and engage others in your work, but it has personal benefits as well. It can help you meet new people, learn new skills, and improve your communication style.
+
+I find that writing often clarifies for me what I don’t know about a particular topic. The process highlights gaps in my understanding and motivates me to fill in those gaps through further research, reading, and asking questions.
+
+“Writing about what you don't know can be much harder and more time consuming, but also much more fulfilling and help your career. I've found that writing about what I don't know helps me learn, because I have to research it and understand it well enough to explain it,” Rikki said.
+
+Writing about what you’ve just learned can be valuable to other learners as well. In her blog, [Julia Evans][4] often writes about learning new technical skills. She has a friendly, approachable style along with the ability to break down topics into bite-sized pieces. In her posts, Evans takes readers through her learning process, identifying what was and was not helpful to her along the way, essentially removing obstacles for her readers and clearing a path for those new to the topic.
+
+### Communicate more clearly
+
+Writing can help you practice thinking and speaking more precisely, especially if you’re writing (or speaking) for an international audience. [In this article,][5] for example, Isabel Drost-Fromm provides tips for removing ambiguity for non-native English speakers. Writing can also help you organize your thoughts before a presentation, whether you’re speaking at a conference or to your team.
+
+“The process of writing the articles helps me organize my talks and slides, and it was a great way to provide ‘notes’ for conference attendees, while sharing the topic with a larger international audience that wasn't at the event in person,” Rikki stated.
+
+If you’re interested in writing, I encourage you to do it. I highly recommend the articles mentioned here as a way to get started thinking about the story you have to tell. Unfortunately, our discussion at Open Source Summit was not recorded, but I hope we can do another talk in the future and share more ideas.
+
+Check out the schedule of talks for Open Source Summit Europe and sign up to receive updates:
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/blog/2018/9/how-writing-can-help-you-learn-new-skills-and-grow-your-career
+
+作者:[Amber Ankerholz][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linux.com/users/aankerholz
+[1]: https://events.linuxfoundation.org/events/open-source-summit-north-america-2018/
+[2]: https://ossna18.sched.com/event/FAOF/panel-discussion-how-writing-can-change-your-career-for-the-better-even-if-you-dont-identify-as-a-writer-moderated-by-rikki-endsley-opensourcecom-red-hat?iframe=no#
+[3]: https://opensource.com/article/18/2/career-changing-magic-writing
+[4]: https://jvns.ca/
+[5]: https://www.linux.com/blog/event/open-source-summit-eu/2017/12/technical-writing-international-audience
diff --git a/sources/talk/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md b/sources/talk/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md
new file mode 100644
index 0000000000..e161ec4eec
--- /dev/null
+++ b/sources/talk/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md
@@ -0,0 +1,167 @@
+Linux Has a Code of Conduct and Not Everyone is Happy With it
+======
+**Linux kernel has a new code of conduct (CoC). Linus Torvalds took a break from Linux kernel development just 30 minutes after signing this code of conduct. And since **the writer of this code of conduct has had a controversial past,** it has now become a point of heated discussion. With all the politics involved, not many people are happy with this new CoC.**
+
+If you do not know already, [Linux creator Linus Torvalds has apologized for his past behavior and has taken a temporary break from Linux kernel development to improve his behavior][1].
+
+### The new code of conduct for Linux kernel development
+
+Linux kernel developers have a code of conduct. It’s not like they didn’t have a code before, but the previous [code of conflict][2] is now replaced by this new code of conduct to “help make the kernel community a welcoming environment to participate in.”
+
+> “In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.”
+
+You can read the entire code of conduct on this commit page.
+
+[Linux Code of Conduct][33]
+
+
+### Was Linus Torvalds forced to apologize and take a break?
+
+![Linus Torvalds Apologizes][3]
+
+The code of conduct was signed off by Linus Torvalds and Greg Kroah-Hartman (kind of second-in-command after Torvalds). Dan Williams of Intel and Chris Mason from Facebook were some of the other signees.
+
+If I have read through the timeline correctly, half an hour after signing this code of conduct, Torvalds sent a [mail apologizing for his past behavior][4]. He also announced taking a temporary break to improve upon his behavior.
+
+But at this point some people started reading between the lines, with a special attention to this line from his mail:
+
+> **This week people in our community confronted me about my lifetime of not understanding emotions**. My flippant attacks in emails have been both unprofessional and uncalled for. Especially at times when I made it personal. In my quest for a better patch, this made sense to me. I know now this was not OK and I am truly sorry.
+
+This particular line could be read as if he was coerced into apologizing and taking a break because of the new code of conduct. Though it could also be a precautionary measure to prevent Torvalds from violating the newly created code of conduct.
+
+### The controversy around Contributor Convent creator Coraline Ada Ehmke
+
+The Linux code of conduct is based on the [Contributor Covenant, version 1.4][5]. Contributor Convent has been adopted by hundreds of open source projects. Eclipse, Angular, Ruby, Kubernetes are some of the [many adopters of Contributor Convent][6].
+
+Contributor Covenant has been created by [Coraline Ada Ehmke][7], a software developer, an open-source advocate, and an [LGBT][8] activist. She has been instrumental in promoting diversity in the open source world.
+
+Coraline has also been vocal about her stance against [meritocracy][9]. The Latin word meritocracy originally refers to a “system under which advancement within the system turns on “merits”, like intelligence, credentials, and education.” But activists like [Coraline believe][10] that meritocracy is a negative system where the worth of an individual is measured not by their humanity, but solely by their intellectual output.
+
+[![croraline meritocracy][11]][12]
+Image credit: Twitter user @nickmon1112
+
+Remember that [Linus Torvalds has repeatedly said that he cares about the code, not the person who writes it][13]. Clearly, this goes against Coraline’s view on meritocracy.
+
+Coraline has had a troubled incident in the past with a contributor of [Opal project][14]. There was a [discussion taking place on Twitter][15] where Elia, a core contributor to Opal project from Italy, said “(trans people) not accepting reality is the problem here”.
+
+Coraline was neither in the discussion nor was she a contributor to the Opal project. But as an LGBT activist, she took it to herself and [demanded that Elia be removed from the Opal Project][16] for his ‘views against trans people’. A lengthy and heated discussion took place on Opal’s GitHub repository. Coraline and her supporters, who never contributed to Opal, tried to coerce the moderators into removing Elia, a core contributor of the project.
+
+While Elia wasn’t removed from the project, Opal project maintainers agreed to put up a code of conduct in place. And this code of conduct was nothing else but Coraline’s famed Contributor Covenant that she had pitched to the maintainers herself.
+
+But the story didn’t end here. The Contributor Covenant was then modified and a [new clause added in order to get to Elia][17]. The new clause widened the scope of conduct in public spaces. This malicious change was [spotted by the maintainers][18] and they edited the clause. Opal eventually got rid of the Contributor Covenant and put in place its own guideline.
+
+This is a classic example of how a few offended people, who never contributed a single line of code to the project, tried to oust its core contributor.
+
+### People’s reaction on Linux Code of Conduct and Torvalds’ apology
+
+As soon as Linux code of conduct and Torvalds’ apology went public, Social Media and forums were rife with rumors and [speculations][19]. While many people appreciated this new development, there were some who saw a conspiracy by [SJW infiltrating Linux][20].
+
+A sarcastic tweet by Caroline only fueled the fire.
+
+> I can’t wait for the mass exodus from Linux now that it’s been infiltrated by SJWs. Hahahah [pic.twitter.com/eFeY6r4ENv][21]
+>
+> — Coraline Ada Ehmke (@CoralineAda) [September 16, 2018][22]
+
+In the wake of the Linux CoC controversy, Coraline openly said that the Contributor Convent code of conduct is a political document. This did not go down well with the people who want the political stuff out of the open source projects.
+
+> Some people are saying that the Contributor Covenant is a political document, and they’re right.
+>
+> — Coraline Ada Ehmke (@CoralineAda) [September 16, 2018][23]
+
+Nick Monroe, a freelance journalist, dig up the past of Coraline in order to validate his claim that there is more to Linux CoC than meets the eye. You can go by the entire thread if you want.
+
+> Alright. You've seen this a million times before. It's a code of conduct blah blah blah
+>
+> that has social justice baked right into it. blah blah blah.
+>
+> But something is different about this. [pic.twitter.com/8NUL2K1gu2][24]
+>
+> — Nick Monroe (@nickmon1112) [September 17, 2018][25]
+
+Nick wasn’t the only one to disapprove of the new Linux CoC. The [SJW][26] involvement led to more skepticism.
+
+> I guess the big news in Linux today is that the Linux kernel is now governed by a Code of Conduct and a “post meritocracy” world view.
+>
+> In principle these CoCs look great. In practice they are abused tools to hunt people SJWs don’t like. And they don’t like a lot of people.
+>
+> — Mark Kern (@Grummz) [September 17, 2018][27]
+
+While there were many who appreciated Torvalds’ apology, there were a few who blamed Torvalds’ attitude:
+
+> Am I the only one who thinks Linus Torvalds attitude for decades was a prime contributors to how many of the condescending, rudes, jerks in Linux and open source "communities" behaved? I've never once felt welcomed into the Linux community as a new user.
+>
+> — Jonathan Frappier (@jfrappier) [September 17, 2018][28]
+
+And some were simply not amused with his apology:
+
+> Oh look, an abusive OSS maintainer finally admitted, after *decades* of abusive and toxic behavior, that his behavior *might* be an issue.
+>
+> And a bunch of people I follow are tripping all over themselves to give him cookies for that. 🙄🙄🙄
+>
+> — Kelly Ellis (@justkelly_ok) [September 17, 2018][29]
+
+The entire Torvalds apology episode has raised a genuine concern ;)
+
+> Do we have to put "I don't/do forgive Linus Torvalds" in our bio now?
+>
+> — Verónica. (@maria_fibonacci) [September 17, 2018][30]
+
+Jokes apart, the genuine concern was raised by Sharp, who had [quit Linux Kernel development][31] in 2015 due to the ‘toxic community’.
+
+> The real test here is whether the community that built Linus up and protected his right to be verbally abusive will change. Linus not only needs to change himself, but the Linux kernel community needs to change as well.
+>
+> — Sage Sharp (@_sagesharp_) [September 17, 2018][32]
+
+### What do you think of Linux Code of Conduct?
+
+If you ask my opinion, I do think that a Code of Conduct is the need of the time. It guides people in behaving in a respectable way and helps create a positive environment for all kind of people irrespective of their race, ethnicity, religion, nationality and political views (both left and right).
+
+What are your views on the entire episode? Do you think the CoC will help Linux kernel development? Or will it deteriorate with the involvement of anti-meritocracy SJWs?
+
+We don’t have a code of conduct at It’s FOSS but let’s keep the discussion civil :)
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/linux-code-of-conduct/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/abhishek/
+[1]: https://itsfoss.com/torvalds-takes-a-break-from-linux/
+[2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/CodeOfConflict?id=ddbd2b7ad99a418c60397901a0f3c997d030c65e
+[3]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/linus-torvalds-apologizes.jpeg
+[4]: https://lkml.org/lkml/2018/9/16/167
+[5]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+[6]: https://www.contributor-covenant.org/adopters
+[7]: https://en.wikipedia.org/wiki/Coraline_Ada_Ehmke
+[8]: https://en.wikipedia.org/wiki/LGBT
+[9]: https://en.wikipedia.org/wiki/Meritocracy
+[10]: https://modelviewculture.com/pieces/the-dehumanizing-myth-of-the-meritocracy
+[11]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/croraline-meritocracy.jpg
+[12]: https://pbs.twimg.com/media/DnTTfi7XoAAdk08.jpg
+[13]: https://arstechnica.com/information-technology/2015/01/linus-torvalds-on-why-he-isnt-nice-i-dont-care-about-you/
+[14]: https://opalrb.com/
+[15]: https://twitter.com/krainboltgreene/status/611569515315507200
+[16]: https://github.com/opal/opal/issues/941
+[17]: https://github.com/opal/opal/pull/948/commits/817321e27eccfffb3841f663815c17eecb8ef061#diff-a1ee87dafebc22cbd96979f1b2b7e837R11
+[18]: https://github.com/opal/opal/pull/948#issuecomment-113486020
+[19]: https://www.reddit.com/r/linux/comments/9go8cp/linus_torvalds_daughter_has_signed_the/
+[20]: https://snew.github.io/r/linux/comments/9ghrrj/linuxs_new_coc_is_a_piece_of_shit/
+[21]: https://t.co/eFeY6r4ENv
+[22]: https://twitter.com/CoralineAda/status/1041441155874009093?ref_src=twsrc%5Etfw
+[23]: https://twitter.com/CoralineAda/status/1041465346656530432?ref_src=twsrc%5Etfw
+[24]: https://t.co/8NUL2K1gu2
+[25]: https://twitter.com/nickmon1112/status/1041668315947708416?ref_src=twsrc%5Etfw
+[26]: https://www.urbandictionary.com/define.php?term=SJW
+[27]: https://twitter.com/Grummz/status/1041524170331287552?ref_src=twsrc%5Etfw
+[28]: https://twitter.com/jfrappier/status/1041486055038492674?ref_src=twsrc%5Etfw
+[29]: https://twitter.com/justkelly_ok/status/1041522269002985473?ref_src=twsrc%5Etfw
+[30]: https://twitter.com/maria_fibonacci/status/1041538148121997313?ref_src=twsrc%5Etfw
+[31]: https://www.networkworld.com/article/2988850/opensource-subnet/linux-kernel-dev-sarah-sharp-quits-citing-brutal-communications-style.html
+[32]: https://twitter.com/_sagesharp_/status/1041480963287539712?ref_src=twsrc%5Etfw
+[33]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8a104f8b5867c682d994ffa7a74093c54469c11f
diff --git a/sources/talk/20180920 Building a Secure Ecosystem for Node.js.md b/sources/talk/20180920 Building a Secure Ecosystem for Node.js.md
new file mode 100644
index 0000000000..a64f0e32cc
--- /dev/null
+++ b/sources/talk/20180920 Building a Secure Ecosystem for Node.js.md
@@ -0,0 +1,51 @@
+Building a Secure Ecosystem for Node.js
+======
+
+![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/node-collective.jpg?itok=0e7Y9Iy3)
+
+At[Node+JS Interactive][1], attendees collaborate face to face, network, and learn how to improve their skills with JS in serverless, IoT, and more. [Stephanie Evans][2], Content Manager for Back-end Web Development at LinkedIn Learning, will be speaking at the upcoming conference about building a secure ecosystem for Node.js. Here she answers a few questions about teaching and learning basic security practices.
+
+**Linux.com: Your background is in tech education, can you provide more details on how you would define this and how you got into this area of expertise?**
+
+**Stephanie Evans:** It sounds cliché, but I’ve always been passionate about education and helping others. After college, I started out as an instructor of a thoroughly analog skill: reading. I worked my way up to hiring and training reading teachers and discovered my passion for helping people share their knowledge and refine their teaching craft. Later, I went to work for McGraw Hill Education, publishing self-study certification books on popular IT certs like CompTIA’s Network+ and Security+, ISAAP’s CISSP, etc. My job was to figure out who the biggest audiences in IT were; what they needed to know to succeed professionally; hire the right book author; and help develop the manuscript with them.
+
+I moved into online learning/e-learning 4 years ago and shifted to video training courses geared towards developers. I enjoy working with people who spend their time building and solving complex problems. I now manage the video training library for back-end web developers at LinkedIn Learning/Lynda.com and figure out what developers need to know; hire instructors to create that content; and work together to figure out how best to teach it to them. And, then update those courses when they inevitably become out of date.
+
+**Linux.com: What initially drove you to use your skill set in education to help with security practices?**
+
+**Evans:** I attend a lot of conferences, watch a lot of talks, and chat to a lot of developers as part of my job. I distinctly remember attending a security best practices talk at a very large, enterprise-tech focused conference and was surprised by the rudimentary content being covered. Poor guy, I’d thought…he’s going to get panned by this audience. But then I looked around and most everyone was engaged. They were learning something new and compelling. And it hit me: I had been in a security echo chamber of my own making. Just like the mainstream developer isn’t working with the cutting-edge technology people are raving about on Twitter, they aren’t necessarily as fluent in basic security practices as I’d assumed. A mix of unawareness, intense time pressure, and perhaps some misplaced trust can lead to a “security later” mentality. But with the global cost of cybercrime up to 6 00 billion a year from 500 billion in 2014 as well as the [exploding amount of data on the web][3]. We can’t afford to be working around security or assuming everyone knows the basics.
+
+**Linux.com: What do you think are some common misconceptions about security with Node.js and in general with developers?**
+
+**Evans:** I think one of the biggest misconceptions is that security awareness and practices should come “later” in a developer’s career (and later in the development cycle). Yes, your first priority is to learn that Java and JavaScript are not the same thing—that’s obviously most important. And you do have to understand how to create a form before you can understand how to prevent cross-site -scripting attacks. But helping developers understand—at all stages of their career and learning journey—what the potential vulnerabilities are and how they can be exploited needs to be a much higher priority and come earlier than we may intuitively think.
+
+I joke with my instructors that we have to sneak in the ‘eat your vegetables’ content to our courses. Security is an exciting, complex and challenging topic, but it can feel like you’re having to eat your vegetables as a developer when you dig into it. Often ‘security’ is a separate department (that can be perceived as ‘slowing things down’ or getting in the way of deploying code) and it can further distance developers from their role in securing their applications.
+
+I also think that those who truly understand security can feel that it’s overwhelmingly complex to teach—but we have to start somewhere. I attended an introductory npm talk last year that talked about how to work with dependencies and packages…but never once mentioned the possibility of malicious code making it into your application through these packages. I’m all about teaching just enough at the right time and not throwing the kitchen sink of knowledge at new developers. We should stop thinking of security—or even just security awareness—as an intermediate or advanced skill and start bringing it up early and often.
+
+**Linux.com: How can we infuse tech education into our security practices? Where does this begin?**
+
+**Evans:** It definitely goes both ways. Clear documentation and practical resources right alongside security recommendations go a long way towards ensuring understanding and adoption. You have to make things as easy as possible if you want people to actually do it. And you have to make those best practices accessible enough to understand.
+
+The [2018 Node User Survey Report][4] from the Node.js Foundation showed that while learning resources around Node.js and JavaScript development improved, the availability and quality of learning resources for Node.js Security received the lowest scores across the board.
+
+After documentation and Stack Overflow, many developers rely on online videos and tutorials—we need to push security education to the forefront, rather than expecting developers to seek it out. OWASP, the nodegoat project, and the Node.js Security Working Group are doing great work here to move the needle. I think tech education can do even more to bring security in earlier in the learning journey and create awareness about common exploits and important resources.
+
+Learn more at [Node+JS Interactive][1], coming up October 10-12, 2018 in Vancouver, Canada.
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/blog/node-js/2018/9/building-secure-ecosystem-nodejs
+
+作者:[The Linux Foundation][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linux.com/users/ericstephenbrown
+[1]: https://events.linuxfoundation.org/events/node-js-interactive-2018/?utm_source=Linux.com&utm_medium=article&utm_campaign=jsint18
+[2]: https://jsi2018.sched.com/speaker/stevans1?iframe=no
+[3]: https://www.forbes.com/sites/bernardmarr/2018/05/21/how-much-data-do-we-create-every-day-the-mind-blowing-stats-everyone-should-read/#101d261a60ba
+[4]: https://nodejs.org/en/user-survey-report/
diff --git a/sources/talk/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md b/sources/talk/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md
new file mode 100644
index 0000000000..93c84ae43c
--- /dev/null
+++ b/sources/talk/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md
@@ -0,0 +1,126 @@
+WinWorld – A Large Collection Of Defunct OSs, Software And Games
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/WinWorld-720x340.jpeg)
+
+The other day, I was testing **Dosbox** which is used to [**run MS-DOS games and programs in Linux**][1]. While searching for some classic programs like Turbo C++, I stumbled upon a website named **WinWorld**. I went through a few links in this site and quite surprised. WinWorld has a plenty of good-old and classic OSs, software, applications, development tools, games and a lot of other miscellaneous utilities which are abandoned by the developers a long time ago. It is an online museum run by community members, volunteers and is dedicated to the preservation and sharing of vintage, abandoned, and pre-release software.
+
+WinWorld was started back in 2003 and its founder claims that the idea to start this site inspired by Yahoo briefcases. The primary purpose of this site is to preserve and share old software. Over the years, many people volunteered to improve this site in numerous ways and the collection of old software in WinWorld has grown exponentially. The entire WinWorld library is free, open and available to everyone.
+
+### WinWorld Hosts A Huge Collection Of Defunct OSs, Software, System Applications And Games
+
+Like I already said, WinWorld hosts a huge collection of abandonware which are no-longer in development.
+
+**Linux and Unix:**
+
+Here, I have given the complete list of UNIX and LINUX OSs with brief summary of the each OS and the release year of first version.
+
+ * **A/UX** – An early port of Unix to Apple’s 68k based Macintosh platform, released in 1988.
+ * **AIX** – A Unix port originally developed by IBM, released in 1986.
+ * **AT &T System V Unix** – One of the first commercial versions of the Unix OS, released in 1983.
+ * **Banyan VINES** – A network operating system originally designed for Unix, released in 1984.
+ * **Corel Linux** – A commercial Linux distro, released in 1999.
+ * **DEC OSF-1** – A version of UNIX developed by Digital Equipment Corporation (DEC), released in 1991.
+ * **Digital UNIX** – A renamed version of **OSF-1** , released by DEC in 1995.**
+**
+ * **FreeBSD** **1.0** – The first release of FreeBSD, released in 1993. It is based on 4.3BSD.
+ * **Gentus Linux** – A distribution that failed to comply with GPL. Developed by ABIT and released in 2000.
+ * **HP-UX** – A UNIX variant, released in 1992.
+ * **IRIX** – An a operating system developed by Silicon Graphics Inc (SGI ) and it is released in 1988.
+ * **Lindows** – Similar to Corel Linux. It is developed for commercial purpose and released in 2002.
+ * **Linux Kernel** – A copy of the Linux Sourcecode, version 0.01. Released in the early 90’s.
+ * **Mandrake Linux** – A Linux distribution based on Red Hat Linux. It was later renamed to Mandriva. Released in 1999.
+ * **NEWS-OS** – A variant of BSD, developed by Sony and released in 1989.
+ * **NeXTStep** – A Unix based OS from NeXT computers headed by **Steve Jobs**. It is released in 1987.
+ * **PC/IX** – A UNIX variant created for IBM PCs. Released in 1984.
+ * **Red Hat Linux 5.0** – A commercial Linux distribution by Red Hat.
+ * **Sun Solaris** – A Unix based OS by Sun Microsystems. Released in 1992.
+ * **SunOS** – A Unix-based OS derived from BSD by Sun Microsystems, released in 1982.
+ * **Tru64 UNIX** – A formerly known OSF/1 by DEC.
+ * **Ubuntu 4.10** – The well-known OS based on Debian.This was a beta pre-release, prior to the very first official Ubuntu release.
+ * **Ultrix** – A UNIX clone developed by DEC.
+ * **UnixWare** – A UNIX variant from Novell.
+ * **Xandros Linux** – A proprietary variant of Linux. It is based on Corel Linux. The first version is released in 2003.
+ * **Xenix** – A UNIX variant originally published by Microsoft released in 1984.
+
+
+
+Not just Linux/Unix, you can find other operating systems including DOS, Windows, Apple/Mac, OS 2, Novell netware and other OSs and shells.
+
+**DOS & CP/M:**
+
+ * 86-DOS
+ * Concurrent CPM-86 & Concurrent DOS
+ * CP/M 86 & CP/M-80
+ * DOS Plus
+ * DR-DOS
+ * GEM
+ * MP/M
+ * MS-DOS
+ * Multitasking MS-DOS 4.00
+ * Multiuser DOS
+ * PC-DOS
+ * PC-MOS
+ * PTS-DOS
+ * Real/32
+ * Tandy Deskmate
+ * Wendin DOS
+
+
+
+**Windows:**
+
+ * BackOffice Server
+ * Windows 1.0/2.x/3.0/3.1/95/98/2000/ME/NT 3.X/NT 4.0
+ * Windows Whistler
+ * WinFrame
+
+
+
+**Apple/Mac:**
+
+ * Mac OS 7/8/9
+ * Mac OS X
+ * System Software (0-6)
+
+
+
+**OS/2:**
+
+ * Citrix Multiuser
+ * OS/2 1.x
+ * OS/2 2.0
+ * OS/2 3.x
+ * OS/2 Warp 4
+
+
+
+Also, WinWorld hosts a huge collection of old software, system applications, development tools and games. Go and check them out as well.
+
+To be honest, I don’t even know the existence of most of the stuffs listed in this site. Some of the tools listed here were released years before I was born.
+
+Just in case, If you ever in need of or wanted to test a classic stuff (be it a game, software, OS), look nowhere, just head over to WinWorld library and download them that you want to explore. Good luck!
+
+**Disclaimer:**
+
+OSTechNix is not affiliated with WinWorld site in any way. We, at OSTechNix, don’t know the authenticity and integrity of the stuffs hosted in this site. Also, downloading software from third-party sites is not safe or may be illegal in your region. Neither the author nor OSTechNix is responsible for any kind of damage. Use this service at your own risk.
+
+And, that’s all for now. Hope this was useful. More good stuffs to come. Stay tuned!
+
+Cheers!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/winworld-a-large-collection-of-defunct-oss-software-and-games/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
+[1]: https://www.ostechnix.com/how-to-run-ms-dos-games-and-programs-in-linux/
diff --git a/sources/tech/20160503 Cloud Commander - A Web File Manager With Console And Editor.md b/sources/tech/20160503 Cloud Commander - A Web File Manager With Console And Editor.md
deleted file mode 100644
index 0b842e32b1..0000000000
--- a/sources/tech/20160503 Cloud Commander - A Web File Manager With Console And Editor.md
+++ /dev/null
@@ -1,145 +0,0 @@
-fuzheng1998 translating
-======
-Cloud Commander – A Web File Manager With Console And Editor
-======
-
-![](https://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-A-Web-File-Manager-With-Console-And-Editor-720x340.png)
-
-**Cloud commander** is a web-based file manager application that allows you to view, access, and manage the files and folders of your system from any computer, mobile, and tablet Pc via a web browser. It has two simple and classic panels, and automatically converts it’s size as per your device’s display size. It also has two built-in editors namely **Dword** and **Edward** with support of Syntax-highlighting and one **Console** with support of your system’s command line. So you can edit your files on the go. Cloud Commander server is a cross-platform application that runs on Linux, Windows and Mac OS X operating systems, and the client will run on any web browser. It is written using **JavaScript/Node.Js** , and is licensed under **MIT**.
-
-In this brief tutorial, let us see how to install Cloud Commander in Ubuntu 18.04 LTS server.
-
-### Prerequisites
-
-As I mentioned earlier, Cloud Commander is written using Node.Js. So, in order to install Cloud Commander we need to install Node.Js first. To do so, refer the following guide.
-
-### Install Cloud Commander
-
-After installing Node.Js, run the following command to install Cloud Commander:
-```
-$ npm i cloudcmd -g
-
-```
-
-Congratulations! Cloud Commander has been installed. Let us go ahead and see the basic usage of Cloud Commander.
-
-### Getting started with Cloud Commander
-
-Run the following command to start Cloud Commander:
-```
-$ cloudcmd
-
-```
-
-**Sample output:**
-```
-url: http://localhost:8000
-
-```
-
-Now, open your web browser and navigate to the URL: ** ****.
-
-From now on, you can create, delete, view, manage files or folders right in the web browser from the local system or remote system, or mobile, tablet etc.
-
-![][2]
-
-As you can see in the above screenshot, Cloud Commander has two panels, ten hotkeys (F1 to F10), and Console.
-
-Each hotkey does a unique job.
-
- * F1 – Help
- * F2 – Rename file/folder
- * F3 – View files and folders
- * F4 – Edit files
- * F5 – Copy files/folders
- * F6 – Move files/folders
- * F7 – Create new directory
- * F8 – Delete file/folder
- * F9 – Open Menu
- * F10 – Open config
-
-
-
-#### Cloud Commander console
-
-Click on the Console icon. This will open your default system’s shell.
-
-![][3]
-
-From this console you can do all sort of administration tasks such as installing packages, removing packages, update your system etc. You can even shutdown or reboot system. Therefore, Cloud Commander is not just a file manager, but also has the functionality of a remote administration tool.
-
-#### Creating files/folders
-
-To create a new file or folder Right click on any empty place and go to **New - >File or Directory**.
-
-![][4]
-
-#### View files
-
-You can view pictures, watch audio and video files.
-
-![][5]
-
-#### Upload files
-
-The other cool feature is we can easily upload a file to Cloud Commander system from any system or device.
-
-To upload a file, right click on any empty space in the Cloud Commander panel, and click on the **Upload** option.
-
-![][6]
-
-Select the files you want to upload.
-
-Also, you can upload files from the Cloud services like Google drive, Dropbox, Amazon cloud drive, Facebook, Twitter, Gmail, GtiHub, Picasa, Instagram and many.
-
-To upload files from Cloud, right click on any empty space in the panel and select **Upload from Cloud**.
-
-![][7]
-
-Select any web service of your choice, for example Google drive. Click **Connect to Google drive** button.
-
-![][8]
-
-In the next step, authenticate your google drive with Cloud Commander. Finally, select the files from your Google drive and click **Upload**.
-
-![][9]
-
-#### Update Cloud Commander
-
-To update Cloud Commander to the latest available version, run the following command:
-```
-$ npm update cloudcmd -g
-
-```
-
-#### Conclusion
-
-As far as I tested Cloud Commander, It worked like charm. I didn’t face a single issue during the testing in my Ubuntu server. Also, Cloud Commander is not just a web-based file manager, but also acts as a remote administration tool that performs most Linux administration tasks. You can create a files/folders, rename, delete, edit, and view them. Also, You can install, update, upgrade, and remove any package as the way you do in the local system from the Terminal. And, of course, you can even shutdown or restart the system from the Cloud Commander console itself. What do you need more? Give it a try, you will find it useful.
-
-That’s all for now. I will be here soon with another interesting article. Until then, stay tuned with OSTechNix.
-
-Cheers!
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/cloud-commander-a-web-file-manager-with-console-and-editor/
-
-作者:[SK][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://www.ostechnix.com/author/sk/
-[1]:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
-[2]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-Google-Chrome_006-4.jpg
-[3]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-Google-Chrome_007-2.jpg
-[4]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-commander-file-folder-1.png
-[5]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_008-1.jpg
-[6]:http://www.ostechnix.com/wp-content/uploads/2016/05/cloud-commander-upload-2.png
-[7]:http://www.ostechnix.com/wp-content/uploads/2016/05/upload-from-cloud-1.png
-[8]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_009-2.jpg
-[9]:http://www.ostechnix.com/wp-content/uploads/2016/05/Cloud-Commander-home-sk-Google-Chrome_010-1.jpg
diff --git a/sources/tech/20171005 10 Games You Can Play on Linux with Wine.md b/sources/tech/20171005 10 Games You Can Play on Linux with Wine.md
index 5bab9d8c65..37b1adb669 100644
--- a/sources/tech/20171005 10 Games You Can Play on Linux with Wine.md
+++ b/sources/tech/20171005 10 Games You Can Play on Linux with Wine.md
@@ -1,3 +1,4 @@
+### fuzheng1998 translating
10 Games You Can Play on Linux with Wine
======
![](https://www.maketecheasier.com/assets/uploads/2017/09/wine-games-feat.jpg)
diff --git a/sources/tech/20171124 How do groups work on Linux.md b/sources/tech/20171124 How do groups work on Linux.md
deleted file mode 100644
index 5071c7a8a3..0000000000
--- a/sources/tech/20171124 How do groups work on Linux.md
+++ /dev/null
@@ -1,143 +0,0 @@
-Translating by DavidChen
-
-How do groups work on Linux?
-============================================================
-
-Hello! Last week, I thought I knew how users and groups worked on Linux. Here is what I thought:
-
-1. Every process belongs to a user (like `julia`)
-
-2. When a process tries to read a file owned by a group, Linux a) checks if the user `julia` can access the file, and b) checks which groups `julia` belongs to, and whether any of those groups owns & can access that file
-
-3. If either of those is true (or if the ‘any’ bits are set right) then the process can access the file
-
-So, for example, if a process is owned by the `julia` user and `julia` is in the `awesome` group, then the process would be allowed to read this file.
-
-```
-r--r--r-- 1 root awesome 6872 Sep 24 11:09 file.txt
-
-```
-
-I had not thought carefully about this, but if pressed I would have said that it probably checks the `/etc/group` file at runtime to see what groups you’re in.
-
-### that is not how groups work
-
-I found out at work last week that, no, what I describe above is not how groups work. In particular Linux does **not** check which groups a process’s user belongs to every time that process tries to access a file.
-
-Here is how groups actually work! I learned this by reading Chapter 9 (“Process Credentials”) of [The Linux Programming Interface][1] which is an incredible book. As soon as I realized that I did not understand how users and groups worked, I opened up the table of contents with absolute confidence that it would tell me what’s up, and I was right.
-
-### how users and groups checks are done
-
-They key new insight for me was pretty simple! The chapter starts out by saying that user and group IDs are **attributes of the process**:
-
-* real user ID and group ID;
-
-* effective user ID and group ID;
-
-* saved set-user-ID and saved set-group-ID;
-
-* file-system user ID and group ID (Linux-specific); and
-
-* supplementary group IDs.
-
-This means that the way Linux **actually** does group checks to see a process can read a file is:
-
-* look at the process’s group IDs & supplementary group IDs (from the attributes on the process, **not** by looking them up in `/etc/group`)
-
-* look at the group on the file
-
-* see if they match
-
-Generally when doing access control checks it uses the **effective** user/group ID, not the real user/group ID. Technically when accessing a file it actually uses the **file-system** ids but those are usually the same as the effective uid/gid.
-
-### Adding a user to a group doesn’t put existing processes in that group
-
-Here’s another fun example that follows from this: if I create a new `panda` group and add myself (bork) to it, then run `groups` to check my group memberships – I’m not in the panda group!
-
-```
-bork@kiwi~> sudo addgroup panda
-Adding group `panda' (GID 1001) ...
-Done.
-bork@kiwi~> sudo adduser bork panda
-Adding user `bork' to group `panda' ...
-Adding user bork to group panda
-Done.
-bork@kiwi~> groups
-bork adm cdrom sudo dip plugdev lpadmin sambashare docker lxd
-
-```
-
-no `panda` in that list! To double check, let’s try making a file owned by the `panda`group and see if I can access it:
-
-```
-$ touch panda-file.txt
-$ sudo chown root:panda panda-file.txt
-$ sudo chmod 660 panda-file.txt
-$ cat panda-file.txt
-cat: panda-file.txt: Permission denied
-
-```
-
-Sure enough, I can’t access `panda-file.txt`. No big surprise there. My shell didn’t have the `panda` group as a supplementary GID before, and running `adduser bork panda` didn’t do anything to change that.
-
-### how do you get your groups in the first place?
-
-So this raises kind of a confusing question, right – if processes have groups baked into them, how do you get assigned your groups in the first place? Obviously you can’t assign yourself more groups (that would defeat the purpose of access control).
-
-It’s relatively clear how processes I **execute** from my shell (bash/fish) get their groups – my shell runs as me, and it has a bunch of group IDs on it. Processes I execute from my shell are forked from the shell so they get the same groups as the shell had.
-
-So there needs to be some “first” process that has your groups set on it, and all the other processes you set inherit their groups from that. That process is called your **login shell** and it’s run by the `login` program (`/bin/login`) on my laptop. `login` runs as root and calls a C function called `initgroups` to set up your groups (by reading `/etc/group`). It’s allowed to set up your groups because it runs as root.
-
-### let’s try logging in again!
-
-So! Let’s say I am running in a shell, and I want to refresh my groups! From what we’ve learned about how groups are initialized, I should be able to run `login` to refresh my groups and start a new login shell!
-
-Let’s try it:
-
-```
-$ sudo login bork
-$ groups
-bork adm cdrom sudo dip plugdev lpadmin sambashare docker lxd panda
-$ cat panda-file.txt # it works! I can access the file owned by `panda` now!
-
-```
-
-Sure enough, it works! Now the new shell that `login` spawned is part of the `panda` group! Awesome! This won’t affect any other shells I already have running. If I really want the new `panda` group everywhere, I need to restart my login session completely, which means quitting my window manager and logging in again.
-
-### newgrp
-
-Somebody on Twitter told me that if you want to start a new shell with a new group that you’ve been added to, you can use `newgrp`. Like this:
-
-```
-sudo addgroup panda
-sudo adduser bork panda
-newgrp panda # starts a new shell, and you don't have to be root to run it!
-
-```
-
-You can accomplish the same(ish) thing with `sg panda bash` which will start a `bash` shell that runs with the `panda` group.
-
-### setuid sets the effective user ID
-
-I’ve also always been a little vague about what it means for a process to run as “setuid root”. It turns out that setuid sets the effective user ID! So if I (`julia`) run a setuid root process (like `passwd`), then the **real** user ID will be set to `julia`, and the **effective** user ID will be set to `root`.
-
-`passwd` needs to run as root, but it can look at its real user ID to see that `julia`started the process, and prevent `julia` from editing any passwords except for `julia`’s password.
-
-### that’s all!
-
-There are a bunch more details about all the edge cases and exactly how everything works in The Linux Programming Interface so I will not get into all the details here. That book is amazing. Everything I talked about in this post is from Chapter 9, which is a 17-page chapter inside a 1300-page book.
-
-The thing I love most about that book is that reading 17 pages about how users and groups work is really approachable, self-contained, super useful, and I don’t have to tackle all 1300 pages of it at once to learn helpful things :)
-
---------------------------------------------------------------------------------
-
-via: https://jvns.ca/blog/2017/11/20/groups/
-
-作者:[Julia Evans ][a]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://jvns.ca/
-[1]:http://man7.org/tlpi/
diff --git a/sources/tech/20180522 Free Resources for Securing Your Open Source Code.md b/sources/tech/20180522 Free Resources for Securing Your Open Source Code.md
deleted file mode 100644
index 4a7522ff9f..0000000000
--- a/sources/tech/20180522 Free Resources for Securing Your Open Source Code.md
+++ /dev/null
@@ -1,83 +0,0 @@
-Free Resources for Securing Your Open Source Code
-======
-
-![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/open-security.jpg?itok=R3M5LDrb)
-
-While the widespread adoption of open source continues at a healthy rate, the recent [2018 Open Source Security and Risk Analysis Report][1] from Black Duck and Synopsys reveals some common concerns and highlights the need for sound security practices. The report examines findings from the anonymized data of over 1,100 commercial codebases with represented Industries from automotive, Big Data, enterprise software, financial services, healthcare, IoT, manufacturing, and more.
-
-The report highlights a massive uptick in open source adoption, with 96 percent of the applications scanned containing open source components. However, the report also includes warnings about existing vulnerabilities. Among the [findings][2]:
-
- * “What is worrisome is that 78 percent of the codebases examined contained at least one open source vulnerability, with an average 64 vulnerabilities per codebase.”
-
- * “Over 54 percent of the vulnerabilities found in audited codebases are considered high-risk vulnerabilities.”
-
- * Seventeen percent of the codebases contained a highly publicized vulnerability such as Heartbleed, Logjam, Freak, Drown, or Poodle.
-
-
-
-
-"The report clearly demonstrates that with the growth in open source use, organizations need to ensure they have the tools to detect vulnerabilities in open source components and manage whatever license compliance their use of open source may require," said Tim Mackey, technical evangelist at Black Duck by Synopsys.
-
-Indeed, with ever more impactful security threats emerging,the need for fluency with security tools and practices has never been more pronounced. Most organizations are aware that network administrators and sysadmins need to have strong security skills, and, in many cases security certifications. [In this article,][3] we explored some of the tools, certifications and practices that many of them wisely embrace.
-
-The Linux Foundation has also made available many informational and educational resources on security. Likewise, the Linux community offers many free resources for specific platforms and tools. For example, The Linux Foundation has published a [Linux workstation security checklist][4] that covers a lot of good ground. Online publications ranging from the [Fedora security guide][5] to the[Securing Debian Manual][6] can also help users protect against vulnerabilities within specific platforms.
-
-The widespread use of cloud platforms such as OpenStack is also stepping up the need for cloud-centric security smarts. According to The Linux Foundation’s[Guide to the Open Cloud][7]: “Security is still a top concern among companies considering moving workloads to the public cloud, according to Gartner, despite a strong track record of security and increased transparency from cloud providers. Rather, security is still an issue largely due to companies’ inexperience and improper use of cloud services.”
-
-For both organizations and individuals, the smallest holes in implementation of routers, firewalls, VPNs, and virtual machines can leave room for big security problems. Here is a collection of free tools that can plug these kinds of holes:
-
- * [Wireshark][8], a packet analyzer
-
- * [KeePass Password Safe][9], a free open source password manager
-
- * [Malwarebytes][10], a free anti-malware and antivirus tool
-
- * [NMAP][11], a powerful security scanner
-
- * [NIKTO][12], an open source web server scanner
-
- * [Ansible][13], a tool for automating secure IT provisioning
-
- * [Metasploit][14], a tool for understanding attack vectors and doing penetration testing
-
-
-
-
-Instructional videos abound for these tools. You’ll find a whole[tutorial series][15] for Metasploit, and [video tutorials][16] for Wireshark. Quite a few free ebooks provide good guidance on security as well. For example, one of the common ways for security threats to invade open source platforms occurs in M&A scenarios, where technology platforms are merged—often without proper open source audits. In an ebook titled [Open Source Audits in Merger and Acquisition Transactions][17], from Ibrahim Haddad and The Linux Foundation, you’ll find an overview of the open source audit process and important considerations for code compliance, preparation, and documentation.
-
-Meanwhile, we’ve[previously covered][18] a free ebook from the editors at[The New Stack][19] called Networking, Security & Storage with Docker & Containers. It covers the latest approaches to secure container networking, as well as native efforts by Docker to create efficient and secure networking practices. The ebook is loaded with best practices for locking down security at scale.
-
-All of these tools and resources, and many more, can go a long way toward preventing security problems, and an ounce of prevention is, as they say, worth a pound of cure. With security breaches continuing, now is an excellent time to look into the many security and compliance resources for open source tools and platforms available. Learn more about security, compliance, and open source project health [here][20].
-
---------------------------------------------------------------------------------
-
-via: https://www.linux.com/blog/2018/5/free-resources-securing-your-open-source-code
-
-作者:[Sam Dean][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://www.linux.com/users/sam-dean
-[1]:https://www.blackducksoftware.com/open-source-security-risk-analysis-2018
-[2]:https://www.prnewswire.com/news-releases/synopsys-report-finds-majority-of-software-plagued-by-known-vulnerabilities-and-license-conflicts-as-open-source-adoption-soars-300648367.html
-[3]:https://www.linux.com/blog/sysadmin-ebook/2017/8/future-proof-your-sysadmin-career-locking-down-security
-[4]:http://go.linuxfoundation.org/ebook_workstation_security
-[5]:https://docs.fedoraproject.org/en-US/Fedora/19/html/Security_Guide/index.html
-[6]:https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html
-[7]:https://www.linux.com/publications/2016-guide-open-cloud
-[8]:https://www.wireshark.org/
-[9]:http://keepass.info/
-[10]:https://www.malwarebytes.com/
-[11]:http://searchsecurity.techtarget.co.uk/tip/Nmap-tutorial-Nmap-scan-examples-for-vulnerability-discovery
-[12]:https://cirt.net/Nikto2
-[13]:https://www.ansible.com/
-[14]:https://www.metasploit.com/
-[15]:http://www.computerweekly.com/tutorial/The-Metasploit-Framework-Tutorial-PDF-compendium-Your-ready-reckoner
-[16]:https://www.youtube.com/watch?v=TkCSr30UojM
-[17]:https://www.linuxfoundation.org/resources/open-source-audits-merger-acquisition-transactions/
-[18]:https://www.linux.com/news/networking-security-storage-docker-containers-free-ebook-covers-essentials
-[19]:http://thenewstack.io/ebookseries/
-[20]:https://www.linuxfoundation.org/projects/security-compliance/
diff --git a/sources/tech/20180720 How to build a URL shortener with Apache.md b/sources/tech/20180720 How to build a URL shortener with Apache.md
deleted file mode 100644
index 2599b9ecca..0000000000
--- a/sources/tech/20180720 How to build a URL shortener with Apache.md
+++ /dev/null
@@ -1,84 +0,0 @@
-translating---geekpi
-
-How to build a URL shortener with Apache
-======
-
-![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/openweb-osdc-lead.png?itok=yjU4KliG)
-
-Long ago, folks started sharing links on Twitter. The 140-character limit meant that URLs might consume most (or all) of a tweet, so people turned to URL shorteners. Eventually, Twitter added a built-in URL shortener ([t.co][1]).
-
-Character count isn't as important now, but there are still other reasons to shorten links. For one, the shortening service may provide analytics—you can see how popular the links are that you share. It also simplifies making easy-to-remember URLs. For example, [bit.ly/INtravel][2] is much easier to remember than . And URL shorteners can come in handy if you want to pre-share a link but don't know the final destination yet.
-
-Like any technology, URL shorteners aren't all positive. By masking the ultimate destination, shortened links can be used to direct people to malicious or offensive content. But if you surf carefully, URL shorteners are a useful tool.
-
-We [covered shorteners previously][3] on this site, but maybe you want to run something simple that's powered by a text file. In this article, we'll show how to use the Apache HTTP server's mod_rewrite feature to set up your own URL shortener. If you're not familiar with the Apache HTTP server, check out David Both's article on [installing and configuring][4] it.
-
-### Create a VirtualHost
-
-In this tutorial, I'm assuming you bought a cool domain that you'll use exclusively for the URL shortener. For example, my website is [funnelfiasco.com][5] , so I bought [funnelfias.co][6] to use for my URL shortener (okay, it's not exactly short, but it feeds my vanity). If you won't run the shortener as a separate domain, skip to the next section.
-
-The first step is to set up the VirtualHost that will be used for the URL shortener. For more information on VirtualHosts, see [David Both's article][7]. This setup requires just a few basic lines:
-```
-
-
- ServerName funnelfias.co
-
-
-
-```
-
-### Create the rewrites
-
-This service uses HTTPD's rewrite engine to rewrite the URLs. If you created a VirtualHost in the section above, the configuration below goes into your VirtualHost section. Otherwise, it goes in the VirtualHost or main HTTPD configuration for your server.
-```
- RewriteEngine on
-
- RewriteMap shortlinks txt:/data/web/shortlink/links.txt
-
- RewriteRule ^/(.+)$ ${shortlinks:$1} [R=temp,L]
-
-```
-
-The first line simply enables the rewrite engine. The second line builds a map of the short links from a text file. The path above is only an example; you will need to use a valid path on your system (make sure it's readable by the user account that runs HTTPD). The last line rewrites the URL. In this example, it takes any characters and looks them up in the rewrite map. You may want to have your rewrites use a particular string at the beginning. For example, if you wanted all your shortened links to be of the form "slX" (where X is a number), you would replace `(.+)` above with `(sl\d+)`.
-
-I used a temporary (HTTP 302) redirect here. This allows me to update the destination URL later. If you want the short link to always point to the same target, you can use a permanent (HTTP 301) redirect instead. Replace `temp` on line three with `permanent`.
-
-### Build your map
-
-Edit the file you specified on the `RewriteMap` line of the configuration. The format is a space-separated key-value store. Put one link on each line:
-```
- osdc https://opensource.com/users/bcotton
-
- twitter https://twitter.com/funnelfiasco
-
- swody1 https://www.spc.noaa.gov/products/outlook/day1otlk.html
-
-```
-
-### Restart HTTPD
-
-The last step is to restart the HTTPD process. This is done with `systemctl restart httpd` or similar (the command and daemon name may differ by distribution). Your link shortener is now up and running. When you're ready to edit your map, you don't need to restart the web server. All you have to do is save the file, and the web server will pick up the differences.
-
-### Future work
-
-This example gives you a basic URL shortener. It can serve as a good starting point if you want to develop your own management interface as a learning project. Or you can just use it to share memorable links to forgettable URLs.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/7/apache-url-shortener
-
-作者:[Ben Cotton][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/bcotton
-[1]:http://t.co
-[2]:http://bit.ly/INtravel
-[3]:https://opensource.com/article/17/3/url-link-shortener
-[4]:https://opensource.com/article/18/2/how-configure-apache-web-server
-[5]:http://funnelfiasco.com
-[6]:http://funnelfias.co
-[7]:https://opensource.com/article/18/3/configuring-multiple-web-sites-apache
diff --git a/sources/tech/20180824 5 cool music player apps.md b/sources/tech/20180824 5 cool music player apps.md
index 3a8d90400c..fbacc8f8b4 100644
--- a/sources/tech/20180824 5 cool music player apps.md
+++ b/sources/tech/20180824 5 cool music player apps.md
@@ -1,3 +1,5 @@
+translating---geekpi
+
5 cool music player apps
======
diff --git a/sources/tech/20180828 How to Play Windows-only Games on Linux with Steam Play.md b/sources/tech/20180828 How to Play Windows-only Games on Linux with Steam Play.md
index e0eea91e8b..d4ff9692d6 100644
--- a/sources/tech/20180828 How to Play Windows-only Games on Linux with Steam Play.md
+++ b/sources/tech/20180828 How to Play Windows-only Games on Linux with Steam Play.md
@@ -1,3 +1,5 @@
+translating---geekpi
+
How to Play Windows-only Games on Linux with Steam Play
======
The new experimental feature of Steam allows you to play Windows-only games on Linux. Here’s how to use this feature in Steam right now.
diff --git a/sources/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md b/sources/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md
deleted file mode 100644
index 3dc6a33407..0000000000
--- a/sources/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md
+++ /dev/null
@@ -1,70 +0,0 @@
-translating---geekpi
-
-How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions
-======
-Creating a slideshow of photos is a matter of a few clicks. Here’s how to make a slideshow of pictures in Ubuntu 18.04 and other Linux distributions.
-
-![How to create slideshow of photos in Ubuntu Linux][1]
-
-Imagine yourself in a situation where your friends and family are visiting you and request you to show the pictures of a recent event/trip.
-
-You have the photos saved on your computers, neatly in a separate folder. You invite everyone near the computer. You go to the folder, click on one of the pictures and start showing them the photos one by one by pressing the arrow keys.
-
-But that’s tiring! It will be a lot better if those images get changed automatically every few seconds.
-
-That’s called a slideshow and I am going to show you how to create a slideshow of photos in Ubuntu. This will allow you to loop pictures from a folder and display them in fullscreen mode.
-
-### Creating photo slideshow in Ubuntu 18.04 and other Linux distributions
-
-While you could use several image viewers for this purpose, I am going to show you two of the most popular tools that should be available in most distributions.
-
-#### Method 1: Photo slideshow with GNOME’s default image viewer
-
-If you are using GNOME in Ubuntu 18.04 or any other distribution, you are in luck. The default image viewer of Gnome, Eye of GNOME, is well capable of displaying the slideshow of pictures in the current folder.
-
-Just click on one of the pictures and you’ll see the settings option on the top right side of the application menu. It looks like three bars stacked over the top of one another.
-
-You’ll see several options here. Check the Slideshow box and it will go fullscreen displaying the images.
-
-![How to create slideshow of photos in Ubuntu Linux][2]
-
-By default, the images change at an interval of 5 seconds. You can change the slideshow interval by going to the Preferences->Slideshow.
-
-![change slideshow interval in Ubuntu][3]Changing slideshow interval
-
-#### Method 2: Photo slideshow with Shotwell Photo Manager
-
-[Shotwell][4] is a popular [photo management application for Linux][5]. and available for all major Linux distributions.
-
-If it is not installed already, search for Shotwell in your distribution’s software center and install it.
-
-Shotwell works slightly different. If you directly open a photo in Shotwell Viewer, you won’t see preferences or options for a slideshow.
-
-For slideshow and other options, you have to open Shotwell and import the folders containing those pictures. Once you have imported the folder in here, select that folder from left side-pane and then click on View in the menu. You should see the option of Slideshow here. Just click on it to create the slideshow of all the images in the selected folder.
-
-![How to create slideshow of photos in Ubuntu Linux][6]
-
-You can also change the slideshow settings. This option is presented when the images are displayed in the full view. Just hover the mouse to the lower bottom and you’ll see a settings option appearing.
-
-#### It’s easy to create photo slideshow
-
-As you can see, it’s really simple to create slideshow of photos in Linux. I hope you find this simple tip useful. If you have questions or suggestions, please let me know in the comment section below.
-
---------------------------------------------------------------------------------
-
-via: https://itsfoss.com/photo-slideshow-ubuntu/
-
-作者:[Abhishek Prakash][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/abhishek/
-[1]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/Create-photos-Slideshow-Linux.png
-[2]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/create-slideshow-photos-ubuntu-gnome.jpeg
-[3]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/change-slideshow-interval-gnome-image.jpeg
-[4]: https://wiki.gnome.org/Apps/Shotwell
-[5]: https://itsfoss.com/linux-photo-management-software/
-[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/create-slideshow-photos-shotwell.jpeg
diff --git a/sources/tech/20180901 5 Ways to Take Screenshot in Linux [GUI and Terminal].md b/sources/tech/20180901 5 Ways to Take Screenshot in Linux [GUI and Terminal].md
deleted file mode 100644
index 6f91b77563..0000000000
--- a/sources/tech/20180901 5 Ways to Take Screenshot in Linux [GUI and Terminal].md
+++ /dev/null
@@ -1,224 +0,0 @@
-HankChow translating
-
-5 Ways to Take Screenshot in Linux [GUI and Terminal]
-======
-Here are several ways you can take screenshots and edit the screenshots by adding text, arrows etc. Instructions and mentioned screenshot tools are valid for Ubuntu and other major Linux distributions.
-
-![How to take screenshots in Ubuntu Linux][1]
-
-When I switched from Windows to Ubuntu as my primary OS, the first thing I was worried about was the availability of screenshot tools. Well, it is easy to utilize the default keyboard shortcuts in order to take screenshots but with a standalone tool, I get to annotate/edit the image while taking the screenshot.
-
-In this article, we will introduce you to the default methods/tools (without a 3rd party screenshot tool) to take a screenshot while also covering the list of best screenshot tools available for Linux.
-
-### Method 1: The default way to take screenshot in Linux
-
-Do you want to capture the image of your entire screen? A specific region? A specific window?
-
-If you just want a simple screenshot without any annotations/fancy editing capabilities, the default keyboard shortcuts will do the trick. These are not specific to Ubuntu. Almost all Linux distributions and desktop environments support these keyboard shortcuts.
-
-Let’s take a look at the list of keyboard shortcuts you can utilize:
-
-**PrtSc** – Save a screenshot of the entire screen to the “Pictures” directory.
-**Shift + PrtSc** – Save a screenshot of a specific region to Pictures.
-**Alt + PrtSc** – Save a screenshot of the current window to Pictures.
-**Ctrl + PrtSc** – Copy the screenshot of the entire screen to the clipboard.
-**Shift + Ctrl + PrtSc** – Copy the screenshot of a specific region to the clipboard.
-**Ctrl + Alt + PrtSc** – Copy the screenshot of the current window to the clipboard.
-
-As you can see, taking screenshots in Linux is absolutely simple with the default screenshot tool. However, if you want to immediately annotate (or other editing features) without importing the screenshot to another application, you can use a dedicated screenshot tool.
-
-#### **Method 2: Take and edit screenshots in Linux with Flameshot**
-
-![flameshot][2]
-
-Feature Overview
-
- * Annotate (highlight, point, add text, box in)
- * Blur part of an image
- * Crop part of an image
- * Upload to Imgur
- * Open screenshot with another app
-
-
-
-Flameshot is a quite impressive screenshot tool which arrived on [GitHub][3] last year.
-
-If you have been searching for a screenshot tool that helps you annotate, blur, mark, and upload to imgur while being actively maintained unlike some outdated screenshot tools, Flameshot should be the one to have installed.
-
-Fret not, we will guide you how to install it and configure it as per your preferences.
-
-To install it on Ubuntu, you just need to search for it on Ubuntu Software center and get it installed. In case you want to use the terminal, here’s the command for it:
-```
-sudo apt install flameshot
-
-```
-
-If you face any trouble installing, you can follow their [official installation instructions][4]. After installation, you need to configure it. Well, you can always search for it and launch it, but if you want to trigger the Flameshot screenshot tool by using **PrtSc** key, you need to assign a custom keyboard shortcut.
-
-Here’s how you can do that:
-
- * Head to the system settings and navigate your way to the Keyboard settings.
- * You will find all the keyboard shortcuts listed there, ignore them and scroll down to the bottom. Now, you will find a **+** button.
- * Click the “+” button to add a custom shortcut. You need to enter the following in the fields you get:
-**Name:** Anything You Want
-**Command:** /usr/bin/flameshot gui
- * Finally, set the shortcut to **PrtSc** – which will warn you that the default screenshot functionality will be disabled – so proceed doing it.
-
-
-
-For reference, your custom keyboard shortcut field should look like this after configuration:
-
-![][5]
-Map keyboard shortcut with Flameshot
-
-### **Method 3: Take and edit screenshots in Linux with Shutter**
-
-![][6]
-
-Feature Overview:
-
- * Annotate (highlight, point, add text, box in)
- * Blur part of an image
- * Crop part of an image
- * Upload to image hosting sites
-
-
-
-[Shutter][7] is a popular screenshot tool available for all major Linux distributions. Though it seems to be no more being actively developed, it is still an excellent choice for handling screenshots.
-
-You might encounter certain bugs/errors. The most common problem with Shutter on any latest Linux distro releases is that the ability to edit the screenshots is disabled by default along with the missing applet indicator. But, fret not, we have a solution to that. You just need to follow our guide to[fix the disabled edit option in Shutter and bring back the applet indicator][8].
-
-After you’re done fixing the problem, you can utilize it to edit the screenshots in a jiffy.
-
-To install shutter, you can browse the software center and get it from there. Alternatively, you can use the following command in the terminal to install Shutter in Ubuntu-based distributions:
-```
-sudo apt install shutter
-
-```
-
-As we saw with Flameshot, you can either choose to use the app launcher to search for Shutter and manually launch the application, or you can follow the same set of instructions (with a different command) to set a custom shortcut to trigger Shutter when you press the **PrtSc** key.
-
-If you are going to assign a custom keyboard shortcut, you just need to use the following in the command field:
-```
-shutter -f
-
-```
-
-### Method 4: Use GIMP for taking screenshots in Linux
-
-![][9]
-
-Feature Overview:
-
- * Advanced Image Editing Capabilities (Scaling, Adding filters, color correction, Add layers, Crop, and so on.)
- * Take a screenshot of the selected area
-
-
-
-If you happen to use GIMP a lot and you probably want some advance edits on your screenshots, GIMP would be a good choice for that.
-
-You should already have it installed, if not, you can always head to your software center to install it. If you have trouble installing, you can always refer to their [official website for installation instructions][10].
-
-To take a screenshot with GIMP, you need to first launch it, and then navigate your way through **File- >Create->Screenshot**.
-
-After you click on the screenshot option, you will be greeted with a couple of tweaks to control the screenshot. That’s just it. Click “ **Snap** ” to take the screenshot and the image will automatically appear within GIMP, ready for you to edit.
-
-### Method 5: Taking screenshot in Linux using command line tools
-
-This section is strictly for terminal lovers. If you like using the terminal, you can utilize the **GNOME screenshot** tool or **ImageMagick** or **Deepin Scrot** – which comes baked in on most of the popular Linux distributions.
-
-To take a screenshot instantly, enter the following command:
-
-#### GNOME Screenshot (for GNOME desktop users)
-```
-gnome-screenshot
-
-```
-
-To take a screenshot with a delay, enter the following command (here, **5** – is the number of seconds you want to delay)
-
-GNOME screenshot is one of the default tools that exists in all distributions with GNOME desktop.
-```
-gnome-screenshot -d -5
-
-```
-
-#### ImageMagick
-
-[ImageMagick][11] should be already pre-installed on your system if you are using Ubuntu, Mint, or any other popular Linux distribution. In case, it isn’t there, you can always install it by following the [official installation instructions (from source)][12]. In either case, you can enter the following in the terminal:
-```
-sudo apt-get install imagemagick
-
-```
-
-After you have it installed, you can type in the following commands to take a screenshot:
-
-To take the screenshot of your entire screen:
-```
-import -window root image.png
-
-```
-
-Here, “image.png” is your desired name for the screenshot.
-
-To take the screenshot of a specific area:
-```
-import image.png
-
-```
-
-#### Deepin Scrot
-
-Deepin Scrot is a slightly advanced terminal-based screenshot tool. Similar to the others, you should already have it installed. If not, get it installed through the terminal by typing:
-```
-sudo apt-get install scrot
-
-```
-
-After having it installed, follow the instructions below to take a screenshot:
-
-To take a screenshot of the entire screen:
-```
-scrot myimage.png
-
-```
-
-To take a screenshot of the selected aread:
-```
-scrot -s myimage.png
-
-```
-
-### Wrapping Up
-
-So, these are the best screenshot tools available for Linux. Yes, there are a few more tools available (like [Spectacle][13] for KDE-based distros), but if you end up comparing them, the above-mentioned tools will outshine them.
-
-In case you find a better screenshot tool than the ones mentioned in our article, feel free to let us know about it in the comments below.
-
-Also, do tell us about your favorite screenshot tool!
-
---------------------------------------------------------------------------------
-
-via: https://itsfoss.com/take-screenshot-linux/
-
-作者:[Ankush Das][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/
-[1]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/Taking-Screenshots-in-Linux.png
-[2]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/flameshot-pic.png
-[3]: https://github.com/lupoDharkael/flameshot
-[4]: https://github.com/lupoDharkael/flameshot#installation
-[5]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/flameshot-config-default.png
-[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/shutter-screenshot.jpg
-[7]: http://shutter-project.org/
-[8]: https://itsfoss.com/shutter-edit-button-disabled/
-[9]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/gimp-screenshot.jpg
-[10]: https://www.gimp.org/downloads/
-[11]: https://www.imagemagick.org/script/index.php
-[12]: https://www.imagemagick.org/script/install-source.php
-[13]: https://www.kde.org/applications/graphics/spectacle/
diff --git a/sources/tech/20180905 5 tips to improve productivity with zsh.md b/sources/tech/20180905 5 tips to improve productivity with zsh.md
deleted file mode 100644
index 0de2e6a05c..0000000000
--- a/sources/tech/20180905 5 tips to improve productivity with zsh.md
+++ /dev/null
@@ -1,292 +0,0 @@
-5 tips to improve productivity with zsh
-======
-
-### **[翻译中] by tnuoccalanosrep**
-
-![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/features_solutions_command_data.png?itok=4_VQN3RK)
-
-The Z shell known as [zsh][1] is a [shell][2] for Linux/Unix-like operating systems. It has similarities to other shells in the `sh` (Bourne shell) family, such as as `bash` and `ksh`, but it provides many advanced features and powerful command line editing options, such as enhanced Tab completion.
-
-It would be impossible to cover all the options of zsh here; there are literally hundreds of pages [documenting][3] its many features. In this article, I'll present five tips to make you more productive using the command line with zsh.
-
-### 1\. Themes and plugins
-
-Through the years, the open source community has developed countless themes and plugins for zsh. A theme is a predefined prompt configuration, while a plugin is a set of useful aliases and functions that make it easier to use a specific command or programming language.
-
-The quickest way to get started using themes and plugins is to use a zsh configuration framework. There are many available, but the most popular is [Oh My Zsh][4]. By default, it enables some sensible zsh configuration options and it comes loaded with hundreds of themes and plugins.
-
-A theme makes you more productive as it adds useful information to your prompt, such as the status of your Git repository or Python virtualenv in use. Having this information at a glance saves you from typing the equivalent commands to obtain it, and it's a cool look. Here's an example of [Powerlevel9k][5], my theme of choice:
-
-![zsh Powerlevel9K theme][7]
-
-The Powerlevel9k theme for zsh
-
-In addition to themes, Oh My Zsh bundles tons of useful plugins for zsh. For example, enabling the Git plugin gives you access to a number of useful aliases, such as:
-```
-$ alias | grep -i git | sort -R | head -10
-g=git
-ga='git add'
-gapa='git add --patch'
-gap='git apply'
-gdt='git diff-tree --no-commit-id --name-only -r'
-gau='git add --update'
-gstp='git stash pop'
-gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
-gcs='git commit -S'
-glg='git log --stat'
-```
-
-There are plugins available for many programming languages, packaging systems, and other tools you commonly use on the command line. Here's a list of plugins I use in my Fedora workstation:
-```
-git golang fedora docker oc sudo vi-mode virtualenvwrapper
-```
-
-### 2\. Clever aliases
-
-Aliases are very useful in zsh. Defining aliases for your most-used commands saves you a lot of typing. Oh My Zsh configures several useful aliases by default, including aliases to navigate directories and replacements for common commands with additional options such as:
-```
-ls='ls --color=tty'
-grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'
-```
-
-In addition to command aliases, zsh enables two additional useful alias types: the suffix alias and the global alias.
-
-A suffix alias allows you to open the file you type in the command line using the specified program based on the file extension. For example, to open YAML files using vim, define the following alias:
-```
-alias -s {yml,yaml}=vim
-```
-
-Now if you type any file name ending with `yml` or `yaml` in the command line, zsh opens that file using vim:
-```
-$ playbook.yml
-# Opens file playbook.yml using vim
-```
-
-A global alias enables you to create an alias that is expanded anywhere in the command line, not just at the beginning. This is very useful to replace common filenames or piped commands. For example:
-```
-alias -g G='| grep -i'
-```
-
-To use this alias, type `G` anywhere you would type the piped command:
-```
-$ ls -l G do
-drwxr-xr-x. 5 rgerardi rgerardi 4096 Aug 7 14:08 Documents
-drwxr-xr-x. 6 rgerardi rgerardi 4096 Aug 24 14:51 Downloads
-```
-
-Next, let's see how zsh helps to navigate the filesystem.
-
-### 3\. Easy directory navigation
-
-When you're using the command line, navigating across different directories is one of the most common tasks. Zsh makes this easier by providing some useful directory navigation features. These features are enabled with Oh My Zsh, but you can enable them by using this command:
-```
-setopt autocd autopushd \ pushdignoredups
-```
-
-With these options set, you don't need to type `cd` to change directories. Just type the directory name, and zsh switches to it:
-```
-$ pwd
-/home/rgerardi
-$ /tmp
-$ pwd
-/tmp
-```
-
-To move back, type `-`:
-
-Zsh keeps the history of directories you visited so you can quickly switch to any of them. To see the list, type `dirs -v`:
-```
-$ dirs -v
-0 ~
-1 /var/log
-2 /var/opt
-3 /usr/bin
-4 /usr/local
-5 /usr/lib
-6 /tmp
-7 ~/Projects/Opensource.com/zsh-5tips
-8 ~/Projects
-9 ~/Projects/ansible
-10 ~/Documents
-```
-
-Switch to any directory in this list by typing `~#` where # is the number of the directory in the list. For example:
-```
-$ pwd
-/home/rgerardi
-$ ~4
-$ pwd
-/usr/local
-```
-
-Combine these with aliases to make it even easier to navigate:
-```
-d='dirs -v | head -10'
-1='cd -'
-2='cd -2'
-3='cd -3'
-4='cd -4'
-5='cd -5'
-6='cd -6'
-7='cd -7'
-8='cd -8'
-9='cd -9'
-```
-
-Now you can type `d` to see the first ten items in the list and the number to switch to it:
-```
-$ d
-0 /usr/local
-1 ~
-2 /var/log
-3 /var/opt
-4 /usr/bin
-5 /usr/lib
-6 /tmp
-7 ~/Projects/Opensource.com/zsh-5tips
-8 ~/Projects
-9 ~/Projects/ansible
-$ pwd
-/usr/local
-$ 6
-/tmp
-$ pwd
-/tmp
-```
-
-Finally, zsh automatically expands directory names with Tab completion. Type the first letters of the directory names and `TAB` to use it:
-```
-$ pwd
-/home/rgerardi
-$ p/o/z (TAB)
-$ Projects/Opensource.com/zsh-5tips/
-```
-
-This is just one of the features enabled by zsh's powerful Tab completion system. Let's look at some more.
-
-### 4\. Advanced Tab completion
-
-Zsh's powerful completion system is one of its hallmarks. For simplification, I call it Tab completion, but under the hood, more than one thing is happening. There's usually expansion and command completion. I'll discuss them together here. For details, check this [User's Guide][8].
-
-Command completion is enabled by default with Oh My Zsh. To enable it, add the following lines to your `.zshrc` file:
-```
-autoload -U compinit
-compinit
-```
-
-Zsh's completion system is smart. It tries to suggest only items that can be used in certain contexts—for example, if you type `cd` and `TAB`, zsh suggests only directory names as it knows `cd` does not work with anything else.
-
-Conversely, it suggests usernames when running user-related commands or hostnames when using `ssh` or `ping`, for example.
-
-It has a vast completion library and understands many different commands. For example, if you're using the `tar` command, you can press Tab to see a list of files available in the package as candidates for extraction:
-```
-$ tar -xzvf test1.tar.gz test1/file1 (TAB)
-file1 file2
-```
-
-Here's a more advanced example, using `git`. In this example, when typing `TAB`, zsh automatically completes the name of the only file in the repository that can be staged:
-```
-$ ls
-original plan.txt zsh-5tips.md zsh_theme_small.png
-$ git status
-On branch master
-Your branch is up to date with 'origin/master'.
-
-Changes not staged for commit:
- (use "git add ..." to update what will be committed)
- (use "git checkout -- ..." to discard changes in working directory)
-
- modified: zsh-5tips.md
-
-no changes added to commit (use "git add" and/or "git commit -a")
-$ git add (TAB)
-$ git add zsh-5tips.md
-```
-
-It also understands command line options and suggests only the ones that are relevant to the subcommand selected:
-```
-$ git commit - (TAB)
---all -a -- stage all modified and deleted paths
---allow-empty -- allow recording an empty commit
---allow-empty-message -- allow recording a commit with an empty message
---amend -- amend the tip of the current branch
---author -- override the author name used in the commit
---branch -- show branch information
---cleanup -- specify how the commit message should be cleaned up
---date -- override the author date used in the commit
---dry-run -- only show the list of paths that are to be committed or not, and any untracked
---edit -e -- edit the commit message before committing
---file -F -- read commit message from given file
---gpg-sign -S -- GPG-sign the commit
---include -i -- update the given files and commit the whole index
---interactive -- interactively update paths in the index file
---message -m -- use the given message as the commit message
-... TRUNCATED ...
-```
-
-After typing `TAB`, you can use the arrow keys to navigate the options list and select the one you need. Now you don't need to memorize all those Git options.
-
-There are many options available. The best way to find what is most helpful to you is by using it.
-
-### 5\. Command line editing and history
-
-Zsh's command line editing capabilities are also useful. By default, it emulates emacs. If, like me, you prefer vi/vim, enable vi bindings with the following command:
-```
-$ bindkey -v
-```
-
-If you're using Oh My Zsh, the `vi-mode` plugin enables additional bindings and a mode indicator on your prompt—very useful.
-
-After enabling vi bindings, you can edit the command line using vi commands. For example, press `ESC+/` to search the command line history. While searching, pressing `n` brings the next matching line, and `N` the previous one. Most common vi commands work after pressing `ESC` such as `0` to jump to the start of the line, `$` to jump to the end, `i` to insert, `a` to append, etc. Even commands followed by motion work, such as `cw` to change a word.
-
-In addition to command line editing, zsh provides several useful command line history features if you want to fix or re-execute previous used commands. For example, if you made a mistake, typing `fc` brings the last command in your favorite editor to fix it. It respects the `$EDITOR` variable and by default uses vi.
-
-Another useful command is `r`, which re-executes the last command; and `r `, which executes the last command that contains the string `WORD`.
-
-Finally, typing double bangs (`!!`) brings back the last command anywhere in the line. This is useful, for instance, if you forgot to type `sudo` to execute commands that require elevated privileges:
-```
-$ less /var/log/dnf.log
-/var/log/dnf.log: Permission denied
-$ sudo !!
-$ sudo less /var/log/dnf.log
-```
-
-These features make it easier to find and re-use previously typed commands.
-
-### Where to go from here?
-
-These are just a few of the zsh features that can make you more productive; there are many more. For additional information, consult the following resources:
-
-[An Introduction to the Z Shell][9]
-
-[A User's Guide to ZSH][10]
-
-[Archlinux Wiki][11]
-
-[zsh-lovers][12]
-
-Do you have any zsh productivity tips to share? I would love to hear about them in the comments below.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/9/tips-productivity-zsh
-
-作者:[Ricardo Gerardi][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/rgerardi
-[1]: http://www.zsh.org/
-[2]: https://en.wikipedia.org/wiki/Shell_(computing)
-[3]: http://zsh.sourceforge.net/Doc/Release/zsh_toc.html
-[4]: https://ohmyz.sh/
-[5]: https://github.com/bhilburn/powerlevel9k
-[7]: https://opensource.com/sites/default/files/uploads/zsh_theme_small.png (zsh Powerlevel9K theme)
-[8]: http://zsh.sourceforge.net/Guide/zshguide06.html#l144
-[9]: http://zsh.sourceforge.net/Intro/intro_toc.html
-[10]: http://zsh.sourceforge.net/Guide/
-[11]: https://wiki.archlinux.org/index.php/zsh
-[12]: https://grml.org/zsh/
diff --git a/sources/tech/20180906 3 top open source JavaScript chart libraries.md b/sources/tech/20180906 3 top open source JavaScript chart libraries.md
index 096d7ce5e6..eeb5bd377d 100644
--- a/sources/tech/20180906 3 top open source JavaScript chart libraries.md
+++ b/sources/tech/20180906 3 top open source JavaScript chart libraries.md
@@ -1,3 +1,5 @@
+BriFuture is translating
+
3 top open source JavaScript chart libraries
======
diff --git a/sources/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md b/sources/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md
deleted file mode 100644
index a11675a264..0000000000
--- a/sources/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md
+++ /dev/null
@@ -1,142 +0,0 @@
-translating---geekpi
-
-Autotrash – A CLI Tool To Automatically Purge Old Trashed Files
-======
-
-![](https://www.ostechnix.com/wp-content/uploads/2018/09/autotrash-720x340.png)
-
-**Autotrash** is a command line utility to automatically purge old trashed files. It will purge files that have been in the trash for more then a given number of days. You don’t need to empty the trash folder or do SHIFT+DELETE to permanently purge the files/folders. Autortrash will handle the contents of your Trash folder and delete them automatically after a particular period of time. In a nutshell, Autotrash will never allow your trash to grow too big.
-
-### Installing Autotrash
-
-Autotrash is available in the default repositories of Debian-based systems. To install autotrash on Debian, Ubuntu, Linux Mint, run:
-
-```
-$ sudo apt-get install autotrash
-
-```
-
-On Fedora:
-
-```
-$ sudo dnf install autotrash
-
-```
-
-For Arch linux and its variants, you can install it using any AUR helper programs such as [**Yay**][1].
-
-```
-$ yay -S autotrash-git
-
-```
-
-### Automatically Purge Old Trashed Files
-
-Whenever you run autotrash, It will scan your **`~/.local/share/Trash/info`** directory and read the **`.trashinfo`** files to find their deletion date. If the files have been in trash folder for more than the defined date, they will be deleted.
-
-Let me show you some examples.
-
-To purge files which are in the trash folder for more than 30 days, run:
-
-```
-$ autotrash -d 30
-
-```
-
-As per above example, if the files in your Trash folder are more than 30-days old, Autotrash will automatically delete them from your Trash. You don’t need to manually delete them. Just send the unnecessary junk to your trash folder and forget about them. Autotrash will take care of the trashed files.
-
-The above command will only process currently logged-in user’s trash directory. If you want to make autotrash to process trash directories of all users (not just in your home directory), use **-t** option like below.
-
-```
-$ autotrash -td 30
-
-```
-
-Autotrash also allows you to delete trashed files based on the space left or available on the trash filesystem.
-
-For example, have a look at the following example.
-
-```
-$ autotrash --max-free 1024 -d 30
-
-```
-
-As per the above command, autotrash will only purge trashed files that are older than **30 days** from the trash if there is less than **1GB of space left** on the trash filesystem. This can be useful if your trash filesystem is running out of the space.
-
-We can also purge files from trash, oldest first, till there is at least 1GB of space on the trash filesystem.
-
-```
-$ autotrash --min-free 1024
-
-```
-
-In this case, there is no restriction on how old trashed files are.
-
-You can combine both options ( **`--min-free`** and **`--max-free`** ) in a single command like below.
-
-```
-$ autotrash --max-free 2048 --min-free 1024 -d 30
-
-```
-
-As per the above command, autotrash will start reading the trash if there is less than **2GB** of free space, then start keeping an eye on. At that point, remove files older than 30 days and if there is less than **1GB** of free space after that remove even newer files.
-
-As you can see, all command should be manually run by the user. You might wonder, how can I automate this task?? That’s easy! Just add autotrash as crontab entry. Now, the commands will automatically run at a scheduled time and purge the files in your trash depending on the defined options.
-
-To add these commands in crontab file, run:
-
-```
-$ crontab -e
-
-```
-
-Add the entries, for example:
-
-```
-@daily /usr/bin/autotrash -d 30
-
-```
-
-Now autotrash will purge files which are in the trash folder for more than 30 days, everyday.
-
-For more details about scheduling tasks, refer the following links.
-
-
-+ [A Beginners Guide To Cron Jobs][2]
-+ [How To Easily And Safely Manage Cron Jobs In Linux][3]
-
-
-Please be mindful that if you have deleted any important files inadvertently, they will be permanently gone after the defined days, so just be careful.
-
-Refer man pages to know more about Autotrash.
-
-```
-$ man autotrash
-
-```
-
-Emptying Trash folder or pressing SHIFT+DELETE to permanently get rid of unnecessary stuffs from the Linux system is no big deal. It will just take a couple seconds. However, if you wanted an extra utility to take care of your junk files, Autotrash might be helpful. Give it a try and see how it works.
-
-And, that’s all for now. Hope this helps. More good stuffs to come.
-
-Cheers!
-
-
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/autotrash-a-cli-tool-to-automatically-purge-old-trashed-files/
-
-作者:[SK][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://www.ostechnix.com/author/sk/
-[1]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
-[2]: https://www.ostechnix.com/a-beginners-guide-to-cron-jobs/
-[3]: https://www.ostechnix.com/how-to-easily-and-safely-manage-cron-jobs-in-linux/
diff --git a/sources/tech/20180910 3 open source log aggregation tools.md b/sources/tech/20180910 3 open source log aggregation tools.md
deleted file mode 100644
index de41debf57..0000000000
--- a/sources/tech/20180910 3 open source log aggregation tools.md
+++ /dev/null
@@ -1,112 +0,0 @@
-heguangzhi Translating
-
-3 open source log aggregation tools
-======
-Log aggregation systems can help with troubleshooting and other tasks. Here are three top options.
-
-![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr)
-
-How is metrics aggregation different from log aggregation? Can’t logs include metrics? Can’t log aggregation systems do the same things as metrics aggregation systems?
-
-These are questions I hear often. I’ve also seen vendors pitching their log aggregation system as the solution to all observability problems. Log aggregation is a valuable tool, but it isn’t normally a good tool for time-series data.
-
-A couple of valuable features in a time-series metrics aggregation system are the regular interval and the storage system customized specifically for time-series data. The regular interval allows a user to derive real mathematical results consistently. If a log aggregation system is collecting metrics in a regular interval, it can potentially work the same way. However, the storage system isn’t optimized for the types of queries that are typical in a metrics aggregation system. These queries will take more resources and time to process using storage systems found in log aggregation tools.
-
-So, we know a log aggregation system is likely not suitable for time-series data, but what is it good for? A log aggregation system is a great place for collecting event data. These are irregular activities that are significant. An example might be access logs for a web service. These are significant because we want to know what is accessing our systems and when. Another example would be an application error condition—because it is not a normal operating condition, it might be valuable during troubleshooting.
-
-A handful of rules for logging:
-
- * DO include a timestamp
- * DO format in JSON
- * DON’T log insignificant events
- * DO log all application errors
- * MAYBE log warnings
- * DO turn on logging
- * DO write messages in a human-readable form
- * DON’T log informational data in production
- * DON’T log anything a human can’t read or react to
-
-
-
-### Cloud costs
-
-When investigating log aggregation tools, the cloud might seem like an attractive option. However, it can come with significant costs. Logs represent a lot of data when aggregated across hundreds or thousands of hosts and applications. The ingestion, storage, and retrieval of that data are expensive in cloud-based systems.
-
-As a point of reference from a real system, a collection of around 500 nodes with a few hundred apps results in 200GB of log data per day. There’s probably room for improvement in that system, but even reducing it by half will cost nearly $10,000 per month in many SaaS offerings. This often includes retention of only 30 days, which isn’t very long if you want to look at trending data year-over-year.
-
-This isn’t to discourage the use of these systems, as they can be very valuable—especially for smaller organizations. The purpose is to point out that there could be significant costs, and it can be discouraging when they are realized. The rest of this article will focus on open source and commercial solutions that are self-hosted.
-
-### Tool options
-
-#### ELK
-
-[ELK][1], short for Elasticsearch, Logstash, and Kibana, is the most popular open source log aggregation tool on the market. It’s used by Netflix, Facebook, Microsoft, LinkedIn, and Cisco. The three components are all developed and maintained by [Elastic][2]. [Elasticsearch][3] is essentially a NoSQL, Lucene search engine implementation. [Logstash][4] is a log pipeline system that can ingest data, transform it, and load it into a store like Elasticsearch. [Kibana][5] is a visualization layer on top of Elasticsearch.
-
-A few years ago, Beats were introduced. Beats are data collectors. They simplify the process of shipping data to Logstash. Instead of needing to understand the proper syntax of each type of log, a user can install a Beat that will export NGINX logs or Envoy proxy logs properly so they can be used effectively within Elasticsearch.
-
-When installing a production-level ELK stack, a few other pieces might be included, like [Kafka][6], [Redis][7], and [NGINX][8]. Also, it is common to replace Logstash with Fluentd, which we’ll discuss later. This system can be complex to operate, which in its early days led to a lot of problems and complaints. These have largely been fixed, but it’s still a complex system, so you might not want to try it if you’re a smaller operation.
-
-That said, there are services available so you don’t have to worry about that. [Logz.io][9] will run it for you, but its list pricing is a little steep if you have a lot of data. Of course, you’re probably smaller and may not have a lot of data. If you can’t afford Logz.io, you could look at something like [AWS Elasticsearch Service][10] (ES). ES is a service Amazon Web Services (AWS) offers that makes it very easy to get Elasticsearch working quickly. It also has tooling to get all AWS logs into ES using Lambda and S3. This is a much cheaper option, but there is some management required and there are a few limitations.
-
-Elastic, the parent company of the stack, [offers][11] a more robust product that uses the open core model, which provides additional options around analytics tools, and reporting. It can also be hosted on Google Cloud Platform or AWS. This might be the best option, as this combination of tools and hosting platforms offers a cheaper solution than most SaaS options and still provides a lot of value. This system could effectively replace or give you the capability of a [security information and event management][12] (SIEM) system.
-
-The ELK stack also offers great visualization tools through Kibana, but it lacks an alerting function. Elastic provides alerting functionality within the paid X-Pack add-on, but there is nothing built in for the open source system. Yelp has created a solution to this problem, called [ElastAlert][13], and there are probably others. This additional piece of software is fairly robust, but it increases the complexity of an already complex system.
-
-#### Graylog
-
-[Graylog][14] has recently risen in popularity, but it got its start when Lennart Koopmann created it back in 2010. A company was born with the same name two years later. Despite its increasing use, it still lags far behind the ELK stack. This also means it has fewer community-developed features, but it can use the same Beats that the ELK stack uses. Graylog has gained praise in the Go community with the introduction of the Graylog Collector Sidecar written in [Go][15].
-
-Graylog uses Elasticsearch, [MongoDB][16], and the Graylog Server under the hood. This makes it as complex to run as the ELK stack and maybe a little more. However, Graylog comes with alerting built into the open source version, as well as several other notable features like streaming, message rewriting, and geolocation.
-
-The streaming feature allows for data to be routed to specific Streams in real time while they are being processed. With this feature, a user can see all database errors in a single Stream and web server errors in a different Stream. Alerts can even be based on these Streams as new items are added or when a threshold is exceeded. Latency is probably one of the biggest issues with log aggregation systems, and Streams eliminate that issue in Graylog. As soon as the log comes in, it can be routed to other systems through a Stream without being processed fully.
-
-The message rewriting feature uses the open source rules engine [Drools][17]. This allows all incoming messages to be evaluated against a user-defined rules file enabling a message to be dropped (called Blacklisting), a field to be added or removed, or the message to be modified.
-
-The coolest feature might be Graylog’s geolocation capability, which supports plotting IP addresses on a map. This is a fairly common feature and is available in Kibana as well, but it adds a lot of value—especially if you want to use this as your SIEM system. The geolocation functionality is provided in the open source version of the system.
-
-Graylog, the company, charges for support on the open source version if you want it. It also offers an open core model for its Enterprise version that offers archiving, audit logging, and additional support. There aren’t many other options for support or hosting, so you’ll likely be on your own if you don’t use Graylog (the company).
-
-#### Fluentd
-
-[Fluentd][18] was developed at [Treasure Data][19], and the [CNCF][20] has adopted it as an Incubating project. It was written in C and Ruby and is recommended by [AWS][21] and [Google Cloud][22]. Fluentd has become a common replacement for Logstash in many installations. It acts as a local aggregator to collect all node logs and send them off to central storage systems. It is not a log aggregation system.
-
-It uses a robust plugin system to provide quick and easy integrations with different data sources and data outputs. Since there are over 500 plugins available, most of your use cases should be covered. If they aren’t, this sounds like an opportunity to contribute back to the open source community.
-
-Fluentd is a common choice in Kubernetes environments due to its low memory requirements (just tens of megabytes) and its high throughput. In an environment like [Kubernetes][23], where each pod has a Fluentd sidecar, memory consumption will increase linearly with each new pod created. Using Fluentd will drastically reduce your system utilization. This is becoming a common problem with tools developed in Java that are intended to run one per node where the memory overhead hasn’t been a major issue.
-
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/9/open-source-log-aggregation-tools
-
-作者:[Dan Barker][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/barkerd427
-[1]: https://www.elastic.co/webinars/introduction-elk-stack
-[2]: https://www.elastic.co/
-[3]: https://www.elastic.co/products/elasticsearch
-[4]: https://www.elastic.co/products/logstash
-[5]: https://www.elastic.co/products/kibana
-[6]: http://kafka.apache.org/
-[7]: https://redis.io/
-[8]: https://www.nginx.com/
-[9]: https://logz.io/
-[10]: https://aws.amazon.com/elasticsearch-service/
-[11]: https://www.elastic.co/cloud
-[12]: https://en.wikipedia.org/wiki/Security_information_and_event_management
-[13]: https://github.com/Yelp/elastalert
-[14]: https://www.graylog.org/
-[15]: https://opensource.com/tags/go
-[16]: https://www.mongodb.com/
-[17]: https://www.drools.org/
-[18]: https://www.fluentd.org/
-[19]: https://www.treasuredata.com/
-[20]: https://www.cncf.io/
-[21]: https://aws.amazon.com/blogs/aws/all-your-data-fluentd/
-[22]: https://cloud.google.com/logging/docs/agent/
-[23]: https://opensource.com/resources/what-is-kubernetes
diff --git a/sources/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md b/sources/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md
deleted file mode 100644
index c8b495cebe..0000000000
--- a/sources/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md
+++ /dev/null
@@ -1,124 +0,0 @@
-How To Configure Mouse Support For Linux Virtual Consoles
-======
-
-![](https://www.ostechnix.com/wp-content/uploads/2018/09/GPM-1-720x340.png)
-
-I use Oracle VirtualBox to test various Unix-like operating systems. Most of my VMs are headless servers that does not have graphical desktop environment. For a long time, I have been wondering how can we use the mouse in the text-based terminals in headless Linux servers. Thanks to **GPM** , today I learned that we can use Mouse in virtual consoles for copy and paste operations. **GPM** , acronym for **G** eneral **P** urpose **M** ouse, is a daemon that helps you to configure mouse support for Linux virtual consoles. Please do not confuse GPM with **GDM** (GNOME Display manager). Both serves entirely different purpose.
-
-GPM is especially useful in the following scenarios:
-
- * New Linux server installations or for systems that cannot or do not use an X windows system by default, like Arch Linux and Gentoo.
- * Use copy/paste operations around in the virtual terminals/consoles.
- * Use copy/paste in text-based editors and browsers (Eg. emacs, lynx).
- * Use copy/paste in text file managers (Eg. Ranger, Midnight commander).
-
-
-
-In this brief tutorial, we are going to see how to use Mouse in Text-based terminals in Unix-like operating systems.
-
-### Installing GPM
-
-To enable mouse support in Text-only Linux systems, install GPM package. It is available in the default repositories of most Linux distributions.
-
-On Arch Linux and its variants like Antergos, Manjaro Linux, run the following command to install GPM:
-
-```
-$ sudo pacman -S gpm
-```
-
-On Debian, Ubuntu, Linux Mint:
-
-```
-$ sudo apt install gpm
-```
-
-On Fedora:
-
-```
-$ sudo dnf install gpm
-```
-
-On openSUSE:
-
-```
-$ sudo zypper install gpm
-```
-
-Once installed, enable and start GPM service using the following commands:
-
-```
-$ sudo systemctl enable gpm
-$ sudo systemctl start gpm
-```
-
-In Debian-based systems, gpm service will be automatically started after you installed it, so you need not to manually start the service as shown above.
-
-### Configure Mouse Support For Linux Virtual Consoles
-
-There is no special configuration required. GPM will start working as soon as you installed it and started gpm service.
-
-Have a look at the following screenshot of my Ubuntu 18.04 LTS server before installing GPM:
-
-![](https://www.ostechnix.com/wp-content/uploads/2018/09/Ubuntu-18.04-CLI.png)
-
-As you see in the above screenshot, there is no visible Mouse pointer in my Ubuntu 18.04 LTS headless server. Only a blinking cursor and it won’t let me to select a text, copy/paste text using mouse. In CLI-only Linux servers, the mouse is literally not useful at all.
-
-Now check the following screenshot of Ubuntu 18.04 LTS server after installing GPM:
-
-![](https://www.ostechnix.com/wp-content/uploads/2018/09/GPM.png)
-
-See? I can now be able to select the text.
-
-To select, copy and paste text, do the following:
-
- * To select text, press the left mouse button and drag the mouse.
- * Once you selected the text, release the left mouse button and paste text in the same or another console by pressing the middle mouse button.
- * The right button is used to extend the selection, like in `xterm’.
- * If you’re using two-button mouse, use the right button to paste text.
-
-
-
-It’s that simple!
-
-Like I already said, GPM works just fine and there is no extra configuration needed. Here is the sample contents of GPM configuration file **/etc/gpm.conf** (or `/etc/conf.d/gpm` in some distributions):
-
-```
-# protected from evaluation (i.e. by quoting them).
-#
-# This file is used by /etc/init.d/gpm and can be modified by
-# "dpkg-reconfigure gpm" or by hand at your option.
-#
-device=/dev/input/mice
-responsiveness=
-repeat_type=none
-type=exps2
-append=''
-sample_rate=
-```
-
-In my example, I use USB mouse. If you’re using different mouse, you might have to change the values of **device=/dev/input/mice** and **type=exps2** parameters.
-
-For more details, refer man pages.
-
-```
-$ man gpm
-```
-
-And, that’s all for now. Hope this was useful. More good stuffs to come. Stay tuned!
-
-Cheers!
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/how-to-configure-mouse-support-for-linux-virtual-consoles/
-
-作者:[SK][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://www.ostechnix.com/author/sk/
diff --git a/sources/tech/20180913 ScreenCloud- The Screenshot-- App.md b/sources/tech/20180913 ScreenCloud- The Screenshot-- App.md
deleted file mode 100644
index 147937ab14..0000000000
--- a/sources/tech/20180913 ScreenCloud- The Screenshot-- App.md
+++ /dev/null
@@ -1,77 +0,0 @@
-ScreenCloud: The Screenshot++ App
-======
-[ScreenCloud][1] is an amazing little app, that you don’t even know you need. The default screenshot procedure on desktop Linux is great (Prt Scr Button) and we even have some[powerful screenshot utilities][2]like [Shutter][3]. But ScreenCloud brings one more really simple yet really convenient feature that I just fell in love with. But before we get into it, let’s catch a little backstory.
-
-I take a lot of screenshots. A lot more than average. Receipts, registration details, development work, screenshots of applications for articles, and lot more. The next thing I do is open a browser, browse to my favorite cloud storage and dump the important ones there so that I can access them on my phone and also across multiple operating systems on my PC. This also allows me to easily share screenshots of the apps that I’m working on with my team.
-
-I had no complaints with this standard procedure of taking screenshots, opening a browser and logging into my cloud and then uploading the screenshots manually, until I came across ScreenCloud.
-
-### ScreenCloud
-
-ScreenCloud is cross-platform utility that provides easy screenshot capture and management along with flexible [cloud backup options][4]. including your own [FTP server][5].
-
-![][6]
-
-ScreenCloud is really streamlined with a lot of attention given to the smaller things. It provides you very easy to remember hotkeys to capture the full screen, the active window or capture an area selected with the mouse.
-
-![][7]Default keyboard shortcuts for ScreenCloud
-
-Once a screenshot is taken, you can either set ScreenCloud to ask what to do with the image or to directly upload it the cloud service of your choice. Even SFTP is supported. Once the screenshot it uploaded, generally within a couple of seconds, the link to the image is automatically copied to the clipboard, which you can easily share.
-
-![][8]
-
-You can also do some basic editing with ScreenCloud. For this, you should have “Save to” set to “Ask me”. This setting is available from the application indicator and is usually set by default. With this, when you take a screenshot, you’ll see the option for editing the file. Here, you can add arrows, text and numbers to the screenshot.
-
-![Editing screenshots with ScreenCloud][9]Editing screenshots with ScreenCloud
-
-### Installing ScreenCloud on Linux
-
-ScreenCloud is available in the [Snap store][10]. So you can easily install it on Ubuntu and other [Snap enabled][11] distros by visiting the [Snap store][12] or by running the following command.
-
-```
-sudo snap install screencloud
-
-```
-
-And for Linux distros which can’t install apps through Snap, You can download the AppImage [here][1]. The browse to the download location, right click and open a terminal there. Then run the command below.
-
-```
-sudo chmod +x ScreenCloud-v1.4.0-x86_64.AppImage
-
-```
-
-You can then launch the app by double clicking on the downloaded file.
-
-![][13]
-
-### Wrapping up
-
-Is ScreenCloud for everybody? Probably not. Is it better than the default screenshot? Probably yes. See if you’re taking a screenshot of something, then chances are, that it’s probably important or you intend to share it. ScreenCloud makes backing up or sharing that screenshot easier and considerably faster. So yeah, you should give ScreenCloud a try if you want these features.
-
-Your thoughts and comments are always welcome, use the comments section below. And don’t forget to share this article with your friends. Cheers.
-
---------------------------------------------------------------------------------
-
-via: https://itsfoss.com/screencloud-app/
-
-作者:[Aquil Roshan][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者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/aquil/
-[1]: https://screencloud.net
-[2]: https://itsfoss.com/take-screenshot-linux/
-[3]: http://shutter-project.org
-[4]: https://itsfoss.com/cloud-services-linux/
-[5]: https://itsfoss.com/set-ftp-server-linux/
-[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/screencloud3.jpg
-[7]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/screencloud2.jpg
-[8]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/ScrenCloud6.jpg
-[9]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/editing-with-screencloud.png
-[10]: https://snapcraft.io/
-[11]: https://itsfoss.com/install-snap-linux/
-[12]: https://snapcraft.io/screencloud
-[13]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/ScrenCloud4.jpg
diff --git a/sources/tech/20180914 Freespire Linux- A Great Desktop for the Open Source Purist.md b/sources/tech/20180914 Freespire Linux- A Great Desktop for the Open Source Purist.md
new file mode 100644
index 0000000000..baaf08e92d
--- /dev/null
+++ b/sources/tech/20180914 Freespire Linux- A Great Desktop for the Open Source Purist.md
@@ -0,0 +1,114 @@
+Freespire Linux: A Great Desktop for the Open Source Purist
+======
+
+![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/freespire.jpg?itok=ReIrw_11)
+
+Quick. Click on your Linux desktop menu and scan through the list of installed software. How much of that software is strictly open sources To make matters a bit more complicated, have you installed closed source media codecs (to play the likes of MP3 files perhaps)? Is everything fully open, or do you have a mixture of open and closed source tools?
+
+If you’re a purist, you probably strive to only use open source tools on your desktop. But how do you know, for certain, that your distribution only includes open source software? Fortunately, a few distributions go out of their way to only include applications that are 100% open. One such distro is [Freespire][1].
+
+Does that name sound familiar? It should, as it is closely related to[Linspire][2]. Now we’re talking familiarity. Remember back in the early 2000s, when Walmart sold Linux desktop computers? Those computers were powered by the Linspire operating system. Linspire went above and beyond to create an experience that would be similar to that of Windows—even including the tools to install Windows apps on Linux. That experiment failed, mostly because consumers thought they were getting a Windows desktop machine for a dirt cheap price. After that debacle, Linspire went away for a while. It’s now back, thanks to [PC/OpenSystems LLC][3]. Their goal isn’t to recreate the past but to offer two different flavors of Linux:
+
+ * Linspire—a commercial distribution of Linux that includes proprietary software and does have an associated cost ($39.99 USD for a single license).
+
+ * Freespire—a non-commercial distribution of Linux that only includes open source software and is free to download.
+
+
+
+
+We’re here to discuss Freespire and why it is an outstanding addition to the Linux community, especially those who strive to use only free and open source software. This version of Freespire (4.0) was released on August 20, 2018, so it’s fresh and ready to go.
+
+Let’s dig into the operating system and see what makes this a viable candidate for open source fans.
+
+### Installation
+
+In keeping with my usual approach, there’s very little reason to even mention the installation of Freespire Linux. There is nothing out of the ordinary here. Download the ISO image, burn it to a USB Drive (or CD/DVD if you’re dealing with older hardware), boot the drive, click the Install icon, answer a few simple questions, and wait for the installation to prompt for a reboot. That’s how far we’ve come with Linux installations… they are simple, and rarely will you have a single issue with the process. In the end, you’ll be presented with a simple (modified) Mate desktop (Figure 1) that makes it easy for any user (of any skill level) to feel right at home.
+
+![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/freespire.jpg?itok=ReIrw_11)
+
+### Software Titles
+
+Once you’ve logged into the desktop, you’ll find a main menu where you can view all of the installed applications. That list of software includes:
+
+ * Geary
+
+ * Chromium Browser
+
+ * Abiword
+
+ * Gnumeric
+
+ * Calendar
+
+ * Audacious
+
+ * Totem Video Player
+
+ * Software Center
+
+ * Synaptic
+
+ * G-Debi
+
+
+
+
+Also rolled into the system is support for both Flatpak and Snap applications, so you shouldn’t miss out on any software you need, which brings me to the part when purists might want to look away.
+
+Just because Freespire is marketed as a purely open source distribution, it doesn’t mean users are locked down to only open source software. In fact, if you open the Software Center, you can do a quick search for Spotify (a closed source application with an available Linux desktop client) and there it is! (Figure 2).
+
+![Spotify][5]
+
+Figure 2: The closed source Spotify client available for installation.
+
+[Used with permission][6]
+
+Fortunately, for those productive-minded folks, the likes of LibreOffice (which is not installed by default) is open source and can be installed easily from the Software Center. That doesn’t mean you must install other software, but those who need to do serious business-centric work (such as collaborating on documents), will likely want/need to install a more powerful office suite (as Abiword won’t cut it as a business-level word processor).
+
+For those who tend to work long hours on the Linux desktop and want to protect their eyes from extended strain, Freespire does include a nightlight tool that can adjust the color temperature of the interface. To open this tool, click on the main desktop menu and type night in the Search bar (Figure 3).
+
+![Night Light][8]
+
+Figure 3: Opening the Night Light tool.
+
+[Used with permission][6]
+
+Once opened, Night Light will automatically adjust the color temperature, based on the time of day. From the notification tray, you can click the icon to suspend Night Light, set it to autostart, and close the service (Figure 4).
+
+![Night Light controls.][10]
+
+Figure 4: The Night Light controls.
+
+[Used with permission][6]
+
+### Beyond the Mate Desktop
+
+As is, Mate fans might not exactly recognize the Freespire desktop. The developers have clearly given Mate a significant set of tweaks to make it slightly resemble the Mac OS desktop. It’s not quite as elegant as, say, Elementary OS, but this is certainly an outstanding take on the Linux desktop. Whether you’re a fan of Mate or Mac OS, you should feel immediately at home on the desktop. On the top bar, the developers have included an appmenu that changes, based on what application you have open. Start any app and you’ll find that app’s menu appears in the top bar. This active menu makes the desktop quite efficient.
+
+### Are you ready for Freespire?
+
+Every piece of the Freespire puzzle is equally as user-friendly as it is intuitive. The developers of Freespire have gone to great lengths to make this pure open source distribution a treat to use. Even if a 100% open source desktop isn’t your thing, Freespire is still a worthy contender in the world of desktop Linux. It’s clean and stable (as it’s based on Ubuntu 18.04) and able to help you be efficient and productive on the desktop.
+
+Learn more about Linux through the free ["Introduction to Linux" ][11]course from The Linux Foundation and edX.
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/learn/intro-to-linux/2018/9/freespire-linux-great-desktop-open-source-purist
+
+作者:[Jack Wallen][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.linux.com/users/jlwallen
+[1]: https://www.freespirelinux.com/
+[2]: https://www.linspirelinux.com/
+[3]: https://www.pc-opensystems.com
+[5]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/freespire_2.jpg?itok=zcr94Dk6 (Spotify)
+[6]: /licenses/category/used-permission
+[8]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/freespire_3.jpg?itok=aZYtBPgE (Night Light)
+[9]: /files/images/freespire4jpg
+[10]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/freespire_4.jpg?itok=JCcQwmJ5 (Night Light controls.)
+[11]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux
diff --git a/sources/tech/20180917 4 scanning tools for the Linux desktop.md b/sources/tech/20180917 4 scanning tools for the Linux desktop.md
new file mode 100644
index 0000000000..a239c87768
--- /dev/null
+++ b/sources/tech/20180917 4 scanning tools for the Linux desktop.md
@@ -0,0 +1,72 @@
+4 scanning tools for the Linux desktop
+======
+Go paperless by driving your scanner with one of these open source applications.
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-photo-camera-blue.png?itok=AsIMZ9ga)
+
+While the paperless world isn't here quite yet, more and more people are getting rid of paper by scanning documents and photos. Having a scanner isn't enough to do the deed, though. You need software to drive that scanner.
+
+But the catch is many scanner makers don't have Linux versions of the software they bundle with their devices. For the most part, that doesn't matter. Why? Because there are good scanning applications available for the Linux desktop. They work with a variety of scanners and do a good job.
+
+Let's take a look at four simple but flexible open source Linux scanning tools. I've used each of these tools (and even wrote about three of them [back in 2014][1]) and found them very useful. You might, too.
+
+### Simple Scan
+
+One of my longtime favorites, [Simple Scan][2] is small, quick, efficient, and easy to use. If you've seen it before, that's because Simple Scan is the default scanner application on the GNOME desktop, as well as for a number of Linux distributions.
+
+Scanning a document or photo takes one click. After scanning something, you can rotate or crop it and save it as an image (JPEG or PNG only) or as a PDF. That said, Simple Scan can be slow, even if you scan documents at lower resolutions. On top of that, Simple Scan uses a set of global defaults for scanning, like 150dpi for text and 300dpi for photos. You need to go into Simple Scan's preferences to change those settings.
+
+If you've scanned something with more than a couple of pages, you can reorder the pages before you save. And if necessary—say you're submitting a signed form—you can email from within Simple Scan.
+
+### Skanlite
+
+In many ways, [Skanlite][3] is Simple Scan's cousin in the KDE world. Skanlite has few features, but it gets the job done nicely.
+
+The software has options that you can configure, including automatically saving scanned files, setting the quality of the scan, and identifying where to save your scans. Skanlite can save to these image formats: JPEG, PNG, BMP, PPM, XBM, and XPM.
+
+One nifty feature is the software's ability to save portions of what you've scanned to separate files. That comes in handy when, say, you want to excise someone or something from a photo.
+
+### Gscan2pdf
+
+Another old favorite, [gscan2pdf][4] might be showing its age, but it still packs a few more features than some of the other applications mentioned here. Even so, gscan2pdf is still comparatively light.
+
+In addition to saving scans in various image formats (JPEG, PNG, and TIFF), gscan2pdf also saves them as PDF or [DjVu][5] files. You can set the scan's resolution, whether it's black and white or color, and paper size before you click the Scan button. That beats going into gscan2pdf's preferences every time you want to change any of those settings. You can also rotate, crop, and delete pages.
+
+While none of those features are truly killer, they give you a bit more flexibility.
+
+### GIMP
+
+You probably know [GIMP][6] as an image-editing tool. But did you know you can use it to drive your scanner?
+
+You'll need to install the [XSane][7] scanner software and the GIMP XSane plugin. Both of those should be available from your Linux distro's package manager. From there, select File > Create > Scanner/Camera. From there, click on your scanner and then the Scan button.
+
+If that's not your cup of tea, or if it doesn't work, you can combine GIMP with a plugin called [QuiteInsane][8]. With either plugin, GIMP becomes a powerful scanning application that lets you set a number of options like whether to scan in color or black and white, the resolution of the scan, and whether or not to compress results. You can also use GIMP's tools to touch up or apply effects to your scans. This makes it great for scanning photos and art.
+
+### Do they really just work?
+
+All of this software works well for the most part and with a variety of hardware. I've used them with several multifunction printers that I've owned over the years—whether connecting using a USB cable or over wireless.
+
+You might have noticed that I wrote "works well for the most part" in the previous paragraph. I did run into one exception: an inexpensive Canon multifunction printer. None of the software I used could detect it. I had to download and install Canon's Linux scanner software, which did work.
+
+What's your favorite open source scanning tool for Linux? Share your pick by leaving a comment.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/linux-scanner-tools
+
+作者:[Scott Nesbitt][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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
+[1]: https://opensource.com/life/14/8/3-tools-scanners-linux-desktop
+[2]: https://gitlab.gnome.org/GNOME/simple-scan
+[3]: https://www.kde.org/applications/graphics/skanlite/
+[4]: http://gscan2pdf.sourceforge.net/
+[5]: http://en.wikipedia.org/wiki/DjVu
+[6]: http://www.gimp.org/
+[7]: https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy#XSane
+[8]: http://sourceforge.net/projects/quiteinsane/
diff --git a/sources/tech/20180917 Getting started with openmediavault- A home NAS solution.md b/sources/tech/20180917 Getting started with openmediavault- A home NAS solution.md
new file mode 100644
index 0000000000..42bb1bfe17
--- /dev/null
+++ b/sources/tech/20180917 Getting started with openmediavault- A home NAS solution.md
@@ -0,0 +1,75 @@
+[translating by jamelouis]
+Getting started with openmediavault: A home NAS solution
+======
+This network-attached file server offers a solid array of features and is easy to install and configure.
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus-cloud.png?itok=vz0PIDDS)
+
+With so many cloud storage options readily available, some folks might question the value of having a home NAS (network-attached storage) server. After all, with your files on the cloud, you don't have to worry about managing the maintenance, updates, and security of your own server.
+
+But that's not entirely true, is it? You have a home network, so you've got to pay at least some attention to that network's health and security. Assuming you're already keeping on top of that, then [a home NAS][1] really isn't adding that much additional hassle. And there are all kinds of benefits to gain from that minor amount of work.
+
+You can have a local backup of every computer in your house (you can also back up off-site). Have a media server that holds movies, music, and photos regardless of whether your internet connection flakes out. Work on large files on multiple computers in your home without waiting for them to traverse from some random computer somewhere else on the internet. Plus, you can have your NAS pull double duty with other services, like hosting local email or a household wiki. Perhaps most importantly, with a home NAS, your data is your data—under your control and always accessible.
+
+The follow-on question is which NAS solution to choose. Sure, you could buy a pre-built solution and call it a day, but what fun is that? And practically speaking, although it's great to have an appliance that handles everything for you, it's often better to have a rig that you can fix and upgrade yourself. This is the situation I found myself in recently. I chose to install and set up [openmediavault][2].
+
+### Why openmediavault?
+
+There are a few open source NAS solutions out there, some arguably more popular than openmediavault. When I asked around, for instance, [FreeNAS][3] was recommended the most. So why didn't I go with that? After all, it is more widely used, includes more features, and offers more support options, [according to a comparison on the FreeNAS website][4]. That's certainly all true. But openmediavault is no slouch. It's actually based on an earlier version of FreeNAS, and while its numbers are lower in terms of downloads and features, they're more than adequate for my needs.
+
+Another factor was a simple matter of comfort. Openmediavault's underlying operating system is [Debian][5], whereas FreeNAS sits atop [FreeBSD][6]. I'm personally not as familiar with FreeBSD, so that would make it more difficult for me to fix things if my NAS starts misbehaving. It also makes it more difficult for me to tweak things or add my own services to the machine if I want. Sure, I could learn FreeBSD and get more familiar with it, but I'm already home-building this NAS; I've found that projects tend to be more successful if you limit the number of "learning opportunities" you give yourself to complete them.
+
+Every situation is different, of course, so do your research and decide what seems to be the best fit for you. FreeNAS looks like the right solution for a lot of people. Openmediavault was the right one for me.
+
+### Installation and configuration
+
+The installation process is pretty well covered in the [openmediavault documentation][7], so I won't rehash that here. If you've ever installed a Linux distribution, most of the steps should look familiar to you (though with a somewhat uglier [Ncurses][8] interface than you might see on modern distributions). I installed it using the [dedicated drive][9] instructions. However, those instructions, while good, are rather spartan. When you're done, you have a base system installed, but there's more to do before you can actually use your NAS to store any files. For instance, the dedicated drive instructions install openmediavault on a hard drive, but that's the operating system drive, not the one with the shared space that's accessible to other computers on your network. You need to walk yourself through setting that up and configuring it.
+
+The first thing you should do is load up the administrative web interface and change the default password. This password is different from the root password you set during the installation process. It's the administrative account for the web interface, and the default username and password are `admin` and `openmediavault`, respectively—definitely something you'll want to change immediately after logging in.
+
+#### Set up your drives
+
+Once you've installed openmediavault, you need it to actually do stuff for you. The first logical step is to set up the drives that you're going to use for storage. I'm assuming that you've already got them physically installed, so all you have to do at this point is get openmediavault to recognize them and configure them. The first step is making sure those disks are visible. The sidebar menu has a lot of options, but it's very sensibly organized. Go to **Storage - > Disks**. Once you click that, you should see all of the drives you've installed on your server, including the one where you actually installed openmediavault. If you don't see all of your drives there, click the Scan button to see if it picks them up. Usually, it's not a problem.
+
+You could mount these drives individually to set them up as your file share, but for a file server, you'll want some redundancy. You want to be able to treat multiple drives as a single volume and recover your data if a drive fails or add new drives when you start running out of space. That means you're going to want a [RAID][10]. The topic of what specific type of RAID configuration you want is a deep rabbit hole that deserves an article all of its own (and many have been written), but suffice it to say that you'll need more than one drive, and in the best case, all of your drives store the same amount of data.
+
+Openmediavault supports all standard RAID levels, so you're good to go there. Configure your RAID in **Storage - > RAID Management**. Configuration is absurdly simple: Click the Create button, choose the disks you want in your RAID array, the RAID level you want to use, and a name for the array. Openmediavault handles the rest for you. There's no messing around at the command line, trying to remember which flags to use with the `mdadm` command. In my specific case, I have six 2-TB drives that I've set up as RAID 10.
+
+With your RAID set up, you've almost got a place to store things. You just need to set up a file system. Just like your desktop computer, a hard drive doesn't do you any good until you format it. So the next place to go in openmediavault's control panel is **Storage - > File Systems**. Just like configuring your RAID, click the Create button and follow the prompts. In this case, you choose the device to format. If you have only the one RAID on your server, it should be something like `md0`. You'll also need to choose the filesystem type. If you're not sure, just use the standard ext4 type.
+
+#### Define your shares
+
+Sweet! You've got a place to store files. Now you just need to make it visible on your home network. Configure this from the **Services** section of the openmediavault control panel. When it comes to setting up a file share on a network, there are really two main choices: NFS or SMB/CIFS. As a rule of thumb, if all of the computers on your network are running Linux distributions, then you're probably better off using NFS. However, if your home network is a mixed environment with a combination of Linux, Windows, Mac OS, and embedded devices, then SMB/CIFS is probably the right choice.
+
+These options aren't mutually exclusive. You could actually run both services on your server and get the best of both worlds. Or you could mix it up if you have specific devices dedicated to particular tasks. Whatever your usage scenario, configuring these services is dirt simple. Click on the service you want, enable it from its Settings, and define the shared folders you want visible on the network. In the case of SMB/CIFS shares, there are a few more settings available than with NFS, but most of the defaults are fine to start with. The cool thing is that since it's so easy to configure, it's also pretty easy to change on the fly.
+
+#### Configure users
+
+You're almost done. You've configured your drives in a RAID. You've formatted that RAID with a file system. And you've defined shared folders on that formatted RAID. The only thing left is saying who can access those shares and how much. This is handled from the **Access Rights Management** section. Use the **User** and **Group** sections to define the users who connect to your shared folders and the permissions they have with the files in those folders.
+
+Once you do that, you're pretty much good to go. You'll need to access your shares from your various client machines, but that's a topic for another article.
+
+Have fun!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/openmediavault
+
+作者:[Jason van Gumster][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/mairin
+[1]: https://opensource.com/article/18/8/automate-backups-raspberry-pi
+[2]: https://openmediavault.org
+[3]: https://freenas.org
+[4]: http://www.freenas.org/freenas-vs-openmediavault/
+[5]: https://www.debian.org/
+[6]: https://www.freebsd.org/
+[7]: https://openmediavault.readthedocs.io/en/latest/installation/index.html
+[8]: https://invisible-island.net/ncurses/
+[9]: https://openmediavault.readthedocs.io/en/latest/installation/via_iso.html
+[10]: https://en.wikipedia.org/wiki/RAID
diff --git a/sources/tech/20180917 Linux tricks that can save you time and trouble.md b/sources/tech/20180917 Linux tricks that can save you time and trouble.md
new file mode 100644
index 0000000000..786e2df2c1
--- /dev/null
+++ b/sources/tech/20180917 Linux tricks that can save you time and trouble.md
@@ -0,0 +1,169 @@
+Linux tricks that can save you time and trouble
+======
+Some command line tricks can make you even more productive on the Linux command line.
+
+![](https://images.idgesg.net/images/article/2018/09/boy-jumping-off-swing-100772498-large.jpg)
+
+Good Linux command line tricks don’t only save you time and trouble. They also help you remember and reuse complex commands, making it easier for you to focus on what you need to do, not how you should go about doing it. In this post, we’ll look at some handy command line tricks that you might come to appreciate.
+
+### Editing your commands
+
+When making changes to a command that you're about to run on the command line, you can move your cursor to the beginning or the end of the command line to facilitate your changes using the ^a (control key plus “a”) and ^e (control key plus “e”) sequences.
+
+You can also fix and rerun a previously entered command with an easy text substitution by putting your before and after strings between **^** characters -- as in ^before^after^.
+
+```
+$ eho hello world <== oops!
+
+Command 'eho' not found, did you mean:
+
+ command 'echo' from deb coreutils
+ command 'who' from deb coreutils
+
+Try: sudo apt install
+
+$ ^e^ec^ <== replace text
+echo hello world
+hello world
+
+```
+
+### Logging into a remote system with just its name
+
+If you log into other systems from the command line (I do this all the time), you might consider adding some aliases to your system to supply the details. Your alias can provide the username you want to use (which may or may not be the same as your username on your local system) and the identity of the remote server. Use an alias server_name=’ssh -v -l username IP-address' type of command like this:
+
+```
+$ alias butterfly=”ssh -v -l jdoe 192.168.0.11”
+```
+
+You can use the system name in place of the IP address if it’s listed in your /etc/hosts file or available through your DNS server.
+
+And remember you can list your aliases with the **alias** command.
+
+```
+$ alias
+alias butterfly='ssh -v -l jdoe 192.168.0.11'
+alias c='clear'
+alias egrep='egrep --color=auto'
+alias fgrep='fgrep --color=auto'
+alias grep='grep --color=auto'
+alias l='ls -CF'
+alias la='ls -A'
+alias list_repos='grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*'
+alias ll='ls -alF'
+alias ls='ls --color=auto'
+alias show_dimensions='xdpyinfo | grep '\''dimensions:'\'''
+```
+
+It's good practice to test new aliases and then add them to your ~/.bashrc or similar file to be sure they will be available any time you log in.
+
+### Freezing and thawing out your terminal window
+
+The ^s (control key plus “s”) sequence will stop a terminal from providing output by running an XOFF (transmit off) flow control. This affects PuTTY sessions, as well as terminal windows on your desktop. Sometimes typed by mistake, however, the way to make the terminal window responsive again is to enter ^q (control key plus “q”). The only real trick here is remembering ^q since you aren't very likely run into this situation very often.
+
+### Repeating commands
+
+Linux provides many ways to reuse commands. The key to command reuse is your history buffer and the commands it collects for you. The easiest way to repeat a command is to type an ! followed by the beginning letters of a recently used command. Another is to press the up-arrow on your keyboard until you see the command you want to reuse and then press enter. You can also display previously entered commands and then type ! followed by the number shown next to the command you want to reuse in the displayed command history entries.
+
+```
+!! <== repeat previous command
+!ec <== repeat last command that started with "ec"
+!76 <== repeat command #76 from command history
+```
+
+### Watching a log file for updates
+
+Commands such as tail -f /var/log/syslog will show you lines as they are being added to the specified log file — very useful if you are waiting for some particular activity or want to track what’s happening right now. The command will show the end of the file and then additional lines as they are added.
+
+```
+$ tail -f /var/log/auth.log
+Sep 17 09:41:01 fly CRON[8071]: pam_unix(cron:session): session closed for user smmsp
+Sep 17 09:45:01 fly CRON[8115]: pam_unix(cron:session): session opened for user root
+Sep 17 09:45:01 fly CRON[8115]: pam_unix(cron:session): session closed for user root
+Sep 17 09:47:00 fly sshd[8124]: Accepted password for shs from 192.168.0.22 port 47792
+Sep 17 09:47:00 fly sshd[8124]: pam_unix(sshd:session): session opened for user shs by
+Sep 17 09:47:00 fly systemd-logind[776]: New session 215 of user shs.
+Sep 17 09:55:01 fly CRON[8208]: pam_unix(cron:session): session opened for user root
+Sep 17 09:55:01 fly CRON[8208]: pam_unix(cron:session): session closed for user root
+ <== waits for additional lines to be added
+```
+
+### Asking for help
+
+For most Linux commands, you can enter the name of the command followed by the option **\--help** to get some fairly succinct information on what the command does and how to use it. Less extensive than the man command, the --help option often tells you just what you need to know without expanding on all of the options available.
+
+```
+$ mkdir --help
+Usage: mkdir [OPTION]... DIRECTORY...
+Create the DIRECTORY(ies), if they do not already exist.
+
+Mandatory arguments to long options are mandatory for short options too.
+ -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
+ -p, --parents no error if existing, make parent directories as needed
+ -v, --verbose print a message for each created directory
+ -Z set SELinux security context of each created directory
+ to the default type
+ --context[=CTX] like -Z, or if CTX is specified then set the SELinux
+ or SMACK security context to CTX
+ --help display this help and exit
+ --version output version information and exit
+
+GNU coreutils online help:
+Full documentation at:
+or available locally via: info '(coreutils) mkdir invocation'
+```
+
+### Removing files with care
+
+To add a little caution to your use of the rm command, you can set it up with an alias that asks you to confirm your request to delete files before it goes ahead and deletes them. Some sysadmins make this the default. In that case, you might like the next option even more.
+
+```
+$ rm -i <== prompt for confirmation
+```
+
+### Turning off aliases
+
+You can always disable an alias interactively by using the unalias command. It doesn’t change the configuration of the alias in question; it just disables it until the next time you log in or source the file in which the alias is set up.
+
+```
+$ unalias rm
+```
+
+If the **rm -i** alias is set up as the default and you prefer to never have to provide confirmation before deleting files, you can put your **unalias** command in one of your startup files (e.g., ~/.bashrc).
+
+### Remembering to use sudo
+
+If you often forget to precede commands that only root can run with “sudo”, there are two things you can do. You can take advantage of your command history by using the “sudo !!” (use sudo to run your most recent command with sudo prepended to it), or you can turn some of these commands into aliases with the required "sudo" attached.
+
+```
+$ alias update=’sudo apt update’
+```
+
+### More complex tricks
+
+Some useful command line tricks require a little more than a clever alias. An alias, after all, replaces a command, often inserting options so you don't have to enter them and allowing you to tack on additional information. If you want something more complex than an alias can manage, you can write a simple script or add a function to your .bashrc or other start-up file. The function below, for example, creates a directory and moves you into it. Once it's been set up, source your .bashrc or other file and you can use commands such as "md temp" to set up a directory and cd into it.
+
+```
+md () { mkdir -p "$@" && cd "$1"; }
+```
+
+### Wrap-up
+
+Working on the Linux command line remains one of the most productive and enjoyable ways to get work done on my Linux systems, but a group of command line tricks and clever aliases can make that experience even better.
+
+Join the Network World communities on [Facebook][1] and [LinkedIn][2] to comment on topics that are top of mind.
+
+--------------------------------------------------------------------------------
+
+via: https://www.networkworld.com/article/3305811/linux/linux-tricks-that-even-you-can-love.html
+
+作者:[Sandra Henry-Stocker][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/Sandra-Henry_Stocker/
+[1]: https://www.facebook.com/NetworkWorld/
+[2]: https://www.linkedin.com/company/network-world
diff --git a/sources/tech/20180918 Cozy Is A Nice Linux Audiobook Player For DRM-Free Audio Files.md b/sources/tech/20180918 Cozy Is A Nice Linux Audiobook Player For DRM-Free Audio Files.md
new file mode 100644
index 0000000000..8450d6fd11
--- /dev/null
+++ b/sources/tech/20180918 Cozy Is A Nice Linux Audiobook Player For DRM-Free Audio Files.md
@@ -0,0 +1,72 @@
+Cozy Is A Nice Linux Audiobook Player For DRM-Free Audio Files
+======
+[Cozy][1] **is a free and open source audiobook player for the Linux desktop. The application lets you listen to DRM-free audiobooks (mp3, m4a, flac, ogg and wav) using a modern Gtk3 interface.**
+
+![](https://4.bp.blogspot.com/-A1TWkOasR7s/W6DevbmTH9I/AAAAAAAABho/VSjQkiDeWK49xzJ2MXvvwk0T_AhGWqQRgCLcBGAs/s1600/cozy-audiobook-player.png)
+
+You could use any audio player to listen to audiobooks, but a specialized audiobook player like Cozy makes everything easier, by **remembering your playback position and continuing from where you left off for each audiobook** , or by letting you **set the playback speed of each book individually** , among others.
+
+The Cozy interface lets you browse books by author, reader or recency, while also providing search functionality. **Books front covers are supported by Cozy** \- either by using embedded images, or by adding a cover.jpg or cover.png image in the book folder, which is automatically picked up and displayed by Cozy.
+
+When you click on an audiobook, Cozy lists the book chapters on the right, while displaying the book cover (if available) on the left, along with the book name, author and the last played time, along with total and remaining time:
+
+![](https://4.bp.blogspot.com/-hqBITKAiYaM/W6De4HzckRI/AAAAAAAABhs/GxSjfpND4hkk6ZM29TKfwB1zzXPxNa0_gCLcBGAs/s640/cozy-audiobook-player-playback-chapters.png)
+
+From the application toolbar you can easily **go back 30 seconds** by clicking the rewind icon from its top left-hand side corner. Besides regular controls, cover and title, you'll also find a playback speed button on the toolbar, which lets you increase the playback speed up to 2X.
+
+**A sleep timer is also available**. It can be set to stop after the current chapter or after a given number of minutes.
+
+Other Cozy features worth mentioning:
+
+ * **Mpris integration** (Media keys & playback info)
+ * **Supports multiple storage locations**
+ * **Drag'n'drop support for importing new audiobooks**
+ * **Offline Mode**. If your audiobooks are on an external or network drive, you can switch the download button to keep a local cached copy of the book to listen to on the go. To enable this feature you have to set your storage location to external in the settings
+ * **Prevents your system from suspend during playback**
+ * **Dark mode**
+
+
+
+What I'd like to see in Cozy is a way to get audiobooks metadata, including the book cover, automatically. A feature to retrieve metadata from Audible.com was proposed on the Cozy GitHub project page and the developer seems interested in this, but it's not clear when or if this will be implemented.
+
+Like I was mentioning in the beginning of the article, Cozy only supports DRM-free audio files. Currently it supports mp3, m4a, flac, ogg and wav. Support for more formats will probably come in the future, with m4b being listed on the Cozy 0.7.0 todo list.
+
+Cozy cannot play Audible audiobooks due to DRM. But you'll find some solutions out there for converting Audible (.aa/.aax) audiobooks to mp3, like
+
+### Install Cozy
+
+**Any Linux distribution / Flatpak** : Cozy is available as a Flatpak on FlatHub. To install it, follow the quick Flatpak [setup][4], then go to the Cozy FlaHub [page][5] and click the install button, or use the install command at the bottom if its page.
+
+**elementary OS** : Cozy is available in the [AppCenter][6].
+
+**Ubuntu 18.04 / Linux Mint 19** : you can install Cozy from its repository:
+
+```
+wget -nv https://download.opensuse.org/repositories/home:geigi/Ubuntu_18.04/Release.key -O Release.key
+sudo apt-key add - < Release.key
+sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/geigi/Ubuntu_18.04/ /' > /etc/apt/sources.list.d/home:geigi.list"
+sudo apt update
+sudo apt install com.github.geigi.cozy
+```
+
+**For other ways of installing Cozy check out its[website][2].**
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.linuxuprising.com/2018/09/cozy-is-nice-linux-audiobook-player-for.html
+
+作者:[Logix][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://plus.google.com/118280394805678839070
+[1]: https://cozy.geigi.de/
+[2]: https://cozy.geigi.de/#how-can-i-get-it
+[3]: https://gitlab.com/ReverendJ1/audiblefreedom/blob/master/audiblefreedom
+[4]: https://flatpak.org/setup/
+[5]: https://flathub.org/apps/details/com.github.geigi.cozy
+[6]: https://appcenter.elementary.io/com.github.geigi.cozy/
diff --git a/sources/tech/20180918 How To Force APT Package Manager To Use IPv4 In Ubuntu 16.04.md b/sources/tech/20180918 How To Force APT Package Manager To Use IPv4 In Ubuntu 16.04.md
new file mode 100644
index 0000000000..f81d944570
--- /dev/null
+++ b/sources/tech/20180918 How To Force APT Package Manager To Use IPv4 In Ubuntu 16.04.md
@@ -0,0 +1,49 @@
+translating---geekpi
+
+How To Force APT Package Manager To Use IPv4 In Ubuntu 16.04
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/ipv4-720x340.png)
+
+**APT** , short or **A** dvanced **P** ackage **T** ool, is the default package manager for Debian-based systems. Using APT, we can install, update, upgrade and remove applications from the system. Lately, I have been facing a strange error. Whenever I try update my Ubuntu 16.04 box, I get this error – **“0% [Connecting to in.archive.ubuntu.com (2001:67c:1560:8001::14)]”** and the update process gets stuck for a long time. My Internet connection is working well and I can able to ping all websites including Ubuntu official site. After a couple Google searches, I realized that sometimes the Ubuntu mirrors are not reachable over IPv6. This problem is solved after I force APT package manager to use IPv4 in place of IPv6 to access Ubuntu mirrors while updating the system. If you ever encountered with this error, you can solve it as described below.
+
+### Force APT Package Manager To Use IPv4 In Ubuntu 16.04
+
+To force APT to use IPv4 in place of IPv6 while updating and upgrading your Ubuntu 16.04 LTS systems, simply use the following commands:
+
+```
+$ sudo apt-get -o Acquire::ForceIPv4=true update
+
+$ sudo apt-get -o Acquire::ForceIPv4=true upgrade
+```
+
+Voila! This time update process run and completed quickly.
+
+You can also make this persistent for all **apt-get** transactions in the future by adding the following line in **/etc/apt/apt.conf.d/99force-ipv4** file using command:
+
+```
+$ echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
+```
+
+**Disclaimer:**
+
+I don’t know if anyone is having this issue lately, but I kept getting this error today at least four to five times in my Ubuntu 16.04 LTS virtual machine and I solved it as described above. I am not sure that it is the recommended solution. Go through Ubuntu forums and make sure this method is legitimate. Since mine is just a VM which I use it only for testing and learning purposes, I don’t mind about the authenticity of this method. Use it on your own risk.
+
+Hope this helps. More good stuffs to come. Stay tuned!
+
+Cheers!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/how-to-force-apt-package-manager-to-use-ipv4-in-ubuntu-16-04/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
diff --git a/sources/tech/20180918 Linux firewalls- What you need to know about iptables and firewalld.md b/sources/tech/20180918 Linux firewalls- What you need to know about iptables and firewalld.md
new file mode 100644
index 0000000000..98e38a02cd
--- /dev/null
+++ b/sources/tech/20180918 Linux firewalls- What you need to know about iptables and firewalld.md
@@ -0,0 +1,170 @@
+heguangzhi translating
+
+Linux firewalls: What you need to know about iptables and firewalld
+======
+Here's how to use the iptables and firewalld tools to manage Linux firewall connectivity rules.
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/openwires_fromRHT_520_0612LL.png?itok=PqZi55Ab)
+This article is excerpted from my book, [Linux in Action][1], and a second Manning project that’s yet to be released.
+
+### The firewall
+
+A firewall is a set of rules. When a data packet moves into or out of a protected network space, its contents (in particular, information about its origin, target, and the protocol it plans to use) are tested against the firewall rules to see if it should be allowed through. Here’s a simple example:
+
+![firewall filtering request][3]
+
+A firewall can filter requests based on protocol or target-based rules.
+
+On the one hand, [iptables][4] is a tool for managing firewall rules on a Linux machine.
+
+On the other hand, [firewalld][5] is also a tool for managing firewall rules on a Linux machine.
+
+You got a problem with that? And would it spoil your day if I told you that there was another tool out there, called [nftables][6]?
+
+OK, I’ll admit that the whole thing does smell a bit funny, so let me explain. It all starts with Netfilter, which controls access to and from the network stack at the Linux kernel module level. For decades, the primary command-line tool for managing Netfilter hooks was the iptables ruleset.
+
+Because the syntax needed to invoke those rules could come across as a bit arcane, various user-friendly implementations like [ufw][7] and firewalld were introduced as higher-level Netfilter interpreters. Ufw and firewalld are, however, primarily designed to solve the kinds of problems faced by stand-alone computers. Building full-sized network solutions will often require the extra muscle of iptables or, since 2014, its replacement, nftables (through the nft command line tool).
+
+iptables hasn’t gone anywhere and is still widely used. In fact, you should expect to run into iptables-protected networks in your work as an admin for many years to come. But nftables, by adding on to the classic Netfilter toolset, has brought some important new functionality.
+
+From here on, I’ll show by example how firewalld and iptables solve simple connectivity problems.
+
+### Configure HTTP access using firewalld
+
+As you might have guessed from its name, firewalld is part of the [systemd][8] family. Firewalld can be installed on Debian/Ubuntu machines, but it’s there by default on Red Hat and CentOS. If you’ve got a web server like Apache running on your machine, you can confirm that the firewall is working by browsing to your server’s web root. If the site is unreachable, then firewalld is doing its job.
+
+You’ll use the `firewall-cmd` tool to manage firewalld settings from the command line. Adding the `–state` argument returns the current firewall status:
+
+```
+# firewall-cmd --state
+running
+```
+
+By default, firewalld will be active and will reject all incoming traffic with a couple of exceptions, like SSH. That means your website won’t be getting too many visitors, which will certainly save you a lot of data transfer costs. As that’s probably not what you had in mind for your web server, though, you’ll want to open the HTTP and HTTPS ports that by convention are designated as 80 and 443, respectively. firewalld offers two ways to do that. One is through the `–add-port` argument that references the port number directly along with the network protocol it’ll use (TCP in this case). The `–permanent` argument tells firewalld to load this rule each time the server boots:
+
+```
+# firewall-cmd --permanent --add-port=80/tcp
+# firewall-cmd --permanent --add-port=443/tcp
+```
+
+The `–reload` argument will apply those rules to the current session:
+
+```
+# firewall-cmd --reload
+```
+
+Curious as to the current settings on your firewall? Run `–list-services`:
+
+```
+# firewall-cmd --list-services
+dhcpv6-client http https ssh
+```
+
+Assuming you’ve added browser access as described earlier, the HTTP, HTTPS, and SSH ports should now all be open—along with `dhcpv6-client`, which allows Linux to request an IPv6 IP address from a local DHCP server.
+
+### Configure a locked-down customer kiosk using iptables
+
+I’m sure you’ve seen kiosks—they’re the tablets, touchscreens, and ATM-like PCs in a box that airports, libraries, and business leave lying around, inviting customers and passersby to browse content. The thing about most kiosks is that you don’t usually want users to make themselves at home and treat them like their own devices. They’re not generally meant for browsing, viewing YouTube videos, or launching denial-of-service attacks against the Pentagon. So to make sure they’re not misused, you need to lock them down.
+
+One way is to apply some kind of kiosk mode, whether it’s through clever use of a Linux display manager or at the browser level. But to make sure you’ve got all the holes plugged, you’ll probably also want to add some hard network controls through a firewall. In the following section, I'll describe how I would do it using iptables.
+
+There are two important things to remember about using iptables: The order you give your rules is critical, and by themselves, iptables rules won’t survive a reboot. I’ll address those here one at a time.
+
+### The kiosk project
+
+To illustrate all this, let’s imagine we work for a store that’s part of a larger chain called BigMart. They’ve been around for decades; in fact, our imaginary grandparents probably grew up shopping there. But these days, the guys at BigMart corporate headquarters are probably just counting the hours before Amazon drives them under for good.
+
+Nevertheless, BigMart’s IT department is doing its best, and they’ve just sent you some WiFi-ready kiosk devices that you’re expected to install at strategic locations throughout your store. The idea is that they’ll display a web browser logged into the BigMart.com products pages, allowing them to look up merchandise features, aisle location, and stock levels. The kiosks will also need access to bigmart-data.com, where many of the images and video media are stored.
+
+Besides those, you’ll want to permit updates and, whenever necessary, package downloads. Finally, you’ll want to permit inbound SSH access only from your local workstation, and block everyone else. The figure below illustrates how it will all work:
+
+![kiosk traffic flow ip tables][10]
+
+The kiosk traffic flow being controlled by iptables.
+
+### The script
+
+Here’s how that will all fit into a Bash script:
+
+```
+#!/bin/bash
+iptables -A OUTPUT -p tcp -d bigmart.com -j ACCEPT
+iptables -A OUTPUT -p tcp -d bigmart-data.com -j ACCEPT
+iptables -A OUTPUT -p tcp -d ubuntu.com -j ACCEPT
+iptables -A OUTPUT -p tcp -d ca.archive.ubuntu.com -j ACCEPT
+iptables -A OUTPUT -p tcp --dport 80 -j DROP
+iptables -A OUTPUT -p tcp --dport 443 -j DROP
+iptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j ACCEPT
+iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
+```
+
+The basic anatomy of our rules starts with `-A`, telling iptables that we want to add the following rule. `OUTPUT` means that this rule should become part of the OUTPUT chain. `-p` indicates that this rule will apply only to packets using the TCP protocol, where, as `-d` tells us, the destination is [bigmart.com][11]. The `-j` flag points to `ACCEPT` as the action to take when a packet matches the rule. In this first rule, that action is to permit, or accept, the request. But further down, you can see requests that will be dropped, or denied.
+
+Remember that order matters. And that’s because iptables will run a request past each of its rules, but only until it gets a match. So an outgoing browser request for, say, [youtube.com][12] will pass the first four rules, but when it gets to either the `–dport 80` or `–dport 443` rule—depending on whether it’s an HTTP or HTTPS request—it’ll be dropped. iptables won’t bother checking any further because that was a match.
+
+On the other hand, a system request to ubuntu.com for a software upgrade will get through when it hits its appropriate rule. What we’re doing here, obviously, is permitting outgoing HTTP or HTTPS requests to only our BigMart or Ubuntu destinations and no others.
+
+The final two rules will deal with incoming SSH requests. They won’t already have been denied by the two previous drop rules since they don’t use ports 80 or 443, but 22. In this case, login requests from my workstation will be accepted but requests for anywhere else will be dropped. This is important: Make sure the IP address you use for your port 22 rule matches the address of the machine you’re using to log in—if you don’t do that, you’ll be instantly locked out. It's no big deal, of course, because the way it’s currently configured, you could simply reboot the server and the iptables rules will all be dropped. If you’re using an LXC container as your server and logging on from your LXC host, then use the IP address your host uses to connect to the container, not its public address.
+
+You’ll need to remember to update this rule if my machine’s IP ever changes; otherwise, you’ll be locked out.
+
+Playing along at home (hopefully on a throwaway VM of some sort)? Great. Create your own script. Now I can save the script, use `chmod` to make it executable, and run it as `sudo`. Don’t worry about that `bigmart-data.com not found` error—of course it’s not found; it doesn’t exist.
+
+```
+chmod +X scriptname.sh
+sudo ./scriptname.sh
+```
+
+You can test your firewall from the command line using `cURL`. Requesting ubuntu.com works, but [manning.com][13] fails.
+
+```
+curl ubuntu.com
+curl manning.com
+```
+
+### Configuring iptables to load on system boot
+
+Now, how do I get these rules to automatically load each time the kiosk boots? The first step is to save the current rules to a .rules file using the `iptables-save` tool. That’ll create a file in the root directory containing a list of the rules. The pipe, followed by the tee command, is necessary to apply my `sudo` authority to the second part of the string: the actual saving of a file to the otherwise restricted root directory.
+
+I can then tell the system to run a related tool called `iptables-restore` every time it boots. A regular cron job of the kind we saw in the previous module won’t help because they’re run at set times, but we have no idea when our computer might decide to crash and reboot.
+
+There are lots of ways to handle this problem. Here’s one:
+
+On my Linux machine, I’ll install a program called [anacron][14] that will give us a file in the /etc/ directory called anacrontab. I’ll edit the file and add this `iptables-restore` command, telling it to load the current values of that .rules file into iptables each day (when necessary) one minute after a boot. I’ll give the job an identifier (`iptables-restore`) and then add the command itself. Since you’re playing along with me at home, you should test all this out by rebooting your system.
+
+```
+sudo iptables-save | sudo tee /root/my.active.firewall.rules
+sudo apt install anacron
+sudo nano /etc/anacrontab
+1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules
+
+```
+
+I hope these practical examples have illustrated how to use iptables and firewalld for managing connectivity issues on Linux-based firewalls.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/linux-iptables-firewalld
+
+作者:[David Clinton][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/remyd
+[1]: https://www.manning.com/books/linux-in-action?a_aid=bootstrap-it&a_bid=4ca15fc9&chan=opensource
+[2]: /file/409116
+[3]: https://opensource.com/sites/default/files/uploads/iptables1.jpg (firewall filtering request)
+[4]: https://en.wikipedia.org/wiki/Iptables
+[5]: https://firewalld.org/
+[6]: https://wiki.nftables.org/wiki-nftables/index.php/Main_Page
+[7]: https://en.wikipedia.org/wiki/Uncomplicated_Firewall
+[8]: https://en.wikipedia.org/wiki/Systemd
+[9]: /file/409121
+[10]: https://opensource.com/sites/default/files/uploads/iptables2.jpg (kiosk traffic flow ip tables)
+[11]: http://bigmart.com/
+[12]: http://youtube.com/
+[13]: http://manning.com/
+[14]: https://sourceforge.net/projects/anacron/
diff --git a/sources/tech/20180919 Host your own cloud with Raspberry Pi NAS.md b/sources/tech/20180919 Host your own cloud with Raspberry Pi NAS.md
new file mode 100644
index 0000000000..6e7893313e
--- /dev/null
+++ b/sources/tech/20180919 Host your own cloud with Raspberry Pi NAS.md
@@ -0,0 +1,111 @@
+Host your own cloud with Raspberry Pi NAS
+======
+
+Protect and secure your data with a self-hosted cloud powered by your Raspberry Pi.
+
+In the first two parts of this series, we discussed the [hardware and software fundamentals][1] for building network-attached storage (NAS) on a Raspberry Pi. We also put a proper [backup strategy][2] in place to secure the data on the NAS. In this third part, we will talk about a convenient way to store, access, and share your data with [Nextcloud][3].
+
+### Prerequisites
+
+To use Nextcloud conveniently, you have to meet a few prerequisites. First, you should have a domain you can use for the Nextcloud instance. For the sake of simplicity in this how-to, we'll use **nextcloud.pi-nas.com**. This domain should be directed to your Raspberry Pi. If you want to run it on your home network, you probably need to set up dynamic DNS for this domain and enable port forwarding of ports 80 and 443 (if you go for an SSL setup, which is highly recommended; otherwise port 80 should be sufficient) from your router to the Raspberry Pi.
+
+You can automate dynamic DNS updates from the Raspberry Pi using [ddclient][4].
+
+### Install Nextcloud
+
+To run Nextcloud on your Raspberry Pi (using the setup described in the [first part][1] of this series), install the following packages as dependencies to Nextcloud using **apt**.
+
+```
+sudo apt install unzip wget php apache2 mysql-server php-zip php-mysql php-dom php-mbstring php-gd php-curl
+```
+
+The next step is to download Nextcloud. [Get the latest release's URL][5] and copy it to download via **wget** on the Raspberry Pi. In the first article in this series, we attached two disk drives to the Raspberry Pi, one for current data and one for backups. Install Nextcloud on the data drive to make sure data is backed up automatically every night.
+
+```
+sudo mkdir -p /nas/data/nextcloud
+sudo chown pi /nas/data/nextcloud
+cd /nas/data/
+wget https://download.nextcloud.com/server/releases/nextcloud-14.0.0.zip -O /nas/data/nextcloud.zip
+unzip nextcloud.zip
+sudo ln -s /nas/data/nextcloud /var/www/nextcloud
+sudo chown -R www-data:www-data /nas/data/nextcloud
+```
+
+When I wrote this, the latest release (as you see in the code above) was 14. Nextcloud is under heavy development, so you may find a newer version when installing your copy of Nextcloud onto your Raspberry Pi.
+
+### Database setup
+
+When we installed Nextcloud above, we also installed MySQL as a dependency to use it for all the metadata Nextcloud generates (for example, the users you create to access Nextcloud). If you would rather use a Postgres database, you'll need to adjust some of the modules installed above.
+
+To access the MySQL database as root, start the MySQL client as root:
+
+```
+sudo mysql
+```
+
+This will open a SQL prompt where you can insert the following commands—substituting the placeholder with the password you want to use for the database connection—to create a database for Nextcloud.
+
+```
+CREATE USER nextcloud IDENTIFIED BY '';
+CREATE DATABASE nextcloud;
+GRANT ALL ON nextcloud.* TO nextcloud;
+```
+
+You can exit the SQL prompt by pressing **Ctrl+D** or entering **quit**.
+
+### Web server configuration
+
+Nextcloud can be configured to run using Nginx or other web servers, but for this how-to, I decided to go with the Apache web server on my Raspberry Pi NAS. (Feel free to try out another alternative and let me know if you think it performs better.)
+
+To set it up, configure a virtual host for the domain you created for your Nextcloud instance **nextcloud.pi-nas.com**. To create a virtual host, create the file **/etc/apache2/sites-available/001-nextcloud.conf** with content similar to the following. Make sure to adjust the ServerName to your domain and paths, if you didn't use the ones suggested earlier in this series.
+
+```
+
+ServerName nextcloud.pi-nas.com
+ServerAdmin admin@pi-nas.com
+DocumentRoot /var/www/nextcloud/
+
+
+AllowOverride None
+
+
+```
+
+To enable this virtual host, run the following two commands.
+
+```
+a2ensite 001-nextcloud
+sudo systemctl reload apache2
+```
+
+With this configuration, you should now be able to reach the web server with your domain via the web browser. To secure your data, I recommend using HTTPS instead of HTTP to access Nextcloud. A very easy (and free) way is to obtain a [Let's Encrypt][6] certificate with [Certbot][7] and have a cron job automatically refresh it. That way you don't have to mess around with self-signed or expiring certificates. Follow Certbot's simple how-to [instructions to install it on your Raspberry Pi][8]. During Certbot configuration, you can even decide to automatically forward HTTP to HTTPS, so visitors to **** will be redirected to ****. Please note, if your Raspberry Pi is running behind your home router, you must have port forwarding enabled for ports 443 and 80 to obtain Let's Encrypt certificates.
+
+### Configure Nextcloud
+
+The final step is to visit your fresh Nextcloud instance in a web browser to finish the configuration. To do so, open your domain in a browser and insert the database details from above. You can also set up your first Nextcloud user here, the one you can use for admin tasks. By default, the data directory should be inside the Nextcloud folder, so you don't need to change anything for the backup mechanisms from the [second part of this series][2] to pick up the data stored by users in Nextcloud.
+
+Afterward, you will be directed to your Nextcloud and can log in with the admin user you created previously. To see a list of recommended steps to ensure a performant and secure Nextcloud installation, visit the Basic Settings tab in the Settings page (in our example: settings/admin) and see the Security & Setup Warnings section.
+
+Congratulations! You've set up your own Nextcloud powered by a Raspberry Pi. Go ahead and [download a Nextcloud client][9] from the Nextcloud page to sync data with your client devices and access it offline. Mobile clients even provide features like instant upload of pictures you take, so they'll automatically sync to your desktop PC without wondering how to get them there.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/host-cloud-nas-raspberry-pi
+
+作者:[Manuel Dewald][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/ntlx
+[1]: https://opensource.com/article/18/7/network-attached-storage-Raspberry-Pi
+[2]: https://opensource.com/article/18/8/automate-backups-raspberry-pi
+[3]: https://nextcloud.com/
+[4]: https://sourceforge.net/p/ddclient/wiki/Home/
+[5]: https://nextcloud.com/install/#instructions-server
+[6]: https://letsencrypt.org/
+[7]: https://certbot.eff.org/
+[8]: https://certbot.eff.org/lets-encrypt/debianother-apache
+[9]: https://nextcloud.com/install/#install-clients
diff --git a/sources/tech/20180919 Streama - Setup Your Own Streaming Media Server In Minutes.md b/sources/tech/20180919 Streama - Setup Your Own Streaming Media Server In Minutes.md
new file mode 100644
index 0000000000..521a8f5b95
--- /dev/null
+++ b/sources/tech/20180919 Streama - Setup Your Own Streaming Media Server In Minutes.md
@@ -0,0 +1,171 @@
+Streama – Setup Your Own Streaming Media Server In Minutes
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/streama-720x340.png)
+
+**Streama** is a free, open source application that helps to setup your own personal streaming media server in minutes in Unix-like operating systems. It’s like Netflix, but self-hostable. You can deploy it on your local system or VPS or dedicated server and stream the media files across multiple devices. The media files can be accessed from a web-browser from any system on your network. If you have deployed on your VPS, you can access it from anywhere. Streama works like your own personal Netflix system to stream your TV shows, videos, audios and movies. Streama is a web-based application written using Grails 3 (server-side) with SpringSecurity and all frond-end components are written in AngularJS. The built-in player is completely HTML5-based.
+
+### Prominent Features
+
+Streama ships with a lot features as listed below.
+
+ * Easy to install configure. You can either download docker instance and fire up your media server in minutes or install vanilla version on your local or VPS or dedicated server.
+ * Drag and drop support to upload media files.
+ * Live sync watching support. You can watch videos with your friends, family remotely. It doesn’t matter where they are. You can all watch the same video at a time.
+ * Built-in beautiful video player to watch/listen video and audio.
+ * Built-in browser to access the media files in the server.
+ * Multi-user support. You can create individual user accounts to your family members and access the media server simultaneously.
+ * Streama supports pause-play option. Pause the playback at any time and Streama remembers where you left off last time.
+ * Streama can be able to detect similar movies and videos and shows for you to add.
+ * Self-hostable
+ * It is completely free and open source.
+
+
+
+What do you need more? Streama has everything you to need to setup a full-fledged streaming media server in your Linux box.
+
+### Setup Your Own Streaming Media Server Using Streama
+
+Streama requires JAVA 8 or later, preferably **OpenJDK**. And, the recommended OS is **Ubuntu**. For the purpose of this guide, I will be using Ubuntu 18.04 LTS.
+
+By default, the latest Ubuntu 18.04 includes Open JDK 11. To install default openJDK in Ubuntu 18.04 or later, run:
+
+```
+$ sudo apt install default-jdk
+
+```
+
+Java 8 is the latest stable Long Time Support version. If you prefer to use Java LTS, run:
+
+```
+$ sudo apt install openjdk-8-jdk
+```
+
+I have installed openjdk-8-jdk. To check the installed Java version, run:
+
+```
+$ java -version
+openjdk version "1.8.0_181"
+OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
+OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
+```
+
+Once java installed, create a directory to save Streama executable and yml files.
+
+```
+$ sudo mkdir /data
+
+$ sudo mkdir /data/streama
+```
+
+I followed the official documentation, so I used this path – /data/streama. It is optional. You’re free to use any location of your choice.
+
+Switch to streama directory:
+
+```
+$ cd /data/streama
+```
+
+Download the latest Streama executable file from [**releases page**][1]. As of writing this guide, the latest version was **v1.6.0-RC8**.
+
+```
+$ sudo wget https://github.com/streamaserver/streama/releases/download/v1.6.0-RC8/streama-1.6.0-RC8.war
+```
+
+Make it executable:
+
+```
+$ sudo chmod +x streama-1.6.0-RC8.war
+```
+
+Now, run Streama application using command:
+
+```
+$ sudo ./streama-1.6.0-RC8.war
+```
+
+If you an output something like below, Streama is working!
+
+```
+INFO streama.Application - Starting Application on ubuntuserver with PID 26714 (/data/streama/streama-1.6.0-RC8.war started by root in /data/streama)
+DEBUG streama.Application - Running with Spring Boot v1.4.4.RELEASE, Spring v4.3.6.RELEASE
+INFO streama.Application - The following profiles are active: production
+
+Configuring Spring Security Core ...
+... finished configuring Spring Security Core
+
+INFO streama.Application - Started Application in 92.003 seconds (JVM running for 98.66)
+Grails application running at http://localhost:8080 in environment: production
+```
+
+Open your web browser and navigate to URL – ****
+
+You should see Streama login screen. Login with default credentials – **admin/admin**
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/streama-login-page.png)
+
+Now, You need to fill out some required base-settings. Click OK button in the next screen and you will be redirected to the settings page. In the Settings page, you need to set some parameters such as the location of the Uploads directory, Streama logo, name of the media server, base URL, allow anonymous access, allow users to download videos. All fields marked with ***** is necessary to fill. Once you provided the details, click **Save settings** button.
+
+![](http://www.ostechnix.com/wp-content/uploads/2018/09/streama-settings.png)
+
+Congratulations! Your media server is ready to use!
+
+Here is how Stream dashboard looks like.
+
+![](http://www.ostechnix.com/wp-content/uploads/2018/09/Streama-dashboard.png)
+
+And, this is the contents management page where you can upload movies, shows, access files via file manager, view the notifications and highlights.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Manage-contents-in-Streama.png)
+
+### Adding movies/shows
+
+Let me show you how to add a movie.
+
+Go to the **“Manage Content”** page from the dashboard and click **“Create New Movie”** link.
+
+Enter the movie details, such as name, release date, IMDB ID and movie description and click **Save**. These are all optional, you can simply ignore them if you don’t know about the details.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Add-movie-in-Streama-1.png)
+
+We have added the movie details, but we haven’t added the actual movie yet. To do so, click on the red box in the bottom that says – **“No video file yet! Drop file or Click here to add”**.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Add-movie-in-Streama-2.png)
+
+You could either drag and drop the movie file inside this dashboard or click on the red box to manually upload it.
+
+Choose the movie file to upload and click Upload.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Add-movie-in-Streama-3.png)
+
+Once the upload is completed, you could see the uploaded movie details. Click on the three horizontal lines next to the movie if you want to edit/modify movie details.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Add-movie-in-Streama-4.png)
+
+Similarly, you can create TV shows, videos and audios.
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Add-movie-in-Streama-5.png)
+
+And also the movies/shows are started to appear in the home screen of your dashboard. Simply click on it to play the video and enjoy Netflix experience right from your Linux desktop.
+
+For more details, refer the product’s official website.
+
+And, that’s all for now. Hope this was useful. More good stuffs to come. Stay tuned!
+
+Cheers!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/streama-setup-your-own-streaming-media-server-in-minutes/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
+[1]: https://github.com/streamaserver/streama/releases
diff --git a/sources/tech/20180919 Understand Fedora memory usage with top.md b/sources/tech/20180919 Understand Fedora memory usage with top.md
new file mode 100644
index 0000000000..ef72988469
--- /dev/null
+++ b/sources/tech/20180919 Understand Fedora memory usage with top.md
@@ -0,0 +1,62 @@
+HankChow translating
+
+Understand Fedora memory usage with top
+======
+
+![](https://fedoramagazine.org/wp-content/uploads/2018/09/memory-top-816x345.jpg)
+
+Have you used the top utility in a terminal to see memory usage on your Fedora system? If so, you might be surprised to see some of the numbers there. It might look like a lot more memory is consumed than your system has available. This article will explain a little more about memory usage, and how to read these numbers.
+
+### Memory usage in real terms
+
+The way the operating system (OS) uses memory may not be self-evident. In fact, some ingenious, behind-the-scenes techniques are at play. They help your OS use memory more efficiently, without involving you.
+
+Most applications are not self contained. Instead, each relies on sets of functions collected in libraries. These libraries are also installed on the system. In Fedora, the RPM packaging system ensures that when you install an app, any libraries on which it relies are installed, too.
+
+When an app runs, the OS doesn’t necessarily load all the information it uses into real memory. Instead, it builds a map to the storage where that code is stored, called virtual memory. The OS then loads only the parts it needs. When it no longer needs portions of memory, it might release or swap them out as appropriate.
+
+This means an app can map a very large amount of virtual memory, while using less real memory on the system at one time. It might even map more RAM than the system has available! In fact, across a whole OS that’s often the case.
+
+In addition, related applications may rely on the same libraries. The Linux kernel in your Fedora system often shares memory between applications. It doesn’t need to load multiple copies of the same library for related apps. This works similarly for separate instances of the same app, too.
+
+Without understanding these details, the output of the top application can be confusing. The following example will clarify this view into memory usage.
+
+### Viewing memory usage in top
+
+If you haven’t tried yet, open a terminal and run the top command to see some output. Hit **Shift+M** to see the list sorted by memory usage. Your display may look slightly different than this example from a running Fedora Workstation:
+
+
+
+There are three columns showing memory usage to examine: VIRT, RES, and SHR. The measurements are currently shown in kilobytes (KB).
+
+The VIRT column is the virtual memory mapped for this process. Recall from the earlier description that virtual memory is not actual RAM consumed. For example, the GNOME Shell process gnome-shell is not actually consuming over 3.1 gigabytes of actual RAM. However, it’s built on a number of lower and higher level libraries. The system must map each of those to ensure they can be loaded when necessary.
+
+The RES column shows you how much actual (resident) memory is consumed by the app. In the case of GNOME Shell, that’s about 180788 KB. The example system has roughly 7704 MB of physical memory, which is why the memory usage shows up as 2.3%.
+
+However, of that number, at least 88212 KB is shared memory, shown in the SHR column. This memory might be, for example, library functions that other apps also use. This means the GNOME Shell is using about 92 MB on its own not shared with other processes. Notice that other apps in the example share an even higher percentage of their resident memory. In some apps, the shared portion is the vast majority of the memory usage.
+
+There is a wrinkle here, which is that sometimes processes communicate with each other via memory. That memory is also shared, but can’t necessarily be detected by a utility like top. So yes — even the above clarifications still have some uncertainty!
+
+### A note about swap
+
+Your system has another facility it uses to store information, which is swap. Typically this is an area of slower storage (like a hard disk). If the physical memory on the system fills up as needs increase, the OS looks for portions of memory that haven’t been needed in a while. It writes them out to the swap area, where they sit until needed later.
+
+Therefore, prolonged, high swap usage usually means a system is suffering from too little memory for its demands. Sometimes an errant application may be at fault. Or, if you see this often on your system, consider upgrading your machine’s memory, or restricting what you run.
+
+Photo courtesy of [Stig Nygaard][1], via [Flickr][2] (CC BY 2.0).
+
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/understand-fedora-memory-usage-top/
+
+作者:[Paul W. Frields][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/pfrields/
+[1]: https://www.flickr.com/photos/stignygaard/
+[2]: https://www.flickr.com/photos/stignygaard/3138001676/
diff --git a/sources/tech/20180920 8 Python packages that will simplify your life with Django.md b/sources/tech/20180920 8 Python packages that will simplify your life with Django.md
new file mode 100644
index 0000000000..58bb3716f8
--- /dev/null
+++ b/sources/tech/20180920 8 Python packages that will simplify your life with Django.md
@@ -0,0 +1,123 @@
+8 Python packages that will simplify your life with Django
+======
+
+This month's Python column looks at Django packages that will benefit your work, personal, or side projects.
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/water-stone-balance-eight-8.png?itok=1aht_V5V)
+
+Django developers, we're devoting this month's Python column to packages that will help you. These are our favorite [Django][1] libraries for saving time, cutting down on boilerplate code, and generally simplifying our lives. We've got six packages for Django apps and two for Django's REST Framework, and we're not kidding when we say these packages show up in almost every project we work on.
+
+But first, see our tips for making the [Django Admin more secure][2] and an article on 5 favorite [open source Django packages][3].
+
+### A kitchen sink of useful time-savers: django-extensions
+
+[Django-extensions][4] is a favorite Django package chock full of helpful tools like these management commands:
+
+ * **shell_plus** starts the Django shell with all your database models already loaded. No more importing from several different apps to test one complex relationship!
+ * **clean_pyc** removes all .pyc projects from everywhere inside your project directory.
+ * **create_template_tags** creates a template tag directory structure inside the app you specify.
+ * **describe_form** displays a form definition for a model, which you can then copy/paste into forms.py. (Note that this produces a regular Django form, not a ModelForm.)
+ * **notes** displays all comments with stuff like TODO, FIXME, etc. throughout your project.
+
+
+ * **TimeStampedModel** : This base class includes the fields **created** and **modified** and a **save()** method that automatically updates these fields appropriately.
+ * **ActivatorModel** : If your model will need fields like **status** , **activate_date** , and **deactivate_date** , use this base class. It comes with a manager that enables **.active()** and **.inactive()** querysets.
+ * **TitleDescriptionModel** and **TitleSlugDescriptionModel** : These include the **title** and **description** fields, and the latter also includes a **slug** field. The **slug** field will automatically populate based on the **title** field.
+
+
+
+Django-extensions also includes useful abstract base classes to use for common patterns in your own models. Inherit from these base classes when you create your models to get their:
+
+Django-extensions has more features you may find useful in your projects, so take a tour through its [docs][5]!
+
+### 12-factor-app settings: django-environ
+
+[Django-environ][6] allows you to use [12-factor app][7] methodology to manage your settings in your Django project. It collects other libraries, including [envparse][8] and [honcho][9]. Once you install django-environ, create an .env file at your project's root. Define in that module any settings variables that may change between environments or should remain secret (like API keys, debug status, and database URLs).
+
+Then, in your project's settings.py file, import **environ** and set up variables for **environ.PATH()** and **environ.Env()** according to the [example][10]. Access settings variables defined in your .env file with **env('VARIABLE_NAME')**.
+
+### Creating great management commands: django-click
+
+[Django-click][11], based on [Click][12] (which we have recommended [before][13]… [twice][14]), helps you write Django management commands. This library doesn't have extensive documentation, but it does have a directory of [test commands][15] in its repository that are pretty useful. A basic Hello World command would look like this:
+
+```
+# app_name.management.commands.hello.py
+import djclick as click
+
+@click.command()
+@click.argument('name')
+def command(name):
+ click.secho(f'Hello, {name}')
+```
+
+Then in the command line, run:
+
+```
+>> ./manage.py hello Lacey
+Hello, Lacey
+```
+
+### Handling finite state machines: django-fsm
+
+[Django-fsm][16] adds support for finite state machines to your Django models. If you run a news website and need articles to process through states like Writing, Editing, and Published, django-fsm can help you define those states and manage the rules and restrictions around moving from one state to another.
+
+Django-fsm provides an FSMField to use for the model attribute that defines the model instance's state. Then you can use django-fsm's **@transition** decorator to define methods that move the model instance from one state to another and handle any side effects from that transition.
+
+Although django-fsm is light on documentation, [Workflows (States) in Django][17] is a gist that serves as an excellent introduction to both finite state machines and django-fsm.
+
+### Contact forms: #django-contact-form
+
+A contact form is such a standard thing on a website. But don't write all that boilerplate code yourself—set yours up in minutes with [django-contact-form][18]. It comes with an optional spam-filtering contact form class (and a regular, non-filtering class) and a **ContactFormView** base class with methods you can override or customize, and it walks you through the templates you will need to create to make your form work.
+
+### Registering and authenticating users: django-allauth
+
+[Django-allauth][19] is an app that provides views, forms, and URLs for registering users, logging them in and out, resetting their passwords, and authenticating users with outside sites like GitHub or Twitter. It supports email-as-username authentication and is extensively documented. It can be a little confusing to set up the first time you use it; follow the [installation instructions][20] carefully and read closely when you [customize your settings][21] to make sure you're using all the settings you need to enable a specific feature.
+
+### Handling user authentication with Django REST Framework: django-rest-auth
+
+If your Django development includes writing APIs, you're probably using [Django REST Framework][22] (DRF). If you're using DRF, you should check out [django-rest-auth][23], a package that enables endpoints for user registration, login/logout, password reset, and social media authentication (by adding django-allauth, which works well with django-rest-auth).
+
+### Visualizing a Django REST Framework API: django-rest-swagger
+
+[Django REST Swagger][24] provides a feature-rich user interface for interacting with your Django REST Framework API. Once you've installed Django REST Swagger and added it to installed apps, add the Swagger view and URL pattern to your urls.py file; the rest is taken care of in the docstrings of your APIs.
+
+![](https://opensource.com/sites/default/files/uploads/swagger-ui.png)
+
+The UI for your API will include all your endpoints and available methods broken out by app. It will also list available operations for those endpoints and enable you to interact with the API (adding/deleting/fetching records, for example). It uses the docstrings in your API views to generate documentation for each endpoint, creating a set of API documentation for your project that's useful to you, your frontend developers, and your users.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/django-packages
+
+作者:[Jeff Triplett][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/laceynwilliams
+[1]: https://www.djangoproject.com/
+[2]: https://opensource.com/article/18/1/10-tips-making-django-admin-more-secure
+[3]: https://opensource.com/business/15/12/5-favorite-open-source-django-packages
+[4]: https://django-extensions.readthedocs.io/en/latest/
+[5]: https://django-extensions.readthedocs.io/
+[6]: https://django-environ.readthedocs.io/en/latest/
+[7]: https://www.12factor.net/
+[8]: https://github.com/rconradharris/envparse
+[9]: https://github.com/nickstenning/honcho
+[10]: https://django-environ.readthedocs.io/
+[11]: https://github.com/GaretJax/django-click
+[12]: http://click.pocoo.org/5/
+[13]: https://opensource.com/article/18/9/python-libraries-side-projects
+[14]: https://opensource.com/article/18/5/3-python-command-line-tools
+[15]: https://github.com/GaretJax/django-click/tree/master/djclick/test/testprj/testapp/management/commands
+[16]: https://github.com/viewflow/django-fsm
+[17]: https://gist.github.com/Nagyman/9502133
+[18]: https://django-contact-form.readthedocs.io/en/1.5/
+[19]: https://django-allauth.readthedocs.io/en/latest/
+[20]: https://django-allauth.readthedocs.io/en/latest/installation.html
+[21]: https://django-allauth.readthedocs.io/en/latest/configuration.html
+[22]: http://www.django-rest-framework.org/
+[23]: https://django-rest-auth.readthedocs.io/
+[24]: https://django-rest-swagger.readthedocs.io/en/latest/
diff --git a/sources/tech/20180920 Record Screen in Ubuntu Linux With Kazam -Beginner-s Guide.md b/sources/tech/20180920 Record Screen in Ubuntu Linux With Kazam -Beginner-s Guide.md
new file mode 100644
index 0000000000..a2f57f592a
--- /dev/null
+++ b/sources/tech/20180920 Record Screen in Ubuntu Linux With Kazam -Beginner-s Guide.md
@@ -0,0 +1,185 @@
+Record Screen in Ubuntu Linux With Kazam [Beginner’s Guide]
+======
+**This tutorial shows you how to install Kazam screen recorder and explains how to record screen in Ubuntu. The guide also lists useful shortcuts and handy tips for using Kazam.**
+
+![How to record your screen in Ubuntu Linux with Kazam][1]
+
+[Kazam][2] is one of the [best screen recorders for Linux][3]. To me, it’s the best screen recording tool. I have been using it for years. All the video tutorials on YouTube have been recorded with Kazam.
+
+Some of the main features of Kazam are:
+
+ * Record entire screen, part of screen, application window or all screens (for multi-monitor setup)
+ * Take screenshots
+ * Keyboard shortcut support for easily pausing and resuming while recording screen
+ * Record in various file formats such as MP4, AVI and more.
+ * Capture audio from speaker or microphone while recording the screen
+ * Capture mouse clicks and key presses
+ * Capture video from webcam
+ * Insert a webcam window on the side
+ * Broadcast to YouTube live video
+
+
+
+Like the screenshot tool [Shutter][4], Kazam is also not being actively developed for the last couple of years. And like Shutter, the present Kazam release works just fine.
+
+I am using Ubuntu in the tutorial. The installation instructions should work for other Ubuntu-based distributions such as Linux Mint, elementary OS etc. For all the other distributions, you can still read about using Kazam and its features.
+
+### Install Kazam in Ubuntu
+
+Kazam is available in the official repository in Ubuntu. However, the official repository consists Kazam version 1.4.5, the last stable version of Kazam.
+
+![Kazam Version 1.4.5][5]
+Kazam Version 1.4.5
+
+Kazam developer(s) also worked on a newer release, Kazam 1.5.3. The version was almost sable and ready to release, but for unknown reasons, the development stopped after this. There have been [no updates][6] since then.
+
+You can use either of Kazam 1.4.5 and 1.5.3 without hesitating. Kazam 1.5 provides additional features like recording mouse clicks and key presses, webcam support, live broadcast support, and a refreshed countdown timer.
+
+![Kazam Version 1.5.3][7]
+Kazam Version 1.5.3
+
+It’s up to you to decide which version you want to use. I would suggest go for version 1.5.3 because it has more features.
+
+You can install the older Kazam 1.4.5 from the Software Center. You can also use the command below:
+
+```
+sudo apt install kazam
+```
+
+If you want to install the newer Kazam 1.5.3, you can use this [unofficial PPA][8] that is available for Ubuntu 18.04 and 16.04:
+
+```
+sudo add-apt-repository ppa:sylvain-pineau/kazam
+sudo apt-get update
+sudo apt install kazam
+```
+
+You also need to install a few libraries in order to record the mouse clicks and keyboard presses.
+
+```
+sudo apt install python3-cairo python3-xlib
+```
+
+### Recording your screen with Kazam
+
+Once you have installed Kazam, search for it in the application menu and start it. You should see a screen like this with some options on it. You can check the options as per your need and click on capture to start recording screen with Kazam.
+
+![Screen recording with Kazam][9]
+Screen recording with Kazam
+
+It will show you a countdown before recording the screen. The default wait time is 5 seconds and you can change it from Kazam interface (see the previous image). It gives you a breathing time so that you can prepare for your recording.
+
+![Countdown before screen recording][10]
+Countdown before screen recording
+
+Once the recording starts,the main Kazam interface disappears and an indicator appears in the panel. If you want to pause the recording or finish the recording, you can do it from this indicator.
+
+![Pause or finish screen recording][11]
+Pause or finish screen recording
+
+If you choose to finish the recording, it will give you the option to “Save for later”. If you have a [video editor installed in Linux][12], you can also start editing the recording from this point.
+
+![Save screen recording in Kazam][13]
+Save recording
+
+By default it prompts you to install the recording in Videos folder but you can change the location and save it elsewhere as well.
+
+That’s the basic you need to know about screen recording in Linux with Kazam.
+
+Now let me give you a few tips on how to utilize more features in Kazam.
+
+### Getting more out of Kazam screen recorder
+
+Kazam is a featureful screen recorder for Linux. You can access its advanced or additional features from the preferences.
+
+![Accessing Kazam preferences][14]
+Accessing Kazam preferences
+
+#### Autosave screen recording in a specified location
+
+You can choose to automatically save the screen recordings in Kazam. The default location is Videos but you can change it to any other location.
+
+![Autosave screen recordings in a chosen location][15]
+Autosave in a chosen location
+
+#### Avoid screen recording in RAW mode
+
+You can save your screen recordings in file formats like WEBM, MP4, AVI etc. You are free to choose what you want. However, I would advise avoiding RAW (AVI) file format. If you use RAW file format, the recorded files will be in GBs even for a few minutes of recordings.
+
+It’s wise to verify that Kazam is not using the RAW file format for recording. If you ask my suggestion, prefer H264 with MP4 file format.
+
+![file format in Kazam][16]
+Don’t use RAW files
+
+#### Capture mouse clicks and key presses while screen recording
+
+If you want to highlight when a mouse was clicked, you can easily do that in the newer version of Kazam.
+
+![Record mouse clicks while screen recording with Kazam][17]
+Record mouse clicks
+
+All you have to do is to check the “Key presses and mouse clicks” option on the Kazam interface (the same screen where you press Capture).
+
+#### Use keyboard shortcuts for more efficient screen recordings
+
+Imagine you are recording screen in Linux and suddenly you realized that you have to pause the recording for some reasons. Now, you can pause the recording by going to the Kazam indicator and selecting the pause option. But this activity of selecting the pause option will also be recorded.
+
+You can edit out this part later but it unnecessarily adds to the already cumbersome editing task.
+
+A better option will be to use the [keyboard shortcuts in Ubuntu][18]. Screen recording becomes a lot better if you use the shortcuts.
+
+While Kazam is running, you can use the following hotkeys:
+
+ * Super+Ctrl+R: Start recording
+ * Super+Ctrl+P: Pause recording, press again for resuming the recording
+ * Super+Ctrl+F: Finish recording
+ * Super+Ctrl+Q: Quit recording
+
+
+
+Super key is the Windows key on your keyboard.
+
+The most important is Super+Ctrl+P for pausing and resuming the recording.
+
+You can further explore the Kazam preferences for webcam recording and YouTube live broadcasting options.
+
+### Do you like Kazam?
+
+I am repeating myself here. I love Kazam. I have used other screen recorders like [SimpleScreenRecorder][19] or [Green Recorder][20] but I feel a lot more comfortable with Kazam.
+
+I hope you like Kazam for screen recording in Ubuntu or any other Linux distribution. I have tried highlighting some of the additional features here to help you with a better screen recording.
+
+What features do you like about Kazam? Do you use some other screen recorder? Do they work better than Kazam? Please share your views in the comments section below.
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/kazam-screen-recorder/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/abhishek/
+[1]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/screen-recording-kazam-ubuntu-linux.png
+[2]: https://launchpad.net/kazam
+[3]: https://itsfoss.com/best-linux-screen-recorders/
+[4]: http://shutter-project.org/
+[5]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-1-4-5.png
+[6]: https://launchpad.net/~kazam-team/+archive/ubuntu/unstable-series
+[7]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-1-5-3.png
+[8]: https://launchpad.net/~sylvain-pineau/+archive/ubuntu/kazam
+[9]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-start-recording.png
+[10]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-countdown.jpg
+[11]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-finish-recording.png
+[12]: https://itsfoss.com/best-video-editing-software-linux/
+[13]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-save-recording.jpg
+[14]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-preferences.png
+[15]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/kazam-auto-save.jpg
+[16]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/select-file-type-kazam.jpg
+[17]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/record-mouse-clicks-kazam.jpeg
+[18]: https://itsfoss.com/ubuntu-shortcuts/
+[19]: https://itsfoss.com/record-screen-ubuntu-simplescreenrecorder/
+[20]: https://itsfoss.com/green-recorder-3/
diff --git a/translated/talk/20180518 Mastering CI-CD at OpenDev.md b/translated/talk/20180518 Mastering CI-CD at OpenDev.md
deleted file mode 100644
index 74e6d1c972..0000000000
--- a/translated/talk/20180518 Mastering CI-CD at OpenDev.md
+++ /dev/null
@@ -1,52 +0,0 @@
-在OpenDev上,掌握CI/CD(持续集成/持续发布)
-======
-
-![在OpenDev上,掌握CI/CD](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_opennature_3.png?itok=J1OSECM_)
-
-在2017年启动后,OpenDev会议现在是一个年度活动。在去年9月的首届活动上,会议的重点是边缘计算。今年的活动,将于5月22-23日举行,会议的重点是持续集成和持续发布 (CI/CD),并将与OpenStack峰会一起在温哥华举行。
-
-基于我在OpenStack项目的CI/CD系统的技术背景和近期进入容器下的CI/CD方面的经验,我被邀请加入OpenDev CI/CD的编程委员会。今天我经常通过很多开源技术,例如[Jenkins][3] [GitLab][2],[Spinnaker][4],和[Artifactory][5],来讨论CI/CD流水管线。
-
-这次活动对我来说是很激动人心的,因为我们将在这个活动中融合两个开源基础设施理念。首先,我们将讨论可以被任何组织使用的CI/CD工具。为此目的,在[keynotes][6],我们将听到关于开源CI/CD工具的使用讲座,一场来自Boris Renski的关于Spinnaker的和一场来自Jim Blair的关于[Zuul][7]的。同时,讲座会涉及关于开源技术的偏好的高级别话题,特别是那种跨社区的和本身就是开源项目的。从Fatih Degirmenci和Daniel Farrel那里,我们将听到关于在不同社区分享持续发布实践经历,接着Benjamin Mako Hill会为我带来一场关于为什么免费软件需要免费工具的分享。
-
-在分享CI/CD相对新颖特性后,接下来的活动是对话,研讨会和协作讨论的混合组合。当从所提交的讲座和研讨会选择,并提出协作讨论主题时,我们希望确保有一个多样灵活的日程表,这样任何参与者都能在CI/CD活动进程中发现有趣的东西。
-
-这些讲座会是标准的会议风格,选择以涵盖关键主题,如制作CI/CD管线,在实践DevOps时提升安全性,以及更具体的解决方案,如基于容器关于Kubernetes的[Aptomi][8]和在ETSI NFV环境下CI/CD。这些会话的大部分将会是作为给新接触CI/CD或这些特定技术的参与者关于这些话题和理念的简介。
-
-交互式的研讨会会持续相对比较长的时间,参与者将会在思想上得到特定的体验。这些研讨会包括"[Anomaly Detection in Continous Integration Jobs(在持续集成任务中的异常检测)][9]","[How to Install Zuul and Configure Your First Jobs(如何安装Zuul和配置第一个任务)][10]",和"[Spinnake 101: Releasing Software with Velocity and Confidence(Spinnake 101:快速可靠的软件发布)][11]."(注意这些研讨会空间是有限的,所以设立了一个RSVP系统。你们将会在会议的链接里找到一个RSVP的按钮。)
-
-可能最让我最兴奋的是协作讨论,这些协作讨论占据了一半以上的活动安排。协作讨论的主题由编程委员会选取。编程委员会是根据我们在社区里所看到选取对应的主题。这是“鱼缸”风格式的会议,通常是几个人聚在一个房间里围绕着CI/CD讨论某一个主题。
-
-这次会议风格的理念是来自于开发者峰会,最初是由Ubuntu社区提出,接着OpenStack社区在活动上采纳。这些协作讨论的主题包含不同的会议,这些会议是关于CI/CD基础,可以鼓励跨社区协作的提升举措,在组织里推行CI/CD文化,和为什么开源CI/CD工具如此重要。采用共享文档来做会议笔记,以确保尽可能的在会议的过程中分享知识。在讨论过程中,提出行动项目也是很常见的,因此社区成员可以推动和所涉及的主题相关的倡议。
-
-活动将以联合总结会议结束。联合总结会议将总结来自协同讨论的关键点和为即将在这个领域工作的参与者指出可选的职业范围。
-
-可以在[OpenStack Summit registration(OpenStack峰会注册)][13]上注册参加活动。或者可以在温哥华唯一指定售票的会议中心购买活动的入场券,价格是$199。更多关于票和全部的活动安排见官网[OpenDev website][1]。
-
-我希望你们能够加入我们,并在温哥华渡过令人激动的两天,并且在这两天的活动中学习,协作和在CI/CD取得进展。
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/5/opendev
-
-作者:[Elizabeth K.Joseph][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[jamelouis](https://github.com/jamelouis)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://opensource.com/users/pleia2
-[1]:http://2018.opendevconf.com/
-[2]:https://about.gitlab.com/
-[3]:https://jenkins.io/
-[4]:https://www.spinnaker.io/
-[5]:https://jfrog.com/artifactory/
-[6]:http://2018.opendevconf.com/schedule/
-[7]:https://zuul-ci.org/
-[8]:http://aptomi.io/
-[9]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21692/anomaly-detection-in-continuous-integration-jobs
-[10]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21693/how-to-install-zuul-and-configure-your-first-jobs
-[11]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21699/spinnaker-101-releasing-software-with-velocity-and-confidence
-[12]:https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/21831/opendev-cicd-joint-collab-conclusion
-[13]:https://www.eventbrite.com/e/openstack-summit-may-2018-vancouver-tickets-40845826968?aff=VancouverSummit2018
diff --git a/translated/talk/20180907 What do open source and cooking have in common.md b/translated/talk/20180907 What do open source and cooking have in common.md
new file mode 100644
index 0000000000..2f5f150f1a
--- /dev/null
+++ b/translated/talk/20180907 What do open source and cooking have in common.md
@@ -0,0 +1,79 @@
+开源与烹饪有什么相似之处?
+======
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/waffles-recipe-eggs-cooking-mix.png?itok=Fp06VOBx)
+
+有什么好的方法,既可以宣传开源的精神又不用写代码呢?这里有个点子:“开源食堂”。在过去的8年间,这就是我们在慕尼黑做的事情。
+
+开源食堂已经是我们常规的开源宣传活动了,因为我们发现开源与烹饪有很多共同点。
+
+### 协作烹饪
+
+[慕尼黑开源聚会][1]自2009年7月在[Café Netzwerk][2]创办以来,已经组织了若干次活动,活动一般在星期五的晚上组织。该聚会为开源项目工作者或者开源爱好者们提供了相互认识的方式。我们的信条是:“每四周的星期五属于免费软件(Every fourth Friday for free software)”。当然在一些周末,我们还会举办一些研讨会。那之后,我们很快加入了很多其他的活动,包括白香肠早餐、桑拿与烹饪活动。
+
+事实上,第一次开源烹饪聚会举办的有些混乱,但是我们经过这8年来以及15次的组织,已经可以为25-30个与会者提供丰盛的美食了。
+
+回头看看这些夜晚,我们愈发发现共同烹饪与开源社区协作之间,有很多相似之处。
+
+### 烹饪步骤中的开源精神
+
+这里是几个烹饪与开源精神相同的地方:
+
+ * 我们乐于合作且朝着一个共同的目标前进
+ * 我们成立社区组织
+ * 由于我们有相同的兴趣与爱好,我们可以更多的了解我们自身与他人,并且可以一同协作
+ * 我们也会犯错,但我们会从错误中学习,并为了共同的李医生去分享关于错误的经验,从而让彼此避免再犯相同的错误
+ * 每个人都会贡献自己擅长的事情,因为每个人都有自己的一技之长
+ * 我们会动员其他人去做出贡献并加入到我们之中
+ * 虽说协作是关键,但难免会有点混乱
+ * 每个人都会从中收益
+
+
+
+### 烹饪中的开源气息
+
+同很多成功的开源聚会一样,开源烹饪也需要一些协作和组织结构。在每次活动之前,我们会组织所有的成员对菜单进行投票,而不单单是直接给每个人分一角披萨,我们希望真正的作出一道美味,迄今为止我们做过日本、墨西哥、匈牙利、印度等地区风味的美食,限于篇幅就不一一列举了。
+
+就像在生活中,共同烹饪一样需要各个成员之间相互的尊重和理解,所以我们也会试着为素食主义者、食物过敏者、或者对某些事物有偏好的人提供针对性的事物。正式开始烹饪之前,在家预先进行些小规模的测试会非常有帮助(乐趣!)
+
+可扩展性也很重要,在杂货店采购必要的食材很容易就消耗掉3个小时。所以我们使用一些表格工具(自然是 LibreOffice Calc)来做一些所需要的食材以及相应的成本。
+
+我们会同志愿者一起,为每次晚餐准备一个“包管理器”,从而及时的制作出菜单并在问题产生的时候寻找一些独到的解决方法。
+
+虽然不是所有人都是大厨,但是只要给与一些帮助,并比较合理的分配任务和责任,就很容易让每个人都参与其中。某种程度上来说,处理 18kg 的西红柿和 100 个鸡蛋都不会让你觉得是件难事,相信我!唯一的限制是一个烤炉只有四个灶,所以可能是时候对基础设施加大投入了。
+
+发布有时间要求,当然要求也不那么严格,我们通常会在21:30和01:30之间的相当“灵活”时间内供应主菜,即便如此,这个时间也是硬性的发布规定。
+
+最后,想很多开源项目一样,烹饪文档同样有提升的空间。类似洗碟子这样的扫尾工作同样也有可优化的地方。
+
+### 未来的一些新功能点
+
+我们预计的一些想法包括:
+
+ * 在其他的国家开展活动
+ * 购买和烹饪一个价值 700 欧元的大南瓜,并且
+ * 找家可以为我们采购提供折扣的商店
+
+
+最后一点,也是开源软件的动机:永远记住,还有一些人们生活在阴影中,他们为没有同等的权限去访问资源而苦恼着。我们如何通过开源的精神去帮助他们呢?
+
+一想到这点,我便期待这下一次的开源烹饪聚会。如果读了上面的东西让你觉得不够完美,并且想自己运作这样的活动,我们非常乐意你能够借鉴我们的想法,甚至抄袭一个。我们也乐意你能够参与到我们其中,甚至做一些演讲和问答。
+
+Article originally appeared on [blog.effenberger.org][3]. Reprinted with permission.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/open-source-cooking
+
+作者:[Florian Effenberger][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/sd886393)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/floeff
+[1]: https://www.opensourcetreffen.de/
+[2]: http://www.cafe-netzwerk.de/
+[3]: https://blog.effenberger.org/2018/05/28/what-do-open-source-and-cooking-have-in-common/
+[4]: https://en.wikipedia.org/wiki/Free_and_open-source_software
diff --git a/translated/tech/20171124 How do groups work on Linux.md b/translated/tech/20171124 How do groups work on Linux.md
new file mode 100644
index 0000000000..ace322775a
--- /dev/null
+++ b/translated/tech/20171124 How do groups work on Linux.md
@@ -0,0 +1,152 @@
+"组"在 Linux 上到底是怎么工作的?
+============================================================
+
+
+你好!就在上周,我还自认为对 Linux 上的用户和组的工作机制了如指掌。我认为它们的关系是这样的:
+
+1. 每个进程都属于一个用户( 比如用户`julia`)
+
+2. 当这个进程试图读取一个被某个组所拥有的文件时, Linux 会 a)先检查用户`julia` 是否有权限访问文件。(LCTT译注:检查文件的所有者是否就是`julia`) b)检查`julia` 属于哪些组,并进一步检查在这些组里是否有某个组拥有这个文件或者有权限访问这个文件。
+
+3. 如果上述a,b任一为真( 或者`其他`位设为有权限访问),那么这个进程就有权限访问这个文件。
+
+比如说,如果一个进程被用户`julia`拥有并且`julia` 在`awesome`组,那么这个进程就能访问下面这个文件。
+
+```
+r--r--r-- 1 root awesome 6872 Sep 24 11:09 file.txt
+
+```
+
+然而上述的机制我并没有考虑得非常清楚,如果你硬要我阐述清楚,我会说进程可能会在**运行时**去检查`/etc/group` 文件里是否有某些组拥有当前的用户。
+
+### 然而这并不是Linux 里“组”的工作机制
+
+我在上个星期的工作中发现了一件有趣的事,事实证明我前面的理解错了,我对组的工作机制的描述并不准确。特别是Linux**并不会**在进程每次试图访问一个文件时就去检查这个进程的用户属于哪些组。
+
+我在读了[The Linux Programming
+Interface][1]这本书的第九章后才恍然大悟(这本书真是太棒了。)这才是组真正的工作方式!我意识到之前我并没有真正理解用户和组是怎么工作的,我信心满满的尝试了下面的内容并且验证到底发生了什么,事实证明现在我的理解才是对的。
+
+### 用户和组权限检查是怎么完成的
+
+现在这些关键的知识在我看来非常简单! 这本书的第九章上来就告诉我如下事实:用户和组ID是**进程的属性**,它们是:
+
+* 真实用户ID和组ID;
+
+* 有效用户ID和组ID;
+
+* 被保存的set-user-ID和被保存的set-group-ID;
+
+* 文件系统用户ID和组ID(特定于 Linux);
+
+* 增补的组ID;
+
+这说明Linux**实际上**检查一个进程能否访问一个文件所做的组检查是这样的:
+
+* 检查一个进程的组ID和补充组ID(这些ID就在进程的属性里,**并不是**实时在`/etc/group`里查找这些ID)
+
+* 检查要访问的文件的访问属性里的组设置
+
+
+* 确定进程对文件是否有权限访问(LCTT 译注:即文件的组是否是以上的组之一)
+
+通常当访问控制的时候使用的是**有效**用户/组ID,而不是**真实**用户/组ID。技术上来说当访问一个文件时使用的是**文件系统**ID,他们实际上和有效用户/组ID一样。(LCTT译注:这句话针对 Linux 而言。)
+
+### 将一个用户加入一个组并不会将一个已存在的进程(的用户)加入那个组
+
+下面是一个有趣的例子:如果我创建了一个新的组:`panda` 组并且将我自己(bork)加入到这个组,然后运行`groups` 来检查我是否在这个组里:结果是我(bork)竟然不在这个组?!
+
+
+```
+bork@kiwi~> sudo addgroup panda
+Adding group `panda' (GID 1001) ...
+Done.
+bork@kiwi~> sudo adduser bork panda
+Adding user `bork' to group `panda' ...
+Adding user bork to group panda
+Done.
+bork@kiwi~> groups
+bork adm cdrom sudo dip plugdev lpadmin sambashare docker lxd
+
+```
+
+`panda`并不在上面的组里!为了再次确定我们的发现,让我们建一个文件,这个文件被`panda`组拥有,看看我能否访问它。
+
+
+```
+$ touch panda-file.txt
+$ sudo chown root:panda panda-file.txt
+$ sudo chmod 660 panda-file.txt
+$ cat panda-file.txt
+cat: panda-file.txt: Permission denied
+
+```
+
+好吧,确定了,我(bork)无法访问`panda-file.txt`。这一点都不让人吃惊,我的命令解释器并没有`panda` 组作为补充组ID,运行`adduser bork panda`并不会改变这一点。
+
+
+### 那进程一开始是怎么得到用户的组的呢?
+
+
+这真是个非常令人困惑的问题,对吗?如果进程会将组的信息预置到进程的属性里面,进程在初始化的时候怎么取到组的呢?很明显你无法给你自己指定更多的组(否则就会和Linux访问控制的初衷相违背了。。。)
+
+有一点还是很清楚的:一个新的进程是怎么从我的命令行解释器(/bash/fish)里被**执行**而得到它的组的。(新的)进程将拥有我的用户 ID(bork),并且进程属性里还有很多组ID。从我的命令解释器里执行的所有进程是从这个命令解释器里`复刻`而来的,所以这个新进程得到了和命令解释器同样的组。
+
+因此一定存在一个“第一个”进程来把你的组设置到进程属性里,而所有由此进程而衍生的进程将都设置这些组。而那个“第一个”进程就是你的**登录命令**,在我的笔记本电脑上,它是由‘登录’程序(`/bin/login`)实例化而来。` 登录程序` 以root身份运行,然后调用了一个 C 的库函数-`initgroups`来设置你的进程的组(具体来说是通过读取`/etc/group` 文件),因为登录程序是以root运行的,所以它能设置你的进程的组。
+
+
+### 让我们再登录一次
+
+好了!既然我们的`login shell`正在运行,而我又想刷新我的进程的组设置,从我们前面所学到的进程是怎么初始化组ID的,我应该可以通过再次运行`login` 程序来刷新我的进程组并启动一个新的`login shell`!
+
+让我们试试下边的方法:
+
+```
+$ sudo login bork
+$ groups
+bork adm cdrom sudo dip plugdev lpadmin sambashare docker lxd panda
+$ cat panda-file.txt # it works! I can access the file owned by `panda` now!
+
+```
+
+当然,成功了!现在由登录程序衍生的程序的用户是组`panda`的一部分了!太棒了!这并不会影响我其他的已经在运行的登录程序(及其子进程),如果我真的希望“所有的”进程都能对`panda`
+组有访问权限。我必须完全的重启我的登陆会话,这意味着我必须退出我的窗口管理器然后再重新`login`。(LCTT译注:即更新进程树的树根进程,这里是窗口管理器进程。)
+
+### newgrp命令
+
+
+在 Twitter 上有人告诉我如果只是想启动一个刷新了组信息的命令解释器的话,你可以使用`newgrp`(LCTT译注:不启动新的命令解释器),如下:
+
+```
+sudo addgroup panda
+sudo adduser bork panda
+newgrp panda # starts a new shell, and you don't have to be root to run it!
+
+```
+
+
+你也可以用`sg panda bash` 来完成同样的效果,这个命令能启动一个`bash` 登录程序,而这个程序就有`panda` 组。
+
+### seduid 将设置有效用户 ID
+
+其实我一直对一个进程如何以`setuid root`的权限来运行意味着什么有点似是而非。现在我知道了,事实上所发生的是:setuid 设置了`有效用户ID`! 如果我('julia')运行了一个`setuid root` 的进程( 比如`passwd`),那么进程的**真实**用户 ID 将为`julia`,而**有效**用户 ID 将被设置为`root`。
+
+`passwd` 需要以root权限来运行,但是它能看到进程的真实用户ID是`julia` ,是`julia`启动了这个进程,`passwd`会阻止这个进程修改除了`julia`之外的用户密码。
+
+### 就是这些了!
+
+在 Linux Programming Interface 这本书里有很多Linux上一些功能的罕见使用方法以及Linux上所有的事物到底是怎么运行的详细解释,这里我就不一一展开了。那本书棒极了,我上面所说的都在该书的第九章,这章在1300页的书里只占了17页。
+
+我最爱这本书的一点是我只用读17页关于用户和组是怎么工作的内容,而这区区17页就能做到内容完备,详实有用。我不用读完所有的1300页书就能得到有用的东西,太棒了!
+
+--------------------------------------------------------------------------------
+
+via: https://jvns.ca/blog/2017/11/20/groups/
+
+作者:[Julia Evans ][a]
+译者:[DavidChen](https://github.com/DavidChenLiang)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://jvns.ca/
+[1]:http://man7.org/tlpi/
diff --git a/translated/tech/20180522 Free Resources for Securing Your Open Source Code.md b/translated/tech/20180522 Free Resources for Securing Your Open Source Code.md
new file mode 100644
index 0000000000..4e63a64e43
--- /dev/null
+++ b/translated/tech/20180522 Free Resources for Securing Your Open Source Code.md
@@ -0,0 +1,83 @@
+一些提高你开源源码安全性的工具
+======
+
+![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/open-security.jpg?itok=R3M5LDrb)
+
+虽然目前开源依然发展势头较好,并被广大的厂商所采用,然而最近由 Black Duck 和 Synopsys 发布的[2018开源安全与风险评估报告][1]指出了一些存在的风险并重点阐述了对于健全安全措施的需求。这份报告的分析资料素材来自经过脱敏后的 1100 个商业代码库,这些代码所涉及:自动化、大数据、企业级软件、金融服务业、健康医疗、物联网、制造业等多个领域。
+
+这份报告强调开源软件正在被大量的使用,扫描结果中有 96% 的应用都使用了开源组件。然而,报告还指出许多其中存在很多漏洞。具体在 [这里][2]:
+
+ * 令人担心的是扫描的所有结果中,有 78% 的代码库存在至少一个开源的漏洞,平均每个代码库有 64 个漏洞。
+
+ * 在经过代码审计过后代码库中,发现超过 54% 的漏洞经验证是高危漏洞。
+
+ * 17% 的代码库包括一种已经早已公开的漏洞,包括:Heartbleed、Logjam、Freak、Drown、Poddle。
+
+
+
+
+Tim Mackey,Synopsys 旗下 Black Duck 的技术负责人称,"这份报告清楚的阐述了:随着开源软件正在被企业广泛的使用,企业与组织也应当使用一些工具来检测可能出现在这些开源软件中的漏洞,并且管理其所使用的开源软件的方式是否符合相应的许可证规则"
+
+确实,随着越来越具有影响力的安全威胁出现,历史上从未有过我们目前对安全工具和实践的需求。大多数的组织已经意识到网络与系统管理员需要具有相应的较强的安全技能和安全证书。[在这篇文章中,][3] 我们给出一些具有较大影响力的工具、认证和实践。
+
+Linux 基金会已经在安全方面提供了许多关于安全的信息与教育资源。比如,Linux 社区提供许多免费的用来针对一些平台的工具,其中[Linux 服务器安全检查表][4] 其中提到了很多有用的基础信息。线上的一些发表刊物也可以提升用户针对某些平台对于漏洞的保护,如:[Fedora 安全指南][5],[Debian 安全手册][6]。
+
+目前被广泛使用的私有云平台 OpenStack 也加强了关于基于云的智能安全需求。根据 Linux 基金会发布的 [公有云指南][7]:“据 Gartner 的调研结果,尽管公有云的服务商在安全和审查方面做的都还不错,安全问题是企业考虑向公有云转移的最重要的考量之一”
+
+无论是对于组织还是个人,千里之堤毁于蚁穴,这些“蚁穴”无论是来自路由器、防火墙、VPNs或虚拟机都可能导致灾难性的后果。以下是一些免费的工具可能对于检测这些漏洞提供帮助:
+
+ * [Wireshark][8], 流量包分析工具
+
+ * [KeePass Password Safe][9], 免费开源的密码管理器
+
+ * [Malwarebytes][10], 免费的反病毒和勒索软件工具
+
+ * [NMAP][11], 安全扫描器
+
+ * [NIKTO][12], 开源 web 扫描器
+
+ * [Ansible][13], 自动化的配置运维工具,可以辅助做安全基线
+
+ * [Metasploit][14], 渗透测试工具,可辅助理解攻击向量
+
+
+
+这里有一些对上面工具讲解的视频。比如[Metasploit 教学][15]、[Wireshark 教学][16]。还有一些传授安全技能的免费电子书,比如:由 Ibrahim Haddad 博士和 Linux 基金会共同出版的[并购过程中的开源审计][17],里面阐述了多条在技术平台合并过程中,因没有较好的进行开源审计,从而引发的安全问题。当然,书中也记录了如何在这一过程中进行代码合规检查、准备以及文档编写。
+
+同时,我们 [之前提到的一个免费的电子书][18], 由来自[The New Stack][19] 编写的“Docker与容器中的网络、安全和存储”,里面也提到了关于加强容器网络安全的最新技术,以及Docker本身可提供的关于,提升其网络的安全与效率的最佳实践。这本电子书还记录了关于如何构建安全容器集群的最佳实践。
+
+所有这些工具和资源,可以在很大的程度上预防安全问题,正如人们所说的未雨绸缪,考虑到一直存在的安全问题,现在就应该开始学习这些安全合规资料与工具。
+想要了解更多的安全、合规以及开源项目问题,点击[这里][20]
+
+--------------------------------------------------------------------------------
+
+via: https://www.linux.com/blog/2018/5/free-resources-securing-your-open-source-code
+
+作者:[Sam Dean][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者ID](https://github.com/sd886393)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://www.linux.com/users/sam-dean
+[1]:https://www.blackducksoftware.com/open-source-security-risk-analysis-2018
+[2]:https://www.prnewswire.com/news-releases/synopsys-report-finds-majority-of-software-plagued-by-known-vulnerabilities-and-license-conflicts-as-open-source-adoption-soars-300648367.html
+[3]:https://www.linux.com/blog/sysadmin-ebook/2017/8/future-proof-your-sysadmin-career-locking-down-security
+[4]:http://go.linuxfoundation.org/ebook_workstation_security
+[5]:https://docs.fedoraproject.org/en-US/Fedora/19/html/Security_Guide/index.html
+[6]:https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html
+[7]:https://www.linux.com/publications/2016-guide-open-cloud
+[8]:https://www.wireshark.org/
+[9]:http://keepass.info/
+[10]:https://www.malwarebytes.com/
+[11]:http://searchsecurity.techtarget.co.uk/tip/Nmap-tutorial-Nmap-scan-examples-for-vulnerability-discovery
+[12]:https://cirt.net/Nikto2
+[13]:https://www.ansible.com/
+[14]:https://www.metasploit.com/
+[15]:http://www.computerweekly.com/tutorial/The-Metasploit-Framework-Tutorial-PDF-compendium-Your-ready-reckoner
+[16]:https://www.youtube.com/watch?v=TkCSr30UojM
+[17]:https://www.linuxfoundation.org/resources/open-source-audits-merger-acquisition-transactions/
+[18]:https://www.linux.com/news/networking-security-storage-docker-containers-free-ebook-covers-essentials
+[19]:http://thenewstack.io/ebookseries/
+[20]:https://www.linuxfoundation.org/projects/security-compliance/
diff --git a/translated/tech/20180804 Installing Andriod on VirtualBox.md b/translated/tech/20180804 Installing Andriod on VirtualBox.md
deleted file mode 100644
index 7c70925a86..0000000000
--- a/translated/tech/20180804 Installing Andriod on VirtualBox.md
+++ /dev/null
@@ -1,160 +0,0 @@
-在VirtualBox中安装Andriod系统
-======
-
-如果你正在开发安卓 app 应用,也许会遇到小麻烦。诚然,ios 移动开发有 macOS 系统平台为其提供友好便利性,安卓开发仅有支持少部分安卓系统(其中还包括可穿戴设备系统)的 Andriod Studio 工具。
-
-毋庸置疑,所有的二进制工具、SDK 工具、开发框架工具以及调试器都会产生大量日志和其他各种文件来使得你的文件系统很混乱。一个有效的解决方法就是在 VirtualBox 中安装 Andriod 系统,这样还解决了 Andriod 开发中最为棘手问题之一——设备模拟器。你可以在该虚拟机里测试应用程序,也可以使用 Andriod 的内部功能。因此,让我们迫不及待的开始吧!
-
-### 准备工作
-
-首先,你需要在你的系统上安装 VirtualBox,可从[这里][1]下载 windows 版本、macOS 版本或者各种 Linux 版本的 VitualBox。然后,你需要一个能在 x86 平台运行的 Andriod 镜像,因为 VirtualBox 为虚拟机提供运行 x86 或者 x86_64(包括 AMD64)平台的功能。
-
-虽然大部分 Andriod 设备都在 ARM 上运行,但我们依然可以在 x86 平台上获得 [Andriod 项目帮助][2]。这些优秀的开发者已经将 Andriod 移植到 x86 平台上运行(包括实体机和虚拟机),我们可以下载最新版本的 Andriod 7.1。你也可以用之前更为稳定的版本,本文写作时最新稳定版是 Andriod 6.0。
-
-### 创建 VM 虚拟机
-
-打开 VirtualBox,单击左上角的 ” 新建 ” 按钮,在弹出的窗口中选择 “ 类型:Linux ” ,然后根据下载的ISO镜像来确定版本,x86 对应 32-bit,x86_64 对应 64-bit,此处选择 Linux 2.6 / 3.x / 4.x (64-bit)。
-
-RAM 大小设置 2 GB 到你系统能提供的最大内存之间。如果你想模拟真实的使用环境你可以设置 6 GB RAM和 32 GB ROM。
-
-![][3]
-
-![][4]
-
-创建完成后,你还需要做一些设置,添加核心处理器,提高开机显示内存。在 VM 上打开设置选项,“ 设置 -> 系统 -> 处理器 ”,如果硬件条件允许,可以多分配一些处理器。
-
-![][5]
-
-在 “ 设置 -> 显示 -> 显存大小 ” 中,你可以分配一大块内存并开启 3D 加速功能。
-
-![][6]
-
-现在我们可以启动 VM 虚拟机了。
-
-### 安装 Andriod
-
-首次启动 VM 虚拟机,VirtualBox 会提示你需要提供启动媒介,选择之前下载好的Andriod 镜像。
-
-![][7]
-
-下一步,如果想长时间使用 Andriod,选择 Installation 选项,你也可以选择 Live 模式体验 Andriod 环境。
-
-![][8]
-
-##### 分区
-
-分区是通过文本界面操作,并没有友好的 GUI 界面,所以每个操作都需要小心对待。例如,在首页中还没有创建分区并且只检测到很少的虚拟硬盘时显示如下。
-
-![][9]
-
-红色字母 C 和 D 提示 C 开头选项可以创建或者修改分区,D 开头选项可以检测设备。你可以选择 D 开头选项,然后它就会检测硬盘,也可不进行这步操作,因为在启动的时候它会自动检测。
-
-我们选择 C 开头选项,在虚拟盘中创建分区。官方不推荐使用 GPT 格式,所以我们选择 No。
-
-![][10]
-
-现在你被引导到 fdisk 工具页面。
-
-![][11]
-
-为了简洁,我们就只创建一个较大的分区,使用方向键来选择 “ New ” ,然后选择“ Primary ”,确认。
-
-![][12]
-
-分区大小系统已经为你计算好了,确认。
-
-![][13]
-
-这个分区就是 Andriod 系统所在的分区,所以需要它是可启动的。选择 “ Bootable ”,然后 enter(上方表格中 Flags 标志下面会出现 boot 标志),进一步,选择 “ Write ” 选项,保存刚才的操作记录并写入分区表。
-
-![][14]
-
-现在你可以选择退出分区工具,然后继续安装过程。
-
-![][15]
-
-##### 文件系统格式化
-
-在分区页面上会出现一个刚刚我们创建的分区,选择它并进入。
-
-![][16]
-
-选择 Ext4 文件系统,在下一页中选择 Yes 然后格式化开始。会提示是否安装 GRUB 引导工具以及是否允许在根目录 / 进行读写,都选择 Yes 。现在,安装进程开始。
-
-安装完成后,当系统提示可以 reboot 的时候你可以 reboot 系统。在重启之前,你可以先关机,然后在 VitualBox 的 ” 设置 -> 存储 ” 中检查 Andriod iso 镜像是否还依附在虚拟机上,如果在,将它移除。
-
-移除安装镜像并保存,再去启动 VM 虚拟机。
-
-![][17]
-
-##### 运行 Andriod
-
-在 GRUB 引导界面,有 debug 模式和 normal 模式的选项。我们选择默认选项,如下图所示。
-
-![][18]
-
-如果一切正常,你将会看到如下界面:
-
-![][19]
-
-如今的 Andriod 系统使用触摸交互而不是鼠标。不过Andriod-x86 平台提供了鼠标操作支持,但开始时可能需要方向键来辅助操作。
-
-![][20]
-
-选择 “ Set up as new ” 选项,回车确认。
-
-![][21]
-
-在提示用谷歌账户登陆之前,系统检查更新并检测设备信息。你可以跳过这一步,直接去设置日期和时间、用户名等。
-
-还有一些其他的选项,和让你选择创建一个新的 Andriod 设备类似。选择 “ I Agree ” 选项同意有关更新、服务等的 policy。
-
-![][22]
-
-在这之后,因为它是个虚拟机,所以可能需要添加额外的 email 账户来设置 “ On-body detection ",大部分的选项对我们来说都没有多大作用,因此可以选择 ” All Set “。
-
-接下来,它会提示你选择家庭 App。这个根据个人需求选择。
-
-![][23]
-
-如果你需要在 VM 做一些交互测试,有个可触摸屏幕会提供很大的方便,因为那样才更接近真实使用环境。
-
-希望这篇教程会给你带来帮助。如果还有类似的教程写作需求,欢迎联系我们。
-
---------------------------------------------------------------------------------
-
-via: https://linuxhint.com/install_android_virtualbox/
-
-作者:[Ranvir Singh][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[jrglinux](https://github.com/jrglinux)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://linuxhint.com/author/sranvir155/
-[1]:https://www.virtualbox.org/wiki/Downloads
-[2]:http://www.android-x86.org/
-[3]:https://linuxhint.com/wp-content/uploads/2018/08/a.png
-[4]:https://linuxhint.com/wp-content/uploads/2018/08/a1.png
-[5]:https://linuxhint.com/wp-content/uploads/2018/08/a2.png
-[6]:https://linuxhint.com/wp-content/uploads/2018/08/a3.png
-[7]:https://linuxhint.com/wp-content/uploads/2018/08/a4.png
-[8]:https://linuxhint.com/wp-content/uploads/2018/08/a5.png
-[9]:https://linuxhint.com/wp-content/uploads/2018/08/a6.png
-[10]:https://linuxhint.com/wp-content/uploads/2018/08/a7.png
-[11]:https://linuxhint.com/wp-content/uploads/2018/08/a8.png
-[12]:https://linuxhint.com/wp-content/uploads/2018/08/a9.png
-[13]:https://linuxhint.com/wp-content/uploads/2018/08/a10.png
-[14]:https://linuxhint.com/wp-content/uploads/2018/08/a11.png
-[15]:https://linuxhint.com/wp-content/uploads/2018/08/a12.png
-[16]:https://linuxhint.com/wp-content/uploads/2018/08/a13.png
-[17]:https://linuxhint.com/wp-content/uploads/2018/08/a14.png
-[18]:https://linuxhint.com/wp-content/uploads/2018/08/a16.png
-[19]:https://linuxhint.com/wp-content/uploads/2018/08/a17.png
-[20]:https://linuxhint.com/wp-content/uploads/2018/08/a18.png
-[21]:https://linuxhint.com/wp-content/uploads/2018/08/a19.png
-[22]:https://linuxhint.com/wp-content/uploads/2018/08/a20.png
-[23]:https://linuxhint.com/wp-content/uploads/2018/08/a21.png
-
-
diff --git a/translated/tech/20180831 6 open source tools for making your own VPN.md b/translated/tech/20180831 6 open source tools for making your own VPN.md
deleted file mode 100644
index 0ff7ad847e..0000000000
--- a/translated/tech/20180831 6 open source tools for making your own VPN.md
+++ /dev/null
@@ -1,137 +0,0 @@
-heguangzhi Translating
-
-6个开源工具制作自己的VPN
-======
-
-
-
-
-![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/vpn_scrabble_networking.jpg?itok=pdsUHw5N)
-
-如果您想尝试建立您自己的 VPN,但是不确定从哪里开始,那么您来对地方了。我将挑选6个最好的免费和开源工具在您自己的服务器上搭建和使用 VPN。这些 VPN 软件不管您是想为您的企业建立站点到站点的,还是仅创建远程代理访问以解除访问限制,并隐藏来自ISP的互联网流量都可以得到解决。
-
-根据您的需求和条件,并参考您自己的技术特长,环境以及您想要通过 VPN 实现的目标。需要考虑以下因素:
-
- * VPN 协议
- * 客户端的数量和设备类型
- * 服务端的兼容性
- * 技术专业的能力
-
-### Algo
-
-
-[Algo][1] 是从下往上的设计的,为需要互联网安全代理的企业创建 VPN 专用网。它“只包括您需要的最小化的软件”,这意味着您为了简单而牺牲了可扩展性。Algo 是基于 StrongSwan 的,但是删除了所有您不需要的东西,这有另外一个好处,那就是删除了新手可能不会注意到的安全漏洞。
-
-
-作为额外的奖励,它甚至屏蔽了广告!
-
-Algo supports only the IKEv2 protocol and Wireguard. Because IKEv2 support is built into most devices these days, it doesn’t require a client app like OpenVPN. Algo can be deployed using Ansible on Ubuntu (the preferred option), Windows, RedHat, CentOS, and FreeBSD. Setup is automated using Ansible, which configures the server based on your answers to a short set of questions. It’s also very easy to tear down and re-deploy on demand.
-
-
-Algo 只支持 IKEv2 协议和 Wireguard 。因为 IKEv2 支持现在已经内置在大多数设备中,所以它不需要像 OpenVPN 这样的客户端应用程序。Algo 可以使用 Ansible 在 Ubuntu (首选选项)、Windows、RedHat、CentOS 和 FreeBSD 上部署。自动化的安装 Ansible,它根据您对一组简短问题的回答来配置服务。终止和重新部署也非常容易。
-
-
-Algo 可能是在本篇文章中安装和部署的最简单和最快的VPN。它非常简洁,考虑周全。如果您不需要其他工具提供的任何更高级的功能,只需要一个安全的代理,这是一个很好的选择。请注意,Algo 明确表示,它不是为了解除地理封锁或逃避审查,主要是为了加密。
-
-### Streisand
-
-
-
-[Streisand][2] 可以使用一个命令安装在任何 Ubuntu 16.04 服务器上;这个过程大约需要10分钟。它支持 L2TP、OpenConnect、OpenSSH、OpenVPN、Shadowsocks、Stunnel、Tor bridge 和 WireGuard。根据您选择的协议,您可能需要安装客户端应用程序。
-
-
-在很多方面,Streisand 与 Algo 相似,但是它提供了更多的协议和定制。这需要更多的工作来管理和维护,但也更加灵活。注意 Streisand 不支持 IKEv2 。我认为 Streisand 在中国和土耳其这样的地方绕过审查制度更有效,因为它的多功能性,但是 Algo 更容易和更快地安装。
-
-
-使用 Ansible 可以自动化安装,所以不需要太多的专业技术知识。通过向用户发送自定义生成的连接指令,包括服务器 SSL 证书的嵌入副本,可以轻松添加更多用户。
-
-
-卸载 Streisand 是一个快速无痛的过程,您可以按需重新部署。
-
-### OpenVPN
-
-
-[OpenVPN][3] 要求客户端和服务器应用程序使用同名协议建立 VPN 连接。OpenVPN 可以根据您的需求进行调整和定制,但它也需要更多专业技术知识。支持远程访问和站点到站点配置;如果您计划使 VPN 作为互联网的代理,前者是您需要的。因为客户端应用程序需要在大多数设备上使用 OpenVPN ,最终用户必须保持更新。
-
-
-在服务器端,您可以选择部署在云中或 Linux 服务器上。兼容的发行版包括 CentOS 、Ubuntu 、Debian 和 openSUSE。Windows 、MacOS 、iOS 和 Android 都有客户端应用程序,其他设备也有非官方应用程序。企业可以选择设置一个 OpenVPN 接入服务器,但是对于想要社区版的个人来说,这可能太过分了。
-
-
-OpenVPN 相对容易配置静态密钥加密,但并不完全安全。相反,我建议使用 [easy-rsa][4] 来设置它,这是一个密钥管理包,可以用来设置公钥基础设施。这允许您一次连接多个设备,并以完美的前向保密和其他好处来保护它们。OpenVPN 使用 SSL/TLS 进行加密,您可以在配置中指定 DNS 服务器。
-
-
-OpenVPN 可以穿越防火墙和 NAT 防火墙,这意味着您可以使用它绕过网关和防火墙,否则它们可能会阻止连接。它同时支持 TCP 和 UDP 传输。
-
-### StrongSwan
-
-您可能会遇到一些不同的 VPN 工具,名称中有“Swan”。FreeS/WAN, 、OpenSwan、LibreSwan和[strongSwan][5] 都是同一个项目的分叉,后者是我个人最喜欢的。服务器端,strongSwan 运行在 Linux 2.6、3.x和4x内核、Android、FreeBSD、macOS、iOS 和 Windows上。
-
-
-StrongSwan 使用 IKEv2 协议和 IPSec 。与 OpenVPN 相比,IKEv2 连接速度更快,同时提供了很好的速度和安全性。如果您更喜欢不需要在客户端安装额外应用程序的协议,这将非常有用,因为现在生产的大多数新设备都支持 IKEv2,,包括 Windows、MacOS、iOS和Android。
-
-StrongSwan 并不特别容易使用,尽管文档不错,但它使用的词汇与大多数其他工具不同,这可能会让人比较困惑。它的模块化设计让它对企业来说很棒,但这也意味着它不是最精简。这当然不像 Algo 或Streisand 那么简单。
-
-
-访问控制可以基于使用X.509 属性证书的组成员身份,这是 strongSwan 独有的功能。它支持用于集成到其他环境(如Windows Active Directory )中的EAP身份验证方法。strongSwan可以穿越NAT 网络防火墙。
-
-### SoftEther
-
-
-[SoftEther][6] 是由日本筑波大学的一名研究生发起的一个项目。SoftEther VPN 服务器和 VPN网桥在 Windows、Linux、OSX、FreeBSD 和 Solaris 上运行,而客户端应用程序在Windows、Linux和 MacOS 上运行。VPN 网桥主要用于需要设置站点到站点VPN的企业,因此单个用户只需要服务器和客户端程序来设置远程访问。
-
-
-SoftEther 支持 OpenVPN、L2TP、SSTP 和 EtherIP 协议,由于“基于HTTPS的以太网”伪装,它自己的 SoftEther 协议声称能够免疫深度数据包检测。SoftEther 还做了一些调整,以减少延迟并增加吞吐量。此外,SoftEther 还包括一个克隆功能,允许您轻松地从 OpenVPN 过渡到SoftEther。
-
-SoftEther 可以穿透 NAT 防火墙并绕过防火墙。在只允许 ICMP 和 DNS 数据包的受限网络上,您可以通过 ICMP 利用SoftEther的VPN 或者通过 DNS 利用 VPN 选项来穿透防火墙。SoftEther 可与IPv4 和IPv6 一起工作。
-
-
-SoftEther 比 OpenVPN 和strongSwan更容易设置,但比 Streisand 和 Algo 更复杂。
-
-### WireGuard
-
-
-[WireGuard][7] 是这个名单上最新的工具;它太新了,甚至还没有完成。也就是说,它为部署VPN提供了一种快速简便的方法。它旨在通过使 IPSec 更简单、更精简来改进它,就像SSH一样。
-
-与OpenVPN一样,WireGuard 既是一种协议,也是一种软件工具,用于部署使用所述协议的VPN。一个关键特性是“加密密钥路由”,它将公钥与隧道内允许的 IP 地址列表相关联。
-
-
-WireGuard可用于 Ubuntu、Debian、Fedora、CentOS、MacOS、Windows 和安卓系统。WireGuard可在 IPv4和 IPv6 上工作。
-
-WireGuard比大多数其他VPN协议轻得多,它只在需要发送数据时才发送数据包。
-
-
-开发人员说,WireGuard还不应该被信任,因为它还没有被完全审计过,但是欢迎你给它一个机会。这可能是下一件大事!
-
-### 自制 VPN vs. 商业 VPN
-
-制作您自己的 VPN 为您的互联网连接增加了一层隐私和安全,但是如果您是唯一一个使用它的人,那么装备精良的第三方,比如政府机构,将很容易追踪到你的活动。
-
-此外,如果您计划使用您的 VPN 来解锁地理锁定的内容,自制的VPN可能不是最好的选择。因为您只能从一个IP地址连接,所以你的 VPN 服务器很容易被阻止。
-
-
-好的商业 VPN 不存在这些问题。有了像[ExpressVPN][8]这样的提供商,您可以与数十甚至数百个其他用户共享服务器的IP地址,这使得跟踪一个用户的活动几乎变得不可能。您也可以从成百上千的服务器中选择,所以如果其中一台被列入黑名单,你可以切换到另一台。
-
-
-然而,商业VPN的权衡是,您必须相信提供商不会窥探您的互联网流量。一定要选择一个有明确的无日志政策的信誉良好的供应商。
-
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/8/open-source-tools-vpn
-
-作者:[Paul Bischoff][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:
-[1]: https://blog.trailofbits.com/2016/12/12/meet-algo-the-vpn-that-works/
-[2]: https://github.com/StreisandEffect/streisand
-[3]: https://openvpn.net/
-[4]: https://github.com/OpenVPN/easy-rsa
-[5]: https://www.strongswan.org/
-[6]: https://www.softether.org/
-[7]: https://www.wireguard.com/
-[8]: https://www.comparitech.com/vpn/reviews/expressvpn/
diff --git a/translated/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md b/translated/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md
new file mode 100644
index 0000000000..2109a450fa
--- /dev/null
+++ b/translated/tech/20180831 How to Create a Slideshow of Photos in Ubuntu 18.04 and other Linux Distributions.md
@@ -0,0 +1,68 @@
+如何在 Ubuntu 18.04 和其他 Linux 发行版中创建照片幻灯片
+======
+创建照片幻灯片只需点击几下。以下是如何在 Ubuntu 18.04 和其他 Linux 发行版中制作照片幻灯片。
+
+![How to create slideshow of photos in Ubuntu Linux][1]
+
+想象一下,你的朋友和亲戚正在拜访你,并请求你展示最近的活动/旅行照片。
+
+你将照片保存在计算机上,并整齐地放在单独的文件夹中。你邀请计算机附近的所有人。你进入该文件夹,单击其中一张图片,然后按箭头键逐个显示照片。
+
+但那太累了!如果这些图片每隔几秒自动更改一次,那将会好很多。
+
+这称之为为幻灯片,我将向你展示如何在 Ubuntu 中创建照片幻灯片。这能让你在文件夹中循环播放图片并以全屏模式显示它们。
+
+### 在 Ubuntu 18.04 和其他 Linux 发行版中创建照片幻灯片
+
+虽然有几种图像浏览器可以做到,但我将向你展示大多数发行版中应该提供的两种最常用的工具。
+
+#### 方法 1:使用 GNOME 默认图像浏览器浏览照片幻灯片
+
+如果你在 Ubuntu 18.04 或任何其他发行版中使用 GNOME,那么你很幸运。Gnome 的默认图像浏览器,Eye of GNOME,能够在当前文件夹中显示图片的幻灯片。
+
+只需单击其中一张图片,你将在程序的右上角菜单中看到设置选项。它看起来像三条横栏堆在彼此的顶部。
+
+你会在这里看到几个选项。勾选幻灯片选项,它将全屏显示图像。
+
+![How to create slideshow of photos in Ubuntu Linux][2]
+
+默认情况下,图像以 5 秒的间隔变化。你可以进入 Preferences->Slideshow 来更改幻灯片放映间隔。
+
+![change slideshow interval in Ubuntu][3]Changing slideshow interval
+
+#### 方法 2:使用 Shotwell Photo Manager 进行照片幻灯片放映
+
+[Shotwell][4] 是一种流行的[ Linux 照片管理程序][5]。适用于所有主要的 Linux 发行版。
+
+如果尚未安装,请在你的发行版软件中心中搜索 Shotwell 并安装。
+
+Shotwell 的运行略有不同。如果你在 Shotwell Viewer 中直接打开照片,则不会看到首选项或者幻灯片的选项。
+
+对于幻灯片放映和其他选项,你必须打开 Shotwell 并导入包含这些图片的文件夹。导入文件夹后,从左侧窗格中选择该文件夹,然后单击菜单中的 “View”。你应该在此处看到幻灯片选项。只需单击它即可创建所选文件夹中所有图像的幻灯片。
+
+![How to create slideshow of photos in Ubuntu Linux][6]
+
+你还可以更改幻灯片设置。当图像以全屏显示时,将显示此选项。只需将鼠标悬停在底部,你就会看到一个设置选项。
+
+#### 创建照片幻灯片很容易
+
+如你所见,在 Linux 中创建照片幻灯片非常简单。我希望你觉得这个简单的提示有用。如果你有任何问题或建议,请在下面的评论栏告诉我们。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/photo-slideshow-ubuntu/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/abhishek/
+[1]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/Create-photos-Slideshow-Linux.png
+[2]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/create-slideshow-photos-ubuntu-gnome.jpeg
+[3]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/change-slideshow-interval-gnome-image.jpeg
+[4]: https://wiki.gnome.org/Apps/Shotwell
+[5]: https://itsfoss.com/linux-photo-management-software/
+[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/create-slideshow-photos-shotwell.jpeg
diff --git a/translated/tech/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md b/translated/tech/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md
new file mode 100644
index 0000000000..b8872981fe
--- /dev/null
+++ b/translated/tech/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md
@@ -0,0 +1,211 @@
+5 种在 Linux 图形界面或命令行界面截图的方法
+======
+下面介绍几种获取屏幕截图并对其编辑的方法,而且其中的屏幕截图工具在 Ubuntu 和其它主流 Linux 发行版中都能够使用。
+
+![在 Ubuntu Linux 中如何获取屏幕截图][1]
+
+当我的主力操作系统从 Windows 转换到 Ubuntu 的时候,首要考虑的就是屏幕截图工具的可用性。尽管使用默认的键盘快捷键也可以获取屏幕截图,但如果使用屏幕截图工具,可以更方便地对屏幕截图进行编辑。
+
+本文将会介绍在不适用第三方工具的情况下,如何通过系统自带的方法和工具获取屏幕截图,另外还会介绍一些可用于 Linux 的最佳截图工具。
+
+### 方法 1: 在 Linux 中截图的默认方式
+
+你是否需要截取整个屏幕?屏幕中的某个区域?某个特定的窗口?
+
+如果只需要获取一张屏幕截图,不对其进行编辑的话,那么键盘的默认快捷键就可以满足要求了。而且不仅仅是 Ubuntu ,绝大部分的 Linux 发行版和桌面环境都支持以下这些快捷键:
+
+**PrtSc** – 获取整个屏幕的截图并保存到 Pictures 目录。
+**Shift + PrtSc** – 获取屏幕的某个区域截图并保存到 Pictures 目录。
+**Alt + PrtSc** –获取当前窗口的截图并保存到 Pictures 目录。
+**Ctrl + PrtSc** – 获取整个屏幕的截图并存放到剪贴板。
+**Shift + Ctrl + PrtSc** – 获取屏幕的某个区域截图并存放到剪贴板。
+**Ctrl + Alt + PrtSc** – 获取当前窗口的 截图并存放到剪贴板。
+
+如上所述,在 Linux 中使用默认的快捷键获取屏幕截图是相当简单的。但如果要在不把屏幕截图导入到其它应用程序的情况下对屏幕截图进行编辑,还是使用屏幕截图工具比较方便。
+
+#### **方法 2: 在 Linux 中使用 Flameshot 获取屏幕截图并编辑**
+
+![flameshot][2]
+
+功能概述
+
+ * 注释 (高亮、标示、添加文本、框选)
+ * 图片模糊
+ * 图片裁剪
+ * 上传到 Imgur
+ * 用另一个应用打开截图
+
+
+
+Flameshot 在去年发布到 [GitHub][3],并成为一个引人注目的工具。如果你需要的是一个能够用于标注、模糊、上传到 imgur 的新式截图工具,那么 Flameshot 是一个好的选择。
+
+下面将会介绍如何安装 Flameshot 并根据你的偏好进行配置。
+
+如果你用的是 Ubuntu,那么只需要在 Ubuntu 软件中心上搜索,就可以找到 Flameshot 进而完成安装了。要是你想使用终端来安装,可以执行以下命令:
+```
+sudo apt install flameshot
+
+```
+
+如果你在安装过程中遇到问题,可以按照[官方的安装说明][4]进行操作。安装完成后,你还需要进行配置。尽管可以通过搜索来随时启动 Flameshot,但如果想使用 PrtSc 键触发启动,则需要指定对应的键盘快捷键。以下是相关配置步骤:
+
+ * 进入系统设置中的键盘设置
+ * 页面中会列出所有现有的键盘快捷键,拉到底部就会看见一个 **+** 按钮
+ * 点击 “+” 按钮添加自定义快捷键并输入以下两个字段:
+**名称:** 任意名称均可
+**命令:** /usr/bin/flameshot gui
+ * 最后将这个快捷操作绑定到 **PrtSc** 键上,可能会提示与系统的截图功能相冲突,但可以忽略掉这个警告。
+
+
+
+配置之后,你的自定义快捷键页面大概会是以下这样:
+
+![][5]
+将键盘快捷键映射到 Flameshot
+
+### **方法 3: 在 Linux 中使用 Shutter 获取屏幕截图并编辑**
+
+![][6]
+
+功能概述:
+
+ * 注释 (高亮、标示、添加文本、框选)
+ * 图片模糊
+ * 图片裁剪
+ * 上传到图片网站
+
+
+
+[Shutter][7] 是一个对所有主流 Linux 发行版都适用的屏幕截图工具。尽管最近已经不太更新了,但仍然是操作屏幕截图的一个优秀工具。
+
+在使用过程中可能会遇到这个工具的一些缺陷。Shutter 在任何一款最新的 Linux 发行版上最常见的问题就是由于缺少了任务栏上的程序图标,导致默认禁用了编辑屏幕截图的功能。 对于这个缺陷,还是有解决方案的。下面介绍一下如何[在 Shutter 中重新打开这个功能并将程序图标在任务栏上显示出来][8]。问题修复后,就可以使用 Shutter 来快速编辑屏幕截图了。
+
+同样地,在软件中心搜索也可以找到进而安装 Shutter,也可以在基于 Ubuntu 的发行版中执行以下命令使用命令行安装:
+```
+sudo apt install shutter
+
+```
+
+类似 Flameshot,你可以通过搜索 Shutter 手动启动它,也可以按照相似的方式设置自定义快捷方式以 **PrtSc** 键唤起 Shutter。
+
+如果要指定自定义键盘快捷键,只需要执行以下命令:
+```
+shutter -f
+
+```
+
+### 方法 4: 在 Linux 中使用 GIMP 获取屏幕截图
+
+![][9]
+
+功能概述:
+
+ * 高级图像编辑功能(缩放、添加滤镜、颜色校正、添加图层、裁剪等)
+ * 截取某一区域的屏幕截图
+
+
+
+如果需要对屏幕截图进行一些预先编辑,GIMP 是一个不错的选择。
+
+通过软件中心可以安装 GIMP。如果在安装时遇到问题,可以参考其[官方网站的安装说明][10]。
+
+要使用 GIMP 获取屏幕截图,需要先启动程序,然后通过 **File-> Create-> Screenshot** 导航。
+
+打开 Screenshot 选项后,会看到几个控制点来控制屏幕截图范围。点击 **Snap** 截取屏幕截图,图像将自动显示在 GIMP 中可供编辑。
+
+### 方法 5: 在 Linux 中使用命令行工具获取屏幕截图
+
+这一节内容仅适用于终端爱好者。如果你也喜欢使用终端,可以使用 **GNOME 截图工具**或 **ImageMagick** 或 **Deepin Scrot**,大部分流行的 Linux 发行版中都自带这些工具。
+
+要立即获取屏幕截图,可以执行以下命令:
+
+#### GNOME Screenshot(可用于 GNOME 桌面)
+```
+gnome-screenshot
+
+```
+
+GNOME Screenshot 是使用 GNOME 桌面的 Linux 发行版中都自带的一个默认工具。如果需要延时获取屏幕截图,可以执行以下命令(这里的 **5** 是需要延迟的秒数):
+
+```
+gnome-screenshot -d -5
+
+```
+
+#### ImageMagick
+
+如果你的操作系统是 Ubuntu、Mint 或其它流行的 Linux 发行版,一般会自带 [ImageMagick][11] 这个工具。如果没有这个工具,也可以按照[官方安装说明][12]使用安装源来安装。你也可以在终端中执行这个命令:
+```
+sudo apt-get install imagemagick
+
+```
+
+安装完成后,执行下面的命令就可以获取到屏幕截图(截取整个屏幕):
+
+```
+import -window root image.png
+
+```
+
+这里的“image.png”就是屏幕截图文件保存的名称。
+
+要获取屏幕一个区域的截图,可以执行以下命令:
+```
+import image.png
+
+```
+
+#### Deepin Scrot
+
+Deepin Scrot 是基于终端的一个较新的截图工具。和前面两个工具类似,一般自带于 Linux 发行版中。如果需要自行安装,可以执行以下命令:
+```
+sudo apt-get install scrot
+
+```
+
+安装完成后,使用下面这些命令可以获取屏幕截图。
+
+获取整个屏幕的截图:
+```
+scrot myimage.png
+
+```
+
+获取屏幕某一区域的截图:
+```
+scrot -s myimage.png
+
+```
+
+### 总结
+
+以上是一些在 Linux 上的优秀截图工具。当然还有很多截图工具没有提及(例如 [Spectacle][13] for KDE-distros),但相比起来还是上面几个工具更为好用。
+
+如果你有比文章中提到的更好的截图工具,欢迎讨论!
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/take-screenshot-linux/
+
+作者:[Ankush Das][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[译者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/
+[1]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/Taking-Screenshots-in-Linux.png
+[2]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/flameshot-pic.png
+[3]: https://github.com/lupoDharkael/flameshot
+[4]: https://github.com/lupoDharkael/flameshot#installation
+[5]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/flameshot-config-default.png
+[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/shutter-screenshot.jpg
+[7]: http://shutter-project.org/
+[8]: https://itsfoss.com/shutter-edit-button-disabled/
+[9]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/08/gimp-screenshot.jpg
+[10]: https://www.gimp.org/downloads/
+[11]: https://www.imagemagick.org/script/index.php
+[12]: https://www.imagemagick.org/script/install-source.php
+[13]: https://www.kde.org/applications/graphics/spectacle/
+
diff --git a/translated/tech/20180903 Turn your vi editor into a productivity powerhouse.md b/translated/tech/20180903 Turn your vi editor into a productivity powerhouse.md
index e1bbd55920..e2e209017f 100644
--- a/translated/tech/20180903 Turn your vi editor into a productivity powerhouse.md
+++ b/translated/tech/20180903 Turn your vi editor into a productivity powerhouse.md
@@ -1,5 +1,3 @@
-
-
增强 Vim 编辑器,提高编辑效率
======
@@ -27,11 +25,11 @@
* 首先,[安装 gvim][1]
* 打开 `gvim`
- * 单击 `编辑` -> `启动设置`,打开 `.vimrc` 文件
- * 复制本文最后的 `选项列表` 粘贴到 `.vimrc` 文件
+ * 单击 `编辑` -> `启动设置`,打开 `_vimrc` 文件
+ * 复制本文最后的 `选项列表` 粘贴到 `_vimrc` 文件
* 单击 `文件` -> `保存`
-译者注:此处应注意不要使用 `Windows` 自带的记事本编辑该 `.vimrc` 文件。
+译者注:此处应注意不要使用 `Windows` 自带的记事本编辑该 `_vimrc` 文件。
下面,我们将深入研究提高 `Vim` 编辑效率的选项。主要分为以下几类:
@@ -348,9 +346,9 @@ via: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse
作者:[Girish Managoli][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[idea2act](https://github.com/idea2act)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[apemost](https://github.com/apemost)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/gammay
-[1]: https://www.vim.org/download.php#pc
\ No newline at end of file
+[1]: https://www.vim.org/download.php#pc
diff --git a/translated/tech/20180905 5 tips to improve productivity with zsh.md b/translated/tech/20180905 5 tips to improve productivity with zsh.md
new file mode 100644
index 0000000000..05c7e845ab
--- /dev/null
+++ b/translated/tech/20180905 5 tips to improve productivity with zsh.md
@@ -0,0 +1,313 @@
+用 zsh 提高生产力的5个 tips
+======
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/features_solutions_command_data.png?itok=4_VQN3RK)
+
+Z shell (亦称 zsh) 是 *unx 系统中的命令解析器 。 它跟 `sh` (Bourne shell) 家族的其他解析器 ( 如 `bash` 和 `ksh` ) 有着相似的特点,但它还提供了大量的高级特性以及强大的命令行编辑功能(选项?),如增强版tab补全。
+
+由于 zsh 有好几百页的文档去描述他的特性,所以我无法在这里阐明 zsh 的所有功能。在本文,我会列出5个 tips,让你通过使用 zsh 来提高你的生产力。
+
+### 1\. 主题和插件
+
+多年来,开源社区已经为 zsh 开发了数不清的主题和插件。主题是预定义提示符的配置,而插件则是一组常用的别名命令和功能,让你更方便的使用一种特定的命令或者编程语言。
+
+如果你现在想开始用 zsh 的主题和插件,那么使用 zsh 的配置框架 (configuiration framework) 是你最快的入门方式。在众多的配置框架中,最受欢迎的则是 [Oh My Zsh][4]。在默认配置中,他就已经为 zsh 启用了一些合理的配置,同时它也自带多个主题和插件。
+
+由于主题会在你的命令行提示符之前添加一些常用的信息,比如你 Git 仓库的状态,或者是当前使用的 Python 虚拟环境,所以它会让你的工作更高效。只需要看到这些信息,你就不用再敲命令去重新获取它们,而且这些提示也相当酷炫。
+下图就是我(作者)选用的主题 [Powerlevel9k][5]
+
+![zsh Powerlevel9K theme][7]
+
+zsh 主题 Powerlevel9k
+
+除了主题,Oh my Zsh 还自带了大量常用的 zsh 插件。比如,通过启用 Git 插件,你可以用一组简便的命令别名操作 Git, 比如
+
+```
+$ alias | grep -i git | sort -R | head -10
+g=git
+ga='git add'
+gapa='git add --patch'
+gap='git apply'
+gdt='git diff-tree --no-commit-id --name-only -r'
+gau='git add --update'
+gstp='git stash pop'
+gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
+gcs='git commit -S'
+glg='git log --stat'
+```
+
+zsh 还有许多插件是用于多种编程语言,打包系统和一些平时在命令行中常用的工具。
+以下是我(作者) Ferdora 工作站中用到的插件表:
+
+```
+git golang fedora docker oc sudo vi-mode virtualenvwrapper
+```
+
+### 2\. 智能的命令别名
+
+命令别名在 zsh 中十分常用。为你常用的命令定义别名可以节省你的打字时间。Oh My Zsh 默认配置了一些常用的命令别名,包括目录导航命令别名,为常用的命令添加额外的选项,比如:
+
+```
+ls='ls --color=tty'
+grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'
+```
+
+
+除了命令别名意外, zsh 还自带两种额外常用的别名类型:后缀别名和全局别名。
+
+后缀别名可以让你在基于文件后缀的前提下,在命令行中利用指定程序打开这个文件。比如,要用 vim 打开 YAML 文件,可以定义以下命令行别名:
+
+```
+alias -s {yml,yaml}=vim
+```
+
+现在,如果你在命令行中输入任何后缀名为 `yml` 或 `yaml` 文件, zsh 都会用 vim 打开这个文件
+
+```
+$ playbook.yml
+# Opens file playbook.yml using vim
+```
+
+全局别名可以让你在使用命令行的任何时刻创建命令别名,而不仅仅是在开始的时候。这个在你想替换常用文件名或者管道命令的时候就显得非常有用了。比如
+
+```
+alias -g G='| grep -i'
+```
+
+要使用这个别名,只要你在想用管道命令的时候输入 `G` 就好了:
+
+```
+$ ls -l G do
+drwxr-xr-x. 5 rgerardi rgerardi 4096 Aug 7 14:08 Documents
+drwxr-xr-x. 6 rgerardi rgerardi 4096 Aug 24 14:51 Downloads
+```
+
+接着,我们就来看看 zsh 是如何导航文件系统的。
+
+### 3\. 便捷的目录导航
+
+当你使用命令行的时候, 在不同的目录之间切换访问是最常见的工作了。 zsh 提供了一些十分有用的目录导航功能来简化这个操作。这些功能已经集成到 Oh My Zsh 中了, 而你可以用以下命令来启用它
+
+```
+setopt autocd autopushd \ pushdignoredups
+```
+
+使用了上面的配置后,你就不用输入 `cd` 来切换目录了,只需要输入目录名称,zsh 就会自动切换到这个目录中:
+
+```
+$ pwd
+/home/rgerardi
+$ /tmp
+$ pwd
+/tmp
+```
+
+如果想要回退,只要输入 `-`:
+
+Zsh 会记录你访问过的目录,这样下次你就可以快速切换到这些目录中。如果想要看这个目录列表,只要输入 `dirs -v`:
+
+```
+$ dirs -v
+0 ~
+1 /var/log
+2 /var/opt
+3 /usr/bin
+4 /usr/local
+5 /usr/lib
+6 /tmp
+7 ~/Projects/Opensource.com/zsh-5tips
+8 ~/Projects
+9 ~/Projects/ansible
+10 ~/Documents
+```
+
+如果想要切换到这个列表中的其中一个目录,只需输入 `~#` (`#` 代表目录在列表中的序号)就可以了。比如
+
+```
+$ pwd
+/home/rgerardi
+$ ~4
+$ pwd
+/usr/local
+```
+
+你甚至可以用别名组合这些命令,这样切换起来就变得更简单:
+
+```
+d='dirs -v | head -10'
+1='cd -'
+2='cd -2'
+3='cd -3'
+4='cd -4'
+5='cd -5'
+6='cd -6'
+7='cd -7'
+8='cd -8'
+9='cd -9'
+```
+
+现在你可以通过输入 `d` 来查看这个目录列表的前10个,然后用目录的序号来进行切换:
+
+```
+$ d
+0 /usr/local
+1 ~
+2 /var/log
+3 /var/opt
+4 /usr/bin
+5 /usr/lib
+6 /tmp
+7 ~/Projects/Opensource.com/zsh-5tips
+8 ~/Projects
+9 ~/Projects/ansible
+$ pwd
+/usr/local
+$ 6
+/tmp
+$ pwd
+/tmp
+```
+
+最后,你可以在 zsh 中利用 Tab 来自动补全目录名称。你可以先输入目录的首字母,然后用 `TAB` 来补全它们:
+
+```
+$ pwd
+/home/rgerardi
+$ p/o/z (TAB)
+$ Projects/Opensource.com/zsh-5tips/
+```
+
+以上仅仅是 zsh 强大的 Tab 补全系统中的一个功能。接来下我们来探索它更多的功能。
+
+### 4\. 先进的 Tab 补全
+
+Zsh 强大的补全系统是它其中一个卖点。为了简便起见,我称它为 Tab 补全,然而在系统底层,它不仅仅只做一件事。这里通常包括扩展以及命令的补全,我会在这里同时讨论它们。如果想了解更多,详见 [用户手册][8] ( [User's Guide][8] )。
+
+在 Oh My Zsh 中,命令补全是默认可用的。要启用它,你只要在 `.zshrc` 文件中添加以下命令:
+```
+autoload -U compinit
+compinit
+```
+
+Zsh 的补全系统非常智能。他会根据当前上下文来进行命令的提示——比如,你输入了 `cd` 和 `TAB`,zsh 只会为你提示目录名,因为它知道
+当前的 `cd` 没有任何作用。
+
+反之,如果你使用 `ssh` 或者 `ping` 这类与用户或者主机相关的命令, zsh 便会提示用户名。
+
+`zsh` 拥有一个巨大而又完整的库,因此它能识别许多不同的命令。比如,如果你使用 `tar` 命令, 你可以按 Tab 键,他会为你展示一个可以用于解压的文件列表:
+
+```
+$ tar -xzvf test1.tar.gz test1/file1 (TAB)
+file1 file2
+```
+
+如果使用 `git` 的话,这里有个更高级的示例。在这个示例中,当你按 `TAB` 键, zsh 会自动补全当前库可以操作的文件:
+
+```
+$ ls
+original plan.txt zsh-5tips.md zsh_theme_small.png
+$ git status
+On branch master
+Your branch is up to date with 'origin/master'.
+
+Changes not staged for commit:
+ (use "git add ..." to update what will be committed)
+ (use "git checkout -- ..." to discard changes in working directory)
+
+ modified: zsh-5tips.md
+
+no changes added to commit (use "git add" and/or "git commit -a")
+$ git add (TAB)
+$ git add zsh-5tips.md
+```
+
+zsh 还能识别命令行选项,同时他只会提示与选中子命令相关的命令列表:
+
+```
+$ git commit - (TAB)
+--all -a -- stage all modified and deleted paths
+--allow-empty -- allow recording an empty commit
+--allow-empty-message -- allow recording a commit with an empty message
+--amend -- amend the tip of the current branch
+--author -- override the author name used in the commit
+--branch -- show branch information
+--cleanup -- specify how the commit message should be cleaned up
+--date -- override the author date used in the commit
+--dry-run -- only show the list of paths that are to be committed or not, and any untracked
+--edit -e -- edit the commit message before committing
+--file -F -- read commit message from given file
+--gpg-sign -S -- GPG-sign the commit
+--include -i -- update the given files and commit the whole index
+--interactive -- interactively update paths in the index file
+--message -m -- use the given message as the commit message
+... TRUNCATED ...
+```
+
+在按 `TAB` 键之后,你可以使用方向键来选择你想用的命令。现在你就不用记住所有的 Git 命令项了。
+
+zsh 还有很多有用的功能。当你用它的时候,你就知道哪些对你才是最有用的。
+
+### 5\. 命令行编辑与历史记录
+
+Zsh 的命令行编辑功能也十分有效。默认条件下,他是模拟 emacs 编辑器的。如果你是跟我一样更喜欢用 vi/vim,你可以用以下命令启用 vi 编辑。
+
+```
+$ bindkey -v
+```
+
+如果你使用 Oh My Zsh,`vi-mode` 插件可以启用额外的绑定,同时会在你的命令提示符上增加 vi 的模式提示--这个非常有用。
+
+当启用 vi 的绑定后,你可以再命令行中使用 vi 命令进行编辑。比如,输入 `ESC+/` 来查找命令行记录。在查找的时候,输入 `n` 来找下一个匹配行,输入 `N` 来找上一个。输入 `ESC` 后,最常用的 vi 命令有以下几个,如输入 `0` 跳转到第一行,输入 `$` 跳转到最后一行,输入 `i` 来插入文本,输入 `a` 来追加文本等等,一些直接操作的命令也同样有效,比如输入 `cw` 来修改单词。
+
+除了命令行编辑,如果你想修改或重新执行之前使用过的命令,zsh 还提供几个常用的命令行历史功能。比如,你打错了一个命令,输入 `fc`,你可以在你偏好的编辑器中修复最后一条命令。使用哪个编辑是参照 `$EDITOR` 变量的,而默认是使用 vi。
+
+另外一个有用的命令是 `r`, 他会重新执行上一条命令;而 `r ` 则会执行上一条包含 `WORD` 的命令。
+
+最后,输入两个感叹号( `!!` ),可以在命令行中回溯最后一条命令。这个十分有用,比如,当你忘记使用 `sudo` 去执行需要权限的命令时:
+
+```
+$ less /var/log/dnf.log
+/var/log/dnf.log: Permission denied
+$ sudo !!
+$ sudo less /var/log/dnf.log
+```
+
+这个功能让查找并且重新执行之前命令的操作更加方便。
+
+### 何去何从?
+
+这里仅仅介绍了几个可以让你提高生产率的 zsh 特性;其实还有更多功能带你发掘;想知道更多的信息,你可以访问以下的资源:
+
+[An Introduction to the Z Shell][9]
+
+[A User's Guide to ZSH][10]
+
+[Archlinux Wiki][11]
+
+[zsh-lovers][12]
+
+你有使用 zsh 提高生产力的tips可以分享吗?我(作者)很乐意在下方评论看到它们。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/tips-productivity-zsh
+
+作者:[Ricardo Gerardi][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[tnuoccalanosrep](https://github.com/tnuoccalanosrep)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/rgerardi
+[1]: http://www.zsh.org/
+[2]: https://en.wikipedia.org/wiki/Shell_(computing)
+[3]: http://zsh.sourceforge.net/Doc/Release/zsh_toc.html
+[4]: https://ohmyz.sh/
+[5]: https://github.com/bhilburn/powerlevel9k
+[7]: https://opensource.com/sites/default/files/uploads/zsh_theme_small.png (zsh Powerlevel9K theme)
+[8]: http://zsh.sourceforge.net/Guide/zshguide06.html#l144
+[9]: http://zsh.sourceforge.net/Intro/intro_toc.html
+[10]: http://zsh.sourceforge.net/Guide/
+[11]: https://wiki.archlinux.org/index.php/zsh
+[12]: https://grml.org/zsh/
diff --git a/translated/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md b/translated/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md
new file mode 100644
index 0000000000..03d429fef3
--- /dev/null
+++ b/translated/tech/20180907 Autotrash - A CLI Tool To Automatically Purge Old Trashed Files.md
@@ -0,0 +1,140 @@
+Autotrash - 一个自动清除旧垃圾的命令行工具
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/autotrash-720x340.png)
+
+**Autotrash** 是一个命令行程序,它用于自动清除旧的已删除文件。它将清除超过指定天数的在回收站中的文件。你不需要清空回收站或执行 SHIFT+DELETE 以永久清除文件/文件夹。Autortrash 将处理回收站中的内容,并在特定时间段后自动删除它们。简而言之,Autotrash 永远不会让你的垃圾变得太大。
+
+### 安装 Autotrash
+
+Autotrash 默认存在于基于 Debian 系统的仓库中。要在 Debian、Ubuntu、Linux Mint 上安装 autotrash,请运行:
+
+```
+$ sudo apt-get install autotrash
+
+```
+
+在 Fedora 上:
+
+```
+$ sudo dnf install autotrash
+
+```
+
+对于 Arch linux 及其变体,你可以使用任何 AUR 助手程序, 如 [**Yay**][1] 安装它。
+
+```
+$ yay -S autotrash-git
+
+```
+
+### 自动清除旧的垃圾文件
+
+每当你运行 autotrash 时,它会扫描你的 **`~/.local/share/Trash/info`** 目录并读取 **`.trashinfo`** 以找出它们的删除日期。如果文件已在回收站中超过指定的日期,那么就会删除它们。
+
+让我举几个例子。
+
+要删除回收站中超过 30 天的文件,请运行:
+
+```
+$ autotrash -d 30
+
+```
+
+如上例所示,如果回收站中的文件超过 30 天,Autotrash 会自动将其从回收站中删除。你无需手动删除它们。只需将没用的文件放到回收站即可忘记。Autotrash 将处理已删除的文件。
+
+以上命令仅处理当前登录用户的垃圾目录。如果要使 autotrash 处理所有用户的垃圾目录(不仅仅是在你的家目录中),请使用 **-t** 选项,如下所示。
+
+```
+$ autotrash -td 30
+
+```
+
+Autotrash 还允许你根据回收站可用容量或磁盘可用空间来删除已删除的文件。
+
+例如,看下下面的例子。
+
+```
+$ autotrash --max-free 1024 -d 30
+
+```
+
+根据上面的命令,如果回收站的剩余的空间少于**1GB**,那么 autotrash 将从回收站中清除超过**30 天**的已删除文件。如果你的回收站空间不足,这可能很有用。
+
+我们还可以从回收站中按最早的时间清除文件直到回收站至少有 1GB 的空间。
+
+```
+$ autotrash --min-free 1024
+
+```
+
+在这种情况下,对旧的已删除文件没有限制。
+
+你可以将这两个选项(**`--min-free`** 和 **`--max-free`**)组合在一个命令中,如下所示。
+
+```
+$ autotrash --max-free 2048 --min-free 1024 -d 30
+
+```
+
+根据上面的命令,如果可用空间小于 **2GB**,autotrash 将读取回收站,接着关注容量。此时,删除超过 30 天的文件,如果少于 **1GB** 的可用空间,则删除更新的文件。
+
+如你所见,所有命令都应由用户手动运行。你可能想知道,我该如何自动执行此任务?这很容易!只需将 autotrash 添加为 crontab 任务即可。现在,命令将在计划的时间自动运行,并根据定义的选项清除回收站中的文件。
+
+要在 crontab 中添加这些命令,请运行:
+
+```
+$ crontab -e
+
+```
+
+添加任务,例如:
+
+```
+@daily /usr/bin/autotrash -d 30
+
+```
+
+现在,autotrash 将每天清除回收站中超过 30 天的文件。
+
+有关计划任务的更多详细信息,请参阅以下链接。
+
+
++ [Cron 任务的初学者指南]][2]
++ [如何在 Linux 中轻松安全地管理 Cron 作业]][3]
+
+
+请注意,如果你无意中删除了任何重要文件,它们将在规定的日期后永久消失,所以请小心。
+
+请参阅手册页以了解有关 Autotrash 的更多信息。
+
+```
+$ man autotrash
+
+```
+
+清空回收站或按 SHIFT+DELETE 永久删除 Linux 系统中没用的东西没什么大不了的。它只需要几秒钟。但是,如果你需要额外的程序来处理垃圾文件,Autotrash 可能会有所帮助。试一下,看看它是如何工作的。
+
+就是这些了。希望这个有用。还有更多的好东西。
+
+干杯!
+
+
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/autotrash-a-cli-tool-to-automatically-purge-old-trashed-files/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
+[1]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
+[2]: https://www.ostechnix.com/a-beginners-guide-to-cron-jobs/
+[3]: https://www.ostechnix.com/how-to-easily-and-safely-manage-cron-jobs-in-linux/
diff --git a/translated/tech/20180910 3 open source log aggregation tools.md b/translated/tech/20180910 3 open source log aggregation tools.md
new file mode 100644
index 0000000000..a026b47625
--- /dev/null
+++ b/translated/tech/20180910 3 open source log aggregation tools.md
@@ -0,0 +1,118 @@
+
+
+
+3个开源日志聚合工具
+======
+
+日志聚合系统可以帮助我们故障排除并进行其他的任务。以下是三个主要工具介绍。
+
+![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr)
+
+
+
+指标聚合与日志聚合有何不同?日志不能包括指标吗?日志聚合系统不能做与指标聚合系统相同的事情吗?
+
+这些是我经常听到的问题。我还看到供应商推销他们的日志聚合系统作为所有可观察问题的解决方案。日志聚合是一个有价值的工具,但它通常对时间序列数据的支持不够好。
+
+时间序列指标聚合系统中几个有价值的功能为规则间隔与专门为时间序列数据定制的存储系统。规则间隔允许用户一次性地导出真实的数据结果。如果要求日志聚合系统定期收集指标数据,它也可以。但是,它的存储系统没有针对指标聚合系统中典型的查询类型进行优化。使用日志聚合工具中的存储系统处理这些查询将花费更多的资源和时间。
+
+所以,我们知道日志聚合系统可能不适合时间序列数据,但是它有什么好处呢?日志聚合系统是收集事件数据的好地方。这些是非常重要的不规则活动。最好的例子为 web 服务的访问日志。这些都很重要,因为我们想知道什么东西正在访问我们的系统,什么时候访问。另一个例子是应用程序错误记录——因为它不是正常的操作记录,所以在故障排除过程中可能很有价值的。
+
+日志记录的一些规则:
+
+ * 包含时间戳
+ * 包含 JSON 格式
+ * 不记录无关紧要的事件
+ * 记录所有应用程序的错误
+ * 记录警告错误
+ * 日志记录开关
+ * 以可读的形式记录信息
+ * 不在生产环境中记录信息
+ * 不记录任何无法阅读或无反馈的内容
+
+
+### 云的成本
+
+当研究日志聚合工具时,云可能看起来是一个有吸引力的选择。然而,这可能会带来巨大的成本。当跨数百或数千台主机和应用程序聚合时,日志数据是大量的。在基于云的系统中,数据的接收、存储和检索是昂贵的。
+
+作为一个真实的系统,大约500个节点和几百个应用程序的集合每天产生 200GB 的日志数据。这个系统可能还有改进的空间,但是在许多 SaaS 产品中,即使将它减少一半,每月也要花费将近10,000美元。这通常包括仅保留30天,如果你想查看一年一年的趋势数据,就不可能了。
+
+并不是要不使用这些系统,尤其是对于较小的组织它们可能非常有价值的。目的是指出可能会有很大的成本,当这些成本达到时,就可能令人非常的沮丧。本文的其余部分将集中讨论自托管的开源和商业解决方案。
+
+
+### 工具选择
+
+#### ELK
+
+[ELK][1] ,简称 Elasticsearch、Logstash 和 Kibana,是最流行的开源日志聚合工具。它被Netflix、Facebook、微软、LinkedIn 和思科使用。这三个组件都是由 [Elastic][2] 开发和维护的。[Elasticsearch][3] 本质上是一个NoSQL,Lucene 搜索引擎实现的。[Logstash][4] 是一个日志管道系统,可以接收数据,转换数据,并将其加载到像 Elasticsearch 这样的应用中。[Kibana][5] 是 Elasticsearch 之上的可视化层。
+
+几年前,Beats 被引入。Beats 是数据采集器。它们简化了将数据运送到日志存储的过程。用户不需要了解每种日志的正确语法,而是可以安装一个 Beats 来正确导出 NGINX 日志或代理日志,以便在Elasticsearch 中有效地使用它们。
+
+安装生产环境级 ELK stack 时,可能会包括其他几个部分,如 [Kafka][6], [Redis][7], and [NGINX][8]。此外,用 Fluentd 替换 Logstash 也很常见,我们将在后面讨论。这个系统操作起来很复杂,这在早期导致很多问题和投诉。目前,这些基本上已经被修复,不过它仍然是一个复杂的系统,如果你使用少部分的功能,建议不要使用它了。
+
+也就是说,服务是可用的,所以你不必担心。[Logz.io][9] 也可以使用,但是如果你有很多数据,它的标价有点高。当然,你可能没有很多数据,来使用用它。如果你买不起 Logz.io,你可以看看 [AWS Elasticsearch Service][10] (ES) 。ES 是 Amazon Web Services (AWS) 提供的一项服务,它使得 Elasticsearch 很容易快速工作。它还拥有使用 Lambda 和 S3 将所有AWS日志记录到 ES 的工具。这是一个更便宜的选择,但是需要一些管理操作,并有一些功能限制。
+
+
+Elastic [offers][11] 的母公司提供一款更强大的产品,它使用开放核心模型,为分析工具和报告提供了额外的选项。它也可以在谷歌云平台或 AWS 上托管。由于这种工具和托管平台的组合提供了比大多数 SaaS 选项更加便宜,这将是最好的选择并且具有很大的价值。该系统可以有效地取代或提供[security information and event management][12] ( SIEM )系统的功能。
+
+ELK 栈通过 Kibana 提供了很好的可视化工具,但是它缺少警报功能。Elastic 在付费的 X-Pack 插件中提供了提醒功能,但是在开源系统没有内置任何功能。Yelp 已经开发了一种解决这个问题的方法,[ElastAlert][13], 不过还有其他方式。这个额外的软件相当健壮,但是它增加了已经复杂的系统的复杂性。
+
+#### Graylog
+
+[Graylog][14] 最近越来越受欢迎,但它是在2010年 Lennart Koopmann 创建并开发的。两年后,一家公司以同样的名字诞生了。尽管它的使用者越来越多,但仍然远远落后于 ELK 栈。这也意味着它具有较少的社区开发特征,但是它可以使用与 ELK stack 相同的 Beats 。Graylog 由于 Graylog Collector Sidecar 使用 [Go][15] 编写所以在 Go 社区赢得了赞誉。
+
+Graylog 使用 Elasticsearch、[MongoDB][16] 并且 提供 Graylog Server 。这使得它像ELK 栈一样复杂,也许还要复杂一些。然而,Graylog 附带了内置于开源版本中的报警功能,以及其他一些值得注意的功能,如 streaming 、消息重写 和 地理定位。
+
+streaming 能允许数据在被处理时被实时路由到特定的 Streams。使用此功能,用户可以在单个Stream 中看到所有数据库错误,在不同的 Stream 中看到 web 服务器错误。当添加新项目或超过阈值时,甚至可以基于这些 Stream 提供警报。延迟可能是日志聚合系统中最大的问题之一,Stream消除了灰色日志中的这一问题。一旦日志进入,它就可以通过 Stream 路由到其他系统,而无需全部处理。
+
+消息重写功能使用开源规则引擎 [Drools][17] 。允许根据用户定义的规则文件评估所有传入的消息,从而可以删除消息(称为黑名单)、添加或删除字段或修改消息。
+
+Graylog 最酷的功能是它的地理定位功能,它支持在地图上绘制 IP 地址。这是一个相当常见的功能,在 Kibana 也可以这样使用,但是它增加了很多价值——特别是如果你想将它用作 SIEM 系统。地理定位功能在系统的开源版本中提供。
+
+Graylog 如果你想要的话,它会对开源版本的支持收费。它还为其企业版提供了一个开放的核心模型,提供存档、审计日志记录和其他支持。如果你不需要 Graylog (the company) 支持或托管的,你可以独立使用。
+
+#### Fluentd
+
+[Fluentd][18] 是 [Treasure Data][19] 开发的,[CNCF][20] 已经将它作为一个孵化项目。它是用 C 和 Ruby 编写的,并由[AWS][21] 和 [Google Cloud][22]推荐。fluentd已经成为许多装置中logstach的常用替代品。它充当本地聚合器,收集所有节点日志并将其发送到中央存储系统。它不是日志聚合系统。
+
+它使用一个强大的插件系统,提供不同数据源和数据输出的快速和简单的集成功能。因为有超过500个插件可用,所以你的大多数用例都应该包括在内。如果没有,这听起来是一个为开源社区做出贡献的机会。
+
+Fluentd 由于占用内存少(只有几十兆字节)和高吞吐量特性,是 Kubernetes 环境中的常见选择。在像 [Kubernetes][23] 这样的环境中,每个pod 都有一个 Fluentd sidecar ,内存消耗会随着每个新 pod 的创建而线性增加。在这中情况下,使用 Fluentd 将大大降低你的系统利用率。这对于Java开发的工具来说,这是一个常见的问题,这些工具旨在为每个节点运行一个工具,而内存开销并不是主要问题。
+
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/open-source-log-aggregation-tools
+
+作者:[Dan Barker][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[heguangzhi](https://github.com/heguangzhi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/barkerd427
+[1]: https://www.elastic.co/webinars/introduction-elk-stack
+[2]: https://www.elastic.co/
+[3]: https://www.elastic.co/products/elasticsearch
+[4]: https://www.elastic.co/products/logstash
+[5]: https://www.elastic.co/products/kibana
+[6]: http://kafka.apache.org/
+[7]: https://redis.io/
+[8]: https://www.nginx.com/
+[9]: https://logz.io/
+[10]: https://aws.amazon.com/elasticsearch-service/
+[11]: https://www.elastic.co/cloud
+[12]: https://en.wikipedia.org/wiki/Security_information_and_event_management
+[13]: https://github.com/Yelp/elastalert
+[14]: https://www.graylog.org/
+[15]: https://opensource.com/tags/go
+[16]: https://www.mongodb.com/
+[17]: https://www.drools.org/
+[18]: https://www.fluentd.org/
+[19]: https://www.treasuredata.com/
+[20]: https://www.cncf.io/
+[21]: https://aws.amazon.com/blogs/aws/all-your-data-fluentd/
+[22]: https://cloud.google.com/logging/docs/agent/
+[23]: https://opensource.com/resources/what-is-kubernetes
+
diff --git a/translated/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md b/translated/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md
new file mode 100644
index 0000000000..a01ffa267c
--- /dev/null
+++ b/translated/tech/20180912 How To Configure Mouse Support For Linux Virtual Consoles.md
@@ -0,0 +1,124 @@
+如何为 Linux 虚拟控制台配置鼠标支持
+======
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/GPM-1-720x340.png)
+
+我使用 Oracle VirtualBox 来测试各种类 Unix 操作系统。我的大多数虚拟机都是无头服务器,它们没有图形桌面环境。很长一段时间,我一直想知道如何在无头 Linux 服务器的基于文本的终端中使用鼠标。感谢 **GPM**,今天我了解到我们可以在虚拟控制台中使用鼠标进行复制和粘贴操作。 **GPM**,**G** eneral **P** urpose **M** ouse 的首字母缩写,它是一个守护程序,可以帮助你配置 Linux 虚拟控制台的鼠标支持。请不要将 GPM 与 **GDM**(GNOME 显示管理器)混淆。两者有完全不同的用途。
+
+GPM 在以下场景中特别有用:
+
+ * 新的 Linux 服务器安装或默认情况下不能或不使用 X Windows 的系统,如 Arch Linux 和 Gentoo。
+ * 在虚拟终端/控制台中使用复制/粘贴操作。
+ * 在基于文本的编辑器和浏览器中使用复制/粘贴(例如,emacs、lynx)。
+ * 在文本文件管理器中使用复制/粘贴(例如 Ranger、Midnight commander)。
+
+
+
+在这个简短的教程中,我们将看到如何在类 Unix 操作系统中在基于文本的终端中使用鼠标。
+
+### 安装 GPM
+
+要在纯文本 Linux 系统中启用鼠标支持,请安装 GPM 包。它在大多数 Linux 发行版的默认仓库中都有。
+
+在 Arch Linux 及其变体如 Antergos、Manjaro Linux 上,运行以下命令来安装 GPM:
+
+```
+$ sudo pacman -S gpm
+```
+
+在 Debian、Ubuntu、Linux Mint 中:
+
+```
+$ sudo apt install gpm
+```
+
+在 Fedora 上:
+
+```
+$ sudo dnf install gpm
+```
+
+在 openSUSE 上:
+
+```
+$ sudo zypper install gpm
+```
+
+安装后,使用以下命令启用并启动 GPM 服务:
+
+```
+$ sudo systemctl enable gpm
+$ sudo systemctl start gpm
+```
+
+在基于 Debian 的系统中,gpm 服务将在你安装后自动启动,因此你无需如上所示手动启动服务。
+
+### 为 Linux 虚拟控制台配置鼠标支持
+
+无需特殊配置。GPM 将在你安装并启动 gpm 服务后立即开始工作。
+
+在安装 GPM 之前,看下我的 Ubuntu 18.04 LTS 服务器的屏幕截图:
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/Ubuntu-18.04-CLI.png)
+
+正如你在上面的截图中看到的,我的 Ubuntu 18.04 LTS 无头服务器中没有可见的鼠标指针。只有一个闪烁的光标,它不能让我选择文本,使用鼠标复制/粘贴文本。在仅限 CLI 的 Linux 服务器中,鼠标根本没用。
+
+在安装 GPM 后查看 Ubuntu 18.04 LTS 服务器的以下截图:
+
+![](https://www.ostechnix.com/wp-content/uploads/2018/09/GPM.png)
+
+看见了吗?我现在可以选择文字了。
+
+要选择,复制和粘贴文本,请执行以下操作:
+
+ * 要选择文本,请按下鼠标左键并拖动鼠标。
+ * 选择文本后,放开鼠标左键,并按下中键在同一个或另一个控制台中粘贴文本。
+ * 右键用于扩展选择,就像在 `xterm` 中。
+ * 如果你使用的是双键鼠标,请使用右键粘贴文本。
+
+
+
+就这么简单!
+
+就像我已经说过的那样,GPM 工作得很好,并且不需要额外的配置。以下是 GPM 配置文件 **/etc/gpm.conf**(或在某些发行版中是 `/etc/conf.d/gpm`)的示例内容:
+
+```
+# protected from evaluation (i.e. by quoting them).
+#
+# This file is used by /etc/init.d/gpm and can be modified by
+# "dpkg-reconfigure gpm" or by hand at your option.
+#
+device=/dev/input/mice
+responsiveness=
+repeat_type=none
+type=exps2
+append=''
+sample_rate=
+```
+
+在我的例子中,我使用 USB 鼠标。如果你使用的是其他鼠标,则可能需要更改 **device=/dev/input/mice** 和 **type=exps2** 参数的值。
+
+有关更多详细信息,请参阅手册页。
+
+```
+$ man gpm
+```
+
+就是这些了。希望这个有用。还有更多的好东西。敬请期待!
+
+干杯!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/how-to-configure-mouse-support-for-linux-virtual-consoles/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
diff --git a/translated/tech/20180913 ScreenCloud- The Screenshot-- App.md b/translated/tech/20180913 ScreenCloud- The Screenshot-- App.md
new file mode 100644
index 0000000000..a7002183c3
--- /dev/null
+++ b/translated/tech/20180913 ScreenCloud- The Screenshot-- App.md
@@ -0,0 +1,77 @@
+ScreenCloud:一个截屏程序
+======
+[ScreenCloud][1]是一个很棒的小程序,你甚至不知道你需要它。桌面 Linux 的默认屏幕截图流程很好(Prt Scr 按钮),我们甚至有一些[强大的截图工具][2],如 [Shutter][3]。但是,ScreenCloud 有一个非常简单但非常方便的功能,让我爱上了它。在我们深入它之前,让我们先看一个背景故事。
+
+我截取了很多截图。远远超过平均水平。收据、注册详细信息、开发工作、文章中程序的截图等等。我接下来要做的就是打开浏览器,浏览我最喜欢的云存储并将重要的内容转储到那里,以便我可以在手机上以及 PC 上的多个操作系统上访问它们。这也让我可以轻松与我的团队分享我正在使用的程序的截图。
+
+我对这个标准的截图流程没有抱怨,打开浏览器并登录我的云,然后手动上传屏幕截图,直到我遇到 ScreenCloud。
+
+### ScreenCloud
+
+ScreenCloud 是跨平台的程序,它提供简单的屏幕截图和灵活的[云备份选项][4]管理。这包括使用你自己的[ FTP 服务器][5]。
+
+![][6]
+
+ScreenCloud 很精简,投入了大量的注意力给小的东西。它为你提供了非常容易记住的热键来捕获全屏、活动窗口或捕获用鼠标选择的区域。
+
+![][7]ScreenCloud 的默认键盘快捷键
+
+截取屏幕截图后,你可以设置 ScreenCloud 如何处理图像或直接将其上传到你选择的云服务。它甚至支持 SFTP。截图上传后(通常在几秒钟内),图像链接就会被自动复制到剪贴板,这让你可以轻松共享。
+
+![][8]
+
+你还可以使用 ScreenCloud 进行一些基本编辑。为此,你需要将 “Save to” 设置为 “Ask me”。此设置在下拉框中有并且通常是默认设置。当使用它时,当你截取屏幕截图时,你会看到编辑文件的选项。在这里,你可以在屏幕截图中添加箭头、文本和数字。
+
+![Editing screenshots with ScreenCloud][9]Editing screenshots with ScreenCloud
+
+### 在 Linux 上安装 ScreenCloud
+
+ScreenCloud 可在[ Snap 商店][10]中找到。因此,你可以通过访问[ Snap 商店][12]或运行以下命令,轻松地将其安装在 Ubuntu 和其他[启用 Snap ][11]的发行版上。
+
+```
+sudo snap install screencloud
+
+```
+
+对于无法通过 Snap 安装程序的 Linux 发行版,你可以[在这里][1]下载 AppImage。进入下载文件夹,右键单击并在那里打开终端。然后运行以下命令。
+
+```
+sudo chmod +x ScreenCloud-v1.4.0-x86_64.AppImage
+
+```
+
+然后,你可以通过双击下载的文件来启动程序。
+
+![][13]
+
+### 总结
+
+ScreenCloud 适合所有人吗?可能不会。它比默认屏幕截图更好吗?可能是。如果你正在截某些屏幕,有可能它是重要的或是你想分享的。ScreenCloud 可以更轻松,更快速地备份或共享屏幕截图。所以,如果你想要这些功能,你应该试试 ScreenCloud。
+
+欢迎在用下面的评论栏提出你的想法和意见。还有不要忘记与朋友分享这篇文章。干杯。
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/screencloud-app/
+
+作者:[Aquil Roshan][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/aquil/
+[1]: https://screencloud.net
+[2]: https://itsfoss.com/take-screenshot-linux/
+[3]: http://shutter-project.org
+[4]: https://itsfoss.com/cloud-services-linux/
+[5]: https://itsfoss.com/set-ftp-server-linux/
+[6]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/screencloud3.jpg
+[7]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/screencloud2.jpg
+[8]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/ScrenCloud6.jpg
+[9]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/editing-with-screencloud.png
+[10]: https://snapcraft.io/
+[11]: https://itsfoss.com/install-snap-linux/
+[12]: https://snapcraft.io/screencloud
+[13]: https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/09/ScrenCloud4.jpg
diff --git a/translated/tech/20180918 Top 3 Python libraries for data science.md b/translated/tech/20180918 Top 3 Python libraries for data science.md
new file mode 100644
index 0000000000..4026b751d5
--- /dev/null
+++ b/translated/tech/20180918 Top 3 Python libraries for data science.md
@@ -0,0 +1,246 @@
+3 个用于数据科学的顶级 Python 库
+======
+
+>使用这些库把 Python 变成一个科学数据分析和建模工具。
+
+![][7]
+
+Python 的许多特性,比如开发效率、代码可读性、速度等使之成为了数据科学爱好者的首选编程语言。对于想要升级应用程序功能的数据科学家和机器学习专家来说,Python 通常是最好的选择(比如,Andrey Bulezyuk 使用 Python 语言创造了一个优秀的[机器学习应用程序][1])。
+
+由于 Python 的广泛使用,因此它拥有大量的库,使得数据科学家能够很容易地完成复杂的任务,而且不会遇到许多编码困难。下面列出 3 个用于数据科学的顶级 Python 库。如果你想在数据科学这一领域开始你的职业生涯,就去了解一下它们吧。
+
+### NumPy
+
+[NumPy][2](数值 Python 的简称)是其中一个顶级数据科学库,它拥有许多有用的资源,从而帮助数据科学家把 Python 变成一个强大的科学分析和建模工具。NumPy 是在 BSD 许可证的许可下开源的,它是在科学计算中执行任务的基础 Python 库。SciPy 是一个更大的基于 Python 生态系统的开源工具,而 NumPy 是 SciPy 非常重要的一部分。
+
+NumPy 为 Python 提供了大量数据结构,从而能够轻松地执行多维数组和矩阵运算。除了用于求解线性代数方程和其它数学计算之外,NumPy 还可以用做不同类型通用数据的多维容器。
+
+此外,NumPy 还可以和其他编程语言无缝集成,比如 C/C++ 和 Fortran。NumPy 的多功能性使得它可以简单而快速地与大量数据库和工具结合。比如,让我们来看一下如何使用 NumPy(缩写成 `np`)来实现两个矩阵的乘法运算。
+
+我们首先导入 NumPy 库(在这些例子中,我将使用 Jupyter notebook):
+
+```
+import numpy as np
+```
+
+接下来,使用 `eye()` 函数来生成指定维数的单位矩阵:
+
+```
+matrix_one = np.eye(3)
+matrix_one
+```
+
+输出如下:
+
+```
+array([[1., 0., 0.],
+ [0., 1., 0.],
+ [0., 0., 1.]])
+```
+
+让我们生成另一个 3x3 矩阵。
+
+我们使用 `arange([starting number], [stopping number])` 函数来排列数字。注意,函数中的第一个参数是需要列出的初始数字,而后一个数字不包含在生成的结果中。
+
+另外,使用 `reshape()` 函数把原始生成的矩阵的维度改成我们需要的维度。为了使两个矩阵“可乘”,它们需要有相同的维度。
+
+```
+matrix_two = np.arange(1,10).reshape(3,3)
+matrix_two
+```
+
+Here is the output:
+输出如下:
+
+```
+array([[1, 2, 3],
+ [4, 5, 6],
+ [7, 8, 9]])
+```
+
+接下来,使用 `dot()` 函数将两个矩阵相乘。
+
+```
+matrix_multiply = np.dot(matrix_one, matrix_two)
+
+matrix_multiply
+
+```
+
+相乘后的输出如下:
+
+```
+array([[1., 2., 3.],
+ [4., 5., 6.],
+ [7., 8., 9.]])
+```
+
+太好了!
+
+我们成功使用 NumPy 完成了两个矩阵的相乘,而不是使用普通冗长的 Python 代码。
+
+下面是这个例子的完整代码:
+
+```
+import numpy as np
+#生成一个 3x3 单位矩阵
+matrix_one = np.eye(3)
+matrix_one
+#生成另一个 3x3 矩阵以用来做乘法运算
+matrix_two = np.arange(1,10).reshape(3,3)
+matrix_two
+#将两个矩阵相乘
+matrix_multiply = np.dot(matrix_one, matrix_two)
+matrix_multiply
+```
+
+### Pandas
+
+[Pandas][3] 是另一个可以提高你的 Python 数据科学技能的优秀库。就和 NumPy 一样,它属于 SciPy 开源软件家族,可以在 BSD 免费许可证许可下使用。
+
+Pandas 提供了多功能并且很强大的工具用于管理数据结构和执行大量数据分析。该库能够很好的处理不完整、非结构化和无序的真实世界数据,并且提供了用于整形、聚合、分析和可视化数据集的工具
+
+Pandas 中有三种类型的数据结构:
+
+ * Series: 一维、相同数据类型的数组
+ * DataFrame: 二维异型矩阵
+ * Panel: 三维大小可变数组
+
+
+
+例如,我们来看一下如何使用 Panda 库(缩写成 `pd`)来执行一些描述性统计计算。
+
+首先导入该库:
+
+```
+import pandas as pd
+```
+
+然后,创建一个序列字典:
+
+```
+d = {'Name':pd.Series(['Alfrick','Michael','Wendy','Paul','Dusan','George','Andreas',
+ 'Irene','Sagar','Simon','James','Rose']),
+ 'Years of Experience':pd.Series([5,9,1,4,3,4,7,9,6,8,3,1]),
+ 'Programming Language':pd.Series(['Python','JavaScript','PHP','C++','Java','Scala','React','Ruby','Angular','PHP','Python','JavaScript'])
+ }
+```
+
+接下来,再创建一个数据框:
+
+```
+df = pd.DataFrame(d)
+```
+
+输出是一个非常规整的表:
+
+```
+ Name Programming Language Years of Experience
+0 Alfrick Python 5
+1 Michael JavaScript 9
+2 Wendy PHP 1
+3 Paul C++ 4
+4 Dusan Java 3
+5 George Scala 4
+6 Andreas React 7
+7 Irene Ruby 9
+8 Sagar Angular 6
+9 Simon PHP 8
+10 James Python 3
+11 Rose JavaScript 1
+```
+
+下面是这个例子的完整代码:
+
+```
+import pandas as pd
+#创建一个序列字典
+d = {'Name':pd.Series(['Alfrick','Michael','Wendy','Paul','Dusan','George','Andreas',
+ 'Irene','Sagar','Simon','James','Rose']),
+ 'Years of Experience':pd.Series([5,9,1,4,3,4,7,9,6,8,3,1]),
+ 'Programming Language':pd.Series(['Python','JavaScript','PHP','C++','Java','Scala','React','Ruby','Angular','PHP','Python','JavaScript'])
+ }
+
+#创建一个数据框
+df = pd.DataFrame(d)
+print(df)
+```
+
+### Matplotlib
+
+[Matplotlib][4] 也是 Scipy 核心包的一部分,并且在 BSD 许可证下可用。它是一个非常流行的科学库,用于实现简单而强大的可视化。你可以使用这个 Python 数据科学框架来生成曲线图、柱状图、直方图以及各种不同形状的图表,并且不用担心需要写很多行的代码。例如,我们来看一下如何使用 Matplotlib 库来生成一个简单的柱状图。
+
+首先导入该库:
+
+```
+from matplotlib import pyplot as plt
+```
+
+然后生成 x 轴和 y 轴的数值:
+
+```
+x = [2, 4, 6, 8, 10]
+y = [10, 11, 6, 7, 4]
+```
+
+接下来,调用函数来绘制柱状图:
+
+```
+plt.bar(x,y)
+```
+
+最后,显示图表:
+
+```
+plt.show()
+```
+
+柱状图如下:
+
+![][6]
+
+下面是这个例子的完整代码:
+
+```
+#导入 Matplotlib 库
+from matplotlib import pyplot as plt
+#和 import matplotlib.pyplot as plt 一样
+
+#生成 x 轴的数值
+x = [2, 4, 6, 8, 10]
+
+#生成 y 轴的数值
+y = [10, 11, 6, 7, 4]
+
+#调用函数来绘制柱状图
+plt.bar(x,y)
+
+#显示图表
+plt.show()
+```
+
+### 总结
+
+Python 编程语言非常擅长数据处理和准备,但是在科学数据分析和建模方面就没有那么优秀了。幸好有这些用于[数据科学][5]的顶级 Python 框架填补了这一空缺,从而你能够进行复杂的数学计算以及创建复杂模型,进而让数据变得更有意义。
+
+你还知道其它的 Python 数据挖掘库吗?你的使用经验是什么样的?请在下面的评论中和我们分享。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/top-3-python-libraries-data-science
+
+作者:[Dr.Michael J.Garbade][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[ucasFL](https://github.com/ucasFL)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/drmjg
+[1]: https://www.liveedu.tv/andreybu/REaxr-machine-learning-model-python-sklearn-kera/oPGdP-machine-learning-model-python-sklearn-kera/
+[2]: http://www.numpy.org/
+[3]: http://pandas.pydata.org/
+[4]: https://matplotlib.org/
+[5]: https://www.liveedu.tv/guides/data-science/
+[6]: https://opensource.com/sites/default/files/uploads/matplotlib_barchart.png
+[7]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr