diff --git a/published/20200129 Use Emacs to get social and track your todo list.md b/published/20200129 Use Emacs to get social and track your todo list.md
new file mode 100644
index 0000000000..0d7bbc42c5
--- /dev/null
+++ b/published/20200129 Use Emacs to get social and track your todo list.md	
@@ -0,0 +1,163 @@
+[#]: collector: (lujun9972)
+[#]: translator: (lujun9972)
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11956-1.html)
+[#]: subject: (Use Emacs to get social and track your todo list)
+[#]: via: (https://opensource.com/article/20/1/emacs-social-track-todo-list)
+[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
+
+使用 Emacs 进行社交并跟踪你的待办事项列表
+======
+
+> 在 2020 年用开源实现更高生产力的二十种方式的第十九篇文章中,访问 Twitter、Reddit、 交谈、电子邮件 、RSS 和你的待办事项列表。
+
+![](https://img.linux.net.cn/data/attachment/album/202003/04/100911lg2vrv92692b422y.jpg)
+
+去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。
+
+### 使用 Emacs 做(几乎)所有的事情,第 2 部分
+
+[昨天][2],我谈到了如何在 Emacs 中读取电子邮件、访问电子邮件地址和显示日历。Emacs 功能繁多,你还可以将它用于 Twitter、交谈、待办事项列表等等!
+
+![在 Emacs 中处理所有事情][3]
+
+要完成所有这些,你需要安装一些 Emacs 包。和昨天一样,用 `Meta+x package-manager` 打开 Emacs 包管理器(Meta 键在大多数键盘上是 `Alt`,在 MacOS 上是 `Option`)。然后通过 `i` 选择以下带有的软件包,然后输入 `x` 进行安装:
+
+```
+nnreddit
+todotxt
+twittering-mode
+```
+
+安装之后,按下 `Ctrl+x ctrl+f` 打开 `~/.emacs.d/init.el`,并在 `(custom-set-variables` 行前加上:
+
+```
+;; Todo.txt
+(require 'todotxt)
+(setq todotxt-file (expand-file-name "~/.todo/todo.txt"))
+
+;; Twitter
+(require 'twittering-mode)
+(setq twittering-use-master-password t)
+(setq twittering-icon-mode t)
+
+;; Python3 for nnreddit
+(setq elpy-rpc-python-command "python3")
+```
+
+按下 `Ctrl+x Ctrl+s` 保存文件,使用 `Ctrl+x Ctrl+c` 退出 Emacs,然后重启 Emacs。
+
+#### 使用 twittering-mode 在 Emacs 中发推
+
+![Emacs 中的 Twitter][4]
+
+[Twittering-mode][5] 是 Twitter 最好的 Emacs 接口之一。它几乎支持 Twitter 的所有功能,并且键盘快捷键也易于使用。
+
+首先,输入 `Meta+x twit` 来启动 twittering-mode。它会提供一个 URL 并提示你启动浏览器来访问它,你登录该 URL 后就能获得授权令牌。将令牌复制并粘贴到 Emacs 中,你的 Twitter 时间线就会加载了。你可以使用箭头键滚动,使用 `Tab` 从一个项目移动到另一个项目,并按回车访问光标所在的 URL。如果光标在用户名上,按回车将在 web 浏览器中打开时间轴。如果你在一条推文的文本上,按回车将回复该推文。你可以用 `u` 创建一个新的推文,用 `Ctrl+c+Enter` 转发一些内容,然后用 `d` 发送一条即时消息——它打开的对话框中有关于如何发送、取消和缩短 URL 的说明。
+
+按 `V` 会打开一个提示让你跳转到其他时间线。输入 `:mentions` 打开你的提及。输入 `:home` 打开你的主时间线,输入用户名将进入该用户的时间线。最后,按 `q` 会退出 twittering-mode 并关闭窗口。
+
+twitter-mode 还有更多功能,我鼓励你阅读它 GitHub 页面上的[完整功能列表][6]。
+
+#### 在 Emacs 上使用 Todotxt.el 追踪你的待办事项
+
+![Emacs 中的 todo.txt][7]
+
+[Todotxt.el][8] 是一个很棒的 [todo.txt][9] 待办列表管理器接口。它的快捷键几乎无所不包。
+
+输入 `Meta+x todotxt` 启动它将加载 `todotxt-file` 变量中指定的 `todo.txt` 文件(本文的第一部分中设置了该文件)。在 `todo.txt` 的缓冲区(窗口),你可以按 `a` 添加新任务并和按 `c` 标记它已被完成。你还可以使用 `r` 设置优先级,并使用 `t` 添加项目和上下文。完成事项后只需要按下 `A` 即可将任务移如 `done.txt`。你可以使用 `/` 过滤列表,也可以使用 `l` 刷新完整列表。同样,你可以按 `q` 退出。
+
+#### 在 Emacs 中使用 ERC 进行交谈
+
+![使用 ERC 与人交谈 ][10]
+
+Vim 的缺点之一是很难用它与人交谈。另一方面,Emacs 则将 [ERC][11] 客户端内置到默认发行版中。使用 `Meta+x ERC` 启动 ERC,系统将提示你输入服务器、用户名和密码。你可以使用几天前介绍设置 [BitlBee][12] 时使用的相同信息:服务器为 `localhost`,端口为 `6667`,相同用户名,无需密码。
+
+ERC 使用起来与其他 IRC 客户端一样。每个频道单独一个缓冲区(窗口),你可以使用 `Ctrl+x ctrl+b` 进行频道间切换,这也可以在 Emacs 中的其他缓冲区之间进行切换。`/quit` 命令将退出 ERC。
+
+#### 使用 Gnus 阅读电子邮件,Reddit 和 RSS
+
+![Mail,Reddit,and RSS feeds with Gnus][13]
+
+我相信昨天在我提及在 Emacs 中阅读邮件时,许多 Emacs 的老用户会问,“怎么没有 [Gnus][14] 呢?”
+
+这个疑问很合理。Gnus 是一个内置在 Emacs 中的邮件和新闻阅读器,尽管它这个邮件阅读器不支持以 [Notmuch][15] 作为搜索引擎。但是,如果你将其配置来阅读 Reddit 和 RSS feed(稍后你将这样做),那么同时使用它来阅读邮件是个聪明的选择。
+
+Gnus 是为阅读 Usenet 新闻而创建的,并从此发展而来。因此,它的很多外观和感觉(以及术语)看起来很像 Usenet 的新闻阅读器。
+
+Gnus 以 `~/.gnus` 作为自己的配置文件。(该配置也可以包含在 `~/.emacs.d/init.el` 中)。使用 `Ctrl+x Ctrl+f` 打开 `~/.gnus`,并添加以下内容:
+
+
+```
+;; Required packages
+(require 'nnir)
+(require 'nnrss)
+
+;; Primary Mailbox
+(setq gnus-select-method
+      '(nnmaildir "Local"
+                  (directory "~/Maildir")
+                  (nnir-search-engine notmuch)
+      ))
+(add-to-list 'gnus-secondary-select-methods
+             '(nnreddit ""))
+```
+
+用 `Ctrl+x Ctrl+s` 保存文件。这分配置告诉 Gnus 从 `~/Maildir` 这个本地邮箱中读取邮件作为主源(参见 `gnus-select-method` 变量),并使用 [nnreddit][16] 插件添加辅源(`gnus-secondary-select-methods` 变量)。你还可以定义多个辅助源,包括 Usenet 新闻(nntp)、IMAP (nnimap)、mbox(nnmbox)和虚拟集合(nnvirtual)。你可以在 [Gnus 手册][17] 中了解更多有关所有选项的信息。
+
+保存文件后,使用 `Meta+x Gnus` 启动 Gnus。第一次运行将在 Python 虚拟环境中安装 [Reddit 终端查看器][18],Gnus 通过它获取 Reddit 上的文章。然后它会启动浏览器来登录 Reddit。之后,它会扫描并加载你订阅的 Reddit 群组。你会看到一个有新邮件的邮件夹列表和一个有新内容的看板列表。在任一列表上按回车将加载该组中的消息列表。你可以使用箭头键导航并按回车加载和读取消息。在查看消息列表时,按 `q` 将返回到前一个视图,从主窗口按 `q` 将退出 Gnus。在阅读 Reddit 群组时,`a` 会创建一条新消息;在邮件组中,`m` 创建一个新的电子邮件;并且在任何一个视图中按 `r` 回复邮件。
+
+你还可以向 Gnus 接口中添加 RSS 流,并像阅读邮件和新闻组一样阅读它们。要添加 RSS 流,输入 `G+R` 并填写 RSS 流的 URL。会有提示让你输入 RSS 的标题和描述,这些信息可以从流中提取出来并填充进去。现在输入 `g` 来检查新消息(这将检查所有组中的新消息)。阅读 RSS 流 就像阅读 Reddit 群组和邮件一样,它们使用相同的快捷键。
+
+Gnus 中有*很多*功能,还有大量的键组合。[Gnus 参考卡][19]为每个视图列出了所有这些键组合(以非常小的字体显示在 5 页纸上)。
+
+#### 使用 nyan-mode 查看位置
+
+最后,你可能会一些截屏底部注意到 [Nyan cat][20]。这是 [nyan-mode][21],它指示了你在缓冲区中的位置,因此当你接近文档或缓冲区的底部时,它会变长。你可以使用包管理器安装它,并在 `~/.emacs.d/init.el` 中使用以下代码进行设置:
+
+```
+;; Nyan Cat
+(setq nyan-wavy-trail t)
+(setq nyan-bar-length 20)
+(nyan-mode)
+```
+
+### Emacs 的基本功能
+
+这只是 Emacs 所有功能的皮毛。Emacs *非常*强大,是我用来提高工作效率的必要工具之一,无论我是在追踪待办事项、阅读和回复邮件、编辑文本,还是与朋友和同事交流我都用它。这需要一点时间来适应,但是一旦你习惯了,它就会成为你桌面上最有用的工具之一。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/20/1/emacs-social-track-todo-list
+
+作者:[Kevin Sonney][a]
+选题:[lujun9972][b]
+译者:[lujun9972](https://github.com/lujun9972)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://opensource.com/users/ksonney
+[b]: https://github.com/lujun9972
+[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/talk_chat_team_mobile_desktop.png?itok=d7sRtKfQ (Team communication, chat)
+[2]: https://linux.cn/article-11932-1.html
+[3]: https://opensource.com/sites/default/files/uploads/productivity_19-1.png (All the things with Emacs)
+[4]: https://opensource.com/sites/default/files/uploads/productivity_19-2.png (Twitter in Emacs)
+[5]: https://github.com/hayamiz/twittering-mode
+[6]: https://github.com/hayamiz/twittering-mode#features
+[7]: https://opensource.com/sites/default/files/uploads/productivity_19-3.png (todo.txt in emacs)
+[8]: https://github.com/rpdillon/todotxt.el
+[9]: http://todotxt.org/
+[10]: https://opensource.com/sites/default/files/uploads/productivity_19-4.png (Chatting with erc)
+[11]: https://www.gnu.org/software/emacs/manual/html_mono/erc.html
+[12]: https://linux.cn/article-11856-1.html
+[13]: https://opensource.com/sites/default/files/uploads/productivity_19-5.png (Mail, Reddit, and RSS feeds with Gnus)
+[14]: https://www.gnus.org/
+[15]: https://linux.cn/article-11807-1.html
+[16]: https://github.com/dickmao/nnreddit
+[17]: https://www.gnus.org/manual/gnus.html
+[18]: https://pypi.org/project/rtv/
+[19]: https://www.gnu.org/software/emacs/refcards/pdf/gnus-refcard.pdf
+[20]: http://www.nyan.cat/
+[21]: https://github.com/TeMPOraL/nyan-mode
diff --git a/translated/tech/20200212 Extend the life of your SSD drive with fstrim.md b/published/20200212 Extend the life of your SSD drive with fstrim.md
similarity index 78%
rename from translated/tech/20200212 Extend the life of your SSD drive with fstrim.md
rename to published/20200212 Extend the life of your SSD drive with fstrim.md
index 24ed876272..dfb2969cf9 100644
--- a/translated/tech/20200212 Extend the life of your SSD drive with fstrim.md	
+++ b/published/20200212 Extend the life of your SSD drive with fstrim.md	
@@ -1,8 +1,8 @@
 [#]: collector: (lujun9972)
 [#]: translator: (wxy)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11959-1.html)
 [#]: subject: (Extend the life of your SSD drive with fstrim)
 [#]: via: (https://opensource.com/article/20/2/trim-solid-state-storage-linux)
 [#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss)
@@ -12,9 +12,9 @@
 
 > 这个新的系统服务可以使你的生活更轻松。
 
-![Linux keys on the keyboard for a desktop computer][1]
+![](https://img.linux.net.cn/data/attachment/album/202003/04/121625sl380ga10g56d33h.jpg)
 
-在过去的十年中,固态驱动器(SSD)带来了一种管理存储的新方法。与上一代的转盘产品相比,SSD 具有无声、更冷却的操作和更快的接口规格等优点。当然,新技术带来了新的维护和管理方法。SSD 具有称为 TRIM 的功能。从本质上讲,这是一种用于回收设备上未使用的块的方法,该块可能先前已被写入,但不再包含有效数据,因此可以返回到通用存储池以供重用。Opensource.com 的 Don Watkins 在首先其 2017 年的文章《[Linux 固态驱动器:为 SSD 启用 TRIM][2]》中介绍了 TRIM 的内容。
+在过去的十年中,固态驱动器(SSD)带来了一种管理存储的新方法。与上一代的转盘产品相比,SSD 具有无声、更冷却的操作和更快的接口规格等优点。当然,新技术带来了新的维护和管理方法。SSD 具有一种称为 TRIM 的功能。从本质上讲,这是一种用于回收设备上未使用的块的方法,该块可能先前已被写入,但不再包含有效数据,因此可以返回到通用存储池以供重用。Opensource.com 的 Don Watkins 首先在其 2017 年的文章《[Linux 固态驱动器:为 SSD 启用 TRIM][2]》中介绍过 TRIM 的内容。
 
 如果你一直在 Linux 系统上使用此功能,则你可能熟悉下面描述的两种方法。
 
@@ -29,7 +29,7 @@
 UUID=3453g54-6628-2346-8123435f  /home  xfs  defaults,discard   0 0
 ```
 
-丢弃选项可启用自动的在线 TRIM。由于可能会对性能造成负面影响,最近关于这是否是最佳方法一直存在争议。使用此选项会在每次将新数据写入驱动器时启动 TRIM。这可能会引入其他活动,从而影响存储性能。
+丢弃选项可启用自动的在线 TRIM。由于可能会对性能造成负面影响,最近关于这是否是最佳方法一直存在争议。使用此选项会在每次将新数据写入驱动器时启动 TRIM。这可能会引入其他磁盘活动,从而影响存储性能。
 
 #### Cron 作业
 
@@ -44,7 +44,7 @@ UUID=3453g54-6628-2346-8123435f  /home  xfs  defaults,discard   0 0
 
 ### 一个新的 TRIM 服务
 
-我最近发现有一个用于 TRIM 的 systemd 服务。Fedora 在版本 30 中将其[引入][3],尽管默认情况下在版本 30 和 31 中未启用它,但计划在版本 32 中使用它。如果你使用的是 Fedora 工作站 31,并且你想要开始使用此功能,可以非常轻松地启用它。我还将在下面向你展示如何对其进行测试。该服务并非 Fedora 独有的服务。它是否存在和地位将因发行版而异。
+我最近发现有一个用于 TRIM 的 systemd 服务。Fedora 在版本 30 中将其[引入][3],尽管默认情况下在版本 30 和 31 中未启用它,但计划在版本 32 中使用它。如果你使用的是 Fedora 工作站 31,并且你想要开始使用此功能,可以非常轻松地启用它。我还将在下面向你展示如何对其进行测试。该服务并非 Fedora 独有的服务。它是否存在及其地位将因发行版而异。
 
 #### 测试
 
@@ -78,7 +78,7 @@ Options:
  -V, --version       display version
 ```
 
-因此,现在我可以看到这个 systemd 服务已配置为在我的 `/etc/fstab` 文件中的所有受支持的挂载文件系统上运行该修剪操作( `-fstab`),并打印出丢弃的字节数(`-verbose`),但是抑制了任何可能会发生的错误消息(`–quiet`)。了解这些选项对测试很有帮助。例如,我可以从最安全的方法开始,即空运行。 我还将去掉 `-quiet` 参数,以便确定驱动器设置是否发生任何错误。
+因此,现在我可以看到这个 systemd 服务已配置为在我的 `/etc/fstab` 文件中的所有受支持的挂载文件系统上运行该修剪操作(`-fstab`),并打印出所丢弃的字节数(`-verbose`),但是抑制了任何可能会发生的错误消息(`–quiet`)。了解这些选项对测试很有帮助。例如,我可以从最安全的方法开始,即空运行。我还将去掉 `-quiet` 参数,以便确定驱动器设置是否发生任何错误。
 
 ```
 $ sudo /usr/sbin/fstrim --fstab --verbose --dry-run
@@ -101,7 +101,7 @@ $ sudo /usr/sbin/fstrim --fstab --verbose
 
 #### 启用
 
-Fedora Linux 实现了一个计划每周运行它的 systemd 计时器服务。要检查其是否存在和当前状态,请运行 `systemctl status`。
+Fedora Linux 实现了一个计划每周运行它的 systemd 计时器服务。要检查其是否存在及当前状态,请运行 `systemctl status`。
 
 ```
 $ sudo systemctl status fstrim.timer
@@ -121,7 +121,7 @@ $ sudo systemctl enable fstrim.timer
 $ sudo systemctl list-timers --all
 ```
 
-会显示出下列表明 `fstrim.timer` 存在的行。注意,该计时器实际上激活了 `fstrim.service`。这是 `fstrim` 实际调用的地方。与时间相关的字段显示为 `n/a`,因为该服务已启用且尚未运行。
+会显示出下列行,表明 `fstrim.timer` 存在。注意,该计时器实际上激活了 `fstrim.service` 服务。这是实际调用 `fstrim` 的地方。与时间相关的字段显示为 `n/a`,因为该服务已启用且尚未运行。
 
 ```
 NEXT   LEFT    LAST   PASSED   UNIT           ACTIVATES
@@ -141,7 +141,7 @@ via: https://opensource.com/article/20/2/trim-solid-state-storage-linux
 作者:[Alan Formy-Duval][a]
 选题:[lujun9972][b]
 译者:[wxy](https://github.com/wxy)
-校对:[校对者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/20200224 What developers need to know about domain-specific languages.md b/published/20200224 What developers need to know about domain-specific languages.md
similarity index 53%
rename from translated/tech/20200224 What developers need to know about domain-specific languages.md
rename to published/20200224 What developers need to know about domain-specific languages.md
index 299ed726fc..c0e01b7923 100644
--- a/translated/tech/20200224 What developers need to know about domain-specific languages.md	
+++ b/published/20200224 What developers need to know about domain-specific languages.md	
@@ -1,36 +1,36 @@
 [#]: collector: (lujun9972)
 [#]: translator: (HankChow)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-11957-1.html)
 [#]: subject: (What developers need to know about domain-specific languages)
 [#]: via: (https://opensource.com/article/20/2/domain-specific-languages)
 [#]: author: (Girish Managoli https://opensource.com/users/gammay)
 
 
-开发者需要了解的领域特定语言
+开发者需要了解的领域特定语言(DSL)
 ======
+
 > 领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。
 
-![Various programming languages in use][1]
+![](https://img.linux.net.cn/data/attachment/album/202003/04/112240b0os2988kolritlo.jpg)
 
-<ruby>领域特定语言<rt>domain-specific language</rt></ruby>(DSL)是在特定领域下用于特定上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是<ruby>通用语言<rt>general-purpose language</rt></ruby>(GPL),通用语言则可以广泛应用于各种商业或应用问题当中。
+<ruby>领域特定语言<rt>domain-specific language</rt></ruby>(DSL)是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是<ruby>通用语言<rt>general-purpose language</rt></ruby>(GPL,LCTT 译注:注意不要和 GPL 许可证混淆),通用语言则可以广泛应用于各种商业或应用问题当中。
 
 DSL 并不具备很强的普适性,它是仅为某个适用的领域而设计的,但它也足以用于表示这个领域中的问题以及构建对应的解决方案。HTML 是 DSL 的一个典型,它是在 Web 应用上使用的语言,尽管 HTML 无法进行数字运算,但也不影响它在这方面的广泛应用。
 
-而 GPL 则没有特定针对的领域,GPL 的设计者不可能知道这种语言会在什么领域被使用,更不清楚用户打算解决的问题是什么,因此 GPL 会被设计成可用于解决任何一种问题、适合任何一种业务、满足任何一种需求。例如 Java 就属于 GPL,它可以在 PC 或移动设备上运行,嵌入到银行、金融、保险、制造业等各种行业的应用中去。
+而 GPL 则没有特定针对的领域,这种语言的设计者不可能知道这种语言会在什么领域被使用,更不清楚用户打算解决的问题是什么,因此 GPL 会被设计成可用于解决任何一种问题、适合任何一种业务、满足任何一种需求。例如 Java 就属于 GPL,它可以在 PC 或移动设备上运行,嵌入到银行、金融、保险、制造业等各种行业的应用中去。
 
 ### DSL 的类别
 
 从使用方式的角度,语言可以划分出以下两类:
 
-  * DSL:使用 DSL 形式编写或表示的语言
-  * <ruby>宿主语言<rt>host language</rt></ruby>:用于执行或处理 DSL 的语言
+* DSL:使用 DSL 形式编写或表示的语言
+* <ruby>宿主语言<rt>host language</rt></ruby>:用于执行或处理 DSL 的语言
 
-当 DSL 以独有的形式表达,并由另一种宿主语言来处理时,这种 DSL 称为<ruby>外部<rt>external</rt></ruby> DSL。
-
-以下就是可以在宿主语言中处理的 SQL:
+由不同的语言编写并由另一种宿主语言处理的 DSL 被称为<ruby>外部<rt>external</rt></ruby> DSL。
 
+以下就是可以在宿主语言中处理的 SQL 形式的 DSL:
 
 ```
 SELECT account
@@ -40,22 +40,27 @@ WHERE account = '123' AND branch = 'abc' AND amount >= 1000
 
 因此,只要在规定了词汇和语法的情况下,DSL 也可以直接使用英语来编写,并使用诸如 ANTLR 这样的<ruby>解析器生成器<rt>parser generator</rt></ruby>以另一种宿主语言来处理 DSL:
 
-
 ```
-`if smokes then increase premium by 10%`
+if smokes then increase premium by 10%
 ```
 
-如果 DSL 和宿主语言是同一种语言,这种 DSL 称为<ruby>内部<rt>internal</rt></ruby> DSL,其中 DSL 由以同一种语义的宿主语言编写和处理,因此又称为<ruby>嵌入式<rt>embedded</rt></ruby> DSL。以下是两个例子:
+如果 DSL 和宿主语言是同一种语言,这种 DSL 称为<ruby>内部<rt>internal</rt></ruby>DSL,其中 DSL 由以同一种语义的宿主语言编写和处理,因此又称为<ruby>嵌入式<rt>embedded</rt></ruby> DSL。以下是两个例子:
 
-  * Bash 形式的 DSL 可以由 Bash 解释器执行:`if today_is_christmas; then apply_christmas_discount; fi` 同时这也是一段看起来符合英语语法的 Bash。
-  * 使用类似 Java 语法编写的 DSL: 
+* Bash 形式的 DSL 可以由 Bash 解释器执行:
+
+    ```
+if today_is_christmas; then apply_christmas_discount; fi
 ```
+    同时这也是一段看起来符合英语语法的 Bash。
+* 使用类似 Java 语法编写的 DSL: 
+
+    ```
 orderValue = orderValue
                 .applyFestivalDiscount()
                 .applyCustomerLoyalityDiscount()
                 .applyCustomerAgeDiscount(); 
 ```
-这一段的可读性也相当强。
+    这一段的可读性也相当强。
 
 实际上,DSL 和 GPL 之间并没有非常明确的界限。
 
@@ -63,18 +68,16 @@ orderValue = orderValue
 
 以下这些语言都可以作为 DSL 使用:
 
-  * Web 应用:HTML
-  * Shell:用于类 Unix 系统的 sh、Bash、CSH 等;用于 Windows 系统的 MS-DOS、Windows Terminal、PowerShell 等
-  * 标记语言:XML
-  * 建模:UML
-  * 数据处理:SQL 及其变体
-  * 业务规则管理:Drools
-  * 硬件:Verilog、VHD
-  * 构建工具:Maven、Gradle
-  * 数值计算和模拟:MATLAB(商业)、GNU Octave、Scilab
-  * 解析器和生成器:Lex、YACC、GNU Bison、ANTLR
-
-
+* Web 应用:HTML
+* Shell:用于类 Unix 系统的 sh、Bash、CSH 等;用于 Windows 系统的 MS-DOS、Windows Terminal、PowerShell 等
+* 标记语言:XML
+* 建模:UML
+* 数据处理:SQL 及其变体
+* 业务规则管理:Drools
+* 硬件:Verilog、VHD
+* 构建工具:Maven、Gradle
+* 数值计算和模拟:MATLAB(商业)、GNU Octave、Scilab
+* 解析器和生成器:Lex、YACC、GNU Bison、ANTLR
 
 ### 为什么要使用 DSL?
 
@@ -92,25 +95,22 @@ DSL 的优点是,它对于领域的特征捕捉得非常好,同时它不像
 
 开源的 DSL 软件包括:
 
-  * Xtext:Xtext 可以与 Eclipse 集成,并支持 DSL 开发。它能够实现代码生成,因此一些开源和商业产品都用它来提供特定的功能。用于农业活动建模分析的<ruby>多用途农业数据系统<rt>Multipurpose Agricultural Data System</rt></ruby>(MADS)就是基于 Xtext 实现的一个项目,可惜的是这个项目现在已经不太活跃了。
-  * JetBrains MPS:JetBrains MPS 是一个可供开发 DSL 的<ruby>集成开发环境<rt>Integrated Development Environment</rt></ruby>,它将文档在底层存储为一个抽象树结构(Microsoft Word 也使用了这一概念),因此它也自称为一个<ruby>投影编辑器<rt>projectional editor</rt></ruby>。JetBrains MPS 支持 Java、C、JavaScript 和 XML 的代码生成。
+* Xtext:Xtext 可以与 Eclipse 集成,并支持 DSL 开发。它能够实现代码生成,因此一些开源和商业产品都用它来提供特定的功能。用于农业活动建模分析的<ruby>多用途农业数据系统<rt>Multipurpose Agricultural Data System</rt></ruby>(MADS)就是基于 Xtext 实现的一个项目,可惜的是这个项目现在已经不太活跃了。
+* JetBrains MPS:JetBrains MPS 是一个可供开发 DSL 的<ruby>集成开发环境<rt>Integrated Development Environment</rt></ruby>,它将文档在底层存储为一个抽象树结构(Microsoft Word 也使用了这一概念),因此它也自称为一个<ruby>投影编辑器<rt>projectional editor</rt></ruby>。JetBrains MPS 支持 Java、C、JavaScript 和 XML 的代码生成。
 
 ### DSL 的最佳实践
 
 如果你想使用 DSL,记住以下几点:
 
-  * DSL 不同于 GPL,DSL 只能用于解决特定领域中有限范围内的问题。
-  * 不必动辄建立自己的 DSL,可以首先尝试寻找已有的 DSL。例如 [DSLFIN][4] 这个网站就提供了很多金融方面的 DSL。在实在找不到合适的 DSL 的情况下,才需要建立自己的 DSL。
-  * DSL 最好像平常的语言一样具有可读性。
-  * 尽管代码生成不是一项必需的工作,但它确实会大大提高工作效率。
-  * 虽然 DSL 被称为语言,但 DSL 不需要像 GPL 一样可以被执行,可执行性并不是 DSL 需要达到的目的。
-  * DSL 可以使用文本编辑器编写,但专门的 DSL 编辑器可以更轻松地完成 DSL 的语法和语义检查。
-
-
+* DSL 不同于 GPL,DSL 只能用于解决特定领域中有限范围内的问题。
+* 不必动辄建立自己的 DSL,可以首先尝试寻找已有的 DSL。例如 [DSLFIN][4] 这个网站就提供了很多金融方面的 DSL。在实在找不到合适的 DSL 的情况下,才需要建立自己的 DSL。
+* DSL 最好像平常的语言一样具有可读性。
+* 尽管代码生成不是一项必需的工作,但它确实会大大提高工作效率。
+* 虽然 DSL 被称为语言,但 DSL 不需要像 GPL 一样可以被执行,可执行性并不是 DSL 需要达到的目的。
+* DSL 可以使用文本编辑器编写,但专门的 DSL 编辑器可以更轻松地完成 DSL 的语法和语义检查。
 
 如果你正在使用或将要使用 DSL,欢迎在评论区留言。
 
-
 --------------------------------------------------------------------------------
 
 via: https://opensource.com/article/20/2/domain-specific-languages
@@ -118,7 +118,7 @@ via: https://opensource.com/article/20/2/domain-specific-languages
 作者:[Girish Managoli][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/20200129 Use Emacs to get social and track your todo list.md b/translated/tech/20200129 Use Emacs to get social and track your todo list.md
deleted file mode 100644
index fff71fcc19..0000000000
--- a/translated/tech/20200129 Use Emacs to get social and track your todo list.md	
+++ /dev/null
@@ -1,165 +0,0 @@
-[#]: collector: (lujun9972)
-[#]: translator: (lujun9972)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
-[#]: subject: (Use Emacs to get social and track your todo list)
-[#]: via: (https://opensource.com/article/20/1/emacs-social-track-todo-list)
-[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
-
-使用 Emacs 进行社交并跟踪你的待办事项列表
-======
-访问 Twitter、Reddit、 交谈、电子邮件 、RSS 和你的待办事项列表,这是我们关于 2020 年使用开源提高效率的 20 个方法系列的第 19 个。
-![团队沟通、交谈 ][1]
-
-去年,我给你们带来了 2019 年的 19 天新生产力工具。今年,我将采取一种不同的方法:建立一个新的环境,让你使用已用或未用的工具在新的一年里更有效率,。
-
-### 使用 Emacs 做(几乎)所有的事情,第 2 部分
-
-[昨天 ][2],我谈到了如何在 Emacs 中读取电子邮件、访问电子邮件地址和显示日历。Emacs 功能繁多,你还可以将它用于 Twitter、 交谈、待办事项列表等等!
-
-[在 Emacs 中处理所有事情 ][3]
-
-要完成所有这些,您需要安装一些 Emacs 包。和昨天一样,用 `Meta+x package-manager` 打开 Emacs 包管理器 (Meta 在大多数键盘上是 **Alt**,在 MacOS 上是 **Option**)。然后通过 **i** 选择以下带有的软件包,然后输入 **x** 进行安装:
-
-
-```
-nnreddit
-todotxt
-twittering-mode
-```
-
-安装之后,按下 `Ctrl+x ctrl+f` 打开 `~/.emacs.d/init.el`,并在 `(custom-set-variables` 行前加上:
-
-
-```
-;; Todo.txt
-(require 'todotxt)
-(setq todotxt-file (expand-file-name "~/.todo/todo.txt"))
-
-;; Twitter
-(require 'twittering-mode)
-(setq twittering-use-master-password t)
-(setq twittering-icon-mode t)
-
-;; Python3 for nnreddit
-(setq elpy-rpc-python-command "python3")
-```
-
-按下 `Ctrl+x Ctrl+s` 保存文件,使用 `Ctrl+x Ctrl+c` 退出 Emacs,然后重启 Emacs。
-
-#### 使用 twittering-mode 在 Emacs 中发推
-
-![Emacs 中的 Twitter][4]
-
-[Twittering-mode][5] 是 Twitter 最好的 Emacs 接口之一。它几乎支持 Twitter 的所有功能,并且键盘快捷键也易于使用。
-
-首先,输入 `Meta+x twit` 来启动 twitter-mode。它会提供一个 URL 并提示你启动浏览器来访问它,你登录该 URL 后就能获得授权令牌。将令牌复制并粘贴到 Emacs 中,您的 Twitter 时间线就会加载了。您可以使用**箭头**键滚动,使用 **Tab** 从一个项目移动到另一个项目,并按 **Enter** 访问光标所在的 URL。如果光标在用户名上,按 **Enter** 将在 web 浏览器中打开时间轴。如果你在一条 tweet 的文本上,按 **Enter** 将回复该 tweet。你可以用 **u** 创建一个新的 tweet,用 `Ctrl+c+Enter` 转发一些内容,然后用 **d** 发送一条直接消息——它打开的对话框中有关于如何发送、取消和缩短 url 的说明。
-
-按 **V** 会打开一个提示让你跳转到其他时间线。输入 **:mentions** 打开你的提及。输入 **:home** 打开你的主时间线,输入用户名将进入该用户的时间线。最后,按 **q** 会退出 twittering-mode 并关闭窗口。
-
-twitter-mode 还有更多功能,我鼓励你阅读它 GitHub 页面上的[完整功能列表 ][6]。
-
-#### 在 Emacs 上使用 Todotxt.el 追踪你的待办事项
-
-![Emacs 中的 todo.txt][7]
-
-[Todotxt.el][8] 是一个很棒的 [todo.txt][9] 待办列表管理器接口。它的快捷键几乎无所不包。
-
-输入 `Meta+x todotxt` 启动它将加载 **todotxt-file** 变量中指定的 todo.txt 文件(本文的第一部分中设置了该文件)。
-在 todo.txt 的缓冲区(窗口*,您可以按 **a** 添加新任务并和按 **c** 标记它已被完成。你还可以使用 **r** 设置优先级,并使用 **t** 添加项目和上下文。
-完成事项后只需要按下 **A** 即可将任务移如 **done.txt**。你可以使用**/**过滤列表,也可以使用 **l** 刷新完整列表。同样,您可以按 **q** 退出。
-
-#### 在 Emacs 中使用 ERC 进行交谈
-
-![使用 ERC 与人交谈 ][10]
-
-Vim 的缺点之一是很难用它与人交谈。另一方面,Emacs 则将 [ERC][11] 客户端内置到默认发行版中。使用 `Meta+x ERC` 启动 ERC,系统将提示您输入服务器、用户名和密码。你可以使用几天前介绍设置 [BitlBee][12] 时使用的相同信息:服务器为 **localhost**,端口为 **6667**,相同用户名,无需密码。
-ERC 使用起来与其他 IRC 客户端一样。每个频道单独一个缓冲区(窗口),您可以使用 `Ctrl+x ctrl+b` 进行频道间切换,这也可以在 Emacs 中的其他缓冲区之间进行切换。`/quit` 命令将退出 ERC。
-
-#### 使用 Gnus 阅读电子邮件,Reddit 和 RSS
-
-![Mail,Reddit,and RSS feeds with Gnus][13]
-
-我相信昨天在我提及在 Emacs 中阅读邮件时,许多 Emacs 的老用户会问,“怎么没有 [Gnus][14] 呢?”
-这个疑问很合理。Gnus 是一个内置在 Emacs 中的邮件和新闻阅读器,尽管它这个邮件阅读器不支持以 [Notmuch][15] 作为搜索引擎。但是,如果你将其配置来阅读 Reddit 和 RSS feed( 稍后您将这样做),那么同时使用它来阅读邮件是个聪明的选择。
-
-Gnus 是为阅读 Usenet 新闻而创建的,并从此发展而来。因此,它的很多外观和感觉(以及术语)看起来很像 Usenet 的新闻阅读器。
-
-Gnus 以 `~/.gnus` 作为自己的配置文件。(该配置也可以包含在 `~/.emacs.d/init.el` 中)。使用 `Ctrl+x Ctrl+f` 打开 `~/.gnus`,并添加以下内容:
-
-
-```
-;; Required packages
-(require 'nnir)
-(require 'nnrss)
-
-;; Primary Mailbox
-(setq gnus-select-method
-      '(nnmaildir "Local"
-                  (directory "~/Maildir")
-                  (nnir-search-engine notmuch)
-      ))
-(add-to-list 'gnus-secondary-select-methods
-             '(nnreddit ""))
-```
-
-用 `Ctrl+x Ctrl+s` 保存文件。这分配置告诉 Gnus 从 `~/Maildir` 这个本地邮箱中读取邮件作为主源(参见 **gnus-select-method** 变量),并使用 [nnreddit][16] 插件添加辅源 (**gnus-secondary-select-methods** 变量)。你还可以定义多个辅助源,包括 Usenet 新闻 (nntp)、IMAP (nnimap)、mbox (nnmbox) 和虚拟集合 (nnvirtual)。您可以在 [Gnus 手册 ][17] 中了解更多有关所有选项的信息。
-
-保存文件后,使用 `Meta+x Gnus` 启动 Gnus。第一次运行将在 Python 虚拟环境中安装 [Reddit 终端查看器 ][18],Gnus 通过它获取 Reddit 上的文章。然后它会启动浏览器来登录 Reddit。之后,它会扫描并加载你订阅的 Reddit 群组。你会看到一个有新邮件的邮件夹列表和一个有新内容的看板列表。在任一列表上按 **Enter** 将加载该组中的消息列表。您可以使用**箭头**键导航并按 **Enter** 加载和读取消息。在查看消息列表时,按 **q** 将返回到前一个视图,从主窗口按 **q** 将退出 Gnus。在阅读 Reddit 群组时,**a** 会创建一条新消息;在邮件组中,**m** 创建一个新的电子邮件;并且在任何一个视图中按 **r** 回复邮件。
-
-您还可以向 Gnus 接口中添加 RSS feed,并像阅读邮件和新闻组一样阅读它们。要添加 RSS feed,输入 `G+R` 并填写 RSS feed 的 URL。会有提示让你输入 feed 的标题和描述,这些信息可以从 feed 中提取出来并填充进去。现在输入 **g** 来检查新消息(这将检查所有组中的新消息)。阅读 feed 就像阅读 Reddit 群组和邮件一样,它们使用相同的快捷键。
-
-Gnus 中有_很多_功能,还有大量的键组合。[Gnus 参考卡 ][19] 为每个视图列出了所有这些键组合(以非常小的字体显示在 5 页纸上)。
-
-#### 使用 nyan-mode 查看位置
-
-As a final note,you might notice [Nyan cat][20] at the bottom of some of my screenshots。This is [nyan-mode][21],which indicates where you are in a buffer,so it gets longer as you get closer to the bottom of a document or buffer。You can install it with the package manager and set it up with the following code in **~/.emacs.d/init.el**:
-最后,你可能会一些截屏底部注意到 [Nyan cat][20]。这是 [nyan-mode][21],它指示了你在缓冲区中的位置,因此当您接近文档或缓冲区的底部时,它会变长。您可以使用包管理器安装它,并在 `~/.emacs.d/init.el` 中使用以下代码进行设置:
-
-
-```
-;; Nyan Cat
-(setq nyan-wavy-trail t)
-(setq nyan-bar-length 20)
-(nyan-mode)
-```
-
-### Emacs 的皮毛
-
-这只是 Emacs 所有功能的皮毛。Emacs_ 非常_强大,是我用来提高工作效率的必要工具之一,无论我是在追踪待办事项、阅读和回复邮件、编辑文本,还是与朋友和同事交流我都用它。这需要一点时间来适应,但是一旦你习惯了,它就会成为你桌面上最有用的工具之一。
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/20/1/emacs-social-track-todo-list
-
-作者:[Kevin Sonney][a]
-选题:[lujun9972][b]
-译者:[lujun9972](https://github.com/lujun9972)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://opensource.com/users/ksonney
-[b]: https://github.com/lujun9972
-[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/talk_chat_team_mobile_desktop.png?itok=d7sRtKfQ (Team communication, chat)
-[2]: https://opensource.com/article/20/1/emacs-mail-calendar
-[3]: https://opensource.com/sites/default/files/uploads/productivity_19-1.png (All the things with Emacs)
-[4]: https://opensource.com/sites/default/files/uploads/productivity_19-2.png (Twitter in Emacs)
-[5]: https://github.com/hayamiz/twittering-mode
-[6]: https://github.com/hayamiz/twittering-mode#features
-[7]: https://opensource.com/sites/default/files/uploads/productivity_19-3.png (todo.txt in emacs)
-[8]: https://github.com/rpdillon/todotxt.el
-[9]: http://todotxt.org/
-[10]: https://opensource.com/sites/default/files/uploads/productivity_19-4.png (Chatting with erc)
-[11]: https://www.gnu.org/software/emacs/manual/html_mono/erc.html
-[12]: https://opensource.com/article/20/1/open-source-chat-tool
-[13]: https://opensource.com/sites/default/files/uploads/productivity_19-5.png (Mail, Reddit, and RSS feeds with Gnus)
-[14]: https://www.gnus.org/
-[15]: https://opensource.com/article/20/1/organize-email-notmuch
-[16]: https://github.com/dickmao/nnreddit
-[17]: https://www.gnus.org/manual/gnus.html
-[18]: https://pypi.org/project/rtv/
-[19]: https://www.gnu.org/software/emacs/refcards/pdf/gnus-refcard.pdf
-[20]: http://www.nyan.cat/
-[21]: https://github.com/TeMPOraL/nyan-mode