diff --git a/translated/tech/20171202 Simulating the Altair.md b/published/20171202 Simulating the Altair.md
similarity index 69%
rename from translated/tech/20171202 Simulating the Altair.md
rename to published/20171202 Simulating the Altair.md
index 390298451e..e59c3c913c 100644
--- a/translated/tech/20171202 Simulating the Altair.md
+++ b/published/20171202 Simulating the Altair.md
@@ -1,8 +1,9 @@
-模拟 Altair
+模拟 Altair 8800 计算机
======
-[Altair 8800][1] 是 1975 年发布的自建家用电脑套件。Altair 基本上是第一台个人电脑,虽然这个名词好几年前就出现了。对 Dell、HP 或者 Macbook 而言它是亚当(或者夏娃)。
-有些人认为为 Z80(与 Altair 的 Intel 8080 密切相关的处理器)编写仿真器真是太棒了,并认为它需要模拟 Altair 的控制面板。所以如果你想知道 1975 年使用电脑是什么感觉,你可以在你的 Macbook 上运行 Altair:
+[Altair 8800][1] 是 1975 年发布的自建家用电脑套件。Altair 基本上是第一台个人电脑(PC),虽然 PC 这个名词好几年前就出现了。对 Dell、HP 或者 Macbook 而言它是亚当(或者夏娃)。
+
+有些人认为为 Z80(与 Altair 的 Intel 8080 密切相关的处理器)编写仿真器真是太棒了,并认为它需要一个模拟 Altair 的控制面板。所以如果你想知道 1975 年使用电脑是什么感觉,你可以在你的 Macbook 上运行 Altair:
![Altair 8800][2]
@@ -22,9 +23,9 @@ $ tar -xvf z80pack-1.26.tgz
$ cd z80pack-1.26
```
-控制面板模拟基于名为 `frontpanel` 的库。你必须先编译该库。如果你进入 `frontpanel` 目录,你会发现 `README` 文件列出了库自己的依赖项。你在这里的体会几乎肯定会与我的不同,但也许我的痛苦可以作为例子。我安装了依赖项,但是是通过 [Homebrew][4] 安装的。为了让库能够编译,我必须确保在 `Makefile.osx` 中将 `/usr/local/include `添加到 Clang 的 include 路径中。
+控制面板模拟基于名为 `frontpanel` 的库。你必须先编译该库。如果你进入 `frontpanel` 目录,你会发现 `README` 文件列出了这个库自己的依赖项。你在这里的体会几乎肯定会与我的不同,但也许我的痛苦可以作为例子。我安装了依赖项,但是是通过 [Homebrew][4] 安装的。为了让库能够编译,我必须确保在 `Makefile.osx` 中将 `/usr/local/include `添加到 Clang 的 include 路径中。
-如果你觉得依赖没有问题,那么你应该就能编译库(我们现在位于 `z80pack-1.26/frontpanel`):
+如果你觉得依赖没有问题,那么你应该就能编译这个库(我们现在位于 `z80pack-1.26/frontpanel`):
```
$ make -f Makefile.osx ...
@@ -42,7 +43,7 @@ $ make -f Makefile.osx clean
该过程将在 `z80pack-1.26/altairsim` 中创建一个名为 `altairsim` 的可执行文件。运行该可执行文件,你应该会看到标志性的 Altair 控制面板!
-如果你想要探究,请阅读原始的[Altair 手册][5]
+如果你想要探究,请阅读原始的 [Altair 手册][5]
如果你喜欢这篇文章,我们每两周更新一次!在 Twitter 上关注 [@TwoBitHistory][6] 或订阅 [RSS 源][7]了解什么时候有新文章。
@@ -53,7 +54,7 @@ via: https://twobithistory.org/2017/12/02/simulating-the-altair.html
作者:[Two-Bit History][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/translated/tech/20180723 Setting Up a Timer with systemd in Linux.md b/published/20180723 Setting Up a Timer with systemd in Linux.md
similarity index 53%
rename from translated/tech/20180723 Setting Up a Timer with systemd in Linux.md
rename to published/20180723 Setting Up a Timer with systemd in Linux.md
index 7e62e85d89..9899c30f30 100644
--- a/translated/tech/20180723 Setting Up a Timer with systemd in Linux.md
+++ b/published/20180723 Setting Up a Timer with systemd in Linux.md
@@ -1,19 +1,20 @@
在 Linux 上使用 systemd 设置定时器
======
+> 学习使用 systemd 创建启动你的游戏服务器的定时器。

-之前,我们看到了如何[手动的][1]、[在开机与关机时][2]、[在启用某个设备时][3]、[在文件系统发生改变时][4]启用与禁用 systemd 服务。
+之前,我们看到了如何[手动的][1]、[在开机与关机时][2]、[在启用某个设备时][3]、[在文件系统发生改变时][4] 启用与禁用 systemd 服务。
-定时器增加了另一种启动服务的方式,基于...时间。尽管与定时任务很相似,但 systemd 定时器稍微地灵活一些。让我们看看它是怎么工作的。
+定时器增加了另一种启动服务的方式,基于……时间。尽管与定时任务很相似,但 systemd 定时器稍微地灵活一些。让我们看看它是怎么工作的。
### “定时运行”
-让我们展开[本系列前两篇文章][2]中[你所设置的 ][1] [Minetest][5] 服务器作为如何使用定时器单元的第一个例子。如果你还没有读过那几篇文章,可以现在去看看。
+让我们展开[本系列前两篇文章][2]中[你所设置的][1] [Minetest][5] 服务器作为如何使用定时器单元的第一个例子。如果你还没有读过那几篇文章,可以现在去看看。
-你将通过创建一个定时器来改进 Minetest 服务器,使得在定时器启动 1 分钟后运行游戏服务器而不是立即运行。这样做的原因可能是,在启动之前可能会用到其他的服务,例如发邮件给其他玩家告诉他们游戏已经准备就绪,你要确保其他的服务(例如网络)在开始前完全启动并运行。
+你将通过创建一个定时器来“改进” Minetest 服务器,使得在服务器启动 1 分钟后运行游戏服务器而不是立即运行。这样做的原因可能是,在启动之前可能会用到其他的服务,例如发邮件给其他玩家告诉他们游戏已经准备就绪,你要确保其他的服务(例如网络)在开始前完全启动并运行。
-跳到最底下,你的 `_minetest.timer_` 单元看起来就像这样:
+最终,你的 `minetest.timer` 单元看起来就像这样:
```
# minetest.timer
@@ -26,23 +27,22 @@ Unit=minetest.service
[Install]
WantedBy=basic.target
-
```
一点也不难吧。
-通常,开头是 `[Unit]` 和一段描述单元作用的信息,这儿没什么新东西。`[Timer]` 这一节是新出现的,但它的作用不言自明:它包含了何时启动服务,启动哪个服务的信息。在这个例子当中,`OnBootSec` 是告诉 systemd 在系统启动后运行服务的指令。
+如以往一般,开头是 `[Unit]` 和一段描述单元作用的信息,这儿没什么新东西。`[Timer]` 这一节是新出现的,但它的作用不言自明:它包含了何时启动服务,启动哪个服务的信息。在这个例子当中,`OnBootSec` 是告诉 systemd 在系统启动后运行服务的指令。
其他的指令有:
- * `OnActiveSec=`,告诉 systemd 在定时器启动后多长时间运行服务。
- * `OnStartupSec=`,同样的,它告诉 systemd 在 systemd 进程启动后多长时间运行服务。
- * `OnUnitActiveSec=`,告诉 systemd 在上次由定时器激活的服务启动后多长时间运行服务。
- * `OnUnitInactiveSec=`,告诉 systemd 在上次由定时器激活的服务停用后多长时间运行服务。
+* `OnActiveSec=`,告诉 systemd 在定时器启动后多长时间运行服务。
+* `OnStartupSec=`,同样的,它告诉 systemd 在 systemd 进程启动后多长时间运行服务。
+* `OnUnitActiveSec=`,告诉 systemd 在上次由定时器激活的服务启动后多长时间运行服务。
+* `OnUnitInactiveSec=`,告诉 systemd 在上次由定时器激活的服务停用后多长时间运行服务。
-继续 `_minetest.timer_` 单元,`basic.target` 通常用作后期引导服务的同步点。这就意味着它可以让 `_minetest.timer_` 单元运行在安装完本地挂载点或交换设备,套接字、定时器、路径单元和其他基本的初始化进程之后。就像在[第二篇文章中 systemd 单元][2]里解释的那样,`_targets_` 就像旧的运行等级,可以将你的计算机置于某个状态,或像这样告诉你的服务在达到某个状态后开始运行。
+继续 `minetest.timer` 单元,`basic.target` 通常用作后期引导服务的同步点。这就意味着它可以让 `minetest.timer` 单元运行在安装完本地挂载点或交换设备,套接字、定时器、路径单元和其他基本的初始化进程之后。就像在[第二篇文章中 systemd 单元][2]里解释的那样,`targets` 就像旧的运行等级一样,可以将你的计算机置于某个状态,或像这样告诉你的服务在达到某个状态后开始运行。
-在前两篇文章中你配置的`_minetest.service_`文件[最终][2]看起来就像这样:
+在前两篇文章中你配置的 `minetest.service` 文件[最终][2]看起来就像这样:
```
# minetest.service
@@ -64,10 +64,9 @@ ExecStop= /bin/kill -2 $MAINPID
[Install]
WantedBy= multi-user.target
-
```
-这儿没什么需要修改的。但是你需要将 `_mtsendmail.sh_`(发送你的 email 的脚本)从:
+这儿没什么需要修改的。但是你需要将 `mtsendmail.sh`(发送你的 email 的脚本)从:
```
#!/bin/bash
@@ -75,7 +74,6 @@ WantedBy= multi-user.target
sleep 20
echo $1 | mutt -F /home//.muttrc -s "$2" my_minetest@mailing_list.com
sleep 10
-
```
改成:
@@ -84,40 +82,37 @@ sleep 10
#!/bin/bash
# mtsendmail.sh
echo $1 | mutt -F /home/paul/.muttrc -s "$2" pbrown@mykolab.com
-
```
-你做的事是去除掉 Bash 脚本中那些蹩脚的停顿。Systemd 现在正在等待。
+你做的事是去除掉 Bash 脚本中那些蹩脚的停顿。Systemd 现在来做等待。
### 让它运行起来
-确保一切运作正常,禁用 `_minetest.service_`:
+确保一切运作正常,禁用 `minetest.service`:
+
```
sudo systemctl disable minetest
-
```
-这使得系统启动时它不会一同启动;然后,相反地,启用 `_minetest.timer_`:
+这使得系统启动时它不会一同启动;然后,相反地,启用 `minetest.timer`:
+
```
sudo systemctl enable minetest.timer
-
```
-现在你就可以重启服务器了,当运行`sudo journalctl -u minetest.*`后,你就会看到 `_minetest.timer_` 单元执行后大约一分钟,`_minetest.service_` 单元开始运行。
+现在你就可以重启服务器了,当运行 `sudo journalctl -u minetest.*` 后,你就会看到 `minetest.timer` 单元执行后大约一分钟,`minetest.service` 单元开始运行。
![minetest timer][7]
-图 1:minetest.timer 运行大约 1 分钟后 minetest.service 开始运行
-
-[经许可使用][8]
+*图 1:minetest.timer 运行大约 1 分钟后 minetest.service 开始运行*
### 时间的问题
-`_minetest.timer_` 在 systemd 的日志里显示的启动时间为 09:08:33 而 `_minetest.service` 启动时间是 09:09:18,它们之间少于 1 分钟,关于这件事有几点需要说明一下:首先,请记住我们说过 `OnBootSec=` 指令是从引导完成后开始计算服务启动的时间。当 `_minetest.timer_` 的时间到来时,引导已经在几秒之前完成了。
+`minetest.timer` 在 systemd 的日志里显示的启动时间为 09:08:33 而 `minetest.service` 启动时间是 09:09:18,它们之间少于 1 分钟,关于这件事有几点需要说明一下:首先,请记住我们说过 `OnBootSec=` 指令是从引导完成后开始计算服务启动的时间。当 `minetest.timer` 的时间到来时,引导已经在几秒之前完成了。
-另一件事情是 systemd 给自己设置了一个误差幅度(默认是 1 分钟)来运行东西。这有助于在多个资源密集型进程同时运行时分配负载:通过分配 1 分钟的时间,systemd 可以等待某些进程关闭。这也意味着 `_minetest.service_`会在引导完成后的 1~2 分钟之间启动。但精确的时间谁也不知道。
+另一件事情是 systemd 给自己设置了一个误差幅度(默认是 1 分钟)来运行东西。这有助于在多个资源密集型进程同时运行时分配负载:通过分配 1 分钟的时间,systemd 可以等待某些进程关闭。这也意味着 `minetest.service` 会在引导完成后的 1~2 分钟之间启动。但精确的时间谁也不知道。
-作为记录,你可以用 `AccuracySec=` 指令[修改误差幅度][9]。
+顺便一提,你可以用 `AccuracySec=` 指令[修改误差幅度][9]。
你也可以检查系统上所有的定时器何时运行或是上次运行的时间:
@@ -127,9 +122,7 @@ systemctl list-timers --all
![check timer][11]
-图 2:检查定时器何时运行或上次运行的时间
-
-[经许可使用][8]
+*图 2:检查定时器何时运行或上次运行的时间*
最后一件值得思考的事就是你应该用怎样的格式去表示一段时间。Systemd 在这方面非常灵活:`2 h`,`2 hours` 或 `2hr` 都可以用来表示 2 个小时。对于“秒”,你可以用 `seconds`,`second`,`sec` 和 `s`。“分”也是同样的方式:`minutes`,`minute`,`min` 和 `m`。你可以检查 `man systemd.time` 来查看 systemd 能够理解的所有时间单元。
@@ -148,13 +141,13 @@ via: https://www.linux.com/blog/learn/intro-to-linux/2018/7/setting-timer-system
作者:[Paul Brown][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[LuuMing](https://github.com/LuuMing)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.linux.com/users/bro66
-[1]:https://www.linux.com/blog/learn/intro-to-linux/2018/5/writing-systemd-services-fun-and-profit
-[2]:https://www.linux.com/blog/learn/2018/5/systemd-services-beyond-starting-and-stopping
+[1]:https://linux.cn/article-9700-1.html
+[2]:https://linux.cn/article-9703-1.html
[3]:https://www.linux.com/blog/intro-to-linux/2018/6/systemd-services-reacting-change
[4]:https://www.linux.com/blog/learn/intro-to-linux/2018/6/systemd-services-monitoring-files-and-directories
[5]:https://www.minetest.net/
diff --git a/translated/tech/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md b/published/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
similarity index 69%
rename from translated/tech/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
rename to published/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
index 898955242a..a34c575261 100644
--- a/translated/tech/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
+++ b/published/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
@@ -1,4 +1,4 @@
-Flameshot – 一个简洁但功能丰富的截图工具
+Flameshot:一个简洁但功能丰富的截图工具
======

@@ -10,11 +10,13 @@ Flameshot – 一个简洁但功能丰富的截图工具
**在 Arch Linux 上:**
Flameshot 可以从 Arch LInux 的 [community] 仓库中获取。确保你已经启用了 community 仓库,然后就可以像下面展示的那样使用 pacman 来安装 Flameshot :
+
```
$ sudo pacman -S flameshot
```
它也可以从 [**AUR**][1] 中获取,所以你还可以使用任意一个 AUR 帮助程序(例如 [**Yay**][2])来在基于 Arch 的系统中安装它:
+
```
$ yay -S flameshot-git
```
@@ -26,6 +28,7 @@ $ sudo dnf install flameshot
```
在 **Debian 10+** 和 **Ubuntu 18.04+** 中,可以使用 APT 包管理器来安装它:
+
```
$ sudo apt install flameshot
```
@@ -35,97 +38,105 @@ $ sudo apt install flameshot
```
$ sudo zypper install flameshot
```
+
在其他的 Linux 发行版中,可以从源代码编译并安装它。编译过程中需要 **Qt version 5.3** 以及 **GCC 4.9.2** 或者它们的更高版本。
### 使用
-可以从菜单或者应用启动器中启动 Flameshot。在 MATE 桌面环境,它通常可以在 **Applications - > Graphics** 下找到。
+可以从菜单或者应用启动器中启动 Flameshot。在 MATE 桌面环境,它通常可以在 “Applications -> Graphics” 下找到。
一旦打开了它,你就可以在系统面板中看到 Flameshot 的托盘图标。
**注意:**
-假如你使用 Gnome 桌面环境,为了能够看到系统托盘图标,你需要安装 [TopIcons][3] 扩展。
+假如你使用 Gnome 桌面环境,为了能够看到系统托盘图标,你需要安装 [TopIcons][3] 扩展。
在 Flameshot 托盘图标上右击,你便会看到几个菜单项,例如打开配置窗口、信息窗口以及退出该应用。
-要进行截图,只需要点击托盘图标就可以了。接着你将看到如何使用 Flameshot 的帮助窗口。选择一个截图区域,然后敲 **ENTER** 键便可以截屏了,点击右键便可以看到颜色拾取器,再敲空格键便可以查看屏幕侧边的面板。你可以使用鼠标的滚轮来增加或者减少指针的宽度。
+要进行截图,只需要点击托盘图标就可以了。接着你将看到如何使用 Flameshot 的帮助窗口。选择一个截图区域,然后敲回车键便可以截屏了,点击右键便可以看到颜色拾取器,再敲空格键便可以查看屏幕侧边的面板。你可以使用鼠标的滚轮来增加或者减少指针的宽度。
Flameshot 自带一系列非常好的功能,例如:
- * 可以进行手写
- * 可以划直线
- * 可以画长方形或者圆形框
- * 可以进行长方形区域选择
- * 可以画箭头
- * 可以对要点进行标注
- * 可以添加文本
- * 可以对图片或者文字进行模糊处理
- * 可以展示图片的尺寸大小
- * 在编辑图片是可以进行撤销和重做操作
- * 可以将选择的东西复制到剪贴板
- * 可以保存选择
- * 可以离开截屏
- * 可以选择另一个 app 来打开图片
- * 可以上传图片到 imgur 网站
- * 可以将图片固定到桌面上
+* 可以进行手写
+* 可以划直线
+* 可以画长方形或者圆形框
+* 可以进行长方形区域选择
+* 可以画箭头
+* 可以对要点进行标注
+* 可以添加文本
+* 可以对图片或者文字进行模糊处理
+* 可以展示图片的尺寸大小
+* 在编辑图片是可以进行撤销和重做操作
+* 可以将选择的东西复制到剪贴板
+* 可以保存选区
+* 可以离开截屏
+* 可以选择另一个 app 来打开图片
+* 可以上传图片到 imgur 网站
+* 可以将图片固定到桌面上
下面是一个示例的视频:
-**快捷键**
+### 快捷键
-Frameshot 也支持快捷键。在 Flameshot 的托盘图标上右击并点击 **Information** 窗口便可以看到在 GUI 模式下所有可用的快捷键。下面是在 GUI 模式下可用的快捷键清单:
+Frameshot 也支持快捷键。在 Flameshot 的托盘图标上右击并点击 “Information” 窗口便可以看到在 GUI 模式下所有可用的快捷键。下面是在 GUI 模式下可用的快捷键清单:
| 快捷键 | 描述 |
|------------------------|------------------------------|
-| ←, ↓, ↑, → | 移动选择区域 1px |
-| Shift + ←, ↓, ↑, → | 将选择区域大小更改 1px |
-| Esc | 退出截图 |
-| Ctrl + C | 复制到粘贴板 |
-| Ctrl + S | 将选择区域保存为文件 |
-| Ctrl + Z | 撤销最近的一次操作 |
-| Right Click | 展示颜色拾取器 |
-| Mouse Wheel | 改变工具的宽度 |
+| `←`、`↓`、`↑`、`→` | 移动选择区域 1px |
+| `Shift` + `←`、`↓`、`↑`、`→` | 将选择区域大小更改 1px |
+| `Esc` | 退出截图 |
+| `Ctrl` + `C` | 复制到粘贴板 |
+| `Ctrl` + `S` | 将选择区域保存为文件 |
+| `Ctrl` + `Z` | 撤销最近的一次操作 |
+| 鼠标右键 | 展示颜色拾取器 |
+| 鼠标滚轮 | 改变工具的宽度 |
-边按住 Shift 键并拖动选择区域的其中一个控制点将会对它相反方向的控制点做类似的拖放操作。
+边按住 `Shift` 键并拖动选择区域的其中一个控制点将会对它相反方向的控制点做类似的拖放操作。
-**命令行选项**
+### 命令行选项
Flameshot 也支持一系列的命令行选项来延时截图和保存图片到自定义的路径。
要使用 Flameshot GUI 模式,运行:
+
```
$ flameshot gui
```
要使用 GUI 模式截屏并将你选取的区域保存到一个自定义的路径,运行:
+
```
$ flameshot gui -p ~/myStuff/captures
```
要延时 2 秒后打开 GUI 模式可以使用:
+
```
$ flameshot gui -d 2000
```
要延时 2 秒并将截图保存到一个自定义的路径(无 GUI)可以使用:
+
```
$ flameshot full -p ~/myStuff/captures -d 2000
```
要截图全屏并保存到自定义的路径和粘贴板中使用:
+
```
$ flameshot full -c -p ~/myStuff/captures
```
-要在截屏中包含鼠标并将图片保存为 **PNG** 格式可以使用:
+要在截屏中包含鼠标并将图片保存为 PNG 格式可以使用:
+
```
$ flameshot screen -r
```
要对屏幕 1 进行截屏并将截屏复制到粘贴板中可以运行:
+
```
$ flameshot screen -n 1 -c
```
@@ -143,7 +154,7 @@ via: https://www.ostechnix.com/flameshot-a-simple-yet-powerful-feature-rich-scre
作者:[SK][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[FSSlc](https://github.com/FSSlc)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20140607 Five things that make Go fast.md b/published/201810/20140607 Five things that make Go fast.md
similarity index 100%
rename from published/20140607 Five things that make Go fast.md
rename to published/201810/20140607 Five things that make Go fast.md
diff --git a/published/20161014 Compiling Lisp to JavaScript From Scratch in 350 LOC.md b/published/201810/20161014 Compiling Lisp to JavaScript From Scratch in 350 LOC.md
similarity index 100%
rename from published/20161014 Compiling Lisp to JavaScript From Scratch in 350 LOC.md
rename to published/201810/20161014 Compiling Lisp to JavaScript From Scratch in 350 LOC.md
diff --git a/published/20170810 How we built our first full-stack JavaScript web app in three weeks.md b/published/201810/20170810 How we built our first full-stack JavaScript web app in three weeks.md
similarity index 100%
rename from published/20170810 How we built our first full-stack JavaScript web app in three weeks.md
rename to published/201810/20170810 How we built our first full-stack JavaScript web app in three weeks.md
diff --git a/published/20170926 Managing users on Linux systems.md b/published/201810/20170926 Managing users on Linux systems.md
similarity index 100%
rename from published/20170926 Managing users on Linux systems.md
rename to published/201810/20170926 Managing users on Linux systems.md
diff --git a/published/20171022 Review- Algorithms to Live By by Brian Christian - Tom Griffiths.md b/published/201810/20171022 Review- Algorithms to Live By by Brian Christian - Tom Griffiths.md
similarity index 100%
rename from published/20171022 Review- Algorithms to Live By by Brian Christian - Tom Griffiths.md
rename to published/201810/20171022 Review- Algorithms to Live By by Brian Christian - Tom Griffiths.md
diff --git a/published/20171129 How to Install and Use Wireshark on Debian and Ubuntu 16.04_17.10.md b/published/201810/20171129 How to Install and Use Wireshark on Debian and Ubuntu 16.04_17.10.md
similarity index 100%
rename from published/20171129 How to Install and Use Wireshark on Debian and Ubuntu 16.04_17.10.md
rename to published/201810/20171129 How to Install and Use Wireshark on Debian and Ubuntu 16.04_17.10.md
diff --git a/published/20171204 Improve your Bash scripts with Argbash.md b/published/201810/20171204 Improve your Bash scripts with Argbash.md
similarity index 100%
rename from published/20171204 Improve your Bash scripts with Argbash.md
rename to published/201810/20171204 Improve your Bash scripts with Argbash.md
diff --git a/published/20171208 24 Must Have Essential Linux Applications In 2017.md b/published/201810/20171208 24 Must Have Essential Linux Applications In 2017.md
similarity index 100%
rename from published/20171208 24 Must Have Essential Linux Applications In 2017.md
rename to published/201810/20171208 24 Must Have Essential Linux Applications In 2017.md
diff --git a/published/20171214 Peeking into your Linux packages.md b/published/201810/20171214 Peeking into your Linux packages.md
similarity index 100%
rename from published/20171214 Peeking into your Linux packages.md
rename to published/201810/20171214 Peeking into your Linux packages.md
diff --git a/published/20180105 The Best Linux Distributions for 2018.md b/published/201810/20180105 The Best Linux Distributions for 2018.md
similarity index 100%
rename from published/20180105 The Best Linux Distributions for 2018.md
rename to published/201810/20180105 The Best Linux Distributions for 2018.md
diff --git a/published/20180117 How to get into DevOps.md b/published/201810/20180117 How to get into DevOps.md
similarity index 100%
rename from published/20180117 How to get into DevOps.md
rename to published/201810/20180117 How to get into DevOps.md
diff --git a/published/20180123 Moving to Linux from dated Windows machines.md b/published/201810/20180123 Moving to Linux from dated Windows machines.md
similarity index 100%
rename from published/20180123 Moving to Linux from dated Windows machines.md
rename to published/201810/20180123 Moving to Linux from dated Windows machines.md
diff --git a/published/20180201 Conditional Rendering in React using Ternaries and.md b/published/201810/20180201 Conditional Rendering in React using Ternaries and.md
similarity index 100%
rename from published/20180201 Conditional Rendering in React using Ternaries and.md
rename to published/201810/20180201 Conditional Rendering in React using Ternaries and.md
diff --git a/published/20180201 Rock Solid React.js Foundations A Beginners Guide.md b/published/201810/20180201 Rock Solid React.js Foundations A Beginners Guide.md
similarity index 100%
rename from published/20180201 Rock Solid React.js Foundations A Beginners Guide.md
rename to published/201810/20180201 Rock Solid React.js Foundations A Beginners Guide.md
diff --git a/published/20180329 How to configure multiple websites with Apache web server.md b/published/201810/20180329 How to configure multiple websites with Apache web server.md
similarity index 100%
rename from published/20180329 How to configure multiple websites with Apache web server.md
rename to published/201810/20180329 How to configure multiple websites with Apache web server.md
diff --git a/published/20180412 A Desktop GUI Application For NPM.md b/published/201810/20180412 A Desktop GUI Application For NPM.md
similarity index 100%
rename from published/20180412 A Desktop GUI Application For NPM.md
rename to published/201810/20180412 A Desktop GUI Application For NPM.md
diff --git a/published/20180413 The df Command Tutorial With Examples For Beginners.md b/published/201810/20180413 The df Command Tutorial With Examples For Beginners.md
similarity index 100%
rename from published/20180413 The df Command Tutorial With Examples For Beginners.md
rename to published/201810/20180413 The df Command Tutorial With Examples For Beginners.md
diff --git a/published/20180522 Free Resources for Securing Your Open Source Code.md b/published/201810/20180522 Free Resources for Securing Your Open Source Code.md
similarity index 100%
rename from published/20180522 Free Resources for Securing Your Open Source Code.md
rename to published/201810/20180522 Free Resources for Securing Your Open Source Code.md
diff --git a/published/20180528 What is behavior-driven Python.md b/published/201810/20180528 What is behavior-driven Python.md
similarity index 100%
rename from published/20180528 What is behavior-driven Python.md
rename to published/201810/20180528 What is behavior-driven Python.md
diff --git a/published/20180531 How to create shortcuts in vi.md b/published/201810/20180531 How to create shortcuts in vi.md
similarity index 100%
rename from published/20180531 How to create shortcuts in vi.md
rename to published/201810/20180531 How to create shortcuts in vi.md
diff --git a/published/20180601 Download an OS with GNOME Boxes.md b/published/201810/20180601 Download an OS with GNOME Boxes.md
similarity index 100%
rename from published/20180601 Download an OS with GNOME Boxes.md
rename to published/201810/20180601 Download an OS with GNOME Boxes.md
diff --git a/published/20180615 How To Rename Multiple Files At Once In Linux.md b/published/201810/20180615 How To Rename Multiple Files At Once In Linux.md
similarity index 100%
rename from published/20180615 How To Rename Multiple Files At Once In Linux.md
rename to published/201810/20180615 How To Rename Multiple Files At Once In Linux.md
diff --git a/published/20180703 Install Oracle VirtualBox On Ubuntu 18.04 LTS Headless Server.md b/published/201810/20180703 Install Oracle VirtualBox On Ubuntu 18.04 LTS Headless Server.md
similarity index 100%
rename from published/20180703 Install Oracle VirtualBox On Ubuntu 18.04 LTS Headless Server.md
rename to published/201810/20180703 Install Oracle VirtualBox On Ubuntu 18.04 LTS Headless Server.md
diff --git a/published/20180704 Setup Headless Virtualization Server Using KVM In Ubuntu 18.04 LTS.md b/published/201810/20180704 Setup Headless Virtualization Server Using KVM In Ubuntu 18.04 LTS.md
similarity index 100%
rename from published/20180704 Setup Headless Virtualization Server Using KVM In Ubuntu 18.04 LTS.md
rename to published/201810/20180704 Setup Headless Virtualization Server Using KVM In Ubuntu 18.04 LTS.md
diff --git a/published/20180709 How To Configure SSH Key-based Authentication In Linux.md b/published/201810/20180709 How To Configure SSH Key-based Authentication In Linux.md
similarity index 100%
rename from published/20180709 How To Configure SSH Key-based Authentication In Linux.md
rename to published/201810/20180709 How To Configure SSH Key-based Authentication In Linux.md
diff --git a/published/20180715 Why is Python so slow.md b/published/201810/20180715 Why is Python so slow.md
similarity index 100%
rename from published/20180715 Why is Python so slow.md
rename to published/201810/20180715 Why is Python so slow.md
diff --git a/published/20180724 75 Most Used Essential Linux Applications of 2018.md b/published/201810/20180724 75 Most Used Essential Linux Applications of 2018.md
similarity index 100%
rename from published/20180724 75 Most Used Essential Linux Applications of 2018.md
rename to published/201810/20180724 75 Most Used Essential Linux Applications of 2018.md
diff --git a/published/20180724 Building a network attached storage device with a Raspberry Pi.md b/published/201810/20180724 Building a network attached storage device with a Raspberry Pi.md
similarity index 100%
rename from published/20180724 Building a network attached storage device with a Raspberry Pi.md
rename to published/201810/20180724 Building a network attached storage device with a Raspberry Pi.md
diff --git a/published/20180803 5 Essential Tools for Linux Development.md b/published/201810/20180803 5 Essential Tools for Linux Development.md
similarity index 100%
rename from published/20180803 5 Essential Tools for Linux Development.md
rename to published/201810/20180803 5 Essential Tools for Linux Development.md
diff --git a/published/20180810 How To Remove Or Disable Ubuntu Dock.md b/published/201810/20180810 How To Remove Or Disable Ubuntu Dock.md
similarity index 100%
rename from published/20180810 How To Remove Or Disable Ubuntu Dock.md
rename to published/201810/20180810 How To Remove Or Disable Ubuntu Dock.md
diff --git a/published/20180813 5 of the Best Linux Educational Software and Games for Kids.md b/published/201810/20180813 5 of the Best Linux Educational Software and Games for Kids.md
similarity index 100%
rename from published/20180813 5 of the Best Linux Educational Software and Games for Kids.md
rename to published/201810/20180813 5 of the Best Linux Educational Software and Games for Kids.md
diff --git a/published/20180814 Automating backups on a Raspberry Pi NAS.md b/published/201810/20180814 Automating backups on a Raspberry Pi NAS.md
similarity index 100%
rename from published/20180814 Automating backups on a Raspberry Pi NAS.md
rename to published/201810/20180814 Automating backups on a Raspberry Pi NAS.md
diff --git a/published/20180815 How to Create M3U Playlists in Linux [Quick Tip].md b/published/201810/20180815 How to Create M3U Playlists in Linux [Quick Tip].md
similarity index 100%
rename from published/20180815 How to Create M3U Playlists in Linux [Quick Tip].md
rename to published/201810/20180815 How to Create M3U Playlists in Linux [Quick Tip].md
diff --git a/published/20180816 Add YouTube Player Controls To Your Linux Desktop With browser-mpris2 (Chrome Extension).md b/published/201810/20180816 Add YouTube Player Controls To Your Linux Desktop With browser-mpris2 (Chrome Extension).md
similarity index 100%
rename from published/20180816 Add YouTube Player Controls To Your Linux Desktop With browser-mpris2 (Chrome Extension).md
rename to published/201810/20180816 Add YouTube Player Controls To Your Linux Desktop With browser-mpris2 (Chrome Extension).md
diff --git a/published/20180817 How To Lock The Keyboard And Mouse, But Not The Screen In Linux.md b/published/201810/20180817 How To Lock The Keyboard And Mouse, But Not The Screen In Linux.md
similarity index 100%
rename from published/20180817 How To Lock The Keyboard And Mouse, But Not The Screen In Linux.md
rename to published/201810/20180817 How To Lock The Keyboard And Mouse, But Not The Screen In Linux.md
diff --git a/published/20180821 A checklist for submitting your first Linux kernel patch.md b/published/201810/20180821 A checklist for submitting your first Linux kernel patch.md
similarity index 100%
rename from published/20180821 A checklist for submitting your first Linux kernel patch.md
rename to published/201810/20180821 A checklist for submitting your first Linux kernel patch.md
diff --git a/published/20180823 CLI- improved.md b/published/201810/20180823 CLI- improved.md
similarity index 100%
rename from published/20180823 CLI- improved.md
rename to published/201810/20180823 CLI- improved.md
diff --git a/published/20180823 How To Easily And Safely Manage Cron Jobs In Linux.md b/published/201810/20180823 How To Easily And Safely Manage Cron Jobs In Linux.md
similarity index 100%
rename from published/20180823 How To Easily And Safely Manage Cron Jobs In Linux.md
rename to published/201810/20180823 How To Easily And Safely Manage Cron Jobs In Linux.md
diff --git a/published/20180824 5 cool music player apps.md b/published/201810/20180824 5 cool music player apps.md
similarity index 100%
rename from published/20180824 5 cool music player apps.md
rename to published/201810/20180824 5 cool music player apps.md
diff --git a/published/20180824 What Stable Kernel Should I Use.md b/published/201810/20180824 What Stable Kernel Should I Use.md
similarity index 100%
rename from published/20180824 What Stable Kernel Should I Use.md
rename to published/201810/20180824 What Stable Kernel Should I Use.md
diff --git a/published/20180827 4 tips for better tmux sessions.md b/published/201810/20180827 4 tips for better tmux sessions.md
similarity index 100%
rename from published/20180827 4 tips for better tmux sessions.md
rename to published/201810/20180827 4 tips for better tmux sessions.md
diff --git a/published/20180827 A sysadmin-s guide to containers.md b/published/201810/20180827 A sysadmin-s guide to containers.md
similarity index 100%
rename from published/20180827 A sysadmin-s guide to containers.md
rename to published/201810/20180827 A sysadmin-s guide to containers.md
diff --git a/published/20180827 Solve -error- failed to commit transaction (conflicting files)- In Arch Linux.md b/published/201810/20180827 Solve -error- failed to commit transaction (conflicting files)- In Arch Linux.md
similarity index 100%
rename from published/20180827 Solve -error- failed to commit transaction (conflicting files)- In Arch Linux.md
rename to published/201810/20180827 Solve -error- failed to commit transaction (conflicting files)- In Arch Linux.md
diff --git a/published/20180830 6 places to host your git repository.md b/published/201810/20180830 6 places to host your git repository.md
similarity index 100%
rename from published/20180830 6 places to host your git repository.md
rename to published/201810/20180830 6 places to host your git repository.md
diff --git a/published/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md b/published/201810/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md
similarity index 100%
rename from published/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md
rename to published/201810/20180901 5 Ways to Take Screenshot in Linux GUI and Terminal.md
diff --git a/published/201810/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md b/published/201810/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
new file mode 100644
index 0000000000..a34c575261
--- /dev/null
+++ b/published/201810/20180901 Flameshot - A Simple, Yet Powerful Feature-rich Screenshot Tool.md
@@ -0,0 +1,164 @@
+Flameshot:一个简洁但功能丰富的截图工具
+======
+
+
+
+截图是我工作的一部分,我先前使用深度截图工具来截图,深度截图是一个简单、轻量级且非常简洁的截图工具。它自带许多功能例如窗口识别、快捷键支持、图片编辑、延时截图、社交分享、智能存储以及图片清晰度调整等功能。今天我碰巧发现了另一个具备多种功能的截图工具,它就是 **Flameshot** ,一个简单但功能丰富的针对类 Unix 系统的截图工具。它简单易用,可定制并且有选项可以支持上传截图到在线图片分享网站 **imgur** 上。同时 Flameshot 有一个 CLI 版本,所以你也可以从命令行来进行截图。Flameshot 是一个完全免费且开源的工具。在本教程中,我们将看到如何安装 Flameshot 以及如何使用它来截图。
+
+### 安装 Flameshot
+
+**在 Arch Linux 上:**
+
+Flameshot 可以从 Arch LInux 的 [community] 仓库中获取。确保你已经启用了 community 仓库,然后就可以像下面展示的那样使用 pacman 来安装 Flameshot :
+
+```
+$ sudo pacman -S flameshot
+```
+
+它也可以从 [**AUR**][1] 中获取,所以你还可以使用任意一个 AUR 帮助程序(例如 [**Yay**][2])来在基于 Arch 的系统中安装它:
+
+```
+$ yay -S flameshot-git
+```
+
+**在 Fedora 中:**
+
+```
+$ sudo dnf install flameshot
+```
+
+在 **Debian 10+** 和 **Ubuntu 18.04+** 中,可以使用 APT 包管理器来安装它:
+
+```
+$ sudo apt install flameshot
+```
+
+**在 openSUSE 上:**
+
+```
+$ sudo zypper install flameshot
+```
+
+在其他的 Linux 发行版中,可以从源代码编译并安装它。编译过程中需要 **Qt version 5.3** 以及 **GCC 4.9.2** 或者它们的更高版本。
+
+### 使用
+
+可以从菜单或者应用启动器中启动 Flameshot。在 MATE 桌面环境,它通常可以在 “Applications -> Graphics” 下找到。
+
+一旦打开了它,你就可以在系统面板中看到 Flameshot 的托盘图标。
+
+**注意:**
+
+假如你使用 Gnome 桌面环境,为了能够看到系统托盘图标,你需要安装 [TopIcons][3] 扩展。
+
+在 Flameshot 托盘图标上右击,你便会看到几个菜单项,例如打开配置窗口、信息窗口以及退出该应用。
+
+要进行截图,只需要点击托盘图标就可以了。接着你将看到如何使用 Flameshot 的帮助窗口。选择一个截图区域,然后敲回车键便可以截屏了,点击右键便可以看到颜色拾取器,再敲空格键便可以查看屏幕侧边的面板。你可以使用鼠标的滚轮来增加或者减少指针的宽度。
+
+Flameshot 自带一系列非常好的功能,例如:
+
+* 可以进行手写
+* 可以划直线
+* 可以画长方形或者圆形框
+* 可以进行长方形区域选择
+* 可以画箭头
+* 可以对要点进行标注
+* 可以添加文本
+* 可以对图片或者文字进行模糊处理
+* 可以展示图片的尺寸大小
+* 在编辑图片是可以进行撤销和重做操作
+* 可以将选择的东西复制到剪贴板
+* 可以保存选区
+* 可以离开截屏
+* 可以选择另一个 app 来打开图片
+* 可以上传图片到 imgur 网站
+* 可以将图片固定到桌面上
+
+下面是一个示例的视频:
+
+
+
+### 快捷键
+
+Frameshot 也支持快捷键。在 Flameshot 的托盘图标上右击并点击 “Information” 窗口便可以看到在 GUI 模式下所有可用的快捷键。下面是在 GUI 模式下可用的快捷键清单:
+
+| 快捷键 | 描述 |
+|------------------------|------------------------------|
+| `←`、`↓`、`↑`、`→` | 移动选择区域 1px |
+| `Shift` + `←`、`↓`、`↑`、`→` | 将选择区域大小更改 1px |
+| `Esc` | 退出截图 |
+| `Ctrl` + `C` | 复制到粘贴板 |
+| `Ctrl` + `S` | 将选择区域保存为文件 |
+| `Ctrl` + `Z` | 撤销最近的一次操作 |
+| 鼠标右键 | 展示颜色拾取器 |
+| 鼠标滚轮 | 改变工具的宽度 |
+
+边按住 `Shift` 键并拖动选择区域的其中一个控制点将会对它相反方向的控制点做类似的拖放操作。
+
+### 命令行选项
+
+Flameshot 也支持一系列的命令行选项来延时截图和保存图片到自定义的路径。
+
+要使用 Flameshot GUI 模式,运行:
+
+```
+$ flameshot gui
+```
+
+要使用 GUI 模式截屏并将你选取的区域保存到一个自定义的路径,运行:
+
+```
+$ flameshot gui -p ~/myStuff/captures
+```
+
+要延时 2 秒后打开 GUI 模式可以使用:
+
+```
+$ flameshot gui -d 2000
+```
+
+要延时 2 秒并将截图保存到一个自定义的路径(无 GUI)可以使用:
+
+```
+$ flameshot full -p ~/myStuff/captures -d 2000
+```
+
+要截图全屏并保存到自定义的路径和粘贴板中使用:
+
+```
+$ flameshot full -c -p ~/myStuff/captures
+```
+
+要在截屏中包含鼠标并将图片保存为 PNG 格式可以使用:
+
+```
+$ flameshot screen -r
+```
+
+要对屏幕 1 进行截屏并将截屏复制到粘贴板中可以运行:
+
+```
+$ flameshot screen -n 1 -c
+```
+
+你还需要什么功能呢?Flameshot 拥有几乎截屏的所有功能:添加注释、编辑图片、模糊处理或者对要点做高亮等等功能。我想:在我找到它的最佳替代品之前,我将一直使用 Flameshot 来作为我当前的截图工具。请尝试一下它,你不会失望的。
+
+好了,这就是今天的全部内容了。后续将有更多精彩内容,请保持关注!
+
+Cheers!
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/flameshot-a-simple-yet-powerful-feature-rich-screenshot-tool/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[FSSlc](https://github.com/FSSlc)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
+[1]: https://aur.archlinux.org/packages/flameshot-git
+[2]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
+[3]: https://extensions.gnome.org/extension/1031/topicons/
diff --git a/published/20180906 How To Limit Network Bandwidth In Linux Using Wondershaper.md b/published/201810/20180906 How To Limit Network Bandwidth In Linux Using Wondershaper.md
similarity index 100%
rename from published/20180906 How To Limit Network Bandwidth In Linux Using Wondershaper.md
rename to published/201810/20180906 How To Limit Network Bandwidth In Linux Using Wondershaper.md
diff --git a/published/20180907 How to Use the Netplan Network Configuration Tool on Linux.md b/published/201810/20180907 How to Use the Netplan Network Configuration Tool on Linux.md
similarity index 100%
rename from published/20180907 How to Use the Netplan Network Configuration Tool on Linux.md
rename to published/201810/20180907 How to Use the Netplan Network Configuration Tool on Linux.md
diff --git a/published/20180910 How To List An Available Package Groups In Linux.md b/published/201810/20180910 How To List An Available Package Groups In Linux.md
similarity index 100%
rename from published/20180910 How To List An Available Package Groups In Linux.md
rename to published/201810/20180910 How To List An Available Package Groups In Linux.md
diff --git a/published/20180912 How to build rpm packages.md b/published/201810/20180912 How to build rpm packages.md
similarity index 100%
rename from published/20180912 How to build rpm packages.md
rename to published/201810/20180912 How to build rpm packages.md
diff --git a/published/20180913 ScreenCloud- The Screenshot-- App.md b/published/201810/20180913 ScreenCloud- The Screenshot-- App.md
similarity index 100%
rename from published/20180913 ScreenCloud- The Screenshot-- App.md
rename to published/201810/20180913 ScreenCloud- The Screenshot-- App.md
diff --git a/published/20180915 Backup Installed Packages And Restore Them On Freshly Installed Ubuntu.md b/published/201810/20180915 Backup Installed Packages And Restore Them On Freshly Installed Ubuntu.md
similarity index 100%
rename from published/20180915 Backup Installed Packages And Restore Them On Freshly Installed Ubuntu.md
rename to published/201810/20180915 Backup Installed Packages And Restore Them On Freshly Installed Ubuntu.md
diff --git a/published/20180915 Linux vs Mac- 7 Reasons Why Linux is a Better Choice than Mac.md b/published/201810/20180915 Linux vs Mac- 7 Reasons Why Linux is a Better Choice than Mac.md
similarity index 100%
rename from published/20180915 Linux vs Mac- 7 Reasons Why Linux is a Better Choice than Mac.md
rename to published/201810/20180915 Linux vs Mac- 7 Reasons Why Linux is a Better Choice than Mac.md
diff --git a/published/20180917 4 scanning tools for the Linux desktop.md b/published/201810/20180917 4 scanning tools for the Linux desktop.md
similarity index 100%
rename from published/20180917 4 scanning tools for the Linux desktop.md
rename to published/201810/20180917 4 scanning tools for the Linux desktop.md
diff --git a/published/20180917 Getting started with openmediavault- A home NAS solution.md b/published/201810/20180917 Getting started with openmediavault- A home NAS solution.md
similarity index 100%
rename from published/20180917 Getting started with openmediavault- A home NAS solution.md
rename to published/201810/20180917 Getting started with openmediavault- A home NAS solution.md
diff --git a/published/20180918 Linux firewalls- What you need to know about iptables and firewalld.md b/published/201810/20180918 Linux firewalls- What you need to know about iptables and firewalld.md
similarity index 100%
rename from published/20180918 Linux firewalls- What you need to know about iptables and firewalld.md
rename to published/201810/20180918 Linux firewalls- What you need to know about iptables and firewalld.md
diff --git a/published/20180918 Top 3 Python libraries for data science.md b/published/201810/20180918 Top 3 Python libraries for data science.md
similarity index 100%
rename from published/20180918 Top 3 Python libraries for data science.md
rename to published/201810/20180918 Top 3 Python libraries for data science.md
diff --git a/published/20180919 Host your own cloud with Raspberry Pi NAS.md b/published/201810/20180919 Host your own cloud with Raspberry Pi NAS.md
similarity index 100%
rename from published/20180919 Host your own cloud with Raspberry Pi NAS.md
rename to published/201810/20180919 Host your own cloud with Raspberry Pi NAS.md
diff --git a/published/20180919 How Writing Can Expand Your Skills and Grow Your Career.md b/published/201810/20180919 How Writing Can Expand Your Skills and Grow Your Career.md
similarity index 100%
rename from published/20180919 How Writing Can Expand Your Skills and Grow Your Career.md
rename to published/201810/20180919 How Writing Can Expand Your Skills and Grow Your Career.md
diff --git a/published/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md b/published/201810/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md
similarity index 100%
rename from published/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md
rename to published/201810/20180919 Linux Has a Code of Conduct and Not Everyone is Happy With it.md
diff --git a/published/20180920 8 Python packages that will simplify your life with Django.md b/published/201810/20180920 8 Python packages that will simplify your life with Django.md
similarity index 100%
rename from published/20180920 8 Python packages that will simplify your life with Django.md
rename to published/201810/20180920 8 Python packages that will simplify your life with Django.md
diff --git a/published/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md b/published/201810/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md
similarity index 100%
rename from published/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md
rename to published/201810/20180920 WinWorld - A Large Collection Of Defunct OSs, Software And Games.md
diff --git a/published/20180921 Clinews - Read News And Latest Headlines From Commandline.md b/published/201810/20180921 Clinews - Read News And Latest Headlines From Commandline.md
similarity index 100%
rename from published/20180921 Clinews - Read News And Latest Headlines From Commandline.md
rename to published/201810/20180921 Clinews - Read News And Latest Headlines From Commandline.md
diff --git a/published/20180921 Control your data with Syncthing- An open source synchronization tool.md b/published/201810/20180921 Control your data with Syncthing- An open source synchronization tool.md
similarity index 100%
rename from published/20180921 Control your data with Syncthing- An open source synchronization tool.md
rename to published/201810/20180921 Control your data with Syncthing- An open source synchronization tool.md
diff --git a/published/20180924 A Simple, Beautiful And Cross-platform Podcast App.md b/published/201810/20180924 A Simple, Beautiful And Cross-platform Podcast App.md
similarity index 100%
rename from published/20180924 A Simple, Beautiful And Cross-platform Podcast App.md
rename to published/201810/20180924 A Simple, Beautiful And Cross-platform Podcast App.md
diff --git a/published/20180924 How To Find Out Which Port Number A Process Is Using In Linux.md b/published/201810/20180924 How To Find Out Which Port Number A Process Is Using In Linux.md
similarity index 100%
rename from published/20180924 How To Find Out Which Port Number A Process Is Using In Linux.md
rename to published/201810/20180924 How To Find Out Which Port Number A Process Is Using In Linux.md
diff --git a/published/20180924 Why Linux users should try Rust.md b/published/201810/20180924 Why Linux users should try Rust.md
similarity index 100%
rename from published/20180924 Why Linux users should try Rust.md
rename to published/201810/20180924 Why Linux users should try Rust.md
diff --git a/published/20180925 Hegemon - A Modular System Monitor Application Written In Rust.md b/published/201810/20180925 Hegemon - A Modular System Monitor Application Written In Rust.md
similarity index 100%
rename from published/20180925 Hegemon - A Modular System Monitor Application Written In Rust.md
rename to published/201810/20180925 Hegemon - A Modular System Monitor Application Written In Rust.md
diff --git a/published/20180925 How to Boot Ubuntu 18.04 - Debian 9 Server in Rescue (Single User mode) - Emergency Mode.md b/published/201810/20180925 How to Boot Ubuntu 18.04 - Debian 9 Server in Rescue (Single User mode) - Emergency Mode.md
similarity index 100%
rename from published/20180925 How to Boot Ubuntu 18.04 - Debian 9 Server in Rescue (Single User mode) - Emergency Mode.md
rename to published/201810/20180925 How to Boot Ubuntu 18.04 - Debian 9 Server in Rescue (Single User mode) - Emergency Mode.md
diff --git a/published/20180925 How to Replace one Linux Distro With Another in Dual Boot -Guide.md b/published/201810/20180925 How to Replace one Linux Distro With Another in Dual Boot -Guide.md
similarity index 100%
rename from published/20180925 How to Replace one Linux Distro With Another in Dual Boot -Guide.md
rename to published/201810/20180925 How to Replace one Linux Distro With Another in Dual Boot -Guide.md
diff --git a/published/20180926 3 open source distributed tracing tools.md b/published/201810/20180926 3 open source distributed tracing tools.md
similarity index 100%
rename from published/20180926 3 open source distributed tracing tools.md
rename to published/201810/20180926 3 open source distributed tracing tools.md
diff --git a/published/20180926 An introduction to swap space on Linux systems.md b/published/201810/20180926 An introduction to swap space on Linux systems.md
similarity index 100%
rename from published/20180926 An introduction to swap space on Linux systems.md
rename to published/201810/20180926 An introduction to swap space on Linux systems.md
diff --git a/published/20180926 CPU Power Manager - Control And Manage CPU Frequency In Linux.md b/published/201810/20180926 CPU Power Manager - Control And Manage CPU Frequency In Linux.md
similarity index 100%
rename from published/20180926 CPU Power Manager - Control And Manage CPU Frequency In Linux.md
rename to published/201810/20180926 CPU Power Manager - Control And Manage CPU Frequency In Linux.md
diff --git a/published/20180926 How to use the Scikit-learn Python library for data science projects.md b/published/201810/20180926 How to use the Scikit-learn Python library for data science projects.md
similarity index 100%
rename from published/20180926 How to use the Scikit-learn Python library for data science projects.md
rename to published/201810/20180926 How to use the Scikit-learn Python library for data science projects.md
diff --git a/published/20180927 5 cool tiling window managers.md b/published/201810/20180927 5 cool tiling window managers.md
similarity index 100%
rename from published/20180927 5 cool tiling window managers.md
rename to published/201810/20180927 5 cool tiling window managers.md
diff --git a/published/20180927 How To Find And Delete Duplicate Files In Linux.md b/published/201810/20180927 How To Find And Delete Duplicate Files In Linux.md
similarity index 100%
rename from published/20180927 How To Find And Delete Duplicate Files In Linux.md
rename to published/201810/20180927 How To Find And Delete Duplicate Files In Linux.md
diff --git a/published/20180927 How to Use RAR files in Ubuntu Linux.md b/published/201810/20180927 How to Use RAR files in Ubuntu Linux.md
similarity index 100%
rename from published/20180927 How to Use RAR files in Ubuntu Linux.md
rename to published/201810/20180927 How to Use RAR files in Ubuntu Linux.md
diff --git a/published/20180928 10 handy Bash aliases for Linux.md b/published/201810/20180928 10 handy Bash aliases for Linux.md
similarity index 100%
rename from published/20180928 10 handy Bash aliases for Linux.md
rename to published/201810/20180928 10 handy Bash aliases for Linux.md
diff --git a/published/20180928 A Free And Secure Online PDF Conversion Suite.md b/published/201810/20180928 A Free And Secure Online PDF Conversion Suite.md
similarity index 100%
rename from published/20180928 A Free And Secure Online PDF Conversion Suite.md
rename to published/201810/20180928 A Free And Secure Online PDF Conversion Suite.md
diff --git a/published/20180928 How to Install Popcorn Time on Ubuntu 18.04 and Other Linux Distributions.md b/published/201810/20180928 How to Install Popcorn Time on Ubuntu 18.04 and Other Linux Distributions.md
similarity index 100%
rename from published/20180928 How to Install Popcorn Time on Ubuntu 18.04 and Other Linux Distributions.md
rename to published/201810/20180928 How to Install Popcorn Time on Ubuntu 18.04 and Other Linux Distributions.md
diff --git a/published/20180930 Creator of the World Wide Web is Creating a New Decentralized Web.md b/published/201810/20180930 Creator of the World Wide Web is Creating a New Decentralized Web.md
similarity index 100%
rename from published/20180930 Creator of the World Wide Web is Creating a New Decentralized Web.md
rename to published/201810/20180930 Creator of the World Wide Web is Creating a New Decentralized Web.md
diff --git a/published/20181001 16 iptables tips and tricks for sysadmins.md b/published/201810/20181001 16 iptables tips and tricks for sysadmins.md
similarity index 100%
rename from published/20181001 16 iptables tips and tricks for sysadmins.md
rename to published/201810/20181001 16 iptables tips and tricks for sysadmins.md
diff --git a/published/20181001 How to Install Pip on Ubuntu.md b/published/201810/20181001 How to Install Pip on Ubuntu.md
similarity index 100%
rename from published/20181001 How to Install Pip on Ubuntu.md
rename to published/201810/20181001 How to Install Pip on Ubuntu.md
diff --git a/published/20181002 How use SSH and SFTP protocols on your home network.md b/published/201810/20181002 How use SSH and SFTP protocols on your home network.md
similarity index 100%
rename from published/20181002 How use SSH and SFTP protocols on your home network.md
rename to published/201810/20181002 How use SSH and SFTP protocols on your home network.md
diff --git a/published/20181003 Introducing Swift on Fedora.md b/published/201810/20181003 Introducing Swift on Fedora.md
similarity index 100%
rename from published/20181003 Introducing Swift on Fedora.md
rename to published/201810/20181003 Introducing Swift on Fedora.md
diff --git a/published/20181003 Tips for listing files with ls at the Linux command line.md b/published/201810/20181003 Tips for listing files with ls at the Linux command line.md
similarity index 100%
rename from published/20181003 Tips for listing files with ls at the Linux command line.md
rename to published/201810/20181003 Tips for listing files with ls at the Linux command line.md
diff --git a/published/20181004 PyTorch 1.0 Preview Release- Facebook-s newest Open Source AI.md b/published/201810/20181004 PyTorch 1.0 Preview Release- Facebook-s newest Open Source AI.md
similarity index 100%
rename from published/20181004 PyTorch 1.0 Preview Release- Facebook-s newest Open Source AI.md
rename to published/201810/20181004 PyTorch 1.0 Preview Release- Facebook-s newest Open Source AI.md
diff --git a/published/20181005 Open Source Logging Tools for Linux.md b/published/201810/20181005 Open Source Logging Tools for Linux.md
similarity index 100%
rename from published/20181005 Open Source Logging Tools for Linux.md
rename to published/201810/20181005 Open Source Logging Tools for Linux.md
diff --git a/published/20181008 Python at the pump- A script for filling your gas tank.md b/published/201810/20181008 Python at the pump- A script for filling your gas tank.md
similarity index 100%
rename from published/20181008 Python at the pump- A script for filling your gas tank.md
rename to published/201810/20181008 Python at the pump- A script for filling your gas tank.md
diff --git a/published/20181009 6 Commands To Shutdown And Reboot The Linux System From Terminal.md b/published/201810/20181009 6 Commands To Shutdown And Reboot The Linux System From Terminal.md
similarity index 100%
rename from published/20181009 6 Commands To Shutdown And Reboot The Linux System From Terminal.md
rename to published/201810/20181009 6 Commands To Shutdown And Reboot The Linux System From Terminal.md
diff --git a/published/20181009 Convert Screenshots of Equations into LaTeX Instantly With This Nifty Tool.md b/published/201810/20181009 Convert Screenshots of Equations into LaTeX Instantly With This Nifty Tool.md
similarity index 100%
rename from published/20181009 Convert Screenshots of Equations into LaTeX Instantly With This Nifty Tool.md
rename to published/201810/20181009 Convert Screenshots of Equations into LaTeX Instantly With This Nifty Tool.md
diff --git a/published/20181009 How To Create And Maintain Your Own Man Pages.md b/published/201810/20181009 How To Create And Maintain Your Own Man Pages.md
similarity index 100%
rename from published/20181009 How To Create And Maintain Your Own Man Pages.md
rename to published/201810/20181009 How To Create And Maintain Your Own Man Pages.md
diff --git a/published/20181010 Cloc - Count The Lines Of Source Code In Many Programming Languages.md b/published/201810/20181010 Cloc - Count The Lines Of Source Code In Many Programming Languages.md
similarity index 100%
rename from published/20181010 Cloc - Count The Lines Of Source Code In Many Programming Languages.md
rename to published/201810/20181010 Cloc - Count The Lines Of Source Code In Many Programming Languages.md
diff --git a/published/20181010 Design faster web pages, part 1- Image compression.md b/published/201810/20181010 Design faster web pages, part 1- Image compression.md
similarity index 100%
rename from published/20181010 Design faster web pages, part 1- Image compression.md
rename to published/201810/20181010 Design faster web pages, part 1- Image compression.md
diff --git a/published/20181010 How To List The Enabled-Active Repositories In Linux.md b/published/201810/20181010 How To List The Enabled-Active Repositories In Linux.md
similarity index 100%
rename from published/20181010 How To List The Enabled-Active Repositories In Linux.md
rename to published/201810/20181010 How To List The Enabled-Active Repositories In Linux.md
diff --git a/published/20181011 A Front-end For Popular Package Managers.md b/published/201810/20181011 A Front-end For Popular Package Managers.md
similarity index 100%
rename from published/20181011 A Front-end For Popular Package Managers.md
rename to published/201810/20181011 A Front-end For Popular Package Managers.md
diff --git a/published/20181011 Getting started with Minikube- Kubernetes on your laptop.md b/published/201810/20181011 Getting started with Minikube- Kubernetes on your laptop.md
similarity index 100%
rename from published/20181011 Getting started with Minikube- Kubernetes on your laptop.md
rename to published/201810/20181011 Getting started with Minikube- Kubernetes on your laptop.md
diff --git a/published/20181012 Command line quick tips- Reading files different ways.md b/published/201810/20181012 Command line quick tips- Reading files different ways.md
similarity index 100%
rename from published/20181012 Command line quick tips- Reading files different ways.md
rename to published/201810/20181012 Command line quick tips- Reading files different ways.md
diff --git a/published/20181012 Happy birthday, KDE- 11 applications you never knew existed.md b/published/201810/20181012 Happy birthday, KDE- 11 applications you never knew existed.md
similarity index 100%
rename from published/20181012 Happy birthday, KDE- 11 applications you never knew existed.md
rename to published/201810/20181012 Happy birthday, KDE- 11 applications you never knew existed.md
diff --git a/published/20181012 How To Lock Virtual Console Sessions On Linux.md b/published/201810/20181012 How To Lock Virtual Console Sessions On Linux.md
similarity index 100%
rename from published/20181012 How To Lock Virtual Console Sessions On Linux.md
rename to published/201810/20181012 How To Lock Virtual Console Sessions On Linux.md
diff --git a/published/20181013 How to Install GRUB on Arch Linux (UEFI).md b/published/201810/20181013 How to Install GRUB on Arch Linux (UEFI).md
similarity index 100%
rename from published/20181013 How to Install GRUB on Arch Linux (UEFI).md
rename to published/201810/20181013 How to Install GRUB on Arch Linux (UEFI).md
diff --git a/published/20181015 How To Browse And Read Entire Arch Wiki As Linux Man Pages.md b/published/201810/20181015 How To Browse And Read Entire Arch Wiki As Linux Man Pages.md
similarity index 100%
rename from published/20181015 How To Browse And Read Entire Arch Wiki As Linux Man Pages.md
rename to published/201810/20181015 How To Browse And Read Entire Arch Wiki As Linux Man Pages.md
diff --git a/published/20181015 Running Linux containers as a non-root with Podman.md b/published/201810/20181015 Running Linux containers as a non-root with Podman.md
similarity index 100%
rename from published/20181015 Running Linux containers as a non-root with Podman.md
rename to published/201810/20181015 Running Linux containers as a non-root with Podman.md
diff --git a/published/20181016 Turn Your Old PC into a Retrogaming Console with Lakka Linux.md b/published/201810/20181016 Turn Your Old PC into a Retrogaming Console with Lakka Linux.md
similarity index 100%
rename from published/20181016 Turn Your Old PC into a Retrogaming Console with Lakka Linux.md
rename to published/201810/20181016 Turn Your Old PC into a Retrogaming Console with Lakka Linux.md
diff --git a/published/20181018 MidnightBSD Hits 1.0- Checkout What-s New.md b/published/201810/20181018 MidnightBSD Hits 1.0- Checkout What-s New.md
similarity index 100%
rename from published/20181018 MidnightBSD Hits 1.0- Checkout What-s New.md
rename to published/201810/20181018 MidnightBSD Hits 1.0- Checkout What-s New.md
diff --git a/published/20181018 Understanding Linux Links- Part 1.md b/published/201810/20181018 Understanding Linux Links- Part 1.md
similarity index 100%
rename from published/20181018 Understanding Linux Links- Part 1.md
rename to published/201810/20181018 Understanding Linux Links- Part 1.md
diff --git a/translated/tech/20181019 How to use Pandoc to produce a research paper.md b/published/201810/20181019 How to use Pandoc to produce a research paper.md
similarity index 51%
rename from translated/tech/20181019 How to use Pandoc to produce a research paper.md
rename to published/201810/20181019 How to use Pandoc to produce a research paper.md
index 516ab8ba37..3ccbc8df1c 100644
--- a/translated/tech/20181019 How to use Pandoc to produce a research paper.md
+++ b/published/201810/20181019 How to use Pandoc to produce a research paper.md
@@ -1,19 +1,21 @@
-用 Pandoc 做一篇调研论文
+用 Pandoc 生成一篇调研论文
======
-学习如何用 Markdown 管理引用、图像、表格、以及更多。
+
+> 学习如何用 Markdown 管理章节引用、图像、表格以及更多。
+

-这篇文章对于使用 [Markdown][1] 语法做一篇调研论文进行了一个深度体验。覆盖了如何创建和引用、图像(用 Markdown 和 [LaTeX][2])和参考书目。我们也讨论了一些棘手的案例和为什么使用 LaTex 是一个正确的做法。
+这篇文章对于使用 [Markdown][1] 语法做一篇调研论文进行了一个深度体验。覆盖了如何创建和引用章节、图像(用 Markdown 和 [LaTeX][2])和参考书目。我们也讨论了一些棘手的案例和为什么使用 LaTex 是一个正确的做法。
-### 调查
+### 调研
-调研论文一般包括引用、图像、表格和参考书目。[Pandoc][3] 本身并不能交叉引用这些,但是但是它能够利用 [pandoc-crossref][4] 过滤来完成自动编号和章节、图像、表格的交叉引用。
+调研论文一般包括对章节、图像、表格和参考书目的引用。[Pandoc][3] 本身并不能交叉引用这些,但是它能够利用 [pandoc-crossref][4] 过滤器来完成自动编号和章节、图像、表格的交叉引用。
-让我们开始正常的使用 LaTax 重写 [一个教育调研报告的例子][5],然后用 Markdown(和一些 LaTax)、Pandoc 和 Pandoc-crossref 再重写。
+让我们从重写原本以 LaTax 撰写的 [一个教育调研报告的例子][5] 开始,然后用 Markdown(和一些 LaTax)、Pandoc 和 Pandoc-crossref 重写。
#### 添加并引用章节
-要想章节被自动编号,必须使用 Markdown 标题 H1 编写。子章节使用子标题 H2-H4 编写(通常不需要更多的东西)。例如一个章节的标题是 “履行”,写作 `# 履行 {#sec: 履行}`,然后 Pandoc 会把它转化为 `3. 履行`(或者转换为相应的章节标号)。`履行` 这个标题使用了 H1 并且声明了一个 `{#sec: 履行}` 的标签,这是作者引用了该章节的标签。要想引用一个章节,在对应章节后面输入 `@` 符号并使用方括号括起来即可: `[@sec:履行]`
+要想章节被自动编号,必须使用 Markdown H1 标题编写。子章节使用 H2-H4 子标题编写(通常不需要更多级别了)。例如一个章节的标题是 “Implementation”,写作 `# Implementation {#sec: implementation}`,然后 Pandoc 会把它转化为 `3. Implementation `(或者转换为相应的章节编号)。`Implementation` 这个标题使用了 H1 并且声明了一个 `{#sec: implementation}` 的标签,这是作者用于引用该章节的标签。要想引用一个章节,输入 `@` 符号并跟上对应章节标签,使用方括号括起来即可: `[@ sec:implementation]`
[在这篇论文中][5], 我们发现了下面这个例子:
@@ -27,16 +29,17 @@ Pandoc 转换:
we lack experience (consistency between TAs, Section 4).
```
-章节被自动(这包含在文章最后的 `Makefile` 当中)标号。要创建无标号的章节,输入章节的标题并在最后添加 `{-}`。例如:`### 设计一个可维护的游戏 {-}` 就以标题 “设计一个可维护的游戏”,创建了一个无标号的章节。
+章节被自动编号(这在本文最后的 `Makefile` 当中说明)。要创建无编号的章节,输入章节的标题并在最后添加 `{-}`。例如:`### Designing a game for maintainability {-}` 就以标题 “Designing a game for maintainability”,创建了一个无标号的章节。
#### 添加并引用图像
-添加并引用一个图像,跟添加并引用一个章节和添加一个 Markdown 图片很相似:
+添加并引用一个图像,跟添加并引用一个章节和添加一个 Markdown 图片很相似:
```
{#fig:scatter-matrix}
```
-上面这一行是告诉 Pandoc,有一个标有 Scatterplot matrix 的图像以及这张图片路径是 `data/scatterplots/RScatterplotMatrix2.png`。`{#fig:scatter-matrix}` 表明了应该引用的图像的名字。
+
+上面这一行是告诉 Pandoc,有一个标有 Scatterplot matrix 的图像以及这张图片路径是 `data/scatterplots/RScatterplotMatrix2.png`。`{#fig:scatter-matrix}` 表明了用于引用该图像的名字。
这里是从一篇论文中进行图像引用的例子:
@@ -51,46 +54,47 @@ The boxes "Enjoy", "Grade" and "Motivation" (Fig. 1) ...
```
#### 添加及引用参考书目
-大多数调研报告都把引用放在一个 BibTeX 的数据库文件中。在这个例子中,该文件被命名为 [biblio.bib][6],它包含了论文中所有的引用。下面是这个文件的样子:
+
+大多数调研报告都把引用放在一个 BibTeX 的数据库文件中。在这个例子中,该文件被命名为 [biblio.bib][6],它包含了论文中所有的引用。下面是这个文件的样子:
```
@inproceedings{wrigstad2017mastery,
- Author = {Wrigstad, Tobias and Castegren, Elias},
- Booktitle = {SPLASH-E},
- Title = {Mastery Learning-Like Teaching with Achievements},
- Year = 2017
+ Author = {Wrigstad, Tobias and Castegren, Elias},
+ Booktitle = {SPLASH-E},
+ Title = {Mastery Learning-Like Teaching with Achievements},
+ Year = 2017
}
@inproceedings{review-gamification-framework,
- Author = {A. Mora and D. Riera and C. Gonzalez and J. Arnedo-Moreno},
- Publisher = {IEEE},
- Booktitle = {2015 7th International Conference on Games and Virtual Worlds
- for Serious Applications (VS-Games)},
- Doi = {10.1109/VS-GAMES.2015.7295760},
- Keywords = {formal specification;serious games (computing);design
- framework;formal design process;game components;game design
- elements;gamification design frameworks;gamification-based
- solutions;Bibliographies;Context;Design
- methodology;Ethics;Games;Proposals},
- Month = {Sept},
- Pages = {1-8},
- Title = {A Literature Review of Gamification Design Frameworks},
- Year = 2015,
- Bdsk-Url-1 = {http://dx.doi.org/10.1109/VS-GAMES.2015.7295760}
+ Author = {A. Mora and D. Riera and C. Gonzalez and J. Arnedo-Moreno},
+ Publisher = {IEEE},
+ Booktitle = {2015 7th International Conference on Games and Virtual Worlds
+ for Serious Applications (VS-Games)},
+ Doi = {10.1109/VS-GAMES.2015.7295760},
+ Keywords = {formal specification;serious games (computing);design
+ framework;formal design process;game components;game design
+ elements;gamification design frameworks;gamification-based
+ solutions;Bibliographies;Context;Design
+ methodology;Ethics;Games;Proposals},
+ Month = {Sept},
+ Pages = {1-8},
+ Title = {A Literature Review of Gamification Design Frameworks},
+ Year = 2015,
+ Bdsk-Url-1 = {http://dx.doi.org/10.1109/VS-GAMES.2015.7295760}
}
...
```
-第一行的 `@inproceedings{wrigstad2017mastery,` 表明了出版物 (`inproceedings`) 的类型,以及用来指向那篇论文 (`wrigstad2017mastery`) 的标签。
+第一行的 `@inproceedings{wrigstad2017mastery,` 表明了出版物 的类型(`inproceedings`),以及用来指向那篇论文的标签(`wrigstad2017mastery`)。
-引用这篇题为 “Mastery Learning-Like Teaching with Achievements” 的论文, 输入:
+引用这篇题为 “Mastery Learning-Like Teaching with Achievements” 的论文, 输入:
```
the achievement-driven learning methodology [@wrigstad2017mastery]
```
-Pandoc 将会输出:
+Pandoc 将会输出:
```
the achievement- driven learning methodology [30]
@@ -100,25 +104,23 @@ the achievement- driven learning methodology [30]

-引用文章的集合也很容易:只要引用使用分号 `;` 分隔开被标记的参考文献就可以了。如果一个引用有两个标签 —— 例如: `SEABORN201514` 和 `gamification-leaderboard-benefits`—— 像下面这样把它们放在一起引用:
+引用文章的集合也很容易:只要引用使用分号 `;` 分隔开被标记的参考文献就可以了。如果一个引用有两个标签 —— 例如: `SEABORN201514` 和 `gamification-leaderboard-benefits`—— 像下面这样把它们放在一起引用:
```
Thus, the most important benefit is its potential to increase students' motivation
-
and engagement [@SEABORN201514;@gamification-leaderboard-benefits].
```
-Pandoc 将会产生:
+Pandoc 将会产生:
```
Thus, the most important benefit is its potential to increase students’ motivation
-
and engagement [26, 28]
```
### 问题案例
-一个常见的问题是项目与页面不匹配。不匹配的部分会自动移动到它们认为合适的地方,即便这些位置并不是读者期望看到的位置。因此在图像或者表格接近于它们被提及的地方时,我们需要调节一下它们在此处的元素组合,使得他们更加易于阅读。为了达到这个效果,我建议使用 `figure` 这个 LaTeX 环境参数,它可以让用户控制图像的位置。
+一个常见的问题是所需项目与页面不匹配。不匹配的部分会自动移动到它们认为合适的地方,即便这些位置并不是读者期望看到的位置。因此在图像或者表格接近于它们被提及的地方时,我们需要调节一下那些元素放置的位置,使得它们更加易于阅读。为了达到这个效果,我建议使用 `figure` 这个 LaTeX 环境参数,它可以让用户控制图像的位置。
我们看一个上面提到的图像的例子:
@@ -126,7 +128,7 @@ and engagement [26, 28]
{#fig:scatter-matrix}
```
-然后使用 LaTeX 重写:
+然后使用 LaTeX 重写:
```
\begin{figure}[t]
@@ -139,17 +141,17 @@ and engagement [26, 28]
### 产生一篇论文
-到目前为止,我们讲了如何添加和引用(子)章节、图像和参考书目,现在让我们重温一下如何生产一篇 PDF 格式的论文,生成 PDF,我们将使用 Pandoc 生成一篇可以被构建成最终 PDF 的 LaTeX 文件。我们还会讨论如何以 LaTeX,使用一套自定义的模板和元信息文件生成一篇调研论文,以及如何构建 LaTeX 文档为最终的 PDF 格式。
+到目前为止,我们讲了如何添加和引用(子)章节、图像和参考书目,现在让我们重温一下如何生成一篇 PDF 格式的论文。要生成 PDF,我们将使用 Pandoc 生成一篇可以被构建成最终 PDF 的 LaTeX 文件。我们还会讨论如何以 LaTeX,使用一套自定义的模板和元信息文件生成一篇调研论文,以及如何将 LaTeX 文档编译为最终的 PDF 格式。
-很多会议都提供了一个 **.cls** 文件或者一套论文该有样子的模板; 例如,他们是否应该使用两列的格式以及其他的设计风格。在我们的例子中,会议提供了一个名为 **acmart.cls** 的文件。
+很多会议都提供了一个 .cls 文件或者一套论文应有样式的模板;例如,它们是否应该使用两列的格式以及其它的设计风格。在我们的例子中,会议提供了一个名为 `acmart.cls` 的文件。
-作者通常想要在他们的论文中包含他们所属的机构,然而,这个选项并没有包含在默认的 Pandoc 的 LaTeX 模板(注意,可以通过输入 `pandoc -D latex` 来查看 Pandoc 模板)当中。要包含这个内容,找一个 Pandoc 默认的 LaTeX 模板,并添加一些新的内容。将这个模板像下面这样复制进一个名为 `mytemplate.tex` 的文件中:
+作者通常想要在他们的论文中包含他们所属的机构,然而,这个选项并没有包含在默认的 Pandoc 的 LaTeX 模板(注意,可以通过输入 `pandoc -D latex` 来查看 Pandoc 模板)当中。要包含这个内容,找一个 Pandoc 默认的 LaTeX 模板,并添加一些新的内容。将这个模板像下面这样复制进一个名为 `mytemplate.tex` 的文件中:
```
pandoc -D latex > mytemplate.tex
```
-默认的模板包含以下代码:
+默认的模板包含以下代码:
```
$if(author)$
@@ -161,32 +163,30 @@ $if(institute)$
$endif$
```
-因为这个模板应该包含作者的联系方式和电子邮件地址,在其他一些选项之间,我们可以添加以下内容(我们还做了一些其他的更改,但是因为文件的长度,就没有包含在此处)更新这个模板
+因为这个模板应该包含作者的联系方式和电子邮件地址,在其他一些选项之间,我们更新这个模板以添加以下内容(我们还做了一些其他的更改,但是因为文件的长度,就没有包含在此处):
```
latex
$for(author)$
- $if(author.name)$
- \author{$author.name$}
- $if(author.affiliation)$
- \affiliation{\institution{$author.affiliation$}}
- $endif$
- $if(author.email)$
- \email{$author.email$}
- $endif$
- $else$
- $author$
- $endif$
+ $if(author.name)$
+ \author{$author.name$}
+ $if(author.affiliation)$
+ \affiliation{\institution{$author.affiliation$}}
+ $endif$
+ $if(author.email)$
+ \email{$author.email$}
+ $endif$
+ $else$
+ $author$
+ $endif$
$endfor$
```
要让这些更改起作用,我们还应该有下面的文件:
- * `main.md` 包含调研论文
- * `biblio.bib` 包含参考书目数据库
- * `acmart.cls` 我们使用的文档的集合
- * `mytemplate.tex` 是我们使用的模板文件(代替默认的)
-
-
+* `main.md` 包含调研论文
+* `biblio.bib` 包含参考书目数据库
+* `acmart.cls` 我们使用的文档的集合
+* `mytemplate.tex` 是我们使用的模板文件(代替默认的)
让我们添加论文的元信息到一个 `meta.yaml` 文件:
@@ -211,7 +211,7 @@ abstract: |
An achievement-driven methodology strives to give students more control over their learning with enough flexibility to engage them in deeper learning. (more stuff continues)
include-before: |
- \```{=latex}
+ \` ``{=latex}
\copyrightyear{2018}
\acmYear{2018}
\setcopyright{acmlicensed}
@@ -234,7 +234,7 @@ include-before: |
\ccsdesc[500]{Applied computing~Education}
\keywords{gamification, education, software design, UML}
- \```
+ \` ``
figPrefix:
- "Fig."
- "Figs."
@@ -246,23 +246,21 @@ secPrefix:
这个元信息文件使用 LaTeX 设置下列参数:
- * `template` 指向使用的模板(’mytemplate.tex‘)
- * `documentclass` 指向使用的 LaTeX 文档集合 (`acmart`)
- * `classoption` 是在 `sigconf` 的案例中,指向这个类的选项
- * `title` 指定论文的标题
- * `author` 是一个包含例如 `name`, `affiliation`, 和 `email` 的地方
- * `bibliography` 指向包含参考书目的文件 (biblio.bib)
- * `abstract` 包含论文的摘要
- * `include-before` 是这篇论文的真实内容之前应该被包含的信息;在 LaTeX 中被称为 [前言][8]。我在这里包含它去展示如何产生一篇计算机科学的论文,但是你可以选择跳过
- * `figPrefix` 指向如何引用文档中的图像,例如:当引用图像的 `[@fig:scatter-matrix]` 时应该显示什么。例如,当前的 `figPrefix` 在这个例子 `The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix])`中,产生了这样的输出:`The boxes "Enjoy", "Grade" and "Motivation" (Fig. 3)`。如果这里有很多图像,目前的设置表明它应该在图像号码旁边显示 `Figs.`。
- * `secPrefix` 指定如何引用文档中其他地方提到的部分(类似之前的图像和概览)
-
-
+* `template` 指向使用的模板(`mytemplate.tex`)
+* `documentclass` 指向使用的 LaTeX 文档集合(`acmart`)
+* `classoption` 是在 `sigconf` 的案例中,指向这个类的选项
+* `title` 指定论文的标题
+* `author` 是一个包含例如 `name`、`affiliation` 和 `email` 的地方
+* `bibliography` 指向包含参考书目的文件(`biblio.bib`)
+* `abstract` 包含论文的摘要
+* `include-before` 是这篇论文的具体内容之前应该被包含的信息;在 LaTeX 中被称为 [前言][8]。我在这里包含它去展示如何产生一篇计算机科学的论文,但是你可以选择跳过
+* `figPrefix` 指向如何引用文档中的图像,例如:当引用图像的 `[@fig:scatter-matrix]` 时应该显示什么。例如,当前的 `figPrefix` 在这个例子 `The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix])`中,产生了这样的输出:`The boxes "Enjoy", "Grade" and "Motivation" (Fig. 3)`。如果这里有很多图像,目前的设置表明它应该在图像号码旁边显示 `Figs.`
+* `secPrefix` 指定如何引用文档中其他地方提到的部分(类似之前的图像和概览)
现在已经设置好了元信息,让我们来创建一个 `Makefile`,它会产生你想要的输出。`Makefile` 使用 Pandoc 产生 LaTeX 文件,`pandoc-crossref` 产生交叉引用,`pdflatex` 构建 LaTeX 为 PDF,`bibtex ` 处理引用。
-`Makefile` 已经展示如下:
+`Makefile` 已经展示如下:
```
all: paper
@@ -281,18 +279,16 @@ clean:
.PHONY: all clean paper
```
-Pandoc 使用下面的标记:
+Pandoc 使用下面的标记:
- * `-s` 创建一个独立的 LaTeX 文档
- * `-F pandoc-crossref` 利用 `pandoc-crossref` 进行过滤
- * `--natbib` 用 `natbib` (你也可以选择 `--biblatex`)对参考书目进行渲染
- * `--template` 设置使用的模板文件
- * `-N` 为章节的标题编号
- * `-f` 和 `-t` 指定从哪个格式转换到哪个格式。`-t` 通常包含格式和 Pandoc 使用的扩展。在这个例子中,我们标明的 `raw_tex+tex_math_dollars+citations` 允许在 Markdown 中使用 `raw_tex` LaTeX。 `tex_math_dollars` 让我们能够像在 LaTeX 中一样输入数学符号,`citations` 让我们可以使用 [这个扩展][9].
+* `-s` 创建一个独立的 LaTeX 文档
+* `-F pandoc-crossref` 利用 `pandoc-crossref` 进行过滤
+* `--natbib` 用 `natbib` (你也可以选择 `--biblatex`)对参考书目进行渲染
+* `--template` 设置使用的模板文件
+* `-N` 为章节的标题编号
+* `-f` 和 `-t` 指定从哪个格式转换到哪个格式。`-t` 通常包含格式和 Pandoc 使用的扩展。在这个例子中,我们标明的 `raw_tex+tex_math_dollars+citations` 允许在 Markdown 中使用 `raw_tex` LaTeX。 `tex_math_dollars` 让我们能够像在 LaTeX 中一样输入数学符号,`citations` 让我们可以使用 [这个扩展][9]。
-
-
-由 LaTeX 产生 PDF,接着引导行 [从 bibtex][10] 处理参考书目:
+要从 LaTeX 产生 PDF,按 [来自bibtex][10] 的指导处理参考书目:
```
@pdflatex main.tex &> /dev/null
@@ -301,7 +297,7 @@ Pandoc 使用下面的标记:
@pdflatex main.tex &> /dev/null
```
-脚本用 `@` 忽略输出,并且重定向标准输出和错误到 `/dev/null` ,因此我们在使用这些命令的可执行文件时不会看到任何的输出。
+脚本用 `@` 忽略输出,并且重定向标准输出和错误到 `/dev/null` ,因此我们在使用这些命令的可执行文件时不会看到任何的输出。
最终的结果展示如下。这篇文章的库可以在 [GitHub][11] 找到:
@@ -309,9 +305,9 @@ Pandoc 使用下面的标记:
### 结论
-在我看来,研究的重点是协作,思想的传播,以及在任何一个恰好存在的领域中改进现有的技术。许多计算机科学家和工程师使用 LaTeX 文档系统来写论文,它对数学提供了完美的支持。来自社会科学的调查员似乎更喜欢 DOCX 文档。
+在我看来,研究的重点是协作、思想的传播,以及在任何一个恰好存在的领域中改进现有的技术。许多计算机科学家和工程师使用 LaTeX 文档系统来写论文,它对数学提供了完美的支持。来自社会科学的研究人员似乎更喜欢 DOCX 文档。
-当身处不同社区的调查员一同写一篇论文时,他们首先应该讨论一下他们将要使用哪种格式。然而如果包含太多的数学符号,DOCX 对于工程师来说不会是最简便的选择,LaTeX 对于缺乏编程经验的调查员来说也有一些问题。就像这篇文章中展示的,Markdown 是一门工程师和社会科学家都很轻易能够使用的语言。
+当身处不同社区的研究人员一同写一篇论文时,他们首先应该讨论一下他们将要使用哪种格式。然而如果包含太多的数学符号,DOCX 对于工程师来说不会是最简便的选择,LaTeX 对于缺乏编程经验的研究人员来说也有一些问题。就像这篇文章中展示的,Markdown 是一门工程师和社会科学家都很轻易能够使用的语言。
--------------------------------------------------------------------------------
@@ -320,7 +316,7 @@ via: https://opensource.com/article/18/9/pandoc-research-paper
作者:[Kiko Fernandez-Reyes][a]
选题:[lujun9972][b]
译者:[dianbanjiu](https://github.com/dianbanjiu)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20181019 How to use Pandoc to produce a research paper.md b/published/20181019 How to use Pandoc to produce a research paper.md
new file mode 100644
index 0000000000..3ccbc8df1c
--- /dev/null
+++ b/published/20181019 How to use Pandoc to produce a research paper.md
@@ -0,0 +1,335 @@
+用 Pandoc 生成一篇调研论文
+======
+
+> 学习如何用 Markdown 管理章节引用、图像、表格以及更多。
+
+
+
+这篇文章对于使用 [Markdown][1] 语法做一篇调研论文进行了一个深度体验。覆盖了如何创建和引用章节、图像(用 Markdown 和 [LaTeX][2])和参考书目。我们也讨论了一些棘手的案例和为什么使用 LaTex 是一个正确的做法。
+
+### 调研
+
+调研论文一般包括对章节、图像、表格和参考书目的引用。[Pandoc][3] 本身并不能交叉引用这些,但是它能够利用 [pandoc-crossref][4] 过滤器来完成自动编号和章节、图像、表格的交叉引用。
+
+让我们从重写原本以 LaTax 撰写的 [一个教育调研报告的例子][5] 开始,然后用 Markdown(和一些 LaTax)、Pandoc 和 Pandoc-crossref 重写。
+
+#### 添加并引用章节
+
+要想章节被自动编号,必须使用 Markdown H1 标题编写。子章节使用 H2-H4 子标题编写(通常不需要更多级别了)。例如一个章节的标题是 “Implementation”,写作 `# Implementation {#sec: implementation}`,然后 Pandoc 会把它转化为 `3. Implementation `(或者转换为相应的章节编号)。`Implementation` 这个标题使用了 H1 并且声明了一个 `{#sec: implementation}` 的标签,这是作者用于引用该章节的标签。要想引用一个章节,输入 `@` 符号并跟上对应章节标签,使用方括号括起来即可: `[@ sec:implementation]`
+
+[在这篇论文中][5], 我们发现了下面这个例子:
+
+```
+we lack experience (consistency between TAs, [@sec:implementation]).
+```
+
+Pandoc 转换:
+
+```
+we lack experience (consistency between TAs, Section 4).
+```
+
+章节被自动编号(这在本文最后的 `Makefile` 当中说明)。要创建无编号的章节,输入章节的标题并在最后添加 `{-}`。例如:`### Designing a game for maintainability {-}` 就以标题 “Designing a game for maintainability”,创建了一个无标号的章节。
+
+#### 添加并引用图像
+
+添加并引用一个图像,跟添加并引用一个章节和添加一个 Markdown 图片很相似:
+
+```
+{#fig:scatter-matrix}
+```
+
+上面这一行是告诉 Pandoc,有一个标有 Scatterplot matrix 的图像以及这张图片路径是 `data/scatterplots/RScatterplotMatrix2.png`。`{#fig:scatter-matrix}` 表明了用于引用该图像的名字。
+
+这里是从一篇论文中进行图像引用的例子:
+
+```
+The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix]) ...
+```
+
+Pandoc 产生如下输出:
+
+```
+The boxes "Enjoy", "Grade" and "Motivation" (Fig. 1) ...
+```
+
+#### 添加及引用参考书目
+
+大多数调研报告都把引用放在一个 BibTeX 的数据库文件中。在这个例子中,该文件被命名为 [biblio.bib][6],它包含了论文中所有的引用。下面是这个文件的样子:
+
+```
+@inproceedings{wrigstad2017mastery,
+ Author = {Wrigstad, Tobias and Castegren, Elias},
+ Booktitle = {SPLASH-E},
+ Title = {Mastery Learning-Like Teaching with Achievements},
+ Year = 2017
+}
+
+@inproceedings{review-gamification-framework,
+ Author = {A. Mora and D. Riera and C. Gonzalez and J. Arnedo-Moreno},
+ Publisher = {IEEE},
+ Booktitle = {2015 7th International Conference on Games and Virtual Worlds
+ for Serious Applications (VS-Games)},
+ Doi = {10.1109/VS-GAMES.2015.7295760},
+ Keywords = {formal specification;serious games (computing);design
+ framework;formal design process;game components;game design
+ elements;gamification design frameworks;gamification-based
+ solutions;Bibliographies;Context;Design
+ methodology;Ethics;Games;Proposals},
+ Month = {Sept},
+ Pages = {1-8},
+ Title = {A Literature Review of Gamification Design Frameworks},
+ Year = 2015,
+ Bdsk-Url-1 = {http://dx.doi.org/10.1109/VS-GAMES.2015.7295760}
+}
+
+...
+```
+
+第一行的 `@inproceedings{wrigstad2017mastery,` 表明了出版物 的类型(`inproceedings`),以及用来指向那篇论文的标签(`wrigstad2017mastery`)。
+
+引用这篇题为 “Mastery Learning-Like Teaching with Achievements” 的论文, 输入:
+
+```
+the achievement-driven learning methodology [@wrigstad2017mastery]
+```
+
+Pandoc 将会输出:
+
+```
+the achievement- driven learning methodology [30]
+```
+
+这篇论文将会产生像下面这样被标号的参考书目:
+
+
+
+引用文章的集合也很容易:只要引用使用分号 `;` 分隔开被标记的参考文献就可以了。如果一个引用有两个标签 —— 例如: `SEABORN201514` 和 `gamification-leaderboard-benefits`—— 像下面这样把它们放在一起引用:
+
+```
+Thus, the most important benefit is its potential to increase students' motivation
+and engagement [@SEABORN201514;@gamification-leaderboard-benefits].
+```
+
+Pandoc 将会产生:
+
+```
+Thus, the most important benefit is its potential to increase students’ motivation
+and engagement [26, 28]
+```
+
+### 问题案例
+
+一个常见的问题是所需项目与页面不匹配。不匹配的部分会自动移动到它们认为合适的地方,即便这些位置并不是读者期望看到的位置。因此在图像或者表格接近于它们被提及的地方时,我们需要调节一下那些元素放置的位置,使得它们更加易于阅读。为了达到这个效果,我建议使用 `figure` 这个 LaTeX 环境参数,它可以让用户控制图像的位置。
+
+我们看一个上面提到的图像的例子:
+
+```
+{#fig:scatter-matrix}
+```
+
+然后使用 LaTeX 重写:
+
+```
+\begin{figure}[t]
+\includegraphics{data/scatterplots/RScatterplotMatrix2.png}
+\caption{\label{fig:matrix}Scatterplot matrix}
+\end{figure}
+```
+
+在 LaTeX 中,`figure` 环境参数中的 `[t]` 选项表示这张图用该位于该页的最顶部。有关更多选项,参阅 [LaTex/Floats, Figures, and Captions][7] 这篇 Wikibooks 的文章。
+
+### 产生一篇论文
+
+到目前为止,我们讲了如何添加和引用(子)章节、图像和参考书目,现在让我们重温一下如何生成一篇 PDF 格式的论文。要生成 PDF,我们将使用 Pandoc 生成一篇可以被构建成最终 PDF 的 LaTeX 文件。我们还会讨论如何以 LaTeX,使用一套自定义的模板和元信息文件生成一篇调研论文,以及如何将 LaTeX 文档编译为最终的 PDF 格式。
+
+很多会议都提供了一个 .cls 文件或者一套论文应有样式的模板;例如,它们是否应该使用两列的格式以及其它的设计风格。在我们的例子中,会议提供了一个名为 `acmart.cls` 的文件。
+
+作者通常想要在他们的论文中包含他们所属的机构,然而,这个选项并没有包含在默认的 Pandoc 的 LaTeX 模板(注意,可以通过输入 `pandoc -D latex` 来查看 Pandoc 模板)当中。要包含这个内容,找一个 Pandoc 默认的 LaTeX 模板,并添加一些新的内容。将这个模板像下面这样复制进一个名为 `mytemplate.tex` 的文件中:
+
+```
+pandoc -D latex > mytemplate.tex
+```
+
+默认的模板包含以下代码:
+
+```
+$if(author)$
+\author{$for(author)$$author$$sep$ \and $endfor$}
+$endif$
+$if(institute)$
+\providecommand{\institute}[1]{}
+\institute{$for(institute)$$institute$$sep$ \and $endfor$}
+$endif$
+```
+
+因为这个模板应该包含作者的联系方式和电子邮件地址,在其他一些选项之间,我们更新这个模板以添加以下内容(我们还做了一些其他的更改,但是因为文件的长度,就没有包含在此处):
+
+```
+latex
+$for(author)$
+ $if(author.name)$
+ \author{$author.name$}
+ $if(author.affiliation)$
+ \affiliation{\institution{$author.affiliation$}}
+ $endif$
+ $if(author.email)$
+ \email{$author.email$}
+ $endif$
+ $else$
+ $author$
+ $endif$
+$endfor$
+```
+要让这些更改起作用,我们还应该有下面的文件:
+
+* `main.md` 包含调研论文
+* `biblio.bib` 包含参考书目数据库
+* `acmart.cls` 我们使用的文档的集合
+* `mytemplate.tex` 是我们使用的模板文件(代替默认的)
+
+让我们添加论文的元信息到一个 `meta.yaml` 文件:
+
+```
+---
+template: 'mytemplate.tex'
+documentclass: acmart
+classoption: sigconf
+title: The impact of opt-in gamification on `\\`{=latex} students' grades in a software design course
+author:
+- name: Kiko Fernandez-Reyes
+ affiliation: Uppsala University
+ email: kiko.fernandez@it.uu.se
+- name: Dave Clarke
+ affiliation: Uppsala University
+ email: dave.clarke@it.uu.se
+- name: Janina Hornbach
+ affiliation: Uppsala University
+ email: janina.hornbach@fek.uu.se
+bibliography: biblio.bib
+abstract: |
+ An achievement-driven methodology strives to give students more control over their learning with enough flexibility to engage them in deeper learning. (more stuff continues)
+
+include-before: |
+ \` ``{=latex}
+ \copyrightyear{2018}
+ \acmYear{2018}
+ \setcopyright{acmlicensed}
+ \acmConference[MODELS '18 Companion]{ACM/IEEE 21th International Conference on Model Driven Engineering Languages and Systems}{October 14--19, 2018}{Copenhagen, Denmark}
+ \acmBooktitle{ACM/IEEE 21th International Conference on Model Driven Engineering Languages and Systems (MODELS '18 Companion), October 14--19, 2018, Copenhagen, Denmark}
+ \acmPrice{XX.XX}
+ \acmDOI{10.1145/3270112.3270118}
+ \acmISBN{978-1-4503-5965-8/18/10}
+
+ \begin{CCSXML}
+
+
+ 10010405.10010489
+ Applied computing~Education
+ 500
+
+
+ \end{CCSXML}
+
+ \ccsdesc[500]{Applied computing~Education}
+
+ \keywords{gamification, education, software design, UML}
+ \` ``
+figPrefix:
+ - "Fig."
+ - "Figs."
+secPrefix:
+ - "Section"
+ - "Sections"
+...
+```
+
+这个元信息文件使用 LaTeX 设置下列参数:
+
+* `template` 指向使用的模板(`mytemplate.tex`)
+* `documentclass` 指向使用的 LaTeX 文档集合(`acmart`)
+* `classoption` 是在 `sigconf` 的案例中,指向这个类的选项
+* `title` 指定论文的标题
+* `author` 是一个包含例如 `name`、`affiliation` 和 `email` 的地方
+* `bibliography` 指向包含参考书目的文件(`biblio.bib`)
+* `abstract` 包含论文的摘要
+* `include-before` 是这篇论文的具体内容之前应该被包含的信息;在 LaTeX 中被称为 [前言][8]。我在这里包含它去展示如何产生一篇计算机科学的论文,但是你可以选择跳过
+* `figPrefix` 指向如何引用文档中的图像,例如:当引用图像的 `[@fig:scatter-matrix]` 时应该显示什么。例如,当前的 `figPrefix` 在这个例子 `The boxes "Enjoy", "Grade" and "Motivation" ([@fig:scatter-matrix])`中,产生了这样的输出:`The boxes "Enjoy", "Grade" and "Motivation" (Fig. 3)`。如果这里有很多图像,目前的设置表明它应该在图像号码旁边显示 `Figs.`
+* `secPrefix` 指定如何引用文档中其他地方提到的部分(类似之前的图像和概览)
+
+现在已经设置好了元信息,让我们来创建一个 `Makefile`,它会产生你想要的输出。`Makefile` 使用 Pandoc 产生 LaTeX 文件,`pandoc-crossref` 产生交叉引用,`pdflatex` 构建 LaTeX 为 PDF,`bibtex ` 处理引用。
+
+
+`Makefile` 已经展示如下:
+
+```
+all: paper
+
+paper:
+ @pandoc -s -F pandoc-crossref --natbib meta.yaml --template=mytemplate.tex -N \
+ -f markdown -t latex+raw_tex+tex_math_dollars+citations -o main.tex main.md
+ @pdflatex main.tex &> /dev/null
+ @bibtex main &> /dev/null
+ @pdflatex main.tex &> /dev/null
+ @pdflatex main.tex &> /dev/null
+
+clean:
+ rm main.aux main.tex main.log main.bbl main.blg main.out
+
+.PHONY: all clean paper
+```
+
+Pandoc 使用下面的标记:
+
+* `-s` 创建一个独立的 LaTeX 文档
+* `-F pandoc-crossref` 利用 `pandoc-crossref` 进行过滤
+* `--natbib` 用 `natbib` (你也可以选择 `--biblatex`)对参考书目进行渲染
+* `--template` 设置使用的模板文件
+* `-N` 为章节的标题编号
+* `-f` 和 `-t` 指定从哪个格式转换到哪个格式。`-t` 通常包含格式和 Pandoc 使用的扩展。在这个例子中,我们标明的 `raw_tex+tex_math_dollars+citations` 允许在 Markdown 中使用 `raw_tex` LaTeX。 `tex_math_dollars` 让我们能够像在 LaTeX 中一样输入数学符号,`citations` 让我们可以使用 [这个扩展][9]。
+
+要从 LaTeX 产生 PDF,按 [来自bibtex][10] 的指导处理参考书目:
+
+```
+@pdflatex main.tex &> /dev/null
+@bibtex main &> /dev/null
+@pdflatex main.tex &> /dev/null
+@pdflatex main.tex &> /dev/null
+```
+
+脚本用 `@` 忽略输出,并且重定向标准输出和错误到 `/dev/null` ,因此我们在使用这些命令的可执行文件时不会看到任何的输出。
+
+最终的结果展示如下。这篇文章的库可以在 [GitHub][11] 找到:
+
+
+
+### 结论
+
+在我看来,研究的重点是协作、思想的传播,以及在任何一个恰好存在的领域中改进现有的技术。许多计算机科学家和工程师使用 LaTeX 文档系统来写论文,它对数学提供了完美的支持。来自社会科学的研究人员似乎更喜欢 DOCX 文档。
+
+当身处不同社区的研究人员一同写一篇论文时,他们首先应该讨论一下他们将要使用哪种格式。然而如果包含太多的数学符号,DOCX 对于工程师来说不会是最简便的选择,LaTeX 对于缺乏编程经验的研究人员来说也有一些问题。就像这篇文章中展示的,Markdown 是一门工程师和社会科学家都很轻易能够使用的语言。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/9/pandoc-research-paper
+
+作者:[Kiko Fernandez-Reyes][a]
+选题:[lujun9972][b]
+译者:[dianbanjiu](https://github.com/dianbanjiu)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/kikofernandez
+[b]: https://github.com/lujun9972
+[1]: https://en.wikipedia.org/wiki/Markdown
+[2]: https://www.latex-project.org/
+[3]: https://pandoc.org/
+[4]: http://lierdakil.github.io/pandoc-crossref/
+[5]: https://dl.acm.org/citation.cfm?id=3270118
+[6]: https://github.com/kikofernandez/pandoc-examples/blob/master/research-paper/biblio.bib
+[7]: https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions#Figures
+[8]: https://www.sharelatex.com/learn/latex/Creating_a_document_in_LaTeX#The_preamble_of_a_document
+[9]: http://pandoc.org/MANUAL.html#citations
+[10]: http://www.bibtex.org/Using/
+[11]: https://github.com/kikofernandez/pandoc-examples/tree/master/research-paper
diff --git a/translated/tech/20181022 5 tips for choosing the right open source database.md b/published/20181022 5 tips for choosing the right open source database.md
similarity index 89%
rename from translated/tech/20181022 5 tips for choosing the right open source database.md
rename to published/20181022 5 tips for choosing the right open source database.md
index 1111786922..9f0447086d 100644
--- a/translated/tech/20181022 5 tips for choosing the right open source database.md
+++ b/published/20181022 5 tips for choosing the right open source database.md
@@ -1,10 +1,11 @@
正确选择开源数据库的 5 个技巧
======
+
> 对关键应用的选择不容许丝毫错误。

-你或许会遇到需要选择适合的开源数据库的情况。但这无论对于开源方面的老手或是新手,都是一项艰巨的任务。
+你或许会遇到需要选择合适的开源数据库的情况。但这无论对于开源方面的老手或是新手,都是一项艰巨的任务。
在过去的几年中,采用开源技术的企业越来越多。面对这样的趋势,众多开源应用公司都纷纷承诺自己提供的解决方案能够各种问题、适应各种负载。但这些承诺不能轻信,在开源应用上的选择是重要而艰难的,尤其是数据库这种关键的应用。
@@ -20,7 +21,7 @@
### 了解你的工作负载
-尽管开源数据库技术的功能越来越丰富,但这些新加入的功能都不太具有普适性。譬如 MongoDB 新增了事务的支持、MySQL 新增了 JSON 存储的功能等等。目前开源数据库的普遍趋势是不断加入新的功能,但很多人的误区却在于没有选择最适合的工具来完成自己的工作——这样的人或许是一个自大的开发者,又或许是一个视野狭窄的主管——最终导致公司业务上的损失。最致命的是,在业务初期,使用了不适合的工具往往也可以顺利地完成任务,但随着业务的增长,很快就会到达瓶颈,尽管这个时候还可以替换更合适的工具,但成本就比较高了。
+尽管开源数据库技术的功能越来越丰富,但这些新加入的功能都不太具有普适性。譬如 MongoDB 新增了事务的支持、MySQL 新增了 JSON 存储的功能等等。目前开源数据库的普遍趋势是不断加入新的功能,但很多人的误区却在于没有选择最适合的工具来完成自己的工作 —— 这样的人或许是一个自大的开发者,又或许是一个视野狭窄的主管 —— 最终导致公司业务上的损失。最致命的是,在业务初期,使用了不适合的工具往往也可以顺利地完成任务,但随着业务的增长,很快就会到达瓶颈,尽管这个时候还可以替换更合适的工具,但成本就比较高了。
例如,如果你需要的是数据分析仓库,关系数据库可能不是一个适合的选择;如果你处理事务的应用要求严格的数据完整性和一致性,就不要考虑 NoSQL 了。
@@ -30,7 +31,7 @@
Battery Ventures 是一家专注于技术的投资公司,最近推出了一个用于跟踪最受欢迎开源项目的 [BOSS 指数][2] 。它提供了对一些被广泛采用的开源项目和活跃的开源项目的详细情况。其中,数据库技术毫无悬念地占据了榜单的主导地位,在前十位之中占了一半。这个 BOSS 指数对于刚接触开源数据库领域的人来说,这是一个很好的切入点。当然,开源技术的提供者也会针对很多常见的典型问题给出对应的解决方案。
-我认为,你想要做的事情很可能已经有人解决过了。即使这些先行者的解决方案不一定完全契合你的需求,但也可以从他们成功或失败案例中根据你自己的需求修改得出合适的解决方案。
+我认为,你想要做的事情很可能已经有人解决过了。即使这些先行者的解决方案不一定完全契合你的需求,但也可以从他们成功或失败的案例中根据你自己的需求修改得出合适的解决方案。
如果你采用了一个最前沿的技术,这就是你探索的好机会了。如果你的工作负载刚好适合新的开源数据库技术,放胆去尝试吧。第一个吃螃蟹的人总是会得到意外的挑战和收获。
@@ -46,7 +47,7 @@ Battery Ventures 是一家专注于技术的投资公司,最近推出了一个
### 有疑问,找专家
-如果你仍然不确定数据库选择得是否合适,可以在论坛、网站或者与软件的提供者处商讨。研究各种开源数据库是否满足自己的需求是一件很有意义的事,因为总会发现你从不知道的技术。而开源社区就是分享这些信息的地方。
+如果你仍然不确定数据库选择的是否合适,可以在论坛、网站或者与软件的提供者处商讨。研究各种开源数据库是否满足自己的需求是一件很有意义的事,因为总会发现你从不知道的技术。而开源社区就是分享这些信息的地方。
当你接触到开源软件和软件提供者时,有一件重要的事情需要注意。很多公司都有开放的核心业务模式,鼓励采用他们的数据库软件。你可以只接受他们的部分建议和指导,然后用你自己的能力去研究和探索替代方案。
@@ -62,7 +63,7 @@ via: https://opensource.com/article/18/10/tips-choosing-right-open-source-databa
作者:[Barrett Chambers][a]
选题:[lujun9972][b]
译者:[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/20181029 4 open source Android email clients.md b/published/20181029 4 open source Android email clients.md
similarity index 81%
rename from translated/tech/20181029 4 open source Android email clients.md
rename to published/20181029 4 open source Android email clients.md
index 285b472234..4c1b32ef65 100644
--- a/translated/tech/20181029 4 open source Android email clients.md
+++ b/published/20181029 4 open source Android email clients.md
@@ -1,37 +1,39 @@
-四个开源的Android邮件客户端
+四个开源的 Android 邮件客户端
======
-Email 现在还没有绝迹,而且现在大部分邮件都来自于移动设备。
+
+> Email 现在还没有绝迹,而且现在大部分邮件都来自于移动设备。

-现在一些年轻人正将邮件称之为“老年人的交流方式”,然而事实却是邮件绝对还没有消亡。虽然[协作工具][1],社交媒体,和短信很常用,但是它们还没做好取代邮件这种必要的商业(和社交)通信工具。
+现在一些年轻人正将邮件称之为“老年人的交流方式”,然而事实却是邮件绝对还没有消亡。虽然[协作工具][1]、社交媒体,和短信很常用,但是它们还没做好取代邮件这种必要的商业(和社交)通信工具的准备。
考虑到邮件还没有消失,并且(很多研究表明)人们都是在移动设备上阅读邮件,拥有一个好的移动邮件客户端就变得很关键。如果你是一个想使用开源的邮件客户端的 Android 用户,事情就变得有点棘手了。
我们提供了四个开源的 Andorid 邮件客户端供选择。其中两个可以通过 Andorid 官方应用商店 [Google Play][2] 下载。你也可以在 [Fossdroid][3] 或者 [F-Droid][4] 这些开源 Android 应用库中找到他们。(下方有每个应用的具体下载方式。)
+
### K-9 Mail
-[K-9 Mail][5] 拥有几乎和 Android 一样长的历史——它起源于 Android 1.0 邮件客户端的一个补丁。它支持 IMAP 和 WebDAV、多用户、附件、emojis 和其他经典的邮件客户端功能。它的[用户文档][6]提供了关于安装、启动、安全、阅读和发送邮件等等的帮助。
+[K-9 Mail][5] 拥有几乎和 Android 一样长的历史——它起源于 Android 1.0 邮件客户端的一个补丁。它支持 IMAP 和 WebDAV、多用户、附件、emoji 和其它经典的邮件客户端功能。它的[用户文档][6]提供了关于安装、启动、安全、阅读和发送邮件等等的帮助。
K-9 基于 [Apache 2.0][7] 协议开源,[源码][8]可以从 GitHub 上获得. 应用可以从 [Google Play][9]、[Amazon][10] 和 [F-Droid][11] 上下载。
### p≡p
-正如它的全称,”Pretty Easy Privacy”说的那样,[p≡p][12] 主要关注于隐私和安全通信。它提供自动的、端到端的邮件和附件加密(但要求你的收件人也要能够加密邮件——否则,p≡p会警告你的邮件将不加密发出)。
+正如它的全称,”Pretty Easy Privacy”说的那样,[p≡p][12] 主要关注于隐私和安全通信。它提供自动的、端到端的邮件和附件加密(但要求你的收件人也要能够加密邮件——否则,p≡p 会警告你的邮件将不加密发出)。
你可以从 GitLab 获得[源码][13](基于 [GPLv3][14] 协议),并且可以从应用的官网上找到相应的[文档][15]。应用可以在 [Fossdroid][16] 上免费下载或者在 [Google Play][17] 上支付一点儿象征性的费用下载。
### InboxPager
-[InboxPager][18] 允许你通过 SSL/TLS 协议收发邮件信息,这也表明如果你的邮件提供商(比如 Gmail )没有默认开启这个功能的话,你可能要做一些设置。(幸运的是, InboxPager 提供了 Gmail的[设置教程][19]。)它同时也支持通过 OpenKeychain 应用进行 OpenPGP 机密。
+[InboxPager][18] 允许你通过 SSL/TLS 协议收发邮件信息,这也表明如果你的邮件提供商(比如 Gmail )没有默认开启这个功能的话,你可能要做一些设置。(幸运的是, InboxPager 提供了 Gmail 的[设置教程][19]。)它同时也支持通过 OpenKeychain 应用进行 OpenPGP 加密。
InboxPager 基于 [GPLv3][20] 协议,其源码可从 GitHub 获得,并且应用可以从 [F-Droid][21] 下载。
### FairEmail
-[FairEmail][22] 是一个极简的邮件客户端,它的功能集中于读写信息,没有任何多余的可能拖慢客户端的功能。它支持多个帐号和用户,消息线程,加密等等。
+[FairEmail][22] 是一个极简的邮件客户端,它的功能集中于读写信息,没有任何多余的可能拖慢客户端的功能。它支持多个帐号和用户、消息线索、加密等等。
-它基于 [GPLv3][23] 协议开源,[源码][24]可以从GitHub上获得。你可以在 [Fossdroid][25] 上下载 FairEamil; 对 Google Play 版本感兴趣的人可以从 [testing the software][26] 获得应用。
+它基于 [GPLv3][23] 协议开源,[源码][24]可以从 GitHub 上获得。你可以在 [Fossdroid][25] 上下载 FairEamil;对 Google Play 版本感兴趣的人可以从 [testing the software][26] 获得应用。
肯定还有更多的开源 Android 客户端(或者上述软件的加强版本)——活跃的开发者们可以关注一下。如果你知道还有哪些优秀的应用,可以在评论里和我们分享。
@@ -42,7 +44,7 @@ via: https://opensource.com/article/18/10/open-source-android-email-clients
作者:[Opensource.com][a]
选题:[lujun9972][b]
译者:[zianglei][c]
-校对:[校对者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/20180417 What developers need to know about security.md b/sources/talk/20180417 What developers need to know about security.md
index 98d4f5fbf0..c8fcb9da27 100644
--- a/sources/talk/20180417 What developers need to know about security.md
+++ b/sources/talk/20180417 What developers need to know about security.md
@@ -1,3 +1,6 @@
+Translating by MjSeven
+
+
What developers need to know about security
======
diff --git a/sources/talk/20181031 3 scary sysadmin stories.md b/sources/talk/20181031 3 scary sysadmin stories.md
new file mode 100644
index 0000000000..6810012f57
--- /dev/null
+++ b/sources/talk/20181031 3 scary sysadmin stories.md
@@ -0,0 +1,124 @@
+3 scary sysadmin stories
+======
+
+Terrifying ghosts are hanging around every data center, just waiting to haunt the unsuspecting sysadmin.
+
+
+
+> "It's all just a bunch of hocus pocus!" — Max in [Hocus Pocus][1]
+
+Over my many years as a system administrator, I've heard many horror stories about the different ghosts that have haunted new admins due to their inexperience.
+
+Here are three of the stories that stand out to me the most in helping build my character as a good sysadmin.
+
+### The ghost of the failed restore
+
+In a well-known data center (whose name I do not want to remember), one cold October night we had a production outage in which thousands of web servers stopped responding due to downtime in the main database. The database administrator asked me, the rookie sysadmin, to recover the database's last full backup and restore it to bring the service back online.
+
+But, at the end of the process, the database was still broken. I didn't worry, because there were other full backup files in stock. However, even after doing the process several times, the result didn't change.
+
+With great fear, I asked the senior sysadmin what to do to fix this behavior.
+
+"You remember when I showed you, a few days ago, how the full backup script was running? Something about how important it was to validate the backup?" responded the sysadmin.
+
+"Of course! You told me that I had to stay a couple of extra hours to perform that task," I answered.
+
+"Exactly! But you preferred to leave early without finishing that task," he said.
+
+"Oh my! I thought it was optional!" I exclaimed.
+
+"It was, it was…"
+
+**Moral of the story:** Even with the best solution that promises to make the most thorough backups, the ghost of the failed restoration can appear, darkening our job skills, if we don't make a habit of validating the backup every time.
+
+### The dark window
+
+Once upon a night watch, reflecting I was, lonely and tired,
+Looking at the file window on my screen.
+Clicking randomly, nearly napping, suddenly came a beeping
+From some server, sounding gently, sounding on my pager.
+"It's just a warning," I muttered, "sounding on my pager—
+Only this and nothing more."
+Soon again I heard a beeping somewhat louder than before.
+Opening my pager with great disdain,
+There was the message from a server of the saintly days of yore:
+"The legacy application, it's down, doesn't respond," and nothing more.
+There were many stories of this server,
+Incredibly, almost terrified,
+I went down to the data center to review it.
+I sat engaged in guessing, what would be the console to restart it
+Without keyboard, mouse, or monitor?
+"The task level up"—I think—"only this and nothing more."
+Then, thinking, "In another rack, I saw a similar server,
+I'll take its monitor and keyboard, nothing bad."
+Suddenly, this server shut down, and my pager beeped again:
+"The legacy application, it's down, doesn't respond", and nothing more.
+Bemused, I sat down to call my sysadmin mentor:
+"I wanted to use the console of another server, and now both are out."
+"Did you follow my advice? Don't use the graphics console, the terminal is better."
+Of course, I remember, it was last December;
+I felt fear, a horror that I had never felt before;
+"It is a tool of the past and nothing more."
+With great shame I understood my mistake:
+"Master," I said, "truly, your forgiveness I implore;
+but the fact is I thought it was not used anymore.
+A dark window and nothing more."
+"Learn it well, little kid," he spoke.
+"In the terminal you can trust, it's your friend and much, much more."
+Step by step, my master showed me to connect with the terminal,
+And restarting each one
+With infinite patience, he taught me
+That from that dark window I should not separate
+Never, nevermore.
+
+**Moral of the story:** Fluency in the command-line terminal is a skill often abandoned and considered archaic by newer generations, but it improves your flexibility and productivity as a sysadmin in obvious and subtle ways.
+
+### Troll bridge
+
+I'd been a sysadmin for three or four years when one of my old mentors was removed from work. The older man was known for making fun of the new guys in the group—the ones who brought from the university the desire to improve processes with the newly released community operating system. My manager assigned me the older man's office, a small space under the access stairs to the data center—"Troll Bridge," they called it—and the few legacy servers he still managed.
+
+While reviewing those legacy servers, I realized most of them had many scripts that did practically all the work. I just had to check that they did not go offline due to an electrical failure. I started using those methods, adapting them so my own servers would work the same way, making my tasks more efficient and, at the same time, requiring less of my time to complete them. My day soon became surfing the internet, watching funny videos, and even participating in internet forums.
+
+A couple of years went by, and I maintained my work in the same way. When a new server arrived, I automated its tasks so I could free myself and continue with my usual participation in internet forums. One day, when I shared one of my scripts in the internet forum, a new admin told me I could simplify it using one novelty language, a new trend that was becoming popular among the new folks.
+
+"I am a sysadmin, not a programmer," I answered. "They will never be the same."
+
+From that day on, I dedicated myself to ridiculing the kids who told me I should program in the new languages.
+
+"You do not know, newbie," I answered every time, "this job will never change."
+
+A few years later, my responsibilities increased, and my manager wanted me to modify the code of the applications hosted on my server.
+
+"That's what the job is about now," said my manager. "Development and operations are joining; if you're not willing to do it, we'll bring in some guy who does."
+
+"I will never do it, it's not my role," I said.
+
+"Well then…" he said, looking at me harshly.
+
+I've been here ever since. Hiding. Waiting. Under my bridge.
+
+I watch from the shadows as the people pass: up the stairs, muttering, or talking about the things the new applications do. Sometimes people pause beneath my bridge, to talk, or share code, or make plans. And I watch them, but they don't see me.
+
+I'm just going to stay here, in the darkness under the bridge. I can hear you all out there, everything you say.
+
+Oh yes, I can hear you.
+But I'm not coming out.
+
+**Moral of the story:** "The lazy sysadmin is the best sysadmin" is a well-known phrase that means if we are proactive enough to automate all our processes properly, we will have a lot of free time. The best sysadmins never seem to be very busy; they prefer to be relaxed and let the system do the work for them. "Work smarter not harder." However, if we don't use this free time productively, we can fall into obsoleteness and become something we do not want. The best sysadmins reinvent themselves constantly; they are always researching and learning.
+
+Following these stories' morals—and continually learning from my mistakes—helped me improve my management skills and create the good habits necessary for the sysadmin job.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/10/3-scary-sysadmin-stories
+
+作者:[Alex Callejas][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/darkaxl
+[b]: https://github.com/lujun9972
+[1]: https://en.wikipedia.org/wiki/Hocus_Pocus_(1993_film)
diff --git a/sources/talk/20181031 How open source hardware increases security.md b/sources/talk/20181031 How open source hardware increases security.md
new file mode 100644
index 0000000000..9e823436cf
--- /dev/null
+++ b/sources/talk/20181031 How open source hardware increases security.md
@@ -0,0 +1,84 @@
+How open source hardware increases security
+======
+Want to boost cybersecurity at your organization? Switch to open source hardware.
+
+
+Hardware hacks are particularly scary because they trump any software security safeguards—for example, they can render all accounts on a server password-less.
+
+Fortunately, we can benefit from what the software industry has learned from decades of fighting prolific software hackers: Using open source techniques can, perhaps counterintuitively, [make a system more secure][1]. Open source hardware and distributed manufacturing can provide protection from future attacks.
+
+### Trust—but verify
+
+Imagine you are a 007 agent holding classified documents. Would you feel more secure locking them in a safe whose manufacturer keeps the workings of the locks secret, or in a safe whose design is published openly so that everyone (including thieves) can judge its quality—thus enabling you to rely exclusively on technical complexity for protection?
+
+The former approach might be perfectly secure—you simply don’t know. But why would you trust any manufacturer that could be compromised now or in the future? In contrast, the open system is almost certain to be secure, especially if enough time has passed for it to be tested by multiple companies, governments, and individuals.
+
+To a large degree, the software world has seen the benefits of moving to free and open source software. That's why open source is run on all [supercomputers][2], [90% of the cloud, 82% of the smartphone market, and 62% of the embedded systems market][3]. Open source appears poised to dominate the future, with over [70% of the IoT][4].
+
+In fact, security is one of the core benefits of [open source][5]. While open source is not inherently more secure, it allows you to verify security yourself (or pay someone more qualified to do so). With closed source programs, you must trust, without verification, that a program works properly. To quote President Reagan: "Trust—but verify." The bottom line is that open source allows users to make more informed choices about the security of a system—choices that are based on their own independent judgment.
+
+### Open source hardware
+
+This concept also holds true for electronic devices. Most electronics customers have no idea what is in their products, and even technically sophisticated companies like Amazon may not know exactly what is in the hardware that runs their servers because they use proprietary products that are made by other companies.
+
+In the incident mentioned above, Chinese spies recently used a tiny microchip, not much bigger than a grain of rice, to infiltrate hardware made by SuperMicro (the Microsoft of the hardware world). These chips enabled outside infiltrators to access the core server functions of some of America’s leading companies and government operations, including DOD data centers, CIA drone operations, and the onboard networks of Navy warships. Operatives from the People’s Liberation Army or similar groups could have reverse-engineered or made identical or disguised modules (in this case, the chips looked like signal-conditioning couplers, a common motherboard component, rather than the spy devices they were).
+
+Having the source available helps customers much more than hackers, as most customers do not have the resources to reverse-engineer the electronics they buy. Without the device's source, or design, it's difficult to determine whether or not hardware has been hacked.
+
+Enter [open source hardware][6]: hardware design that is publicly available so that anyone can study, modify, test, distribute, make, or sell it, or hardware based on it. The hardware’s source is available to everyone.
+
+### Distributed manufacturing for cybersecurity
+
+Open source hardware and distributed manufacturing could have prevented the Chinese hack that rightfully terrified the security world. Organizations that require tight security, such as military groups, could then check the product's code and bring production in-house if necessary.
+
+This open source future may not be far off. Recently I co-authored, with Shane Oberloier, an [article][7] that discusses a low-cost open source benchtop device that enables anyone to make a wide range of open source electronic products. The number of open source electronics designs is proliferating on websites like [Hackaday][8], [Open Electronics][9], and the [Open Circuit Institute][10], as are communities based on specific products like [Arduino][11] and around companies like [Adafruit Industries][12] and [SparkFun Electronics][13].
+
+Every level of manufacturing that users can do themselves increases the security of the device. Not long ago, you had to be an expert to make even a simple breadboard design. Now, with open source mills for boards and electronics repositories, small companies and even individuals can make reasonably sophisticated electronic devices. While most builders are still using black-box chips on their devices, this is also changing as [open source chips gain traction][14].
+
+
+
+Creating electronics that are open source all the way down to the chip is certainly possible—and the more besieged we are by hardware hacks, perhaps it is even inevitable. Companies, governments, and other organizations that care about cybersecurity should strongly consider moving toward open source—perhaps first by establishing purchasing policies for software and hardware that makes the code accessible so they can test for security weaknesses.
+
+Although every customer and every manufacturer of an open source hardware product will have different standards of quality and security, this does not necessarily mean weaker security. Customers should choose whatever version of an open source product best meets their needs, just as users can choose their flavor of Linux. For example, do you run [Fedora][15] for free, or do you, like [90% of Fortune Global 500 companies][16], pay Red Hat for its version and support?
+
+Red Hat makes billions of dollars a year for the service it provides, on top of a product that can ostensibly be downloaded for free. Open source hardware can follow the [same business model][17]; it is just a less mature field, lagging [open source software by about 15 years][18].
+
+The core source code for hardware devices would be controlled by their manufacturer, following the "[benevolent dictator for life][19]" model. Code of any kind (infected or not) is screened before it becomes part of the root. This is true for hardware, too. For example, Aleph Objects manufacturers the popular [open source LulzBot brand of 3D printer][20], a commercial 3D printer that's essentially designed to be hacked. Users have made [dozens of modifications][21] (mods) to the printer, and while they are available, Aleph uses only the ones that meet its QC standards in each subsequent version of the printer. Sure, downloading a mod could mess up your own machine, but infecting the source code of the next LulzBot that way would be nearly impossible. Customers are also able to more easily check the security of the machines themselves.
+
+While [challenges certainly remain for the security of open source products][22], the open hardware model can help enhance cybersecurity—from the Pentagon to your living room.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/10/cybersecurity-demands-rapid-switch-open-source-hardware
+
+作者:[Joshua Pearce][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/jmpearce
+[b]: https://github.com/lujun9972
+[1]: https://dl.acm.org/citation.cfm?id=1188921
+[2]: https://www.zdnet.com/article/supercomputers-all-linux-all-the-time/
+[3]: https://www.serverwatch.com/server-news/linux-foundation-on-track-for-best-year-ever-as-open-source-dominates.html
+[4]: https://www.itprotoday.com/iot/survey-shows-linux-top-operating-system-internet-things-devices
+[5]: https://www.infoworld.com/article/2985242/linux/why-is-open-source-software-more-secure.html
+[6]: https://www.oshwa.org/definition/
+[7]: https://www.mdpi.com/2411-5134/3/3/64/htm
+[8]: https://hackaday.io/
+[9]: https://www.open-electronics.org/
+[10]: http://opencircuitinstitute.org/
+[11]: https://www.arduino.cc/
+[12]: http://www.adafruit.com/
+[13]: https://www.sparkfun.com/
+[14]: https://www.wired.com/story/using-open-source-designs-to-create-more-specialized-chips/
+[15]: https://getfedora.org/
+[16]: https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux
+[17]: https://openhardware.metajnl.com/articles/10.5334/joh.4/
+[18]: https://www.mdpi.com/2411-5134/3/3/44/htm
+[19]: https://www.theatlantic.com/technology/archive/2014/01/on-the-reign-of-benevolent-dictators-for-life-in-software/283139/
+[20]: https://www.lulzbot.com/
+[21]: https://forum.lulzbot.com/viewtopic.php?t=2378
+[22]: https://ieeexplore.ieee.org/abstract/document/8250205
diff --git a/sources/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md b/sources/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md
deleted file mode 100644
index 432788ac15..0000000000
--- a/sources/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md
+++ /dev/null
@@ -1,123 +0,0 @@
-Translating by MjSeven
-
-
-How To Disable Ads In Terminal Welcome Message In Ubuntu Server
-======
-
-
-
-If you’re using any latest Ubuntu server edition, you might have noticed some promotional links in welcome message which are not relevant to Ubuntu server platform. As you might already know **MOTD** , abbreviation of **M** essage **O** f **T** he **D** ay, displays a welcome message at every login in Linux systems. Usually, the welcome message contains the version of your OS, basic system information, official documentation link, and the links to read about the latest security updates etc. This is what we usually see at every time we login either via SSH or on the local machine. However, there some additional links started to appear in the terminal welcome message lately. I have already noticed this link few times, but I didn’t care about it and never clicked it though. Here is the Terminal welcome message shown in my Ubuntu 18.04 LTS server.
-
-
-
-As you can see in the above screenshot, there is also a bit.ly link and Ubuntu wiki link in the welcome message. Some of you may surprise and wondering what this is. There is nothing to worry about the links in the welcome message. It may look sort of ad-like, but those are not really commercial ads. The links are actually pointing to [**Ubuntu official blog**][1] and [**Ubuntu wiki**][2]. As I said earlier, one of link is not relevant and doesn’t has any details related to Ubuntu server. That’s why I called them ads in the first place.
-
-Even though most of us won’t visit bit.ly links, but some people may visit those links out of curiosity and ended up disappointed realizing that it simply points you to an external link. You can use any URL unshortners services, such as unshorten.it, to see where they lead before visiting the actual link. Alternatively, you can just type a plus sign ( **+** ) at the end of the bit.ly link to see where they lead and some statistics about the link.
-
-
-
-### What is MOTD and how it works?
-
-Back in 2009, **Dustin Kirkland** from Canonical introduced the concept of MOTD in Ubuntu. It’s a flexible framework that enables the administrators or distro packages to add executable scripts in /etc/update-motd.d/* location to generate informative, interesting messages displayed at login. It was originally implemented for Landscape (a commercial service from Canonical), however other distribution maintainers found it useful and adopted this feature in their own distributions as well.
-
-If you look in **/etc/update-motd.d/** location in your Ubuntu system, you’ll see a set of scripts. One prints the generic “welcome” banner. The next one prints 3 links showing where to find help for the OS. The other one counts and displays the number of package updates available for the local system. Another one tells you if a reboot is required and so on.
-
-From Ubuntu 17.04 onwards, the developers have added **/etc/update-motd.d/50-motd-news** , a script to include some additional information in the welcome message. They additional information are;
-
- 1. Important critical information, such as
-
-ShellShock, Heartbleed etc.
-
- 2. End-of-Life (EOL) messages, new feature availability, etc.
-
- 3. Some fun and informative posts published in Ubuntu official blog and other news about Ubuntu.
-
-
-
-
-Asynchronously, about 60 seconds after boot, a systemd timer runs “/etc/update-motd.d/50-motd-news –force” script. It sources 3 config variables defined in /etc/default/motd-news script. The default values are: ENABLED=1, URLS=”, WAIT=”5″.
-
-Here is the contents of /etc/default/motd-news file:
-```
-$ cat /etc/default/motd-news
-# Enable/disable the dynamic MOTD news service
-# This is a useful way to provide dynamic, informative
-# information pertinent to the users and administrators
-# of the local system
-ENABLED=1
-
-# Configure the source of dynamic MOTD news
-# White space separated list of 0 to many news services
-# For security reasons, these must be https
-# and have a valid certificate
-# Canonical runs a service at motd.ubuntu.com, and you
-# can easily run one too
-URLS="https://motd.ubuntu.com"
-
-# Specify the time in seconds, you're willing to wait for
-# dynamic MOTD news
-# Note that news messages are fetched in the background by
-# a systemd timer, so this should never block boot or login
-WAIT=5
-
-```
-
-Good thing is MOTD is fully customizable, so you can disable it entirely (ENABLED=0), change or add scripts as per your wish, and change the wait time in seconds
-
-If MOTD is enabled, that systemd timer job will loop over each of the URLS, trim them to 80 characters per line, and a maximum of 10 lines, and concatenate them to a cache file in /var/cache/motd-news. This systemd timer job will re-run and update the /var/cache/motd-news every 12 hours. Upon user login, the contents of /var/cache/motd-news is just printed to screen. This is how MOTD works.
-
-Also, a custom user-agent string is included in **/etc/update-motd.d/50-motd-news** file to report information about your computer. If you look into **/etc/update-motd.d/50-motd-news** file, you will see the following code.
-```
-# Piece together the user agent
-USER_AGENT="curl/$curl_ver $lsb $platform $cpu $uptime"
-
-```
-
-That means, the MOTD retriever reports your **operating system release** , **hardware platform** , **CPU type** and **uptime** to Canonical.
-
-Hope you got the basic idea about MOTD.
-
-Let us now get back to the topic. I don’t want this feature. How do I disable it? If the promotional links in the welcome message still bothers you and you wanted to disable them permanently, here is a quick way to disable it.
-
-### Disable Ads In Terminal Welcome Message In Ubuntu Server
-
-To disable these ads, edit file:
-```
-$ sudo vi /etc/default/motd-news
-
-```
-
-Find the following line and set its value as 0 (zero).
-```
-[...]
-ENABLED=0
-[...]
-
-```
-
-Save and close the file. Now, reboot your system and see if the welcome message stills showing the links from Ubuntu blog.
-
-
-
-See? There are no links from Ubuntu blog and Ubuntu wiki now.
-
-And, that’s all for now. Hope this helps. More good stuffs to come. Stay tuned!
-
-Cheers!
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/how-to-disable-ads-in-terminal-welcome-message-in-ubuntu-server/
-
-作者:[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://blog.ubuntu.com/
-[2]:https://wiki.ubuntu.com/
diff --git a/sources/tech/20180824 Joplin- Encrypted Open Source Note Taking And To-Do Application.md b/sources/tech/20180824 Joplin- Encrypted Open Source Note Taking And To-Do Application.md
index 5c520c8021..ae6a1f32d9 100644
--- a/sources/tech/20180824 Joplin- Encrypted Open Source Note Taking And To-Do Application.md
+++ b/sources/tech/20180824 Joplin- Encrypted Open Source Note Taking And To-Do Application.md
@@ -1,3 +1,5 @@
+translating---geekpi
+
Joplin: Encrypted Open Source Note Taking And To-Do Application
======
**[Joplin][1] is a free and open source note taking and to-do application available for Linux, Windows, macOS, Android and iOS. Its key features include end-to-end encryption, Markdown support, and synchronization via third-party services like NextCloud, Dropbox, OneDrive or WebDAV.**
diff --git a/sources/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md b/sources/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md
deleted file mode 100644
index ffcdf9f47d..0000000000
--- a/sources/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md
+++ /dev/null
@@ -1,255 +0,0 @@
-Translating by way-ww
-
-How To Run MS-DOS Games And Programs In Linux
-======
-
-
-
-If you ever wanted to try some good-old MS-DOS games and defunct C++ compilers like Turbo C++ in Linux? Good! This tutorial will teach you how to run MS-DOS games and programs under Linux environment using **DOSBox**. It is an x86 PC DOS-emulator that can be used to run classic DOS games or programs. DOSBox emulates an Intel x86 PC with sound, graphics, mouse, joystick, and modem etc., that allows you to run many old MS-DOS games and programs that simply cannot be run on any modern PCs and operating systems, such as Microsoft Windows XP and later, Linux and FreeBSD. It is free, written using C++ programming language and distributed under GPL.
-
-### Install DOSBox In Linux
-
-DOSBox is available in the default repositories of most Linux distributions.
-
-On Arch Linux and its variants like Antergos, Manjaro Linux:
-```
-$ sudo pacman -S dosbox
-
-```
-
-On Debian, Ubuntu, Linux Mint:
-```
-$ sudo apt-get install dosbox
-
-```
-
-On Fedora:
-```
-$ sudo dnf install dosbox
-
-```
-
-### Configure DOSBox
-
-There is no initial configuration required to use DOSBox and it just works out of the box. The default configuration file named `dosbox-x.xx.conf` exists in your **`~/.dosbox`** folder. In this configuration file, you can edit/modify various settings, such as starting DOSBox in fullscreen mode, use double buffering in fullscreen, set preferred resolution to use for fullscreen, mouse sensitivity, enable or disable sound, speaker, joystick and a lot more. As I mentioned earlier, the default settings will work just fine. You need not to make any changes.
-
-### Run MS-DOS Games And Programs In Linux
-
-To launch DOSBox, run the following command from the Terminal:
-```
-$ dosbox
-
-```
-
-This is how DOSBox interface looks like.
-
-
-
-As you can see, DOSBox comes with its own DOS-like command prompt with a virtual `Z:\` Drive, so if you’re familiar with MS-DOS, you wouldn’t find any difficulties to work in DOSBox environment.
-
-Here is the output of `dir`command (Equivalent of `ls` command in Linux) output:
-
-
-
-If you’re a new user and it is the first time you use DOSBox, you can view the short introduction about DOSBox by entering the following command in DOSBox prompt:
-```
-intro
-
-```
-
-Press ENTER to go through next page of the introduction section.
-
-To view the list of most often used commands in DOS, use this command:
-```
-help
-
-```
-
-To view list of all supported commands in DOSBox, type:
-```
-help /all
-
-```
-
-Remember, these commands should be used in the DOSBox prompt, not in your Linux Terminal.
-
-DOSBox also supports a good set of keyboard bindings. Here is the default keyboard shortcuts to effectively use DOSBox.
-
-
-
-To exit from DOSBox, simply type and hit ENTER:
-```
-exit
-
-```
-
-By default, DOSBox starts with a normal window-sized screen like above.
-
-To start dosbox directly in fullscreen, edit your `dosbox-x.xx.conf` file and set the value of **fullscreen** variable as **enable**. Now, DosBox will start in fullscreen mode. To go back to normal screen, press **ALT+ENTER**.
-
-Hope you get the basic usage of DOSBox.
-
-Let us go ahead and install some DOS programs and games.
-
-First, we need to create directories to save the programs and games in our Linux system. I am going to create two directories named **`~/dosprograms`** and **`~/dosgames`** , the first one for storing programs and latter for storing games.
-```
-$ mkdir ~/dosprograms ~/dosgames
-
-```
-
-For the purpose of this guide, I will show you how to install **Turbo C++** program and Mario game. First, we will see how to install Turbo.
-
-Download the latest Turbo C++ compiler, extract it and save the contents file in **`~/dosprograms`** directory. I have save the contents turbo c++ in my **~/dosprograms/TC/** directory.
-```
-$ ls dosprograms/tc/
-BGI BIN CLASSLIB DOC EXAMPLES FILELIST.DOC INCLUDE LIB README README.COM
-
-```
-
-Start Dosbox:
-```
-$ dosbox
-
-```
-
-And mount the **`~/dosprograms`** directory as virtual drive **C:\** in DOSBox.
-```
-Z:\>mount c ~/dosprograms
-
-```
-
-You will see an output something like below.
-```
-Drive C is mounted as local directory /home/sk/dosprograms.
-
-```
-
-
-
-Now, change to the C drive using command:
-```
-Z:\>c:
-
-```
-
-And then, switch to **tc/bin** directory:
-```
-Z:\>cd tc/bin
-
-```
-
-Finally, run turbo c++ executable file:
-```
-Z:\>tc.exe
-
-```
-
-**Note:** Just type first few letters and hit ENTER to autocomplete the file name.
-
-
-
-You will now be in Turbo C++ console.
-
-
-
-Create new file (ATL+F) and start coding:
-
-
-
-Similarly, you can install and run other classic DOS programs.
-
-**Troubleshooting:**
-
-You might be encountered with following error while running turbo c++ or any other dos programs:
-```
-DOSBox switched to max cycles, because of the setting: cycles=auto. If the game runs too fast try a fixed cycles amount in DOSBox's options. Exit to error: DRC64:Unhandled memory reference
-
-```
-
-To fix this, edit your **~/.dosbox/dosbox-x.xx.conf** file:
-```
-$ nano ~/.dosbox/dosbox-0.74.conf
-
-```
-
-Find the following variable and change its value from:
-```
-core=auto
-
-```
-
-to
-```
-core=normal
-
-```
-
-Save and close the file. Now you can be able to run the dos programs without any problems.
-
-Now, let us see how to run a dos-based game, for example **Mario Bros VGA**.
-
-Download Mario game from [**here**][1] and extract the contents in **~/dosgames** directory in your Linux machine.
-
-Start DOSBox:
-```
-$ dosbox
-
-```
-
-We have used virtual drive **c:** for dos programs. For games, let us use **d:** as virtual drive.
-
-At the DOSBox prompt, run the following command to mount **~/dosgames** directory as virtuald drive **d**.
-```
-Z:\>mount d ~/dosgames
-
-```
-
-Switch to D: drive:
-```
-Z:\>d:
-
-```
-
-And then go to mario game directory and run the **mario.exe** file to launch the game.
-```
-Z:\>cd mario
-
-Z:\>mario.exe
-
-```
-
-
-
-Start playing the game:
-
-
-
-Similarly, you can run any dos-based games as described above. You can view the complete list of supported games that can be run using DOSBox [**here**][2].
-
-### Conclusion
-
-Even though DOSBOX is not a complete replacement for MS-DOS and it lacks many of the features found in MS-DOS, it is just enough to install and run most DOS games and programs.
-
-For more details, refer the official [**DOSBox manual**][3].
-
-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-run-ms-dos-games-and-programs-in-linux/
-
-作者:[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.dosgames.com/game/mario-bros-vga
-[2]: https://www.dosbox.com/comp_list.php
-[3]: https://www.dosbox.com/DOSBoxManual.html
diff --git a/sources/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md b/sources/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md
deleted file mode 100644
index a9b20ac54d..0000000000
--- a/sources/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md
+++ /dev/null
@@ -1,110 +0,0 @@
-KeeWeb – An Open Source, Cross Platform Password Manager
-======
-
-
-
-If you’ve been using the internet for any amount of time, chances are, you have a lot of accounts on a lot of websites. All of those accounts must have passwords, and you have to remember all those passwords. Either that, or write them down somewhere. Writing down passwords on paper may not be secure, and remembering them won’t be practically possible if you have more than a few passwords. This is why Password Managers have exploded in popularity in the last few years. A password Manager is like a central repository where you store all your passwords for all your accounts, and you lock it with a master password. With this approach, the only thing you need to remember is the Master password.
-
-**KeePass** is one such open source password manager. KeePass has an official client, but it’s pretty barebones. But there are a lot of other apps, both for your computer and for your phone, that are compatible with the KeePass file format for storing encrypted passwords. One such app is **KeeWeb**.
-
-KeeWeb is an open source, cross platform password manager with features like cloud sync, keyboard shortcuts and plugin support. KeeWeb uses Electron, which means it runs on Windows, Linux, and Mac OS.
-
-### Using KeeWeb Password Manager
-
-When it comes to using KeeWeb, you actually have 2 options. You can either use KeeWeb webapp without having to install it on your system and use it on the fly or simply install KeeWeb client in your local system.
-
-**Using the KeeWeb webapp**
-
-If you don’t want to bother installing a desktop app, you can just go to [**https://app.keeweb.info/**][1] and use it as a password manager.
-
-
-
-It has all the features of the desktop app. Obviously, this requires you to be online when using the app.
-
-**Installing KeeWeb on your Desktop**
-
-If you like the comfort and offline availability of using a desktop app, you can also install it on your desktop.
-
-If you use Ubuntu/Debian, you can just go to [**releases pages**][2] and download KeeWeb latest **.deb** file, which you can install via this command:
-
-```
-$ sudo dpkg -i KeeWeb-1.6.3.linux.x64.deb
-
-```
-
-If you’re on Arch, it is available in the [**AUR**][3], so you can install using any helper programs like [**Yay**][4]:
-
-```
-$ yay -S keeweb
-
-```
-
-Once installed, launch it from Menu or application launcher. This is how KeeWeb default interface looks like:
-
-
-
-### General Layout
-
-KeeWeb basically shows a list of all your passwords, along with all your tags to the left. Clicking on a tag will filter the list to only passwords of that tag. To the right, all the fields for the selected account are shown. You can set username, password, website, or just add a custom note. You can even create your own fields and mark them as secure fields, which is great when storing things like credit card information. You can copy passwords by just clicking on them. KeeWeb also shows the date when an account was created and modified. Deleted passwords are kept in the trash, where they can be restored or permanently deleted.
-
-
-
-### KeeWeb Features
-
-**Cloud Sync**
-
-One of the main features of KeeWeb is the support for a wide variety of remote locations and cloud services.
-Other than loading local files, you can open files from:
-
- 1. WebDAV Servers
- 2. Google Drive
- 3. Dropbox
- 4. OneDrive
-
-
-
-This means that if you use multiple computers, you can synchronize the password files between them, so you don’t have to worry about not having all the passwords available on all devices.
-
-**Password Generator**
-
-
-
-Along with encrypting your passwords, it’s also important to create new, strong passwords for every single account. This means that if one of your account gets hacked, the attacker won’t be able to get in to your other accounts using the same password.
-
-To achieve this, KeeWeb has a built-in password generator, that lets you generate a custom password of a specific length, including specific type of characters.
-
-**Plugins**
-
-
-
-You can extend KeeWeb functionality with plugins. Some of these plugins are translations for other languages, while others add new functionality, like checking **** for exposed passwords.
-
-**Local Backups**
-
-
-
-Regardless of where your password file is stored, you should probably keep local backups of the file on your computer. Luckily, KeeWeb has this feature built-in. You can backup to a specific path, and set it to backup periodically, or just whenever the file is changed.
-
-
-### Verdict
-
-I have actually been using KeeWeb for several years now. It completely changed the way I store my passwords. The cloud sync is basically the feature that makes it a done deal for me. I don’t have to worry about keeping multiple unsynchronized files on multiple devices. If you want a great looking password manager that has cloud sync, KeeWeb is something you should look at.
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/keeweb-an-open-source-cross-platform-password-manager/
-
-作者:[EDITOR][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/editor/
-[1]: https://app.keeweb.info/
-[2]: https://github.com/keeweb/keeweb/releases/latest
-[3]: https://aur.archlinux.org/packages/keeweb/
-[4]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
diff --git a/sources/tech/20181017 Design faster web pages, part 2- Image replacement.md b/sources/tech/20181017 Design faster web pages, part 2- Image replacement.md
deleted file mode 100644
index 119646347d..0000000000
--- a/sources/tech/20181017 Design faster web pages, part 2- Image replacement.md
+++ /dev/null
@@ -1,178 +0,0 @@
-Translating by StdioA
-
-Design faster web pages, part 2: Image replacement
-======
-
-
-Welcome back to this series on building faster web pages. The last [article][1] talked about what you can achieve just through image compression. The example started with 1.2MB of browser fat, and reduced down to a weight of 488.9KB. That’s still not fast enough! This article continues the browser diet to lose more fat. You might think that partway through this process things are a bit crazy, but once finished, you’ll understand why.
-
-### Preparation
-
-Once again this article starts with an analysis of the web pages. Use the built-in screenshot function of Firefox to make a screenshot of the entire page. You’ll also want to install Inkscape [using sudo][2]:
-
-```
-$ sudo dnf install inkscape
-```
-
-If you want to know how to use Inkscape, there are already several [articles][3] in Fedora Magazine. This article will only explain some basic tasks for optimizing an SVG for web use.
-
-### Analysis
-
-Once again, this example uses the [getfedora.org][4] web page.
-
-![Getfedora page with graphics marked][5]
-
-This analysis is better done graphically, which is why it starts with a screenshot. The screenshot above marks all graphical elements of the page. In two cases or better in four cases, the Fedora websites team already used measures to replace images. The icons for social media are glyphs from a font and the language selector is an SVG.
-
-There are several options for replacing:
-
-
-+ CSS3
-+ Fonts
-+ SVG
-+ HTML5 Canvas
-
-
-#### HTML5 Canvas
-
-Briefly, HTML5 Canvas is an HTML element that allows you to draw with the help of scripts, mostly JavaScript, although it’s not widely used yet. As you draw with the help of scripts, the element can also be animated. Some examples of what you can achieve with HTML Canvas include this [triangle pattern,][6] [animated wave][7], and [text animation][8]. In this case, though, it seems not to be the right choice.
-
-#### CSS3
-
-With Cascading Style Sheets you can draw shapes and even animate them. CSS is often used for drawing elements like buttons. However, more complicated graphics via CSS are usually only seen in technical demonstration pages. This is because graphics are still better done visually as with coding.
-
-#### Fonts
-
-The usage of fonts for styling web pages is another way, and [Fontawesome][9] is quiet popular. For instance, you could replace the Flavor and the Spin icons with a font in this example. There is a negative side to using this method, which will be covered in the next part of this series, but it can be done easily.
-
-#### SVG
-
-This graphics format has existed for a long time and was always supposed to be used in the browser. For a long time not all browsers supported it, but that’s history. So the best way to replace pictures in this example is with SVG.
-
-### Optimizing SVG for the web
-
-To optimize an SVG for internet use requires several steps.
-
-SVG is an XML dialect. Components like circle, rectangle, or text paths are described with nodes. Each node is an XML element. To keep the code clean, an SVG should use as few nodes as possible.
-
-The SVG example is a circular icon with a coffee mug on it. You have 3 options to describe it with SVG.
-
-#### Circle element with the mug on top
-
-```
-
-```
-
-#### Circular path with the mug on top
-
-```
-
-```
-
-#### single path
-
-```
-
-```
-
-You probably can see the code becomes more complex and needs more characters to describe it. More characters in a file result, of course, in a larger size.
-
-#### Node cleaning
-
-If you open an example SVG in Inkscape and press F2, that activates the Node tool. You should see something like this:
-
-![Inkscape - Node tool activated][10]
-
-There are 5 nodes that aren’t necessary in this example — the ones in the middle of the lines. To remove them, select them one by one with the activated Node tool and press the **Del** key. After this, select the nodes which define this lines and make them corners again using the toolbar tool.
-
-![Inkscape - Node tool make node a corner][11]
-
-Without fixing the corners, handles are used that define the curve, which gets saved and will increase file size. You have to do this node cleaning by hand, as it can’t be effectively automated. Now you’re ready for the next stage.
-
-Use the Save as function and choose Optimized svg. A dialogue window opens where you can select what to remove or keep.
-
-![Inkscape - Dialog window for save as optimized SVG][12]
-
-Even the little SVG in this example got down from 3.2 KB to 920 bytes, less than a third of its original size.
-
-Back to the getfedora page: The grey voronoi pattern used in the background of the main section, after our optimization from Part 1 of this series, is down to 164.1 KB versus the original 211.12 KB size.
-
-The original SVG it was exported from is 1.9 MB in size. After these SVG optimization steps, it’s only 500.4KB. Too big? Well, the current blue background is 564.98 KB in size. But there’s only a small difference between the SVG and the PNG.
-
-#### Compressed files
-
-```
-$ ls -lh
-insgesamt 928K
--rw-r--r--. 1 user user 161K 19. Feb 19:44 grey-pattern.png
--rw-rw-r--. 1 user user 160K 18. Feb 12:23 grey-pattern.png.gz
--rw-r--r--. 1 user user 489K 19. Feb 19:43 greyscale-pattern-opti.svg
--rw-rw-r--. 1 user user 112K 19. Feb 19:05 greyscale-pattern-opti.svg.gz
-```
-
-This is the output of a small test I did to visualize this topic. You should probably see that the raster graphic — the PNG — is already compressed and can’t be anymore. The opposite is the SVG, an XML file. This is just text and can compressed, to less then a fourth of its size. As a result it is now around 50 KB smaller in size than the PNG.
-
-Modern browsers can handle compressed files natively. Therefore, a lot of web servers have switched on mod_deflate (Apache) and gzip (nginx). That’s how we save space during delivery. Check out if it’s enabled at your server [here][13].
-
-### Tooling for production
-
-First of all, nobody wants to always optimize SVG in Inkscape. You can run Inkscape without a GUI in batch mode, but there’s no option to convert from Inkscape SVG to optimized SVG. You can only export raster graphics this way. But there are alternatives:
-
- * SVGO (which seems not actively developed)
- * Scour
-
-
-
-This example will use scour for optimization. To install it:
-
-```
-$ sudo dnf install scour
-```
-
-To automatically optimize an SVG file, run scour similarly to this:
-
-```
-[user@localhost ]$ scour INPUT.svg OUTPUT.svg -p 3 --create-groups --renderer-workaround --strip-xml-prolog --remove-descriptive-elements --enable-comment-stripping --disable-embed-rasters --no-line-breaks --enable-id-stripping --shorten-ids
-```
-
-This is the end of part two, in which you learned how to replace raster images with SVG and how to optimize it for usage. Stay tuned to the Fedora Magazine for part three, coming soon.
-
-
---------------------------------------------------------------------------------
-
-via: https://fedoramagazine.org/design-faster-web-pages-part-2-image-replacement/
-
-作者:[Sirko Kemter][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://fedoramagazine.org/author/gnokii/
-[b]: https://github.com/lujun9972
-[1]: https://wp.me/p3XX0v-5fJ
-[2]: https://fedoramagazine.org/howto-use-sudo/
-[3]: https://fedoramagazine.org/?s=Inkscape
-[4]: https://getfedora.org
-[5]: https://fedoramagazine.org/wp-content/uploads/2018/02/getfedora_mag.png
-[6]: https://codepen.io/Cthulahoop/pen/umcvo
-[7]: https://codepen.io/jackrugile/pen/BvLHg
-[8]: https://codepen.io/tholman/pen/lDLhk
-[9]: https://fontawesome.com/
-[10]: https://fedoramagazine.org/wp-content/uploads/2018/02/svg-optimization-nodes.png
-[11]: https://fedoramagazine.org/wp-content/uploads/2018/02/node_cleaning.png
-[12]: https://fedoramagazine.org/wp-content/uploads/2018/02/svg-optimizing-dialog.png
-[13]: https://checkgzipcompression.com/?url=http%3A%2F%2Fgetfedora.org
diff --git a/sources/tech/20181029 Create animated, scalable vector graphic images with MacSVG.md b/sources/tech/20181029 Create animated, scalable vector graphic images with MacSVG.md
new file mode 100644
index 0000000000..df990db3bc
--- /dev/null
+++ b/sources/tech/20181029 Create animated, scalable vector graphic images with MacSVG.md
@@ -0,0 +1,69 @@
+Create animated, scalable vector graphic images with MacSVG
+======
+
+Open source SVG: The writing is on the wall
+
+
+
+The Neo-Babylonian regent [Belshazzar][1] did not heed [the writing on the wall][2] that magically appeared during his great feast. However, if he had had a laptop and a good internet connection in 539 BC, he might have staved off those pesky Persians by reading the SVG on the browser.
+
+Animating text and objects on web pages is a great way to build user interest and engagement. There are several ways to achieve this, such as a video embed, an animated GIF, or a slideshow—but you can also use [scalable vector graphics][3] (SVG).
+
+An SVG image is different from, say, a JPG, because it is scalable without losing its resolution. A vector image is created by points, not dots, so no matter how large it gets, it will not lose its resolution or pixelate. An example of a good use of scalable, static images would be logos on websites.
+
+### Move it, move it
+
+You can create SVG images with several drawing programs, including open source [Inkscape][4] and Adobe Illustrator. Getting your images to “do something” requires a bit more effort. Fortunately, there are open source solutions that would get even Belshazzar’s attention.
+
+[MacSVG][5] is one tool that will get your images moving. You can find the source code on [GitHub][6].
+
+Developed by Douglas Ward of Conway, Arkansas, MacSVG is an “open source Mac OS app for designing HTML5 SVG art and animation,” according to its [website][5].
+
+I was interested in using MacSVG to create an animated signature. I admit that I found the process a bit confusing and failed at my first attempts to create an actual animated SVG image.
+
+
+
+It is important to first learn what makes “the writing on the wall” actually write.
+
+The attribute behind the animated writing is [stroke-dasharray][7]. Breaking the term into three words helps explain what is happening: Stroke refers to the line or stroke you would make with a pen, whether physical or digital. Dash means breaking the stroke down into a series of dashes. Array means producing the whole thing into an array. That’s a simple overview, but it helped me understand what was supposed to happen and why.
+
+With MacSVG, you can import a graphic (.PNG) and use the pen tool to trace the path of the writing. I used a cursive representation of my first name. Then it was just a matter of applying the attributes to animate the writing, increase and decrease the thickness of the stroke, change its color, and so on. Once completed, the animated writing was exported as an .SVG file and was ready for use on the web. MacSVG can be used for many different types of SVG animation in addition to handwriting.
+
+### The writing is on the WordPress
+
+I was ready to upload and share my SVG example on my [WordPress][8] site, but I discovered that WordPress does not allow for SVG media imports. Fortunately, I found a handy plugin: Benbodhi’s [SVG Support][9] allowed a quick, easy import of my SVG the same way I would import a JPG to my Media Library. I was able to showcase my [writing on the wall][10] to Babylonians everywhere.
+
+I opened the source code of my SVG in [Brackets][11], and here are the results:
+
+```
+
+
+
+```
+
+What would you use MacSVG for?
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/10/macsvg-open-source-tool-animation
+
+作者:[Jeff Macharyas][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/rikki-endsley
+[b]: https://github.com/lujun9972
+[1]: https://en.wikipedia.org/wiki/Belshazzar
+[2]: https://en.wikipedia.org/wiki/Belshazzar%27s_feast
+[3]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics
+[4]: https://inkscape.org/
+[5]: https://macsvg.org/
+[6]: https://github.com/dsward2/macSVG
+[7]: https://gist.github.com/mbostock/5649592
+[8]: https://macharyas.com/
+[9]: https://wordpress.org/plugins/svg-support/
+[10]: https://macharyas.com/index.php/2018/10/14/open-source-svg/
+[11]: http://brackets.io/
diff --git a/sources/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md b/sources/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md
deleted file mode 100644
index f76f30055d..0000000000
--- a/sources/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md
+++ /dev/null
@@ -1,100 +0,0 @@
-FSSlc translating
-
-How To Analyze And Explore The Contents Of Docker Images
-======
-
-
-As you may already know, a Docker container image is a lightweight, standalone, executable package of software that has everything required to run an application. That’s why container images are often used by developers for building and distributing applications. If you’re curious to know what is in a Docker image, this brief guide might help you. Today, we are going to learn to analyze and explore the contents of Docker images layer by layer using a tool named **“Dive”**. By analyzing a Docker image, we can discover possible duplicate files across the layers and remove them to reduce the size of the docker image. The Dive utility is not just a Docker Image analyzer, but also helps us to build one.
-
-### Installing Dive
-
-Get the latest version from the [**releases page**][1] and install it as shown below depending upon the distribution you use.
-
-If you’re on **Debian** or **Ubuntu** , run the following commands to download and install it.
-
-```
-$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.deb
-
-$ sudo apt install ./dive_0.0.8_linux_amd64.deb
-```
-
-**On RHEL/CentOS:**
-
-```
-$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
-
-$ sudo rpm -i dive_0.0.8_linux_amd64.rpm
-```
-
-Dive can also installed using [**Linuxbrew**][2] package manager.
-
-```
-$ brew tap wagoodman/dive
-
-$ brew install dive
-```
-
-For other installation methods, refer the project’s GitHub page given at the end of this guide.
-
-### Analyze And Explore The Contents Of Docker Images
-
-To analyze a Docker image, simply run dive command with Docker “Image ID”. You can get your Docker images’ IDs using “sudo docker images” command.
-
-```
-$ sudo dive ea4c82dcd15a
-```
-
-Here, **ea4c82dcd15a** is Docker image id.
-
-The Dive command will quickly analyze the given Docker image and display its contents in the Terminal.
-
-As you can see in the above screenshot, the layers of given docker image and its details, wasted space are shown in the left pane. On the right pane, the contents of each layer in the given Docker image. You can switch between the left and right pane using **Ctrl+SPACEBAR** key and **UP/DOWN** arrow keys to navigate through the directory tree.
-
-The list of keyboard shortcuts to use “Dive”.
-
- * **Ctrl+Spacebar** – Switch between left and right panes,
- * **Spacebar** – Expand/Collapse directory tree,
- * **Ctrl+A** – Show/hide added files,
- * **Ctrl+R** – Show/hide removed files,
- * **Ctrl+M** – Show/hide modified files,
- * **Ctrl+U** – Show/hide unmodified files,
- * **Ctrl+ L** – Show layer changes,
- * **Ctrl+A** – Show layer changes,
- * **Ctrl+/** – Filter files,
- * **Ctrl+C** – Exit.
-
-
-
-In the above example, I have used “sudo” permission, because my Docker images are stored in **/var/lib/docker/** directory. If you have them on your $HOME directory or anywhere not owned “root” user, you need not to use “sudo”.
-
-You can also build a Docker image and do an immediate analysis with one command: ``
-
-```
-$ dive build -t
-```
-
-Dive tool is still in beta stage, so there will be bugs. If you came across any bugs, report them in the project’s github page.
-
-And, that’s all for today. You know now how to explore and analyze the contents of Docker container image and how to build it using Dive tool. Hope this helps.
-
-More good stuffs to come. Stay tuned!
-
-Cheers!
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/how-to-analyze-and-explore-the-contents-of-docker-images/
-
-作者:[SK][a]
-选题:[lujun9972][b]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://www.ostechnix.com/author/sk/
-[b]: https://github.com/lujun9972
-[1]: https://github.com/wagoodman/dive/releases
-[2]: https://www.ostechnix.com/linuxbrew-common-package-manager-linux-mac-os-x/
diff --git a/sources/tech/20181031 8 creepy commands that haunt the terminal - Opensource.com.md b/sources/tech/20181031 8 creepy commands that haunt the terminal - Opensource.com.md
new file mode 100644
index 0000000000..a2e9f1aa2b
--- /dev/null
+++ b/sources/tech/20181031 8 creepy commands that haunt the terminal - Opensource.com.md
@@ -0,0 +1,60 @@
+8 creepy commands that haunt the terminal | Opensource.com
+======
+
+Welcome to the spookier side of Linux.
+
+
+
+It’s that time of year again: The weather gets chilly, the leaves change colors, and kids everywhere transform into tiny ghosts, goblins, and zombies. But did you know that Unix (and Linux) and its various offshoots are also chock-full of creepy crawly things? Let’s take a quick look at some of the spookier aspects of the operating system we all know and love.
+
+### daemon
+
+Unix just wouldn’t be the same without all the various daemons that haunt the system. A `daemon` is a process that runs in the background and provides useful services to both the user and the operating system itself. Think SSH, FTP, HTTP, etc.
+
+### zombie
+
+Every now and then a zombie, a process that has been killed but refuses to go away, shows up. When this happens, you have no choice but to dispatch it using whatever tools you have available. A zombie usually indicates that something is wrong with the process that spawned it.
+
+### kill
+
+Not only can you use the `kill` command to dispatch a zombie, but you can also use it to kill any process that’s adversely affecting your system. Have a process that’s using too much RAM or CPU cycles? Dispatch it with the `kill` command.
+
+### cat
+
+The `cat` command has nothing to do with felines and everything to do with combining files: `cat` is short for "concatenate." You can even use this handy command to view the contents of a file.
+
+
+### tail
+
+
+The `tail` command is useful when you want to see last n number of lines in a file. It’s also great when you want to monitor a file.
+
+### which
+
+No, not that kind of witch, but the command that prints the location of the files associated with any command passed to it. `which python`, for example, will print the locations of every version of Python on your system.
+
+### crypt
+
+The `crypt` command, known these days as `mcrypt`, is handy when you want to scramble (encrypt) the contents of a file so that no one but you can read it. Like most Unix commands, you can use `crypt` standalone or within a system script.
+
+### shred
+
+The `shred` command is handy when you not only want to delete a file but you also want to ensure that no one will ever be able to recover it. Using the `rm` command to delete a file isn’t enough. You also need to overwrite the space that the file previously occupied. That’s where `shred` comes in.
+
+These are just a few of the spooky things you’ll find hiding inside Unix. Do you know more creepy commands? Feel free to let me know.
+
+Happy Halloween!
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/10/spookier-side-unix-linux
+
+作者:[Patrick H.Mullins][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/pmullins
+[b]: https://github.com/lujun9972
diff --git a/sources/tech/20181031 Working with data streams on the Linux command line.md b/sources/tech/20181031 Working with data streams on the Linux command line.md
new file mode 100644
index 0000000000..87403558d7
--- /dev/null
+++ b/sources/tech/20181031 Working with data streams on the Linux command line.md
@@ -0,0 +1,302 @@
+Working with data streams on the Linux command line
+======
+Learn to connect data streams from one utility to another using STDIO.
+
+
+**Author’s note:** Much of the content in this article is excerpted, with some significant edits to fit the Opensource.com article format, from Chapter 3: Data Streams, of my new book, [The Linux Philosophy for SysAdmins][1].
+
+Everything in Linux revolves around streams of data—particularly text streams. Data streams are the raw materials upon which the [GNU Utilities][2], the Linux core utilities, and many other command-line tools perform their work.
+
+As its name implies, a data stream is a stream of data—especially text data—being passed from one file, device, or program to another using STDIO. This chapter introduces the use of pipes to connect streams of data from one utility program to another using STDIO. You will learn that the function of these programs is to transform the data in some manner. You will also learn about the use of redirection to redirect the data to a file.
+
+I use the term “transform” in conjunction with these programs because the primary task of each is to transform the incoming data from STDIO in a specific way as intended by the sysadmin and to send the transformed data to STDOUT for possible use by another transformer program or redirection to a file.
+
+The standard term, “filters,” implies something with which I don’t agree. By definition, a filter is a device or a tool that removes something, such as an air filter removes airborne contaminants so that the internal combustion engine of your automobile does not grind itself to death on those particulates. In my high school and college chemistry classes, filter paper was used to remove particulates from a liquid. The air filter in my home HVAC system removes particulates that I don’t want to breathe.
+
+Although they do sometimes filter out unwanted data from a stream, I much prefer the term “transformers” because these utilities do so much more. They can add data to a stream, modify the data in some amazing ways, sort it, rearrange the data in each line, perform operations based on the contents of the data stream, and so much more. Feel free to use whichever term you prefer, but I prefer transformers. I expect that I am alone in this.
+
+Data streams can be manipulated by inserting transformers into the stream using pipes. Each transformer program is used by the sysadmin to perform some operation on the data in the stream, thus changing its contents in some manner. Redirection can then be used at the end of the pipeline to direct the data stream to a file. As mentioned, that file could be an actual data file on the hard drive, or a device file such as a drive partition, a printer, a terminal, a pseudo-terminal, or any other device connected to a computer.
+
+The ability to manipulate these data streams using these small yet powerful transformer programs is central to the power of the Linux command-line interface. Many of the core utilities are transformer programs and use STDIO.
+
+In the Unix and Linux worlds, a stream is a flow of text data that originates at some source; the stream may flow to one or more programs that transform it in some way, and then it may be stored in a file or displayed in a terminal session. As a sysadmin, your job is intimately associated with manipulating the creation and flow of these data streams. In this post, we will explore data streams—what they are, how to create them, and a little bit about how to use them.
+
+### Text streams—a universal interface
+
+The use of Standard Input/Output (STDIO) for program input and output is a key foundation of the Linux way of doing things. STDIO was first developed for Unix and has found its way into most other operating systems since then, including DOS, Windows, and Linux.
+
+> “This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.”
+>
+> — Doug McIlroy, Basics of the Unix Philosophy
+
+### STDIO
+
+STDIO was developed by Ken Thompson as a part of the infrastructure required to implement pipes on early versions of Unix. Programs that implement STDIO use standardized file handles for input and output rather than files that are stored on a disk or other recording media. STDIO is best described as a buffered data stream, and its primary function is to stream data from the output of one program, file, or device to the input of another program, file, or device.
+
+There are three STDIO data streams, each of which is automatically opened as a file at the startup of a program—well, those programs that use STDIO. Each STDIO data stream is associated with a file handle, which is just a set of metadata that describes the attributes of the file. File handles 0, 1, and 2 are explicitly defined by convention and long practice as STDIN, STDOUT, and STDERR, respectively.
+
+**STDIN, File handle 0** , is standard input which is usually input from the keyboard. STDIN can be redirected from any file, including device files, instead of the keyboard. It is not common to need to redirect STDIN, but it can be done.
+
+**STDOUT, File handle 1** , is standard output which sends the data stream to the display by default. It is common to redirect STDOUT to a file or to pipe it to another program for further processing.
+
+**STDERR, File handle 2**. The data stream for STDERR is also usually sent to the display.
+
+If STDOUT is redirected to a file, STDERR continues to be displayed on the screen. This ensures that when the data stream itself is not displayed on the terminal, that STDERR is, thus ensuring that the user will see any errors resulting from execution of the program. STDERR can also be redirected to the same or passed on to the next transformer program in a pipeline.
+
+STDIO is implemented as a C library, **stdio.h** , which can be included in the source code of programs so that it can be compiled into the resulting executable.
+
+### Simple streams
+
+You can perform the following experiments safely in the **/tmp** directory of your Linux host. As the root user, make **/tmp** the PWD, create a test directory, and then make the new directory the PWD.
+
+```
+# cd /tmp ; mkdir test ; cd test
+```
+
+Enter and run the following command line program to create some files with content on the drive. We use the `dmesg` command simply to provide data for the files to contain. The contents don’t matter as much as just the fact that each file has some content.
+
+```
+# for I in 0 1 2 3 4 5 6 7 8 9 ; do dmesg > file$I.txt ; done
+```
+
+Verify that there are now at least 10 files in **/tmp/** with the names **file0.txt** through **file9.txt**.
+
+```
+# ll
+total 1320
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file0.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file1.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file2.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file3.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file4.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file5.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file6.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file7.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file8.txt
+-rw-r--r-- 1 root root 131402 Oct 17 15:50 file9.txt
+```
+
+We have generated data streams using the `dmesg` command, which was redirected to a series of files. Most of the core utilities use STDIO as their output stream and those that generate data streams, rather than acting to transform the data stream in some way, can be used to create the data streams that we will use for our experiments. Data streams can be as short as one line or even a single character, and as long as needed.
+
+### Exploring the hard drive
+
+It is now time to do a little exploring. In this experiment, we will look at some of the filesystem structures.
+
+Let’s start with something simple. You should be at least somewhat familiar with the `dd` command. Officially known as “disk dump,” many sysadmins call it “disk destroyer” for good reason. Many of us have inadvertently destroyed the contents of an entire hard drive or partition using the `dd` command. That is why we will hang out in the **/tmp/test** directory to perform some of these experiments.
+
+Despite its reputation, `dd` can be quite useful in exploring various types of storage media, hard drives, and partitions. We will also use it as a tool to explore other aspects of Linux.
+
+Log into a terminal session as root if you are not already. We first need to determine the device special file for your hard drive using the `lsblk` command.
+
+```
+[root@studentvm1 test]# lsblk -i
+NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
+sda 8:0 0 60G 0 disk
+|-sda1 8:1 0 1G 0 part /boot
+`-sda2 8:2 0 59G 0 part
+ |-fedora_studentvm1-pool00_tmeta 253:0 0 4M 0 lvm
+ | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
+ | |-fedora_studentvm1-root 253:3 0 2G 0 lvm /
+ | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm
+ |-fedora_studentvm1-pool00_tdata 253:1 0 2G 0 lvm
+ | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
+ | |-fedora_studentvm1-root 253:3 0 2G 0 lvm /
+ | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm
+ |-fedora_studentvm1-swap 253:4 0 10G 0 lvm [SWAP]
+ |-fedora_studentvm1-usr 253:5 0 15G 0 lvm /usr
+ |-fedora_studentvm1-home 253:7 0 2G 0 lvm /home
+ |-fedora_studentvm1-var 253:8 0 10G 0 lvm /var
+ `-fedora_studentvm1-tmp 253:9 0 5G 0 lvm /tmp
+sr0 11:0 1 1024M 0 rom
+```
+
+We can see from this that there is only one hard drive on this host, that the device special file associated with it is **/dev/sda** , and that it has two partitions. The **/dev/sda1** partition is the boot partition, and the **/dev/sda2** partition contains a volume group on which the rest of the host’s logical volumes have been created.
+
+As root in the terminal session, use the `dd` command to view the boot record of the hard drive, assuming it is assigned to the **/dev/sda** device. The `bs=` argument is not what you might think; it simply specifies the block size, and the `count=` argument specifies the number of blocks to dump to STDIO. The `if=` argument specifies the source of the data stream, in this case, the **/dev/sda** device. Notice that we are not looking at the first block of the partition, we are looking at the very first block of the hard drive.
+
+```
+[root@studentvm1 test]# dd if=/dev/sda bs=512 count=1
+�c�#�м���؎���|�#�#���!#��8#u
+ ��#���u��#�#�#�|���t#�L#�#�|���#�����t��pt#���y|1��؎м ��d|<�t#��R�|1��D#@�D��D#�##f�#\|f�f�#`|f�\
+ �D#p�B�#r�p�#�K`#�#��1��������#a`���#f��u#����f1�f�TCPAf�#f�#a�&Z|�#}�#�.}�4�3}�.�#��GRUB GeomHard DiskRead Error
+�#��#� ) character, aka “gt”, is the syntactical symbol for redirection of STDOUT.
+
+Redirecting the STDOUT of a command can be used to create a file containing the results from that command.
+
+```
+[student@studentvm1 ~]$ df -h > diskusage.txt
+```
+
+There is no output to the terminal from this command unless there is an error. This is because the STDOUT data stream is redirected to the file and STDERR is still directed to the STDOUT device, which is the display. You can view the contents of the file you just created using this next command:
+
+```
+[student@studentvm1 test]# cat diskusage.txt
+Filesystem Size Used Avail Use% Mounted on
+devtmpfs 2.0G 0 2.0G 0% /dev
+tmpfs 2.0G 0 2.0G 0% /dev/shm
+tmpfs 2.0G 1.2M 2.0G 1% /run
+tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
+/dev/mapper/fedora_studentvm1-root 2.0G 50M 1.8G 3% /
+/dev/mapper/fedora_studentvm1-usr 15G 4.5G 9.5G 33% /usr
+/dev/mapper/fedora_studentvm1-var 9.8G 1.1G 8.2G 12% /var
+/dev/mapper/fedora_studentvm1-tmp 4.9G 21M 4.6G 1% /tmp
+/dev/mapper/fedora_studentvm1-home 2.0G 7.2M 1.8G 1% /home
+/dev/sda1 976M 221M 689M 25% /boot
+tmpfs 395M 0 395M 0% /run/user/0
+tmpfs 395M 12K 395M 1% /run/user/1000
+```
+
+When using the > symbol to redirect the data stream, the specified file is created if it does not already exist. If it does exist, the contents are overwritten by the data stream from the command. You can use double greater-than symbols, >>, to append the new data stream to any existing content in the file.
+
+```
+[student@studentvm1 ~]$ df -h >> diskusage.txt
+```
+
+You can use `cat` and/or `less` to view the **diskusage.txt** file in order to verify that the new data was appended to the end of the file.
+
+The < (less than) symbol redirects data to the STDIN of the program. You might want to use this method to input data from a file to STDIN of a command that does not take a filename as an argument but that does use STDIN. Although input sources can be redirected to STDIN, such as a file that is used as input to grep, it is generally not necessary as grep also takes a filename as an argument to specify the input source. Most other commands also take a filename as an argument for their input source.
+
+### Just grep’ing around
+
+The `grep` command is used to select lines that match a specified pattern from a stream of data. `grep` is one of the most commonly used transformer utilities and can be used in some very creative and interesting ways. The `grep` command is one of the few that can correctly be called a filter because it does filter out all the lines of the data stream that you do not want; it leaves only the lines that you do want in the remaining data stream.
+
+If the PWD is not the **/tmp/test** directory, make it so. Let’s first create a stream of random data to store in a file. In this case, we want somewhat less random data that would be limited to printable characters. A good password generator program can do this. The following program (you may have to install `pwgen` if it is not already) creates a file that contains 50,000 passwords that are 80 characters long using every printable character. Try it without redirecting to the **random.txt** file first to see what that looks like, and then do it once redirecting the output data stream to the file.
+
+```
+$ pwgen -sy 80 50000 > random.txt
+```
+
+Considering that there are so many passwords, it is very likely that some character strings in them are the same. First, `cat` the **random.txt** file, then use the `grep` command to locate some short, randomly selected strings from the last ten passwords on the screen. I saw the word “see” in one of those ten passwords, so my command looked like this: `grep see random.txt`, and you can try that, but you should also pick some strings of your own to check. Short strings of two to four characters work best.
+
+```
+$ grep see random.txt
+ R=p)'s/~0}wr~2(OqaL.S7DNyxlmO69`"12u]h@rp[D2%3}1b87+>Vk,;4a0hX]d7see;1%9|wMp6Yl.
+ bSM_mt_hPy|YZ1NU@[;zV2-see)>(BSK~n5mmb9~h)yx{a&$_e
+ cjR1QWZwEgl48[3i-(^x9D=v)seeYT2R#M:>wDh?Tn$]HZU7}j!7bIiIr^cI.DI)W0D"'vZU@.Kxd1E1
+ z=tXcjVv^G\nW`,y=bED]d|7%s6iYT^a^Bvsee:v\UmWT02|P|nq%A*;+Ng[$S%*s)-ls"dUfo|0P5+n
+```
+
+### Summary
+
+It is the use of pipes and redirection that allows many of the amazing and powerful tasks that can be performed with data streams on the Linux command line. It is pipes that transport STDIO data streams from one program or file to another. The ability to pipe streams of data through one or more transformer programs supports powerful and flexible manipulation of data in those streams.
+
+Each of the programs in the pipelines demonstrated in the experiments is small, and each does one thing well. They are also transformers; that is, they take Standard Input, process it in some way, and then send the result to Standard Output. Implementation of these programs as transformers to send processed data streams from their own Standard Output to the Standard Input of the other programs is complementary to, and necessary for, the implementation of pipes as a Linux tool.
+
+STDIO is nothing more than streams of data. This data can be almost anything from the output of a command to list the files in a directory, or an unending stream of data from a special device like **/dev/urandom** , or even a stream that contains all of the raw data from a hard drive or a partition.
+
+Any device on a Linux computer can be treated like a data stream. You can use ordinary tools like `dd` and `cat` to dump data from a device into a STDIO data stream that can be processed using other ordinary Linux tools.
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/10/linux-data-streams
+
+作者:[David Both][a]
+选题:[lujun9972][b]
+译者:[译者ID](https://github.com/译者ID)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/dboth
+[b]: https://github.com/lujun9972
+[1]: https://www.apress.com/us/book/9781484237298
+[2]: https://www.gnu.org/software/coreutils/coreutils.html
+[3]: https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm
diff --git a/translated/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md b/translated/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md
new file mode 100644
index 0000000000..48a556d29a
--- /dev/null
+++ b/translated/tech/20180820 How To Disable Ads In Terminal Welcome Message In Ubuntu Server.md
@@ -0,0 +1,110 @@
+如何在 Ubuntu 服务器中禁用终端欢迎消息中的广告
+======
+
+如果你正在使用最新的 Ubuntu 服务器版本,你可能已经注意到欢迎消息中有一些与 Ubuntu 服务器平台无关的促销链接。你可能已经知道 **MOTD**,即 **M**essage **O**f **T**he **D**ay 的开头首字母,在 Linux 系统每次登录时都会显示欢迎信息。通常,欢迎消息包含操作系统版本,基本系统信息,官方文档链接以及有关最新安全更新等的链接。这些是我们每次通过 SSH 或本地登录时通常会看到的内容。但是,最近在终端欢迎消息中出现了一些其他链接。我已经几次注意到这些链接,但我并在意,也从未点击过。以下是我的 Ubuntu 18.04 LTS 服务器上显示的终端欢迎消息。
+
+
+
+正如你在上面截图中所看到的,欢迎消息中有一个 bit.ly 链接和 Ubuntu wiki 链接。有些人可能会惊讶并想知道这是什么。其实欢迎信息中的链接无需担心。它可能看起来像广告,但并不是商业广告。链接实际上指的是 [**Ubuntu 官方博客**][1] 和 [**Ubuntu wiki**][2]。正如我之前所说,其中的一个链接是不相关的,没有任何与 Ubuntu 服务器相关的细节,这就是为什么我开头称它们为广告。
+(to 校正:这里是其中一个链接不相关还是两个链接都不相关)
+
+虽然我们大多数人都不会访问 bit.ly 链接,但是有些人可能出于好奇去访问这些链接,结果失望地发现它只是指向一个外部链接。你可以使用任何 URL 短网址服务,例如 unshorten.it,在访问真正链接之前,查看它会指向哪里。或者,你只需在 bit.ly 链接的末尾输入加号(**+**)即可查看它们的实际位置以及有关链接的一些统计信息。
+
+
+
+### 什么是 MOTD 以及它是如何工作的?
+
+2009 年,来自 Canonical 的 **Dustin Kirkland** 在 Ubuntu 中引入了 MOTD 的概念。它是一个灵活的框架,使管理员或发行包能够在 /etc/update-motd.d/* 位置添加可执行脚本,目的是生成在登录时显示有益的,有趣的消息。它最初是为 Landscape(Canonical 的商业服务)实现的,但是其它发行版维护者发现它很有用,并且在他们自己的发行版中也采用了这个特性。
+
+如果你在 Ubuntu 系统中查看 **/etc/update-motd.d/**,你会看到一组脚本。一个是打印通用的 “ Welcome” 横幅。下一个打印 3 个链接,显示在哪里可以找到操作系统的帮助。另一个计算并显示本地系统包可以更新的数量。另一个脚本告诉你是否需要重新启动等等。
+
+从 Ubuntu 17.04 起,开发人员添加了 **/etc/update-motd.d/50-motd-news**,这是一个脚本用来在欢迎消息中包含一些附加信息。这些附加信息是:
+
+ 1. 重要的关键信息,例如 ShellShock, Heartbleed 等
+
+ 2. 生命周期(EOL)消息,新功能可用性等
+
+ 3. 在 Ubuntu 官方博客和其他有关 Ubuntu 的新闻中发布的一些有趣且有益的帖子
+
+另一个特点是异步,启动后约 60 秒,systemd 计时器运行 “/etc/update-motd.d/50-motd-news –force” 脚本。它提供了 /etc/default/motd-news 脚本中定义的 3 个配置变量。默认值为:ENABLED=1, URLS=”, WAIT=”5″。
+
+以下是 /etc/default/motd-news 文件的内容:
+```
+$ cat /etc/default/motd-news
+# Enable/disable the dynamic MOTD news service
+# This is a useful way to provide dynamic, informative
+# information pertinent to the users and administrators
+# of the local system
+ENABLED=1
+
+# Configure the source of dynamic MOTD news
+# White space separated list of 0 to many news services
+# For security reasons, these must be https
+# and have a valid certificate
+# Canonical runs a service at motd.ubuntu.com, and you
+# can easily run one too
+URLS="https://motd.ubuntu.com"
+
+# Specify the time in seconds, you're willing to wait for
+# dynamic MOTD news
+# Note that news messages are fetched in the background by
+# a systemd timer, so this should never block boot or login
+WAIT=5
+
+```
+
+好事情是 MOTD 是完全可定制的,所以你可以彻底禁用它(ENABLED=0),根据你的意愿更改或添加脚本,并以秒为单位更改等待时间。
+
+如果启用了 MOTD,那么 systemd 计时器作业将循环遍历每个 URL,将它们缩减到每行 80 个字符,最多 10 行,并将它们连接(to 校正:也可能是链接?)到 /var/cache/motd-news 中的缓存文件。此 systemd 计时器作业将每隔 12 小时运行并更新 /var/cache/motd-news。用户登录后,/var/cache/motd-news 的内容会打印到屏幕上。这就是 MOTD 的工作原理。
+
+此外,**/etc/update-motd.d/50-motd-news** 文件中包含自定义用户代理字符串,以报告有关计算机的信息。如果你查看 **/etc/update-motd.d/50-motd-news** 文件,你会看到
+```
+# Piece together the user agent
+USER_AGENT="curl/$curl_ver $lsb $platform $cpu $uptime"
+```
+
+这意味着,MOTD 检索器将向 Canonical 报告你的**操作系统版本**,**硬件平台**,**CPU 类型**和**正常运行时间**。
+
+到这里,希望你对 MOTD 有了一个基本的了解。
+
+现在让我们回到主题,我不想要这个功能。我该如何禁用它?如果欢迎消息中的促销链接仍然困扰你,并且你想永久禁用它们,则可以通过以下方法快速禁用它。
+
+### 在 Ubuntu 服务器中禁用终端欢迎消息中的广告
+
+要禁用这些广告,编辑文件:
+```
+$ sudo vi /etc/default/motd-news
+```
+
+找到以下行并将其值设置为 0(零)。
+```
+[...]
+ENABLED=0
+[...]
+```
+
+保存并关闭文件。现在,重新启动系统,看看欢迎消息是否仍然显示来自 Ubuntu 博客的链接。
+
+
+
+看到没?现在没有来自 Ubuntu 博客和 Ubuntu wiki 的链接。
+
+这就是全部内容了。希望这对你有所帮助。更多好东西要来了,敬请关注!
+
+顺祝时祺!
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/how-to-disable-ads-in-terminal-welcome-message-in-ubuntu-server/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[MjSeven](https://github.com/MjSeven)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://www.ostechnix.com/author/sk/
+[1]:https://blog.ubuntu.com/
+[2]:https://wiki.ubuntu.com/
diff --git a/translated/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md b/translated/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md
new file mode 100644
index 0000000000..2ee61e0223
--- /dev/null
+++ b/translated/tech/20180905 How To Run MS-DOS Games And Programs In Linux.md
@@ -0,0 +1,250 @@
+在Linux中怎么运行Ms-Dos游戏和程序
+======
+
+
+
+你是否想过尝试一些经典的MS-DOS游戏和像Turbo C++这样的C++ 编译器?这篇教程将会介绍如何使用**DOSBox**在Linux环境下运行MS-DOS的游戏和程序。**DOSBox**是一个x86平台的DOS模拟器,可以用来运行经典的DOS游戏和程序。 DOSBox模拟带有声音,图形,鼠标,操纵杆和调制解调器等的因特尔 x86 电脑,它允许你运行许多旧的MS-DOS游戏和程序,这些游戏和程序根本无法在任何现代PC和操作系统上运行,例如Microsoft Windows XP及更高版本,Linux和FreeBSD。 DOSBox是免费的,使用C ++编程语言编写并在GPL下分发。
+
+### 在Linux上安装DOSBox
+
+DOSBox在大多数Linux发行版的默认仓库中都能找的到
+
+在Arch Linux及其衍生版如Antergos,Manjaro Linux上:
+```
+$ sudo pacman -S dosbox
+
+```
+
+在 Debian, Ubuntu, Linux Mint上:
+```
+$ sudo apt-get install dosbox
+
+```
+
+在 Fedora上:
+```
+$ sudo dnf install dosbox
+
+```
+
+### 配置DOSBox
+
+DOSBox是一个开箱即用的软件,它不需要进行初始化配置。 它的配置文件位于**`〜/ .dosbox` **文件夹中,名为`dosbox-x.xx.conf`。 在此配置文件中,你可以编辑/修改各种设置,例如以全屏模式启动DOSBox,全屏使用双缓冲,设置首选分辨率,鼠标灵敏度,启用或禁用声音,扬声器,操纵杆等等。 如前所述,默认设置即可正常工作。 你可以不用进行任何更改。
+
+### 在Linux中运行MS-DOS上的游戏和程序
+
+终端运行以下命令启动DOSBox:
+```
+$ dosbox
+
+```
+
+下图就是DOSBox的界面
+
+
+
+正如你所看到的,DOSBox带有自己的类似DOS的命令提示符和一个虚拟的`Z:\`Drive,如果你熟悉MS-DOS的话,你会发现在DOSBox环境下工作不会有任何问题。
+
+这是`dir`命令(在Linux中等同于`ls`命令)的输出:
+
+
+
+如果你是第一次使用DOSBox,你可以通过在DOSBox提示符中输入以下命令来查看关于DOSBox的简介:
+```
+intro
+
+```
+
+在介绍部分按ENTER进入下一页
+
+要查看DOS中最常用命令的列表,请使用此命令:
+```
+help
+
+```
+
+要查看DOSBox中所有支持的命令的列表,请键入:
+```
+help /all
+
+```
+
+记好了这些命令应该在DOSBox提示符中使用,而不是在Linux终端中使用。
+
+DOSBox还支持一些实用的键盘组合键。 下图是能有效使用DOSBox的默认键盘快捷键。
+
+
+
+要退出DOSBox,只需键入并按Enter:
+```
+exit
+```
+
+默认情况下,DOSBox开始运行时的正常屏幕窗口大小如上所示
+
+要直接在全屏启动dosbox,请编辑`dosbox-x.xx.conf`文件并将**fullscreen**变量的值设置为**enable**。 之后,DosBox将以全屏模式启动。 如果要返回正常屏幕,请按 **ALT+ENTER**
+
+希望你能掌握DOSBox的这些基本用法
+
+让我们继续安装一些DOS程序和游戏。
+
+首先,我们需要在Linux系统中创建目录来保存程序和游戏。 我将创建两个名为**`〜/ dosprograms` **和**`〜/ dosgames` **的目录,第一个用于存储程序,后者用于存储游戏。
+```
+$ mkdir ~/dosprograms ~/dosgames
+
+```
+出于本指南的目的,我将向你展示如何安装**Turbo C ++**程序和Mario游戏。我们首先将看到如何安装Turbo。
+下载最新的Turbo C ++编译器并将其解压到**`〜/ dosprograms` **目录中。 我已经将turbo c ++保存在在我的**〜/ dosprograms / TC /**目录中了。
+```
+$ ls dosprograms/tc/
+
+BGI BIN CLASSLIB DOC EXAMPLES FILELIST.DOC INCLUDE LIB README README.COM
+
+```
+
+运行 Dosbox:
+```
+$ dosbox
+
+```
+
+将**`〜/ dosprograms` **目录挂载为DOSBox中的虚拟驱动器 **C:\**
+```
+Z:\>mount c ~/dosprograms
+
+```
+
+你会看到类似下面的输出
+```
+Drive C is mounted as local directory /home/sk/dosprograms.
+
+```
+
+
+
+
+现在,使用命令切换到C盘:
+```
+Z:\>c:
+
+```
+
+然后切换到**tc / bin**目录:
+```
+Z:\>cd tc/bin
+
+```
+
+最后,运行turbo c ++可执行文件:
+```
+Z:\>tc.exe
+
+```
+
+**备注:**只需输入前几个字母,然后按ENTER键自动填充文件名。
+
+
+
+你现在将进入Turbo C ++控制台。
+
+
+
+创建新文件(ATL + F)并开始编程:
+
+
+
+你可以同样安装和运行其他经典DOS程序。
+
+**故障排除:**
+
+运行turbo c ++或其他任何dos程序时,你可能会遇到以下错误:
+
+```
+DOSBox switched to max cycles, because of the setting: cycles=auto. If the game runs too fast try a fixed cycles amount in DOSBox's options. Exit to error: DRC64:Unhandled memory reference
+
+```
+
+要解决此问题,编辑**〜/ .dosbox / dosbox-x.xx.conf **文件:
+```
+$ nano ~/.dosbox/dosbox-0.74.conf
+
+```
+
+找到以下变量:
+```
+core=auto
+
+```
+
+并更改其值为:
+```
+core=normal
+```
+
+现在,让我们看看如何运行基于DOS的游戏,例如 **Mario Bros VGA**
+
+从 [**这里**][1]下载Mario游戏,并将其解压到Linux中的**〜/ dosgames **目录
+
+运行 DOSBox:
+```
+$ dosbox
+
+```
+
+我们刚才使用了虚拟驱动器 **c:** 来运行dos程序。现在让我们使用 **d:** 作为虚拟驱动器来运行游戏。
+
+在DOSBox提示符下,运行以下命令将 **~/dosgames** 目录挂载为虚拟驱动器 **d**
+```
+Z:\>mount d ~/dosgames
+
+```
+
+进入驱动器D:
+```
+Z:\>d:
+
+```
+
+然后进入mario游戏目录并运行 **mario.exe** 文件来启动游戏
+```
+Z:\>cd mario
+
+Z:\>mario.exe
+
+```
+
+
+
+开始玩游戏:
+
+
+
+你可以同样像上面所说的那样运行任何基于DOS的游戏。 [**点击这里**] [2]查看可以使用DOSBOX运行的游戏的完整列表。
+
+### 总结
+
+尽管DOSBOX并不能作为MS-DOS的完全替代品,并且还缺少MS-DOS中的许多功能,但它足以安装和运行大多数的DOS游戏和程序。
+
+有关更多详细信息,请参阅官方[**DOSBox手册**][3]
+
+这就是全部内容。希望这对你有用。更多优秀指南即将到来。 敬请关注!
+
+干杯!
+
+
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/how-to-run-ms-dos-games-and-programs-in-linux/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[way-ww](https://github.com/way-ww)
+校对:[校对者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.dosgames.com/game/mario-bros-vga
+[2]: https://www.dosbox.com/comp_list.php
+[3]: https://www.dosbox.com/DOSBoxManual.html
diff --git a/translated/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md b/translated/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md
new file mode 100644
index 0000000000..3d0ec169a2
--- /dev/null
+++ b/translated/tech/20181008 KeeWeb - An Open Source, Cross Platform Password Manager.md
@@ -0,0 +1,105 @@
+# KeeWeb – 一个开源且跨平台的密码管理工具
+
+
+
+如果你长时间使用互联网,那很可能在很多网站上都有很多帐户。所有这些帐户都必须有密码,而且必须记住所有的密码,或者把它们写下来。在纸上写下密码可能不安全,如果有多个密码,记住它们实际上是不可能的。这就是密码管理工具在过去几年中大受欢迎的原因。密码管理工具就像一个中央存储库,你可以在其中存储所有帐户的所有密码,并为它设置一个主密码。使用这种方法,你唯一需要记住的只有主密码。
+
+**KeePass** 就是一个这样的开源密码管理工具,它有一个官方客户端,但功能非常简单。也有许多 PC 端和手机端的其他密码管理工具,并且与 KeePass 存储加密密码的文件格式兼容。其中一个就是 **KeeWeb**。
+
+KeeWeb 是一个开源、跨平台的密码管理工具,具有云同步,键盘快捷键和插件等功能。KeeWeb使用 Electron 框架,这意味着它可以在 Windows,Linux 和 Mac OS 上运行。
+
+### KeeWeb 的使用
+
+有两种方式可以使用 KeeWeb。第一种无需安装,直接在网页上使用,第二中就是在本地系统中安装 KeeWeb 客户端。
+
+**在网页上使用 KeeWeb**
+
+如果不想在系统中安装应用,可以去 [**https://app.keeweb.info/**][1] 使用KeeWeb。
+
+
+
+网页端具有桌面客户端的所有功能,当然也需要联网才能进行使用。
+
+**在计算机中安装 KeeWeb**
+
+如果喜欢客户端的舒适性和离线可用性,也可以将其安装在系统中。
+
+如果使用Ubuntu/Debian,你可以去 [**releases pages**][2] 下载 KeeWeb 最新的 **.deb ** 文件,然后通过下面的命令进行安装:
+
+```
+$ sudo dpkg -i KeeWeb-1.6.3.linux.x64.deb
+
+```
+
+如果用的是 Arch,在 [**AUR**][3] 上也有 KeeWeb,可以使用任何 AUR 助手进行安装,例如 [**Yay**][4]:
+
+```
+$ yay -S keeweb
+
+```
+
+安装后,从菜单中或应用程序启动器启动 KeeWeb。默认界面长这样:
+
+
+
+### 总体布局
+
+KeeWeb 界面主要显示所有密码的列表,在左侧展示所有标签。单击标签将对密码进行过滤,只显示带有那个标签的密码。在右侧,显示所选帐户的所有字段。你可以设置用户名,密码,网址,或者添加自定义的备注。你甚至可以创建自己的字段并将其标记为安全字段,这在存储信用卡信息等内容时非常有用。你只需单击即可复制密码。 KeeWeb 还显示账户的创建和修改日期。已删除的密码会保留在回收站中,可以在其中还原或永久删除。
+
+
+
+### KeeWeb 功能
+
+**云同步**
+
+KeeWeb 的主要功能之一是支持各种远程位置和云服务。除了加载本地文件,你可以从以下位置打开文件:
+
+```
+1. WebDAV Servers
+2. Google Drive
+3. Dropbox
+4. OneDrive
+```
+
+这意味着如果你使用多台计算机,就可以在它们之间同步密码文件,因此不必担心某台设备无法访问所有密码。
+
+**密码生成器**
+
+
+
+除了对密码进行加密之外,为每个帐户创建新的强密码也很重要。这意味着,如果你的某个帐户遭到入侵,攻击者将无法使用相同的密码进入其他帐户。
+
+为此,KeeWeb 有一个内置密码生成器,可以生成特定长度、包含指定字符的自定义密码。
+
+**插件**
+
+
+
+你可以使用插件扩展 KeeWeb 的功能。 其中一些插件用于更改界面语言,而其他插件则添加新功能,例如访问 **** 以查看密码是否暴露。
+
+**本地备份**
+
+
+
+无论密码文件存储在何处,你都应该在计算机上保留一份本地备份。幸运的是,KeeWeb 内置了这个功能。你可以备份到特定路径,并将其设置为定期备份,或者只在文件更改时进行备份。
+
+### 结论
+
+我实际使用 KeeWeb 已经好几年了,它完全改变了我存储密码的方式。云同步是我长期使用 KeeWeb 的主要功能,这样我不必担心在多个设备上保存多个不同步的文件。如果你想要一个具有云同步功能的密码管理工具,KeeWeb 就是你应该关注的东西。
+
+------
+
+via: https://www.ostechnix.com/keeweb-an-open-source-cross-platform-password-manager/
+
+作者:[EDITOR][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[jlztan](https://github.com/jlztan)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/editor/
+[1]: https://app.keeweb.info/
+[2]: https://github.com/keeweb/keeweb/releases/latest
+[3]: https://aur.archlinux.org/packages/keeweb/
+[4]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
diff --git a/translated/tech/20181017 Design faster web pages, part 2- Image replacement.md b/translated/tech/20181017 Design faster web pages, part 2- Image replacement.md
new file mode 100644
index 0000000000..55631b4713
--- /dev/null
+++ b/translated/tech/20181017 Design faster web pages, part 2- Image replacement.md
@@ -0,0 +1,177 @@
+设计更快的网页(二):图片替换
+======
+
+
+
+欢迎回到我们为了构建更快网页所写的系列文章。上一篇[文章][1]讨论了只通过图片压缩实现这个目标的方法。这个例子从一开始有 1.2MB 的“浏览器脂肪”,然后它减轻到了 488.9KB 的大小。但这还不够快!那么本文继续来给浏览器“减肥”。你可能在这个过程中会认为我们所做的事情有点疯狂,但一旦完成,你就会明白为什么要这么做了。
+
+### 准备工作
+
+本文再次从对网页的分析开始。使用 Firefox 内置的截图功能来对整个页面进行截图。你还需要[用 sudo][2] 来安装 Inkscape:
+
+```
+$ sudo dnf install inkscape
+```
+
+如果你想了解 Inkscape 的用法,Fedora 杂志上有几篇现成的[文章][3]。本文仅会介绍一些基本的 SVG 优化方法以供 Web 使用。
+
+### 分析
+
+我们再来用 [getfedora.org][4] 的网页来举例。
+
+![Getfedora 的页面,对其中的图片做了标记][5]
+
+这次分析更好地以图形方式完成,这也就是它从屏幕截图开始的原因。上面的截图标记了页面中的所有图形元素。Fedora 网站团队已经针对两种情况措施(也有可能是四种,这样更好)来替换图像了。社交媒体的图标变成了字体的字形,而语言选择器变成了 SVG.
+
+我们有几个可以替换的选择:
+
+
++ CSS3
++ 字体
++ SVG
++ HTML5 Canvas
+
+
+#### HTML5 Canvas
+
+简单来说,HTML5 Canvas 是一种 HTML 元素,它允许你借助脚本语言(通常是 JavaScript)在上面绘图,不过它现在还没有被广泛使用。因为它可以使用脚本语言来绘制,所以这个元素也可以用来做动画。这里有一些使用 HTML Canvas 实现的实例,比如[三角形模式][6]、[动态波浪][7]和[字体动画][8]。不过,在这种情况下,似乎这也不是最好的选择。
+
+#### CSS3
+
+使用层叠式样式表,你可以绘制图形,甚至可以让它们动起来。CSS 常被用来绘制按钮等元素。然而,使用 CSS 绘制的更复杂的图形通常只能在技术演示页面中看到。这是因为使用视觉来制作图形依然要比使用代码来的更快一些。
+
+#### 字体
+
+另外一种方式是使用字体来装饰网页,[Fontawesome][9] 在这方面很流行。比如,在这个例子中你可以使用字体来替换“风味”和“旋转”的图标。这种方法有一个负面影响,但解决起来很容易,我们会在本系列的下一部分中来介绍。
+
+#### SVG
+
+这种图形格式已经存在了很长时间,而且它总是在浏览器中被使用。有很长一段时间并非所有浏览器都支持它,不过现在这已经成为历史了。所以,本例中图形替换的最佳方法是使用 SVG.
+
+### 为网页优化 SVG
+
+优化 SVG 以供互联网使用,需要几个步骤。
+
+SVG 是一种 XML 方言。它用节点来描述圆形、矩形或文本路径等组件。每个节点都是一个 XML 元素。为了保证代码简洁,SVG 应该包含尽可能少的元素。
+
+我们选用的 SVG 实例是带有一个咖啡杯的圆形图标。你有三种选项来用 SVG 描述它。
+
+#### 一个圆形元素,上面有一个咖啡杯
+
+```
+
+```
+
+#### 一个圆形路径,上面有一个咖啡杯
+
+```
+
+```
+
+#### 单一路径
+
+```
+
+```
+
+你应该可以看出,代码变得越来越复杂,需要更多的字符来描述它。当然,文件中包含更多的字符,就会导致更大的尺寸。
+
+#### 节点清理
+
+如果你在 Inkscape 中打开了实例 SVG 按下 F2,就会激活一个节点工具。你应该看到这样的界面:
+
+![Inkscape - 激活节点工具][10]
+
+这个例子中有五个不必要的节点——就是直线中间的那些。要删除它们,你可以使用已激活的节点工具依次选中它们,并按下 **Del** 键。然后,选中这条线的定义节点,并使用工具栏的工具把它们重新做成角。
+
+![Inkscape - 将节点变成角的工具][11]
+
+如果不修复这些角,我们还有方法可以定义这条曲线,这条曲线会被保存,也就会增加文件体积。你可以手动清理这些节点,因为它无法有效的自动完成。现在,你已经为下一阶段做好了准备。
+
+使用_另存为_功能,并选择_优化的 SVG_。这会弹出一个窗口,你可以在里面选择移除或保留哪些成分。
+
+![Inkscape - “另存为”“优化的 SVG”][12]
+
+虽然这个 SVG 实例很小,但它还是从 3.2KB 减小到了 920 字节,不到原有的三分之一。
+
+回到 getfedora 的页面:页面主要部分的背景中的灰色沃罗诺伊图,在经过本系列第一篇文章中的优化处理之后,从原先的 211.12 KB 减小到了 164.1 KB.
+
+页面中导出的原始 SVG 有 1.9 MB 大小。经过这些 SVG 优化步骤后,它只有 500.4 KB 了。太大了?好吧,现在的蓝色背景的体积是 564.98 KB。SVG 和 PNG 之间只有很小的差别。
+
+#### 压缩文件
+
+```
+$ ls -lh
+insgesamt 928K
+-rw-r--r--. 1 user user 161K 19. Feb 19:44 grey-pattern.png
+-rw-rw-r--. 1 user user 160K 18. Feb 12:23 grey-pattern.png.gz
+-rw-r--r--. 1 user user 489K 19. Feb 19:43 greyscale-pattern-opti.svg
+-rw-rw-r--. 1 user user 112K 19. Feb 19:05 greyscale-pattern-opti.svg.gz
+```
+
+这是我为可视化这个主题所做的一个小测试的输出。你可能应该看到光栅图形——PNG——已经被压缩,不能再被压缩了。而 SVG,一个 XML 文件正相反。它是文本文件,所以可被压缩至原来的四分之一不到。因此,现在它的体积要比 PNG 小 50 KB 左右。
+
+现代浏览器可以以原生方式处理压缩文件。所以,许多 Web 服务器都打开了 mod_deflate (Apache) 和 gzip (Nginx) 模式。这样我们就可以在传输过程中节省空间。你可以在[这儿][13]看看你的服务器是不是启用了它。
+
+### 生产工具
+
+首先,没有人希望每次都要用 Inkscape 来优化 SVG. 你可以在命令行中脱离 GUI 来运行 Inkscape,但你找不到选项来将 Inkscape SVG 转换成优化的 SVG. 用这种方式只能导出光栅图像。但是我们替代品:
+
+ * SVGO (看起来开发过程已经不活跃了)
+ * Scour
+
+
+
+本例中我们使用 scour 来进行优化。先来安装它:
+
+```
+$ sudo dnf install scour
+```
+
+要想自动优化 SVG 文件,请运行 scour,就像这样:
+
+```
+[user@localhost ]$ scour INPUT.svg OUTPUT.svg -p 3 --create-groups --renderer-workaround --strip-xml-prolog --remove-descriptive-elements --enable-comment-stripping --disable-embed-rasters --no-line-breaks --enable-id-stripping --shorten-ids
+```
+
+这就是第二部分的结尾了。在这部分中你应该学会了如何将光栅图像替换成 SVG,并对它进行优化以供使用。请继续关注 Feroda 杂志,第三篇即将出炉。
+
+
+--------------------------------------------------------------------------------
+
+via: https://fedoramagazine.org/design-faster-web-pages-part-2-image-replacement/
+
+作者:[Sirko Kemter][a]
+选题:[lujun9972][b]
+译者:[StdioA](https://github.com/StdioA)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://fedoramagazine.org/author/gnokii/
+[b]: https://github.com/lujun9972
+[1]: https://wp.me/p3XX0v-5fJ
+[2]: https://fedoramagazine.org/howto-use-sudo/
+[3]: https://fedoramagazine.org/?s=Inkscape
+[4]: https://getfedora.org
+[5]: https://fedoramagazine.org/wp-content/uploads/2018/02/getfedora_mag.png
+[6]: https://codepen.io/Cthulahoop/pen/umcvo
+[7]: https://codepen.io/jackrugile/pen/BvLHg
+[8]: https://codepen.io/tholman/pen/lDLhk
+[9]: https://fontawesome.com/
+[10]: https://fedoramagazine.org/wp-content/uploads/2018/02/svg-optimization-nodes.png
+[11]: https://fedoramagazine.org/wp-content/uploads/2018/02/node_cleaning.png
+[12]: https://fedoramagazine.org/wp-content/uploads/2018/02/svg-optimizing-dialog.png
+[13]: https://checkgzipcompression.com/?url=http%3A%2F%2Fgetfedora.org
diff --git a/translated/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md b/translated/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md
new file mode 100644
index 0000000000..8b0021bf26
--- /dev/null
+++ b/translated/tech/20181030 How To Analyze And Explore The Contents Of Docker Images.md
@@ -0,0 +1,94 @@
+如何分析并探索 Docker 容器镜像的内容
+======
+
+
+或许你已经了解到 Docker 容器镜像是一个轻量、独立、含有运行某个应用所需全部软件的可执行包,这也是为什么容器镜像会经常被开发者用于构建和分发应用。假如你很好奇一个 Docker 镜像里面包含了什么东西,那么这篇简要的指南或许会帮助到你。今天,我们将学会使用一个名为 **Dive** 的工具来分析和探索 Docker 镜像每层的内容。通过分析 Docker 镜像,我们可以发现在各个层之间可能重复的文件并通过移除它们来减小 Docker 镜像的大小。Dive 工具不仅仅是一个 Docker 镜像分析工具,它还可以帮助我们来构建镜像。Dive 是一个用 Go 编程语言编写的免费开源工具。
+
+### 安装 Dive
+
+首先从该项目的 [**发布页**][1] 下载最新版本,然后像下面展示的那样根据你所使用的发行版来安装它。
+
+假如你正在使用 **Debian** 或者 **Ubuntu**,那么可以运行下面的命令来下载并安装它。
+```
+$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.deb
+```
+```
+$ sudo apt install ./dive_0.0.8_linux_amd64.deb
+```
+
+**在 RHEL 或 CentOS 系统中**
+```
+$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
+```
+```
+$ sudo rpm -i dive_0.0.8_linux_amd64.rpm
+```
+
+Dive 也可以使用 [**Linuxbrew**][2] 包管理器来安装。
+```
+$ brew tap wagoodman/dive
+```
+```
+$ brew install dive
+```
+
+至于其他的安装方法,请参考 [Dive 项目的 GitHub 网页][3]。
+
+### 分析并探索 Docker 镜像的内容
+
+要分析一个 Docker 镜像,只需要运行加上 Docker 镜像 ID的 dive 命令就可以了。你可以使用 `sudo docker images` 来得到 Docker 镜像的 ID。
+```
+$ sudo dive ea4c82dcd15a
+```
+
+上面命令中的 **ea4c82dcd15a** 是某个镜像的 id。
+
+然后 Dive 命令将快速地分析给定 Docker 镜像的内容并将它在终端中展示出来。
+
+
+
+正如你在上面的截图中看到的那样,在终端的左边一栏列出了给定 Docker 镜像的各个层及其详细内容,浪费的空间大小等信息。右边一栏则给出了给定 Docker 镜像每一层的内容。你可以使用 **Ctrl+SPACEBAR** 来在左右栏之间切换,使用 **UP/DOWN** 上下键来在目录树中进行浏览。
+
+下面是 `Dive` 的快捷键列表:
+ * **Ctrl+Spacebar** – 在左右栏之间切换
+ * **Spacebar** – 展开或收起目录树
+ * **Ctrl+A** – 文件树视图:展示或隐藏增加的文件
+ * **Ctrl+R** – 文件树视图:展示或隐藏被移除的文件
+ * **Ctrl+M** – 文件树视图:展示或隐藏被修改的文件
+ * **Ctrl+U** – 文件树视图:展示或隐藏未修改的文件
+ * **Ctrl+L** – 层视图:展示当前层的变化
+ * **Ctrl+A** – 层视图:展示总的变化
+ * **Ctrl+/** – 筛选文件
+ * **Ctrl+C** – 退出
+
+在上面的例子中,我使用了 `sudo` 权限,这是因为我的 Docker 镜像存储在 **/var/lib/docker/** 目录中。假如你的镜像保存在你的家目录 `$HOME`或者在其他不属于 `root` 用户的目录,你就没有必要使用 `sudo` 命令。
+
+你还可以使用下面的单个命令来构建一个 Docker 镜像并立刻分析该镜像:
+```
+$ dive build -t
+```
+
+Dive 工具仍处于 beta 阶段,所以可能会存在 bug。假如你遇到了 bug,请在该项目的 GitHub 主页上进行报告。
+
+好了,这就是今天的全部内容。现在你知道如何使用 Dive 工具来探索和分析 Docker 容器镜像的内容以及利用它构建镜像。希望本文对你有所帮助。
+
+更多精彩内容即将呈现,请保持关注!
+
+干杯!
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/how-to-analyze-and-explore-the-contents-of-docker-images/
+
+作者:[SK][a]
+选题:[lujun9972][b]
+译者:[FSSlc](https://github.com/FSSlc)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://www.ostechnix.com/author/sk/
+[b]: https://github.com/lujun9972
+[1]: https://github.com/wagoodman/dive/releases
+[2]: https://www.ostechnix.com/linuxbrew-common-package-manager-linux-mac-os-x/
+[3]: https://github.com/wagoodman/dive
\ No newline at end of file