From 0c576c6913861223e27bdd757864d0d6e756ca7f Mon Sep 17 00:00:00 2001
From: hopefully2333 <787016457@qq.com>
Date: Sun, 26 Aug 2018 22:19:59 +0800
Subject: [PATCH 01/57] Translated over
Translated over
---
...pen source role-playing games for Linux.md | 106 -----------------
...pen source role-playing games for Linux.md | 107 ++++++++++++++++++
2 files changed, 107 insertions(+), 106 deletions(-)
delete mode 100644 sources/tech/20180808 5 open source role-playing games for Linux.md
create mode 100644 translated/tech/20180808 5 open source role-playing games for Linux.md
diff --git a/sources/tech/20180808 5 open source role-playing games for Linux.md b/sources/tech/20180808 5 open source role-playing games for Linux.md
deleted file mode 100644
index 6b3681a3d7..0000000000
--- a/sources/tech/20180808 5 open source role-playing games for Linux.md
+++ /dev/null
@@ -1,106 +0,0 @@
-translated by hopefully2333
-
-5 open source role-playing games for Linux
-======
-
-
-
-Gaming has traditionally been one of Linux's weak points. That has changed somewhat in recent years thanks to Steam, GOG, and other efforts to bring commercial games to multiple operating systems, but those games are often not open source. Sure, the games can be played on an open source operating system, but that is not good enough for an open source purist.
-
-So, can someone who only uses free and open source software find games that are polished enough to present a solid gaming experience without compromising their open source ideals? Absolutely. While open source games are unlikely ever to rival some of the AAA commercial games developed with massive budgets, there are plenty of open source games, in many genres, that are fun to play and can be installed from the repositories of most major Linux distributions. Even if a particular game is not packaged for a particular distribution, it is usually easy to download the game from the project's website in order to install and play it.
-
-This article looks at role-playing games. I have already written about [arcade-style games][1], [board & card games][2], [puzzle games][3], and [racing & flying games][4]. In the final article in this series, I plan to cover strategy and simulation games.
-
-### Endless Sky
-
-
-
-[Endless Sky][5] is an open source clone of the [Escape Velocity][6] series from Ambrosia Software. Players captain a spaceship and travel between worlds delivering trade goods or passengers, taking on other missions along the way, or they can turn to piracy and steal from cargo ships. The game lets the player decide how they want to experience the game, and the extremely large map of solar systems is theirs to explore as they see fit. Endless Sky is one of those games that defies normal genre classifications, but this action, role-playing, space simulation, trading game is well worth checking out.
-
-To install Endless Sky, run the following command:
-
-On Fedora: `dnf install endless-sky`
-
-On Debian/Ubuntu: `apt install endless-sky`
-
-### FreeDink
-
-
-
-[FreeDink][7] is the open source version of [Dink Smallwood][8], an action role-playing game released by RTSoft in 1997. Dink Smallwood became freeware in 1999, and the source code was released in 2003. In 2008 the game's data files, minus a few sound files, were also released under an open license. FreeDink replaces those sound files with alternatives to provide a complete game. Gameplay is similar to Nintendo's [The Legend of Zelda][9] series. The player's character, the eponymous Dink Smallwood, explores an over-world map filled with hidden items and caves as he moves from one quest to another. Due to its age, FreeDink is not going to stand up to modern commercial games, but it is still a fun game with an amusing story. The game can be expanded by using [D-Mods][10], which are add-on modules that provide additional quests, but the D-Mods do vary greatly in complexity, quality, and age-appropriateness; the main game is suitable for teenagers, but some of the add-ons are for adult audiences.
-
-To install FreeDink, run the following command:
-
-On Fedora: `dnf install freedink`
-
-On Debian/Ubuntu: `apt install freedink`
-
-### ManaPlus
-
-
-
-Technically not a game in itself, [ManaPlus][11] is a client for accessing various massive multi-player online role-playing games. [The Mana World][12] and [Evol Online][13] are the two of the open source games available, but other servers are out there. The games feature 2D sprite graphics reminiscent of Super Nintendo games. While none of the games supported by ManaPlus are as popular as some of the commercial alternatives, they do have interesting worlds and at least a few players are online most of the time. Players are unlikely to run into massive groups of other players, but there are usually enough people around to make the games [MMORPG][14]s, not single-player games that require a connection to a server. The Mana World and Evol Online developers have joined together for future development, but for now, The Mana World's legacy server and Evol Online offer different experiences.
-
-To install ManaPlus, run the following command:
-
-On Fedora: `dnf install manaplus`
-
-On Debian/Ubuntu: `apt install manaplus`
-
-### Minetest
-
-
-
-Explore and build in an open-ended world with [Minetest][15], a clone of Minecraft. Just like the game it is based on, Minetest provides an open-ended world where players can explore and build whatever they wish. Minetest provides a wide variety of block types and tools, making it a good alternative to Minecraft for anyone wanting a more open alternative. Beyond what comes with the basic game, Minetest can be extended with [add-on modules][16], which add even more options.
-
-To install Minetest, run the following command:
-
-On Fedora: `dnf install minetest`
-
-On Debian/Ubuntu: `apt install minetest`
-
-### NetHack
-
-
-
-[NetHack][17] is a classic [Roguelike][18] role-playing game. Players explore a multi-level dungeon as one of several different character races, classes, and alignments. The object of the game is to retrieve the Amulet of Yendor. Players begin on the first level of the dungeon and try to work their way towards the bottom, with each level being randomly generated, which makes for a unique game experience each time. While this game features either ASCII graphics or basic tile graphics, the depth of game-play more than makes up for the primitive graphics. Players who want less primitive graphics might want to check out [Vulture for NetHack][19], which offers better graphics along with sound effects and background music.
-
-To install NetHack, run the following command:
-
-On Fedora: `dnf install nethack`
-
-On Debian/Ubuntu: `apt install nethack-x11 or apt install nethack-console`
-
-Did I miss one of your favorite open source role-playing games? Share it in the comments below.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/8/role-playing-games-linux
-
-作者:[Joshua Allen Holm][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://opensource.com/users/holmja
-[1]:https://opensource.com/article/18/1/arcade-games-linux
-[2]:https://opensource.com/article/18/3/card-board-games-linux
-[3]:https://opensource.com/article/18/6/puzzle-games-linux
-[4]:https://opensource.com/article/18/7/racing-flying-games-linux
-[5]:https://endless-sky.github.io/
-[6]:https://en.wikipedia.org/wiki/Escape_Velocity_(video_game)
-[7]:http://www.gnu.org/software/freedink/
-[8]:http://www.rtsoft.com/pages/dink.php
-[9]:https://en.wikipedia.org/wiki/The_Legend_of_Zelda
-[10]:http://www.dinknetwork.com/files/category_dmod/
-[11]:http://manaplus.org/
-[12]:http://www.themanaworld.org/
-[13]:http://evolonline.org/
-[14]:https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game
-[15]:https://www.minetest.net/
-[16]:https://wiki.minetest.net/Mods
-[17]:https://www.nethack.org/
-[18]:https://en.wikipedia.org/wiki/Roguelike
-[19]:http://www.darkarts.co.za/vulture-for-nethack
diff --git a/translated/tech/20180808 5 open source role-playing games for Linux.md b/translated/tech/20180808 5 open source role-playing games for Linux.md
new file mode 100644
index 0000000000..50a091ce14
--- /dev/null
+++ b/translated/tech/20180808 5 open source role-playing games for Linux.md
@@ -0,0 +1,107 @@
+
+五个 Linux 上的开源角色扮演游戏
+======
+
+
+
+游戏是 Linux 的传统弱点之一,感谢 Stean、GOG 和其他的游戏开发商将商业游戏移植到了多个操作系统,Linux 的这个弱点在近几年有所改观,但是这些游戏通常都不是开源的。当然,这些游戏可以在开源系统上运行,但是对于开源的纯粹主义者来说这还不够好。
+
+那么,有没有一款能让只使用免费和开源软件的人在不影响他们开源理念的情况下也能享受到可靠游戏体验的精致游戏呢?
+
+当然有啦!虽然开源游戏不太可能和拥有大量开发预算的 3A 级大作相媲美,但有许多类型的开源游戏也很有趣,而且他们可以直接从大多数主要的 Linux 发行版的仓库中进行安装。即使某个游戏没有被某些仓库打包,你也可以很简单地从这个游戏的官网下载它,并进行安装和运行。
+
+这篇文章着眼于角色扮演游戏,我已经写过关于街机游戏,棋牌游戏,益智游戏,以及赛车和飞行游戏。在本系列的最后一篇文章中,我打算覆盖战略游戏和模拟游戏这两方面。
+
+### Endless Sky
+
+
+
+Endless Sky 是 Ambrosia Software 的 Escape Velocity 系列的开源克隆。玩家乘坐一艘宇宙飞船,在不同的世界之间旅行来运送货物和乘客,并在沿途中承接其他任务,或者玩家也可以变成海盗,并从其他货船中偷取货物。这个游戏让玩家自己决定要如何去体验这个游戏,以太阳系为背景的超大地图是非常具有探索性的。Endless Sky 是那些违背正常游戏类别分类的游戏之一。但这个兼具动作、角色扮演、太空模拟和交易这四种类型的游戏非常值得一试。
+
+如果要安装 Endless Sky ,请运行下面的命令:
+
+在 Fedora 上: `dnf install endless-sky`
+
+在 Debian/Ubuntu 上: `apt install endless-sky`
+
+### FreeDink
+
+
+
+FreeDink 是 Dink Smallwood 的开源版本,Dink Smallwood 是一个由 RTSoft 在1997 年发售的动作角色扮演游戏。Dink Smallwood 在 1999 年时变为了免费游戏,并在 2003 年时公布了源代码。在 2008 年时,游戏的数据除了少部分的声音文件,都在开源协议下进行了开源。FreeDink 用一些替代的声音文件替换了缺少的那部分文件,来提供了一个完整的游戏。游戏的玩法类似于任天堂的塞尔达传说系列。玩家控制的角色和 Dink Smallwood 同名,他在从一个任务地点移动到下一个任务地点的时候,探索这个充满隐藏物品和隐藏洞穴的世界地图。由于这个游戏的年龄,FreeDink 不能和现代的商业游戏相抗衡,但它仍然是一个拥有着有趣故事的有趣的游戏。游戏可以通过 D-Mods 进行扩展,D-Mods 是提供额外任务的附加模块,但是 D-Mods 在复杂性,质量,和年龄适应性上确实有很大的差异。游戏主要适合青少年,但也有部分额外组件适用于成年玩家。
+
+要安装 FreeDink ,请运行下面的命令:
+
+在 Fedora 上: `dnf install freedink`
+
+在 Debian/Ubuntu 上: `apt install freedink`
+
+### ManaPlus
+
+
+
+从技术上讲,ManaPlus 本身并不是一个游戏,它是一个访问各种大型多人在线角色扮演游戏的客户端。The Mana World 和 Evol Online 是两款可以通过 ManaPlus 访问的开源游戏,但是游戏的服务器不在那里。这个游戏的 2D 精灵图像让人想起超级任天堂游戏,虽然 ManaPlus 支持的游戏没有一款能像商业游戏那样受欢迎的,但他们都有一个有趣的世界,并且在绝大部分时间里都有至少一小部分玩家在线。一个玩家不太可能遇到很多的其他玩家,但通常都能有足够的人一起在这个 MMORPG 游戏里进行冒险,而不是一个需要连接到服务器的单机游戏。Mana World 和 Evol Online 的开发者联合起来进行未来的开发,但是对于目前而言,Mana World 的历史服务器和 Evol Online 提供了不同的游戏体验。
+
+要安装 ManaPlus,请运行下面的命令:
+
+在 Fedora 上: `dnf install manaplus`
+
+在 Debian/Ubuntu 上: `apt install manaplus`
+
+### Minetest
+
+
+
+使用 Minetest 来在一个开放式世界里进行探索和创造,Minetest 是 Minecraft 的克隆,就像它所基于的游戏一样,Minetest 提供了一个开放的世界,玩家可以在这个世界里探索和创造他们想要的一切。Minetest 提供了各种各样的方块和工具,对于想要一个比 Minecraft 更加开放的游戏的人来说,Minetest 是一个很好的替代品。除了基本的游戏之外,Minetest 还可以通过额外的模块进行可扩展,增加更多的选项。
+
+如果要安装 Minetest ,请运行下面的命令:
+
+在 Fedora 上: `dnf install minetest`
+
+在 Debian/Ubuntu 上: `apt install minetest`
+
+### NetHack
+
+
+
+NetHack 是一款经典的 Roguelike 类型的角色扮演游戏,玩家可以从不同的角色种族、层次和路线中进行选择,来探索这个多层次的地下层。这个游戏的目的就是找回 Yendor 的护身符,玩家从地下层的第一层开始探索,并尝试向下一层移动,每一层都是随机生成的,这样每次都能获得不同的游戏体验。虽然这个游戏只具有 ASCII 图形和基本图形,但是游戏玩法的深度能够弥补画面的不足。玩家如果想要更好一些的画面的话,可能就需要去查看 NetHack 中的 Vulture 了,这个选项可以提供更好的图像、声音和背景音乐。
+
+如果要安装 NetHack ,请运行下面的命令:
+
+在 Fedora 上: `dnf install nethack`
+
+在 Debian/Ubuntu 上: `apt install nethack-x11 or apt install nethack-console`
+
+我有错过了你最喜欢的角色扮演游戏吗?请在下面的评论区分享出来。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/8/role-playing-games-linux
+
+作者:[Joshua Allen Holm][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[hopefully2333](https://github.com/hopefully2333)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://opensource.com/users/holmja
+[1]:https://opensource.com/article/18/1/arcade-games-linux
+[2]:https://opensource.com/article/18/3/card-board-games-linux
+[3]:https://opensource.com/article/18/6/puzzle-games-linux
+[4]:https://opensource.com/article/18/7/racing-flying-games-linux
+[5]:https://endless-sky.github.io/
+[6]:https://en.wikipedia.org/wiki/Escape_Velocity_(video_game)
+[7]:http://www.gnu.org/software/freedink/
+[8]:http://www.rtsoft.com/pages/dink.php
+[9]:https://en.wikipedia.org/wiki/The_Legend_of_Zelda
+[10]:http://www.dinknetwork.com/files/category_dmod/
+[11]:http://manaplus.org/
+[12]:http://www.themanaworld.org/
+[13]:http://evolonline.org/
+[14]:https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game
+[15]:https://www.minetest.net/
+[16]:https://wiki.minetest.net/Mods
+[17]:https://www.nethack.org/
+[18]:https://en.wikipedia.org/wiki/Roguelike
+[19]:http://www.darkarts.co.za/vulture-for-nethack
From fcfc138753e9ad0c893024667f99022c152da927 Mon Sep 17 00:00:00 2001
From: geekpi
Date: Mon, 27 Aug 2018 08:53:19 +0800
Subject: [PATCH 02/57] translated
---
...in Ubuntu and Other Linux Distributions.md | 92 -------------------
...in Ubuntu and Other Linux Distributions.md | 90 ++++++++++++++++++
2 files changed, 90 insertions(+), 92 deletions(-)
delete mode 100644 sources/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
create mode 100644 translated/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
diff --git a/sources/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md b/sources/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
deleted file mode 100644
index 14a74b0b7c..0000000000
--- a/sources/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
+++ /dev/null
@@ -1,92 +0,0 @@
-translating---geekpi
-
-How to Install 2048 Game in Ubuntu and Other Linux Distributions
-======
-**Popular mobile puzzle game 2048 can also be played on Ubuntu and Linux distributions. Heck! You can even play 2048 in Linux terminal. Don’t blame me if your productivity goes down because of this addictive game.**
-
-Back in 2014, 2048 was one of the most popular games on iOS and Android. This highly addictive game got so popular that it got a [browser version][1], desktop version as well as a terminal version on Linux.
-
-
-
-This tiny game is played by moving the tiles up and down, left and right. The aim of this puzzle game is to reach 2048 by combining tiles with matching number. So 2+2 becomes 4, 4+4 becomes 16 and so on. It may sound simple and boring but trust me its hell of an addictive game.
-
-### Play 2048 in Linux [GUI]
-
-There are several implementations of 2048 game available in Ubuntu and other Linux. You can simply search for it in the Software Center and you’ll find a few of them there.
-
-There is a [Qt-based][2] 2048 game that you can install on Ubuntu and other Debian and Ubuntu-based Linux distributions. You can install it using the command below:
-```
-sudo apt install 2048-qt
-
-```
-
-Once installed, you can find the game in the menu and start it. You can move the numbers using the arrow keys. Your highest score is saved as well.
-
-![2048 Game in Ubuntu Linux][3]
-
-### Play 2048 in Linux terminal
-
-The popularity of 2048 brought it to the terminal. If this surprises you, you should know that there are plenty of [awesome terminal games in Linux][4] and 2048 is certainly one of them.
-
-Now, there are a few ways you can play 2048 in Linux terminal. I’ll mention two of them here.
-
-#### 1\. term2058 Snap application
-
-There is a [snap application][5] called [term2048][6] that you can install in any [Snap supported Linux distribution][7].
-
-If you have Snap enabled, just use this command to install term2048:
-```
-sudo snap install term2048
-
-```
-
-Ubuntu users can also find this game in the Software Center and install it from there.
-
-![2048 Terminal Game in Linux][8]
-
-Once installed, you can use the command term2048 to run the game. It looks something like this:
-
-![2048 Terminal game][9]
-
-You can move using the arrow keys.
-
-#### 2\. Bash script for 2048 terminal game
-
-This game is actually a shell script which you can run in any Linux terminal. Download the game/script from Github:
-
-[Download Bash2048][10]
-
-Extract the downloaded file. Go in the extracted directory and you’ll see a shell script named 2048.sh. Just run the shell script. The game will start immediately. You can move the tiles using the arrow keys.
-
-![Linux Terminal game 2048][11]
-
-#### What games do you play on Linux?
-
-If you like playing games in Linux terminal, you should also try the [classic Snake game in Linux terminal][12].
-
-Which games do you regularly play in Linux? Do you also play games in terminal? If yes, which is your favorite terminal game?
-
---------------------------------------------------------------------------------
-
-via: https://itsfoss.com/2048-game/
-
-作者:[Abhishek Prakash][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]: https://itsfoss.com/author/abhishek/
-[1]:http://gabrielecirulli.github.io/2048/
-[2]:https://www.qt.io/
-[3]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/2048-qt-ubuntu.jpeg
-[4]:https://itsfoss.com/best-command-line-games-linux/
-[5]:https://itsfoss.com/use-snap-packages-ubuntu-16-04/
-[6]:https://snapcraft.io/term2048
-[7]:https://itsfoss.com/install-snap-linux/
-[8]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/term2048-game.png
-[9]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/term2048.jpg
-[10]:https://github.com/mydzor/bash2048
-[11]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/2048-bash-terminal.png
-[12]:https://itsfoss.com/nsnake-play-classic-snake-game-linux-terminal/ (nSnake: Play The Classic Snake Game In Linux Terminal)
diff --git a/translated/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md b/translated/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
new file mode 100644
index 0000000000..a74fe0c0c7
--- /dev/null
+++ b/translated/tech/20180720 How to Install 2048 Game in Ubuntu and Other Linux Distributions.md
@@ -0,0 +1,90 @@
+如何在 Ubuntu 和其他 Linux 发行版中安装 2048 游戏
+======
+**流行的移动益智游戏 2048 也可以在 Ubuntu 和 Linux 发行版上玩。啊!你甚至可以在 Linux 终端上玩 2048。如果你的生产率因为这个让人上瘾的游戏下降,请不要怪我。**
+
+早在 2014 年,2048 就是 iOS 和 Android 上最受欢迎的游戏之一。这款令人上瘾的游戏非常受欢迎,它在 Linux 上有[浏览器版][1]、桌面版和终端版。
+
+
+
+通过向上和向下,向左和向右移动滑块来玩这个小游戏。这个益智游戏的目的是通过组合匹配的滑块到数字 2048。因此 2+2 变成 4,4+4 变成 16,依此类推。这可能听起来简单而无聊,但相信我是一个令人上瘾的游戏。
+
+### 在 Linux 中玩 2048 [GUI]
+
+在 Ubuntu 和其他 Linux 中有些 2048 游戏。你可以在软件中心中搜索它,你可以在那里找到一些。
+
+有一个[基于 Qt ][2]的 2048 游戏,你可以在 Ubuntu 和其他基于 Debian 和 Ubuntu 的 Linux 发行版上安装。你可以使用以下命令安装它:
+```
+sudo apt install 2048-qt
+
+```
+
+安装完成后,你可以在菜单中找到该游戏并启动它。你可以使用箭头键移动数字。你的最高分也会保存。
+
+![2048 Game in Ubuntu Linux][3]
+
+### 在 Linux 终端玩 2048
+
+2048 的流行将它带到了终端。如果这让你感到惊讶,你应该知道 Linux 中有很多[很棒的终端游戏][4],而 2048 肯定就是其中之一。
+
+现在,有几种方法可以在 Linux 终端中玩 2048。我在这里提其中两个。
+
+#### 1\. term2048 Snap 程序
+
+有一个名为 [term2048][6] 的[ snap 程序][5]可以安装在任何[支持 Snap 的 Linux 发行版][7]中。
+
+如果你启用了 Snap,只需使用此命令安装 term2048:
+```
+sudo snap install term2048
+
+```
+
+Ubuntu 用户也可以在软件中心找到这个游戏并从那里安装它。
+
+![2048 Terminal Game in Linux][8]
+
+安装后,你可以使用命令 term2048 来运行游戏。它看起来像这样:
+
+![2048 Terminal game][9]
+
+你可以使用箭头键移动。
+
+#### 2\. 2048 游戏的 Bash 脚本
+
+这个游戏实际上是一个 shell 脚本,你可以在任何 Linux 终端上运行。从 Github 下载游戏/脚本:
+
+[下载 Bash2048][10]
+
+解压下载的文件。进入解压后的目录,你将看到名为 2048.sh 的 shell 脚本。只需运行 shell 脚本。游戏将立即开始。你可以使用箭头键移动滑块。
+
+![Linux Terminal game 2048][11]
+
+#### 你在Linux上玩什么游戏?
+
+如果你喜欢在 Linux 终端上玩游戏,你也应该尝试 [Linux 终端中的经典 Snake 游戏][12]。
+
+你经常在 Linux 中玩哪些游戏?你也在终端中玩游戏吗?如果是的话,哪个是你最喜欢的终端游戏?
+
+--------------------------------------------------------------------------------
+
+via: https://itsfoss.com/2048-game/
+
+作者:[Abhishek Prakash][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]: https://itsfoss.com/author/abhishek/
+[1]:http://gabrielecirulli.github.io/2048/
+[2]:https://www.qt.io/
+[3]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/2048-qt-ubuntu.jpeg
+[4]:https://itsfoss.com/best-command-line-games-linux/
+[5]:https://itsfoss.com/use-snap-packages-ubuntu-16-04/
+[6]:https://snapcraft.io/term2048
+[7]:https://itsfoss.com/install-snap-linux/
+[8]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/term2048-game.png
+[9]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/term2048.jpg
+[10]:https://github.com/mydzor/bash2048
+[11]:https://4bds6hergc-flywheel.netdna-ssl.com/wp-content/uploads/2018/07/2048-bash-terminal.png
+[12]:https://itsfoss.com/nsnake-play-classic-snake-game-linux-terminal/ (nSnake: Play The Classic Snake Game In Linux Terminal)
From 90a6deb5e05a82a04a2cc19a4b9f443046e35f84 Mon Sep 17 00:00:00 2001
From: geekpi
Date: Mon, 27 Aug 2018 09:02:19 +0800
Subject: [PATCH 03/57] translating
---
... 10 Popular Windows Apps That Are Also Available on Linux.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sources/tech/20180803 10 Popular Windows Apps That Are Also Available on Linux.md b/sources/tech/20180803 10 Popular Windows Apps That Are Also Available on Linux.md
index d2b667b706..e48ef211a7 100644
--- a/sources/tech/20180803 10 Popular Windows Apps That Are Also Available on Linux.md
+++ b/sources/tech/20180803 10 Popular Windows Apps That Are Also Available on Linux.md
@@ -1,3 +1,5 @@
+translating----geekpi
+
10 Popular Windows Apps That Are Also Available on Linux
======
From 1c22f682e50836127eed70ff39abb41216f9bade Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 11:54:06 +0800
Subject: [PATCH 04/57] PUB:20180819 How to define and use functions in Linux
Shell Script.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@LuuMing 恭喜你完成了第一篇翻译,本文首发地址: https://linux.cn/article-9954-1.html ,您的
LCTT 专页地址: https://linux.cn/lctt/LuuMing
---
...9 How to define and use functions in Linux Shell Script.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename {translated/tech => published}/20180819 How to define and use functions in Linux Shell Script.md (98%)
diff --git a/translated/tech/20180819 How to define and use functions in Linux Shell Script.md b/published/20180819 How to define and use functions in Linux Shell Script.md
similarity index 98%
rename from translated/tech/20180819 How to define and use functions in Linux Shell Script.md
rename to published/20180819 How to define and use functions in Linux Shell Script.md
index 1c800018fa..daa4547134 100644
--- a/translated/tech/20180819 How to define and use functions in Linux Shell Script.md
+++ b/published/20180819 How to define and use functions in Linux Shell Script.md
@@ -106,7 +106,7 @@ function func_return_value {
}
```
-上面的函数向调用者返回 10。让我们执行这个函数:
+上面的函数向调用者返回 `10`。让我们执行这个函数:
```
$ func_return_value
@@ -119,7 +119,7 @@ $ echo "Value returned by function is: $?"
Value returned by function is: 10
```
-**提示**:在 Bash 中使用 `$?` 去获取函数的返回值
+**提示**:在 Bash 中使用 `$?` 去获取函数的返回值。
### 函数技巧
From 809efc067ad54900c1aa3825414ba5f8444cbe23 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 12:12:38 +0800
Subject: [PATCH 05/57] PRF:20180306 Try, learn, modify- The new IT leader-s
code.md
@MjSeven
---
...learn, modify- The new IT leader-s code.md | 22 ++++++++++---------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md b/translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md
index ce65693a2b..7ecf178a6f 100644
--- a/translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md
+++ b/translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md
@@ -1,11 +1,13 @@
-尝试,学习,修改:新 IT 领导者的代码
+尝试、学习、修改:新 IT 领导者的代码
=====
+> 随着创新步伐的增加, 长期规划变得越来越困难。让我们重新思考一下我们对变化的反应方式。
+

-几乎每一天,新的技术发展都在威胁破坏,甚至是那些最复杂,最完善的商业计划。组织经常发现自己正在努力适应新的环境,这导致了他们对未来规划的转变。
+几乎每一天,新的技术发展都可能会动摇那些甚至最复杂、最完善的商业计划。组织经常发现自己需要不断努力适应新的环境,这导致了他们对未来规划的转变。
-根据 CompTIA 2017 年的[研究][1],目前只有 34% 的公司正在制定超过 12 个月的 IT 架构计划。从长期计划转变的一个原因是:商业环境变化如此之快,以至于几乎不可能进一步规划未来。[CIO.com 说道][1]“如果你的公司正视图制定一项将持续五到十年的计划,那就忘了它。”
+根据 CompTIA 2017 年的[研究][1],目前只有 34% 的公司正在制定超过 12 个月的 IT 架构计划。从长期计划转变的一个原因是:商业环境变化如此之快,以至于几乎不可能进一步规划未来。[CIO.com 说道][1],“如果你的公司正视图制定一项将持续五到十年的计划,那就忘了它。”
我听过来自世界各地无数客户和合作伙伴的类似声明:技术创新正以一种前所未有的速度发生着。
@@ -13,21 +15,21 @@
### 计划是怎么死的
-正如我在 Open Organization(开源组织)中写的那样,传统经营组织针对工业经济进行了优化。他们采用等级结构和严格规定的流程,以实现地位竞争优势。要取得成功,他们必须确定他们想要实现的战略地位。然后,他们必须制定并规划实现目标的计划,并以最有效的方式执行这些计划,通过协调活动和推动合规性。
+正如我在《开放式组织》中写的那样,传统经营组织针对工业经济进行了优化。他们采用等级结构和严格规定的流程,以实现地位竞争优势。要取得成功,他们必须确定他们想要实现的战略地位。然后,他们必须制定并规划实现目标的计划,并以最有效的方式执行这些计划,通过协调活动和推动合规性。
-管理层的职责是优化这一过程:计划,规定,执行。包括:让我们想象一个有竞争力的优势地位;让我们来配置组织以最终到达那里;然后让我们通过确保组织的所有方面都遵守规定来推动执行。这就是我所说的“机械管理”,对于不同时期来说它都是一个出色的解决方案。
+管理层的职责是优化这一过程:计划、规定、执行。包括:让我们想象一个有竞争力的优势地位;让我们来配置组织以最终达成目标;然后让我们通过确保组织的所有方面都遵守规定来推动执行。这就是我所说的“机械管理”,对于不同时期来说它都是一个出色的解决方案。
-在当今动荡不定的世界中,我们预测和定义战略位置的能力正在下降,因为变化的速度,新变量的引入速度正在加速。传统的,长期的,战略性规划和执行不像以前那么有效。
+在当今动荡不定的世界中,我们预测和定义战略位置的能力正在下降,因为变化的速度,新变量的引入速度正在加速。传统的、长期的、战略性规划和执行不像以前那么有效。
如果长期规划变得如此困难,那么规定必要的行为就更具有挑战性。并且衡量对计划的合规性几乎是不可能的。
-这一切都极大地影响了人们的工作方式。与过去传统经营组织中的工人不同,他们为自己能够重复行动而感到自豪,几乎没有变化和舒适的确定性 -- 今天的工人在充满模糊性的环境中运作。他们的工作需要更大的创造力,直觉和批判性判断 -- 有更大的要求是背离过去的“正常”,适应当今的新情况。
+这一切都极大地影响了人们的工作方式。与过去传统经营组织中的工人不同,他们为自己能够重复行动而感到自豪,几乎没有变化和舒适的确定性 —— 今天的工人在充满模糊性的环境中运作。他们的工作需要更大的创造力、直觉和批判性判断 —— 更多的需要背离过去的“常规”,以适应当今的新情况。
以这种新方式工作对于价值创造变得更加重要。我们的管理系统必须专注于构建结构,系统和流程,以帮助创建积极主动的工人,他们能够以快速和敏捷的方式进行创新和行动。
-我们需要提出一个不同的解决方案来优化组织,以适应不同的经济时代,从自下而上而不是自上而下开始。我们需要替换过去的三步骤 -- 计划,规定,执行,以一种更适应当今动荡天气的方法来取得成功 -- 尝试,学习,修改。
+我们需要提出一个不同的解决方案来优化组织,以适应不同的经济时代,从自下而上而不是自上而下开始。我们需要替换过去的三步骤 —— 计划、规定、执行,以一种更适应当今动荡天气的方法来取得成功 —— 尝试、学习、修改。
-### 尝试,学习,修改
+### 尝试、学习、修改
因为环境变化如此之快,而且几乎没有任何预警,并且因为我们需要采取的步骤不再提前计划,我们需要培养鼓励创造性尝试和错误的环境,而不是坚持对五年计划的忠诚。以下是以这种方式开始工作的一些暗示:
@@ -46,7 +48,7 @@ via: https://opensource.com/open-organization/18/3/try-learn-modify
作者:[Jim Whitehurst][a]
译者:[MjSeven](https://github.com/MjSeven)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
From ae4afd1fb0c3c12682e9b68e0919f6306496deb4 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 12:13:00 +0800
Subject: [PATCH 06/57] PUB:20180306 Try, learn, modify- The new IT leader-s
code.md
@MjSeven https://linux.cn/article-9955-1.html
---
.../20180306 Try, learn, modify- The new IT leader-s code.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {translated/talk => published}/20180306 Try, learn, modify- The new IT leader-s code.md (100%)
diff --git a/translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md b/published/20180306 Try, learn, modify- The new IT leader-s code.md
similarity index 100%
rename from translated/talk/20180306 Try, learn, modify- The new IT leader-s code.md
rename to published/20180306 Try, learn, modify- The new IT leader-s code.md
From 69ce519be27b1f2a2ac2d8935ad878e29b1d311e Mon Sep 17 00:00:00 2001
From: songshunqiang
Date: Mon, 27 Aug 2018 12:35:49 +0800
Subject: [PATCH 07/57] submit tech/20180821 A Collection Of More Useful Unix
Utilities.md
---
...ollection Of More Useful Unix Utilities.md | 323 ------------------
...ollection Of More Useful Unix Utilities.md | 313 +++++++++++++++++
2 files changed, 313 insertions(+), 323 deletions(-)
delete mode 100644 sources/tech/20180821 A Collection Of More Useful Unix Utilities.md
create mode 100644 translated/tech/20180821 A Collection Of More Useful Unix Utilities.md
diff --git a/sources/tech/20180821 A Collection Of More Useful Unix Utilities.md b/sources/tech/20180821 A Collection Of More Useful Unix Utilities.md
deleted file mode 100644
index 9e472e624e..0000000000
--- a/sources/tech/20180821 A Collection Of More Useful Unix Utilities.md
+++ /dev/null
@@ -1,323 +0,0 @@
-pinewall translating
-
-A Collection Of More Useful Unix Utilities
-======
-
-
-
-We all know about **GNU core utilities** that comes pre-installed with all Unix-like operating systems. These are the basic file, shell and text manipulation utilities of the GNU operating system. The GNU core utilities contains the commands, such as cat, ls, rm, mkdir, rmdir, touch, tail, wc and many more, for performing the day-to-day operations. Among these utilities, there are also some other useful collection of Unix utilities which are not included by default in the Unix-like operating systems. Meet **moreutilis** , a growing collection of more useful Unix utilities. The moreutils can be installed on GNU/Linux, and various Unix flavours such as FreeBSD, openBSD and Mac OS.
-
-
-As of writing this guide, Moreutils provides the following utilities:
-
- * **chronic** – Runs a command quietly unless it fails.
- * **combine** – Combine the lines in two files using boolean operations.
- * **errno** – Look up errno names and descriptions.
- * **ifdata** – Get network interface info without parsing ifconfig output.
- * **ifne** – Run a program if the standard input is not empty.
- * **isutf8** – Check if a file or standard input is utf-8.
- * **lckdo** – Execute a program with a lock held.
- * **mispipe** – Pipe two commands, returning the exit status of the first.
- * **parallel** – Run multiple jobs at once.
- * **pee** – tee standard input to pipes.
- * **sponge** – Soak up standard input and write to a file.
- * **ts** – timestamp standard input.
- * **vidir** – Edit a directory in your text editor.
- * **vipe** – Insert a text editor into a pipe.
- * **zrun** – Automatically uncompress arguments to command.
-
-
-
-### Install moreutils on Linux
-
-The moreutils is packaged to many Linux distributions, so you can install it using the distribution’s package manager.
-
-On **Arch Linux** and derivatives such as **Antergos** , **Manjaro Linux** , run the following command to install moreutils.
-```
-$ sudo pacman -S moreutils
-
-```
-
-On **Fedora** :
-```
-$ sudo dnf install moreutils
-
-```
-
-On **RHEL** , **CentOS** , **Scientific Linux** :
-```
-$ sudo yum install epel-release
-
-$ sudo yum install moreutils
-
-```
-
-On **Debian** , **Ubuntu** , **Linux Mint** :
-```
-$ sudo apt-get install moreutils
-
-```
-
-### Moreutils – A Collection Of More Useful Unix Utilities
-
-Let us see the usage details of some moreutils tools.
-
-##### The “Combine” utility
-
-As the name implies, the **Combine** utility of moreutils package combines the sets of lines from two files using boolean operations such as “and”, “not”, “or”, “xor”.
-
- * **and** – Outputs lines that are in file1 if they are also present in file2.
- * **not** – Outputs lines that are in file1 but not in file2.
- * **or** – Outputs lines that are in file1 or file2.
- * **xor** – Outputs lines that are in either file1 or file2, but not in both files.
-
-
-
-Let me show you an example, so you can understand what exactly this utility will do . I have two files namely **file1** and **file2**. Here is the contents of the those two files.
-```
-$ cat file1
-is
-was
-were
-where
-there
-
-$ cat file2
-is
-were
-there
-
-```
-
-Now, let me combine them using “and” boolean operation.
-```
-$ combine file1 and file2
-is
-were
-there
-
-```
-
-As you see in the above example, the “and” Boolean operator outputs lines that are in file1 if they are also present in file2. To put this more clearly, it displays the common lines(Ex. is, were, there) which are present in both files.
-
-Let us now use “not” operator and see the result.
-```
-$ combine file1 not file2
-was
-where
-
-```
-
-As you see in the above output, the “not” operator displays the lines that are only in file1, but not in file2.
-
-##### The “ifdata” utility
-
-The “ifdata” utility can be used to check for the existence of a network interface, to get information about the network interface, such as its IP address. Unlike the built-in commands such as “ifconfig” or “ip”, ifdata has simple to parse output that is designed to be easily used by a shell script.
-
-To display IP address details of a network interface, say wlp9s0, run:
-```
-$ ifdata -p wlp9s0
-192.168.43.192 255.255.255.0 192.168.43.255 1500
-
-```
-
-To display the netmask only, run:
-```
-$ ifdata -pn wlp9s0
-255.255.255.0
-
-```
-
-To check hardware address of a NIC:
-```
-$ ifdata -ph wlp9s0
-A0:15:46:90:12:3E
-
-```
-
-To check if a NIC exists or not, use “-pe” flag.
-```
-$ ifdata -pe wlp9s0
-yes
-
-```
-
-##### The “Pee” command
-
-It is somewhat similar to “tee” command.
-
-Let us see an example of “tee” command usage.
-```
-$ echo "Welcome to OSTechNIx" | tee file1 file2
-Welcome to OSTechNIx
-
-```
-
-The above command will create two files namely **file1** and **file2**. Then, append the line “Welcome to OSTechNix” on both files. And finally prints the message “Welcome to OSTechNix” in your Terminal.
-
-The “Pee” command performs a similar function, but slightly differs from “tee” command. Look at the following command:
-```
-$ echo "Welcome to OSTechNIx" | pee cat cat
-Welcome to OSTechNIx
-Welcome to OSTechNIx
-
-```
-
-As you see in the above output, the two instances of “cat” command receives the output from “echo” command and displays them twice in the Terminal.
-
-##### The “Sponge” utility
-
-This is yet another useful utility from moreutils package. **Sponge** reads standard input and writes it out to the specified file. Unlike a shell redirect, sponge soaks up all its input before writing the output file.
-
-Have a look at the contents of following text file.
-```
-$ cat file1
-I
-You
-Me
-We
-Us
-
-```
-
-As you see, the file contains some random lines, particularly “not” in alphabetical order. You want to sort the contents in alphabetical order. What would you do?
-```
-$ sort file1 > file1_sorted
-
-```
-
-Correct, isn’t it? Of course! As you see in the above command, I have sorted the contents of the **file1** in alphabetical order and saved them in a new file called **“file1_sorted”**. But, You can do the same without creating a new (i.e file1_sorted) using “sponge” command as shown below.
-```
-$ sort file1 | sponge file1
-
-```
-
-Now, check if the contents are sorted in alphabetical order.
-```
-$ cat file1
-I
-Me
-Us
-We
-You
-
-```
-
-See? we don’t need to create a new file. It’s very useful in scripting. And the good thing is sponge preserves the permissions of the output file if it already exists.
-
-##### The “ts” utility
-
-As the name says, “ts” command adds a timestamp to the beginning of each line of input.
-
-Look at the following command’s output:
-```
-$ ping -c 2 localhost
-PING localhost(localhost.localdomain (::1)) 56 data bytes
-64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
-64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms
-
---- localhost ping statistics ---
-2 packets transmitted, 2 received, 0% packet loss, time 1018ms
-rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms
-
-```
-
-Now, run the same command with “ts” utlity as shown below.
-```
-$ ping -c 2 localhost | ts
-Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
-Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
-Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
-Aug 21 13:32:28
-Aug 21 13:32:28 --- localhost ping statistics ---
-Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
-Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms
-
-```
-
-As you see in the above output, ts adds a timestamp at the beginning of each line. Here is another example.
-```
-$ ls -l | ts
-Aug 21 13:34:25 total 120
-Aug 21 13:34:25 drwxr-xr-x 2 sk users 12288 Aug 20 20:05 Desktop
-Aug 21 13:34:25 drwxr-xr-x 2 sk users 4096 Aug 10 18:44 Documents
-Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
-[...]
-
-```
-
-##### The “Vidir” utility
-
-The “Vidir” utility allows you to edit the contents of a specified directory in **vi** editor (Or, whatever you have in **$EDITOR** ). If no directory is specified, it will edit your current working directory.
-
-The following command edits the contents of the directory called “Desktop”.
-```
-$ vidir Desktop/
-
-```
-
-![vidir][2]
-
-The above command will open the specified directory in your **vi** editor. Each item in the editing directory will contain a number. You can now edit the files as the way you do in vi editor. Say for example, delete lines to remove files from the directory, or edit filenames to rename files.
-
-You can edit the sub directories as well. The following command edits the current working directory along with its sub-directories.
-```
-$ find | vidir -
-
-```
-
-Please note the “-” at the end of the command. If “-” is specified as the directory to edit, it reads a list of filenames from stdin and displays those for editing.
-
-If you want to edit only the files in the current working directory, you can use the following command:
-```
-$ find -type f | vidir -
-
-```
-
-Want to edit a specific file types, say .PNG files? then you would use:
-```
-$ vidir *.png
-
-```
-
-This command edits only the .png files in the current directory.
-
-##### The “Vipe” Utility
-
-The “vipe” command allows you to run your default editor in the middle of a Unix pipeline and edit the data that is being piped between programs.
-
-The following command opens the vi editor (my default editor, of course) and allows you to edit the input of the “echo” command (i.e Welcome To OSTechNix) and displays the final result.
-```
-$ echo "Welcome to OSTechNIx" | vipe
-Hello World
-
-```
-
-As you see in the above output, I passed the input “Welcome to OSTechNix” to vi editor and edited them as “Hello World” and displayed the final output.
-
-And, that’s all for now. I have covered only few utilities. The “moreutils” has more useful utilities. I already have mentioned the currently included utilities in moreutils package in the introductory section. You can read the man pages for greater detail on the above commands. Say for example, to know more about “vidir” command, run:
-```
-$ man vidir
-
-```
-
-Hope this helps. I will be soon here with another interesting and useful guide. If you find our articles helpful, please share them on your social, professional networks and support OSTechNix.
-
-Cheers!
-
-
-
---------------------------------------------------------------------------------
-
-via: https://www.ostechnix.com/moreutils-collection-useful-unix-utilities/
-
-作者:[SK][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://www.ostechnix.com/author/sk/
-[1]:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
-[2]:http://www.ostechnix.com/wp-content/uploads/2017/08/sk@sk_001-1.png
diff --git a/translated/tech/20180821 A Collection Of More Useful Unix Utilities.md b/translated/tech/20180821 A Collection Of More Useful Unix Utilities.md
new file mode 100644
index 0000000000..81646b231c
--- /dev/null
+++ b/translated/tech/20180821 A Collection Of More Useful Unix Utilities.md
@@ -0,0 +1,313 @@
+打包更多有用的 Unix 实用程序
+======
+
+
+
+我们都了解 **GNU 核心实用程序**,所有类 Unix 操作系统都预装了它们。它们是 GNU 操作系统中与文件、Shell 和 文本处理相关的基础实用工具。GNU 核心实用程序包括很多日常操作命令,例如 `cat`,`ls`, `rm`,`mkdir`,`rmdir`,`touch`,`tail` 和 `wc` 等。除了这些实用程序,还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 `moreutilis` 这个日益增长的集合。`moreutils` 可以在 GNU/Linux 和包括 FreeBSD,openBSD 及 Mac OS 在内的多种 Unix 类型操作系统上安装。
+
+截至到编写这份指南时, `moreutils` 提供如下实用程序:
+
+* `chronic` – 运行程序并忽略正常运行的输出
+* `combine` – 使用布尔操作合并文件
+* `errno` – 查询 errno 名称及描述
+* `ifdata` – 获取网络接口信息,无需解析 `ifconfig` 的结果
+* `ifne` – 在标准输入非空的情况下运行程序
+* `isutf8` – 检查文件或标准输入是否采用 UTF-8 编码
+* `lckdo` – 运行程序时考虑文件锁
+* `mispipe` – 使用管道连接两个命令,返回第一个命令的退出状态
+* `parallel` – 同时运行多个任务
+* `pee` – 将标准输入传递给多个管道
+* `sponge` – 整合标准输入并写入文件
+* `ts` – 为标准输入增加时间戳信息
+* `vidir` – 使用你默认的文本编辑器操作目录文件
+* `vipe` – 在管道中插入信息编辑
+* `zrun` – 自动解压并将其作为参数传递给命令
+
+### 在 Linux 上安装 moreutils
+
+由于 `moreutils` 已经被打包到多种 Linux 发行版中,你可以使用发行版对应的软件包管理器安装 `moreutils`。
+
+在 **Arch Linux** 或衍生的 **Antergos** 和 **Manjaro Linux** 上,运行如下命令安装 `moreutils`:
+
+```
+$ sudo pacman -S moreutils
+```
+
+在 **Fedora** 上,运行:
+
+```
+$ sudo dnf install moreutils
+```
+
+在 **RHEL**,**CentOS** 和 **Scientific Linux** 上,运行:
+
+```
+$ sudo yum install epel-release
+$ sudo yum install moreutils
+```
+
+在 **Debian**,**Ubuntu** 和 **Linux Mint** 上,运行:
+
+```
+$ sudo apt-get install moreutils
+```
+
+### Moreutils – 打包更多有用的 Unix 实用程序
+
+让我们看一下几个 `moreutils` 工具的用法细节。
+
+##### combine 实用程序
+
+正如 `combine` 名称所示,moreutils 中的这个实用程序可以使用包括 `and`,`not`,`or` 和 `xor` 在内的布尔操作,合并两个文件中的行。
+
+* `and` – 输出 `file1` 和 `file2` 都包含的行。
+* `not` – 输出 `file1` 包含但 `file2` 不包含的行。
+* `or` – 输出 `file1` 或 `file2` 包含的行。
+* `xor` – 输出仅被 `file1` 或 `file2` 包含的行
+
+下面举例说明,方便你理解该实用程序的功能。这里有两个文件,文件名分别为 `file1` 和 `file2`,其内容如下:
+
+```
+$ cat file1
+is
+was
+were
+where
+there
+
+$ cat file2
+is
+were
+there
+```
+
+下面,我使用 `and` 布尔操作合并这两个文件。
+
+```
+$ combine file1 and file2
+is
+were
+there
+```
+
+从上例的输出中可以看出,`and` 布尔操作只输出那些 `file1` 和 `file2` 都包含的行;更具体的来说,命令输出为两个文件共有的行,即 is,were 和 there。
+
+下面我们换成 `not` 操作,观察一下输出。
+
+```
+$ combine file1 not file2
+was
+where
+```
+
+从上面的输出中可以看出,`not` 操作输出 `file1` 包含但 `file2` 不包含的行。
+
+##### ifdata 实用程序
+
+`ifdata` 实用程序可用于检查网络接口是否存在,也可用于获取网络接口的信息,例如 IP 地址等。与预装的 `ifconfig` 和 `ip` 命令不同,`ifdata` 的输出更容易解析,这种设计的初衷是便于在 Shell 脚本中使用。
+
+如果希望查看某个接口的 IP 地址,不妨以 `wlp9s0` 为例,运行如下命令:
+
+```
+$ ifdata -p wlp9s0
+192.168.43.192 255.255.255.0 192.168.43.255 1500
+```
+
+如果只查看掩码信息,运行如下命令:
+
+```
+$ ifdata -pn wlp9s0
+255.255.255.0
+```
+
+如果查看网络接口的物理地址,运行如下命令:
+
+```
+$ ifdata -ph wlp9s0
+A0:15:46:90:12:3E
+```
+
+如果判断接口是否存在,可以使用 `-pe` 参数:
+
+```
+$ ifdata -pe wlp9s0
+yes
+```
+
+##### pee 命令
+
+该命令某种程度上类似于 `tee` 命令。
+
+我们先用一个例子看一下 `tee` 的用法。
+
+```
+$ echo "Welcome to OSTechNIx" | tee file1 file2
+Welcome to OSTechNIx
+```
+
+上述命令首先创建两个文件,名为 `file1` 和 `file2`;接着,将 “Welcome to OSTechNix” 行分别附加到两个文件中;最后,在终端中打印输出 “Welcome to OSTechNix”。
+
+`pee` 命令提供类似的功能,但与 `tee` 又稍微有些差异。查看下面的例子:
+
+```
+$ echo "Welcome to OSTechNIx" | pee cat cat
+Welcome to OSTechNIx
+Welcome to OSTechNIx
+```
+
+从上面的命令输出中可以看出,有两个 `cat` 命令实例获取 `echo` 命令的输出并执行,因而终端中出现两个同样的输出。
+
+##### sponge 实用程序
+
+这是 `moreutils` 软件包中的另一个有用的实用程序。`sponge` 读取标准输入并写入到指定的文件中。与 Shell 中的重定向不同,`sponge` 接收到完整输入后再写入输出文件。
+
+查看下面这个文本文件的内容:
+
+```
+$ cat file1
+I
+You
+Me
+We
+Us
+```
+
+可见,文件包含了一些无序的行;更具体的说,这些行“没有”按照字母顺序排序。如果希望将其内容安装字母顺序排序,你会怎么做呢?
+
+```
+$ sort file1 > file1_sorted
+```
+
+这样做没错,对吧?当然没错!在上面的命令中,我将 `file1` 文件内容按照字母顺序排序,将排序后的内容保存在 `file1_sorted` 文件中。但如果使用 `sponge` 命令,你可以在不创建新文件(即 `file1_sorted`)的情况下完成同样的任务,命令如下:
+
+```
+$ sort file1 | sponge file1
+```
+
+那么,让我们检查一下文件内容是否已经按照字母顺序排序:
+
+```
+$ cat file1
+I
+Me
+Us
+We
+You
+```
+
+看到了吧?并不需要创建新文件。在脚本编程中,这非常有用。另一个好消息是,如果待写入的文件已经存在,`sponge` 会保持其权限信息不变。
+
+##### ts 实用程序
+
+正如名称所示,`ts` 命令在每一行输出的行首增加时间戳。
+
+查看如下命令的输出:
+
+```
+$ ping -c 2 localhost
+PING localhost(localhost.localdomain (::1)) 56 data bytes
+64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
+64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms
+
+--- localhost ping statistics ---
+2 packets transmitted, 2 received, 0% packet loss, time 1018ms
+rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms
+```
+
+下面,结合 `ts` 实用程序运行同样地命令:
+
+```
+$ ping -c 2 localhost | ts
+Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
+Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
+Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
+Aug 21 13:32:28
+Aug 21 13:32:28 --- localhost ping statistics ---
+Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
+Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms
+```
+
+对比输出可以看出,`ts` 在每一行行首增加了时间戳。下面给出另一个例子:
+
+```
+$ ls -l | ts
+Aug 21 13:34:25 total 120
+Aug 21 13:34:25 drwxr-xr-x 2 sk users 12288 Aug 20 20:05 Desktop
+Aug 21 13:34:25 drwxr-xr-x 2 sk users 4096 Aug 10 18:44 Documents
+Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
+[...]
+```
+
+##### vidir 实用程序
+
+`vidir` 实用程序可以让你使用 `vi` 编辑器(或其它 `$EDITOR` 环境变量指定的编辑器)编辑指定目录的内容。如果没有指定目录,`vidir` 会默认编辑你当前的目录。
+
+下面的命令编辑 `Desktop` 目录的内容:
+
+```
+$ vidir Desktop/
+```
+
+![vidir][2]
+
+上述命令使用 `vi` 编辑器打开了指定的目录,其中目录内的文件都会对应一个数字。下面你可以按照 `vi` 的操作方式来编辑目录中的这些文件:例如,删除行意味着删除目录中对应的文件,修改行中字符串意味着对文件进行重命名。
+
+你也可以编辑子目录。下面的命令会编辑当前目录及所有子目录:
+
+```
+$ find | vidir -
+```
+
+请注意命令结尾的 `-`。如果 `-` 被指定为待编辑的目录,`vidir` 会从标准输入读取一系列文件名,列出它们让你进行编辑。
+
+如果你只想编辑当前目录下的文件,可以使用如下命令:
+
+```
+$ find -type f | vidir -
+```
+
+只想编辑特定类型的文件,例如 `.PNG` 文件?你可以使用如下命令:
+
+```
+$ vidir *.png
+```
+
+这时命令只会编辑当前目录下以 `.PNG` 为后缀的文件。
+
+##### vipe 实用程序
+
+`vipe` 命令可以让你使用默认编辑器接收 Unix 管道输入,编辑之后使用管道输出供下一个程序使用。
+
+执行下面的命令会打开 `vi` 编辑器(当然是我默认使用的编辑器),你可以编辑 `echo` 命令的管道输入(即 “Welcome to OSTechNix”),最后将编辑过的内容输出到终端中。
+
+```
+$ echo "Welcome to OSTechNIx" | vipe
+Hello World
+```
+
+从上面的输出可以看出,我通过管道将“Welcome to OSTechNix”输入到 `vi` 编辑器中,将内容编辑为“Hello World”,最后显示该内容。
+
+好了,就介绍这么多吧。我只介绍了一小部分实用程序,而 `moreutils` 包含更多有用的实用程序。我在文章开始的时候已经列出目前 `moreutils` 软件包内包含的实用程序,你可以通过 `man` 帮助页面获取更多相关命令的细节信息。举个例子,如果你想了解 `vidir` 命令,请运行:
+
+```
+$ man vidir
+```
+
+希望这些内容对你有所帮助。我还将继续分享其它有趣且实用的指南,如果你认为这些内容对你有所帮助,请分享到社交网络或专业圈子,也欢迎你支持 OSTechNix 项目。
+
+干杯!
+
+--------------------------------------------------------------------------------
+
+via: https://www.ostechnix.com/moreutils-collection-useful-unix-utilities/
+
+作者:[SK][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[pinewall](https://github.com/pinewall)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://www.ostechnix.com/author/sk/
+[1]:data:image/gif;base64,lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
+[2]:http://www.ostechnix.com/wp-content/uploads/2017/08/sk@sk_001-1.png
From 1ad0d2fdd0a611bbd1fc29216e4ccd0310b55052 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 12:37:03 +0800
Subject: [PATCH 08/57] PRF:20180815 How the L1 Terminal Fault vulnerability
affects Linux systems.md
@geekpi
---
...ult vulnerability affects Linux systems.md | 52 ++++++++++++-------
1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md b/translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
index 8e178240ec..54cad9f239 100644
--- a/translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
+++ b/translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
@@ -1,39 +1,50 @@
-L1 终端错误漏洞如何影响 Linux 系统
+L1 终端错误漏洞(L1TF)如何影响 Linux 系统
======
+> L1 终端错误(L1TF)影响英特尔处理器和 Linux 操作系统。让我们了解一下这个漏洞是什么,以及 Linux 用户需要为它做点什么。
+

-昨天在英特尔、微软和红帽的安全建议中宣布,一个新发现的漏洞英特尔处理器(还有 Linux)的漏洞称为 L1TF 或 “L1 Terminal Fault”,引起了 Linux 用户和管理员的注意。究竟什么是这个漏洞,谁应该担心它?
+昨天(LCTT 译注:本文发表于 2018/8/15)在英特尔、微软和红帽的安全建议中宣布,一个新发现的漏洞英特尔处理器(还有 Linux)的漏洞称为 L1TF 或 “L1 终端错误”,引起了 Linux 用户和管理员的注意。究竟什么是这个漏洞,谁应该担心它?
-### 1TF、 L1 Terminal Fault 和 Foreshadow
+### L1TF、 L1 Terminal Fault 和 Foreshadow
-处理器漏洞由 L1TF、L1 Terminal Fault 和 Foreshadow 组成。研究人员在 1 月份发现了这个问题并向英特尔报告称其为 “Foreshadow”。它类似于过去发现的漏洞(例如 Spectre)。
+处理器漏洞被称作 L1TF、L1 Terminal Fault 和 Foreshadow。研究人员在 1 月份发现了这个问题并向英特尔报告称其为 “Foreshadow”。它类似于过去发现的漏洞(例如 Spectre)。
-此漏洞是特定于 Intel 的。其他处理器不受影响。与其他一些漏洞一样,它之所以存在,是因为设计时为了优化内核处理速度,但允许其他进程访问数据。
+此漏洞是特定于英特尔的。其他处理器不受影响。与其他一些漏洞一样,它之所以存在,是因为设计时为了优化内核处理速度,但允许其他进程访问数据。
**[另请阅读:[22 个必要的 Linux 安全命令][1]]**
已为此问题分配了三个 CVE:
- * CVE-2018-3615:英特尔软件保护扩展(英特尔 SGX)
- * CVE-2018-3620:操作系统和系统管理模式(SMM)
+ * CVE-2018-3615:英特尔软件保护扩展(英特尔 SGX)
+ * CVE-2018-3620:操作系统和系统管理模式(SMM)
* CVE-2018-3646:虚拟化的影响
+英特尔发言人就此问题发表了这一声明:
-
-英特尔发言人就此问题发表了这一声明:_“L1 Terminal Fault 通过今年早些时候发布的微代码更新得到解决,再加上从今天开始提供的操作系统和虚拟机管理程序软件的相应更新。我们在网上提供了更多信息,并继续鼓励每个人更新系统,因为这是受到保护的最佳方式之一。我们要感谢 imec-DistriNet、KU Leuven、以色列理工学院,密歇根大学,阿德莱德大学和 Data61 的研究人员以及我们的行业合作伙伴,他们帮助我们识别和解决了这个问题。“_
+> “L1 Terminal Fault 通过今年早些时候发布的微代码更新得到解决,再加上从今天开始提供的操作系统和虚拟机管理程序软件的相应更新。我们在网上提供了更多信息,并继续鼓励每个人更新操作系统,因为这是得到保护的最佳方式之一。我们要感谢 imec-DistriNet、KU Leuven、以色列理工学院,密歇根大学,阿德莱德大学和 Data61 的研究人员以及我们的行业合作伙伴,他们帮助我们识别和解决了这个问题。“
### L1TF 会影响你的 Linux 系统吗?
-简短的回答是“可能不会”。如果你因为在今年 1 月爆出的[ Spectre 和 Meltdown 漏洞][2]修补过系统,那你应该是安全的。与 Spectre 和 Meltdown 一样,英特尔声称真实世界中还没有系统受到影响的报告或者检测到。他们还表示,这些变化不太可能在单个系统上产生明显的性能影响,但它们可能对使用虚拟化操作系统的数据中心产生大的影响。
+简短的回答是“可能不会”。如果你因为在今年 1 月爆出的 [Spectre 和 Meltdown 漏洞][2]修补过系统,那你应该是安全的。与 Spectre 和 Meltdown 一样,英特尔声称真实世界中还没有系统受到影响的报告或者检测到。他们还表示,这些变化不太可能在单个系统上产生明显的性能影响,但它们可能对使用虚拟化操作系统的数据中心产生大的影响。
+
+即使如此,仍然推荐频繁地打补丁。要检查你当前的内核版本,使用 `uname -r` 命令:
-即使如此,仍然推荐频繁地打补丁。要检查你当前的内核版本,使用 **uname -r** 命令:
```
$ uname -r
4.18.0-041800-generic
-
```
+### 更多资源
+
+请查看如下资源以了解 L1TF 的更多细节,以及为什么会出现这个漏洞:
+
+- [L1TF explained in ~3 minutes (Red Hat)][5]
+- [L1TF explained in under 11 minutes (Red Hat)][6]
+- [Technical deep dive][7]
+- [Red Hat explanation of L1TF][8]
+- [Ubuntu updates for L1TF][9]
--------------------------------------------------------------------------------
@@ -42,12 +53,17 @@ via: https://www.networkworld.com/article/3298157/linux/linux-and-l1tf.html
作者:[Sandra Henry-Stocker][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-[a]:https://www.networkworld.com/author/Sandra-Henry_Stocker/
-[1]:https://www.networkworld.com/article/3272286/open-source-tools/22-essential-security-commands-for-linux.html
-[2]:https://www.networkworld.com/article/3245813/security/meltdown-and-spectre-exploits-cutting-through-the-fud.html
-[3]:https://www.facebook.com/NetworkWorld/
-[4]:https://www.linkedin.com/company/network-world
+[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
+[1]: https://www.networkworld.com/article/3272286/open-source-tools/22-essential-security-commands-for-linux.html
+[2]: https://www.networkworld.com/article/3245813/security/meltdown-and-spectre-exploits-cutting-through-the-fud.html
+[3]: https://www.facebook.com/NetworkWorld/
+[4]: https://www.linkedin.com/company/network-world
+[5]: https://www.youtube.com/watch?v=kBOsVt0iXE4&feature=youtu.be
+[6]: https://www.youtube.com/watch?v=kqg8_KH2OIQ
+[7]: https://www.redhat.com/en/blog/deeper-look-l1-terminal-fault-aka-foreshadow
+[8]: https://access.redhat.com/security/vulnerabilities/L1TF
+[9]: https://blog.ubuntu.com/2018/08/14/ubuntu-updates-for-l1-terminal-fault-vulnerabilities
From e3817343a4287eb753f638f5c4cc5b2faf181b44 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 12:37:42 +0800
Subject: [PATCH 09/57] PUB:20180815 How the L1 Terminal Fault vulnerability
affects Linux systems.md
@geekpi https://linux.cn/article-9956-1.html
---
...w the L1 Terminal Fault vulnerability affects Linux systems.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {translated/tech => published}/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md (100%)
diff --git a/translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md b/published/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
similarity index 100%
rename from translated/tech/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
rename to published/20180815 How the L1 Terminal Fault vulnerability affects Linux systems.md
From 388f62decd7075b0d88e7a7a92a4d28ec187ab74 Mon Sep 17 00:00:00 2001
From: LuMing <784315443@qq.com>
Date: Mon, 27 Aug 2018 15:11:53 +0800
Subject: [PATCH 10/57] translating by LuuMing
---
sources/tech/20180810 6 Reasons Why Linux Users Switch to BSD.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/sources/tech/20180810 6 Reasons Why Linux Users Switch to BSD.md b/sources/tech/20180810 6 Reasons Why Linux Users Switch to BSD.md
index 50b6361b4b..6cedde1c0b 100644
--- a/sources/tech/20180810 6 Reasons Why Linux Users Switch to BSD.md
+++ b/sources/tech/20180810 6 Reasons Why Linux Users Switch to BSD.md
@@ -1,3 +1,4 @@
+LuuMing translating
6 Reasons Why Linux Users Switch to BSD
======
Thus far I have written several articles about [BSD][1] for It’s FOSS. There is always at least one person in the comments asking “Why bother with BSD?” I figure that the best way to respond was to write an article on the topic.
From af0fc294fc8bbe29ae7921ec23474ac605a49265 Mon Sep 17 00:00:00 2001
From: David Chen
Date: Mon, 27 Aug 2018 17:07:59 +0800
Subject: [PATCH 11/57] Translated.
---
...t I Learned from Programming Interviews.md | 142 -----------------
...t I Learned from Programming Interviews.md | 146 ++++++++++++++++++
2 files changed, 146 insertions(+), 142 deletions(-)
delete mode 100644 sources/tech/20180131 What I Learned from Programming Interviews.md
create mode 100644 translated/tech/20180131 What I Learned from Programming Interviews.md
diff --git a/sources/tech/20180131 What I Learned from Programming Interviews.md b/sources/tech/20180131 What I Learned from Programming Interviews.md
deleted file mode 100644
index 71c98a4744..0000000000
--- a/sources/tech/20180131 What I Learned from Programming Interviews.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Translating by DavidChenLiang
-
-What I Learned from Programming Interviews
-============================================================
-
-
-Whiteboard programming interviews
-
-In 2017, I went to the [Grace Hopper Celebration][1] of women in computing. It’s the largest gathering of this kind, with 17,000 women attending last year.
-
-This conference has a huge career fair where companies interview attendees. Some even get offers. Walking around the area, I noticed that some people looked stressed and worried. I overheard conversations, and some talked about how they didn’t do well in the interview.
-
-I approached a group of people that I overheard and gave them advice. I considered some of the advice I gave to be basic, such as “it’s okay to think of the naive solution first.” But people were surprised by most of the advice I gave them.
-
-I wanted to help more people with this. I gathered a list of tips that worked for me and published a [podcast episode][2] about them. They’re also the topic of this post.
-
-I’ve had many programming interviews both for internships and full-time jobs. When I was in college studying Computer Science, there was a career fair every fall semester where the first round of interviews took place. I have failed at the first and final rounds of interviews. After each interview, I reflected on what I could’ve done better and had mock up interviews with friends who gave me feedback.
-
-Whether we find a job through a job portal, networking, or university recruiting, part of the process involves doing a technical interview.
-
-In recent years we’ve seen different interview formats emerge:
-
-* Pair programming with an engineer
-
-* Online quiz and online coding
-
-* Whiteboard interviews
-
-I’ll focus on the whiteboard interview because it’s the one that I have experienced. I’ve had many interviews. Some of them have gone well, while others haven’t.
-
-### What I did wrong
-
-First, I want to go over the things I did wrong in my interviews. This helps see the problems and what to improve.
-
-When an interviewer gave me a technical problem, I immediately went to the whiteboard and started trying to solve it. _Without saying a word._
-
-I made two mistakes here:
-
-#### Not clarifying information that is crucial to solve a problem
-
-For example, are we only working with numbers or also strings? Are we supporting multiple data types? If you don’t ask questions before you start working on a question, your interviewer can get the impression that you won’t ask questions before you start working on a project at their company. This is an important skill to have in the workplace. It is not like school anymore. You don’t get an assignment with all the steps detailed for you. You have to find out what those are and define them.
-
-#### Thinking without writing or communicating
-
-Often times I stood there thinking without writing. When I was doing a mock interview with a friend, he told me that he knew I was thinking because we had worked together. To a stranger, it can seem that I’m clueless, or that I’m thinking. It is also important not to rush on a solution right away. Take some time to brainstorm ideas. Sometimes the interviewer will gladly participate in this. After all, that’s how it is at work meetings.
-
-### Coming up with a solution
-
-Before you begin writing code, it helps if you come up with the algorithm first. Don’t start writing code and hope that you’ll solve the problem as you write.
-
-This is what has worked for me:
-
-1. Brainstorm
-
-2. Coding
-
-3. Error handling
-
-4. Testing
-
-#### 1\. Brainstorm
-
-For me, it helps to visualize first what the problem is through a series of examples. If it’s a problem related to trees, I would start with the null case, one node, two nodes, three nodes. This can help you generalize a solution.
-
-On the whiteboard, write down a list of the things the algorithm needs to do. This way, you can find bugs and issues before writing any code. Just keep track of the time. I made a mistake once where I spent too much time asking clarifying questions and brainstorming, and I barely had time to write the code. The downside of this is that your interviewer doesn’t get to see how you code. You can also come off as if you’re trying to avoid the coding portion. It helps to wear a wrist watch, or if there’s a clock in the room, look at it occasionally. Sometimes the interviewer will tell you, “I think we have the necessary information, let’s start coding it.”
-
-#### 2\. Coding and code walkthrough
-
-If you don’t have the solution right away, it always helps to point out the obvious naive solution. While you’re explaining this, you should be thinking of how to improve it. When you state the obvious, indicate why it is not the best solution. For this it helps to be familiar with big O notation. It is okay to go over 2–3 solutions first. The interviewer sometimes guides you by saying, “Can we do better?” This can sometimes mean they are looking for a more efficient solution.
-
-#### 3\. Error handling
-
-While you’re coding, point out that you’re leaving a code comment for error handling. Once an interviewer said, “That’s a good point. How would you handle it? Would you throw an exception? Or return a specific value?” This can make for a good short discussion about code quality. Mention a few error cases. Other times, the interviewer might say that you can assume that the parameters you’re getting already passed a validation. However, it is still important to bring this up to show that you are aware of error cases and quality.
-
-#### 4\. Testing
-
-After you have finished coding the solution, re-use the examples from brainstorming to walk through your code and make sure it works. For example you can say, “Let’s go over the example of a tree with one node, two nodes.”
-
-After you finish this, the interviewer sometimes asks you how you would test your code, and what your test cases would be. I recommend that you organize your test cases in different categories.
-
-Some examples are:
-
-1. Performance
-
-2. Error cases
-
-3. Positive expected cases
-
-For performance, think about extreme quantities. For example, if the problem is about lists, mention that you would have a case with a large list and a really small list. If it’s about numbers, you’ll test the maximum integer number and the smallest. I recommend reading about testing software to get more ideas. My favorite book on this is [How We Test Software at Microsoft][3].
-
-For error cases, think about what is expected to fail and list those.
-
-For positive expected cases, it helps to think of what the user requirements are. What are the cases that this solution is meant to solve? Those are the positive test cases.
-
-### “Do you have any questions for me?”
-
-Almost always there will be a few minutes dedicated at the end for you to ask questions. I recommend that you write down the questions you would ask your interviewer before the interview. Don’t say, “I don’t have any questions.” Even if you feel the interview didn’t go well, or you’re not super passionate about the company, there’s always something you can ask. It can be about what the person likes and hates most about his or her job. Or it can be something related to the person’s work, or technologies and practices used at the company. Don’t feel discouraged to ask something even if you feel you didn’t do well.
-
-### Applying for a job
-
-As for searching and applying for a job, I’ve been told that you should only apply to a place that you would be truly passionate to work for. They say pick a company that you love, or a product that you enjoy using, and see if you can work there.
-
-I don’t recommend that you always do this. You can rule out many good options this way, especially if you’re looking for an internship or an entry-level job.
-
-You can focus on other goals instead. What do I want to get more experience in? Is it cloud computing, web development, or artificial intelligence? When you talk to companies at the career fair, find out if their job openings are in this area. You might find a really good position at a company or a non-profit that wasn’t in your list.
-
-#### Switching teams
-
-After a year and a half at my first team, I decided that it was time to explore something different. I found a team I liked and had 4 rounds of interviews. I didn’t do well.
-
-I didn’t practice anything, not even simply writing on a whiteboard. My logic had been, if I have been working at the company for almost 2 years, why would I need to practice? I was wrong about this. I struggled to write a solution on the whiteboard. Things like my writing being too small and running out of space by not starting at the top left all contributed to not passing.
-
-I hadn’t brushed up on data structures and algorithms. If I had, I would’ve been more confident. Even if you’ve been working at a company as a Software Engineer, before you do a round of interviews with another team, I strongly recommend you go through practice problems on a whiteboard.
-
-As for finding a team, if you are looking to switch teams at your company, it helps to talk informally with members of that team. For this, I found that almost everyone is willing to have lunch with you. People are mostly available at noon too, so there is low risk of lack of availability and meeting conflicts. This is an informal way to find out what the team is working on, and see what the personalities of your potential team members are like. You can learn many things from lunch meetings that can help you in the formal interviews.
-
-It is important to know that at the end of the day, you are interviewing for a specific team. Even if you do really well, you might not get an offer because you are not a culture fit. That’s part of why I try to meet different people in the team first, but this is not always possible. Don’t get discouraged by a rejection, keep your options open, and practice.
-
-This content is from the [“Programming interviews”][4] episode on [The Women in Tech Show: Technical Interviews with Prominent Women in Tech][5].
-
---------------------------------------------------------------------------------
-
-作者简介:
-
-Software Engineer II at Microsoft Research, opinions are my own, host of www.thewomenintechshow.com
-
-------------
-
-via: https://medium.freecodecamp.org/what-i-learned-from-programming-interviews-29ba49c9b851
-
-作者:[Edaena Salinas ][a]
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://medium.freecodecamp.org/@edaenas
-[1]:https://anitab.org/event/2017-grace-hopper-celebration-women-computing/
-[2]:https://thewomenintechshow.com/2017/12/18/programming-interviews/
-[3]:https://www.amazon.com/How-We-Test-Software-Microsoft/dp/0735624259
-[4]:https://thewomenintechshow.com/2017/12/18/programming-interviews/
-[5]:https://thewomenintechshow.com/
diff --git a/translated/tech/20180131 What I Learned from Programming Interviews.md b/translated/tech/20180131 What I Learned from Programming Interviews.md
new file mode 100644
index 0000000000..2f9c01b6ff
--- /dev/null
+++ b/translated/tech/20180131 What I Learned from Programming Interviews.md
@@ -0,0 +1,146 @@
+
+我从编程面试中学到的
+============================================================
+
+
+
+聊聊白板编程面试
+
+在2017年,我参加了[Grace Hopper Celebration][1]‘计算机行业中的女性’这一活动。这个活动是这类科技活动中最大的一个。共有17,000名女性IT工作者参加。
+
+这个会议有个大型的配套招聘会,会上有招聘公司来面试会议参加者。有些人甚至现场拿到offer。我在现场晃荡了一下,注意到一些应聘者看上去非常紧张忧虑。我还隐隐听到应聘者之间的谈话,其中一些人谈到在面试中做的并不好。
+
+我走近我听到谈话的那群人并和她们聊了起来并给了一些面试上的小建议。我想我的建议还是比较偏基本的,如“(在面试时)一开始给出个能工作的解决方案也还说的过去”之类的,但是当她们听到我的一些其他的建议时还是颇为吃惊。
+
+为了能更多的帮到像她们一样的白面面试者,我收集了一些过去对我有用的小点子,这些小点子我已经发表在了[prodcast episode][2]上。它们也是这篇文章的主题。
+
+为了实习生职位和全职工作,我做过很多次的面试。当我还在大学主修计算机科学时,学校每个秋季学期都有招聘会,第一轮招聘会在校园里举行。(我在第一和最后一轮都搞砸过。)不过,每次面试后,我都会反思哪些方面我能做的更好,我还会和朋友们做模拟面试,这样我就能从他们那儿得到更多的面试反馈。
+
+不管我们怎么样找工作: 工作中介,网络,或者学校招聘,他们的招聘流程中都会涉及到技术面试:
+
+近年来,我注意到了一些新的不同的面试形式出现了:
+
+* 与招聘方的一位工程师结对编程
+* 网络在线测试及在线编码
+* 白板编程(LCTT译者注: 这种形式应该不新了)
+
+
+我将重点谈谈白板面试,这种形式我经历的最多。我有过很多次面试,有些挺不错的,有些被我搞砸了。
+
+#### 我做错的地方
+
+首先,我想回顾一下我做的不好的地方。知错能改,善莫大焉。
+
+当面试者提出一个要我解决的问题时, 我立即马上立刻开始在白板上写代码,_什么都不问。_
+
+这里我犯了两个错误:
+
+#### 没有澄清对解决问题有关键作用的信息
+
+比如,我们是否只用处理数字或者字符串?我们要支持多种数据类型吗?如果你在开始解题前不去问这些问题的话,你的面试官会有一种不好的印象:这个人在我们公司的话,他不会在开始项目工作之前不问清楚到底要做什么。而这恰恰是在工作场合很重要的一个工作习惯。公司可不像学校,你在开始工作前可不会得到写有所有详细步骤的作业说明。你得靠自己找到这些步骤并自己定义他们。
+
+#### 只会默默思考,不去记录想法或和面试官沟通
+
+在面试中,很多时候我也会傻傻站在那思考,什么都不写。我和一个朋友模拟面试的时候,他告诉我因为他曾经和我一起工作过所以他知道我在思考,但是如果他是个陌生的面试官的话,他会觉得要么我正站在那冥思苦想,毫无头绪。不要急匆匆的直奔解题而去是很重要的。花点时间多想想各种解题的可能性。有时候面试官会乐意和你一起探索解题的步骤。不管怎样,这就是在一家公司开工作会议的的普遍方式,大家各抒己见,一起讨论如何解决问题。
+
+### 想到一个解题方法
+
+在你开始写代码之前,如果你能总结一下要使用到的算法就太棒了。不要上来就写代码并认为你的代码肯定能解决问题。
+
+这是对我管用的步骤:
+
+1. 头脑风暴
+
+2. 写代码
+
+3. 处理错误路径
+
+4. 测试
+
+#### 1\. 头脑风暴
+
+对我来说,我会首先通过一些例子来视觉化我要解决的问题。比如说如果这个问题和数据结构中的树有关,我就会从树底层的空节点开始思考,如何处理一个节点的情况呢?两个节点呢?三个节点呢?这能帮助你从具体例子里抽象出你的解决方案。
+
+在白板上先写下你的算法要做的事情列表。这样做,你往往能在开始写代码前就发现bug和缺陷(不过你可得掌握好时间)。我犯过的一个错误是我花了过多的时间在澄清问题和头脑风暴上,最后几乎没有留下时间给我写代码。你的面试官可能没有机会看你在白板上写下代码,这可太糟了。你可以带块手表,或者房间有钟的话,你也可以抬头看看时间。有些时候面试者会提醒你你已经得到了所有的信息(这时你就不要再问别的了),'我想我们已经把所有需要的信息都澄清了,让我们写代码实现吧'
+
+#### 2\. 开始写代码,一气呵成
+
+如果你还没有得到问题的完美解决方法,从最原始的解法开始总的可以的。当你在向面试官解释最显而易见的解法时,你要想想怎么去完善它,并指明这种做法是最原始,未加优化的。(请熟悉算法中的O()的概念,这对面试非常有用。)在向面试者提交前请仔细检查你的解决方案两三遍。面试者有时会给你些提示, ‘还有更好的方法吗?’,这句话的意思是面试官提示你有更优化的解决方案。
+
+#### 3\. 错误处理
+
+当你在编码时,对你想做错误处理的代码行做个注释。当面试者说,'很好,这里你想到了错误处理。你想怎么处理呢?抛出异常还是返回错误码?',这将给你个机会去引出关于代码质量的一番讨论。当然,这种地方提出几个就够了。有时,面试者为了节省编码的时间,会告诉你可以假设外界输入的参数都已经通过了校验。不管怎样,你都要展现你对错误处理和编码质量的重要性的认识。
+
+#### 4\. 测试
+
+在编码完成后,用你在前面头脑风暴中写的用例来在你脑子里“跑”一下你的代码,确定万无一失。例如你可以说,‘让我用前面写下的树的例子来跑一下我的代码,如果是一个节点是什么结果,如果是两个节点是什么结果。。。’
+
+在你结束之后,面试者有时会问你你将会怎么测试你的代码,你会涉及什么样的测试用例。我建议你用下面不同的分类来组织你的错误用例:
+
+一些分类可以为:
+
+1. 性能
+2. 错误用例
+3. 期望的正常用例
+
+对于性能测试,要考虑极端数量下的情况。例如,如果问题是关于列表的,你可以说你将会使用一个非常大的列表以及的非常小的列表来测试。如果和数字有关,你将会测试系统中的最大整数和最小整数。我建议读一些有关软件测试的书来得到更多的知识。在这个领域我最喜欢的书是[How We Test Software at Microsoft][3]。
+
+对于错误用例,想一下什么是期望的错误情况并一一写下。
+
+对于正向期望用例,想想用户需求是什么?你的解决方案要解决什么问题?这些都可以成为正向期望用例。
+
+### “你还有什么要问我的吗?”
+
+面试最后总是会留几分钟给你问问题。我建议你在面试前写下你想问的问题。千万别说,‘我没什么问题了’,就算你觉得面试砸了或者你对这间公司不怎么感兴趣,你总有些东西可以问问。你甚至可以问面试者他最喜欢自己的工作什么,最讨厌自己的工作什么。或者你可以问问面试官的工作具体是什么,在用什么技术和实践。不要因为觉得自己在面试中做的不好而心灰意冷,不想问什么问题。
+
+### 申请一份工作
+
+
+关于找工作申请工作,有人曾经告诉我,你应该去找你真正有激情工作的地方。去找一家你喜欢的公司,或者你喜欢使用的产品,看看你能不能去那儿工作。
+
+我个人并不推荐你用上述的方法去找工作。你会排除很多很好的公司,特别是你是在找实习工作或者入门级的职位时。
+
+你也可以集中在其他的一些目标上。如:我想从这个工作里得到哪方面的更多经验?这个工作是关于云计算?Web开发?或是人工智能?当在招聘会上与招聘公司沟通是,看看他们的工作单位有没有在这些领域的。你可能会在一家并非在你的想去公司列表上的公司(或非盈利机构)里找到你想找的职位。
+
+#### 换组
+
+在这家公司里的第一个组里呆了一年半以后,我觉得是时候去探索一下不同的东西了。我找到了一个我喜欢的组并进行了4轮面试。结果我搞砸了。
+
+
+我什么都没有准备,甚至都没在白板上练练手。我当时的逻辑是,如果我都已经在一家公司干了快2年了,我还需要练什么?我完全错了,我在接下去的白板面试中跌跌撞撞。我的板书写得太小,而且因为没有从最左上角开始写代码,我的代码大大超出了一个白板的空间,这些都导致了白板面试失败。
+
+
+我在面试前也没有刷过数据结构和算法题。如果我做了的话,我将会在面试中更有信心。就算你已经在一家公司担任了软件工程师,在你去另外一个组面试前,我强烈建议你在一块白板上演练一下如何写代码。
+
+
+对于换项目组这件事,如果你是在公司内部换组的话,事先能同那个组的人非正式聊聊会很有帮助。对于这一点,我发现几乎每个人都很乐于和你一起吃个午饭。人一般都会在中午有空,约不到人或者别人正好有会议冲突的风险会很低。这是一种非正式的途径来了解你想去的组正在干什么,以及这个组成员个性是怎么样的。相信我, 你能从一次午餐中得到很多信息,这可会对你的正式面试帮助不小。
+
+
+非常重要的一点是,你在面试一个特定的组时,就算你在面试中做的很好,因为文化不契合的原因,你也很可能拿不到offer。这也是为什么我一开始就想去见见组里不同的人的原因(有时这也不太可能),我希望你不要被一次拒绝所击倒,请保持开放的心态,选择新的机会,并多多练习。
+
+
+以上内容来自["Programming interviews"][4] 章节,选自 [The Women in Tech Show: Technical Interviews with Prominent Women in Tech][5]
+
+--------------------------------------------------------------------------------
+
+作者简介:
+
+
+微软研究院Software Engineer II, www.thewomenintechshow.com站长,所有观点都只代表本人意见。
+
+------------
+
+via: https://medium.freecodecamp.org/what-i-learned-from-programming-interviews-29ba49c9b851
+
+作者:[Edaena Salinas ][a]
+译者:DavidChenLiang (https://github.com/DavidChenLiang)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://medium.freecodecamp.org/@edaenas
+[1]:https://anitab.org/event/2017-grace-hopper-celebration-women-computing/
+[2]:https://thewomenintechshow.com/2017/12/18/programming-interviews/
+[3]:https://www.amazon.com/How-We-Test-Software-Microsoft/dp/0735624259
+[4]:https://thewomenintechshow.com/2017/12/18/programming-interviews/
+[5]:https://thewomenintechshow.com/
From 9a1756bc501f9fecc5808bbb0be64cc7c40162aa Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 20:10:31 +0800
Subject: [PATCH 12/57] PRF:20180810 Image creation applications for Fedora.md
@geekpi
---
...810 Image creation applications for Fedora.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/translated/tech/20180810 Image creation applications for Fedora.md b/translated/tech/20180810 Image creation applications for Fedora.md
index 967e2eef01..113c367ba9 100644
--- a/translated/tech/20180810 Image creation applications for Fedora.md
+++ b/translated/tech/20180810 Image creation applications for Fedora.md
@@ -3,32 +3,32 @@ Fedora 下的图像创建程序

-感觉有创意吗?Fedora 有很多程序可以帮助你的创造力。从数字绘图、矢量到像素艺术,每个人都可以在这个周末得到创意。本文重点介绍了 Fedora 下创建很棒图像的程序。
+有了创意吗?Fedora 有很多程序可以帮助你的创造力。从数字绘图、矢量到像素艺术,每个人都可以在这个周末发挥创意。本文重点介绍了 Fedora 下创建很棒图像的程序。
### 矢量图形:Inkscape
-[Inkscape][1] 是一个众所周知受人喜爱的开源矢量图形编辑器。SVG 是 Inkscape 的主要文件格式,因此你所有的图形都可以伸缩!Inkscape 已存在多年,所以有一个坚实的社区和[大量的教程和其他资源][2]用于入门。
+[Inkscape][1] 是一个众所周知的、受人喜爱的开源矢量图形编辑器。SVG 是 Inkscape 的主要文件格式,因此你所有的图形都可以任意伸缩!Inkscape 已存在多年,所以有一个坚实的社区和用于入门的[大量教程和其他资源][2]。
作为矢量图形编辑器,Inkscape 更适合于简单的插图(例如简单的漫画风格)。然而,使用矢量模糊,一些艺术家创造了一些[令人惊奇的矢量图][3]。
![][4]
从 Fedora Workstation 中的软件应用安装 Inkscape,或在终端中使用以下命令:
+
```
sudo dnf install inkscape
-
```
### 数字绘图:Krita 和 Mypaint
-[Krita][5] 是一个流行的图像创建程序,用于数字绘图、光栅插图和纹理。此外,Krita 是一个活跃的项目,拥有一个充满活力的社区 - 所以[有很多教程用于入门] [6]。Krita 有多个画笔引擎,带弹出调色板的 UI,用于创建无缝图案的环绕模式、滤镜、图层等等。
+[Krita][5] 是一个流行的图像创建程序,用于数字绘图、光栅插图和纹理。此外,Krita 是一个活跃的项目,拥有一个充满活力的社区 —— 所以[有用于入门的很多教程][6]。Krita 有多个画笔引擎、带有弹出调色板的 UI、用于创建无缝图案的环绕模式、滤镜、图层等等。
![][7]
从 Fedora Workstation 中的软件应用安装 Krita,或在终端中使用以下命令:
+
```
sudo dnf install krita
-
```
[Mypaint][8] 是另一款适用于 Fedora 令人惊奇的数字绘图程序。像 Krita 一样,它有多个画笔和使用图层的能力。
@@ -36,14 +36,14 @@ sudo dnf install krita
![][9]
从 Fedora Workstation 中的软件应用安装 Mypaint,或在终端中使用以下命令:
+
```
sudo dnf install mypaint
-
```
### 像素艺术:Libresprite
-[Libresprite][10] 是一个专为创建像素艺术和像素动画而设计的程序。它支持一系列颜色模式并可导出为多种格式(包括动画 GIF)。此外,Libresprite 还有用于创建像素艺术的绘图工具:多边形工具、轮廓和着色工具。
+[Libresprite][10] 是一个专为创建像素艺术和像素动画而设计的程序。它支持一系列颜色模式,并可导出为多种格式(包括动画 GIF)。此外,Libresprite 还有用于创建像素艺术的绘图工具:多边形工具、轮廓和着色工具。
![][11]
@@ -57,7 +57,7 @@ via: https://fedoramagazine.org/image-creation-applications-fedora/
作者:[Ryan Lerch][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
From d2a3b219c09384c2bbe400b5cc8703345657f0f3 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 20:10:57 +0800
Subject: [PATCH 13/57] PUB:20180810 Image creation applications for Fedora.md
@geekpi https://linux.cn/article-9957-1.html
---
.../20180810 Image creation applications for Fedora.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {translated/tech => published}/20180810 Image creation applications for Fedora.md (100%)
diff --git a/translated/tech/20180810 Image creation applications for Fedora.md b/published/20180810 Image creation applications for Fedora.md
similarity index 100%
rename from translated/tech/20180810 Image creation applications for Fedora.md
rename to published/20180810 Image creation applications for Fedora.md
From 82de18fee89571a6fb3c141989a232065b3e1467 Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 20:38:27 +0800
Subject: [PATCH 14/57] PRF:20180730 Open Source Networking Jobs- A Hotbed of
Innovation and Opportunities.md
@LuuMing
---
...A Hotbed of Innovation and Opportunities.md | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md b/translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
index 41a512d282..42f67043cd 100644
--- a/translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
+++ b/translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
@@ -1,25 +1,27 @@
-开源网络工作: 创新与机遇的温床
+开源网络方面的职位:创新与机遇的温床
======
+> 诸如容器、边缘计算这样的技术焦点领域大红大紫,对在这一领域能够整合、协作、创新的开发者和系统管理员们的需求在日益增进。
+

随着全球经济更加靠近数字化未来,每个垂直行业的公司和组织都在紧抓如何进一步在业务与运营上整合与部署技术。虽然 IT 企业在很大程度上遥遥领先,但是他们的经验与教训已经应用在了各行各业。尽管全国失业率为 4.1%,但整个科技专业人员的整体的失业率在 4 月份为 1.9%,开源工作的未来看起来尤其光明。我在开源网络领域工作,并且目睹着创新和机遇正在改变世界交流的方式。
-曾经是个发展缓慢的行业,现在由网络运营商、供应商、系统集成商和开发者所组成的网络生态系统正在采用开源软件,并且正在向商用硬件上运行的虚拟化和软件定义网络上转移。事实上,接近 70% 的全球移动用户由[低频网络][1]运营商成员所代表。该网络运营商成员致力于协调构成开放网络栈和相邻技术的项目。
+它曾经是个发展缓慢的行业,现在由网络运营商、供应商、系统集成商和开发者所组成的网络生态系统正在采用开源软件,并且正在向商用硬件上运行的虚拟化和软件定义网络上转移。事实上,接近 70% 的全球移动用户由[低频网络][1]运营商成员所占据。该网络运营商成员致力于协调构成开放网络栈和相邻技术的项目。
### 技能需求
这一领域的开发者和系统管理员采用云原生和 DevOps 的方法开发新的使用案例,应对最紧迫的行业挑战。诸如容器、边缘计算等焦点领域大红大紫,并且在这一领域能够整合、协作、创新的开发者和系统管理员们的需求在日益增进。
-开源软件与 Linux 使这一切成为可能,根据最近出版的[ 2018开源软件工作报告][2],高达 80% 的招聘经理寻找会 Linux 技能的应聘者,**而 46% 希望在网络领域招聘人才,可以说“网络技术”在他们的招聘决策中起到了至关重要的作用。**
+开源软件与 Linux 使这一切成为可能,根据最近出版的 [2018开源软件工作报告][2],高达 80% 的招聘经理寻找会 Linux 技能的应聘者,**而 46% 希望在网络领域招聘人才,可以说“网络技术”在他们的招聘决策中起到了至关重要的作用。**
-开发人员相当抢手,72% 的招聘经理都在找他们,其次是 DevOps 开发者(59%),工程师(57%)和系统管理员(49%)。报告同时指出,对容器技能需求的惊人的增长符合了我们在网络领域所见到的,即创建云本地虚拟功能(CNFs)和在[ XCI倡议 ][3]的 OPNFV 中持续集成/持续部署方法的增长。
+开发人员相当抢手,72% 的招聘经理都在找他们,其次是 DevOps 开发者(59%),工程师(57%)和系统管理员(49%)。报告同时指出,对容器技能需求的惊人的增长符合我们在网络领域所见到的,即云本地虚拟功能(CNF)的创建和持续集成/持续部署方式的激增,就如在 OPNFV 中的 [XCI 倡议][3] 一样。
### 开始吧
-对于求职者来说,好消息是有着大量的关于开源软件的内容,包括免费的[Linux 入门课程][4]。好的工作需要有多项证书,因此我鼓励你探索更多领域,去寻求培训的机会。计算机网络方面,在[OPNFV][5]上查看最新的培训课程或者是[ONAP][6]项目,也可以选择这门[开源网络技术简介][7]课程。
+对于求职者来说,好消息是有着大量的关于开源软件的内容,包括免费的 [Linux 入门课程][4]。好的工作需要有多项证书,因此我鼓励你探索更多领域,去寻求培训的机会。计算机网络方面,在 [OPNFV][5] 上查看最新的培训课程或者是 [ONAP][6] 项目,也可以选择这门[开源网络技术简介][7]课程。
-如果你还没有做好这些,下载 [2018开源软件工作报告][2] 以获得更多见解,在广阔的开放源码技术世界中规划你的课程,去寻找另一边等待你的令人兴奋的职业!
+如果你还没有做好这些,下载 [2018 开源软件工作报告][2] 以获得更多见解,在广阔的开放源码技术世界中规划你的课程,去寻找另一边等待你的令人兴奋的职业!
点击这里[下载完整的开源软件工作报告][8]并且[了解更多关于 Linux 的认证][9]。
@@ -29,8 +31,8 @@ via: https://www.linux.com/blog/os-jobs-report/2018/7/open-source-networking-job
作者:[Brandon Wick][a]
选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/LuuMing)
-校对:[校对者ID](https://github.com/校对者ID)
+译者:[LuuMing](https://github.com/LuuMing)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
From ac011a81af83d305bdfe72d0aeb2f150724ad7ec Mon Sep 17 00:00:00 2001
From: "Xingyu.Wang"
Date: Mon, 27 Aug 2018 20:38:55 +0800
Subject: [PATCH 15/57] PUB:20180730 Open Source Networking Jobs- A Hotbed of
Innovation and Opportunities.md
@LuuMing https://linux.cn/article-9958-1.html
---
...e Networking Jobs- A Hotbed of Innovation and Opportunities.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {translated/talk => published}/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md (100%)
diff --git a/translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md b/published/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
similarity index 100%
rename from translated/talk/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
rename to published/20180730 Open Source Networking Jobs- A Hotbed of Innovation and Opportunities.md
From c2041d423901c112a4d9409afef7ccb4a91ec807 Mon Sep 17 00:00:00 2001
From: idea2act
Date: Mon, 27 Aug 2018 21:15:52 +0800
Subject: [PATCH 16/57] Update 20180730 How to use VS Code for your Python
projects.md
translating
---
.../20180730 How to use VS Code for your Python projects.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sources/tech/20180730 How to use VS Code for your Python projects.md b/sources/tech/20180730 How to use VS Code for your Python projects.md
index bd08c9ce69..79cc8216f5 100644
--- a/sources/tech/20180730 How to use VS Code for your Python projects.md
+++ b/sources/tech/20180730 How to use VS Code for your Python projects.md
@@ -1,3 +1,5 @@
+idea2act translating
+
How to use VS Code for your Python projects
======
From 6b608b61dc274d3bbf2f847a60c3a02de03addfa Mon Sep 17 00:00:00 2001
From: MjSeven <33125422+MjSeven@users.noreply.github.com>
Date: Mon, 27 Aug 2018 23:17:23 +0800
Subject: [PATCH 17/57] Update 20180529 How To Add Additional IP (Secondary IP)
In Ubuntu System.md
---
...How To Add Additional IP (Secondary IP) In Ubuntu System.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sources/tech/20180529 How To Add Additional IP (Secondary IP) In Ubuntu System.md b/sources/tech/20180529 How To Add Additional IP (Secondary IP) In Ubuntu System.md
index 71905dd868..e826025021 100644
--- a/sources/tech/20180529 How To Add Additional IP (Secondary IP) In Ubuntu System.md
+++ b/sources/tech/20180529 How To Add Additional IP (Secondary IP) In Ubuntu System.md
@@ -1,3 +1,6 @@
+Translating by MjSeven
+
+
How To Add Additional IP (Secondary IP) In Ubuntu System
======
Linux admin should be aware of this because it’s a routine task. Many of you wondering why we need to add more than one IP address in server? why we need add this to single network card? am i right?
From c0683a845d8e760fae1fe580c6ce1da27871ed3b Mon Sep 17 00:00:00 2001
From: geekpi
Date: Tue, 28 Aug 2018 09:24:16 +0800
Subject: [PATCH 18/57] translated
---
...20180717 Getting started with Etcher.io.md | 97 -------------------
...20180717 Getting started with Etcher.io.md | 95 ++++++++++++++++++
2 files changed, 95 insertions(+), 97 deletions(-)
delete mode 100644 sources/tech/20180717 Getting started with Etcher.io.md
create mode 100644 translated/tech/20180717 Getting started with Etcher.io.md
diff --git a/sources/tech/20180717 Getting started with Etcher.io.md b/sources/tech/20180717 Getting started with Etcher.io.md
deleted file mode 100644
index 45c0b3f830..0000000000
--- a/sources/tech/20180717 Getting started with Etcher.io.md
+++ /dev/null
@@ -1,97 +0,0 @@
-translating---geekpi
-
-Getting started with Etcher.io
-======
-
-
-
-Bootable USB drives are a great way to try out a new Linux distribution to see if you like it before you install. While some Linux distributions, like [Fedora][1], make it easy to create bootable media, most others provide the ISOs or image files and leave the media creation decisions up to the user. There's always the option to use `dd` to create media on the command line—but let's face it, even for the most experienced user, that's still a pain. There are other utilities—like UnetBootIn, Disk Utility on MacOS, and Win32DiskImager on Windows—that create bootable USBs.
-
-### Installing Etcher
-
-About 18 months ago, I came upon [Etcher.io][2] , a great open source project that allows easy and foolproof media creation on Linux, Windows, or MacOS. Etcher.io has become my "go-to" application for creating bootable media for Linux. I can easily download ISO or IMG files and burn them to flash drives and SD cards. It's an open source project licensed under [Apache 2.0][3] , and the [source code][4] is available on GitHub.
-
-Go to the [Etcher.io][5] website and click on the download link for your operating system—32- or 64-bit Linux, 32- or 64-bit Windows, or MacOS.
-
-
-
-Etcher provides great instructions in its GitHub repository for adding Etcher to your collection of Linux utilities.
-
-If you are on Debian or Ubuntu, add the Etcher Debian repository:
-```
-$echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee
-
-/etc/apt/sources.list.d/etcher.list
-
-
-
-Trust Bintray.com GPG key
-
-$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
-
-```
-
-Then update your system and install:
-```
-$ sudo apt-get update
-
-$ sudo apt-get install etcher-electron
-
-```
-
-If you are using Fedora or Red Hat Enterprise Linux, add the Etcher RPM repository:
-```
-$ sudo wget https://bintray.com/resin-io/redhat/rpm -O /etc/yum.repos.d/bintray-
-
-resin-io-redhat.repo
-
-```
-
-Update and install using either:
-```
-$ sudo yum install -y etcher-electron
-
-```
-
-or:
-```
-$ sudo dnf install -y etcher-electron
-
-```
-
-### Creating bootable drives
-
-In addition to creating bootable images for Ubuntu, EndlessOS, and other flavors of Linux, I have used Etcher to [create SD card images][6] for the Raspberry Pi. Here's how to create bootable media.
-
-First, download to your computer the ISO or image you want to use. Then, launch Etcher and insert your USB or SD card into the computer.
-
-
-
-Click on **Select Image**. In this example, I want to create a bootable USB drive to install Ubermix on a new computer. Once I have selected my Ubermix image file and inserted my USB drive into the computer, Etcher.io "sees" the drive, and I can begin the process of installing Ubermix on my USB.
-
-
-
-Once I click on **Flash** , the installation process begins. The time required depends on the image's size. After the image is installed on the drive, the software verifies the installation; at the end, a banner announces my media creation is complete.
-
-If you need [help with Etcher][7], contact the community through its [Discourse][8] forum. Etcher is very easy to use, and it has replaced all my other media creation tools because none of them do the job as easily or as well as Etcher.
-
---------------------------------------------------------------------------------
-
-via: https://opensource.com/article/18/7/getting-started-etcherio
-
-作者:[Don Watkins][a]
-选题:[lujun9972](https://github.com/lujun9972)
-译者:[译者ID](https://github.com/译者ID)
-校对:[校对者ID](https://github.com/校对者ID)
-
-本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
-
-[a]:https://opensource.com/users/don-watkins
-[1]:https://getfedora.org/en_GB/workstation/download/
-[2]:http://etcher.io
-[3]:https://github.com/resin-io/etcher/blob/master/LICENSE
-[4]:https://github.com/resin-io/etcher
-[5]:https://etcher.io/
-[6]:https://www.raspberrypi.org/magpi/pi-sd-etcher/
-[7]:https://github.com/resin-io/etcher/blob/master/SUPPORT.md
-[8]:https://forums.resin.io/c/etcher
diff --git a/translated/tech/20180717 Getting started with Etcher.io.md b/translated/tech/20180717 Getting started with Etcher.io.md
new file mode 100644
index 0000000000..a42f270a00
--- /dev/null
+++ b/translated/tech/20180717 Getting started with Etcher.io.md
@@ -0,0 +1,95 @@
+Etcher.io 入门
+======
+
+
+
+可启动 USB 盘是尝试新的 Linux 发行版的很好的方式,以便在安装之前查看你是否喜欢它。虽然一些 Linux 发行版(如 [Fedora][1])可以轻松创建可启动媒体,但大多数其他发行版提供 ISO 或镜像文件,并将创建媒体决定留给用户。用户总是可以选择使用 `dd` 在命令行上创建媒体 - 但让我们面对它,即使对于最有经验的用户来说,这仍然很痛苦。还有其他程序,如 Mac 上的 UnetBootIn、Disk Utility 和 Windows 上的 Win32DiskImager,它们都可以创建可启动的 USB。
+
+### 安装 Etcher
+
+大约 18 个月前,我遇到了 [Etcher.io][2],这是一个很棒的开源项目,可以在 Linux、Windows 或 MacOS 上轻松,简单地创建媒体。Etcher.io 已成为我为 Linux 创建可启动媒体的“首选”程序。我可以轻松下载 ISO 或 IMG 文件并将其刻录到闪存和 SD 卡。这是一个 [Apache 2.0][3] 许可证下的开源项目,[源代码][4] 可在 GitHub 上获得。
+
+进入 [Etcher.io][5] 网站,然后单击适用于你的操作系统-32 位或 64 位 Linux,32 位或 64 位 Windows 或 MacOS 的下载链接。
+
+
+
+Etcher 在 GitHub 仓库中提供了很好的指导,用于将 Etcher 添加到你的 Linux 实用程序集合中。
+
+如果你使用的是 Debian 或 Ubuntu,请添加 Etcher Debian 仓库:
+```
+$echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee
+
+/etc/apt/sources.list.d/etcher.list
+
+
+
+信任 Bintray.com GPG 密钥
+
+$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
+
+```
+
+然后更新你的系统并安装:
+```
+$ sudo apt-get update
+
+$ sudo apt-get install etcher-electron
+
+```
+
+如果你使用的是 Fedora 或 Red Hat Enterprise Linux,请添加 Etcher RPM 仓库:
+```
+$ sudo wget https://bintray.com/resin-io/redhat/rpm -O /etc/yum.repos.d/bintray-
+
+resin-io-redhat.repo
+
+```
+
+使用以下任一方式更新和安装:
+```
+$ sudo yum install -y etcher-electron
+
+```
+
+或者:
+```
+$ sudo dnf install -y etcher-electron
+
+```
+
+### 创建可启动盘
+
+除了为 Ubuntu、EndlessOS 和其他版本的 Linux 创建可启动镜像之外,我还使用 Etcher [创建 SD 卡镜像][6]用于树莓派。以下是如何创建可启动媒体。
+
+首先,将要使用的 ISO 或镜像下载到计算机。然后,启动 Etcher 并将 USB 或 SD 卡插入计算机。
+
+
+
+单击 **Select Image**。在本例中,我想创建一个可启动的 USB 盘,以便在新计算机上安装 Ubermix。在我选择了我的 Ubermix 镜像文件并将我的 USB 盘插入计算机,Etcher.io “看到”了驱动器,我就可以开始在 USB 上安装 Ubermix 了。
+
+
+
+在我点击 **Flash** 后,安装就开始了。所需时间取决于镜像的大小。在驱动器上安装镜像后,软件会验证安装。最后,一条提示宣布我的媒体创建已经完成。
+
+如果您需要[ Etcher 的帮助][7],请通过其 [Discourse][8] 论坛联系社区。Etcher 非常易于使用,它已经取代了我所有其他的媒体创建工具,因为它们都不像 Etcher 那样轻松地完成工作。
+
+--------------------------------------------------------------------------------
+
+via: https://opensource.com/article/18/7/getting-started-etcherio
+
+作者:[Don Watkins][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[geekpi](https://github.com/geekpi)
+校对:[校对者ID](https://github.com/校对者ID)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:https://opensource.com/users/don-watkins
+[1]:https://getfedora.org/en_GB/workstation/download/
+[2]:http://etcher.io
+[3]:https://github.com/resin-io/etcher/blob/master/LICENSE
+[4]:https://github.com/resin-io/etcher
+[5]:https://etcher.io/
+[6]:https://www.raspberrypi.org/magpi/pi-sd-etcher/
+[7]:https://github.com/resin-io/etcher/blob/master/SUPPORT.md
+[8]:https://forums.resin.io/c/etcher
From e1e5f31dbf8babfa0faec898fd82e8745e17f705 Mon Sep 17 00:00:00 2001
From: geekpi
Date: Tue, 28 Aug 2018 09:50:10 +0800
Subject: [PATCH 19/57] translating
---
...180808 5 applications to manage your to-do list on Fedora.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sources/tech/20180808 5 applications to manage your to-do list on Fedora.md b/sources/tech/20180808 5 applications to manage your to-do list on Fedora.md
index 58b01c56c4..aac9ce192f 100644
--- a/sources/tech/20180808 5 applications to manage your to-do list on Fedora.md
+++ b/sources/tech/20180808 5 applications to manage your to-do list on Fedora.md
@@ -1,3 +1,5 @@
+translating---geekpi
+
5 applications to manage your to-do list on Fedora
======
From 452cad38fe5dbd00d816475039d04596b56b791e Mon Sep 17 00:00:00 2001
From: darksun
Date: Tue, 28 Aug 2018 11:12:53 +0800
Subject: [PATCH 20/57] =?UTF-8?q?=E9=80=89=E9=A2=98:=20Add=20free=20books?=
=?UTF-8?q?=20to=20your=20eReader:=20Formatting=20tips?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
... books to your eReader- Formatting tips.md | 183 ++++++++++++++++++
1 file changed, 183 insertions(+)
create mode 100644 sources/tech/20180824 Add free books to your eReader- Formatting tips.md
diff --git a/sources/tech/20180824 Add free books to your eReader- Formatting tips.md b/sources/tech/20180824 Add free books to your eReader- Formatting tips.md
new file mode 100644
index 0000000000..bbafc0023d
--- /dev/null
+++ b/sources/tech/20180824 Add free books to your eReader- Formatting tips.md
@@ -0,0 +1,183 @@
+Add free books to your eReader: Formatting tips
+======
+
+
+
+In my recent article, [A handy way to add free books to your eReader][1], I explained how to convert the plaintext indexes at [Project Gutenberg][2] to HTML and then EPUBs. But as one commenter noted, there is a problem in older indexes, where individual books are not always separated by an extra newline character.
+
+I saw quite vividly the extent of the problem when I was working on the index for 2007, where you see things like this:
+```
+Audio: The General Epistle of James 22931
+Audio: The Epistle to the Hebrews 22930
+Audio: The Epistle of Philemon 22929
+
+Sacrifice, by Stephen French Whitman 22928
+The Atlantic Monthly, Volume 18, No. 105, July 1866, by Various 22927
+The Continental Monthly, Vol. 6, No 3, September 1864, by Various 22926
+
+The Story of Young Abraham Lincoln, by Wayne Whipple 22925
+Pathfinder, by Alan Douglas 22924
+ [Subtitle: or, The Missing Tenderfoot]
+Pieni helmivyo, by Various 22923
+ [Subtitle: Suomen runoja koulunuorisolle]
+ [Editor: J. Waananen] [Language: Finnish]
+The Posy Ring, by Various 22922
+```
+
+My first reaction was, "Well, how bad can it be to just add newlines where needed?" The answer: "Really bad." After days of working this way and stopping only when the cramps in my hand became too annoying, I decided to revisit the problem. I thought I might need to do multiple Find-Replace passes, maybe keyed on things like `[Language: Finnish] `or maybe just the `]` bracket, but this seemed almost as laborious as the manual method.
+
+Then I noticed a particular feature: For most instances where a newline was needed, a newline character was immediately followed by the capital letter of the next title. For lines where there was still more information about the book, the newline was followed by spaces. So I tried this: In the Find text box in [KWrite][3] (remember, we’re using regex), I put:
+```
+(\n[A-Z])
+
+```
+
+and in Replace, I put:
+```
+\n\1
+
+```
+
+For every match inside the parentheses, I added a preceding newline, retaining whatever the capital letter was. This worked extremely well. The few instances where it failed involved book titles beginning with a number or with quotes. I fixed these manually, but I could have put this:
+```
+(\n[0-9])
+
+```
+
+In Find and run Replace All again. Later, I also tried it with the quotes—this requires a backslash, like this:
+```
+(\n\”) and (\n\’)
+
+```
+
+One side effect is that a number of the listings were separated by three newline characters. Not an issue for XHTML, but easily fixed by putting in Find:
+```
+\n\n\n
+
+```
+
+and in Replace:
+```
+\n\n
+
+```
+
+To review the process with the new features:
+
+ 1. Remove the preamble and other text you don’t want
+ 2. Add extra newlines with the method shown above
+ 3. Convert three consecutive newlines to two (optional)
+ 4. Add the appropriate HTML tags at the beginning and end
+ 5. Create the links based on finding `(\d\d\d\d\d)`, replacing with `\1`
+ 6. Add paragraph tags by finding `\n\n` and replacing with `
\n\n`
+ 7. Add a `
` just before the `
+GutIndexes
+
+
+
+` tag at the end
+ 8. Fix the headers, preceding each with `
` – the older indexes have only a single header
+ 9. Save the file with an `.xhtml` suffix, then import to [Sigil][4] to make your EPUB.
+
+
+
+The next issue that comes up is when the eBook numbers include only four digits. This is a problem since there are many four-digit numbers in the listings, many of which are dates. The answer comes from modifying our strategy in point 5 in the above listing.
+
+In Find, put:
+
+`(\d\d\d\d)\n`
+
+and in Replace, put:
+
+`\1\n`
+
+Notice that the `\n` is outside the parentheses; therefore, we need to add it at the end of the new replacement. Now we see another problem resulting from this new method: Some of the eBook numbers are followed by C (copyrighted). So we need to do another pass in Find:
+
+`(\d\d\d\d)C\n`
+
+and in Replace:
+
+`\1C\n`
+
+I noticed that as of the 2002 index, the lack of extra newlines between listings was no longer a problem, and this continued all the way to the very first index, so steps 2 and 3 became unnecessary.
+
+I’ve now taken the process all the way to the beginning, GUTINDEX.1996, and this process works all the way. At one point three-digit eBook numbers appear, so you must begin to Find:
+
+`(\d\d\d)\n` and then `(\d\d\d)C\n`
+
+Then later:
+
+`(\d\d)\n` and then `(\d\d)C\n`
+
+And finally:
+
+`(\d)\n`
+
+The only glitch was in one book, eBook number 2, where the date "1798" was snagged by the three-digit search. At this point, I now have eBooks of the entire Gutenberg catalog, not counting new books presently being added.
+
+### Troubleshooting and a bonus
+
+I strongly advise you to test your XHTML files by trying to load them in a browser. Your browser should tell you if your XHTML is not properly formatted, in which case the file won’t show in your browser window. Two particular problems I found, having initially ignored my own advice, resulting from improper characters. I copied the link specification tags from my first article. If you do that, you will find that the typewriter quotes are substituted with typographic (curly) quotes. Fixing this was just a matter of doing a Find/Replace.
+
+Second, there are a number of ampersands (&) in the listings, and these need to be replaced by & for the browser to make sense of them. Some recent listings also use the Unicode non-breaking space, and these should be replaced with a regular space. (Hint: Copy one, put it in Find, put a regular space in Replace, then Replace All)
+
+Finally, there may be some accented characters lurking, and the browser feedback should help locate them. Example: Ibáñez needed to be Ibáñez.
+
+And now the bonus: Once your XHTML is well-formed, you can use your browser to comb Project Gutenberg just like on your e-reader. I also found that [Calibre][5] would not make the links properly until the quotes were fixed.
+
+Finally, here is a template for a separate web page you can place on your system to easily link to each year’s listing on your system. Make sure you fix the locations for your personal directory structure and filenames. Also, make sure all these quotes are typewriter quotes, not curly quotes.
+```
+
+
+
+
+