From 192338d1765dbc326cb179bf57c671bc99504cf9 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 11:56:18 +0800 Subject: [PATCH 001/218] PRF @messon007 --- ...223 10 articles to learn Linux your way.md | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/translated/tech/20191223 10 articles to learn Linux your way.md b/translated/tech/20191223 10 articles to learn Linux your way.md index a1cf036871..97a53a37a3 100644 --- a/translated/tech/20191223 10 articles to learn Linux your way.md +++ b/translated/tech/20191223 10 articles to learn Linux your way.md @@ -1,67 +1,70 @@ [#]: collector: "lujun9972" [#]: translator: "messon007" -[#]: reviewer: " " +[#]: reviewer: "wxy" [#]: publisher: " " [#]: url: " " [#]: subject: "10 articles to learn Linux your way" [#]: via: "https://opensource.com/article/19/12/learn-linux" [#]: author: "Seth Kenlon https://opensource.com/users/seth" -2019年关于Linux的10大好文 +10 篇关于 Linux 的好文章 ======= -2019年对于Linux来说是个好年份,一起来回顾一下2019年opensource.com上关于Linux的十大好文。 -![Penguins gathered together in the Artic][1] +> 2019 年对于 Linux 来说是个好年份,让我们一起来回顾一下这十篇关于 Linux 的好文章。 -2019年,"Linux"一词有了更多含义: 内核? 桌面? 或是生态? 在此次回顾年度Linux好文中,我在选择十大好文时有意采取了更开放的视角。下面就是十大好文(无先后次序之分)。 +![](https://img.linux.net.cn/data/attachment/album/202003/25/115447rrjfuufccumf0oz6.jpg) -### Linux权限初学者指南 +2019 年对于 Linux 来说是个好年份,显然这里的 “Linux” 一词有更多含义: 内核? 桌面? 或是生态? 在此次回顾年度 Linux 好文中,我在选择十大好文时有意采取了更开放的视角。下面就是十大好文(无先后次序之分)。 -Bryant Son的[_Linux权限初学者指南_][2]通过图和表的方式向新用户介绍了文件权限的概念。 通常很难通过可视的方式来解释纯粹以文本为基础的概念,本文则对可视学习者非常友好。 Bryant在讲述时也很聚焦。关于文件权限的任何阐述都可能引出几个相关主题(例如所有权和访问控制列表等),但是本文致力于解释一件事并很好地解释它。 +### 《Linux 权限入门指南》 -### 为什么我从Mac切换到了Linux +Bryant Son 的《[Linux 权限入门指南][2]》向新用户介绍了文件权限的概念,通过图形和图表的方式来说明每个要点。通常很难以视觉的方式来解释纯粹基于文本的概念,而本文则对可视方式学习的人非常友好。 Bryant 在讲述时也很专注主题。关于文件权限的任何阐述都可能引出几个相关主题(例如所有权和访问控制列表等),但是本文致力于解释一件事并很好地解释它。 -Matthew Broberg在[_为什么我从Mac切换到了Linux_][3]中清楚而客观的介绍了他从MacOS切换到Linux的经历。 通常切换平台是很困难的,因此记录决定切换的背后考虑非常重要。我认为Matt的文章有几个目的,但对我来说最重要的两个目的是:他邀请Linux社区通过解答他的问题并提供潜在的解决方案来支持他;对于其他正在考虑采用Linux的人来说是一个很好的参考。 +### 《为什么我从 Mac 换到了 Linux》 -### 在Linux上定位WiFi速度慢的问题 +Matthew Broberg 在《[为什么我从 Mac 换到了 Linux][3]》中清楚而客观的介绍了他从 MacOS 切换到 Linux 的经历。通常切换平台是很困难的,因此记录决定切换的背后考虑非常重要。我认为 Matt 的文章带有几个目的,但对我来说最重要的两个目的是:通过解答他的问题并提供潜在的解决方案,他请 Linux 社区的人们来支持他;这对于其他正在考虑采用 Linux 的人来说是一个很好的参考。 -在[_在Linux上定位WiFi速度慢的问题_][4]中,David Clinton对所有平台上都可能遇到的问题进行了分析,并提供了怎么样一步步解决的思路。 这是“偶然的Linux”技巧的一个很好的例子,但它不仅可以帮助经常遇到问题的人,而且可以向非Linux用户展示如何在其他平台上进行问题定位。 +### 《在 Linux 上定位 WiFi 速度慢的问题》 -### GNOME是如何使用Git的 +《[在 Linux 上定位 WiFi 速度慢的问题][4]》这篇文章中,David Clinton 对每个人都可能遇到的问题进行了分析,并提供了怎么样一步步解决的思路。这是“偶然的 Linux”技巧的一个很好的例子,但它不仅可以帮助经常遇到问题的人,而且可以向非 Linux 用户展示如何在其他平台上进行问题定位。 -Molly de Blanc所写的[_GNOME是如何使用Git的_][5]深层次地揭示了开源界的一个典范(GNOME桌面)如何使用开源界的另一个典范(Git)进行开发。 听到一个开源项目无论在哪方面都能满足一个开源解决方案的需求,且成为默认选择,这总是让我感到振奋。无论你信不信,这种情况并不常见,然而对于GNOME来说,这是项目本身的重要且受欢迎的部分。 +### 《一个非技术人员对 GNOME 项目使用 GitLab 的感受》 -### Linux的虚拟文件系统:为什么需要它们以及其运行机制 +Molly de Blanc 所写的《[一个非技术人员对 GNOME 项目使用 GitLab 的感受][5]》深层次地揭示了开源界的一个典范(GNOME 桌面)如何使用开源界的另一个典范(Git)进行开发。听到一个开放源代码项目对于任何需要做的事情默认为开放源代码解决方案,这总是让我感到振奋。无论如何,这种情况并不常见,然而对于 GNOME 来说,这是项目本身的重要且受欢迎的部分。 -Alison Chaiken在[_Linux的虚拟文件系统: 为什么需要它们以及其运行机制_][6]中巧妙地解释了对许多用户来说都很难理解的东西。理解文件系统是什么,做什么是一回事,但从定义上讲,_虚拟的_并不是真正的文件系统。Linux以一种普通用户也能从中受益的方式提供了它们,Alison的文章以一种易于理解的方式对其进行了阐述。另外,Alison在文章的后半部分更深入地介绍了如何使用bcc脚本查看她讲的VFS相关内容。 +### 《详解 Linux 中的虚拟文件系统》 -### 理解文件路径并学会使用它们 +Alison Chaiken 在《[详解 Linux 中的虚拟文件系统][6]》中巧妙地解释了对许多用户来说都很难理解的东西。理解文件系统是什么、虚拟文件系统和真实的文件系统是一回事,但从定义上讲,*虚拟的*其实并不是真正的文件系统。Linux 以一种普通用户也能从中受益的方式提供了它们,Alison 的文章以一种易于理解的方式对其进行了阐述。另外,Alison 在文章的后半部分更深入地介绍了如何使用 `bcc` 脚本查看她刚刚讲的虚拟文件系统的相关内容。 -我认为完成[_理解文件路径并学会使用它们_][7]很重要,因为这是大多数用户(在任何平台上)似乎都没有学过的概念。 这是一个奇怪的现象,因为现在比以往任何时候,人们都越来越多地看到_文件路徑_:几乎所有的互联网网址都包含一个文件路径,该路径告诉您您在域中的确切位置。互联网是目前最熟悉的应用程序,并且可以说是使用最频繁的超级计算机。我常常在想为什么计算机教育不是从互联网开始的,完全可以用它来解释我们每天使用的设备。(我想如果这些设备运行Linux会有所帮助,但是我们正在努力。) +### 《理解文件路径并学会使用它们》 -### Linux的进程间通信 +我认为《[理解文件路径并学会使用它们][7]》很重要,因为这是大多数用户(在任何平台上)似乎都没有学过的概念。这是一个奇怪的现象,因为现在比以往任何时候,人们都越来越多地看到*文件路徑*:几乎所有的互联网网址都包含一个文件路径,该路径告诉你你在域中的确切位置。我常常在想为什么计算机教育不是从互联网开始的,互联网是目前最熟悉的应用程序,并且可以说是使用最频繁的超级计算机,完全可以用它来解释我们每天使用的设备。(我想如果这些设备运行 Linux 会有所帮助,但是我们正在努力。) -Marty Kalin的[_Linux的进程间通信:共享存储_][8]从Linux的开发者视角解释了IPC以及如何在代码中使用它。 我之所以喜欢这篇文章是因为它实际上是一个三部分的系列,但这是同类文章中最好的阐述。很少有文档能够解释Linux怎样处理IPC,更不用说IPC是什么,为什么它很重要,或者在编程时该如何使用它。通常这是您在大学读书时关注的话题。 现在,您可以在这里阅读所有内容。 +### 《Linux 下的进程间通信:共享存储》 -### 通过strace来理解Linux的系统调用 +Marty Kalin 的《[Linux 下的进程间通信:共享存储][8]》从 Linux 的开发者视角解释了 IPC 以及如何在代码中使用它。虽然我只是列入了这篇文章,不过它实际上是一个三篇文章的系列,而它是同类文章中阐述的最好的。很少有文档能够解释 Linux 怎样处理 IPC,更不用说 IPC 是什么,为什么它很重要,或者在编程时该如何使用它。通常这是你在大学读书时关注的话题。现在,你可以在这里阅读所有内容。 -Gaurav Kamathe的[_通过strace来理解Linux的系统调用_][9]具有很强的技术性,我希望我所见过的有关**strace**的每次会议演讲都是如此。 这是对一个复杂但非常有用的命令的清晰演示。令我惊讶的是,我读了本文才发现自己一直使用的命令不是系统调用命令,而是**ltrace**(可以查看命令调用了哪些函数)。本文包含了丰富的信息,是开发人员和测试人员的快捷参考手册。 +### 《在 Linux 上用 strace 来理解系统调用》 -### Linux桌面是如何发展起来的 +Gaurav Kamathe 的《[在 Linux 上用 strace 来理解系统调用][9]》具有很强的技术性,我希望我所见过的有关 `strace` 的每次会议演讲都是如此。这是对一个复杂但非常有用的命令的清晰演示。令我惊讶的是,我读了本文才发现自己一直使用的命令不是这个命令,而是 `ltrace`(可以用来查看命令调用了哪些函数)。本文包含了丰富的信息,是开发人员和测试人员的快捷参考手册。 -Jim Hall的[_Linux桌面是如何发展起来的_][10]是对Linux桌面历史的一次视觉之旅。从[TWM][11]开始,经历了[FVWM][12],[GNOME][13],[KDE][14]等。 如果您是Linux的新手,那么这将是一个出自那个年代人的有趣的历史课(有截图可以证明这一点)。 如果您已经使用Linux多年,那么这肯定会唤醒您的记忆。 最后,可以肯定的是:仍然可以找到20年前屏幕快照的人都是神一样的数据档案管理员。 +### 《Linux 桌面发展旅程》 -### 用Linux创建您自己的视频流服务器 +Jim Hall 的《[Linux 桌面发展旅程][10]》是对 Linux 桌面历史的一次视觉之旅。从 [TWM][11] 开始,经历了 [FVWM][12]、[GNOME][13]、[KDE][14] 等薪火相传。如果你是 Linux 的新手,那么这将是一个出自那个年代的人的有趣的历史课(有截图可以证明这一点)。如果你已经使用 Linux 多年,那么这肯定会唤醒你的记忆。最后,可以肯定的是:仍然可以找到 20 年前屏幕快照的人都是神一样的数据档案管理员。 -AaronJ. Prisk的[_用Linux创建您自己的视频流服务器_][15]消除了大多数人对我们习以为常的服务的误解。 由于YouTube和Twitch之类服务的存在,许多人认为这是向世界广播视频的唯一方式。当然,人们过去常常以为Windows和Mac是计算机的唯一入口,值得庆幸的是,最终证明这是严重的误解。 在本文中,Aaron建立了一个视频流服务器,而且讲述了[OBS][16]的使用,以便您可以创建视频。这是一个有趣的周末项目还是新职业的开始? 你自己决定。 +### 《用 Linux 创建你自己的视频流服务器》 -### 塑造Linux历史的10个时刻 +Aaron J. Prisk 的 《[用 Linux 创建你自己的视频流服务器][15]》消除了大多数人对我们视为理所当然的服务的误解。由于 YouTube 和 Twitch 之类服务的存在,许多人认为这是向世界广播视频的唯一方式。当然,人们过去常常以为 Windows 和 Mac 是计算机的唯一入口,值得庆幸的是,最终证明这是严重的误解。在本文中,Aaron 建立了一个视频流服务器,甚至还顺便讨论了一下 [OBS][16],以便你可以创建视频。这是一个有趣的周末项目还是新职业的开始?你自己决定。 -Alan Formy-Duval撰写的[_塑造Linux历史的10个时刻_][17]试图完成一项艰巨的任务,即从Linux的历史中选出10件有代表性的事情。当然,这是很难的,因为有如此多重要的时刻,所以我喜欢看Alan如何通过自己的经历来选择它。 例如,什么时候开始意识到Linux必然可以发展下去? 当Alan意识到他维护的所有系统都在运行Linux。用这种方式来解释历史是很美的,因为每个人的重要时刻都会有所不同。 没有关于Linux的权威性列表,也没有关于Linux的文章,也没有关于开源的列表。 您创建您自己的列表,使您自己成为它的一部分。 +### 《塑造 Linux 历史的 10 个时刻》 + +Alan Formy-Duval 撰写的《[塑造 Linux 历史的 10 个时刻][17]》试图完成一项艰巨的任务,即从 Linux 的历史中选出 10 件有代表性的事情。当然,这是很难的,因为有如此多重要的时刻,所以我想看看 Alan 是如何通过自己的经历来选择它。例如,什么时候开始意识到 Linux 必然可以发展下去?—— 当 Alan 意识到他维护的所有系统都在运行 Linux 时。用这种方式来解释历史是很美的,因为每个人的重要时刻都会有所不同。 关于 Linux 没有权威性列表,关于 Linux 的文章也没有,关于开源也没有。你可以创建你自己的列表,也可以使你自己成为列表的一部分。 + +(LCTT 译注:这里推荐了 11 篇,我数了好几遍,没眼花……) ### 你想从何学起? -还想知道Linux的什么内容?请在评论区告诉我们或者向Opensource.com来文讲述您的Linux经验。 +你还想知道 Linux 的什么内容?请在评论区告诉我们或来文讲述你的 Linux 经验。 -------------------------------------------------------------------------------- @@ -69,22 +72,22 @@ via: https://opensource.com/article/19/12/learn-linux 作者:[Seth Kenlon][a] 选题:[lujun9972][b] -译者:[messon007](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[messon007](https://github.com/messon007) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://opensource.com/users/seth [b]: https://github.com/lujun9972 [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png?itok=p7cWyQv9 "Penguins gathered together in the Artic" -[2]: https://opensource.com/article/19/6/understanding-linux-permissions -[3]: https://opensource.com/article/19/10/why-switch-mac-linux +[2]: https://linux.cn/article-11056-1.html +[3]: https://linux.cn/article-11586-1.html [4]: http://opensource.com/article/19/4/troubleshooting-wifi-linux -[5]: https://opensource.com/article/19/10/how-gnome-uses-git -[6]: https://opensource.com/article/19/3/virtual-filesystems-linux +[5]: https://linux.cn/article-11806-1.html +[6]: https://linux.cn/article-10884-1.html [7]: https://opensource.com/article/19/8/understanding-file-paths-linux -[8]: https://opensource.com/article/19/4/interprocess-communication-linux-storage -[9]: https://opensource.com/article/19/2/linux-backup-solutions +[8]: https://linux.cn/article-10826-1.html +[9]: https://linux.cn/article-11545-1.html [10]: https://opensource.com/article/19/8/how-linux-desktop-grown [11]: https://github.com/freedesktop/twm [12]: http://www.fvwm.org/ From 8e1a49f7896c80e38de2c1120f3625e6977f1aa3 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 11:57:02 +0800 Subject: [PATCH 002/218] PUB @messon007 https://linux.cn/article-12035-1.html --- .../20191223 10 articles to learn Linux your way.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20191223 10 articles to learn Linux your way.md (99%) diff --git a/translated/tech/20191223 10 articles to learn Linux your way.md b/published/20191223 10 articles to learn Linux your way.md similarity index 99% rename from translated/tech/20191223 10 articles to learn Linux your way.md rename to published/20191223 10 articles to learn Linux your way.md index 97a53a37a3..a38a98dff2 100644 --- a/translated/tech/20191223 10 articles to learn Linux your way.md +++ b/published/20191223 10 articles to learn Linux your way.md @@ -1,8 +1,8 @@ [#]: collector: "lujun9972" [#]: translator: "messon007" [#]: reviewer: "wxy" -[#]: publisher: " " -[#]: url: " " +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-12035-1.html" [#]: subject: "10 articles to learn Linux your way" [#]: via: "https://opensource.com/article/19/12/learn-linux" [#]: author: "Seth Kenlon https://opensource.com/users/seth" From 880b7834392e73673a14643909137fb44cd8c66d Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 15:55:09 +0800 Subject: [PATCH 003/218] APL --- sources/talk/20190822 How the Linux desktop has grown.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20190822 How the Linux desktop has grown.md b/sources/talk/20190822 How the Linux desktop has grown.md index e46b310502..3928a643e4 100644 --- a/sources/talk/20190822 How the Linux desktop has grown.md +++ b/sources/talk/20190822 How the Linux desktop has grown.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From abed20680f6558053da38be640dd18c27ee566c6 Mon Sep 17 00:00:00 2001 From: caiichenr <34886864+caiichenr@users.noreply.github.com> Date: Wed, 25 Mar 2020 16:21:59 +0800 Subject: [PATCH 004/218] translated --- ...r Python code should be flat and sparse.md | 87 ------------------- ...r Python code should be flat and sparse.md | 86 ++++++++++++++++++ 2 files changed, 86 insertions(+), 87 deletions(-) delete mode 100644 sources/tech/20191224 Why your Python code should be flat and sparse.md create mode 100644 translated/tech/20191224 Why your Python code should be flat and sparse.md diff --git a/sources/tech/20191224 Why your Python code should be flat and sparse.md b/sources/tech/20191224 Why your Python code should be flat and sparse.md deleted file mode 100644 index 050ba583c4..0000000000 --- a/sources/tech/20191224 Why your Python code should be flat and sparse.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (caiichenr) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why your Python code should be flat and sparse) -[#]: via: (https://opensource.com/article/19/12/zen-python-flat-sparse) -[#]: author: (Moshe Zadka https://opensource.com/users/moshez) - -Why your Python code should be flat and sparse -====== -This is part of a special series about the Zen of Python focusing on the -fifth and sixth principles: flatness and sparseness. -![Digital creative of a browser on the internet][1] - -The [Zen of Python][2] is called that for a reason. It was never supposed to provide easy-to-follow guidelines for programming. The rules are specified tersely and are designed to engage the reader in deep thought. - -In order to properly appreciate the Zen of Python, you must read it and then meditate upon the meanings. If the Zen was designed to be a set of clear rules, it would be a fault that it has rules that contradict each other. However, as a tool to help you meditate on the best solution, contradictions are powerful. - -### Flat is better than nested. - -Nowhere is the pressure to be "flat" more obvious than in Python's strong insistence on indentation. Other languages will often introduce an implementation that "cheats" on the nested structure by reducing indentation requirements. To appreciate this point, let's take a look at JavaScript. - -JavaScript is natively async, which means that programmers write code in JavaScript using a lot of callbacks. - - -``` -a(function(resultsFromA) { -  b(resultsFromA, function(resultsfromB) { -    c(resultsFromC, function(resultsFromC) { -      console.log(resultsFromC) -   } -  } -} -``` - -Ignoring the code, observe the pattern and the way indentation leads to a right-most point. This distinctive "arrow" shape is tough on the eye to quickly walk through the code, so it's seen as undesirable and even nicknamed "callback hell." However, in JavaScript, it is possible to "cheat" and not have indentation reflect nesting. - - -``` -a(function(resultsFromA) { -b(resultsFromA, -  function(resultsfromB) { -c(resultsFromC, -  function(resultsFromC) { -    console.log(resultsFromC) -}}} -``` - -Python affords no such options to cheat: every nesting level in the program must be reflected in the indentation level. So deep nesting in Python _looks_ deeply nested. That makes "callback hell" was a worse problem in Python than in JavaScript: nesting callbacks mean indenting with no options to "cheat" with braces. - -This challenge, in combination with the Zen principle, has led to an elegant solution by a library I worked on. In the [Twisted][3] framework, we came up with the _deferred_ abstraction, which would later inspire the popular JavaScript _promise_ abstraction. In this way, Python's unwavering commitment to clear code forces Python developers to discover new, powerful abstractions. - - -``` -future_value = future_result() -future_value.addCallback(a) -future_value.addCallback(b) -future_value.addCallback(c) -``` - -(This might look familiar to modern JavaScript programmers: Promises were heavily influenced by Twisted's deferreds.) - -### Sparse is better than dense. - -The easiest way to make something less dense is to introduce nesting. This habit is why the principle of sparseness follows the previous one: after we have reduced nesting as much as possible, we are often left with _dense_ code or data structures. Density, in this sense, is jamming too much information into a small amount of code, making it difficult to decipher when something goes wrong. - -Reducing that denseness requires creative thinking, and there are no simple solutions. The Zen of Python does not offer simple solutions. All it offers are ways to find what can be improved in the code, without always giving guidance for "how." - -Take a walk. Take a shower. Smell the flowers. Sit in a lotus position and think hard, until finally, inspiration strikes. When you are finally enlightened, it is time to write the code. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/zen-python-flat-sparse - -作者:[Moshe Zadka][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/moshez -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) -[2]: https://www.python.org/dev/peps/pep-0020/ -[3]: https://twistedmatrix.com/trac/ diff --git a/translated/tech/20191224 Why your Python code should be flat and sparse.md b/translated/tech/20191224 Why your Python code should be flat and sparse.md new file mode 100644 index 0000000000..d1d59b5fc6 --- /dev/null +++ b/translated/tech/20191224 Why your Python code should be flat and sparse.md @@ -0,0 +1,86 @@ +[#]: collector: (lujun9972) +[#]: translator: (caiichenr) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Why your Python code should be flat and sparse) +[#]: via: (https://opensource.com/article/19/12/zen-python-flat-sparse) +[#]: author: (Moshe Zadka https://opensource.com/users/moshez) + +为何你的 Python 代码应是扁平与稀疏的 +====== +本文是 Python 之禅特别系列当中的一篇,此篇着眼于其中第五与第六条原则:扁平与稀疏。 +![Digital creative of a browser on the internet][1] + +[Python之禅][2] 得名如此,正是由于它那简明扼要的规则被设计出的意图在于让读者进行深入地思考,而绝不单是为编程提供一份易于遵守的指南。 + +读后不去三思其意,断然难以体会 Python 之禅的妙处。倘若 Python 之禅仅仅罗列出一组清晰的法则,那法则之间的矛盾只能算作一种错误。然而用作引导读者去为最优方案沉思的工具,矛盾却是绝佳的。 + +### 扁平胜过嵌套 Flat is better than nested. + +迫于对缩进的强硬要求,Python 对“扁平化”的需求显然远超它者。其余编程语言为了缓解对缩进的需求,通常会在嵌套结构里加入一种“欺诈”的手段。用以说明此点,不妨一同看看JavaScript。 + +JavaScript 是原生异步的,这意味着程序员用 JavaScript 写的代码会用到大量的回调函数。 + + +``` +a(function(resultsFromA) { +  b(resultsFromA, function(resultsfromB) { +    c(resultsFromC, function(resultsFromC) { +      console.log(resultsFromC) +   } +  } +} +``` + +忽略这段代码的具体内容,只去观察这段代码的形状与缩进带来极右点的方式。这种独特的“箭头”图形在我们扫看代码时格外扎眼,这种写法也因此被视作不可取,甚至得到了“回调地狱”的绰号。不过,在 JavaScript 中,这种反映嵌套关系的缩进可以通过“欺诈”来回避。 + + +``` +a(function(resultsFromA) { +b(resultsFromA, +  function(resultsfromB) { +c(resultsFromC, +  function(resultsFromC) { +    console.log(resultsFromC) +}}} +``` + +Python 并没有提供这种欺诈手段:每一级嵌套在代码中都如实的对应着一层缩进。因此,Python 深层的嵌套关系在_视觉_上也一定是深层嵌套的。这使得“回调地狱”的问题对于 Python 而言要比在 JavaScript 中严重得多:嵌套的回调函数必定带来缩进,而绝无使用花括号来“欺诈”的可能。 + +这项挑战与 Python 之禅的指导原则相结合后,在我参与的库中催生出了一个优雅的解决方案。我们在 [Twisted][3] 框架里提出了 _deferred_ 抽象,日后 JavaScript 中流行的 _promise_ 抽象亦是受其启发而生。正是由于 Python 对整洁代码的坚守,方能推动 Python 开发者去发掘新的,强力的抽象。 + + +``` +future_value = future_result() +future_value.addCallback(a) +future_value.addCallback(b) +future_value.addCallback(c) +``` + +(现代 JavaScript 程序员也许会觉得这段代码十分眼熟:Promises 着实受到了 Twisted 里 deferreds 抽象的深远影响。) + +### 稀疏胜过密集 Sparse is better than dense. + +最易降低代码密集程度的方法是引入嵌套。这种习惯也正是有关稀疏的原则要随着前一条提出的原因:在竭尽所能地降低代码密集性之后,我们往往会遗留下_密集_的代码或数据结构。此处的密集,是指塞进过量信息的小段代码,它们会导致错误发生后的解析变得困难。 + +这种密集性唯有通过创造性的思考方可改善,此外别无捷径。Python 之禅并不为我们提供简单的解决方案,它只会指明改善代码的方向,而非提供“如何”去做的向导。 + +起身走走,泡个热水澡,抑或是闻闻花香。盘坐冥思,直至灵感袭来。当你终于得到启发,便是动身写代码之时。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/zen-python-flat-sparse + +作者:[Moshe Zadka][a] +选题:[lujun9972][b] +译者:[caiichenr](https://github.com/caiichenr) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/moshez +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) +[2]: https://www.python.org/dev/peps/pep-0020/ +[3]: https://twistedmatrix.com/trac/ From d97ab8f1da490be1cd107bad6cb59e88327312b0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 17:21:14 +0800 Subject: [PATCH 005/218] TSL PART 1 --- ...0190822 How the Linux desktop has grown.md | 53 +++++++++---------- 1 file changed, 26 insertions(+), 27 deletions(-) rename {sources => translated}/talk/20190822 How the Linux desktop has grown.md (63%) diff --git a/sources/talk/20190822 How the Linux desktop has grown.md b/translated/talk/20190822 How the Linux desktop has grown.md similarity index 63% rename from sources/talk/20190822 How the Linux desktop has grown.md rename to translated/talk/20190822 How the Linux desktop has grown.md index 3928a643e4..5f16a52c7b 100644 --- a/sources/talk/20190822 How the Linux desktop has grown.md +++ b/translated/talk/20190822 How the Linux desktop has grown.md @@ -5,70 +5,69 @@ [#]: url: ( ) [#]: subject: (How the Linux desktop has grown) [#]: via: (https://opensource.com/article/19/8/how-linux-desktop-grown) -[#]: author: (Jim Hall https://opensource.com/users/jim-hallhttps://opensource.com/users/jason-bakerhttps://opensource.com/users/jlacroixhttps://opensource.com/users/doni08521059https://opensource.com/users/etc-eterahttps://opensource.com/users/marcobravohttps://opensource.com/users/alanfdoss) +[#]: author: (Jim Hall https://opensource.com/users/jim-hall) -How the Linux desktop has grown +Linux 桌面成长之旅 ====== -Since the early 1990s, the Linux desktop has matured from a simple -window manager to a full desktop. Join us on a journey through the -history of the Linux desktop. +> 自 1990 年代初以来,Linux 桌面已从简单的窗口管理器发展为完整的桌面。与我们一起来探索 Linux 桌面的历史。 + ![Person typing on a 1980's computer][1] -I first installed Linux in 1993. At that time, you really didn't have many options for installing the operating system. In those early days, many people simply copied a running image from someone else. Then someone had the neat idea to create a "distribution" of Linux that let you customize what software you wanted to install. That was the Softlanding Linux System (SLS) and my first introduction to Linux. +我首次安装 Linux 是 1993 年。那时,安装这种操作系统没有太多的选择。早期,许多人只是从别人那里复制一个正在运行的镜像。然后有人想到了一个精巧的主意,创建一个 Linux 的“发行版”,使你可以自定义要安装的软件。那就是 Softlanding Linux 系统(SLS),也是我首次见到了 Linux。 -My '386 PC didn't have much memory, but it was enough. SLS 1.03 required 2MB of memory to run, or 4MB if you wanted to compile programs. If you wanted to run the X Window System, you needed a whopping 8MB of memory. And my PC had just enough memory to run X. +我的 386 PC 虽然内存不多,但也足够了。SLS 1.03 需要 2MB 的内存才能运行,如果要编译程序,则需要 4MB 的内存。如果要运行 X Window 系统,则需要多达 8MB 的内存!而我的电脑正好有足够的内存来运行 X Window 系统。 -As I'd grown up with the command line, a graphical user interface wasn't essential to me. But it sure was convenient. I could run applications in different windows and easily switch between tasks. +因为我是在命令行中成长的,图形用户界面对我来说并不是必不可少的。但它确实很方便。我可以在不同的窗口中运行应用程序,并轻松地在任务之间切换。 -From my first experiment with Linux, I was hooked. I've stuck with Linux on my desktop ever since. Like many people, I ran Linux in a dual-boot configuration for a while so I could jump back to MS-DOS and Windows to run certain programs. Until 1998, when I finally took the plunge and went all-in with Linux. +从我首次体验 Linux 开始,我就迷上了它。从那以后,我一直在台式机上使用 Linux。和许多人一样,我在双引导配置下运行 Linux 已有一段时间,因此我可以跳回到 MS-DOS 和 Windows 来运行某些程序。直到 1998 年,我终于冒了个险,全面投身于 Linux 之中。 -Over the last 26 years, I have watched the Linux desktop mature. I've also tried an interesting combination of desktop environments over that time, which I'll share by taking a journey through the history of the Linux desktop. +在过去的 26 年中,我目睹了 Linux 桌面的成熟。在那段时间里,我还尝试了一种有趣的桌面环境组合,我会在下面通过 Linux 桌面的历史之旅分享它。 -### X and window managers +### X 和窗口管理器 -The first "desktops" on Linux weren't yet desktops. Instead, they were _window managers_ running on the X Window System. X provided the basic building blocks for a graphical user interface, such as creating windows on the screen and providing keyboard and mouse input. By itself, X didn't do much. To make the X graphical environment useful, you needed a way to manage all the windows in your session. That's where the _window manager_ came in. Running an X program like xterm or xclock opens that program in a window. The window manager keeps track of windows and does basic housekeeping, such as letting you move windows around and minimize them. The rest is up to you. You could launch programs when X started by listing them in the **~/.xinitrc** file, but usually, you'd run new programs from an xterm. +Linux 上的第一个“桌面”其实不是桌面。相反,它们是运行在 X Window 系统上的“窗口管理器window manager”(WM)。X 提供了图形用户界面的基本组件,如在屏幕上创建窗口以及提供键盘和鼠标输入。就其本身而言,X 并没有做太多事情。为了使 X 图形环境能够用起来,你需要一种方法来管理会话中的所有窗口。这就出现了窗口管理器window manager。运行 xterm 或 xclock 之类的 X 程序会在一个窗口中打开该程序。窗口管理器会跟踪窗口并进行基本的内部管理,例如让你可以来回移动窗口并将其最小化。其余的事情取决于你自己。你可以通过将程序名列在 `~/ .xinitrc` 文件中以在 X 开始时启动这些程序,但是通常,你会从 xterm 中运行新程序。 -The most common window manager in 1993 was TWM, which dates back to 1988. TWM was quite simple and provided only basic window management. +在 1993 年,最常见的窗口管理器是 TWM,它的历史可以追溯到 1988 年。TWM 极其简单,仅仅提供了基本的窗口管理功能。 ![TWM on SLS 1.05][2] -TWM on SLS 1.05 showing xterm, xclock, and the Emacs editor +*SLS 1.05 上的 TWM,显示了 xterm、xclock 和 Emacs 编辑器* -Yet another early window manager was the OpenLook Virtual Window Manager (OLVWM). OpenLook was a graphical user interface developed by Sun Microsystems in the 1980s and later ported to other Unix platforms. As a _virtual_ window manager, OLVWM supported multiple workspaces. +另一个早期的窗口管理器是 OpenLook 虚拟窗口管理器(OLVWM)。OpenLook 是 Sun 微系统公司在 1980 年代开发的图形用户界面,后来又移植到其他 Unix 平台。作为一个*虚拟*窗口管理器,OLVWM 支持多个工作区。 ![OLVWM on SLS 1.05][3] -OLVWM on SLS 1.05 showing xterm and the Virtual Workspaces selector +*SLS 1.05 上的 OLVWM,显示了 xterm 和虚拟工作区选择器* -When Linux began to grow in popularity, it didn't take long for others to create new window managers with smoother performance and improved interfaces. The first of these new window managers was FVWM, a virtual window manager. FVWM sported a more modern look than TWM or OLVWM. But we didn't yet have a desktop. +当 Linux 开始流行时,没多久就有人创建出具有更流畅性能和改进界面的新的窗口管理器。这些新的窗口管理器中首先出现的是虚拟窗口管理器 FVWM。FVWM 比 TWM 或 OLVWM 更具现代感。但是,我们仍然没有桌面。 ![FVWM on SLS 1.05][4] -FVWM on SLS 1.05 showing xterm and a file manager +*SLS 1.05 上的 FVWM,显示了 xterm 和文件管理器* -To modern eyes, TWM and FVWM may look pretty plain. But it's important to remember what other graphical environments looked like at the time. The then-current version of Windows looked rather simple. Windows versions 1 through 3 used a plain launcher called the Program Manager. +以现代的眼光来看,TWM 和 FVWM 可能看起来很普通。但重要的是要想想当时其它图形环境的外观。 Windows 当时的版本看起来也相当简单。Windows 版本 1 到版本 3 使用了一个称为“程序管理器”的普通启动器。 ![Windows 3.11][5] -Windows 3.11 showing the Program Manager and the Notepad editor +*Windows 3.11,显示程序管理器和记事本编辑器* -In August 1995, Microsoft released Windows 95 and changed the modern PC desktop landscape. Certainly, I was impressed. I thought Windows 3.x was ungainly and ugly, but Windows 95 was smooth and pretty. More importantly, Windows 95 was what we now consider a _desktop_. The new desktop metaphor was a huge step forward. You could put icons on the desktop—and in fact, Windows 95 presented two default desktop icons, for My Computer (to open a file manager) and the Recycle Bin (where you put files to be deleted later). +1995 年 8 月,微软发布了 Windows 95,改变了现代 PC 桌面的格局。当然,我对此印象深刻。我觉得 Windows 3.x 笨拙而丑陋,但 Windows 95 却流畅而漂亮。更重要的是,我们现在将 Windows 95 视为“ **桌面**”。新的“桌面”隐喻是向前迈出的一大步。你可以在桌面上放置图标——实际上,Windows 95 提供了两个默认的桌面图标,分别是“我的电脑”(用于打开文件管理器)和“回收站”(用于放置以后要删除的文件)。 -But more importantly, the Windows 95 desktop meant _integration_. The Program Manager was gone, replaced by a Taskbar at the bottom of the screen that let you launch new programs using a simpler Start menu. The Taskbar was multifunctional and also showed your running programs via a series of buttons and a dock showing the time, speaker volume, and other simple controls. You could right-click on any object on the new desktop, and Windows 95 would present you with a context-sensitive menu with actions you could perform. +但是,更重要的是,Windows 95 桌面的意味着*集成*。程序管理器不见了,取而代之的是屏幕底部的任务栏,可让你使用更简单的“开始”菜单启动新程序。任务栏是多功能的,还通过一系列的按钮显示了你正在运行的程序,而托盘显示了时间、扬声器音量和其它简单的控件。你可以在这个新桌面上右键单击任何对象, Windows 95 会为你提供一个上下文相关的菜单,其中包含你可以执行的操作。 ![Windows 95][6] -Windows 95 showing the Notepad editor +*Windows 95,显示了记事本编辑器* -The Windows 95 interface was slick and much easier to use than previous versions of Windows—and even other Linux window managers. Not to be outdone, Linux developers created a new version of FVWM that mimicked the Windows 95 interface. Called FVWM95, the new window manager still wasn't a desktop, but it looked very nice. The new taskbar let you start new X programs using the Start menu. The taskbar also showed your running programs using buttons similar to Windows 95's. +与以前版本的 Windows 甚至其它 Linux 窗口管理器相比,Windows 95 的界面更加流畅并且易于使用。值得一提的是,Linux 开发人员创建了一个模仿 Windows 95 界面的 FVWM 的新版本。名为 FVWM95 的新窗口管理器仍然不是桌面,但看起来非常漂亮。新的任务栏使你可以使用“开始”菜单启动新的 X 程序。任务栏还使用类似于 Windows 95 的按钮显示了正在运行的程序。 ![FVWM95 on Red Hat Linux 5.2][7] -FVWM95 on Red Hat Linux 5.2 showing xterm and a quick-access program launcher with icons for xterm, the file manager, and other programs +*在 Red Hat Linux 5.2 上的 FVWM95,显示了 xterm 和一个带有 xterm 图标、文件管理器和其他程序的快速访问程序启动器* -While FVWM95 and other window managers were improving, the core problem remained: Linux didn't really have a desktop. It had a collection of window managers, and that was about it. Linux applications that used a graphical user interface (GUI, pretty much meaning they were X applications) all looked different and worked differently. You couldn't copy and paste from one application to another, except the simple text-only copy/paste provided by the X Window System. What Linux really needed was a complete redo in its GUI to create the first desktop. +在 FVWM95 和其他窗口管理器还在改进的同时,核心问题仍然存在:Linux 并没有真正的桌面。它具有一堆窗口管理器,仅此而已。使用图形用户界面的 Linux 应用程序(基本上意味着它们是 X 应用程序)看起来形态各异且工作方式也不同。除了 X Window 系统提供的简单的纯文本复制/粘贴功能外,你无法从一个应用程序复制和粘贴到另一个应用程序里。Linux 真正需要的是在其图形用户界面中完全重新打造以创建它的第一个桌面。 -### The first Linux desktop +### Linux 桌面之初啼 In 1996, Matthias Ettrich was troubled by the inconsistency of Linux applications under X. He wanted to make the graphical environment easy to use. And more importantly, he wanted to make everything _integrated_—like an actual desktop. From 99f20bc30a7de08f4f1870310717808a3324dad7 Mon Sep 17 00:00:00 2001 From: Hank Chow <280630620@qq.com> Date: Wed, 25 Mar 2020 19:48:19 +0800 Subject: [PATCH 006/218] hankchow translated --- ...oronavirus challenges remote networking.md | 117 ------------------ ...oronavirus challenges remote networking.md | 115 +++++++++++++++++ 2 files changed, 115 insertions(+), 117 deletions(-) delete mode 100644 sources/talk/20200317 Coronavirus challenges remote networking.md create mode 100644 translated/talk/20200317 Coronavirus challenges remote networking.md diff --git a/sources/talk/20200317 Coronavirus challenges remote networking.md b/sources/talk/20200317 Coronavirus challenges remote networking.md deleted file mode 100644 index b95ebaa5c5..0000000000 --- a/sources/talk/20200317 Coronavirus challenges remote networking.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Coronavirus challenges remote networking) -[#]: via: (https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Coronavirus challenges remote networking -====== -COVID-19 sends IBM, Google, Amazon, AT&T, Cisco, Apple and others scrambling to securely support an enormous rise in teleworkers, and puts stress on remote-access networks. -Thinkstock - -As the coronavirus spreads, many companies are requiring employees to work from home, putting unanticipated stress on remote networking technologies and causing bandwidth and security concerns. - -Businesses have facilitated brisk growth of teleworkers over the past decades to an estimated 4 million-plus. The meteoric rise in new remote users expected to come online as a result of the novel coronavirus calls for stepped-up capacity. - -Research by VPN vendor [Atlas][1] shows that VPN usage in the U.S. grew by 53% between March 9 and 15, and it could grow faster. VPN usage in Italy, where the virus outbreak is about two weeks ahead of the U.S., increased by 112% during the last week. "We estimate that VPN usage in the U.S. could increase over 150% by the end of the month," said Rachel Welch, chief operating officer of Atlas VPN, in a statement. - -Businesses are trying to get a handle on how much capacity they'll need by running one-day tests. For example, JPMorgan Chase, Morningstar and analytics startup Arity have tested or plan to test their systems by having employees work from home for a day, according to the [Chicago Tribune][2]. - -On the government side, agencies such as [National Oceanic and Atmospheric Administration][3] and NASA have or will run remote networking stress tests to understand their remote networking capacity and what the impact will be if they add thousands of new teleworkers. About [2 million people][4] work for the government in the U.S. - -To help stave off congestion in cellular data networks, the [Federal Communications Commission][5] has granted T-Mobile temporary access to spectrum in the 600MHz band that's owned by other licensees. T-Mobile said it requested the spectrum "to make it easier for Americans to participate in telehealth, distance learning, and telework, and simply remain connected while practicing recommended 'social distancing'." - -Last-mile internet access may become congested in areas that rely on wireless connectivity, some industry players warn. - -[][6] - -"Bottlenecks are likely going to exist in hard-to-reach areas, such as rural locations, where internet access relies on microwave or wireless infrastructure," said Alex Cruz Farmer, product manager for network intelligence company ThousandEyes, which makes software that analyzes the performance of local and wide area networks. "The challenge here is that the available bandwidth is usually much less via these solutions, as well as more latent." - -"We have seen a very small number of platform-related issues or outages due to increased loads, although those have since been resolved," added ThousandEyes' Farmer. - -For its part, AT&T said it has noticed shifts in usage on its wireless network, but capacity has not been taxed. - -"In cities where the coronavirus has had the biggest impact, we are seeing fewer spikes in wireless usage around particular cell towers or particular times of day, because more people are working from home rather than commuting to work, and fewer people are gathering in large crowds at specific locations," [AT&T said in a statement][7]. "We continuously monitor bandwidth usage with tools that analyze and correlate network statistics, which reveal network trends and provide us with performance and capacity reports that help us manage our network." - -Verizon says it hasn't seen a measurable increase in data usage since the coronavirus outbreak, despite a jump in the number of customers working from home. "Verizon’s networks are designed and built to meet future demand and are ready should demand increase or usage patterns change significantly. While this is an unprecedented situation, we know things are changing, and we are ready to adjust network resources as we better understand any shifts in demand," the company said in a statement. - -Verizon has been monitoring network usage in the most affected areas and pledged to work with and prioritize network resources to meet the needs of hospitals, first responders and government agencies. It also announced plans to increase capital spending from between $17 billion and $18 billion to between $17.5 billion to $18.5 billion in 2020 in an effort to "accelerate Verizon's transition to 5G and help support the economy during this period of disruption." - -### Enterprise VPN security concerns - -For enterprises, supporting the myriad network and security technologies that sit between data centers and remote users is no small task, particularly since remote-access VPNs, for example, typically rely on residential internet-access services over which businesses have little control. But IT pros should try to verify that these connections meet enterprise standards, according Tom Nolle, president of CIMI Corp. (Read more of Nolle's thoughts on working at home [here][8].) - -"The home broadband elements, like the ISP and DNS and Wi-Fi, should really be part of a business certification of suitable networking for home work," Nolle said. "I find that DNS services like Google's are less prone to being overloaded than ISPs' services, which suggests users should be required to adopt one of them. OpenDNS is also good." - -The security of home Wi-Fi networks is also an issue, Nolle said. IT pros should require workers to submit screenshots of their Wi-Fi configurations in order to validate the encryption being used. "Home workers often bypass a lot of the security built into enterprise locations," he said.  - -Education of new home workers is also important, said Andrew Wertkin, chief strategy officer with DNS software company BlueCat. "There will be remote workers who have not substantially worked from home before, and may or may not understand the implications to security," Wertkin said. "This is especially problematic if the users are accessing the network via personal home devices versus corporate devices." - -An unexpected increase in remote corporate users using a [VPN][9] can also introduce cost challenges. - -"VPN appliances are expensive, and moving to virtualized environments in the cloud often can turn out to be expensive when you take into account compute cost and per-seat cost," Farmer said. A significant increase in per-seat VPN licenses have likely not been budgeted for. - -On the capacity side, systems such as DHCP, which doles out IP addresses, could come under stress with increased remote-access use. "It doesn't matter if there are enough licenses for VPN if the devices connecting cannot obtain network addresses," Wertkin said. "Companies must test for and understand choke points and start implementing strategies to mitigate these risks." - -Along those lines, enterprises "may have to validate the number of SSL sockets their data centers can expose for use, or they could end up running out," Nolle said. - -Paul Collinge, a senior program manager in the Microsoft Office 365 product team, raised similar concerns. Network elements such as VPN concentrators, central network egress equipment such as proxies, DLP, central internet bandwidth, backhaul MPLS circuits, and NAT capability are put under enormous strain when all employees are using them, Collinge wrote in a [blog][10] about optimizing Office 365 traffic for remote staff. The result is poor performance and productivity coupled with a poor user experience for those working from home. - -ThousandEyes' Farmer said enterprises might have to increase the number of VPN concentrators on their networks. "This way, remote-user connectivity is distributed across multiple VPN endpoints and not concentrated," he said. If that's not an option, businesses may have to open firewall ports to allow access to essential applications, which would enable them to scale up, but could also weaken security temporarily. - -### Can VPN split tunneling help? - -Industry players are divided on the use of split tunnerling to minimize coronavirus capacity concerns. - -VPNs can be set up to allow split tunneling, where only traffic intended for the corporate network tunnels through the VPN, BlueCat's Wertkin said. The rest of the traffic goes directly to the internet at large, meaning it isn't subject to the security controls imposed by the tunnel and by tools within the corporate network, which is a security concern. This could lead to remote users' computers being compromised by internet-borne attacks, which could in turn put corporate data and networks at risk. - -Despite this, Microsoftlast week recommended split tunneling as a way for IT admins to address its Office 365 service becoming congested due to an influx of remote users. In [the advisory][10], Microsoft offers a list of URLs and IP addresses for its points of access and describes how IT can use that information to route traffic directly to Office 365. - -The VPN client should be configured so that traffic to identified URLs/IPs/ports is routed in this way, according to Collinge. "This allows us to deliver extremely high performance levels to users wherever they are in the world.” - -ThousandEyes' Farmer said increased use of remote access VPNs might call for a review of network security in general. "[For] enterprises that are still using a legacy network security architecture, it may be time to consider cloud-based security options, which could improve performance for remote workers and diminish the overall use of the enterprise’s WAN circuits." - -Other related developments: - - * The [FCC][11] called on broadband providers to relax their data cap policies in appropriate circumstances, on telephone carriers to waive long-distance and overage fees in appropriate circumstances, on those that serve schools and libraries to work with them on remote learning opportunities, and on all network operators to prioritize the connectivity needs of hospitals and healthcare providers. AT&T and others have responded. - * [U.S. Senator Mark R. Warner (D-VA)][12] and 17 other senators sent a letter to the CEOs of eight major ISPs calling on the companies to take steps to accommodate the unprecedented reliance on telepresence services, including telework, online education, telehealth, and remote support services. In the letter, sent to the CEOs of AT&T, CenturyLink, Charter Communications, Comcast, Cox Communications, Sprint, T-Mobile, and Verizon, the senators call on companies to suspend restrictions and fees that could limit telepresence options. Related to the nation's broadband gaps, they also call on the companies to provide free or at-cost broadband options for students affected by the virus who otherwise lack broadband access for online learning during the outbreak. - * Vendors including [Cisco][13], Microsoft, [Google][14], [LogMeIn][15], [Spectrum][16] and others are offering free tools to help customers manage security and communications during the outbreak. - - - -Join the Network World communities on [Facebook][17] and [LinkedIn][18] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://atlasvpn.com/blog/vpn-usage-in-italy-rockets-by-112-and-53-in-the-us-amidst-coronavirus-outbreak/ -[2]: https://www.chicagotribune.com/coronavirus/ct-coronavirus-work-from-home-20200312-bscm4ifjvne7dlugjn34sksrz4-story.html -[3]: https://federalnewsnetwork.com/workforce/2020/03/agencies-ramp-up-coronavirus-preparations-as-noaa-plans-large-scale-telework-test/ -[4]: https://fas.org/sgp/crs/misc/R43590.pdf -[5]: https://www.fcc.gov/coronavirus -[6]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[7]: https://about.att.com/pages/COVID-19.html -[8]: https://blog.cimicorp.com/?p=4055 -[9]: https://www.networkworld.com/article/3268744/understanding-virtual-private-networks-and-why-vpns-are-important-to-sd-wan.html -[10]: https://techcommunity.microsoft.com/t5/office-365-blog/how-to-quickly-optimize-office-365-traffic-for-remote-staff-amp/ba-p/1214571 -[11]: https://www.fcc.gov/document/commissioner-starks-statement-fccs-response-covid-19 -[12]: https://www.warner.senate.gov/public/_cache/files/2/3/239084db-83bd-4641-bf59-371cb829937a/A99E41ACD1BA92FB37BDE54E14A97BFA.letter-to-isps-on-covid-19-final-v2.-signed.pdf -[13]: https://blogs.cisco.com/collaboration/cisco-announces-work-from-home-webex-contact-center-quick-deployment -[14]: https://cloud.google.com/blog/products/g-suite/helping-businesses-and-schools-stay-connected-in-response-to-coronavirus -[15]: https://www.gotomeeting.com/work-remote?clickid=RFlSQF3DBxyOTSr0MKVSfWfHUknShrScK0%3AhTY0&irgwc=1&cid=g2m_noam_ir_aff_cm_pl_ct -[16]: https://www.multichannel.com/news/charter-opening-wi-fi-hotspots-in-face-of-covid-19 -[17]: https://www.facebook.com/NetworkWorld/ -[18]: https://www.linkedin.com/company/network-world diff --git a/translated/talk/20200317 Coronavirus challenges remote networking.md b/translated/talk/20200317 Coronavirus challenges remote networking.md new file mode 100644 index 0000000000..6dda7ec426 --- /dev/null +++ b/translated/talk/20200317 Coronavirus challenges remote networking.md @@ -0,0 +1,115 @@ +[#]: collector: (lujun9972) +[#]: translator: (HankChow) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Coronavirus challenges remote networking) +[#]: via: (https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html) +[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) + +新型冠状病毒对远程网络的影响 +====== +由于 COVID-19 的肆虐,IBM、谷歌、亚马逊、AT&T、思科、苹果等公司都陆续为远程办公提供了技术上的支持,这为远程网络带来了不少的压力。 + +在新型冠状病毒广泛传播的大环境下,很多公司都要求员工留在家中远程办公,远程网络技术因此承受了更大的压力,一些带宽和安全方面的问题爷接踵而至。 + +在过去的几十年当中,由于各种企业的蓬勃发展,远程办公的人数增加了 400 多万。而当前疫情流行的背景下,远程办公的需求激增,有望达到一个新的高峰。 + +VPN 提供商 [Atlas][1] 的一份研究表明,在今年 3 月 9 日到 3 月 15 日之间,美国的 VPN 使用量增加了 53%,并且还会继续提高。而在意大利这个疫情爆发比美国早两周的国家,过去一周内的 VPN 使用量甚至增加了 112%。Atlas VPN 的首席执行官 Rachel Welch 在一份声明中称,美国的 VPN 使用量在 3 月底预估会达到 150% 的增幅。 + +部分企业正在尝试通过一日测试one-day test来评估远程办公的可行性。据《[芝加哥论坛报][2]》的报道,摩根大通、晨星以及一家数据分析方面的初创公司 Arity 已经通过让员工在家办公一天来测试整个办公系统的稳定性。 + +在政府方面,[美国国家海洋与大气管理局][3]和 NASA 都已经进行或计划进行网络方面的压力测试,评估是否有足够的网络容量足以让上千名工作人员远程办公,以及远程办公可能造成的影响。而放眼整个美国,供职于美国政府部门的员工数量在 [200 万][4]左右。 + +为了避免蜂窝网络发生拥堵,美国[联邦通信委员会][5]临时授权允许 T-mobile 访问已分配给其它运营商的 600MHz 频段,T-mobile 表示“将使用这个频段让美国人更方便地享受远程医疗、参与远程工作和学习,同时在保持‘物理距离’的情况下保持联系”。 + +但也有一些业内人士指出,在一些对蜂窝网络有较强依赖的的场景下,“最后一英里”的网络访问会变得非常拥堵。 + +[][6] + +网络情报公司 ThousandEyes 的主要产品是局域网和广域网性能分析的软件,该公司的产品经理 Alex Cruz Farmer 表示,网络瓶颈在于一些较为偏远的农村地区,因为那些地区的网络基础设施较为薄弱,主要通过微波或蜂窝网络来访问互联网。最大的挑战在于现有的解决方案所能提供的带宽远远不足。 + +Alex Cruz Farmer 还补充道,尽管持续时间不长,但现在的确已经出现一些由于运营商问题或网络负载增加导致的故障现象。 + +AT&T 表示目前已经留意到蜂窝网络使用量的变化,但网络容量并没有作出提高。 + +[AT&T 在一份声明中称][7],在病毒传播最严重的城市中,由于越来越多的人留在了家中远程办公,减少了通勤和人群聚集,很多特定位置和特定时段的蜂窝网络使用量峰值都明显降低了。他们还使用了一些工具对网络带宽进行了统计和监控,通过这些工具,他们可以更直观地了解网络使用情况的趋势,同时获取网络性能和网络容量方面的报告,进而管理整个通信网络。 + +Verison 表示,自从新型冠状病毒疫情爆发以来,尽管在家办公的用户数量大增,但使用的数据量并没有明显的上升。他们在一份声明中称:“Verison 的网络是为满足未来的需求设计建造的,面对各种需求量的增加或使用方式的改变,我们都有充分的准备。虽然这是一次前所未有的社会事件,整个局面也在不断发生改变,但随着不断了解实际需求的变化情况,我们随时可以对网络资源作出调整”。 + +Verison 一直在关注受影响最严重的地区的网络使用情况,并承诺将会与医院、医护人员、政府机构合作,制定网络资源使用的优先级,以满足他们的需求。Verison 还宣布计划在 2020 年将支出在 170 亿至 180 亿美元的基础上再提高 5 亿美元,以实现“加快 Verison 向 5G 过渡并在困难时期帮助支撑经济”的目标。 + +### 企业 VPN 安全问题 + +对于企业来说,数据中心与远程用户之间的网络和安全问题解决起来绝非易事,尤其是使用 VPN 进行远程访问时,来自用户所在住宅网络的访问几乎无法由企业控制。CIMI 公司总裁 Tom Nolle 认为,IT 部门有必要验证这些连接是否符合企业的标准(关于 Tom Nolle 更多关于在家办公的看法,可以查阅[这里][8])。 + +Tom Nolle 认为像 ISP、DNS 和 Wi-Fi 这些常见的家用网络要素都应该作为适合远程办公网络业务认证的一部分。他发现 Google 的 DNS 服务比 ISP 提供的服务更能承受压力,OpenDNS 也是一个很好的选择,这说明用户可以考虑使用其中一种。 + +Tom Nolle 还说,家庭 Wi-Fi 网络的安全性也是一个问题,IT 部门应该要求远程办公的员工提交 Wi-Fi 配置的屏幕截图,以保证使用了正确的加密方式。之所以有这样的想法,是因为他觉得很多远程办公的员工都会绕过企业预设的一些安全措施。 + +DNS 软件公司 BlueCat 的首席战略官 Andrew Wertkin 表示,对一些刚刚开始在家远程办公的员工来说,适当提供相关指导是很有必要的。大部分员工从来没有尝试过在家远程办公,他们或许并不了解安全的重要性。如果员工访问公司网络的时候使用的是个人设备而不是公司设备,就更有可能出现问题。 + +而使用 [VPN][9] 远程办公的人数激增也会为企业带来成本上的挑战。 + +“VPN 设备并不便宜,如果考虑到计算资源的成本和每个人的均摊成本,迁移到云上的虚拟环境会带来一笔不小的开支,这还不包括每个 VPN 许可证价格的上升”,Alex Cruz Farmer 坦言。 + +在容量方面,随着远程访问量的增加,用于分配 IP 地址的 DHCP 服务也会承受巨大的压力。Andrew Wertkin 指出,如果进行远程连接的设备无法获取到网络地址,那将会成为比 VPN 许可证数量更严重的问题。企业内部必须对这些风险进行测试,了解其中存在瓶颈的部分,并制定规避这些风险的策略。 + +按照这个思路,企业甚至需要验证数据中心可以用于公开的 SSL 套接字数量,否则也会面临数量不足的风险。 + +微软 Office 365 产品团队的高级程序经理 Paul Collinge 也表达了类似的担忧。他在一篇关于优化 Office 365 员工远程办公流量的[博客][10]中写道,当大量员工在同时接入企业网络时,会对诸如 VPN 集中器、中央网络出口设备(例如代理、DLP)、中央互联网带宽、回程 MPLS 和 NAT 等网络要素产生巨大的压力。最终导致的结果是低下的性能、低下的生产力,以及员工们低下的使用体验。 + +Alex Cruz Farmer 提出,企业很可能需要增加网络上 VPN 集中器的数量,这样就可以让远程用户分布在多个不同的 VPN 端点上,避免产生拥堵。退而求其次,只能在防火墙上把某些端口放开,允许特定应用程序的公开访问,尽管这样有助于提高工作效率,但却降低了整体的安全性。 + +### VPN 隧道分割tunneling split有效吗? + +业内人士对隧道分割技术有不同的看法。 + +BlueCat 的 Andrew Wertkin 认为,VPN 可以使用隧道分割技术,使得仅有需要访问企业内部网络的流量才通过 VPN 隧道访问,其余流量则直接进入互联网。这意味着会有部分流量不受隧道和企业网络内部的安全控制,用户的计算机会暴露在互联网当中,进而导致企业的数据和网络面临安全风险。 + +尽管如此,微软在上周还是建议 IT 管理员使用隧道分割技术以缓解 Office 365 由于大量远程用户涌入导致的拥堵问题。微软在[建议][10]中提供了相关接入点的 URL 和 IP 地址列表,并引导 IT 人员如何按照这个方式将流量路由到 Office 365。 + +按照 Paul Collinge 的说法,VPN 客户端需要经过配置,才能将流量路由到已标识的 URL/IP/ 端口上,进而为全球的用户提供高性能的服务。 + +Alex Cruz Farmer 认为,在 VPN 使用率上升之后,企业很有必要对网络安全进行一个全面的审查。对于仍然在使用传统网络安全架构的企业来说,应该开始考虑基于云端的网络安全方案了,这不仅可以提升远程办公的性能,还能减少企业对于广域网的使用量。 + +其它相关情况: + + * [FCC][11] 呼吁,宽带提供商应该适当放宽数据传输的限制,电话运营商应该适当免除用户的长途电话费,远程教育提供商应该合作为社会提供远程学习的机会,网络运营商应该优先考虑医院或医疗机构的网络连接需求。对此,AT&T 已经作出了相关的回应和行动。 + * [美国参议员 Mark R. Warner (D-VA)][12] 和其他 17 名参议员致信了 AT&T、CenturyLink、Charter Communications、Comcast、Cox Communications、Sprint、T-Mobile、Verizon 这八家主要 ISP 的首席执行官,呼吁这些公司应该采取措施应对远程办公、在线教育、远程医疗、远程支持服务等方面需求激增带来的压力。这些参议员在信中呼吁,各公司应该降低可能对远程服务产生影响的限制和费用,同时还应该为受到疫情影响的学生提供免费或收费的宽带服务,否则学生在疫情期间无法接入网络进行在线学习。 + * [思科][13]、微软、[谷歌][14]、[LogMeIn][15]、[Spectrum][16] 等供应商都提供了一些免费工具,帮助用户在疫情爆发期间正常进行安全通信。 + +欢迎加入 [Facebook][17] 和 [LinkedIn][18] 上的 Network World 社区参与话题评论。 + + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html + +作者:[Michael Cooney][a] +选题:[lujun9972][b] +译者:[HankChow](https://github.com/HankChow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Michael-Cooney/ +[b]: https://github.com/lujun9972 +[1]: https://atlasvpn.com/blog/vpn-usage-in-italy-rockets-by-112-and-53-in-the-us-amidst-coronavirus-outbreak/ +[2]: https://www.chicagotribune.com/coronavirus/ct-coronavirus-work-from-home-20200312-bscm4ifjvne7dlugjn34sksrz4-story.html +[3]: https://federalnewsnetwork.com/workforce/2020/03/agencies-ramp-up-coronavirus-preparations-as-noaa-plans-large-scale-telework-test/ +[4]: https://fas.org/sgp/crs/misc/R43590.pdf +[5]: https://www.fcc.gov/coronavirus +[6]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[7]: https://about.att.com/pages/COVID-19.html +[8]: https://blog.cimicorp.com/?p=4055 +[9]: https://www.networkworld.com/article/3268744/understanding-virtual-private-networks-and-why-vpns-are-important-to-sd-wan.html +[10]: https://techcommunity.microsoft.com/t5/office-365-blog/how-to-quickly-optimize-office-365-traffic-for-remote-staff-amp/ba-p/1214571 +[11]: https://www.fcc.gov/document/commissioner-starks-statement-fccs-response-covid-19 +[12]: https://www.warner.senate.gov/public/_cache/files/2/3/239084db-83bd-4641-bf59-371cb829937a/A99E41ACD1BA92FB37BDE54E14A97BFA.letter-to-isps-on-covid-19-final-v2.-signed.pdf +[13]: https://blogs.cisco.com/collaboration/cisco-announces-work-from-home-webex-contact-center-quick-deployment +[14]: https://cloud.google.com/blog/products/g-suite/helping-businesses-and-schools-stay-connected-in-response-to-coronavirus +[15]: https://www.gotomeeting.com/work-remote?clickid=RFlSQF3DBxyOTSr0MKVSfWfHUknShrScK0%3AhTY0&irgwc=1&cid=g2m_noam_ir_aff_cm_pl_ct +[16]: https://www.multichannel.com/news/charter-opening-wi-fi-hotspots-in-face-of-covid-19 +[17]: https://www.facebook.com/NetworkWorld/ +[18]: https://www.linkedin.com/company/network-world From 679955b244a662adb29af0a93569fd946e673cc7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 21:57:39 +0800 Subject: [PATCH 007/218] PRF @geekpi --- ...your Google Drive to Fedora Workstation.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md b/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md index 222a6c80fa..e8e10cc4e6 100644 --- a/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md +++ b/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md @@ -1,22 +1,22 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Connect your Google Drive to Fedora Workstation) [#]: via: (https://fedoramagazine.org/connect-your-google-drive-to-fedora-workstation/) [#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) -将你的 Google Drive 连接到 Fedora Workstation +将你的 Google Drive 连接到 Fedora 工作站 ====== ![][1] -有大量的云服务可用于存储重要文档。Google Drive 无疑是最受欢迎的之一。它提供了一组相应的应用程序,例如文档,表格和幻灯片来创建内容。但是,你也可以在 Google Drive 中存储任意内容。本文向你展示如何将其连接到 [Fedora Workstation][2]。 +有大量的云服务可用于存储重要文档。Google Drive 无疑是最受欢迎的之一。它提供了一组相应的应用程序,例如文档,表格和幻灯片来创建内容。但是,你也可以在 Google Drive 中存储任意内容。本文向你展示如何将其连接到 [Fedora 工作站][2]。 ### 添加帐户 -Fedora Workstation 可在安装后首次启动或者之后的任何时候添加一个帐户。要在首次启动期间添加帐户,请按照提示进行操作。其中包括选择添加一个帐户: +Fedora 工作站可在安装后首次启动或者之后的任何时候添加一个帐户。要在首次启动期间添加帐户,请按照提示进行操作。其中包括选择添加一个帐户: ![][3] @@ -24,29 +24,25 @@ Fedora Workstation 可在安装后首次启动或者之后的任何时候添加 ![][4] -请注意,此信息仅传输给 Google,而不传输给 GNOME 项目。下一个页面要求你授予访问权限,这是必需的,以便系统桌面可以与 Google 进行交互。向下滚动查看访问请求,然后选择 _Allow_ 继续。 +请注意,此信息仅传输给 Google,而不传输给 GNOME 项目。下一个页面要求你授予访问权限,这是必需的,以便系统桌面可以与 Google 进行交互。向下滚动查看访问请求,然后选择“允许”继续。 你会在移动设备和 Gmail 中收到有关新设备(系统)访问 Google 帐户的通知。这是正常现象。 ![][5] -如果你在初次启动时没有执行此操作,或者需要重新添加帐户,请打开 _Settings_,然后选择 _Online Accounts_ 来添加帐户。可以通过顶部栏右侧的下拉菜单(“齿轮”图标)或打开“概览”并输入 _settings_ 来使用它。接着和上面一样。 +如果你在初次启动时没有执行此操作,或者需要重新添加帐户,请打开“设置”,然后选择“在线账户”来添加帐户。可以通过顶部栏右侧的下拉菜单(“齿轮”图标)或打开“概览”并输入“settings”来使用它。接着和上面一样。 ### 在 Google Drive 中使用“文件”应用 -打开_文件_ 应用(以前称为 _nautilus_)。“文件”应用可以通过左侧栏访问。在列表中找到你的 Google 帐户。 +打开“文件”应用(以前称为 “nautilus”)。“文件”应用可以通过左侧栏访问。在列表中找到你的 Google 帐户。 -当你选择帐户后,“文件”应用会显示你的 Google Drive 的内容。你可以使用 Fedora Workstation 的本地应用打开某些文件,例如声音文件或 [LibreOffice][6] 兼容文件(包括 Microsoft Office 文档)。其他文件(例如 Google 文档、表格和幻灯片等 Google 应用文件)将使用浏览器和相应的应用打开。 +当你选择帐户后,“文件”应用会显示你的 Google Drive 的内容。你可以使用 Fedora 工作站的本地应用打开某些文件,例如声音文件或 [LibreOffice][6] 兼容文件(包括 Microsoft Office 文档)。其他文件(例如 Google 文档、表格和幻灯片等 Google 应用文件)将使用浏览器和相应的应用打开。 请记住,如果文件很大,将需要一些时间才能通过网络接收文件,你才可以打开它。 -你还可以复制粘贴 Google Drive 中的文件到连接到 Fedora Workstation 的其他存储,或者反之。你还可以使用内置功能来重命名文件、创建文件夹并组织它们。对于共享和其他高级选项,请和平常一样在浏览器中使用 Google Drive。 +你还可以复制粘贴 Google Drive 中的文件到连接到 Fedora 工作站的其他存储,或者反之。你还可以使用内置功能来重命名文件、创建文件夹并组织它们。对于共享和其他高级选项,请和平常一样在浏览器中使用 Google Drive。 -请注意,“文件”应用程序不会实时刷新内容。如果你从其他连接 Google 的设备(例如手机或平板电脑)添加或删除文件,那么可能需要按 **Ctrl+R** 刷新“文件”应用。 - -* * * - -_照片由 [Beatriz Pérez Moya][7] 发表在 [Unsplash][8] 中。_ +请注意,“文件”应用程序不会实时刷新内容。如果你从其他连接 Google 的设备(例如手机或平板电脑)添加或删除文件,那么可能需要按 `Ctrl+R` 刷新“文件”应用。 -------------------------------------------------------------------------------- @@ -55,7 +51,7 @@ via: https://fedoramagazine.org/connect-your-google-drive-to-fedora-workstation/ 作者:[Paul W. Frields][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 1ed9c5d2100ad767b2abf0311f13c93e0a622323 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 21:58:02 +0800 Subject: [PATCH 008/218] PUB @geekpi https://linux.cn/article-12037-1.html --- ...0200316 Connect your Google Drive to Fedora Workstation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200316 Connect your Google Drive to Fedora Workstation.md (98%) diff --git a/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md b/published/20200316 Connect your Google Drive to Fedora Workstation.md similarity index 98% rename from translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md rename to published/20200316 Connect your Google Drive to Fedora Workstation.md index e8e10cc4e6..134703d0dc 100644 --- a/translated/tech/20200316 Connect your Google Drive to Fedora Workstation.md +++ b/published/20200316 Connect your Google Drive to Fedora Workstation.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12037-1.html) [#]: subject: (Connect your Google Drive to Fedora Workstation) [#]: via: (https://fedoramagazine.org/connect-your-google-drive-to-fedora-workstation/) [#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) From 5ad4e11535214aa5bbcbf53b59e1b648546ec91a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 22:40:28 +0800 Subject: [PATCH 009/218] PRF @HankChow --- ...19 Manually rotating log files on Linux.md | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/translated/tech/20200319 Manually rotating log files on Linux.md b/translated/tech/20200319 Manually rotating log files on Linux.md index 69a45904c7..877905763c 100644 --- a/translated/tech/20200319 Manually rotating log files on Linux.md +++ b/translated/tech/20200319 Manually rotating log files on Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Manually rotating log files on Linux) @@ -10,29 +10,25 @@ 在 Linux 系统中手动滚动日志 ====== -[deovolenti][1] [(CC BY 2.0)][2] +![](https://img.linux.net.cn/data/attachment/album/202003/25/223932xqibwq5fafx5ao3f.jpg) -日志滚动log rotation在 Linux 系统上是在常见不过的一个功能了,它为系统监控和故障排查保留必要的日志内容,同时又防止过多日志堆积在单个日志文件当中。 +日志滚动log rotation在 Linux 系统上是再常见不过的一个功能了,它为系统监控和故障排查保留必要的日志内容,同时又防止过多的日志造成单个日志文件太大。 -日志滚动的过程是这样的:在一组日志文件之中,编号最大的一个日志文件会被删除,其余的日志文件编号则依次增大并取代较旧的日志文件。这一个过程很容易就可以实现自动化,在细节上还能按需作出微调。 - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] +日志滚动的过程是这样的:在一组日志文件之中,编号最大的(最旧的)一个日志文件会被删除,其余的日志文件编号则依次增大并取代较旧的日志文件,而较新的文件则取代它作为当前的日志文件。这一个过程很容易就可以实现自动化,在细节上还能按需作出微调。 使用 `logrotate` 命令可以手动执行日志滚动的操作。本文将要介绍的就是手动进行日志滚动的方法,以及预期产生的结果。 文中出现的示例适用于 Ubuntu 等 Linux 系统,对于其它类型的系统,日志文件和配置文件可能会有所不同,但日志滚动的过程是大同小异的。 -### 为什么需要日志滚动 +### 为什么需要滚动日志 -一般情况下,Linux 系统会每隔一天(或间隔更长的时间)就自动进行一次日志滚动,因此需要手动执行日志滚动的场景并不多,除非有些日志的体积确实比较大。如果你需要释放存储空间,又或者将某一部分日志文件从活动的日志中分割出来,得当的日志滚动就是很方便的解决方法。 +一般情况下,无需手动旋转日志文件。Linux 系统会每隔一天(或间隔更长的时间)或根据日志文件的大小自动进行一次日志滚动。如果你需要滚动日志以释放存储空间,又或者将某一部分日志从当前的活动中分割出来,这很容易做到,具体要取决于文件滚动规则。 ### 一点背景介绍 -在 Linux 系统安装完成后就已经有很多日志文件被纳入到日志滚动的范围内了,另外,一些应用程序在安装时也会为自己产生的日志文件设置滚动规则。一般来说,日志滚动的配置文件会放置在 `/etc/logrotate.d`。如果你想了解日志滚动的详细实现,可以参考[这篇以前的文章][4]。 +在 Linux 系统安装完成后就已经有很多日志文件被纳入到日志滚动的范围内了。另外,一些应用程序在安装时也会为自己产生的日志文件设置滚动规则。一般来说,日志滚动的配置文件会放置在 `/etc/logrotate.d`。如果你想了解日志滚动的详细实现,可以参考[这篇以前的文章][4]。 -在日志滚动的过程中,活动日志会以一个新名称命名,例如 `log.1`,之前被命名为 `log.1` 的文件则会被重命名为 `log.2`,以此类推。在这一组文件中,最旧的日志文件(假如名为 `log.7`)会从系统中删除。日志滚动时文件的命名方式、保留日志文件的数量等参数是由 `/etc/logrotate.d` 目录中的配置文件决定的,因此你可能会看到有些日志文件只有少数几次滚动,而有些日志文件的滚动次数远大于 7 次。 - -[][5] +在日志滚动的过程中,活动日志会以一个新名称命名,例如 `log.1`,之前被命名为 `log.1` 的文件则会被重命名为 `log.2`,依此类推。在这一组文件中,最旧的日志文件(假如名为 `log.7`)会从系统中删除。日志滚动时文件的命名方式、保留日志文件的数量等参数是由 `/etc/logrotate.d` 目录中的配置文件决定的,因此你可能会看到有些日志文件只保留少数几次滚动,而有些日志文件的滚动次数会到 7 次或更多。 例如 `syslog` 在经过日志滚动之后可能会如下所示(注意,行尾的注释部分只是说明滚动过程是如何对文件名产生影响的): @@ -48,7 +44,7 @@ $ ls -l /var/log/syslog* -rw-r----- 1 syslog adm 211074 Mar 4 00:00 /var/log/syslog.7.gz <== 之前的 syslog.6.gz ``` -你可能会发现,除了活动日志和最新一次滚动的日志文件之外,其余的文件都已经被压缩以节省存储空间。这样设计的原因是大部分系统管理员都只需要查阅最新的日志文件,其余的日志文件压缩起来,需要的时候可以解压查阅,这是一个很好的折中方案。 +你可能会发现,除了当前活动的日志和最新一次滚动的日志文件之外,其余的文件都已经被压缩以节省存储空间。这样设计的原因是大部分系统管理员都只需要查阅最新的日志文件,其余的日志文件压缩起来,需要的时候可以解压查阅,这是一个很好的折中方案。 ### 手动日志滚动 @@ -58,7 +54,18 @@ $ ls -l /var/log/syslog* $ sudo logrotate -f /etc/logrotate.d/rsyslog ``` -值得一提的是,`logrotate` 命令使用 `/etc/logrotate.d/rsyslog` 这个配置文件,并通过了 `-f` 参数实行“强制滚动”。因此,整个过程将会是:删除 `syslog.7.gz`,将原来的 `syslog.6.gz` 命名为 `syslog.7.gz`,将原来的 `syslog.5.gz` 命名为 `syslog.6.gz`,将原来的 `syslog.4.gz` 命名为 `syslog.5.gz`,将原来的 `syslog.3.gz` 命名为 `syslog.4.gz`,将原来的 `syslog.2.gz` 命名为 `syslog.3.gz`,将原来的 `syslog.1.gz` 命名为 `syslog.2.gz`,但新的 `syslog` 文件不一定会创建。你可以按照下面的几条命令执行操作,以确保文件的属主和权限正确: +值得一提的是,`logrotate` 命令使用 `/etc/logrotate.d/rsyslog` 这个配置文件,并通过了 `-f` 参数实行“强制滚动”。因此,整个过程将会是: + +- 删除 `syslog.7.gz`, +- 将原来的 `syslog.6.gz` 命名为 `syslog.7.gz`, +- 将原来的 `syslog.5.gz` 命名为 `syslog.6.gz`, +- 将原来的 `syslog.4.gz` 命名为 `syslog.5.gz`, +- 将原来的 `syslog.3.gz` 命名为 `syslog.4.gz`, +- 将原来的 `syslog.2.gz` 命名为 `syslog.3.gz`, +- 将原来的 `syslog.1.gz` 命名为 `syslog.2.gz`, +- 但新的 `syslog` 文件不一定必须创建。 + +你可以按照下面的几条命令执行操作,以确保文件的属主和权限正确: ``` $ sudo touch /var/log/syslog @@ -90,7 +97,7 @@ endscript } ``` -下面是用户登录日志文件 `wtmp` 手动日志滚动的示例。由于 `/etc/logrotate.d/wtmp` 中有 `rotate 2` 的配置,因此系统中只保留了两份 `wtmp` 日志文件。 +下面是手动滚动记录用户登录信息的 `wtmp` 日志的示例。由于 `/etc/logrotate.d/wtmp` 中有 `rotate 2` 的配置,因此系统中只保留了两份 `wtmp` 日志文件。 滚动前: @@ -122,9 +129,6 @@ $ grep wtmp /var/lib/logrotate/status "/var/log/wtmp" 2020-3-12-11:52:57 ``` -欢迎加入 [Facebook][6] 和 [LinkedIn][7] 上的 Network World 社区参与话题评论。 - - -------------------------------------------------------------------------------- via: https://www.networkworld.com/article/3531969/manually-rotating-log-files-on-linux.html @@ -132,7 +136,7 @@ via: https://www.networkworld.com/article/3531969/manually-rotating-log-files-on 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 780e1b5133278c163065bc06c954ce0115572c2f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 25 Mar 2020 22:41:04 +0800 Subject: [PATCH 010/218] PUB @HankChow https://linux.cn/article-12038-1.html --- .../20200319 Manually rotating log files on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200319 Manually rotating log files on Linux.md (99%) diff --git a/translated/tech/20200319 Manually rotating log files on Linux.md b/published/20200319 Manually rotating log files on Linux.md similarity index 99% rename from translated/tech/20200319 Manually rotating log files on Linux.md rename to published/20200319 Manually rotating log files on Linux.md index 877905763c..ae5f7294e3 100644 --- a/translated/tech/20200319 Manually rotating log files on Linux.md +++ b/published/20200319 Manually rotating log files on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12038-1.html) [#]: subject: (Manually rotating log files on Linux) [#]: via: (https://www.networkworld.com/article/3531969/manually-rotating-log-files-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From ac03da8463bbe20710971853e2d5c128bf90f62c Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 26 Mar 2020 08:25:36 +0800 Subject: [PATCH 011/218] translated --- ... Expiration Date for All Users on Linux.md | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) rename {sources => translated}/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md (54%) diff --git a/sources/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md b/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md similarity index 54% rename from sources/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md rename to translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md index eea6cfb8a7..0991e386b8 100644 --- a/sources/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md +++ b/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md @@ -7,44 +7,44 @@ [#]: via: (https://www.2daygeek.com/linux-check-user-password-expiration-date/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -How to Check Password Expiration Date for All Users on Linux +如何在 Linux 上检查所有用户密码到期日期 ====== -If you enable a **[password policy on Linux][1]**. +如果你在 **[Linux 上启用了密码策略][1]**。 -The password must be changed before it expires, and you will be notified when you log in to the system. +密码必须在到期前进行更改,并且登录到系统时会收到通知。 -If you rarely use your account, it may be locked due to password expiration. +如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。 -In many cases, this can happen in service accounts with a **[password-less login][2]**, because nobody will monitor it. +在许多情况下,这可能会在[无需密码登录][2]的服务帐户中发生,因为没人会注意到它。 -This will lead to stop the **[cronjobs/crontab][3]** configured on the server. +这将导致停止服务器上配置的 **[cronjob/crontab][3]**。 -If so, how to mitigate this situation. +如果如此,该如何缓解这种情况。 -You can write a **[shell script][4]** to get a notification about it, for which we wrote an article some time ago. +你可以写一个 **[shell 脚本][4]**来获得有关它的通知,我们前一段时间为此写了一篇文章。 - * **[Bash Script to Send eMail With a List of User Accounts Expiring in “X” Days][5]** + * **[发送 “X” 日内到期的用户帐户列表邮件的 Bash 脚本][5]** -This will give you the number of days, but this article aims to give you a actual date on your terminal. +它将给出天数,但是本文旨在在终端中给你实际日期。 -This can be achieved with the chage command. +这可以使用 chage 命令来实现。 -### What is chage Command? +### 什么是 chage 命令? -chage stands for change age. It changes user password expiration information. +chage 代表更改时效 (change age)。它更改用户密码到期信息。 -The chage command changes the number of days between password changes and the date of the last password change. +chage 命令更改两次密码更改之间的天数,以及最后一次更改密码的日期。 -This information is used by the system to determine when a user should change his/her password. +系统使用此信息来确定用户何时应更改密码。 -It allows the user to perform other functions such as setting the account expiration date, setting the password inactive after the expiration, displaying account aging information, setting minimum and maximum days before password change, and setting expiry warning days. +它允许用户执行其他功能,例如设置帐户到期日期、在到期后将密码设置为无效、显示帐户时效信息、设置密码更改之前的最小和最大天数以及设置到期警告天数。 -### 1) How to Check the Password Expiration Date for a Specific User on Linux +### 1)如何在 Linux 上检查特定用户的密码到期日期 -If you want to check the password expiration date for a specific user on Linux, use the following command. +如果要检查 Linux 上特定用户的密码到期日期,请使用以下命令。 ``` # chage -l daygeek @@ -58,17 +58,18 @@ Maximum number of days between password change : 90 Number of days of warning before password expires : 7 ``` -### 2) How To Check Password Expiration Date For All Users On Linux +### 2)如何在 Linux 上检查所有用户的密码到期日期 You can use the chage command directly for a single user, which may not work as expected for many users, but you can use it. +你可以直接对单个用户使用 chage 命令,这对你可以使用的多个用户可能无效。 -To achieve this you need to write a small shell script. The shell script below allows you to list all users added to your system, including system users. +为此,你需要编写一个小的 shell 脚本。下面的 shell 脚本可以列出添加到系统中的所有用户,包括系统用户。 ``` # for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g' ``` -You will get an output like the one below, but the username may differ. +你将得到类似以下的输出,但是用户名可能不同。 ``` root : never @@ -85,15 +86,15 @@ u4 : Jun 17, 2019 u5 : Jun 17, 2019 ``` -### 3) How To Check Password Expiration Date For All Users Except System Users On Linux +### 3)如何检查 Linux 上除系统用户外的所有用户的密码有效期 -The below shell script will display a list of users who has an expiry date. +下面的 shell 脚本将显示有到期日期的用户列表。 ``` # for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g' | grep -v "never" ``` -You will get an output like the one below, but the username may differ. +你将得到类似以下的输出,但是用户名可能不同。 ``` u1 : Nov 12, 2018 @@ -109,7 +110,7 @@ via: https://www.2daygeek.com/linux-check-user-password-expiration-date/ 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 5e96d6b640aa48e115dd594bb524f0d8218bf599 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 26 Mar 2020 08:31:12 +0800 Subject: [PATCH 012/218] translating --- sources/tech/20200323 Don-t love diff- Use Meld instead.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200323 Don-t love diff- Use Meld instead.md b/sources/tech/20200323 Don-t love diff- Use Meld instead.md index 98e93c6ee8..e5049454e2 100644 --- a/sources/tech/20200323 Don-t love diff- Use Meld instead.md +++ b/sources/tech/20200323 Don-t love diff- Use Meld instead.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 2af26abd490a7cae8761d7512ebad95878dedcc7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 26 Mar 2020 10:57:13 +0800 Subject: [PATCH 013/218] PRF @HankChow --- ...oronavirus challenges remote networking.md | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/translated/talk/20200317 Coronavirus challenges remote networking.md b/translated/talk/20200317 Coronavirus challenges remote networking.md index 6dda7ec426..b289540b26 100644 --- a/translated/talk/20200317 Coronavirus challenges remote networking.md +++ b/translated/talk/20200317 Coronavirus challenges remote networking.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Coronavirus challenges remote networking) @@ -9,39 +9,42 @@ 新型冠状病毒对远程网络的影响 ====== -由于 COVID-19 的肆虐,IBM、谷歌、亚马逊、AT&T、思科、苹果等公司都陆续为远程办公提供了技术上的支持,这为远程网络带来了不少的压力。 -在新型冠状病毒广泛传播的大环境下,很多公司都要求员工留在家中远程办公,远程网络技术因此承受了更大的压力,一些带宽和安全方面的问题爷接踵而至。 +> 由于 COVID-19 的肆虐,IBM、谷歌、亚马逊、AT&T、思科、苹果等公司都争先恐后地为远程办公提供了技术上的支持,这为远程网络带来了不少的压力。 -在过去的几十年当中,由于各种企业的蓬勃发展,远程办公的人数增加了 400 多万。而当前疫情流行的背景下,远程办公的需求激增,有望达到一个新的高峰。 +![](https://images.idgesg.net/images/article/2018/02/crisis_survival_strategy_disaster_preparedness_readiness_recovery_continuity_plan_thinkstock_600161484-100749343-large.jpg) -VPN 提供商 [Atlas][1] 的一份研究表明,在今年 3 月 9 日到 3 月 15 日之间,美国的 VPN 使用量增加了 53%,并且还会继续提高。而在意大利这个疫情爆发比美国早两周的国家,过去一周内的 VPN 使用量甚至增加了 112%。Atlas VPN 的首席执行官 Rachel Welch 在一份声明中称,美国的 VPN 使用量在 3 月底预估会达到 150% 的增幅。 +在新型冠状病毒广泛传播的大环境下,很多公司都要求员工留在家中远程办公,远程网络技术因此承受了更大的压力,一些带宽和安全方面的问题也接踵而至。 + +在过去的几十年当中,由于企业的蓬勃发展,远程办公的人数估计增加了 400 多万。而当前疫情流行的背景下,远程办公的需求激增,有望达到一个新的高峰。 + +一家虚拟私有网络Virtual Private Network(缩写:???)提供商 [Atlas][1] 的一份研究表明,在今年 3 月 9 日到 3 月 15 日之间,美国的虚拟私有网络使用量增加了 53%,并且还会继续提高。而在意大利这个疫情爆发比美国早两周的国家,过去一周内的虚拟私有网络使用量甚至增加了 112%。Atlas 虚拟私有网络的首席执行官 Rachel Welch 在一份声明中称,美国的虚拟私有网络使用量在 3 月底预估会达到 150% 的增幅。 部分企业正在尝试通过一日测试one-day test来评估远程办公的可行性。据《[芝加哥论坛报][2]》的报道,摩根大通、晨星以及一家数据分析方面的初创公司 Arity 已经通过让员工在家办公一天来测试整个办公系统的稳定性。 在政府方面,[美国国家海洋与大气管理局][3]和 NASA 都已经进行或计划进行网络方面的压力测试,评估是否有足够的网络容量足以让上千名工作人员远程办公,以及远程办公可能造成的影响。而放眼整个美国,供职于美国政府部门的员工数量在 [200 万][4]左右。 -为了避免蜂窝网络发生拥堵,美国[联邦通信委员会][5]临时授权允许 T-mobile 访问已分配给其它运营商的 600MHz 频段,T-mobile 表示“将使用这个频段让美国人更方便地享受远程医疗、参与远程工作和学习,同时在保持‘物理距离’的情况下保持联系”。 +为了避免蜂窝数据网络发生拥堵,美国[联邦通信委员会][5]已批准 T-mobile 临时访问已分配给其它运营商的 600MHz 频段,T-mobile 表示“将使用这个频段让美国人更方便地享受远程医疗、参与远程工作和学习,同时在保持‘物理距离’的情况下保持联系”。 + +- [video](https://youtu.be/-1-ugVx0hVc) 但也有一些业内人士指出,在一些对蜂窝网络有较强依赖的的场景下,“最后一英里”的网络访问会变得非常拥堵。 -[][6] - 网络情报公司 ThousandEyes 的主要产品是局域网和广域网性能分析的软件,该公司的产品经理 Alex Cruz Farmer 表示,网络瓶颈在于一些较为偏远的农村地区,因为那些地区的网络基础设施较为薄弱,主要通过微波或蜂窝网络来访问互联网。最大的挑战在于现有的解决方案所能提供的带宽远远不足。 Alex Cruz Farmer 还补充道,尽管持续时间不长,但现在的确已经出现一些由于运营商问题或网络负载增加导致的故障现象。 AT&T 表示目前已经留意到蜂窝网络使用量的变化,但网络容量并没有作出提高。 -[AT&T 在一份声明中称][7],在病毒传播最严重的城市中,由于越来越多的人留在了家中远程办公,减少了通勤和人群聚集,很多特定位置和特定时段的蜂窝网络使用量峰值都明显降低了。他们还使用了一些工具对网络带宽进行了统计和监控,通过这些工具,他们可以更直观地了解网络使用情况的趋势,同时获取网络性能和网络容量方面的报告,进而管理整个通信网络。 +[AT&T 在一份声明中称][7],在新冠病毒传播最严重的城市中,由于越来越多的人留在了家中远程办公,减少了通勤和人群聚集,很多特定位置和特定时段的蜂窝网络使用量峰值都明显降低了。他们还使用了一些工具对网络带宽进行了统计和监控,通过这些工具,他们可以更直观地了解网络使用情况的趋势,同时获取网络性能和网络容量方面的报告,进而管理整个通信网络。 Verison 表示,自从新型冠状病毒疫情爆发以来,尽管在家办公的用户数量大增,但使用的数据量并没有明显的上升。他们在一份声明中称:“Verison 的网络是为满足未来的需求设计建造的,面对各种需求量的增加或使用方式的改变,我们都有充分的准备。虽然这是一次前所未有的社会事件,整个局面也在不断发生改变,但随着不断了解实际需求的变化情况,我们随时可以对网络资源作出调整”。 Verison 一直在关注受影响最严重的地区的网络使用情况,并承诺将会与医院、医护人员、政府机构合作,制定网络资源使用的优先级,以满足他们的需求。Verison 还宣布计划在 2020 年将支出在 170 亿至 180 亿美元的基础上再提高 5 亿美元,以实现“加快 Verison 向 5G 过渡并在困难时期帮助支撑经济”的目标。 -### 企业 VPN 安全问题 +### 企业虚拟私有网络安全问题 -对于企业来说,数据中心与远程用户之间的网络和安全问题解决起来绝非易事,尤其是使用 VPN 进行远程访问时,来自用户所在住宅网络的访问几乎无法由企业控制。CIMI 公司总裁 Tom Nolle 认为,IT 部门有必要验证这些连接是否符合企业的标准(关于 Tom Nolle 更多关于在家办公的看法,可以查阅[这里][8])。 +对于企业来说,数据中心与远程用户之间的网络和安全问题解决起来绝非易事,尤其是使用虚拟私有网络进行远程访问时,来自用户所在住宅网络的访问几乎无法由企业控制。CIMI 公司总裁 Tom Nolle 认为,IT 部门有必要验证这些连接是否符合企业的标准(关于 Tom Nolle 更多关于在家办公的看法,可以查阅[这里][8])。 Tom Nolle 认为像 ISP、DNS 和 Wi-Fi 这些常见的家用网络要素都应该作为适合远程办公网络业务认证的一部分。他发现 Google 的 DNS 服务比 ISP 提供的服务更能承受压力,OpenDNS 也是一个很好的选择,这说明用户可以考虑使用其中一种。 @@ -49,37 +52,35 @@ Tom Nolle 还说,家庭 Wi-Fi 网络的安全性也是一个问题,IT 部门 DNS 软件公司 BlueCat 的首席战略官 Andrew Wertkin 表示,对一些刚刚开始在家远程办公的员工来说,适当提供相关指导是很有必要的。大部分员工从来没有尝试过在家远程办公,他们或许并不了解安全的重要性。如果员工访问公司网络的时候使用的是个人设备而不是公司设备,就更有可能出现问题。 -而使用 [VPN][9] 远程办公的人数激增也会为企业带来成本上的挑战。 +而使用[虚拟私有网络][9]远程办公的人数激增也会为企业带来成本上的挑战。 -“VPN 设备并不便宜,如果考虑到计算资源的成本和每个人的均摊成本,迁移到云上的虚拟环境会带来一笔不小的开支,这还不包括每个 VPN 许可证价格的上升”,Alex Cruz Farmer 坦言。 +“虚拟私有网络设备并不便宜,如果考虑到计算资源的成本和每个人的均摊成本,迁移到云上的虚拟环境会带来一笔不小的开支,这还不包括每个虚拟私有网络许可证价格的上升”,Alex Cruz Farmer 坦言。 -在容量方面,随着远程访问量的增加,用于分配 IP 地址的 DHCP 服务也会承受巨大的压力。Andrew Wertkin 指出,如果进行远程连接的设备无法获取到网络地址,那将会成为比 VPN 许可证数量更严重的问题。企业内部必须对这些风险进行测试,了解其中存在瓶颈的部分,并制定规避这些风险的策略。 +在容量方面,随着远程访问量的增加,用于分配 IP 地址的 DHCP 服务也会承受巨大的压力。Andrew Wertkin 指出,如果进行远程连接的设备无法获取到网络地址,则是否具有足够的虚拟私有网络许可证并不重要。企业内部必须对这些风险进行测试,了解其中存在瓶颈的部分,并制定规避这些风险的策略。 按照这个思路,企业甚至需要验证数据中心可以用于公开的 SSL 套接字数量,否则也会面临数量不足的风险。 -微软 Office 365 产品团队的高级程序经理 Paul Collinge 也表达了类似的担忧。他在一篇关于优化 Office 365 员工远程办公流量的[博客][10]中写道,当大量员工在同时接入企业网络时,会对诸如 VPN 集中器、中央网络出口设备(例如代理、DLP)、中央互联网带宽、回程 MPLS 和 NAT 等网络要素产生巨大的压力。最终导致的结果是低下的性能、低下的生产力,以及员工们低下的使用体验。 +微软 Office 365 产品团队的高级程序经理 Paul Collinge 也表达了类似的担忧。他在一篇关于优化 Office 365 员工远程办公流量的[博客][10]中写道,当大量员工在同时接入企业网络时,会对诸如虚拟私有网络集中器、中央网络出口设备(例如代理、DLP)、中央互联网带宽、回程 MPLS 和 NAT 等网络要素产生巨大的压力。最终导致的结果是低下的性能、低下的生产力,以及员工们低下的使用体验。 -Alex Cruz Farmer 提出,企业很可能需要增加网络上 VPN 集中器的数量,这样就可以让远程用户分布在多个不同的 VPN 端点上,避免产生拥堵。退而求其次,只能在防火墙上把某些端口放开,允许特定应用程序的公开访问,尽管这样有助于提高工作效率,但却降低了整体的安全性。 +Alex Cruz Farmer 提出,企业很可能需要增加网络上虚拟私有网络集中器的数量,这样就可以让远程用户分布在多个不同的虚拟私有网络端点上,避免产生拥堵。退而求其次,只能在防火墙上把某些端口放开,允许特定应用程序的公开访问,尽管这样有助于提高工作效率,但却降低了整体的安全性。 -### VPN 隧道分割tunneling split有效吗? +### 虚拟私有网络隧道分割技术有效吗? -业内人士对隧道分割技术有不同的看法。 +业内人士对隧道分割tunneling split有不同的看法。 -BlueCat 的 Andrew Wertkin 认为,VPN 可以使用隧道分割技术,使得仅有需要访问企业内部网络的流量才通过 VPN 隧道访问,其余流量则直接进入互联网。这意味着会有部分流量不受隧道和企业网络内部的安全控制,用户的计算机会暴露在互联网当中,进而导致企业的数据和网络面临安全风险。 +BlueCat 的 Andrew Wertkin 认为,虚拟私有网络可以使用隧道分割技术,使得仅有需要访问企业内部网络的流量才通过虚拟私有网络隧道访问,其余流量则直接进入互联网。这意味着会有部分流量不受隧道和企业网络内部的安全控制,用户的计算机会暴露在互联网当中,进而导致企业的数据和网络面临安全风险。 尽管如此,微软在上周还是建议 IT 管理员使用隧道分割技术以缓解 Office 365 由于大量远程用户涌入导致的拥堵问题。微软在[建议][10]中提供了相关接入点的 URL 和 IP 地址列表,并引导 IT 人员如何按照这个方式将流量路由到 Office 365。 -按照 Paul Collinge 的说法,VPN 客户端需要经过配置,才能将流量路由到已标识的 URL/IP/ 端口上,进而为全球的用户提供高性能的服务。 +按照 Paul Collinge 的说法,虚拟私有网络客户端需要经过配置,才能将流量路由到已标识的 URL/IP/ 端口上,进而为全球的用户提供高性能的服务。 -Alex Cruz Farmer 认为,在 VPN 使用率上升之后,企业很有必要对网络安全进行一个全面的审查。对于仍然在使用传统网络安全架构的企业来说,应该开始考虑基于云端的网络安全方案了,这不仅可以提升远程办公的性能,还能减少企业对于广域网的使用量。 +Alex Cruz Farmer 认为,在虚拟私有网络使用率上升之后,企业很有必要对网络安全进行一个全面的审查。对于仍然在使用传统网络安全架构的企业来说,应该开始考虑基于云端的网络安全方案了,这不仅可以提升远程办公的性能,还能减少企业对于广域网的使用量。 其它相关情况: - * [FCC][11] 呼吁,宽带提供商应该适当放宽数据传输的限制,电话运营商应该适当免除用户的长途电话费,远程教育提供商应该合作为社会提供远程学习的机会,网络运营商应该优先考虑医院或医疗机构的网络连接需求。对此,AT&T 已经作出了相关的回应和行动。 - * [美国参议员 Mark R. Warner (D-VA)][12] 和其他 17 名参议员致信了 AT&T、CenturyLink、Charter Communications、Comcast、Cox Communications、Sprint、T-Mobile、Verizon 这八家主要 ISP 的首席执行官,呼吁这些公司应该采取措施应对远程办公、在线教育、远程医疗、远程支持服务等方面需求激增带来的压力。这些参议员在信中呼吁,各公司应该降低可能对远程服务产生影响的限制和费用,同时还应该为受到疫情影响的学生提供免费或收费的宽带服务,否则学生在疫情期间无法接入网络进行在线学习。 - * [思科][13]、微软、[谷歌][14]、[LogMeIn][15]、[Spectrum][16] 等供应商都提供了一些免费工具,帮助用户在疫情爆发期间正常进行安全通信。 - -欢迎加入 [Facebook][17] 和 [LinkedIn][18] 上的 Network World 社区参与话题评论。 +* [FCC][11] 呼吁,宽带提供商应该适当放宽数据传输的限制,电话运营商应该适当免除用户的长途电话费,远程教育提供商应该合作为社会提供远程学习的机会,网络运营商应该优先考虑医院或医疗机构的网络连接需求。对此,AT&T 已经作出了相关的回应和行动。 +* [美国参议员 Mark R. Warner (D-VA)][12] 和其他 17 名参议员致信了 AT&T、CenturyLink、Charter Communications、Comcast、Cox Communications、Sprint、T-Mobile、Verizon 这八家主要 ISP 的首席执行官,呼吁这些公司应该采取措施应对远程办公、在线教育、远程医疗、远程支持服务等方面需求激增带来的压力。这些参议员在信中呼吁,各公司应该降低可能对远程服务产生影响的限制和费用,同时还应该为受到疫情影响的学生提供免费或收费的宽带服务,否则学生在疫情期间无法接入网络进行在线学习。 +* [思科][13]、微软、[谷歌][14]、[LogMeIn][15]、[Spectrum][16] 等供应商都提供了一些免费工具,帮助用户在疫情爆发期间正常进行安全通信。 -------------------------------------------------------------------------------- @@ -89,7 +90,7 @@ via: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote- 作者:[Michael Cooney][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From da9affb8c296aa70543354c1dedd2d72c0f21a9e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 26 Mar 2020 11:05:26 +0800 Subject: [PATCH 014/218] PUB @HankChow https://linux.cn/article-12039-1.html --- .../20200317 Coronavirus challenges remote networking.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/talk => published}/20200317 Coronavirus challenges remote networking.md (99%) diff --git a/translated/talk/20200317 Coronavirus challenges remote networking.md b/published/20200317 Coronavirus challenges remote networking.md similarity index 99% rename from translated/talk/20200317 Coronavirus challenges remote networking.md rename to published/20200317 Coronavirus challenges remote networking.md index b289540b26..9467133c2d 100644 --- a/translated/talk/20200317 Coronavirus challenges remote networking.md +++ b/published/20200317 Coronavirus challenges remote networking.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12039-1.html) [#]: subject: (Coronavirus challenges remote networking) [#]: via: (https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html) [#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) From 924b34fb54646b418e9e7526e93d3e4911aaec30 Mon Sep 17 00:00:00 2001 From: Zhilei Han Date: Thu, 26 Mar 2020 12:28:14 +0800 Subject: [PATCH 015/218] Get a translated articule to the public --- ...219 Here Are The Most Beautiful Linux Distributions in 2020.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md (100%) diff --git a/sources/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md b/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md similarity index 100% rename from sources/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md rename to translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md From 83f01db90c2a560622fdb4979c779f53743dcf4b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 26 Mar 2020 20:02:52 +0800 Subject: [PATCH 016/218] PART 2 --- ...0190822 How the Linux desktop has grown.md | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/translated/talk/20190822 How the Linux desktop has grown.md b/translated/talk/20190822 How the Linux desktop has grown.md index 5f16a52c7b..979e31f8c2 100644 --- a/translated/talk/20190822 How the Linux desktop has grown.md +++ b/translated/talk/20190822 How the Linux desktop has grown.md @@ -7,7 +7,7 @@ [#]: via: (https://opensource.com/article/19/8/how-linux-desktop-grown) [#]: author: (Jim Hall https://opensource.com/users/jim-hall) -Linux 桌面成长之旅 +Linux 桌面史话 ====== > 自 1990 年代初以来,Linux 桌面已从简单的窗口管理器发展为完整的桌面。与我们一起来探索 Linux 桌面的历史。 @@ -69,29 +69,25 @@ Linux 上的第一个“桌面”其实不是桌面。相反,它们是运行 ### Linux 桌面之初啼 -In 1996, Matthias Ettrich was troubled by the inconsistency of Linux applications under X. He wanted to make the graphical environment easy to use. And more importantly, he wanted to make everything _integrated_—like an actual desktop. - -Matthias started work on the K Desktop Environment. That's K for "Kool." But the name KDE was also meant to be a play on the Common Desktop Environment (CDE) that was the standard in the "Big Unix" world. Although by 1996, CDE was looking pretty dated. CDE was based on the Motif widget set, which is the same design that FVWM mimicked. Finalized in July 1998, KDE 1.0 was a definite improvement over plain window managers like FVWM95. +在 1996 年,Matthias Ettrich 感于 X 之下 Linux 应用程序体验不一致的困扰。他想使找个图形环境更易于使用,而且更重要的是,他想使所有东西都像实际的桌面一样“集成”在一起。 +Matthias 开始研究K 桌面环境K Desktop Environment(KDE)。那个 K 代表着 “Kool”(LCTT 译注:即 Cool)。但是 KDE 这个名字也意味着可以在通用桌面环境Common Desktop Environment(CDE)上发挥作用,而通用桌面环境是“大 Unix”世界的标准。尽管到了 1996 年,CDE 看起来已经有点过时了。CDE 基于 Motif 部件集,这与 FVWM 模仿的设计相同。KDE 1.0 于 1998 年 7 月完成,是对 FVWM95 等普通窗口管理器的绝对改进。 + ![KDE 1.0][8] -K Desktop Environment (KDE) version 1.0 +*K 桌面环境(KDE)版本 1.0 图片来源:Paul Brown / KDE* -Image credit: Paul Brown / KDE +KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个具有应用程序集成和更现代的桌面图标的真正的桌面。KDE 的设计与 Windows 95 并无不同。屏幕底部有一个任务栏,它提供与 Windows 95 的“开始”菜单等效的功能以及一些应用程序快捷方式。KDE 还支持虚拟桌面,它们被巧妙地标记为 “One”、“ Two”、“Three” 和 “Four”。而正在运行的应用程序则通过屏幕顶部单独的任务栏中的按钮表示。 -KDE was a big step forward for Linux. Finally, Linux had a true desktop with application integration and more modern desktop icons. KDE's design was not dissimilar from Windows 95. You had a kind-of taskbar along the bottom of the screen that provided the equivalent of Windows 95's Start menu as well as several application shortcuts. KDE also supported virtual desktops, which were cleverly labeled One, Two, Three, and Four. Running applications were represented via buttons in a separate taskbar at the top of the screen. +但是并不是每个人都对 KDE 感到满意。为了从系统中抽象出 GUI 来,KDE 使用了 Trolltech 的 Qt 工具套件库。不幸的是,Qt 并不是以自由软件的许可证进行分发的。Trolltech 允许 Qt 免费在自由软件应用程序中使用,但在商业或专有应用程序中要收取使用费。而且这种二分法与自由软件不符。这给 Linux 发行版带来了问题:它们应该包括 KDE 吗?还是默认使用较旧而属于自由软件的图形用户界面(例如 FVWM)? -But not everyone was happy with KDE. To abstract the GUI from the system, KDE used Trolltech's Qt toolkit library. Unfortunately, Qt was not distributed under a free software license. Trolltech allowed Qt to be used at no charge in free software applications but charged a fee to use it in commercial or proprietary applications. And that dichotomy is not aligned with free software. This caused problems for Linux distributions: Should they include KDE? Or default to an older but free software graphical user interface like FVWM? - -In response, Miguel de Icaza and Federico Mena started work in 1997 on a new Linux desktop. The new project was dubbed GNOME, for GNU Network Object Model Environment. GNOME aimed to be completely free software and used a different toolkit, called GTK, from the GIMP image editor. GTK literally stood for GIMP Tool Kit. When GNOME 1.0 was finally released in 1999, Linux had another modern desktop environment. +面对这种情况,Miguel de Icaza 和 Federico Mena 于 1997 年开始开发新的 Linux 桌面上。这个新项目被称为 GNOME,即GNU 网络对象模型环境GNU Network Object Model Environment的缩写。GNOME 旨在成为完全自由的软件,并使用了来自 GIMP 图像编辑器中的另一种工具套件(称为 GTK)。 GTK 从字面上代表 GIMP 工具套件GIMP Tool Kit。当 GNOME 1.0 最终于 1999 年发布时,Linux 有了另一个现代化的桌面环境。 ![GNOME 1.0][9] -GNOME version 1.0 +*GNOME 1.0 版 图片来源:GNOME 文档项目* -Image credit: GNOME Documentation Project - -While it was great to have two desktop environments for Linux, the "KDE versus GNOME" rivalry continued for some time. By 1999, Trolltech re-released the Qt library under a new public license, the Q Public License (QPL). But the new license carried its own baggage—the QPL only applied to Qt's use in open source software projects, not commercial projects. Thus the Free Software Foundation deemed the QPL [not compatible][10] with the GNU General Public License (GNU GPL). This licensing issue would remain until Trolltech re-re-released the Qt library under the GNU GPL version 2 in 2000. +有两个 Linux 桌面环境固然很棒,但“KDE 与 GNOME”之争仍持续了一段时间。到 1999 年,Trolltech 以新的公共许可证 Q 公共许可证Q Public License(QPL)重新发布了 Qt 库。但是,新许可证有其自己的包袱—-QPL 仅适用于 Qt 在开源软件项目中的使用,而不适用于商业项目。因此,自由软件基金会Free Software Foundation(FSF)认为 QPL 与 GNU 通用公共许可证GNU General Public License(GNU GPL)[不兼容][10]。在 Trolltech 在 2000 年根据 GNU GPL v2 重新发布 Qt 库之前,这个许可证问题一直存在。 ### Development over time From 34f9780a6835941f32e109d625af9768e61bb987 Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Thu, 26 Mar 2020 22:34:04 +0800 Subject: [PATCH 017/218] hankchow translating --- .../tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md b/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md index 2079a18983..9bb514f898 100644 --- a/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md +++ b/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (HankChow) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From eb780b44b28ad2eba87099dbada2ddce0debd6b0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 26 Mar 2020 23:11:33 +0800 Subject: [PATCH 018/218] TSL FIN --- ...0190822 How the Linux desktop has grown.md | 62 ++++++++----------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/translated/talk/20190822 How the Linux desktop has grown.md b/translated/talk/20190822 How the Linux desktop has grown.md index 979e31f8c2..faa1bbac3e 100644 --- a/translated/talk/20190822 How the Linux desktop has grown.md +++ b/translated/talk/20190822 How the Linux desktop has grown.md @@ -75,7 +75,7 @@ Matthias 开始研究K 桌面环境K Desktop Environment ![KDE 1.0][8] -*K 桌面环境(KDE)版本 1.0 图片来源:Paul Brown / KDE* +*K 桌面环境(KDE)版本 1.0。图片来源:Paul Brown / KDE* KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个具有应用程序集成和更现代的桌面图标的真正的桌面。KDE 的设计与 Windows 95 并无不同。屏幕底部有一个任务栏,它提供与 Windows 95 的“开始”菜单等效的功能以及一些应用程序快捷方式。KDE 还支持虚拟桌面,它们被巧妙地标记为 “One”、“ Two”、“Three” 和 “Four”。而正在运行的应用程序则通过屏幕顶部单独的任务栏中的按钮表示。 @@ -85,81 +85,69 @@ KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个具有应用 ![GNOME 1.0][9] -*GNOME 1.0 版 图片来源:GNOME 文档项目* +*GNOME 1.0 版。图片来源:GNOME 文档项目* 有两个 Linux 桌面环境固然很棒,但“KDE 与 GNOME”之争仍持续了一段时间。到 1999 年,Trolltech 以新的公共许可证 Q 公共许可证Q Public License(QPL)重新发布了 Qt 库。但是,新许可证有其自己的包袱—-QPL 仅适用于 Qt 在开源软件项目中的使用,而不适用于商业项目。因此,自由软件基金会Free Software Foundation(FSF)认为 QPL 与 GNU 通用公共许可证GNU General Public License(GNU GPL)[不兼容][10]。在 Trolltech 在 2000 年根据 GNU GPL v2 重新发布 Qt 库之前,这个许可证问题一直存在。 -### Development over time +### 随着时间的发展 -The Linux desktop continued to mature. KDE and GNOME settled into a friendly competition that pushed both to add new features and to exchange ideas and concepts. By 2004, both GNOME and KDE had made significant strides, yet brought only incremental changes to the user interface. +Linux 桌面继续成熟。KDE 和 GNOME 进行了一场友好的竞争,不仅增加了新功能,还互相交流了思想和观念。到 2004 年,GNOME 和 KDE 都取得了长足的进步,但用户界面只是在原有基础上添加了一些变化。 -KDE 2 and 3 continued to rely on a taskbar concept at the bottom of the screen but incorporated the buttons for running applications. One of KDE's most visible changes was the addition of the Konqueror browser, which first appeared in KDE 2. +KDE 2 和 3 继续依赖屏幕底部的任务栏概念,但并入了用于运行应用程序的按钮。KDE 最明显的变化之一是添加了 Konqueror 浏览器,该浏览器首次出现在 KDE 2 中。 ![KDE 2.2.2 \(2001\) showing the Konqueror browser][11] -KDE 2.2.2 (2001) showing the Konqueror browser - -Image credit: Paul Brown / KDE +*KDE 2.2.2(2001),显示了 Konqueror 浏览器。图片来源:Paul Brown / KDE* ![KDE 3.2.2][12] -KDE 3.2.2 (2004) on Fedora Core 2 showing the Konqueror file manager (using a Fedora Core 2 theme) +*Fedora Core 2 上的 KDE 3.2.2(2004),显示了 Konqueror 文件管理器(使用 Fedora Core 2 主题)* -GNOME 2 also used a taskbar concept but split the bar into two: a taskbar at the top of the screen to launch applications and respond to desktop alerts, and a taskbar at the bottom of the page to show running applications. On my own, I referred to the two taskbars as "things you can do" (top) and "things are you doing" (bottom). In addition to the streamlined user interface, GNOME also added an updated file manager called Nautilus, developed by Eazel. +GNOME 2 还使用了任务栏概念,但将其分为两个部分:位于屏幕顶部的任务栏以启动应用程序并响应桌面警报,以及位于页面底部的任务栏以显示正在运行的应用程序。我自己将这两个任务栏称之为“你可以做的事情”(顶部)和“你正在做的事情”(底部)。除了精简的用户界面外,GNOME 还添加了由 Eazel 开发的名为 Nautilus 的更新文件管理器。 ![GNOME 2.6.0][13] -GNOME 2.6.0 (2004) on Fedora Core 2 showing the Nautilus file manager (using a Fedora Core 2 theme) +*Fedora Core 2 上的 GNOME 2.6.0(2004),显示了 Nautilus 文件管理器(使用 Fedora Core 2 主题)* -Over time, KDE and GNOME have taken different paths. Both provide a feature-rich, robust, and modern desktop environment—but with different user interface goals. In 2011, there was a major deviation between how GNOME and KDE approached the desktop interface. KDE 4.6 (January 2011) and KDE 4.7 (July 2011) provided a more traditional desktop metaphor while continuing to rely on the taskbar concept familiar to many users. Of course, KDE saw lots of changes under the hood, but the familiar look and feel remained. +随着时间的流逝,KDE 和 GNOME 走了不同的路径。两者都提供了功能丰富、健壮且现代化的桌面环境,但是却具有不同的用户界面目标。2011 年,GNOME 和 KDE 处理桌面界面的方式之间存在重大偏差。KDE 4.6(2011 年 1 月)和 KDE 4.7(2011 年 7 月)提供了更传统的桌面感受,同时继续根植于许多用户熟悉的任务栏概念。当然,可以看到 KDE 发生很多变化,但是它仍然保留了熟悉的外观。 ![KDE 4.6][14] -KDE 4.6 showing the Gwenview image viewer +*KDE 4.6,显示 Gwenview 图像查看器。图片来源:KDE* -Image credit: KDE +2011 年,GNOME 通过新的桌面概念彻底改变了走向。GNOME 3 旨在创建一个更简单、更精简的桌面体验,使用户可以专注于自己的工作。任务栏消失了,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控件,显示了时间和电池状态,并允许用户通过重新设计过的菜单启动新程序。 -In 2011, GNOME completely changed gears with a new desktop concept. GNOME 3 aimed to create a simpler, more streamlined desktop experience, allowing users to focus on what they were working on. The taskbar disappeared, replaced by a black status bar at the top of the screen that included volume and network controls, displayed the time and battery status, and allowed users to launch new programs via a redesigned menu. - -The menu was the most dramatic change. Clicking the Activities menu or moving the mouse into the Activities "hot corner" showed all open applications as separate windows. Users could also click an Applications tab from the Overview to start a new program. The Overview also provided an integrated search function. +菜单的变化最具最戏剧性。单击“活动”菜单或将鼠标移到“活动”的“热角”,会将所有打开的应用程序显示为单独的窗口。用户还可以从概述中单击“应用程序”选项卡以启动新程序。“概述”还提供了内部集成的搜索功能。 ![GNOME 3.0][15] -GNOME 3.0 showing the GNOME Pictures application - -Image credit: GNOME +*GNOME 3.0,显示 GNOME 图片应用程序。图片来源:GNOME* ![GNOME 3.0][16] -GNOME 3.0 showing the Activities Overview +*GNOME 3.0,显示活动概述。图片来源:GNOME* -Image credit: GNOME +### 你的桌面之选 -### Your choice of desktop +拥有两个 Linux 桌面意味着用户有很多选择。有些人喜欢 KDE,而另一些人喜欢 GNOME。没关系,选择最适合你的桌面就行。 -Having two desktops for Linux means users have great choice. Some prefer KDE and others like GNOME. That's fine. Pick the desktop that best suits you. +可以肯定的是,KDE 和 GNOME 都有拥护者和批评者。例如,GNOME 放弃任务栏以支持“活动概述”而受到了很多批评。也许最著名的批评家是 Linus Torvalds,他在 2011 年[大声斥责并抛弃了][17]新的 GNOME,将其视为“邪恶的烂摊子”,然后在两年后[回到了][18] GNOME。 -To be sure, both KDE and GNOME have fans and detractors. For example, GNOME received a fair bit of criticism for dropping the taskbar in favor of the Activities Overview. Perhaps the most well-known critic was Linus Torvalds, who [loudly denounced and abandoned][17] the new GNOME as an "unholy mess" in 2011—before [moving back][18] to GNOME two years later. +其他人也对 GNOME 3 提出了类似的批评,以至于一些开发人员复刻 GNOME 2 的源代码来创建 MATE 桌面。MATE(是MATE 高级传统环境MATE Advanced Traditional Environment的递归缩写)延续了 GNOME 2 的传统任务栏界面。 -Others have made similar criticisms of GNOME 3, to the point that some developers forked the GNOME 2 source code to create the MATE desktop. MATE (which stands for MATE Advanced Traditional Environment) continues the traditional taskbar interface from GNOME 2. - -Regardless, there's no doubt that the two most popular Linux desktops today are KDE and GNOME. Their current versions are both very mature and packed with features. Both KDE 5.16 (2019) and GNOME 3.32 (2019) try to simplify and streamline the Linux desktop experience—but in different ways. GNOME 3.32 continues to aim for a minimal appearance, removing all distracting user interface elements so users can focus on their applications and work. KDE 5.16 takes a more familiar approach with the taskbar but has added other visual improvements and flair, especially around improved widget handling and icons. +无论如何,毫无疑问当今两个最受欢迎的 Linux 桌面是 KDE 和 GNOME。它们的当前版本非常成熟,并且具有很多功能。 KDE 5.16(2019)和 GNOME 3.32(2019)都试图简化和精简 Linux 桌面体验,但是方式有所不同。GNOME 3.32 继续致力于极简外观,删除所有分散用户注意力的用户界面元素,以便用户可以专注于其应用程序和工作。 KDE 5.16 在任务栏上采用了更为熟悉的方法,但是增加了其他视觉上的改进和特质,尤其是围绕改进的小部件处理和图标。 ![KDE 5.16 Plasma][19] -KDE 5.16 Plasma - -Image credit: KDE +*KDE 5.16 Plasma。图片来源:KDE* ![GNOME 3.32][20] -GNOME 3.32 +*GNOME 3.32。图片来源:GNOME* -Image credit: GNOME +同时,你也不会完全失去它们之间的兼容性。每个主要的 Linux 发行版都提供兼容性库,因此你可以在运行 GNOME 时从 KDE 运行应用程序。在当你实际要使用的应用程序是为其他桌面环境编写的时候,这非常有用。 你可以在 GNOME 上运行 KDE 应用程序,反之亦然。 -At the same time, you don't completely lose out on compatibility. Every major Linux distribution provides compatibility libraries, so you can run applications from, say, KDE while running GNOME. This is immensely useful when an application you really want to use is written for the other desktop environment—not a problem; you can run KDE applications on GNOME and vice versa. - -I don't see this changing anytime soon. And I think that's a good thing. Healthy competition between KDE and GNOME has allowed developers in both camps to push the envelope. Whether you use KDE or GNOME, you have a modern desktop with great integration. And above all, this means Linux has the best feature in free software: choice. +我认为这种态势不会很快改变,这是一件好事。KDE 和 GNOME 之间的良性竞争使这两个阵营的开发人员都可以避免故步自封。无论你使用 KDE 还是 GNOME,你都将拥有一个集成度很高的现代化桌面。最重要的是,这意味着 Linux 拥有自由软件的最佳特性:选择。 -------------------------------------------------------------------------------- @@ -167,7 +155,7 @@ via: https://opensource.com/article/19/8/how-linux-desktop-grown 作者:[Jim Hall][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[wxy](https://github.com/wxy) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From ba1161b9c60df4998c16d4ce3dd9b9bf717e0425 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 27 Mar 2020 08:34:48 +0800 Subject: [PATCH 019/218] translated --- ... Date, New Features and Everything Else.md | 56 +++++------ ... Date, New Features and Everything Else.md | 94 +++++++++++++++++++ 2 files changed, 122 insertions(+), 28 deletions(-) create mode 100644 translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md diff --git a/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md index c70c034a22..726e0d159f 100644 --- a/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md +++ b/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md @@ -7,62 +7,62 @@ [#]: via: (https://itsfoss.com/fedora-32/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -Fedora 32 Release Date, New Features and Everything Else +Fedora 32 发布日期、新功能和其他 ====== -Fedora 32 should be releasing at the end of April, around the same time as the [Ubuntu 20.04 LTS release][1]. +Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 同时在 4 月底发布。 -Since we are covering the Ubuntu 20.04 release in detail, we thought of doing the same for our Fedora fans here. +由于我们详细介绍了 Ubuntu 20.04,因此我们考虑在这里为 Fedora 粉丝做同样的事情。 -In this article, I am going to highlight the new features coming to Fedora 32. I’ll update this article as the development progresses further. +在本文中,我将重点介绍 Fedora 32 的新功能。随着开发的进行,我将对本文进行更新。 -### New features in Fedora 32 +### Fedora 32 的新功能 ![][2] -#### EarlyOOM Enabled +#### EarlyOOM 已启用 -With this release, [EarlyOOM][3] comes enabled by default. To give you a background, EarlyOOM lets users to easily recover their systems from a low-memory situation with heavy [swap][4] usage. +在此版本中,默认启用 [EarlyOOM][3]。提供一下背景知识,EarlyOOM 使用户可以通过大量使用 [swap][4] 轻松地从内存不足的情况中恢复系统。 -It is worth noting that it is applicable to the Fedora 32 Beta Workstation edition. +值得注意的是,它适用于 Fedora 32 Beta 工作站版本。 -#### GNOME 3.36 Added +#### 添加了 GNOME 3.36 -The new Fedora 32 Workstation also comes included with the new [GNOME 3.36][5]. +新的 Fedora 32 工作站版也包含了新的 [GNOME 3.36][5]。 -Not just limited to Fedora 32 Beta Workstation – but it has also been added to the daily build of [Ubuntu 20.04 LTS][1]. +不仅限于 Fedora 32 Beta 工作站版,[Ubuntu 20.04 LTS][1] 的每日构建版中也添加了它。 -Of course, the improvements in GNOME 3.36 translates to Fedora’s latest release as well – providing a faster and better experience, overall. +当然,GNOME 3.36 中的改进也进入了 Fedora 的最新版本,总体上提供了更快,更好的体验。 -So, you’ll get the new lock screen, the do not disturb feature and everything else that comes with GNOME 3.36. +因此,你将获得新的锁定屏幕,请勿打扰以及 GNOME 3.36 附带的所有其他功能。 -#### Package Updates +#### 软件包更新 -Fedora 32 release also updates a lot of important packages that include Ruby, Perl, and Python. It also features the latest version 10 of the [GNU Compiler Collection][6] (GCC). +Fedora 32 版本还更新了许多重要的软件包,包括 Ruby、Perl 和 Python。它还有 [GNU 编译器集合][6](GCC)的最新版本 10。 -#### Other Changes +#### 其他更改 -In addition to the key highlights, there’s a lot of things that have changed, improved, or fixed. You can take a detailed look at its [changelog][7] to know more about what has changed. +除了主要亮点之外,还有很多更改、改进或修复。你可以详细查看它的[更新日志][7]来了解有关更多信息。 -### Download Fedora 32 (development version) +### 下载Fedora 32(开发版) -Fedora 32 is still under development. The beta version has been released and you may test it on a spare system or in virtual machine. **I would not advise you to use it on your main system before the final release**. There’s an official [list of know bugs][8] for the current release, you can refer to that as well. +Fedora 32 仍在开发中。Beta 版已经发布,你可以在空闲系统或虚拟机上对其进行测试。**我不建议你在最终版本之前在主系统上使用它**。当前版本有一个官方的[已知 bug 列表] [8],你也可以参考。 -In the [official announcement][9], they mentioned the availability of both **Fedora 32 beta workstation** and the **server** along with other popular variants. +在[官方公告][9]中,他们提到了 **Fedora 32 beta 工作站版**和**服务器版**以及其他流行版本的可用性。 -To get the Workstation and the Server edition, you have to visit the official download page for [Fedora Workstation][10] and [Fedora Server][11] (depending on what you want). +要获取工作站和服务器版本,你必须访问 [Fedora Workstation][10] 和 [Fedora Server][11] 的官方下载页面(取决于你的需求)。 ![Fedora Download Beta][12] -Once, you do that, just look for a release tagged as “**Beta!**” as shown in the image above and start downloading it. For other variants, click on the links below to head to their respective download pages: +打开后,你只需查找如上图所示的标记为 “**Beta!**” 的发行版,然后开始下载。对于其他变体版本,请单击下面的链接以转到各自的下载页面: - * [Fedora 32 Beta Spins][13] - * [Fedora 32 Beta Labs][14] - * [Fedora 32 Beta ARM][15] +* [Fedora 32 Beta Spins][13] +* [Fedora 32 Beta Labs][14] +* [Fedora 32 Beta ARM][15] -Have you noticed any other new feature in Fedora 32? What features you would like to see here? Feel free to leave a comment below. +你是否注意到 Fedora 32 中的其他新功能?你想在这里看到哪些功能?请随时在下面发表评论。 -------------------------------------------------------------------------------- @@ -70,7 +70,7 @@ via: https://itsfoss.com/fedora-32/ 作者:[Ankush Das][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -91,4 +91,4 @@ via: https://itsfoss.com/fedora-32/ [12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-download-beta.jpg?ssl=1 [13]: https://spins.fedoraproject.org/prerelease [14]: https://labs.fedoraproject.org/prerelease -[15]: https://arm.fedoraproject.org/prerelease +[15]: https://arm.fedoraproject.org/prerelease \ No newline at end of file diff --git a/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md new file mode 100644 index 0000000000..726e0d159f --- /dev/null +++ b/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md @@ -0,0 +1,94 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Fedora 32 Release Date, New Features and Everything Else) +[#]: via: (https://itsfoss.com/fedora-32/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Fedora 32 发布日期、新功能和其他 +====== + +Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 同时在 4 月底发布。 + +由于我们详细介绍了 Ubuntu 20.04,因此我们考虑在这里为 Fedora 粉丝做同样的事情。 + +在本文中,我将重点介绍 Fedora 32 的新功能。随着开发的进行,我将对本文进行更新。 + +### Fedora 32 的新功能 + +![][2] + +#### EarlyOOM 已启用 + +在此版本中,默认启用 [EarlyOOM][3]。提供一下背景知识,EarlyOOM 使用户可以通过大量使用 [swap][4] 轻松地从内存不足的情况中恢复系统。 + +值得注意的是,它适用于 Fedora 32 Beta 工作站版本。 + +#### 添加了 GNOME 3.36 + +新的 Fedora 32 工作站版也包含了新的 [GNOME 3.36][5]。 + +不仅限于 Fedora 32 Beta 工作站版,[Ubuntu 20.04 LTS][1] 的每日构建版中也添加了它。 + +当然,GNOME 3.36 中的改进也进入了 Fedora 的最新版本,总体上提供了更快,更好的体验。 + +因此,你将获得新的锁定屏幕,请勿打扰以及 GNOME 3.36 附带的所有其他功能。 + +#### 软件包更新 + +Fedora 32 版本还更新了许多重要的软件包,包括 Ruby、Perl 和 Python。它还有 [GNU 编译器集合][6](GCC)的最新版本 10。 + +#### 其他更改 + +除了主要亮点之外,还有很多更改、改进或修复。你可以详细查看它的[更新日志][7]来了解有关更多信息。 + +### 下载Fedora 32(开发版) + +Fedora 32 仍在开发中。Beta 版已经发布,你可以在空闲系统或虚拟机上对其进行测试。**我不建议你在最终版本之前在主系统上使用它**。当前版本有一个官方的[已知 bug 列表] [8],你也可以参考。 + +在[官方公告][9]中,他们提到了 **Fedora 32 beta 工作站版**和**服务器版**以及其他流行版本的可用性。 + +要获取工作站和服务器版本,你必须访问 [Fedora Workstation][10] 和 [Fedora Server][11] 的官方下载页面(取决于你的需求)。 + +![Fedora Download Beta][12] + +打开后,你只需查找如上图所示的标记为 “**Beta!**” 的发行版,然后开始下载。对于其他变体版本,请单击下面的链接以转到各自的下载页面: + +* [Fedora 32 Beta Spins][13] +* [Fedora 32 Beta Labs][14] +* [Fedora 32 Beta ARM][15] + + + +你是否注意到 Fedora 32 中的其他新功能?你想在这里看到哪些功能?请随时在下面发表评论。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/fedora-32/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/ubuntu-20-04-release-features/ +[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/11/update_fedora.jpg?ssl=1 +[3]: https://fedoraproject.org/wiki/Changes/EnableEarlyoom#Enable_EarlyOOM +[4]: https://itsfoss.com/swap-size/ +[5]: https://itsfoss.com/gnome-3-36-release/ +[6]: https://gcc.gnu.org/ +[7]: https://fedoraproject.org/wiki/Releases/32/ChangeSet +[8]: https://fedoraproject.org/wiki/Common_F32_bugs +[9]: https://fedoramagazine.org/announcing-the-release-of-fedora-32-beta/ +[10]: https://getfedora.org/workstation/download/ +[11]: https://getfedora.org/server/download/ +[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-download-beta.jpg?ssl=1 +[13]: https://spins.fedoraproject.org/prerelease +[14]: https://labs.fedoraproject.org/prerelease +[15]: https://arm.fedoraproject.org/prerelease \ No newline at end of file From d37ec0c92936542b1ec140440490eb9a0762f249 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 27 Mar 2020 08:36:07 +0800 Subject: [PATCH 020/218] translated --- ... Date, New Features and Everything Else.md | 94 ------------------- 1 file changed, 94 deletions(-) delete mode 100644 sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md diff --git a/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md deleted file mode 100644 index 726e0d159f..0000000000 --- a/sources/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md +++ /dev/null @@ -1,94 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora 32 Release Date, New Features and Everything Else) -[#]: via: (https://itsfoss.com/fedora-32/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Fedora 32 发布日期、新功能和其他 -====== - -Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 同时在 4 月底发布。 - -由于我们详细介绍了 Ubuntu 20.04,因此我们考虑在这里为 Fedora 粉丝做同样的事情。 - -在本文中,我将重点介绍 Fedora 32 的新功能。随着开发的进行,我将对本文进行更新。 - -### Fedora 32 的新功能 - -![][2] - -#### EarlyOOM 已启用 - -在此版本中,默认启用 [EarlyOOM][3]。提供一下背景知识,EarlyOOM 使用户可以通过大量使用 [swap][4] 轻松地从内存不足的情况中恢复系统。 - -值得注意的是,它适用于 Fedora 32 Beta 工作站版本。 - -#### 添加了 GNOME 3.36 - -新的 Fedora 32 工作站版也包含了新的 [GNOME 3.36][5]。 - -不仅限于 Fedora 32 Beta 工作站版,[Ubuntu 20.04 LTS][1] 的每日构建版中也添加了它。 - -当然,GNOME 3.36 中的改进也进入了 Fedora 的最新版本,总体上提供了更快,更好的体验。 - -因此,你将获得新的锁定屏幕,请勿打扰以及 GNOME 3.36 附带的所有其他功能。 - -#### 软件包更新 - -Fedora 32 版本还更新了许多重要的软件包,包括 Ruby、Perl 和 Python。它还有 [GNU 编译器集合][6](GCC)的最新版本 10。 - -#### 其他更改 - -除了主要亮点之外,还有很多更改、改进或修复。你可以详细查看它的[更新日志][7]来了解有关更多信息。 - -### 下载Fedora 32(开发版) - -Fedora 32 仍在开发中。Beta 版已经发布,你可以在空闲系统或虚拟机上对其进行测试。**我不建议你在最终版本之前在主系统上使用它**。当前版本有一个官方的[已知 bug 列表] [8],你也可以参考。 - -在[官方公告][9]中,他们提到了 **Fedora 32 beta 工作站版**和**服务器版**以及其他流行版本的可用性。 - -要获取工作站和服务器版本,你必须访问 [Fedora Workstation][10] 和 [Fedora Server][11] 的官方下载页面(取决于你的需求)。 - -![Fedora Download Beta][12] - -打开后,你只需查找如上图所示的标记为 “**Beta!**” 的发行版,然后开始下载。对于其他变体版本,请单击下面的链接以转到各自的下载页面: - -* [Fedora 32 Beta Spins][13] -* [Fedora 32 Beta Labs][14] -* [Fedora 32 Beta ARM][15] - - - -你是否注意到 Fedora 32 中的其他新功能?你想在这里看到哪些功能?请随时在下面发表评论。 - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/fedora-32/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/ubuntu-20-04-release-features/ -[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/11/update_fedora.jpg?ssl=1 -[3]: https://fedoraproject.org/wiki/Changes/EnableEarlyoom#Enable_EarlyOOM -[4]: https://itsfoss.com/swap-size/ -[5]: https://itsfoss.com/gnome-3-36-release/ -[6]: https://gcc.gnu.org/ -[7]: https://fedoraproject.org/wiki/Releases/32/ChangeSet -[8]: https://fedoraproject.org/wiki/Common_F32_bugs -[9]: https://fedoramagazine.org/announcing-the-release-of-fedora-32-beta/ -[10]: https://getfedora.org/workstation/download/ -[11]: https://getfedora.org/server/download/ -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-download-beta.jpg?ssl=1 -[13]: https://spins.fedoraproject.org/prerelease -[14]: https://labs.fedoraproject.org/prerelease -[15]: https://arm.fedoraproject.org/prerelease \ No newline at end of file From 1dafba12d5c53396ccfa7248d91acd49e93bb5ac Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 27 Mar 2020 08:41:55 +0800 Subject: [PATCH 021/218] translating --- sources/tech/20200309 Fish - A Friendly Interactive Shell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200309 Fish - A Friendly Interactive Shell.md b/sources/tech/20200309 Fish - A Friendly Interactive Shell.md index 9e892e04ff..b091fea171 100644 --- a/sources/tech/20200309 Fish - A Friendly Interactive Shell.md +++ b/sources/tech/20200309 Fish - A Friendly Interactive Shell.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 0ebcf998a7ecbc5dabdb6550061d5f3c4e06e197 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 10:21:51 +0800 Subject: [PATCH 022/218] PRF @geekpi --- ...and configuring password aging on Linux.md | 46 ++++++++----------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/translated/tech/20200317 Viewing and configuring password aging on Linux.md b/translated/tech/20200317 Viewing and configuring password aging on Linux.md index f02e2399d9..31972a4025 100644 --- a/translated/tech/20200317 Viewing and configuring password aging on Linux.md +++ b/translated/tech/20200317 Viewing and configuring password aging on Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Viewing and configuring password aging on Linux) @@ -9,17 +9,18 @@ 在 Linux 上查看和配置密码时效 ====== -使用正确的设置,可以强制 Linux 用户定期更改密码。以下是查看密码时效以及如何更改其中设置的方法。。 -可以将 Linux 系统上的用户密码配置为永久或设置过期,以让人们必须定期重置它们。出于安全原因,通常认为定期更改密码是一种好习惯,但默认未配置。 +![](https://images.idgesg.net/images/article/2019/09/cso_nw_user_id_password_credentials_authentication_by_bluebay2014_gettyimages-924698706_2400x1600-100811223-large.jpg) -要查看和修改密码时效,你需要熟悉几个重要的命令:**chage** 命令及其 **-l ** 选项,以及 **passwd**命令及其 **-S** 选项。本文会介绍这些命令,还有其他一些 **chage** 命令来配置密码时效。 +> 使用正确的设置,可以强制 Linux 用户定期更改密码。以下是查看密码时效以及如何更改其中设置的方法。 -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] +可以将 Linux 系统上的用户密码配置为永久或设置过期时间,以让人们必须定期重置它们。出于安全原因,通常认为定期更改密码是一种好习惯,但默认并未配置。 + +要查看和修改密码时效,你需要熟悉几个重要的命令:`chage` 命令及其 `-l` 选项,以及 `passwd` 命令及其 `-S` 选项。本文会介绍这些命令,还有其他一些 `chage` 命令选项来配置密码时效。 ### 查看密码时效设置 -确定某个特定帐户是否已设置密码时效的方法是使用如下 **chage** 命令。请注意,除了你自己的帐户以外,其他任何帐户都需要 root 权限。请注意下面的密码到期日期。 +确定某个特定帐户是否已设置密码时效的方法是使用如下 `chage` 命令。请注意,除了你自己的帐户以外,其他任何帐户都需要 root 权限。请注意下面的密码到期日期。 ``` $ sudo chage -l dory @@ -45,7 +46,7 @@ Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 ``` -你也可以使用 **passwd -S** 命令查看某些信息,但是你需要知道输出中的每个字段代表什么: +你也可以使用 `passwd -S` 命令查看某些信息,但是你需要知道输出中的每个字段代表什么: ``` dory$ passwd -S @@ -54,33 +55,29 @@ dory P 03/15/2020 10 90 14 -1 这里的七个字段代表: - * 1 – 用户名 -  * 2 - 帐户状态(L=锁定,NP=无密码,P=可用密码) -  * 3 –上次密码更改的日期 -  * 4 – 可更改最低时效(如果没有这么多天,则不能更改密码) -  * 5 – 最长时效(这些天后,密码必须更改) -  * 6 – 密码过期前提前警告的天数 -  * 7 – 密码过期后锁定之前的天数(设为无效) +* 1 – 用户名 +* 2 - 帐户状态(`L` = 锁定,`NP` = 无密码,`P` = 可用密码) +* 3 – 上次密码更改的日期 +* 4 – 可更改最低时效(如果没有这么多天,则不能更改密码) +* 5 – 最长时效(这些天后,密码必须更改) +* 6 – 密码过期前提前警告的天数 +* 7 – 密码过期后锁定之前的天数(设为无效) - - -需要注意的一件事是,**chage** 命令不会显示帐户是否被锁定;它仅显示密码时效设置。另一方面,**passwd -S** 命令将告诉你密码被锁定的时间。在此例中,请注意帐户状态为 “L”: - -[][2] +需要注意的一件事是,`chage` 命令不会显示帐户是否被锁定;它仅显示密码时效设置。另一方面,`passwd -S` 命令将告诉你密码被锁定的时间。在此例中,请注意帐户状态为 `L`: ``` $ sudo passwd -S dorothy dorothy L 07/09/2019 0 99999 7 10 ``` -该锁定在 **/etc/shadow** 文件中生效,通常会将包含密码的“哈希”字段变为 “!”。 +通过将 `/etc/shadow` 文件中通常包含密码的“哈希”字段变为 `!`,从而达成锁定的效果。 ``` $ sudo grep dorothy /etc/shadow dorothy:!:18086:0:99999:7:10:: <== ``` -帐户被锁定的事实在 **chage** 输出中并不明显: +帐户被锁定的事实在 `chage` 输出中并不明显: ``` $ sudo chage -l dorothy @@ -109,8 +106,7 @@ Maximum number of days between password change : 90 <== Number of days of warning before password expires : 7 ``` -你还可以使用 **-E** 选项为帐户设置特定的到期日期。 - +你还可以使用 `-E` 选项为帐户设置特定的到期日期。 ``` $ sudo chage -E 2020-11-11 tadpole @@ -126,8 +122,6 @@ Number of days of warning before password expires : 7 密码时效可能是一个重要的选择,只要它不鼓励用户使用过于简单的密码或以不安全的方式写下来即可。有关控制密码字符(例如,大小写字母、数字等的组合)的更多信息,请参考这篇关于[密码复杂度][3]的文章。 -加入 [Facebook][4] 和 [LinkedIn][5] 上的 Network World 社区,评论热门主题。 - -------------------------------------------------------------------------------- via: https://www.networkworld.com/article/3532815/viewing-and-configuring-password-aging-on-linux.html @@ -135,7 +129,7 @@ via: https://www.networkworld.com/article/3532815/viewing-and-configuring-passwo 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 970a63965f7dc0c6e3caaf43a8afa18850c699ab Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 10:22:31 +0800 Subject: [PATCH 023/218] PUB @geekpi https://linux.cn/article-12041-1.html --- ...0200317 Viewing and configuring password aging on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200317 Viewing and configuring password aging on Linux.md (98%) diff --git a/translated/tech/20200317 Viewing and configuring password aging on Linux.md b/published/20200317 Viewing and configuring password aging on Linux.md similarity index 98% rename from translated/tech/20200317 Viewing and configuring password aging on Linux.md rename to published/20200317 Viewing and configuring password aging on Linux.md index 31972a4025..a6699b8878 100644 --- a/translated/tech/20200317 Viewing and configuring password aging on Linux.md +++ b/published/20200317 Viewing and configuring password aging on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12041-1.html) [#]: subject: (Viewing and configuring password aging on Linux) [#]: via: (https://www.networkworld.com/article/3532815/viewing-and-configuring-password-aging-on-linux.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From a48e79139ec99220541895f21840b72d78ecaf63 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 11:10:25 +0800 Subject: [PATCH 024/218] PRF @wxy --- ...em Mini- A Privacy-First Linux-Based Mini PC.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md b/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md index ab437decd1..d52a886db5 100644 --- a/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md +++ b/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md @@ -1,6 +1,6 @@ [#]: collector: "lujun9972" [#]: translator: "wxy" -[#]: reviewer: " " +[#]: reviewer: "wxy" [#]: publisher: " " [#]: url: " " [#]: subject: "Purism Librem Mini: A Privacy-First Linux-Based Mini PC" @@ -12,7 +12,7 @@ Purism Librem Mini:隐私为重的基于 Linux 的微型个人电脑 > Purism 推出了一款外形小巧的微型个人电脑 “Librem Mini”,旨在提供隐私和安全性。让我们来看看它的细节。 -[Purism][1] 通常以专注于增强用户的数字隐私和安全性的服务或产品而闻名。 +[Purism][1] 以专注于增强用户的数字隐私和安全性的服务或产品而闻名。 Purism 自诩为“[社会目地公司][2]Social Purpose Company”,旨在为社会造福,并在这方面提供了多种服务和产品。 @@ -24,7 +24,7 @@ Purism 自诩为“[社会目地公司][2]Social Purpose Company< [Purism][1] 的 [Librem Mini][8] 旨在成为小型、轻便且功能强大的微型个人电脑。 -当然,已经有很多[基于 Linux 的微型个人电脑][9]了,但是 Librem Mini 专门关注于其用户的隐私和安全性。它随附 [PureOS][5]、[Pureboot][10] 和 [Librem Key][11] 支持。 +当然,已经有很多[基于 Linux 的微型个人电脑][9]了,但是 Librem Mini 专门关注于其用户的隐私和安全性。它随附了 [PureOS][5]、[Pureboot][10] 和 [Librem Key][11] 支持。 基本配置将以 699 美元的价格提供。这比大多数其他微型个人电脑要贵。但是,与大多数其他产品不同,Librem Mini 并不是又一个 [Intel NUC][12]。 那么,它提供了什么呢? @@ -51,9 +51,9 @@ Purism 自诩为“[社会目地公司][2]Social Purpose Company< * 重量:1 公斤(2.2 磅) * 尺寸:12.8 厘米(5.0 英寸) x 12.8 厘米(5.0 英寸) x 3.8 厘米(1.5 英寸) -我不知道他们为什么决定采用 Intel 的 8 代处理器,而市场上已经出现了 10 代处理器。也许是因为 Whiskey Lake 还是第 8 代处理器的最新产品。 +我不知道他们为什么决定采用 Intel 的 8 代处理器,而市场上已经出现了 10 代处理器。也许是因为 Whiskey Lake 是第 8 代处理器的最新产品。 -但是,是的,他们已禁用并中止了 Intel 的管理引擎,所以仍然可以采用这个产品。 +是的,他们已禁用并中止了 Intel 的管理引擎,所以仍然可以采用这个产品。 除此之外,你还应该记住,这款微型个人电脑在提供全盘加密的同时具有检测硬件和软件篡改的功能。 @@ -63,7 +63,7 @@ Purism 自诩为“[社会目地公司][2]Social Purpose Company< ![Librem Mini from the back][14] -具有 8 Gigs RAM **和** 256 GB SSD 的基本配置将需要花费 $699。而且,如果你想要最强大的配置,其价格轻松就达到了 $3000。 +具有 8 Gigs RAM 和 256 GB SSD 的基本配置将需要花费 $699。而且,如果你想要最强大的配置,其价格轻松就升高到 $3000。 他们的预定销售额目标是 $50,000,并且他们计划在达到预定目标后一个月内开始发货。 @@ -84,7 +84,7 @@ via: https://itsfoss.com/purism-librem-mini/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 1e9bc054ed1534123ca3cf93e4a51fa4e2e5d4cf Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 11:11:03 +0800 Subject: [PATCH 025/218] PUB @wxy https://linux.cn/article-12042-1.html --- ...Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md (98%) diff --git a/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md b/published/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md similarity index 98% rename from translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md rename to published/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md index d52a886db5..3df6585958 100644 --- a/translated/tech/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md +++ b/published/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md @@ -1,8 +1,8 @@ [#]: collector: "lujun9972" [#]: translator: "wxy" [#]: reviewer: "wxy" -[#]: publisher: " " -[#]: url: " " +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-12042-1.html" [#]: subject: "Purism Librem Mini: A Privacy-First Linux-Based Mini PC" [#]: via: "https://itsfoss.com/purism-librem-mini/" [#]: author: "Ankush Das https://itsfoss.com/author/ankush/" From d8f3c6eb7252eb223a416e3fd72251767dfe4f3e Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Fri, 27 Mar 2020 21:49:37 +0800 Subject: [PATCH 026/218] hankchow translated --- ...n Kubernetes on a Raspberry Pi with k3s.md | 203 ------------------ ...n Kubernetes on a Raspberry Pi with k3s.md | 202 +++++++++++++++++ 2 files changed, 202 insertions(+), 203 deletions(-) delete mode 100644 sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md create mode 100644 translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md diff --git a/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md b/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md deleted file mode 100644 index 9bb514f898..0000000000 --- a/sources/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md +++ /dev/null @@ -1,203 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run Kubernetes on a Raspberry Pi with k3s) -[#]: via: (https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s) -[#]: author: (Lee Carpenter https://opensource.com/users/carpie) - -Run Kubernetes on a Raspberry Pi with k3s -====== -Create your own three-node Kubernetes cluster with these easy-to-follow -instructions. -![A ship wheel with someone steering][1] - -For a long time, I've been interested in building a [Kubernetes][2] cluster out of a stack of inexpensive Raspberry Pis. Following along with various tutorials on the web, I was able to get Kubernetes installed and working in a three Pi cluster. However, the RAM and CPU requirements on the master node overwhelmed my Pi. This caused poor performance when doing various Kubernetes tasks. It also made an in-place upgrade of Kubernetes impossible. - -As a result, I was very excited to see the [k3s project][3]. K3s is billed as a lightweight Kubernetes for use in resource-constrained environments. It is also optimized for ARM processors. This makes running a Raspberry Pi-based Kubernetes cluster much more feasible. In fact, we are going to create one in this article. - -### Materials needed - -To create the Kubernetes cluster described in this article, we are going to need: - - * At least one Raspberry Pi (with SD card and power adapter) - * Ethernet cables - * A switch or router to connect all our Pis together - - - -We will be installing k3s from the internet, so they will need to be able to access the internet through the router. - -### An overview of our cluster - -For this cluster, we are going to use three Raspberry Pis. The first we'll name **kmaster** and assign a static IP of 192.168.0.50 (since our local network is 192.168.0.0/24). The first worker node (the second Pi), we'll name **knode1** and assign an IP of 192.168.0.51. The final worker node we'll name **knode2** and assign an IP of 192.168.0.52. - -Obviously, if you have a different network layout, you may use any network/IPs you have available. Just substitute your own values anywhere IPs are used in this article. - -So that we don't have to keep referring to each node by IP, let's add their host names to our **/etc/hosts** file on our PC. - - -``` -echo -e "192.168.0.50\tkmaster" | sudo tee -a /etc/hosts -echo -e "192.168.0.51\tknode1" | sudo tee -a /etc/hosts -echo -e "192.168.0.52\tknode2" | sudo tee -a /etc/hosts -``` - -### Installing the master node - -Now we're ready to install the master node. The first step is to install the latest Raspbian image. I am not going to explain that here, but I have a [detailed article][4] on how to do this if you need it. So please go install Raspbian, enable the SSH server, set the hostname to **kmaster**, and assign a static IP of 192.168.0.50. - -Now that Raspbian is installed on the master node, let's boot our master Pi and **ssh** into it: - - -``` -`ssh pi@kmaster` -``` - -Now we're ready to install **k3s**. On the master Pi, run: - - -``` -`curl -sfL https://get.k3s.io | sh -` -``` - -When the command finishes, we already have a single node cluster set up and running! Let's check it out. Still on the Pi, run: - - -``` -`sudo kubectl get nodes` -``` - -You should see something similar to: - - -``` -NAME     STATUS   ROLES    AGE    VERSION -kmaster  Ready    master   2m13s  v1.14.3-k3s.1 -``` - -### Extracting the join token - -We want to add a couple of worker nodes. When installing **k3s** on those nodes we will need a join token. The join token exists on the master node's filesystem. Let's copy that and save it somewhere we can get to it later: - - -``` -`sudo cat /var/lib/rancher/k3s/server/node-token` -``` - -### Installing the worker nodes - -Grab some SD cards for the two worker nodes and install Raspbian on each. For one, set the hostname to **knode1** and assign an IP of 192.168.0.51. For the other, set the hostname to **knode2** and assign an IP of 192.168.0.52. Now, let's install **k3s**. - -Boot your first worker node and **ssh** into it: - - -``` -`ssh pi@knode1` -``` - -On the Pi, we'll install **k3s** as before, but we will give the installer extra parameters to let it know that we are installing a worker node and that we'd like to join the existing cluster: - - -``` -curl -sfL | K3S_URL= \ -K3S_TOKEN=join_token_we_copied_earlier sh - -``` - -Replace **join_token_we_copied_earlier** with the token from the "Extracting the join token" section. Repeat these steps for **knode2**. - -### Access the cluster from our PC - -It'd be annoying to have to **ssh** to the master node to run **kubectl** anytime we wanted to inspect or modify our cluster. So, we want to put **kubectl** on our PC. But first, let's get the configuration information we need from our master node. **Ssh** into **kmaster** and run: - - -``` -`sudo cat /etc/rancher/k3s/k3s.yaml` -``` - -Copy this configuration information and return to your PC. Make a directory for the config: - - -``` -`mkdir ~/.kube` -``` - -Save the copied configuration as **~/.kube/config**. Now edit the file and change the line: - - -``` -`server: https://localhost:6443` -``` - -to be: - - -``` -`server: https://kmaster:6443` -``` - -For security purpose, limit the file's read/write permissions to just yourself: - - -``` -`chmod 600 ~/.kube/config` -``` - -Now let's install **kubectl** on our PC (if you don't already have it). The Kubernetes site has [instructions][5] for doing this for various platforms. Since I'm running Linux Mint, an Ubuntu derivative, I'll show the Ubuntu instructions here: - - -``` -sudo apt update && sudo apt install -y apt-transport-https -curl -s | sudo apt-key add - -echo "deb kubernetes-xenial main" | \ -sudo tee -a /etc/apt/sources.list.d/kubernetes.list -sudo apt update && sudo apt install kubectl -``` - -If you're not familiar, the above commands add a Debian repository for Kubernetes, grab its GPG key for security, and then update the list of packages and install **kubectl**. Now, we'll get notifications of any updates for **kubectl** through the standard software update mechanism. - -Now we can check out our cluster from our PC! Run: - - -``` -`kubectl get nodes` -``` - -You should see something like: - - -``` -NAME     STATUS  ROLES   AGE   VERSION -kmaster  Ready   master  12m   v1.14.3-k3s.1 -knode1   Ready   worker  103s  v1.14.3-k3s.1 -knode1   Ready   worker  103s  v1.14.3-k3s.1 -``` - -Congratulations! You have a working 3-node Kubernetes cluster! - -### The k3s bonus - -If you run **kubectl get pods --all-namespaces**, you will see some extra pods for [Traefik][6]. Traefik is a reverse proxy and load balancer that we can use to direct traffic into our cluster from a single entry point. Kubernetes allows for this but doesn't provide such a service directly. Having Traefik installed by default is a nice touch by Rancher Labs. This makes a default **k3s** install fully complete and immediately usable! - -We're going to explore using Traefik through Kubernetes **ingress** rules and deploy all kinds of goodies to our cluster in future articles. Stay tuned! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s - -作者:[Lee Carpenter][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/carpie -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_wheel_gear_devops_kubernetes.png?itok=xm4a74Kv (A ship wheel with someone steering) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://k3s.io/ -[4]: https://carpie.net/articles/headless-pi-with-static-ip-wired-edition -[5]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ -[6]: https://traefik.io/ diff --git a/translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md b/translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md new file mode 100644 index 0000000000..e0b3ad324c --- /dev/null +++ b/translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md @@ -0,0 +1,202 @@ +[#]: collector: (lujun9972) +[#]: translator: (HankChow) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Run Kubernetes on a Raspberry Pi with k3s) +[#]: via: (https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s) +[#]: author: (Lee Carpenter https://opensource.com/users/carpie) + +使用 K3s 在树莓派上运行 Kubernetes 集群 +====== +> 跟随接下来的介绍,自己搭建一个三节点的 Kubernetes 集群。 + +![A ship wheel with someone steering][1] + +我对在树莓派上搭建 [Kubernetes][2] 集群已经感兴趣很长时间了,只要照着网上的教程,我可以在由三个树莓派组成的集群中搭建一套 Kubernetes 并正常运行。但在这种情况下,主节点上的内存和 CPU 资源捉襟见肘,执行 Kubernetes 任务的时候往往性能不佳,想要升级 Kubernetes 就更不可能了。 + +这个时候,我发现了 [K3s][3] 这个项目。K3s 誉为可用于资源受限环境下的轻量级 Kubernetes,它还针对 ARM 处理器做出了优化,这让 Kubernetes 集群可以在树莓派上运行得更好。在下文中,我们将会使用 K3s 来创建一个 Kubernetes 集群。 + +### 准备 + +要按照本文介绍的方式创建 Kubernetes 集群,首先需要准备: + + * 至少一个树莓派(包括 SD 卡和电源) + * 网线 + * 将所有树莓派连接到一起的交换机或路由器 + +我们会通过在线安装的方式安装 K3s,因此还需要可以连接到互联网。 + +### 集群概览 + +在这个集群里,我们会使用三个树莓派。其中一个树莓派作为主节点,我们将它命名为 `kmaster`,并为其分配一个静态 IP `192.168.0.50`(注:假设使用的私有网段是 192.168.0.0/24),而另外两个树莓派作为工作节点,分别命名为 `knode1` 和 `knode2`,也分别分配 `192.168.0.51` 和 `192.168.0.52` 两个 IP 地址。 + +当然,如果你实际的网络布局和上面不同,只要将文中所提及到的 IP 替换成你实际可用的 IP 就可以了。 + +为了不需要通过 IP 来引用某一个节点,我们将每个节点的主机名记录到 PC 的 `/etc/hosts` 文件当中: + + +``` +echo -e "192.168.0.50\tkmaster" | sudo tee -a /etc/hosts +echo -e "192.168.0.51\tknode1" | sudo tee -a /etc/hosts +echo -e "192.168.0.52\tknode2" | sudo tee -a /etc/hosts +``` + +### 部署主节点 + +我们首先部署主节点。最开始的步骤当然是使用镜像安装最新的 Raspbian,这个步骤可以参考我的[另一篇文章][4],在这里就不展开介绍了。在安装完成之后,启动 SSH 服务,将主机名设置为 `kmaster`,然后分配静态 IP `192.168.0.50`。 + +在主节点上安装 Raspbian 完成后,启动树莓派并通过 `ssh` 连接上去: + + +``` +ssh pi@kmaster +``` + +执行以下命令安装 K3s: + + +``` +curl -sfL https://get.k3s.io | sh - +``` + +等到命令跑完以后,一个单节点集群就已经运行起来了。还在这个树莓派上执行: + + +``` +sudo kubectl get nodes +``` + +就会看到这样的输出: + + +``` +NAME STATUS ROLES AGE VERSION +kmaster Ready master 2m13s v1.14.3-k3s.1 +``` + +### 获取连接令牌join token + +之后我们需要部署工作节点。在工作节点上安装 K3s 的时候,会需要用到连接令牌,它放置在主节点的文件系统上。首先把连接令牌打印出来保存以便后续使用: + + +``` +sudo cat /var/lib/rancher/k3s/server/node-token +``` + +### 部署工作节点 + +通过 SD 卡在每个作为工作节点的树莓派上安装 Raspbian。在这里,我们把其中一个树莓派的主机名设置为 `knode1`,为其分配 IP 地址 `192.168.0.51`,另一个树莓派的主机名设置为 `knode2`,分配 IP 地址 `192.168.0.52`。接下来就可以安装 K3s 了。 + +启动主机名为 `knode1` 的树莓派,通过 `ssh` 连接上去: + + +``` +ssh pi@knode1 +``` + +在这个树莓派上,安装 K3s 的过程和之前差不多,但需要另外加上一些参数,表示它是一个工作节点,需要连接到一个已有的集群上: + + +``` +curl -sfL | K3S_URL= \ +K3S_TOKEN=<刚才保存下来的连接令牌> sh - +``` + +`K3S_TOKEN` 的值需要替换成刚才保存下来的实际的连接令牌。完成之后,在主机名为 `knode2` 的树莓派上重复这个安装过程。 + +### 通过 PC 访问集群 + +现在如果我们想要查看或者更改集群,都必须 `ssh` 到集群的主节点才能使用 `kubectl`,这是比较麻烦的。因此我们会将 `kubectl` 放到 PC 上使用。首先,在主节点上获取一些必要的配置信息,`ssh` 到 `kmaster` 上执行: + + +``` +sudo cat /etc/rancher/k3s/k3s.yaml +``` + +复制上面命令的输出,创建一个目录用来放置配置文件: + + +``` +mkdir ~/.kube +``` + +将复制好的内容写入到 `~/.kube/config` 文件中,然后将 + + +``` +server: https://localhost:6443 +``` + +改为 + + +``` +server: https://kmaster:6443 +``` + +出于安全考虑,只对自己保留这个配置文件的读写权限: + + +``` +chmod 600 ~/.kube/config +``` + +如果 PC 上还没有安装 `kubectl` 的话,就可以开始安装了。Kubernetes 官方网站上有各种平台安装 `kubectl` 的[方法说明][5],我使用的是 Ubuntu 的衍生版 Linux Mint,所以我的安装方法是这样的: + + +``` +sudo apt update && sudo apt install -y apt-transport-https +curl -s | sudo apt-key add - +echo "deb kubernetes-xenial main" | \ +sudo tee -a /etc/apt/sources.list.d/kubernetes.list +sudo apt update && sudo apt install kubectl +``` + +上面几个命令的作用是添加了一个包含 Kubernetes 的 Debian 软件库,获取 GPG 密钥以确保安全,然后更新软件包列表并安装 `kubectl`。如果 `kubectl` 有更新,我们将会通过标准软件更新机制standard software update mechanism收到通知。 + +现在在 PC 上就可以查看 Kubernetes 集群了: + + +``` +kubectl get nodes +``` + +输出大概会是这样: + + +``` +NAME STATUS ROLES AGE VERSION +kmaster Ready master 12m v1.14.3-k3s.1 +knode1 Ready worker 103s v1.14.3-k3s.1 +knode1 Ready worker 103s v1.14.3-k3s.1 +``` + +至此,我们已经搭建了一个三节点的 Kubernetes 集群。 + +### K3s 的彩蛋 + +如果执行 `kubectl get pods --all-namespaces`,就会看到其它服务的一些 pod,比如 [Traefik][6]。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后引导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择,K3s 安装后立即可用的优点也得益于此。 + +在后续的文章中,我们会继续探讨 Traefik 在 Kubernetes ingress 中的应用,以及在集群中部署其它组件。敬请关注。 + + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s + +作者:[Lee Carpenter][a] +选题:[lujun9972][b] +译者:[HankChow](https://github.com/HankChow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/carpie +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_wheel_gear_devops_kubernetes.png?itok=xm4a74Kv (A ship wheel with someone steering) +[2]: https://opensource.com/resources/what-is-kubernetes +[3]: https://k3s.io/ +[4]: https://carpie.net/articles/headless-pi-with-static-ip-wired-edition +[5]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ +[6]: https://traefik.io/ From aaf06f14e4dd9a7dad6d1eeeb600d95cd0c15e76 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 22:23:43 +0800 Subject: [PATCH 027/218] PRF @geekpi --- ... Date, New Features and Everything Else.md | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md index 726e0d159f..097a161c2b 100644 --- a/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md +++ b/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md @@ -1,16 +1,16 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Fedora 32 Release Date, New Features and Everything Else) [#]: via: (https://itsfoss.com/fedora-32/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -Fedora 32 发布日期、新功能和其他 +Fedora 32 发布日期、新功能和其它信息 ====== -Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 同时在 4 月底发布。 +Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 一样都在 4 月底发布。 由于我们详细介绍了 Ubuntu 20.04,因此我们考虑在这里为 Fedora 粉丝做同样的事情。 @@ -20,25 +20,21 @@ Fedora 32 应该和 [Ubuntu 20.04 LTS][1] 同时在 4 月底发布。 ![][2] -#### EarlyOOM 已启用 +#### 启用了 EarlyOOM -在此版本中,默认启用 [EarlyOOM][3]。提供一下背景知识,EarlyOOM 使用户可以通过大量使用 [swap][4] 轻松地从内存不足的情况中恢复系统。 +在此版本中,默认启用 [EarlyOOM][3]。提供一下背景知识,EarlyOOM 可以让用户在大量进行[交换][4]时轻松地摆脱内存不足状况恢复其系统。 值得注意的是,它适用于 Fedora 32 Beta 工作站版本。 #### 添加了 GNOME 3.36 -新的 Fedora 32 工作站版也包含了新的 [GNOME 3.36][5]。 +新的 Fedora 32 工作站版也包含了新的 [GNOME 3.36][5]。不仅限于 Fedora 32 Beta 工作站版,[Ubuntu 20.04 LTS][1] 的每日构建版中也添加了它。 -不仅限于 Fedora 32 Beta 工作站版,[Ubuntu 20.04 LTS][1] 的每日构建版中也添加了它。 - -当然,GNOME 3.36 中的改进也进入了 Fedora 的最新版本,总体上提供了更快,更好的体验。 - -因此,你将获得新的锁定屏幕,请勿打扰以及 GNOME 3.36 附带的所有其他功能。 +当然,GNOME 3.36 中的改进也进入了 Fedora 的最新版本,总体上提供了更快,更好的体验。因此,你将获得新的锁定屏幕、请勿打扰功能以及 GNOME 3.36 附带的所有其他功能。 #### 软件包更新 -Fedora 32 版本还更新了许多重要的软件包,包括 Ruby、Perl 和 Python。它还有 [GNU 编译器集合][6](GCC)的最新版本 10。 +Fedora 32 版本还更新了许多重要的软件包,包括 Ruby、Perl 和 Python。它还有 [GNU 编译器集合(GCC)][6]的最新版本 10。 #### 其他更改 @@ -50,7 +46,7 @@ Fedora 32 仍在开发中。Beta 版已经发布,你可以在空闲系统或 在[官方公告][9]中,他们提到了 **Fedora 32 beta 工作站版**和**服务器版**以及其他流行版本的可用性。 -要获取工作站和服务器版本,你必须访问 [Fedora Workstation][10] 和 [Fedora Server][11] 的官方下载页面(取决于你的需求)。 +要获取工作站和服务器版本,你必须访问 [Fedora 工作站][10]和 [Fedora 服务器][11]的官方下载页面(取决于你的需求)。 ![Fedora Download Beta][12] @@ -60,8 +56,6 @@ Fedora 32 仍在开发中。Beta 版已经发布,你可以在空闲系统或 * [Fedora 32 Beta Labs][14] * [Fedora 32 Beta ARM][15] - - 你是否注意到 Fedora 32 中的其他新功能?你想在这里看到哪些功能?请随时在下面发表评论。 -------------------------------------------------------------------------------- @@ -71,7 +65,7 @@ via: https://itsfoss.com/fedora-32/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -91,4 +85,4 @@ via: https://itsfoss.com/fedora-32/ [12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-download-beta.jpg?ssl=1 [13]: https://spins.fedoraproject.org/prerelease [14]: https://labs.fedoraproject.org/prerelease -[15]: https://arm.fedoraproject.org/prerelease \ No newline at end of file +[15]: https://arm.fedoraproject.org/prerelease From 21ce01fbac81772120170f4aa3b34bee58eb9c02 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 22:24:18 +0800 Subject: [PATCH 028/218] PUB @geekpi https://linux.cn/article-12044-1.html --- ...edora 32 Release Date, New Features and Everything Else.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/news => published}/20200319 Fedora 32 Release Date, New Features and Everything Else.md (98%) diff --git a/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/published/20200319 Fedora 32 Release Date, New Features and Everything Else.md similarity index 98% rename from translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md rename to published/20200319 Fedora 32 Release Date, New Features and Everything Else.md index 097a161c2b..b47291dfe1 100644 --- a/translated/news/20200319 Fedora 32 Release Date, New Features and Everything Else.md +++ b/published/20200319 Fedora 32 Release Date, New Features and Everything Else.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12044-1.html) [#]: subject: (Fedora 32 Release Date, New Features and Everything Else) [#]: via: (https://itsfoss.com/fedora-32/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From 918fd09ceb19cc7dd8829fea8f9876dfabbb23b0 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 27 Mar 2020 23:59:45 +0800 Subject: [PATCH 029/218] PRF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @robsean 这篇我特意补充和调整了一些内容,以和之前的译本区分开。 --- ...t Beautiful Linux Distributions in 2020.md | 123 ++++++++++-------- 1 file changed, 67 insertions(+), 56 deletions(-) diff --git a/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md b/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md index 2b4dbfaacf..76f532d814 100644 --- a/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md +++ b/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md @@ -1,136 +1,140 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Here Are The Most Beautiful Linux Distributions in 2020) [#]: via: (https://itsfoss.com/beautiful-linux-distributions/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -2020 年最漂亮的 Linux 发行版 +2020 年 Linux 发行版选美大赛 ====== -每个 Linux 用户都有一个 Linux 发行版是不需要考虑的 – 不管他们喜欢什么,或者想做什么 +以我的观点,每个人都该有一个 Linux 发行版,不管他们喜欢的是哪种,或者想用来做什么。 -刚开始使用 Linux ?你可以使用 [面向初学者的 Linux 发行版][1] 。来自 Windows ?你可以拥有[像 Windows 一样的 Linux发行版][2]。你拥有一台旧电脑?你可以 [使用轻量级 Linux 发行版][3] 。 +要是你刚刚开始使用 Linux,你可以使用这些[最适合于初学者的 Linux 发行版][1];要是你是从 Windows 投奔过来的,你可以使用这些[看起来像 Windows 一样的 Linux 发行版][2];要是你有台旧电脑想让它发挥余热,你可以使用这些[轻量级 Linux 发行版][3]。当然,无论你是在[企业][36]还是 [SOHO][37],Linux 还可以用于[个人工作][38]、[开发][39],以及作为[服务器][40]或[嵌入式系统][41]的操作系统,它可以用于[各种用途][42]。 -在这个列表中,我只关注最漂亮的 Linux 发行版。 +但在这个列表中,我们只关注最漂亮的 Linux 发行版。 ### 7 款最漂亮的 Linux 发行版 ![][4] -等一下!有一个可以称为最漂亮的 Linux 发行版的东西存在吗?不需要考虑的事实是,你可以自定义容易发行版的外观,并使用 [主题][5] 和 [图标]][6] 来使其看起来更漂亮。 +等一下!Linux 发行版有漂亮这个分类吗?显然,你可以自己定制任何发行版的外观,并使用[主题][5]和[图标][6]之类的来使其看起来更漂亮。 -你说得对。但是在这里,我所说的发行版看起来好极了,不需要用户端的任何调整和自定义工作。这些发行版提供友好的无缝转换的开箱即用的桌面体验。 +你说得对。但是在这里,我所说的是指不需要用户进行任何调整和自定义工作就看起来很漂亮的发行版。这些发行版提供友好的顺滑、流畅、开箱即用的桌面体验。 -**注意:** _列表排名不分前后。_ +**注意:** 以下列表排名不分前后,名单纯属个人喜好,请使劲喷你的观点。 -#### 1\. elementary OS +#### 1、elementary OS ![][7] -这里的 elementary OS 是一个最漂亮的 Linux 发行版。在为 Linux 用户提供一种极好的体验的同时,它倾向于一种 macOS 的外观。如果你已经适应了 macOS – 那么你在使用 elementary OS 时,将没有任何问题。 +首先踏上 T 台的 elementary OS 是最漂亮的 Linux 发行版(如果非得说的话,可以是“之一”)。它靠着一种类似 macOS 的外观,而为 Linux 用户提供了出色的体验。如果你已经适应了 macOS,那么你在使用 elementary OS 时就不会有任何不适感。 -此外,elementary OS 也同样基于 Ubuntu – 因此你可以很容易地找到大量的应用程序来把事情做好。 +此外,elementary OS 是基于 Ubuntu 的,因此,你可以很容易地找到大量的可以满足你的需要的应用程序。 -不紧紧局限于外观和感觉 – elementary OS 也努力地引入重要的更改。因此,你可以期待每次更新后所带来的用户体验。 +不仅仅是外观和感受,elementary OS 总是努力地引入一些重要的变化。因此,你可以期待用户体验会随着每次更新而获得提升。 -[elementary OS][8] +- [elementary OS][8] -#### 2\. Deepin +#### 2、深度 Linux ![][9] -Deepin 是另一个漂亮的 Linux 发行版,起初基于 Debian 的稳定版本分支。对于一些人来说,动画效果(外观和感觉)可能太过令人不知所措 – 但是它看起来很漂亮。 +深度 Linux(或许现在该叫统信 UOS?)是另外一个漂亮的 Linux 发行版,它起源于 Debian 的稳定版分支。对于某些人来说,其动画效果(外观和感受)可能有点过度了,虽然它看起来很漂亮。 -它以拥有自己的 Deepin 桌面环境为特色,涉及到一些基本功能的组合,以获得尽可能好的用户体验。它可能与任何其它的发行版的用户界面都不相似,但是它很容易习惯的。 +它有它自己特色的 Deepin 桌面环境(DDE),蕴藏了多种基本功能,从而提供尽可能好的用户体验。它可能不像其它发行版的用户界面,但你很容易就可以习惯。 -我个人的注意力将转向 Deepin OS 中的控制中心和特色配色方案。你也尝试一下 – 它是值得一看的。 +我个人对深度中的控制中心和特色配色方案印象深刻。你可以自己尝试一下,我觉得值得一试。 -[Deepin][10] +- [深度][10] -#### 3\. Pop!_OS +#### 3、Pop!_OS ![][11] -Pop!_OS 成功地在 Ubuntu 的上层提供一个的极好用户界面,与此同时也提供一种纯净的 [GNOME][12] 体验。 +Pop!_OS 在提供了纯净的 [GNOME][12] 体验的同事,也成功地在 Ubuntu 之上打造出了一个出色的用户界面。 -它也碰巧也是我个人的最爱,我使用它作为我的主要桌面系统。Pop!_OS 既不浮华,也不是涉及一些花哨的动画。不过,它们通过图标和主题的完美组合成来解决问题 – 在此期间从技术角度提升用户体验。 +这正是我的最爱,我使用它作为我的主要桌面系统。Pop!_OS 既不浮华,也没有一些花哨的动画。然而,它通过图标和主题的完美组合做到了最好,同时从技术角度提升了用户体验。 -我不想发起一场 [Ubuntu 和 Pop OS][13] 的争论,但是如果你已经习惯了 Ubuntu ,为获取更好的潜在的用户体验,Pop!_OS 可能是一个极好的可供选择的系统。 +我不想发起一场 [Ubuntu 和 Pop!\_OS][13] 之间的争论,但是如果你已经习惯了 Ubuntu,Pop!_OS 可能是一个可能更好的用户体验的绝佳选择。 -[Pop!_OS][14] +- [Pop!_OS][14] -#### 4\. Manjaro Linux +#### 4、Manjaro Linux ![][15] -Manjaro Linux 是一个基于 [Arch][16] 的 Linux 发行版。然而 [安装 Arch Linux][17] 是一件稍微复杂的工作,Manjaro 提供了一种更舒适、更流畅的 Arch 体验。 +Manjaro Linux 是一个基于 [Arch][16] 的 Linux 发行版。虽然[安装 Arch Linux][17] 是一件稍微复杂的工作,而 Manjaro 则提供了一种更舒适、更流畅的 Arch 体验。 -它提供各种各样的 [桌面环境版本][18] 来供下载时选择。不管你选择哪一个,你都仍然有足够的选择权来自定义外观和感觉或布局。 +它提供各种各样的[桌面环境版本][18],在下载时可供选择。不管你选择哪一个,你都仍然有足够的选择权来自定义外观和感觉或布局。 -对我来说,一个开箱即用的基于 Arch 的发行版看起来极好。 – 你可以试一试! +对我来说,这样一个开箱即用的、基于 Arch 的发行版看起来棒极了,你值得拥有! -[Manjaro Linux][19] +- [Manjaro Linux][19] -#### 5\. KDE Neon +#### 5、KDE Neon ![][20] -[KDE Neon][21] 是为那些想简单接近设计语言的用户所准备的,the design language 但是仍能获得良好的用户体验。 +[KDE Neon][21] 是为那些想要采用简化的设计方案而仍可以得到丰富体验的用户所准备的。 -它是一个基于 Ubuntu 的轻量级 Linux 发行版。顾名思义,它以 KDE Plasma 桌面和精美绝伦为特色。 +它是一个基于 Ubuntu 的轻量级 Linux 发行版。顾名思义,它采用 KDE Plasma 桌面,看起来精美绝伦。 -KDE Neon 给予你最新的、最好的 KDE Plasma 桌面及KDE 应用程序。不像 [Kubuntu][22] 或其它基于 KDE 的发行版,你不需要等待数月来获取新的 [KDE 软件][23] 。 +KDE Neon 给予你最新的、最好的 KDE Plasma 桌面及 KDE 应用程序。不像 [Kubuntu][22] 或其它基于 KDE 的发行版,你不需要等待数月来获取新的 [KDE 软件][23]。 -你可以在 KDE 桌面中获取很多内置的自定义选项 – 所以你可以随意使用! +你可以在 KDE 桌面中获取很多内置的自定义选项,请按你的心意摆弄它! -[KDE Neon][24] +- [KDE Neon][24] -#### 6\. Zorin OS +#### 6、Zorin OS ![][25] -毫无疑问,Zorin OS 是一个令人印象深刻的 Linux 发行版,它设法提供一个良好的用户体验 – 即使使用它的精简版本。 +毫无疑问,Zorin OS 是一款令人印象深刻的 Linux 发行版,它努力提供了良好的用户体验,即便是它的精简版也是如此。 -你可以尝试完整版本或精简版本(使用 [Xfce 桌面][26]) 。该用户界面专门为习惯于 Windows 和 macOS 的用户定制。虽然基于 Ubuntu ,它仍然能提供一种极好的用户体验。 +你可以尝试完整版或精简版(使用 [Xfce 桌面][26])。这个用户界面是专门为习惯于 Windows 和 macOS 的用户定制的。虽然它是基于 Ubuntu 的,但它仍然提供了出色的用户体验。 -如果你开始喜欢它的用户界面 – 在你也可以尝试 [Zorin Grid][27] 来管理在工作区/家庭中运行的 Zorin OS的 计算机。使用终极版本,你也可以控制你的桌面布局 (如上图所示)。 +如果你开始喜欢上了它的用户界面,那你也可以尝试使用 [Zorin Grid][27] 来管理运行在工作区/家庭中的 Zorin OS 计算机。而使用其终极版,你还可以控制桌面布局(如上图所示)。 -[Zorin OS][28] +- [video](https://youtu.be/UsUm_ERVLpQ) -#### 7\. Nitrux OS +- [Zorin OS][28] + +#### 7、Nitrux OS ![][29] -[Nitrux OS][30] 是一个独特的 Linux 发行版,它某种程度上基于 Ubuntu – 但是不完全基于 Ubuntu 。 +[Nitrux OS][30] 在 Linux 发行版里算是个另类,它某种程度上基于 Ubuntu,但是不完全基于 Ubuntu 。 -对于正在寻找在 Linux 发行版上使用全新方式的独特设计语言的用户来说,它专注于提供一种良好的用户体验。它使用基于 KDE 的 Nomad 桌面。 +对于那些正在寻找在 Linux 发行版上使用全新方式的独特设计语言的用户来说,它专注于为他们提供一种良好的用户体验。它使用基于 KDE 的 Nomad 桌面。 -Nitrux 鼓励使用 [AppImage][31] 应用程序。但是在 基于 Ubuntu 的 Nitrux 中你也可以使用 Arch Linux 的 pacman 软件包管理器。令人惊叹,不是吗? +Nitrux 鼓励使用 [AppImage][31] 应用程序。但是在这个基于 Ubuntu 的 Nitrux 中你也可以使用 Arch Linux 的 pacman 软件包管理器。真令人惊叹! -尽管它尚不是用来安装的完美的操作系统,它确实看起来很漂亮,并且对大多数基本任务来说已经足够了。当你阅读我们的 [ Nitrux 创始人的采访][32] 时,你可以了解更多。 +如果它不是你安装过(或尚未安装过)的完美的操作系统,但它确实看起来很漂亮,并且对大多数基本任务来说已经足够了。你可以阅读我们的 [Nitrux 创始人的采访][32],可以更多地了解它。 这是一个稍微过时的 Nitrux 视频,但是它仍然看起来很好: -[Nitrux OS][33] +- [video](https://youtu.be/8p2BK0AwuV8) -#### 意外:eXtern OS (处于‘停滞’ 开发阶段) +- [Nitrux OS][33] + +#### 赠品:eXtern OS (处于‘停滞’开发阶段) ![][34] -如果你想尝试一个实验性的 Linux 发行版,extern OS 将会非常出色。 +如果你想尝试一个实验性的 Linux 发行版,extern OS 是非常漂亮的。 -它并没有被积极地维护,因此不应该用于生产系统。但是,它提供独特的用户体验(尽管还不够完美无缺)。 +它没有积极维护,因此不应该用于生产系统。但是,它提供独特的用户体验,尽管还不够完美无缺。 -只为尝试一个好看的 Linux 发行版,你可以尝试体验一下。 +如果只是想尝试一个好看的 Linux 发行版,你可以试试。 -[eXtern OS][35] +- [eXtern OS][35] -**总结** +### 总结 -现在,俗话说,情人眼里出西施。所以这份来自我眼中的最漂亮 Linux 发行版列表。你可以随意提出不同的意见 (当然要礼貌一点),并提及你最喜欢的 Linux 发行版。 +俗话说,情人眼里出西施。所以这份来自我眼中的最漂亮 Linux 发行版列表。你可以随意提出不同的意见 (当然要礼貌一点),并提出你最喜欢的 Linux 发行版。 -------------------------------------------------------------------------------- @@ -139,15 +143,15 @@ via: https://itsfoss.com/beautiful-linux-distributions/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://itsfoss.com/author/ankush/ [b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/best-linux-beginners/ -[2]: https://itsfoss.com/windows-like-linux-distributions/ -[3]: https://itsfoss.com/lightweight-linux-beginners/ +[1]: https://linux.cn/article-11145-1.html +[2]: https://linux.cn/article-8311-1.html +[3]: https://linux.cn/article-11040-1.html [4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/beautiful-linux-distros.png?ssl=1 [5]: https://itsfoss.com/best-gtk-themes/ [6]: https://itsfoss.com/best-icon-themes-ubuntu-16-04/ @@ -180,3 +184,10 @@ via: https://itsfoss.com/beautiful-linux-distributions/ [33]: https://nxos.org/ [34]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/extern-os.png?ssl=1 [35]: https://externos.io/ +[36]: https://linux.cn/article-9553-1.html +[37]: https://linux.cn/article-10490-1.html +[38]: https://linux.cn/article-11028-1.html +[39]: https://linux.cn/article-10534-1.html +[40]: https://linux.cn/article-7813-1.html +[41]: https://linux.cn/article-9324-1.html +[42]: https://linux.cn/article-8628-1.html From ff54709b3bbcbc0c561346a7fe305718503d677f Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 28 Mar 2020 00:53:08 +0800 Subject: [PATCH 030/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200327=20KubeCF?= =?UTF-8?q?=20Is=20What=20DevOps=20Wanted:=20Marrying=20Cloud=20Foundry=20?= =?UTF-8?q?with=20Kubernetes=C2=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md --- ... Marrying Cloud Foundry with Kubernetes.md | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md diff --git a/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md b/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md new file mode 100644 index 0000000000..f306d94bc7 --- /dev/null +++ b/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md @@ -0,0 +1,79 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (KubeCF Is What DevOps Wanted: Marrying Cloud Foundry with Kubernetes ) +[#]: via: (https://www.linux.com/articles/kubecf-is-what-devops-wanted-marrying-cloud-foundry-with-kubernetes/) +[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) + +KubeCF Is What DevOps Wanted: Marrying Cloud Foundry with Kubernetes  +====== + +[![][1]][2] + +There are times when solutions that  seem to compete against each other turn out to be complementary. [This is exactly what happened with Cloud Foundry and Kubernetes. ][3] + +“Enterprises have moved on from the debate around Cloud Foundry Application Runtime or PaaS experience versus Kubernetes-based experience, and have opted to adopt both. The PaaS experience that Cloud Foundry offers is about optimizing developer time by allowing them to focus on business problems. Let them focus on the app they’re trying to build, not on the plumbing underneath it,” says Chip Childers, CTO at Cloud Foundry ​Foundation. + +“There are plenty of use cases that don’t fit into a PaaS-style architecture. If you look at the breadth of architectures that a typical enterprise deals with, there are tons of applications that you need to just wrap the thing in a container and operate it that way,” he says. + +**Integrating Cloud Foundry and Kubernetes ** + +To incorporate Kubernetes into the Cloud Foundry architecture so Cloud Foundry users can use Kubernetes as an alternative to Diego/Garden to orchestrate application container instances, Cloud Foundry Foundation kickstarted an initiative called [Project Eirini][4]. + +Similarly, [Project Quarks][5] is another incubating effort within the Cloud Foundry Foundation that is focused on packaging the Cloud Foundry Application Runtime as a set of containers instead of virtual machines, enabling easier deployment to Kubernetes. + +“Project Quarks took some code from SUSE called Fizzle. It would take the type of release artifact that our project teams were generally releasing for their component of the system, and work it into a usable Docker image. Then they would use Helm and some scripts to deploy that into Kubernetes,” said Childers. + +There was, however, one crucial piece of the jigsaw missing. + +“There was this code that SUSE had been working on. It was the basis of the SUSE product called SCF (SUSE Cloud Foundry). SCF became [KubeCF][6]. It creates a Kubernetes native distribution of Cloud Foundry,” reveals Childers. + +KubeCF recently hit its 1.0 release. So, where does KubeCF go from here? + +“Presenty, we can look at it as the easiest path to a Kubernetes-native Cloud Foundry for pure open search users. There are some other efforts that are happening in parallel that are taking a look at each component of the Cloud Foundry architecture. Project architects are working towards allowing people to take KubeCF, deploy the whole system to Kubernetes, and take advantage of the simplicity that gets enabled as code gets modified,” says Childers. + +**Developers First: Ensuring Seamless UX** + +One of the strengths of the Cloud Foundry community is that it has always offered a distribution. There is still a distribution called CF deployment, which is based on a VM-centric architecture that uses the Cloud Foundry BOSH platform to orchestrate infrastructures and service environments (or virtualized environments like V-sphere) to deploy VMs and then run the system on top of it. + +However, distribution also entails members of the ecosystem packaging it or dictating with their own offerings. In such a scenario, how can developers expect consistency across the distros? + +“The commonality between both upstream releases — the CF deployment and KubeCF — lies in the components that they sew together to create the Cloud Foundry platform. The Cloud Foundry Platform certification continues to be based on the idea that a certified distribution uses those components in an unmodified way, and integrates them to create that developer experience,” Childers explains. + +“So, regardless of whether you’re deploying to Kubernetes or you’re deploying to virtual machines, regardless of the certified vendor that you use, or if you use upstream distributions, you should have that same developer experience. That’s what Platform Certification ensures,” he says. + +Operational consistency is less a concern for the ecosystem and the community because many of these providers are offering it as a service. “Those that do it as subscription-based software delivery have a lot of tooling around operations that’s specific to them plus all of the other values that they bring together,” Childers avers. + +**Evolution Unabated** + +The KubeCF distribution has finally put the debate of ‘Do I use Kubernetes or do I use Cloud Foundry?’ to rest. + +“The answer should’ve always been ‘You use both.’ The architecture fits one on top of the other very nicely, and overcomes the concerns of dual stacks,” says Childers. + +With the ‘either-or’ debate over, Chip intends to further evolve this architecture, thereby offering an enormous amount of value to enterprises trying to deal with container-centric infrastructure management and developer productivity. + +“We’ve completely re-converged as an ecosystem around embracing the Kubernetes-based infrastructure as being the most popular and rising approach. We’ve been evolving this architecture as a community for years now,” he says. + +“There are huge engineering and commercial teams supporting Kubernetes. VMware has an enormous investment in Kubernetes, and it continues to increase that investment. With the acquisition of Pivotal, VMware also has a huge amount of investment in Cloud Foundry. It’s working aggressively on the mission of bringing the two together. We see the same traction with SAP, IBM, and SUSE, which presents a lot of opportunities for everybody,” adds Childers. + +-------------------------------------------------------------------------------- + +via: https://www.linux.com/articles/kubecf-is-what-devops-wanted-marrying-cloud-foundry-with-kubernetes/ + +作者:[Swapnil Bhartiya][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.linux.com/author/swapnil/ +[b]: https://github.com/lujun9972 +[1]: https://www.linux.com/wp-content/uploads/2020/03/color-3580779_1920-1068x667.jpg (color-3580779_1920) +[2]: https://www.linux.com/wp-content/uploads/2020/03/color-3580779_1920.jpg +[3]: https://www.tfir.io/kubecf-a-kubernetes-native-distribution-of-cloud-foundry-chip-childers-cto-cloud-foundry-%e2%80%8bfoundation/ +[4]: https://www.cloudfoundry.org/project-eirini/ +[5]: https://www.cloudfoundry.org/project-quarks/ +[6]: https://github.com/cloudfoundry-incubator/kubecf From f7926a252292e0d08e3574358c9cb1279c63124c Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sat, 28 Mar 2020 08:25:35 +0800 Subject: [PATCH 031/218] [Translating] 20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md Signed-off-by: FSSlc --- ...e Files From Linux Command Line Using Firefox Send Client.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md b/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md index fcbdd3c5c7..345e560dfd 100644 --- a/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md +++ b/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (FSSlc) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a9c0b5d8a36adac7cb03141cb48da11eae696b50 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 28 Mar 2020 11:15:24 +0800 Subject: [PATCH 032/218] PUB @robsean https://linux.cn/article-12046-1.html --- ... Are The Most Beautiful Linux Distributions in 2020.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) rename {translated/tech => published}/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md (97%) diff --git a/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md b/published/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md similarity index 97% rename from translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md rename to published/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md index 76f532d814..b4eafe90dd 100644 --- a/translated/tech/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md +++ b/published/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md @@ -1,15 +1,17 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12046-1.html) [#]: subject: (Here Are The Most Beautiful Linux Distributions in 2020) [#]: via: (https://itsfoss.com/beautiful-linux-distributions/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -2020 年 Linux 发行版选美大赛 +我眼中的 2020 年最漂亮的 Linux 发行版 ====== +![](https://img.linux.net.cn/data/attachment/album/202003/28/103619o7gog737dg7fi9ii.jpg) + 以我的观点,每个人都该有一个 Linux 发行版,不管他们喜欢的是哪种,或者想用来做什么。 要是你刚刚开始使用 Linux,你可以使用这些[最适合于初学者的 Linux 发行版][1];要是你是从 Windows 投奔过来的,你可以使用这些[看起来像 Windows 一样的 Linux 发行版][2];要是你有台旧电脑想让它发挥余热,你可以使用这些[轻量级 Linux 发行版][3]。当然,无论你是在[企业][36]还是 [SOHO][37],Linux 还可以用于[个人工作][38]、[开发][39],以及作为[服务器][40]或[嵌入式系统][41]的操作系统,它可以用于[各种用途][42]。 From b7d4e94d21fdd1a886cc4cbc6f809e32060fd017 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 28 Mar 2020 11:52:33 +0800 Subject: [PATCH 033/218] APL --- ...200319 7 open hardware projects working to solve COVID-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md b/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md index cb37a20e31..3d89271d1c 100644 --- a/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md +++ b/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 03496b129a48b577292da702222913e4df43da6f Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sat, 28 Mar 2020 12:36:55 +0800 Subject: [PATCH 034/218] [Translated] 20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md Signed-off-by: FSSlc --- ... Command Line Using Firefox Send Client.md | 140 ++++++++---------- 1 file changed, 64 insertions(+), 76 deletions(-) rename {sources => translated}/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md (54%) diff --git a/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md b/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md similarity index 54% rename from sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md rename to translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md index 345e560dfd..6e9b6ba2a1 100644 --- a/sources/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md +++ b/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md @@ -1,91 +1,79 @@ -[#]: collector: (lujun9972) -[#]: translator: (FSSlc) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (ffsend – Easily And Securely Share Files From Linux Command Line Using Firefox Send Client) -[#]: via: (https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-command-line-using-firefox-send-client/) -[#]: author: (Vinoth Kumar https://www.2daygeek.com/author/vinoth/) +[#]: collector: "lujun9972" +[#]: translator: "FSSlc" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " +[#]: subject: "ffsend – Easily And Securely Share Files From Linux Command Line Using Firefox Send Client" +[#]: via: "https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-command-line-using-firefox-send-client/" +[#]: author: "Vinoth Kumar https://www.2daygeek.com/author/vinoth/" -ffsend – Easily And Securely Share Files From Linux Command Line Using Firefox Send Client +ffsend - 在 Linux 命令行中通过 FireFox Send 服务来简单安全地分享文件 ====== -Linux users were preferred to go with scp or rsync for files or folders copy. +Linux 用户更偏爱使用 `scp` 或 `rsync` 来进行文件或目录的复制拷贝。很多新的可选方式正发生在 Linux 上,因为 Linux 是开源的,所以任何人都可以为 Linux 开发一个安全软件。 -However, so many new options are coming to Linux because it’s a opensource. +在过去我们已经写了多篇有关安全分享这个话题的文章,它们分别是 **[OnionShare][1]** , **[Magic Wormhole][2]** , **[Transfer.sh][3]** 和 **[Dcp – Dat Copy][4]**. -Anyone can develop a secure software for Linux. +今天我们甚至还将继续讨论这个话题,我们将介绍名为 `ffsend` 的工具。 -We had written multiple articles in our site in the past about this topic. +### ffsend 是什么? -Even, today we are going to discuss the same kind of topic called ffsend. +[ffsend][5] 是 Firefox Send 服务的一个命令行客户端,允许用户通过命令行来传递和接收文件或目录。 -Those are **[OnionShare][1]** , **[Magic Wormhole][2]** , **[Transfer.sh][3]** and **[Dcp – Dat Copy][4]**. +它允许我们通过一个安全、私密、加密的链接,使用一个简单的命令来轻易安全地分享文件和目录。 -### What’s ffsend? +使用 Firefox 的 Send 服务,文件可以被共享,最大允许的文件大小为 2GB(译者注:现在官网上写的是最大 1GB,登录后最大 2.5GB)。其他人可以通过这个工具或者网页浏览器来下载这些被分享的文件。 -[ffsend][5] is a command line Firefox Send client that allow users to transfer and receive files and folders through command line. +所有的文件总是在客户端被加密,并且秘钥将不会被远程主机所分享。另外,你还可以为上传的文件设置密码。 -It allow us to easily and securely share files and directories from the command line through a safe, private and encrypted link using a single simple command. +被上传的文件在被下载(默认被下载 1 次,最多可被下载 10 次)后或者 24 小时后,它们将被自动删除。这将确保你的文件不会永远的保留在网络上。 -Files are shared using the Send service and the allowed file size is up to 2GB. +该工具当前处于 alpha 阶段,使用时请自担风险。而且,当前只有有限个安装选项可用。 -Others are able to download these files with this tool, or through their web browser. +### ffsend 的特点: -All files are always encrypted on the client, and secrets are never shared with the remote host. + * 全功能且友好的命令行工具 + * 安全地上传和下载文件与目录 + * 在客户端总是被加密 + * 额外的密码保护,密码生成和可配置下载次数限制 + * 内置文件或目录的打包和解压 + * 可以简单地管理你的历史分享记录 + * 能够使用你自己的发送主机 + * 查看或者删除共享文件 + * 精准的错误报告 + * 由加密或上传下载导致的低内存消耗 + * 无需集成就可被用在脚本中 -Additionally you can add a password for the file upload. +### 如何在 LInux 中安装 ffsend 呢? -The uploaded files will be removed after the download (default count is 1 up to 10) or after 24 hours. This will make sure that your files does not remain online forever. +当前除了 Debian 和 Arch Linux 系统,其他发行版还没有相应的安装包(译者注:这个信息已过时,最新内容请看[这里](https://github.com/timvisee/ffsend#install))。然而,我们可以轻易地根据我们自己的操作系统和架构下载到相应的预编译二进制文件。 -This tool is currently in the alpha phase. Use at your own risk. Also, only limited installation options are available right now. - -### ffsend Features: - - * Fully featured and friendly command line tool - * Upload and download files and directories securely - * Always encrypted on the client - * Additional password protection, generation and configurable download limits - * Built-in file and directory archiving and extraction - * History tracking your files for easy management - * Ability to use your own Send host - * Inspect or delete shared files - * Accurate error reporting - * Low memory footprint, due to encryption and download/upload streaming - * Intended to be used in scripts without interaction - - - -### How To Install ffsend in Linux? - -There is no package for each distributions except Debian and Arch Linux systems. However, we can easily get this utility by downloading the prebuilt appropriate binaries file based on the operating system and architecture. - -Run the below command to download the latest available version for your operating system. +运行下面的命令来为你的操作系统下载 `ffsend` 最新可用的版本(译者注:当前最新版本为 v0.2.58): ``` $ wget https://github.com/timvisee/ffsend/releases/download/v0.1.2/ffsend-v0.1.2-linux-x64.tar.gz ``` -Extract the tar archive using the following command. +然后使用下面的命令来解压 tar 包: ``` $ tar -xvf ffsend-v0.1.2-linux-x64.tar.gz ``` -Run the following command to identify your path variable. +接着运行下面的命令来查看你的 `PATH` 环境变量: ``` $ echo $PATH /home/daygeek/.cargo/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl ``` -As i told previously, just move the executable file to your path directory. +正如我先前告知的那样,下面我们要做的就是将这个可执行文件放置到 `PATH` 环境变量中的某个目录中: ``` $ sudo mv ffsend /usr/local/sbin ``` -Run the `ffsend` command alone to get the basic usage information. +直接运行 `ffsend` 可以获取其基本使用信息: ``` $ ffsend @@ -103,30 +91,30 @@ To show all subcommands, features and other help: ffsend help [SUBCOMMAND] ``` -For Arch Linux based users can easily install it with help of **[AUR Helper][6]** , as this package is available in AUR repository. +对于使用基于 Arch Linux 系统的用户可以简单地借助 **[AUR Helper][6]** 来安装它,因为这个包已经在 AUR 软件仓库中了。 ``` $ yay -S ffsend ``` -For **`Debian/Ubuntu`** systems, use **[DPKG Command][7]** to install ffsend. +对于使用 **`Debian/Ubuntu`** 系统的用户,使用 **[DPKG 命令][7]** 来安装 `ffsend`。 ``` $ wget https://github.com/timvisee/ffsend/releases/download/v0.1.2/ffsend_0.1.2_amd64.deb $ sudo dpkg -i ffsend_0.1.2_amd64.deb ``` -### How To Send A File Using ffsend? +### 如何使用 ffsend 来发送文件? -It’s not complicated. We can easily send a file using simple syntax. +这并不复杂,我们可以简单地通过下面的语法来发送文件。 -**Syntax:** +**语法:** ``` $ ffsend upload [/Path/to/the/file/name] ``` -In the following example, we are going to upload a file called `passwd-up1.sh`. Once you upload the file then you will be getting the unique URL. +在下面的例子中,我们将上传一个名为 `passwd-up1.sh` 的文件,一旦你上传了该文件,你将得到一个唯一的 URL。 ``` $ ffsend upload passwd-up1.sh --copy @@ -136,15 +124,15 @@ Share link: https://send.firefox.com/download/a4062553f4/#yy2_VyPaUMG5HwXZzYRmpQ ![][9] -Just download the above unique URL to get the file in any remote system. +在任何远端的系统上,只需要使用上面那个唯一的 URL 就可以下载上传的文件了。 -**Syntax:** +**语法:** ``` $ ffsend download [Generated URL] ``` -Output for the above command. +命令的输出如下: ``` $ ffsend download https://send.firefox.com/download/a4062553f4/#yy2_VyPaUMG5HwXZzYRmpQ @@ -153,13 +141,13 @@ Download complete ![][10] -Use the following syntax format for directory upload. +使用下面的语法来对目录进行上传: ``` $ ffsend upload [/Path/to/the/Directory] --copy ``` -In this example, we are going to upload `2g` directory. +在下面的例子中,我们将上传一个名为 `2g` 的目录: ``` $ ffsend upload /home/daygeek/2g --copy @@ -170,7 +158,7 @@ Upload complete Share link: https://send.firefox.com/download/90aa5cfe67/#hrwu6oXZRG2DNh8vOc3BGg ``` -Just download the above generated the unique URL to get a folder in any remote system. +在任意的远端系统中,只需要利用上面生成的唯一 URL 就可以获取到刚才上传的目录了。 ``` $ ffsend download https://send.firefox.com/download/90aa5cfe67/#hrwu6oXZRG2DNh8vOc3BGg @@ -179,7 +167,7 @@ Extracting... Download complete ``` -As this already send files through a safe, private, and encrypted link. However, if you would like to add a additional security at your level. Yes, you can add a password for a file. +上面已经通过安全、私密和加密过的链接来发送了文件。然而,如果你想在你的掌控范围内再添加额外的安全措施,你可以为文件添加密码。 ``` $ ffsend upload file-copy-rsync.sh --copy --password @@ -188,7 +176,7 @@ Upload complete Share link: https://send.firefox.com/download/0742d24515/#P7gcNiwZJ87vF8cumU71zA ``` -It will prompt you to update a password when you are trying to download a file in the remote system. +当你在远端系统中尝试下载该文件时,它将要求你输入密码: ``` $ ffsend download https://send.firefox.com/download/0742d24515/#P7gcNiwZJ87vF8cumU71zA @@ -197,7 +185,7 @@ Password: Download complete ``` -Alternatively you can limit a download speed by providing the download speed while uploading a file. +另外,你还可以在上传过程中提供下载次数限制来限制文件被下载的次数。 ``` $ ffsend upload file-copy-scp.sh --copy --downloads 10 @@ -205,16 +193,16 @@ Upload complete Share link: https://send.firefox.com/download/23cb923c4e/#LVg6K0CIb7Y9KfJRNZDQGw ``` -Just download the above unique URL to get a file in any remote system. +然后你可以在任意的远程系统中使用上面的唯一 URL 来下载该文件: ``` ffsend download https://send.firefox.com/download/23cb923c4e/#LVg6K0CIb7Y9KfJRNZDQGw Download complete ``` -If you want to see more details about the file, use the following format. It will shows you the file name, file size, Download counts and when it will going to expire. +假如你想看这个链接的更多细节,你可以使用下面的命令来查看它的信息,它将为你展示文件名称、文件大小、被下载次数以及过期时间。 -**Syntax:** +**语法:** ``` $ ffsend info [Generated URL] @@ -228,7 +216,7 @@ Downloads: 3 of 10 Expiry: 23h58m (86280s) ``` -You can view your transaction history using the following format. +此外,你还可以使用下面的命令来查看你的传输历史: ``` $ ffsend history @@ -241,9 +229,9 @@ $ ffsend history 6 https://send.firefox.com/download/69afaab1f9/#5z51_94jtxcUCJNNvf6RcA 23h43m ``` -If you don’t want the link anymore then we can delete it. +假如你不想再分享某个链接,你可以使用下面的语法来删除它: -**Syntax:** +**语法:** ``` $ ffsend delete [Generated URL] @@ -252,15 +240,15 @@ $ ffsend delete https://send.firefox.com/download/69afaab1f9/#5z51_94jtxcUCJNNvf File deleted ``` -Alternatively this can be done using firefox browser by opening the page . +另外,你还可以通过使用 firefox 浏览其打开 https://send.firefox.com/ 来完成相应的分享。 -Just drag and drop a file to upload it. +只需要拖拽该文件就可以上传它: ![][11] -Once the file is downloaded, it will show you that 100% download completed. +一旦该文件被下载,它将展示 100% 的下载状态。 ![][12] -To check other possible options, navigate to man page or help page. +想查看其他的可能选项,请浏览它对应的 man 信息或者帮助页: ``` $ ffsend --help @@ -309,7 +297,7 @@ via: https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-com 作者:[Vinoth Kumar][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[FSSlc](https://github.com/FSSlc) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From f15f7a230b1c96c4e1b3fe76cd3dc9a994b9c352 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 28 Mar 2020 17:58:46 +0800 Subject: [PATCH 035/218] TSL PART 1 --- ...ware projects working to solve COVID-19.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) rename {sources => translated}/tech/20200319 7 open hardware projects working to solve COVID-19.md (68%) diff --git a/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md similarity index 68% rename from sources/tech/20200319 7 open hardware projects working to solve COVID-19.md rename to translated/tech/20200319 7 open hardware projects working to solve COVID-19.md index 3d89271d1c..b330a7127d 100644 --- a/sources/tech/20200319 7 open hardware projects working to solve COVID-19.md +++ b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md @@ -7,47 +7,47 @@ [#]: via: (https://opensource.com/article/20/3/open-hardware-covid19) [#]: author: (Harris Kenny https://opensource.com/users/harriskenny) -7 open hardware projects working to solve COVID-19 +应对新冠病毒事件的 7 个开放硬件项目 ====== -Open hardware solutions can prevent the spread and suffering of the -novel coronavirus. +> 开放硬件解决方案可以为抵御新型冠状病毒的传播和痛苦做出贡献。 + ![open on blue background with heartbeat symbol][1] -The open source [hardware][2] movement has long championed the importance of the right to repair, fully own the technology you buy, and be able to remix and reproduce gadgets, just like you can with music. And so, during this challenging time, open hardware is providing some answers to some of the problems created by the coronavirus pandemic. +开源[硬件][2]运动长期以来一直主张维修权的重要性,完全拥有所购买的技术,并能够像音乐一样重新组合和复制组件。因此,在这个充满挑战的时期内,开放硬件为由冠状病毒大流行引起的一些问题提供了一些答案。 -### An overview of what's happening +### 背景概述 -For one, hardware developers around the world are working to resolve supply chain weaknesses using open source, the same philosophy that has driven a proliferation of new software technologies over the last 30 years. The hardware movement's past successes include the [RepRap Project][3], [Open Source Ecology][4], and [Open Source Beehives][5], proving this can be done. +首先,全球的硬件开发人员正在努力使用开源解决供应链中的弱点,在过去 30 年中,这种理念推动了新软件技术的大量涌现。过去在硬件运动方面的成功,如 [RepRap Project][3],[Open Source Ecology][4] 和 [Open Source Beehives][5],证明了这一点是可以做到的。 -There has been increasing interest in creators using 3D printing and other technologies to create replacement parts for and manufacturing of safety equipment on demand. For example, the Polytechnic University lab in Hong Kong [3D printed face shields][6] for hospital workers. And Italian startup Isinnova partnered with the FabLab in Milan to [3D-print replacement valves][7] for reanimation devices in hard-hit Northern Italy. Companies are also releasing designs to adapt our physical interactions, like this [3D printed hands-free door opener][8] from Materialise. These examples of replacing parts and solving problems are an excellent start and appear to be saving lives. +对使用 3D 打印和其他技术按需制造安全设备的替换零件和按需生产的创作者的兴趣日益增加。例如,香港理工大学实验室为医院工作人员提供 [3D 打印面罩][6]。意大利初创公司 Isinnova 与米兰 FabLab 合作,为受重灾的意大利北部提供用于呼吸机的 [3D 打印替换阀][7]。公司们还发布了设计以适应我们的物理接触,例如 Materialise 的 [3D 打印免提开门器] [8]。这些更换零件和解决问题的示例是一个很好的起点,为挽救生命做出了努力。 -Another traditional hardware technique is picking up steam: sewing. The AFP reports that there is an acute need for face masks around the world and guidance from the World Health Organization about their importance. With single-use, disposable masks being prioritized for healthcare workers, in the Czech Republic people are [taking to sewing to make their own masks][9]. (Repeat-use masks do introduce sterility concerns.) The Facebook group "Czechia sews face masks" started to address this problem in their country, with tens of thousands of members using their at-home sewing machines. +另一种传统的硬件技术正在加速发展:缝纫。法新社报道说,全球急需口罩,来自世界卫生组织的指导也指明了其重要性。随着一次性口罩要优先供给于医护人员,捷克共和国的人们[开始缝制自己的口罩][9]。(重复使用的口罩确实会带来细菌问题。)Facebook 小组“捷克缝制口罩”开始在他们的国家解决这个问题,成千上万的成员开始用起了他们的家用缝纫机。 -Open source hardware equipment and machinery projects are also gaining traction. First, there is testing equipment that is sophisticated and highly capable. Next, there is medical equipment that can be categorized as field-grade (at best) for scenarios with no other option. These projects are outlined in detail below. +开源硬件设备和机械项目也越来越受欢迎。首先,有一些测试性设备具备高精度且功能强大。其次,在没有其他选择方案的情况下,有一些医疗设备可以归类为现场级(最好)。这些项目将在下面详细概述。 -To learn more, I spoke with Jason Huggins, founder and CEO of Chicago-based [Tapster Robotics][10]. Tapster Robotics designs and manufactures desktop robots using 3D printing, computer numerical control (CNC) machining, and open electronics like [Arduino][11]. He has both the technical know-how and the industrial capacity to make an impact. And he wants to commit his company's resources to help in this fight. +为了解更多信息,我与总部位于芝加哥的 [Tapster Robotics][10] 的创始人兼首席执行官 Jason Huggins 进行了交谈。Tapster Robotics 使用 3 D打印、计算机数控(CNC)加工和 [Arduino][11] 等开放式电子产品设计和制造台式机器人。他兼具技术知识和工业能力,具有很高的影响力。他想投入自己公司的资源来帮助这场斗争。 -"Basically, we're in a World War II mobilization moment right now. Even though I'm not a doctor, we should still all follow the Hippocratic Oath. Whatever I do, I don't want to make the problem worse," Huggins explains. "As a counterpoint, there is WHO executive director Dr. Michael Ryan's comment: 'Speed trumps perfection,'" Huggins argues. +“基本上,我们现在正处于第二次世界大战的动员时刻。即使我不是医生,我们仍然应该遵循希波克拉底誓言。无论我做什么,我都不想让问题变得更糟,” Huggins 解释。他认为:“作为对策,世卫组织执行主任 Michael Ryan 博士发表了这样的评论:‘速度胜过完美’。” -> Wow. +> 哇 > -> This man is the global authority on the spread of disease. If you are a leader (in any capacity) watch this. If you are not, watch it too. [pic.twitter.com/bFogaekehM][12] +> 这个人是疾病传播的全球权威。如果您是领导者(无论以何种身份),请注意。如果不是,也请注意。 [pic.twitter.com/bFogaekehM][12] > -> — Jim Richards Sh🎙wgram (@JIMrichards1010) [March 15, 2020][13] +> — Jim RichardsSh🎙wgram(@JIMrichards1010)[2020 年 3 月 15 日][13] -Huggins has extensive experience with delivering during times of need. His efforts were instrumental in helping [Healthcare.gov][14] scale after its challenging initial launch. He also created the software industry-standard testing frameworks Selenium and Appium. With this experience, his advice is well worth considering. +Huggins 在应需提供方面具有丰富的经验。他的努力有助于 [Healthcare.gov][14] 在挑战性的最初启动后得以扩展。他还创建了软件行业标准的测试框架 Selenium 和 Appium。有了这一经验,他的建议非常值得考虑。 -I also spoke with Seattle-based attorney Mark Tyson of [Tyson Law][15], who works with startups and small businesses. He has direct experience working with nimble companies in rapidly evolving industries. In framing the overall question, Tyson begins: +我还与 [Tyson Law][15] 的西雅图律师 Mark Tyson 进行了交谈,他与初创公司和小型企业合作。他在快速发展的行业中与敏捷公司合作有着直接的经验。在阐述整个问题时,Tyson 说到: -> Good Samaritan laws protect volunteers—i.e., “Good Samaritans”—from being held liable as a result of their decision to give aid during an emergency. While the specifics of these laws vary by state, they share a common public policy rationale: namely, encouraging bystanders to help others facing an emergency. Conceivably, this rationale could justify application of these types of laws in less traditional settings than, say, pulling the victim of a car accident out of harm’s way. +> 《善良的撒玛利亚人法Good Samaritan law》保护志愿者(即“好撒玛利亚人”)免于因其决定在紧急情况下提供援助而承担责任。尽管这些法律的具体内容因州而异,但它们具有共同的公共政策依据:即鼓励旁观者帮助遇到紧急情况的其他人。可以想象,除了传统的把车祸的受害者从伤害中拉出来之外,这种理论依据可以证明在不太传统的环境中应用这类法律的合理性。 -Applying this specific situation, Tyson notes: +对于这种特定情况,Tyson 指出: -> "Before taking action, creators would be wise to speak with an attorney to conduct a state-specific risk assessment. It would also be prudent to ask larger institutions, like hospitals or insurers, to accept potential liability exposure via contract—for instance, through the use of indemnification agreements, whereby the hospital or its insurer agrees to indemnify the creator for liability." +> “在采取行动之前,创客们明智的做法是与律师沟通一下,以针对特定的州进行风险评估。还应谨慎地要求大型机构(例如医院或保险公司)通过合同接受潜在的责任风险,例如,通过使用赔偿协议,使医院或其保险人同意赔偿创客们的责任。” -Tyson understands the urgency and gravity of the situation. This option to use contracts is not meant to be a roadblock; instead, it may be a way to help adoption happen at scale to make a bigger difference faster. It is up to you or your organization to make this determination. +Tyson 明白情况的紧迫性和严重性。使用合同的这种选择并不意味着障碍。相反,这可能是一种帮助其大规模采用的方法,以更快地产生更大的变化。这取决于你或你的机构。 -With all that said, let's explore the projects that are in use or in development (and may be available for deployment soon). +综上所述,让我们探索正在使用或正在开发中的项目(可能很快就可以部署)。 ### 7 open hardware projects fighting COVID-19 From 9b0e6093888e160ceefef1ff15e0d6d8d6cf53f3 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 28 Mar 2020 22:13:16 +0800 Subject: [PATCH 036/218] TSL --- ...ware projects working to solve COVID-19.md | 76 +++++++++---------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md index b330a7127d..2655544108 100644 --- a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md +++ b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md @@ -49,92 +49,90 @@ Tyson 明白情况的紧迫性和严重性。使用合同的这种选择并不 综上所述,让我们探索正在使用或正在开发中的项目(可能很快就可以部署)。 -### 7 open hardware projects fighting COVID-19 +### 7 个与新冠病毒对抗的开放硬件项目 #### Opentrons -[Opentrons][16]' open source lab automation platform is comprised of a suite of open source hardware, verified labware, consumables, reagents, and workstations. Opentrons says its products can help dramatically [scale-up COVID-19 testing][17] with systems that can "automate up to 2,400 tests per day within days of an order being placed." It plans to ramp up to 1 million tested samples by July 1. +[Opentrons][16] 的开源实验室自动化平台由一套开源硬件、经过验证的实验室器具、消耗品、试剂和工作站组成。Opentrons 表示,其产品可以“在下订单后几天内每天自动进行多达 2400 个测试”的系统,可以极大地帮助提高[新冠病毒测试规模][17]。它计划在 7 月 1 日之前提升多达 100 万个测试样本。 ![Opentrons roadmap graphic][18] -From the Opentrons [website][17], Copyright +*来自 Opentrons [网站][17],版权所有* -The company is already working with federal and local government agencies to determine if its systems can be used for clinical diagnosis under an [emergency use authorization][19]. Opentrons is shared under an [Apache 2.0 license][20]. I first learned of it from biologist Kristin Ellis, who is affiliated with the project. +该公司已经在与联邦和地方政府机构合作,以确定其系统是否可以在[紧急使用授权][19]下用于临床诊断。 Opentrons 在 [Apache 2.0 许可证][20]下共享。我最初是从与该项目有联系的生物学家 Kristin Ellis 斯那里得知它的。 -#### Chai Open qPCR +#### Chai 的 Open qPCR -Chai's [Open qPCR][21] device uses [polymerase chain reaction][22] (PCR) to rapidly test swabs from surfaces (e.g., door handles and elevator buttons) to see if the novel coronavirus is present. This open source hardware shared under an [Apache 2.0 license][23] uses a [BeagleBone][24] low-power Linux computer. Data from the Chai Open qPCR can enable public health, civic, and business leaders to make more informed decisions about cleaning, mitigation, facility closures, contract tracing, and testing. +Chai 的 [Open qPCR][21] 设备使用[聚合酶链反应][22](PCR)快速检测物品表面(例如,门把手和电梯按钮)上的拭子,以查看是否存在新型冠状病毒。这种在 [Apache 2.0 许可证][23]下共享的开源硬件使用 [BeagleBone][24] 低功耗 Linux 计算机。Chai 的 Open qPCR 提供的数据可以使公共卫生、公民和企业领导者做出有关清洁、缓解、关闭设施、接触追踪和测试的更明智的决策。 #### OpenPCR -[OpenPCR][25] is a PCR testing device kit from Josh Perfetto and Jessie Ho, the creators behind the Chai Open qPCR. This is more of a DIY open source device than their previous project, but it has the same use case: using environmental testing to identify the coronavirus in the field. As the project page states, "traditional real-time PCR machines capable of detecting these pathogens typically cost upwards of $30,000 US dollars and are not suitable for field usage." Because OpenPCR is a kit users build and is shared under a [GPLv3.0 license][26], the device aims to democratize access to molecular diagnostics. +[OpenPCR][25] 是 Chai Open qPCR 的创建者 Josh Perfetto 和 Jessie Ho 的 PCR 测试设备套件。与以前的项目相比,这更像是一种 DIY 开源设备,但它具有相同的使用场景:使用环境测试来识别野外冠状病毒。正如该项目页面所指出的那样,“能够检测这些病原体的传统实时 PCR 机通常花费超过 30,000 美元,而且不适合在现场使用。”由于 OpenPCR 是用户构建的工具包,并且在 [GPLv3.0 许可证][26]下共享,因此该设备旨在使分子诊断的访问大众化。 ![OpenPCR][27] -From the OpenPCR [website][25], Copyright +*来自 OpenPCR [网站][25],版权所有* -And, like any good open source project, there is a derivative! [WildOpenPCR][28] by [GaudiLabs][29] in Switzerland is also shared under a [GPLv3.0 license][30]. +而且,就像任何优秀的开源项目一样,它也有一个衍生产品!瑞士的 [GaudiLabs][29] 推出的 [WildOpenPCR][28] 也以 [GPLv3.0 许可证][30]共享。 #### PocketPCR -Gaudi Labs' [PocketPCR][31] thermocycler is used to activate biological reactions by raising and lowering the temperature of a liquid in small test tubes. It can be powered with a simple USB power adapter, either tethered to a device or on its own, with preset parameters that don't require a computer or smartphone. +Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中液体的温度来激活生物反应。它可以通过简单的 USB 电源适配器供电,该适配器可以绑定到设备上,也可以单独使用,不需要计算机或智能手机时可使用预设参数。 ![PocketPCR][32] -From the PocketPCR [website][31], Copyright +*来自 PocketPCR [网站][31],版权所有* -Like the other PCR options described in this article, this device may facilitate environmental testing for coronavirus, although its project page does not explicitly state so. PocketPCR is shared under a [GPLv3.0 license][33]. +与本文所述的其他 PCR 产品一样,此设备可能有助于对冠状病毒进行环境测试,尽管其项目页面并未明确说明。PocketPCR 在 [GPLv3.0 许可证][33]下共享。 -#### Open Lung Low Resource Ventilator +#### Open Lung 低资源呼吸机 -The [Open Lung Low Resource Ventilator][34] is a quick-deployment ventilator that utilizes a [bag valve mask][35] (BVM), also known as an Ambu-bag, as a core component. Ambu-bags are mass-produced, certified, small, mechanically simple, and adaptable to both invasive tubing and masks. The OPEN LUNG ventilator will use micro-electronics to sense and control air pressure and flow, with the goal to enable semi-autonomous operation. +[Open Lung 低资源呼吸机][34]是一种快速部署的呼吸机,它以[气囊阀罩][35](BVM)(也称为 Ambu 气囊)为核心组件。Ambu 气囊已批量生产,经过认证,体积小,机械简单,并且适用于侵入性导管和口罩。 OPEN LUNG 呼吸机使用微电子技术来感测和控制气压和流量,以实现半自主运行。 ![Open Lung ventilator][36] -Open Lung [on GitLab][37] +*Open Lung,[GitLab][37]* -This early-stage project boasts a large team with hundreds of contributors, led by: Colin Keogh, David Pollard, Connall Laverty, and Gui Calavanti. It is shared under a [GPLv3.0 license][38]. +这个早期项目拥有一支由数百名贡献者组成的大型团队,领导者包括:Colin Keogh、David Pollard、Connall Laverty 和 Gui Calavanti。它是以 [GPLv3.0 许可证][38]共享的。 -#### Pandemic Ventilator +#### Pandemic 呼吸机 -The [Pandemic Ventilator][39] is a DIY ventilator prototype. Like the RepRap project, it uses commonly available hardware components in its design. The project was uploaded by user Panvent to Instructables more than 10 years ago, and there are six major steps to producing it. The project is shared under a [CC BY-NC-SA license][39]. This video shows the system in action: +[Pandemic 呼吸机][39]是 DIY 呼吸机的原型。像 RepRap 项目一样,它在设计中使用了常用的硬件组件。该项目已由用户 Panvent 于 10 多年前上传到 Instructables,并且有六个主要的生产步骤。该项目是以 [CC BY-NC-SA 许可证][39]共享的。 #### Folding at Home -[Folding at Home][40] is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It is a call-to-action for citizen scientists, researchers, and volunteers to use their computers at home to help run simulations, similar to the decommissioned [SETI@Home project][41]. If you're a technologist with capable computer hardware, Folding at Home is for you. +[Folding at Home][40] 是一个分布式计算项目,用于模拟蛋白质动力学,包括蛋白质折叠的过程以及与多种疾病有关的蛋白质运动。这是一个面向公民科学家、研究人员和志愿者的行动呼吁,类似于退役的 [SETI@Home 项目][41]中在家中使用计算机来运行解码计算。如果你是具备强大计算机硬件功能的技术人员,那么这个项目适合你。 ![Markov state model][42] -Vincent Voelz, CC BY-SA 3.0 +*Vincent Voelz,CC BY-SA 3.0* -Folding at Home uses Markov state models (shown above) to model the possible shapes and folding pathways a protein can take in order to look for new therapeutic opportunities. You can find out more about the project in Washington University biophysicist Greg Bowman's post on [how it works and how you can help][43]. +Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模蛋白质可能采取的形状和折叠途径,以寻找新的治疗机会。你可以在华盛顿大学生物物理学家 Greg Bowman 的帖子“[它是如何运作的以及如何提供帮助][43]”中找到有关该项目的更多信息。 -The project involves a consortium of academic laboratories, contributors, and corporate sponsors from many countries, including Hong Kong, Croatia, Sweden, and the United States. Folding at Home is shared under a [mix of GPL and proprietary licenses][44] on [GitHub][45] and is multi-platform for Windows, macOS, and GNU/Linux (e.g., Debian, Ubuntu, Mint, RHEL, CentOS, Fedora). +该项目涉及来自许多国家(包括香港、克罗地亚、瑞典和美国)的财团的学术实验室、贡献者和公司赞助者。 在 [GitHub][45] 上,[在混合了 GPL 和专有许可证][44]下可以共享,并且可以在 Windows、macOS 和 GNU/Linux(例如 Debian、Ubuntu、Mint、RHEL、CentOS、Fedora)。 -### Many other interesting projects +### 许多其他有趣的项目 -These projects are just a fraction of the activity happening in the open hardware space to solve or treat COVID-19. In researching this article, I discovered other projects worth exploring, such as: +这些项目只是在开放硬件领域中解决或治疗新冠病毒活动中的一小部分。在研究本文时,我发现了其他值得探索的项目,例如: - * [Open source ventilators, oxygen concentrators, etc.][46] by Coronavirus Tech Handbook - * [Helpful engineering][47] by ProjectOpenAir - * [Open source ventilator hackathon][48] on Hackaday - * [Specifications for simple open source mechanical ventilator][49] by Johns Hopkins emergency medicine resident Julian Botta - * [Coronavirus-related phishing, malware, and randomware on the rise][50] by Shannon Morse - * [Converting a low-cost CPAP blower into a rudimentary ventilator][51] by jcl5m1 - * [Forum A.I.R.E. discussion on open respirators and fans][52] (Spanish/español) - * [Special Issue on Open-Source COVID19 Medical Hardware][53] by Elsevier HardwareX +* Coronavirus Tech Handbook 提供的[开源呼吸机、氧气浓缩器等][46] +* 来自 ProjectOpenAir 的 [有用的工程][47] +* Hackaday 上的[开源呼吸机黑客马拉松][48] +* 约翰·霍普金斯急诊医学住院医师 Julian Botta 的[简单开源机械呼吸机规范][49] +* [与冠状病毒有关的网络钓鱼、恶意软件和随机软件正在增加][50],作者:Shannon Morse +* [将低成本的 CPAP 鼓风机转换为基本通风机][51],作者: jcl5m1 +* [A.I.R.E. 论坛上关于开放呼吸器和风扇的讨论][52](西班牙语) +* [关于新冠病毒的开源医疗硬件的特殊问题][53],作者:Elsevier HardwareX +这些项目遍布全球,而这种全球合作正是我们所需要的,因为病毒无视国界。新冠病毒大流行在不同时期以不同方式影响国家,因此我们需要一种分布式方法。 - -These projects are based all over the world, and this type of global cooperation is exactly what we need, as the virus ignores borders. The novel coronavirus pandemic affects countries at different times and in different ways, so we need a distributed approach. - -As my colleague Steven Abadie and I write in the [OSHdata 2020 Report][54], the open source hardware movement is a global movement. Participating individuals and organizations with certified projects are located in over 35 countries around the world and in every hemisphere. +正如我和同事 Steven Abadie 在 [OSHdata 2020 报告][54]中所写的那样,开源硬件运动是全球性运动。参与该认证项目的个人和组织遍布全球 35 个国家和每个半球。 ![Open source hardware map][55] -OSHdata, CC BY-SA 4.0 International +*OSHdata,CC BY-SA 4.0 国际版* -If you are interested in joining this conversation with open source hardware developers around the world, join the [Open Hardware Summit Discord][56] server with a dedicated channel for conversations about COVID-19. You can find roboticists, designers, artists, firmware and mechanical engineers, students, researchers, and others who are fighting this war together. We hope to see you there. +如果你有兴趣加入这场与全球开源硬件开发人员的对话,请加入[Open Hardware Summit Discord][56]服 务器,并通过专用渠道进行有关新冠病毒的讨论。你在这里可以找到机器人专家、设计师、艺术家、固件和机械工程师、学生、研究人员以及其他共同为这场战争而战的人。希望可以看到你。 -------------------------------------------------------------------------------- @@ -142,7 +140,7 @@ via: https://opensource.com/article/20/3/open-hardware-covid19 作者:[Harris Kenny][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[wxy](https://github.com/wxy) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From b0e5a59d73df81f69478ce174cd6edb47f3b83be Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:00:22 +0800 Subject: [PATCH 037/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200329=20The=20?= =?UTF-8?q?Keyring=20Concept=20in=20Ubuntu:=20What=20is=20It=20and=20How?= =?UTF-8?q?=20to=20Use=20it=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md --- ...in Ubuntu- What is It and How to Use it.md | 183 ++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md new file mode 100644 index 0000000000..e5eec51802 --- /dev/null +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -0,0 +1,183 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The Keyring Concept in Ubuntu: What is It and How to Use it?) +[#]: via: (https://itsfoss.com/ubuntu-keyring/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +The Keyring Concept in Ubuntu: What is It and How to Use it? +====== + +If you use [automatic login in Ubuntu][1] or other Linux distributions, you might have come across a pop-up message of this sort: + +**Enter password to unlock your login keyring +The login keyring did not get unlocked when you logged into your computer.** + +![Enter Password To Unlock Your Login Keyring Ubuntu][2] + +It keeps on popping up several times before disappearing if you keep on clicking cancel. You may wonder why do you keep seeing this keyring message all the time? + +Let me tell you something. It’s not an error. It’s a security feature. + +Surprised? Let me explain the keyring concept in Linux. + +### What is keyring in Linux and why is it used? + +![][3] + +Why do you use a keyring (also called [keychain][4]) in the real life? You use it to keep one or more keys grouped together so that they are easy to find and carry. + +It’s the same concept in Linux. The keyring feature allows your system to group various passwords together and keep it one place. + +Most desktop environments like GNOME, KDE, Xfce etc use an implementation of [gnome-keyring][5] to provide this keyring feature in Linux. + +This keyring keeps your ssh keys, GPG keys and keys from applications that use this feature, like Chromium browser. By default, the **keyring is locked with a master password** which is often the login password of the account. + +Every user on your system has its own keyring with (usually) the same password as that of the user account itself. When you login to your system with your password, your keyring is unlocked automatically with your account’s password. + +The problem comes when you [switch to auto-login in Ubuntu][1]. This means that you login to the system without entering the password. In such case, your keyring is not unlocked automatically. + +#### Keyring is a security feature + +Remember I told you that the keyring was a security feature? Now imagine that on your Linux desktop, you are using auto-login. Anyone with access to your desktop can enter the system without password but you have no issues with that perhaps because you use it to browse internet only. + +But if you use a browser like Chromium or [Google Chrome in Ubuntu][6], and use it to save your login-password for various websites, you have an issue on your hand. Anyone can use the browser and login to the websites for which you have saved password in your browser. That’s risky, isn’t it? + +This is why when you try to use Chrome, it will ask you to unlock the keyring repeatedly. This ensures that only the person who knows the keyring’s password (i.e. the account password) can use the saved password in browser for logging in to their respective websites. + +If you keep on cancelling the prompt for keyring unlock, it will eventually go away and let you use the browser. However, the saved password won’t be unlocked and you’ll see ‘sync paused’ in Chromium/Chrome browsers. + +![Sync paused in Google Chrome][7] + +#### If this keyring always exited, why you never saw it? + +That’s a valid question if you have never seen this keyring thing in your Linux system. + +If you never used automatic login (or changed your account’s password), you might not even have realized that this feature exists. + +This is because when you login to your system with your password, your keyring is unlocked automatically with your account’s password. + +Ubuntu (and other distributions) asks for password for common admin tasks like modifying users, installing new software etc irrespective of whether you auto login or not. But for regular tasks like using a browser, it doesn’t ask for password because keyring is already unlocked. + +When you switch to automatic login, you don’t enter the password for login anymore. This means that the keyring is not unlocked and hence when you try to use a browser which uses the keyring feature, it will ask to unlock the keyring. + +#### You can easily manage the keyring and passwords + +Where is this keyring located? At the core, it’s a daemon (a program that runs automatically in the background). + +Don’t worry. You don’t have to ‘fight the daemon’ in the terminal. Most desktop environments come with a graphical application that interacts with this daemon. On KDE, there is KDE Wallet, on GNOME and others, it’s called Password and Keys (originally known as [Seahorse][8]). + +![Password And Keys App in Ubuntu][9] + +You can use this GUI application to see what application use the keyring to manage/lock passwords. + +As you can see, my system has the login keyring which is automatically created. There is also a keyrings for storing GPG and SSH keys. The [Certificates][10] is for keeping the certificates (like HTTPS certificates) issued by a certificate authority. + +![Password and Keys application in Ubuntu][11] + +You can also use this application to manually store passwords for website. For example, I created a new password-protected keyring called ‘Test’ and stored a password in this keyring manually. + +This is slightly better than keeping a list of passwords in a text file. At least in this case your passwords can be viewed only when you unlock the keyring with password. + +![Saving New Password Seahorse][12] + +One potential problem here is that if you format your system, the manually saved passwords are definitely lost. Normally, you make backup of personal files, not of all the user specific data such as keyring files. + +There is way to handle that. The keyring data is usually stored in ~/.local/share/keyrings directory. You can see all the keyrings here but you cannot see its content directly. If you remove the password of the keyring (I’ll show the steps in later section of this article), you can read the content of the keyring like a regular text file. You can copy this unlocked keyring file entirely and import it in the Password and Keys application on some other Linux computer (running this application). + +So, let me summarize what you have learned so far: + + * Most Linux has this ‘keyring feature’ installed and activated by default + * Each user on a system has its own keyring + * The keyring is normally locked with the account’s password + * Keyring is unlocked automatically when you login with your password + * For auto-login, the keyring is not unlocked and hence you are asked to unlock it when you try to use an application that uses keyring + * Not all browsers or application use the keyring feature + * There is a GUI application installed to interact with keyring + * You can use the keyring to manually store passwords in encrypted format + * You can change the keyring password on your own + * You can export (by unlocking the keyring first) and import it on some other computer to get your manually saved passwords + + + +### Change keyring password + +Suppose you changed your account password. Now when you login, your system tries to unlock the keyring automatically using the new login password. But the keyring still uses the old login password. + +In such a case, you can change the keyring password to the new login password so that the keyring gets unlocked automatically as soon as you login to your system. + +Open the Password and Keys application from the menu: + +![Look for Password and Keys app in the menu][9] + +Now, right click on the Login keyring and click on Change Password: + +![Change Keyring Password][13] + +What if you don’t remember the old login password? + +You probably know that it is [easy to reset forgotten password in Ubuntu][14]. The problem comes with the keyring in such cases. You changed the account password but you don’t remember the old account password that is still used by the keyring. + +Now you cannot change it because you don’t know the old password. What to do now? + +In such a case, you’ll have to remove the entire keyring itself. You can do that from the Passwords and Keys application: + +![Delete Keyring Ubuntu][15] + +It will ask for your confirmation: + +![Delete Keyring][16] + +Alternatively, you may also manually delete the keyring files in ~/.local/share/keyrings directory. + +When the old keyring is removed and you try to use Chrome/Chromium, it will ask you to create new keyring. + +![New Keyring Password][17] + +You can use the new login password so that the keyring gets unlocked automatically. + +### Disable keyring password + +In cases where you want to use automatic login but don’t want to unlockk keyring manually, you may choose to disable the keyring with a workaround. Keep in mind that you are disabling a security feature so think twice before doing so. + +The process is similar to changing keyring password. Open Password and Keys application and go on to change the keyring password. + +The trick is that when it asks to change the password, don’t enter a new password and hit Continue instead. This will remove any password from the keyring. + +![Disable Keyring password by not setting any password at all][18] + +This way, the keyring will have no password and it remains unlocked all the time. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ubuntu-keyring/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/ubuntu-automatic-logon/ +[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/enter-password-to-unlock-your-login-keyring-ubuntu.jpg?ssl=1 +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/keyring-concept-ubuntu-1.png?ssl=1 +[4]: https://en.wikipedia.org/wiki/Keychain +[5]: https://wiki.archlinux.org/index.php/GNOME/Keyring +[6]: https://itsfoss.com/install-chrome-ubuntu/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/sync-paused-keyring-ubuntu.jpg?ssl=1 +[8]: https://wiki.debian.org/Seahorse +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/password-and-keys-app-ubuntu.jpg?ssl=1 +[10]: https://help.ubuntu.com/lts/serverguide/certificates-and-security.html +[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/keyring-pasword-ubuntu.png?ssl=1 +[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/saving-new-password-seahorse.png?ssl=1 +[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/change-keyring-password.png?ssl=1 +[14]: https://itsfoss.com/how-to-hack-ubuntu-password/ +[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/delete-keyring-ubuntu.jpg?ssl=1 +[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/delete-keyring.jpg?ssl=1 +[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/new-keyring-password.jpg?ssl=1 +[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/disable-keyring-password-ubuntu.png?ssl=1 From e6a2e2e031fd2d2186eddfbf2cc2da36a21dfccc Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:05:22 +0800 Subject: [PATCH 038/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200329=20How=20?= =?UTF-8?q?to=20install=20Microsoft=20TrueType=20Fonts=20on=20Ubuntu-based?= =?UTF-8?q?=20Distributions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md --- ...ype Fonts on Ubuntu-based Distributions.md | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md diff --git a/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md new file mode 100644 index 0000000000..e502219448 --- /dev/null +++ b/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md @@ -0,0 +1,114 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions) +[#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/) +[#]: author: (Community https://itsfoss.com/author/itsfoss/) + +How to install Microsoft TrueType Fonts on Ubuntu-based Distributions +====== + +If you open some Microsoft documents in LibreOffice on Linux, you’ll notice that the fonts look a bit different. You’ll also notice that you cannot find common fonts like [Times New Roman][1], Arial etc. + +Don’t worry. I’ll show you how to install these fonts in Ubuntu and other Ubuntu-based Linux distributions. But before that, let me tell you why these fonts are not available by default. + +### Why Microsoft fonts are not installed by default in Linux? + +![][2] + +Times New Roman, Arial and other such fonts are owned by Microsoft and they are not open source. Many Linux distributions don’t provide proprietary software by default to avoid licensing issue. + +This is why Ubuntu and other Linux distributions use an open source fonts “Liberation fonts” to substitute Microsoft fonts by default. The [Liberation Fonts][3] were created by [Red Hat][4] to substitute Arial, Arial Narrow, Times New Roman and Courier New as their width is the same. When you open a document written in Times New Roman, the equivalent Liberation Font will be used to keep the document uninterrupted. + +However Liberation fonts are not identical to Microsoft’s fonts and in some cases you may need to use Arial or Times New Roman. A very common scenario is that Microsoft’s fonts are the only option is in schools, universities and other public and private organizations. They require you to submit the documents in one of those fonts. + +Good thing is that you can install the Microsoft fonts on Ubuntu and other distributions easily. This way, you will be able to increase compatibility of LibreOffice and have the freedom to choose an open source office software. + +### Installing Microsoft fonts on Ubuntu-based Linux distributions + +You can [install new fonts in Ubuntu][5] by downloading them on your own. But since Microsoft fonts are very popular (and is provided free of cost), Ubuntu provides an easy way of installing it. + +Be aware that despite Microsoft has released its core fonts for free of charge, the usage of the fonts is restricted in other operating systems. You’ll have to read and accept EULA (End User License Agreement) before installing Microsoft fonts in Ubuntu. + +These fonts are [available in the multiverse repositories so make sure to enable it][6] first: + +``` +sudo add-apt-repository multiverse +``` + +After that, you can update your Ubuntu repository cache and install the Microsoft fonts like this: + +``` +sudo apt update && sudo apt install ttf-mscorefonts-installer +``` + +Press tab to select **OK** and the press enter when the Microsoft’s End user agreement appears. + +![Press tab to highlight the selection][7] + +Click **Yes** to accept the Microsoft’s agreement: + +![Use tab key to make a selection and then press enter][8] + +When the installation is done, you should update the font cache using the command below: + +``` +sudo fc-cache -f -v +``` + +![][9] + +If you open the LibreOffice now, you’ll see the Microsoft [TrueType fonts][10]. + +![][11] + +In case that you accidentally reject the license agreement, you can reinstall the installer with this command: + +``` +sudo apt install –reinstall ttf-mscorefonts-installer +``` + +Microsoft TrueType fonts are also available via the [Ubuntu Restricted Extras package][12] that contains other proprietary media codecs to play files like MP3 etc. + +Don’t underestimate proprietary fonts + +You may think what’s the big deal with fonts? After all, it’s just a font, not a crucial piece of software, right? +But did you know that for years, [Netflix paid millions of dollars for the proprietary font][13] it used? At the end, they created their own custom fonts and that saved them a considerable amount of money. + +I hope you find this quick tutorial useful. More productivity tutorials are down the line, leave your comments below and subscribe to our social media for more! + +![][14] + +### Dimitrios Savvopoulos + +Dimitrios is an MSc Mechanical Engineer but a Linux enthusiast in heart. He is well settled in Solus OS but curiosity drives him to constantly test other distros. Challenge is part of his personality and his hobby is to compete from 5k to the marathon distance. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-microsoft-fonts-ubuntu/ + +作者:[Community][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/itsfoss/ +[b]: https://github.com/lujun9972 +[1]: https://en.wikipedia.org/wiki/Times_New_Roman +[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-fonts-ubuntu.png?ssl=1 +[3]: https://en.wikipedia.org/wiki/Liberation_fonts +[4]: https://en.wikipedia.org/wiki/Red_Hat +[5]: https://itsfoss.com/install-fonts-ubuntu/ +[6]: https://itsfoss.com/ubuntu-repositories/ +[7]: https://i1.wp.com/i.imgur.com/JoEJp5w.png?ssl=1 +[8]: https://i0.wp.com/i.imgur.com/M8zTc7f.png?ssl=1 +[9]: https://i0.wp.com/i.imgur.com/Cshle6S.png?ssl=1 +[10]: https://en.wikipedia.org/wiki/TrueType +[11]: https://i1.wp.com/i.imgur.com/9oIu3oj.png?ssl=1 +[12]: https://itsfoss.com/install-media-codecs-ubuntu/ +[13]: https://thehustle.co/nextflix-sans-custom-font/ +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1 From f672f2556e4021d71e6eb90b773a408cfd650146 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:06:06 +0800 Subject: [PATCH 039/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200329=20Turn?= =?UTF-8?q?=20Your=20Regular=20TV=20into=20a=20Smart=20TV=20With=20KDE=20P?= =?UTF-8?q?lasma=20Bigscreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md --- ...to a Smart TV With KDE Plasma Bigscreen.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md diff --git a/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md new file mode 100644 index 0000000000..3db70ec4e1 --- /dev/null +++ b/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md @@ -0,0 +1,96 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen) +[#]: via: (https://itsfoss.com/kde-plasma-bigscreen/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen +====== + +_**Brief: KDE’s upcoming Plasma Bigscreen project lets you use open source technologies to turn your regular TV into a smart one.**_ + +Smart TVs are the new normal these days. Mostly based on Android, these smart TVs let you play YouTube, Netflix, Spotify and other streaming services. You can even use voice commands to control your smart TV. + +One major problem with these so-called [smart TVs are that they probably are spying on you][1]. Your data is being collected with or without your knowledge. + +This is the problem KDE’s [Plasma Bigscreen project][2] is aiming to solve. + +### Plasma Bigscreen: Make your TV smart with open source technologies + +![][3] + +You probably already know about the [KDE][4] project. It started as a Linux desktop environment project more than 20 years ago. The KDE project grew bigger and this is why they created Plasma desktop environment to make it clear that KDE is no more just “K Desktop Environment”. + +The Plasma project itself is quite versatile. You can of course use it on your desktop Linux computer. [Plasma also has a mobile version][5] that you can run on Linux-based smartphones like [Librem5][6] and [PinePhone][7]. + +The Plasma Bigscreen is a new project from KDE that aims to provide interface and features similar to what Smart TVs provide. + +All you need is a [single board computer like Raspberry Pi][8] and a TV with HDMI port. Install Plasma Bigscreen on your device and connect it to your TV. + +### Plasma Bigscreen features: More than just a media server + +![YouTube In Plasma Bigscreen][9] + +Though it may look like one at the first glance, but Plasma Bigscreen is not like Kodi and other [media servers for Linux][10]. It’s more than that. + +#### Control with your regular remote + +You don’t need a new specialized remote control. Thanks to [CEC][11], you can use your regular TV remote control. + +#### Voice control with open source Mycroft AI + +Plasma Bigscreen takes advantage of the open source Mycroft AI project. With Mycroft built in to Bigscreen, you can use voice command to play content, check weather and control other aspects of your smart TV. You can further train this AI by teaching it new skills. + +#### Traditional desktop applications + +Plasma Bigscreen delivers not only media-rich applications, but also traditional desktop applications redesigned to fit the Bigscreen experience. + +#### Free and open source software + +The most important feature is that it is an open source project and it uses other open source technologies to give you the complete control over your data and your smart TV. + +Since it is open source, I believe once it is released, there will be a few vendors providing it as a plug and play device. + +### How to get Plasma Bigscreen? + +Plasma Bigscreen is still in beta phase and there is no definite timeline for the stable release. + +However, the beta version is also working good on devices like Raspberry Pi 4. Here’s a video by one of the developers working on this project. + +[Subscribe to our YouTube channel for more Linux videos][12] + +If you have a Raspberry Pi 4, you can [download Plasma Bigscreen][13] beta version from its official download page and follow the steps [here][14] to install it. + +Personally, I am really excited about it. I am going to take out some time and try it on my [Raspberry Pi 4][15]. What about you? Do you think the project has potential? Will you give it a try? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/kde-plasma-bigscreen/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://www.zdnet.com/article/fbi-warns-about-snoopy-smart-tvs-spying-on-you/ +[2]: https://plasma-bigscreen.org/ +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/plasma-bigscreen-menu.jpg?ssl=1 +[4]: https://kde.org/ +[5]: https://itsfoss.com/kde-announces-plasma-mobile/ +[6]: https://itsfoss.com/librem-linux-phone/ +[7]: https://itsfoss.com/pinephone/ +[8]: https://itsfoss.com/raspberry-pi-alternatives/ +[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/youtube-in-plasma-bigscreen.jpg?ssl=1 +[10]: https://itsfoss.com/best-linux-media-server/ +[11]: http://libcec.pulse-eight.com/ +[12]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[13]: https://plasma-bigscreen.org/#download-jumpto +[14]: https://plasma-bigscreen.org/manual/ +[15]: https://itsfoss.com/raspberry-pi-4/ From 31b4c1b3c9d34f0acfd416b2e88e61a0365b7163 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:07:39 +0800 Subject: [PATCH 040/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200329=20Oracle?= =?UTF-8?q?=20Announces=20Java=2014!=20How=20to=20Install=20it=20on=20Ubun?= =?UTF-8?q?tu=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md --- ...a 14- How to Install it on Ubuntu Linux.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md diff --git a/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md new file mode 100644 index 0000000000..17a04e4f91 --- /dev/null +++ b/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Oracle Announces Java 14! How to Install it on Ubuntu Linux) +[#]: via: (https://itsfoss.com/java-14-ubuntu/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Oracle Announces Java 14! How to Install it on Ubuntu Linux +====== + +Recently, Oracle announced the general availability of Java 14 (or the Oracle JDK 14). If you are someone who wants to have the latest and greatest to experiment and develop stuff – you can try installing Java 14 on your Linux system. + +Oracle JDK 14 (or simply Java 14) [release][1] includes a couple of new features if you’re interested to preview them. I’ve linked them below: + + * [Pattern matching for instanceof][2] + * [Records][3] + * [Text Blocks][4] + + + +In addition to the preview features, it packs in several improvements and additions. Quoting the press release, they mentioned the additional improvements as well: + +> Additionally, the latest Java release adds Java language support for switch expressions, exposes new APIs for continuous monitoring of JDK Flight Recorder data, extends the availability of the low-latency Z Garbage Collector to macOS and Windows, and adds, in incubator modules, the packaging of self-contained Java applications and a new Foreign memory access API for safe, efficient access to memory outside of the Java heap. + +Of course, if you want to dive into the exact details, you should check the [official announcement][1]. + +In this tutorial, I’ll show you the easy way to get Java 14 installed on your Ubuntu system. Read on. + +**Note:** If you opt for Oracle Java 11 or above, you should learn about the new [Oracle Technology Network License Agreement][5] to know how it affects personal users, developers, and commercial organizations. Usually, these are free to use for development and testing – but not for production. + +### How To Install Java 14 on Ubuntu Linux? + +![][6] + +For reference, I’ve successfully tried it on **Pop!_OS 19.10** where I had the **OpenJDK 11** installed as the default. + +Here, we are going to use the Java 14 installer (originally based on WebUpd8 Java Package) by [Linux Uprising][7]. + +Simply enter the commands below in the terminal to get it installed: + +``` +sudo add-apt-repository ppa:linuxuprising/java +sudo apt update +sudo apt install oracle-java14-installer +``` + +This should do the job. And, when it’s done, if you want to make it the default, you can type in the following command to do it: + +``` +sudo apt install oracle-java14-set-default +``` + +It is worth noting that this is only for Ubuntu-based distributions. If you want to install it on Debian and other Linux distributions, you can follow [Linux Uprising’s detailed guide][7] on installing Java 14 as well. + +### Wrapping Up + +Of course, while this is about the bleeding edge features – if you do not want to break things, you might want to hold on to Java 11. If you want to experiment while knowing the risks, go ahead and give it a try! + +Feel free to let me know your thoughts on Java 14 in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/java-14-ubuntu/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://www.oracle.com/corporate/pressrelease/oracle-announces-java14-031720.html +[2]: https://openjdk.java.net/jeps/305 +[3]: https://openjdk.java.net/jeps/359 +[4]: https://openjdk.java.net/jeps/368 +[5]: https://www.oracle.com/technetwork/java/javase/overview/oracle-jdk-faqs.html +[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/install-java-14-ubuntu.png?ssl=1 +[7]: https://www.linuxuprising.com/2020/03/how-to-install-oracle-java-14-jdk14-on.html From 866df81cc9f788816826db7338f08af28c180067 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:08:34 +0800 Subject: [PATCH 041/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200329=20Nextcl?= =?UTF-8?q?oud:=20The=20Swiss=20Army=20Knife=20of=20Remote=20Working=20Too?= =?UTF-8?q?ls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md --- ...wiss Army Knife of Remote Working Tools.md | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md diff --git a/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md b/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md new file mode 100644 index 0000000000..82d84f984b --- /dev/null +++ b/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md @@ -0,0 +1,154 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Nextcloud: The Swiss Army Knife of Remote Working Tools) +[#]: via: (https://itsfoss.com/nextcloud/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +Nextcloud: The Swiss Army Knife of Remote Working Tools +====== + +Remote working culture has been booming for past few years in coding, graphics and other IT related fields. But the recent [Coronavirus pandemic][1] has made it mandatory for the companies to work from home if it’s possible for them. + +While there are tons of tools to help you and your organization in working from home, let me share one open source software that has the features of several such tools combined into one. + +### Nextcloud Hub: A Suite of Essential Tools for Remote Collaboration + +[Nextcloud][2] is an open source software that can be used to store files, photos and videos for personal usage like Dropbox. But it’s more than just a private [cloud service][3]. + +You can add more than one users in Nextcloud and turn it into a collaboration platform for editing files in real time, chat with users, manage calendars, assign and manage tasks and more. + +This video gives a good overview of its main features: + +[Subscribe to our YouTube channel for more Linux videos][4] + +### Main Features of Nextcloud + +Let me highlight the main features of Nextcloud: + +#### Sync files and share + +![Nextcloud Files][5] + +You can create workspaces based on user groups and share files in those folders. Users can create private files and folders and share them with selected users internally or externally (if they are allowed to). You can lock files in read only mode as well. + +It also has a very powerful search feature that lets you search files from their name or tags. You can comment on files to provide feedback. + +Text files can be edited in real time thanks to its builtin markdown editor. You can use OnlyOffice or Collabora to allow editing of docs, spreadsheet and presentations in real time. + +It also has version control for the files so that you can revert changes easily. + +#### Text Chat, Audio Chat, Video Chat and Web Meetings + +![Nextcloud Video Call][6] + +With NextCloud Talk, you can interact with other users by text messaging, audio calls, video calls and group calls for web meetings. You can also take meeting minutes during the video calls and share your screen for presentations. There is also a mobile app to stay connected all the time. + +You can also create Slack like channels (known as circles) to communicate between members concerned with a specific topic. + +#### Calendar, Contacts & Mail + +![Calendar Nextcloud][7] + +You can manage all of your organization’s contact, divide them into groups based on departments. + +With the calendar, you can see when someone is free or what meetings are taking place, like you do on Outlook. + +You can also use the Mail feature and import the emails from other providers to use them inside Nextcloud interface. + +#### Kanban project management with Deck + +![][8] + +Like Trello and Jira, you can create boards for various projects. You can create cards for each tasks, assign them to users and they can move it between the list based on the status of the task. It’s really up to you how you create boards to manage your projects in Kanban style. + +#### Plenty of add-ons to get more out of Nextcloud + +![Password Manager][9] + +Nextcloud also has several add-ons (called apps). Some are developed by Nextcloud teams while some are from third-party developers. You may use them to extend the capability of Nextcloud. + +For example, you can add a [Feedly style feed reader][10] and read news from various sources. Similarly, the [Paswords addon][11] lets you use Netxcloud as a password manager. You can even share common passwords with other Nextcloud users. + +You can explore [all the apps on its website][12]. You’ll also notice the ratings of apps that will help you decide if you should use an app or not. + +#### Many more features + +Let me summarize all the features here: + + * Open source software that lets you own your data on your own servers + * Seamlessly edit office documents together with others + * Communicate with other members of your organization and do audio and video calls and held web meetings + * Calendar lets you book meetings, brings busy view for meetings and resource booking and more + * Manage users locally or authenticate through LDAP / Active Directory, Kerberos and Shibboleth / SAML 2.0 and more + * Secure data with powerful file access control, multi-layer encryption, machine-learning based authentication protection and advanced ransomware recovery capabilities + * Access existing storage silos like FTP, Windows Network Drives, SharePoint, Object Storage and Samba shares seamlessly through Nextcloud. + * Automation: Automatically turn documents in PDFs, send messages to chat rooms and more! + * Built in ONLYOFFICE makes collaborative editing of Microsoft Office documents accessible to everyone + * Users can install desktop and mobile apps or simply use it in web browser + + + +### How to get Nextcloud + +![][13] + +NextCloud is free and open source software. You can download it and install it on your own server. + +You can use cloud server providers like [Linode][14] or [DigitalOcean][15] that allow you to deploy a brand new Linux server within minutes. And then you can use Docker to install NextCloud. At It’s FOSS, we use [Linode][14] for our NextCloud instance. + +If you don’t want to do that, you can [signup with one of the Nextcloud partners][16] that provide you with configured Nextcloud instance. Some providers also provide a few GB of free data to try it. + +Nextcloud also has an [enterprise plan][17] where Nextcloud team itself handles everything for the users and provide premium support. You can check their pricing [here][18]. + +If you decide to use Nextcloud, you should refer to its documentation or community forum to explore all its features. + +### Conclusion + +At It’s FOSS, our entire team works remote. We have no centralized office anywhere and all of us work from our home. Initially we relied on non-open source tools like Slack, Google Drive etc but lately we are migrating to their open source alternatives. + +Nextcloud is one of the first software we tried internally. It has features of Dropbox, Google Docs, [Slack][19], [Trello][20], Google Hangout all combined in one software. + +NextCloud works for most part but we found it struggling with the video calls. I think that has to do with the fact that we have it installed on a server with 1 GB of RAM that also runs some other web services like [Ghost CMS][21]. We plan to move it to a server with better specs. We’ll see if that should address these issues. + +Since the entire world is struggling with the Coronavirus pandemic, using a solution like Nextcloud could be helpful for you and your organization in working from home. + +How are you coping during the Coronavirus lockdown? Like [Linus Torvalds’ advice on remote working][22], do you also have some suggestion to share with the rest of us? Please feel free to use the comment section. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/nextcloud/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://en.wikipedia.org/wiki/2019%E2%80%9320_coronavirus_pandemic +[2]: https://nextcloud.com/ +[3]: https://itsfoss.com/cloud-services-linux/ +[4]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_files.png?ssl=1 +[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_video_call.jpg?ssl=1 +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/calendar_nextcloud.jpeg?ssl=1 +[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_kanban_project_management_app.jpeg?ssl=1 +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/passman.png?fit=800%2C389&ssl=1 +[10]: https://apps.nextcloud.com/apps/news +[11]: https://apps.nextcloud.com/apps/passwords +[12]: https://apps.nextcloud.com/ +[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud-feature.jpg?ssl=1 +[14]: https://www.linode.com/?r=19db9d1ce8c1c91023c7afef87a28ce8c8c067bd +[15]: https://m.do.co/c/d58840562553 +[16]: https://nextcloud.com/signup/ +[17]: https://nextcloud.com/enterprise/ +[18]: https://nextcloud.com/pricing/ +[19]: https://slack.com/ +[20]: https://trello.com/ +[21]: https://itsfoss.com/ghost-3-release/ +[22]: https://itsfoss.com/torvalds-remote-work-advice/ From 30aaa8da722cba0a05c63b4f3eb1507bd783c1f1 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:11:13 +0800 Subject: [PATCH 042/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200328=20Open?= =?UTF-8?q?=20source=20fights=20against=20COVID-19,=20Google's=20new=20sec?= =?UTF-8?q?urity=20tool=20written=20in=20Python,=20and=20more=20open=20sou?= =?UTF-8?q?rce=20news?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md --- ...en in Python, and more open source news.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md diff --git a/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md b/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md new file mode 100644 index 0000000000..dce9c83a0e --- /dev/null +++ b/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Open source fights against COVID-19, Google's new security tool written in Python, and more open source news) +[#]: via: (https://opensource.com/article/20/3/news-march-28) +[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) + +Open source fights against COVID-19, Google's new security tool written in Python, and more open source news +====== +Catch up on the biggest open source headlines from the past two weeks. +![][1] + +In this edition of our open source news roundup, we take a look open source solutions for COVID-19, Google's new security tool, code cleanup software from Uber, and more! + +### Using open source in the fight against COVID-19 + +When COVID-19 started its march around the world, open source [stepped up][2] to try to help stop it. That includes using open data to [create tracking dashboards and apps][3], designing ventilators, and developing protective gear. + +Scientists at the University of Waterloo in Canada have teamed with artificial intelligence firm DarwinAI to create an open source tool "[to identify signs of Covid-19 in chest x-rays][4]." Called COVID-Net, it's neural network "that is particularly good at recognizing images." The dataset the researchers are using is [available on GitHub][5], which includes a link the software. + +Additionally, many [open source hardware projects][6] are underway to expedite the search for a cure.  + +### Google releases tool to fight USB keystroke injection attacks + +One of the sneakiest and potentially most malicious ways to hack a computer is a USB keystroke injection attack. Using a compromised USB device connected to a computer, a hacker can run commands without you even noticing. Google's making it easier for Linux users to fight back against these kinds of attacks by releasing [an open source detection tool][7]. + +Called USB Keystroke Injection Protection, the tool detects "if the keystrokes have been made without human involvement". It does that by measuring "the timing of keystrokes coming from connected USB devices." Sebastian Neuner of Google's Information Security Engineering Team said that while the USB Keystroke Injection Protection tool isn't the last word in defense against these kinds of attacks, but offers "another layer of protection and to defend a user sitting in front of their unlocked machine by them seeing the attack happening." + +You can find the Python source code for the tool [on GitHub][8]. + +### Uber makes code deletion tool open source + +As applications get bigger, they often contain code that's either no longer used or which is obsolete. That added code make software more difficult to maintain. To help solve the problem of quickly finding that redundant code, Uber recently [open sourced a tool called Pirhana][9]. + +Pirhana scans code for [feature flags][10], looking for ones that are no longer used. The software then deletes the unused flags from the code. At the moment, Pirhana works with software written in the Objective-C, Swift, and Java languages. Uber's developers hope the number of supported languages will increase "now that outside developers have an opportunity to contribute to the project." + +You can grab [Pirhana's source code][11] from its repository on GitHub + +#### In other news + + * [Singapore government to open source contact-tracing protocol][12] + * [European Commission to use open source messaging service Signal][13] + * [Spanish software to computerize healthcare in Cameroon and India][14] + * [ING Open-Sources Lion, Its White-Label Web Component Library][15] + * [Open Source Goes Mainstream – How Sharing Is Shaping The Future Of Music][16] + + + +Thanks, as always, to Opensource.com staff members and [Correspondents][17] for their help this week. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/news-march-28 + +作者:[Scott Nesbitt][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/scottnesbitt +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/weekly_news_roundup_tv.png?itok=tibLvjBd +[2]: https://jaxenter.com/covid-19-open-source-170237.html +[3]: https://opensource.com/article/20/3/open-source-software-covid19 +[4]: https://www.technologyreview.com/s/615399/coronavirus-neural-network-can-help-spot-covid-19-in-chest-x-ray-pneumonia/ +[5]: https://github.com/lindawangg/COVID-Net +[6]: https://opensource.com/article/20/3/open-hardware-covid19 +[7]: https://www.zdnet.com/article/google-linux-systems-can-use-this-new-tool-against-usb-keystroke-injection-attacks/ +[8]: https://github.com/google/ukip +[9]: https://siliconangle.com/2020/03/17/ubers-open-source-piranha-tool-hunts-redundant-application-code/ +[10]: https://en.wikipedia.org/wiki/Feature_toggle +[11]: https://github.com/uber/piranha +[12]: https://www.computerweekly.com/news/252480501/Singapore-government-to-open-source-contact-tracing-protocol +[13]: https://joinup.ec.europa.eu/collection/open-source-observatory-osor/news/signal-messaging-service +[14]: https://intallaght.ie/spanish-software-to-computerize-healthcare-in-cameroon-and-india/ +[15]: https://www.infoq.com/articles/ing-open-sources-lion-web-component/ +[16]: https://www.forbes.com/sites/andreazarczynski/2020/03/19/open-source-goes-mainstream--how-sharing-is-shaping-the-future-of-music/#9e1ca1290013 +[17]: https://opensource.com/correspondent-program From c4c558753279ec9339df1bfae85f48890ac70942 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:12:33 +0800 Subject: [PATCH 043/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200327=20Build?= =?UTF-8?q?=20a=20private=20chat=20server=20with=20a=20Raspberry=20Pi=20an?= =?UTF-8?q?d=20Rocket.Chat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md --- ...ver with a Raspberry Pi and Rocket.Chat.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md diff --git a/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md b/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md new file mode 100644 index 0000000000..26e823de79 --- /dev/null +++ b/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md @@ -0,0 +1,102 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Build a private chat server with a Raspberry Pi and Rocket.Chat) +[#]: via: (https://opensource.com/article/20/3/raspberry-pi-rocketchat) +[#]: author: (Giuseppe Cassibba https://opensource.com/users/peppe8o) + +Build a private chat server with a Raspberry Pi and Rocket.Chat +====== +Create your own truly private chat and messaging solution with these +simple, cost-effective open source tools. +![Chat via email][1] + +The internet offers plenty of free messaging services. Applications like WhatsApp and Viber are part of our daily life and are the most common way we communicate with relatives and friends. But security awareness is increasing the demand for a truly private chat solution. Furthermore, messaging apps take up a lot of space in our devices, so an alternative chat channel could be useful to share media, info, and contacts with our friends. + +Today we are going to see how to install a private chat and messaging server with a [Raspberry Pi][2] and Rocket.Chat. + +### What is Rocket.Chat? + +[Rocket.Chat][3] is an open source solution that provides an enhanced chat service. It includes collaboration tools like media sharing, screen sharing, and video/audio calling support. + +It can be used both via browser or from apps available in all the main app stores (Google Play, App Store, etc.). + +In addition to the community version, Rocket.Chat also offers Enterprise and Professional versions, including support and additional features. + +### What we need + +For this project, I’m going to use a cheaper Raspberry Pi 3 model A+. RPI 3 models B and B+, and RPI 4 model B should also work in the same way. + +I also suggest a performing SD card, because Rocket.Chat can put a heavy workload on our Raspberry Pi. As discussed in other articles, a performing SD card strongly improves Raspbian OS performance. + +We’ll use a lite version of Raspbian with pre-configured WiFi access and SSH service, so ![][4] there will no need for keyboards or HDMI cables. + +### Step-by-step procedure + +Start by [installing the last version of Raspbian Buster Lite][5]. + +We’ll simplify Rocket.Chat installation by using [Snap][6]. Login via SSH and type from the terminal: + + +``` +sudo apt-get update +sudo apt-get upgrade +``` + +Install Snap: + + +``` +`sudo apt-get install snapd` +``` + +For Snap installation, we need a system reboot to make it work: + + +``` +`sudo reboot` +``` + +Login again via SSH and install the Rocket.Chat server with the simple command: + + +``` +`sudo snap install rocketchat-server` +``` + +After installing from the terminal, please wait a while for Rocket.Chat to initialize its database and services. Have a cup of tea, and after a few minutes you should be able to reach with your browser the address http://<<YOUR_RPI_IP_ADDRESS>>:3000 and you should see the following: + +![Rocket Chat setup wizard][7] + +Complete the required forms, and everything should go fine. After four simple setup windows, you should reach the Rocket.Chat home page: + +![Rocket Chat home page][8] + +Enjoy! + +_This article originally posted on [peppe8o.com][9], reposted with permission._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/raspberry-pi-rocketchat + +作者:[Giuseppe Cassibba][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/peppe8o +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_chat_communication_message.png?itok=LKjiLnQu (Chat via email) +[2]: https://opensource.com/resources/raspberry-pi +[3]: https://rocket.chat/ +[4]: https://ir-na.amazon-adsystem.com/e/ir?t=peppe8o0b-20&l=am2&o=1&a=B07KKBCXLY +[5]: https://peppe8o.com/2019/07/install-raspbian-buster-lite-in-your-raspberry-pi/ +[6]: https://snapcraft.io/ +[7]: https://opensource.com/sites/default/files/uploads/rocket-chat-setup-wizard.jpg (Rocket Chat setup wizard) +[8]: https://opensource.com/sites/default/files/uploads/rocket-chat-home.jpg (Rocket Chat home page) +[9]: https://peppe8o.com/private-chat-and-messaging-server-with-raspberry-pi-and-rocket-chat/ From d6e2692244d0026c47435073d41d18010e6ee7ec Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:13:33 +0800 Subject: [PATCH 044/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200327=20How=20?= =?UTF-8?q?open=20source=20software=20is=20fighting=20COVID-19?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200327 How open source software is fighting COVID-19.md --- ...en source software is fighting COVID-19.md | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 sources/tech/20200327 How open source software is fighting COVID-19.md diff --git a/sources/tech/20200327 How open source software is fighting COVID-19.md b/sources/tech/20200327 How open source software is fighting COVID-19.md new file mode 100644 index 0000000000..c5b95fa4e5 --- /dev/null +++ b/sources/tech/20200327 How open source software is fighting COVID-19.md @@ -0,0 +1,107 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How open source software is fighting COVID-19) +[#]: via: (https://opensource.com/article/20/3/open-source-software-covid19) +[#]: author: (Jeff Stern https://opensource.com/users/jeffstern) + +How open source software is fighting COVID-19 +====== +Learn about four of the thousands of open source projects combating the +spread of coronavirus. +![symbols showing healthcare][1] + +Work is hard right now. COVID-19 makes it a challenge to stay focused and motivated. But it was cathartic for me to do some research into how the open source community is responding to the global pandemic. + +Since the end of January, the community has contributed to [thousands of open source repositories][2] that mention coronavirus or COVID-19. These repositories consist of datasets, models, visualizations, web and mobile applications, and more, and the majority are written in JavaScript and Python. + +Previously, we shared information about several [open hardware makers helping][3] to stop the spread and suffering caused by the coronavirus. Here, we're sharing four (of many) examples of how the open source software community is responding to coronavirus and COVID-19, with the goal of celebrating the creators and the overall impact the open source community is making on the world right now. + +### 1\. CHIME by PennSignals + +![CHIME by PennSignals][4] + +COVID-19 Hospital Impact Model for Epidemics ([CHIME][5]) is an open source application built by data scientists at Penn Medicine at the University of Pennsylvania. The online tool allows hospitals to better understand the impact the virus will have on hospital demand. + +Hospital leaders can use CHIME to "get more informed estimates of how many patients will need hospitalization, ICU beds, and mechanical ventilation over the coming days and weeks." A user can input how many patients are currently hospitalized and see, based on other variables, how demand might increase over the coming days. + +CHIME is primarily built with Python and uses the [pandas][6] open source dependency for much of the underlying data-transformation number-crunching to generate the estimates. Pandas has a relatively robust team and is one of the most commonly used Python libraries for data analysis and, like all open source projects, is highly dependent on [users' support][7] for income. + +### 2\. Real-time COVID-19 visualization by Locale.ai + +![Locale.ai COVID-19 visualization][8] + +Maps that track the number of cases help us visualize the relative scale and spread of COVID-19. [Locale.ai created an open source, interactive visualization][9] of all known cases of COVID-19. The map provides live updates with new data as it becomes available. + +I find this project especially interesting because the data is retrieved via [an open source API][9] created by GitHub user ExpDev07 that queries [an open source dataset][10] from John Hopkins University. The John Hopkins dataset (an aggregate of more than a dozen other sources) is currently the most popular COVID19-related project on GitHub. This is the branching nature of open source at its finest! + +Locale.ai built the visualization website using [Vue.js][11], a popular framework that allows web developers to create modern web apps. Vue.js was created and continues to be maintained by [Evan You][12], one of the few people who have made a full-time career as an open source maintainer. + +### 3\. DXY-COVID-19-Crawler by BlankerL + +![BlankerL DXY-COVID-19-Crawler][13] + +[DXY-COVID-19-Crawler][14] was created in January and is one of the earliest responses from the open source community to COVID-19. When the virus was spreading primarily in China, the Chinese medical community was using a site called [DXY.cn][15] to report and track cases. To make the information more readily available and usable by others, GitHub user BlankerL wrote a web crawler to systematically collect data from the DXY.cn site and make it available via an API and data warehouse. That data has been used by academic researchers and others to examine trends and visualize the spread of the virus. So far, DXY-COVID-19-Crawler has been starred more than 1,300 times and forked nearly 300 times. + +BlankerL wrote the web crawler using Python and a package called [Beautiful Soup][16]. Beautiful Soup is an application that allows Python developers to easily scrape information from websites. Beautiful Soup is maintained by Leonard Richardson, who also works full-time as a software architect. + +### 4\. City of Tokyo's COVID-19 task force website + +![City of Tokyo's COVID-19 Task Force site][17] + +Many cities around the world have updated their websites with information for their residents about COVID-19. The Tokyo Metropolitan Government created a [comprehensive website][18] that "aims to allow Tokyo residents, companies with offices in Tokyo, and visitors to Tokyo to grasp the current situation and take measures and precautions accordingly." + +Unlike many other cities, Tokyo decided to [open source its site][19]. The project boasts contributions by more than 180 different users, and [at least three other cities][20] in Japan (Nagano, Chiba, and Fukuoka City) remixed the site. The project is an example of how cities can better serve their citizens by building openly. + +There's an incredible amount of open source technology powering Tokyo's open source website. Using the [Tidelift][21] application, I identified 1,365 dependencies used in the project. All of this complexity happens because 38 direct dependencies (i.e., dependencies the developers explicitly decided to use) have dependencies of their own. That said, maintainers of more than a thousand different open source dependencies (including [Nuxt.js][22], [Prettier][23], [Babel][24], [Ajv][25], and more) are in a small way responsible for helping Tokyo share information with their citizens. + +![Dependencies in Tokyo's COVID-19 Task Force site][26] + +### Other projects + +There are [many other important projects][27] being built in the open in response to COVID-19. I am inspired by how the open source community is responding to this pandemic and leveraging other open source technologies to work quickly. The weeks ahead will be difficult, but I know we can continue to find motivation in the open source community. + +If you are working on an open source project related to COVID-19, please share it in the comments so we can help spread the word. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/open-source-software-covid19 + +作者:[Jeff Stern][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jeffstern +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Medical%20costs.jpg?itok=ke57j6cs (symbols showing healthcare) +[2]: https://github.com/search?q=coronavirus+OR+covid19 +[3]: https://opensource.com/article/20/3/open-hardware-covid19 +[4]: https://opensource.com/sites/default/files/uploads/chime_pennsignals.png (CHIME by PennSignals) +[5]: http://penn-chime.phl.io/ +[6]: https://tidelift.com/subscription/pkg/pypi-pandas +[7]: https://pandas.pydata.org/about/sponsors.html +[8]: https://opensource.com/sites/default/files/uploads/locale-ai-visualization.png (Locale.ai COVID-19 visualization) +[9]: https://github.com/localeai/covid19-live-visualization +[10]: https://github.com/CSSEGISandData/COVID-19 +[11]: https://tidelift.com/subscription/pkg/npm-vue +[12]: https://blog.tidelift.com/vuejs-evan-you-javascript-framework +[13]: https://opensource.com/sites/default/files/uploads/dxy-covid-19-crawler.png (BlankerL DXY-COVID-19-Crawler) +[14]: https://github.com/BlankerL/DXY-COVID-19-Crawler +[15]: https://dxy.cn +[16]: https://blog.tidelift.com/beautiful-soup-is-now-part-of-the-tidelift-subscription +[17]: https://opensource.com/sites/default/files/uploads/tokyo-covid19-task-force.png (City of Tokyo's COVID-19 Task Force site) +[18]: https://stopcovid19.metro.tokyo.lg.jp/en/ +[19]: https://github.com/tokyo-metropolitan-gov/covid19 +[20]: https://github.com/tokyo-metropolitan-gov/covid19/issues/1802 +[21]: https://tidelift.com/ +[22]: https://tidelift.com/subscription/pkg/npm-nuxt +[23]: https://blog.tidelift.com/prettier-is-now-part-of-the-tidelift-subscriptions +[24]: https://tidelift.com/subscription/pkg/npm-babel +[25]: https://blog.tidelift.com/ajv-is-now-part-of-the-tidelift-subscription +[26]: https://opensource.com/sites/default/files/uploads/tokyo-dependencies.png (Dependencies in Tokyo's COVID-19 Task Force site) +[27]: https://github.com/soroushchehresa/awesome-coronavirus From 5cf49220abef80b44d883b78f5ed91aaf643a9d1 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:14:40 +0800 Subject: [PATCH 045/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200327=206=20tr?= =?UTF-8?q?icks=20for=20developing=20a=20work=20from=20home=20schedule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200327 6 tricks for developing a work from home schedule.md --- ...or developing a work from home schedule.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 sources/tech/20200327 6 tricks for developing a work from home schedule.md diff --git a/sources/tech/20200327 6 tricks for developing a work from home schedule.md b/sources/tech/20200327 6 tricks for developing a work from home schedule.md new file mode 100644 index 0000000000..9253f824fd --- /dev/null +++ b/sources/tech/20200327 6 tricks for developing a work from home schedule.md @@ -0,0 +1,108 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (6 tricks for developing a work from home schedule) +[#]: via: (https://opensource.com/article/20/3/work-from-home) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +6 tricks for developing a work from home schedule +====== +Stay flexible, embrace change, and think of the transition to your home +office as an opportunity to create a healthier WFH experience. +![Working from home at a laptop][1] + +When you start working from home, one of the first things you might have noticed is that there almost no outside influences on your schedule. + +You probably have meetings—some over [team chat][2] and others over [video][3]— that you have to attend, but otherwise, there's nothing requiring you to do anything at any specific time. What you find out pretty quickly, though, is that there's an invisible influence that sneaks up on you: deadlines. + +This lack of structure fosters procrastination, sometimes willful and other times aimless, followed by frantic sprints to get something done. Learning to mitigate that, along with all the distractions working from home might offer, is often the hardest part of your home-based work. + +Here are a few ways to build in that structure for yourself do you don't end up feeling like you are falling behind. + +### You have always had your own schedule + +Everybody reacts to schedules differently. For some people, schedules offer guidance and comfort. For others, schedules are rigid and oppressive. + +An office space generally provides focus. There might be plenty of distractions at the office, but you usually find a good stretch of time at some point during your day when you can get a big chunk of work done. Even in an office, though, each person actually keeps their own schedule. Your colleague might arrive early in the day, happily completing a day's work in an empty office before anyone else arrives and then spending the rest of the day doing menial tasks and socializing. Another colleague might arrive late and leave early, maximizing time spent in the office for actual work. Still others follow a steady pace throughout the day. + +As you're settling into a WFH routine, take notes, either mentally or physically, on what seems to work well for you. If you like formalized systems, then build a schedule for yourself after a week or two, based on what you've been doing naturally. If there's something that isn't working for you, then drop it from your schedule. + +Once you've found a good rhythm for yourself, you can manage your day with a [to-do list][4] like [todo.txt][5], or if you prefer sledgehammers (or you actually manage a department), you can try a [project management][6] application. + +### Treat yourself as a new hire + +For the first week or two at home, you may find it helpful to treat yourself (and your remote team) as a new hire. Instead of trying to mimic or impose the same schedule you kept at the office or at school, take time to monitor your own activity. It takes time for your body and mind to establish new and comfortable habits, and if you're the kind of person who wanders into a routine, then you need to give yourself time to discover what those habits are. + +For instance, if you're consistently finding that you do your best work right after breakfast, then relegate menial tasks, like responding to email, reviewing tasks, or triaging bug reports, to the early morning, and make sure you have a big task set up for after breakfast. If you're having a hard time maintaining focus, then make time for morning tea so you can relax, reassess your workload, and plan your next step. Be curious about yourself like a manager would be for a brand new employee. Adjust accordingly. + +### There is no guilt to being interrupted at home + +Not everything on your schedule is under your control. If you have children too young for school, or if children are home from school, then their schedules take precedence. + +It's a perceived benefit of working from home that your schedule is more flexible than at an office, but with that assumption, there can sometimes come a little to a lot of guilt. You might feel you're not working "enough" because you have to stop to wake up and feed children, or because you want to take a few play breaks every now and again. + +That's mostly illusory, though, and here is how to think about it. If you swap out "children" for "manager," you might remember some times at the office where your "real" work was interrupted because you had to entertain upper management with sparkly presentations, or complete piles of paperwork for HR, or decompress by chatting with colleagues by the water cooler. + +Your work from home is really no different. There are plenty of distractions, and they're only a problem if you fail to acknowledge and work around them. + +### Making the choice to move beyond the 9-to-5 + +Unlike at the office, you're not forced into a rigid and dated 9-to-5 structure. If your day has to start at 7am, contains a lot of breaks, and doesn't end until 7pm, then that's alright. The essential part is to define that as your schedule for yourself (once you've established it as a schedule that works for you; remember to give yourself a few weeks to get a feel for what your schedule actually "wants" to be). Pick your start and end times, establish break times with your housemates, whether they're children, spouses, pets, or roommates/friends. Work when you're supposed to be working, and don't work when you're not scheduled to work. For most of us, colleagues don't need to know exactly when you are online as long as you're available when you're needed. In that case, your hours are your own. If the team is the kind that needs to know, run it by them. + +### Don't forget time for yourself + +It's important to at least establish times you stop thinking about work, no matter what. If you've got a very young child who's not given to staying on any schedule, then you might have to stay more flexible than most. Still, give yourself permission to actively be inactive. Do something you enjoy, even if it feels unproductive. It's normal to spend some idle time at the office to think or intentionally not think. Working from home deserves the same space. If anything, it's even more important as you establish working hours. The goal is to recognize when you're at home and when you're at work. + +Finding stuff to do at work is relatively easy, but sometimes finding things to do to relax can be hard. If you have children, you can collaborate with them using Scratch for [drawing beautiful art][7], [programming video games][8], or even [robotics][9]. For the times you're not necessarily looking to collaborate and need your little one to do some exploration of their own, there are some [great open source alternatives to Minecraft][10], too. If you're interested in getting away from the screen, though, you might try some [Arduino][11] or [Seeeduino][12] gardening projects. Start with some programming, and end up outside in the garden! + +### Choose to see change as exciting + +Some say humans don't generally love change and that we're primarily creatures of habit, so moving from an office into a home office can be upsetting. And yet, invariably, we've shown that change can be exciting and even good.  + +Use this thought experiment to remember how much you love change. Would you willingly revert to technology from even two years ago? How about five, or ten? + +If we can embrace change in technology and be uninterested in reverting back, why not embrace change elsewhere? + +When you work from home, you have the opportunity to be willing to explore change. If you find that a meeting time doesn't work for your schedule, mention it to your team. It may not work for them, either, and moving it to a different day could mean making room for a work sprint that knocks out a good chunk of your work for the week. If you find that a tool isn't working out for you, find a different one. + +In fact, some of the most productive people are constantly evaluating new applications and new methods of working. They're constantly learning new things, developing new skills. They don't do this because they need the new skill, at least not by the letter of their work contract, but learning new things often reveals a surprising applicability to something they do need. + +Need some examples? Tinkering with a Raspberry Pi for fun could result in a home server running [useful apps][13] to help you stay informed. [Learning][14] how to [write in Markdown][15] could introduce you to a new and more efficient workflow than you ever knew possible. Setting up a [computer with Linux][16] could reveal a new world of open source software that changes the way you approach problems, and improves the methods you use to solve them. The possibilities are limitless, but if you don't know where to start, you can browse through some of our articles or [cheat sheets][17] for ideas and tips. + +### Working from home is a new opportunity + +The habits we've built up around work aren't always healthy or efficient or fun. If you're starting to work from home, though, it's a chance to reinvent what work means for you. Keep the lines of [communication open][18] with your colleagues, embrace new ideas and the potential of change, and discover how you can be more productive by enjoying yourself and the place you call home (and **$HOME**). + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/work-from-home + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) +[2]: https://opensource.com/alternatives/slack +[3]: https://opensource.com/alternatives/skype +[4]: https://opensource.com/article/19/9/to-do-list-managers-linux +[5]: https://opensource.com/article/20/1/open-source-to-do-list +[6]: https://opensource.com/article/18/2/agile-project-management-tools +[7]: https://opensource.com/article/19/9/drawing-vectors-scratch-3 +[8]: https://opensource.com/article/18/4/designing-game-scratch-open-jam +[9]: https://opensource.com/education/13/8/student-programming-scratch-and-finch +[10]: https://opensource.com/alternatives/minecraft +[11]: https://opensource.com/article/17/3/arduino-garden-projects +[12]: https://opensource.com/article/19/12/seeeduino-nano-review +[13]: https://opensource.com/article/20/2/newsboat +[14]: https://opensource.com/article/19/9/introduction-markdown +[15]: https://opensource.com/article/18/11/markdown-editors +[16]: https://opensource.com/article/19/9/found-linux-video-gaming +[17]: https://opensource.com/article/20/1/cheat-sheets-guides +[18]: https://opensource.com/article/20/3/open-source-working-home From cad4e895e4a23ab28f5001be734c2197c31e7bbb Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:16:47 +0800 Subject: [PATCH 046/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200326=20How=20?= =?UTF-8?q?to=20detect=20outdated=20Kubernetes=20APIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200326 How to detect outdated Kubernetes APIs.md --- ... How to detect outdated Kubernetes APIs.md | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 sources/tech/20200326 How to detect outdated Kubernetes APIs.md diff --git a/sources/tech/20200326 How to detect outdated Kubernetes APIs.md b/sources/tech/20200326 How to detect outdated Kubernetes APIs.md new file mode 100644 index 0000000000..a45a9b2add --- /dev/null +++ b/sources/tech/20200326 How to detect outdated Kubernetes APIs.md @@ -0,0 +1,234 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to detect outdated Kubernetes APIs) +[#]: via: (https://opensource.com/article/20/3/deprek8) +[#]: author: (Tyler Auerbeck https://opensource.com/users/tylerauerbeck) + +How to detect outdated Kubernetes APIs +====== +Deprek8 and Conftest alert you about deprecated APIs that threaten to +slip into your codebase. +![Ship captain sailing the Kubernetes seas][1] + +Recently, deprecated APIs have been wreaking havoc on everyone's [Kubernetes][2] manifests. Why is this happening?!? It's because the objects that we've come to know and love are moving on to their new homes. And it's not like this happened overnight. Deprecation warnings have been in place for quite a few releases now. We've all just been lazy and thought the day would never come. Well, _it's here_! + +So, maybe it caught up to us this time. But we'll be prepared next time, right?!? Yeah, that's what we said last time. But what if we could put something in place that makes sure that this doesn't happen? + +### What is Deprek8? + +[Deprek8][3] is a set of [Open Policy Agent][4] (OPA) policies that allow you to check your repository for deprecated API versions. These policies offer a way to provide warnings and errors when something is in the process of being or has already been deprecated. But **Deprek8** is just a set of policies that define what to watch for. How do you actually actively use these policies in order to monitor for deprecations? + +There are a number of ways and tools that can do this; one way is to use the OPA Deprek8 policy. + +### What is the OPA Deprek8 policy? + +OPA is "an open source, general-purpose policy engine that enables unified, context-aware policy enforcement." In other words, OPA provides a means of establishing and enforcing a set of policies based upon a policy file. The policies are defined in a file (or set of files) using the [Rego query language][5]. This use case won't necessarily rely on the OPA application, but more specifically, it uses this query language to do the heavy lifting. By using Rego, you can check whether various manifests match certain criteria and then either warn or error them out based on your definition. For example, in Kubernetes 1.16, the Deployment object can no longer be served from the **extensions/v1beta1 apiVersion**. So in your .rego file, you could have something like: + + +``` +_deny = msg { +  resources := ["Deployment"] +  input.apiVersion == "extensions/v1beta1" +  input.kind == resources[_] +  msg := sprintf("%s/%s: API extensions/v1beta1 for %s is no longer served by default, use apps/v1 instead.", [input.kind, input.metadata.name, input.kind]) +} +``` + +This would alert that you have a deprecated manifest and print a message like: + +> Deployment/myDeployment: API extensions/v1beta1 for Deployment is no longer served by default, use apps/v1 instead. + +That's great! This is exactly what you need in order to avoid having old manifests lying around. But these are just the policies; you need something that will check these policies and put them into action. + +### Conftest + +This is where [Conftest][6] comes in. Conftest is a utility that allows you to put Rego policies into action against any number of configuration files. According to the repo, Conftest currently supports: + + +``` + - YAML + - JSON + - INI + - TOML + - HOCON + - HCL + - CUE + - Dockerfile + - HCL2 (Experimental) + - EDN + - VCL + - XML +``` + +It has some fairly strict defaults (i.e., expecting policy files to be in certain locations), but they can be overridden with the appropriate flags if you have a layout that you prefer. If you want to know more about those specifics, please consult the [documentation][7] in the repository. + +For example, you can run any policy file on Conftest with a command like: + + +``` +`helm template --set podSecurityPolicy.enabled=true --set server.ingress.enabled=true . | conftest -p mypolicy.rego -` +``` + +This would generate the appropriate output from a Helm template and pipe it directly to the Conftest utility. Conftest inspects that output against any policies defined in the **mypolicy.rego** file and then gives any appropriate warnings or errors for objects that match against those policies. You can, of course, swap out any templating tooling of your choice, or you can feed specific files directly to the Conftest tool. + +So now you have the tools to set your policies and enforce them against your configuration files. But how do you tie these two things together? Better yet: How do you automate this process to continuously monitor the codebase to make sure you never fall behind the deprecation line again? + +### Using Git to run checks + +There are many methods and tools to run checks against code. By adding similar steps to your continuous integration (CI) tooling (e.g., Jenkins, Tekton, etc.), you can accomplish the same goal. In this very basic use case, I used [GitHub Actions][8], a new feature of GitHub repositories. + +GitHub Actions allows you to automate your entire workflow, so you don't have to sit in front of your keyboard and hack all of this together. With Actions, you can string together any number of steps into a workflow (or multiple workflows) by either rolling your own Actions if you're doing something custom or, in most cases, using something that already exists in the [Marketplace][9]. Luckily, others have provided Actions to do the things you need to do for this example, so you can lean on the community's expertise to pull your workflow together. + +As described in the steps above, the workflow looks something like: + + 1. Retrieve the Deprek8 policy you need and store it somewhere for later use. + 2. Run Conftest against the appropriate files/charts with the policy file you grabbed in step 1. + + + +What does this boil down to? Well, all you really need to do is to use curl to pull your policy file and then run it through Conftest after pointing to your code, using the [curl][10] and [Conftest][11] Actions. Since these Actions already exist, you don't need to write any custom code! And as I'm sure you can tell by the names, they allow you to run the associated commands without having to do any custom work to pre-process anything or pull down any binaries. + +Now that you have the Actions you need to use, how do you pull them together? This is where your workflow comes into play. While Actions are the pieces of code that get things done, they're useless without a way to string them together so that they can be triggered by some event. A GitHub Action workflow will look something like this: + + +``` +name: Some Awesome Workflow Name +on: An Event That Triggers Our Workflow +jobs: +  awesome-job-name: +    runs-on: ubuntu-latest +    steps: +      - uses: actions/checkout@master +      - name: awesome-step-name +        uses: someorg/someaction@version +        with: +          args: some args that I might pass to someaction +``` + +Now you have a workflow that has multiple steps, can be triggered by a specific GitHub event, and can be passed a set of parameters (if that is applicable to that specific Action). This example is _extremely basic_. But luckily, the workflow you're trying to put together is equally simple. This shouldn't be taken as a comprehensive example of a GitHub Action, as there are many more complicated (and elegant) things you can do. If you're interested in learning more, take a look at the [GitHub Actions documentation][12]. + +Now that you have an idea of what a workflow looks like and know what Actions you're interested in using, take a run at plugging the two together. For this example, you want to make sure that whenever your code is updated, it's checked to make sure it's not using any deprecated APIs. + +First, rig up your workflow with some names and the events that you want to trigger off of. Give your workflow and job a useful name that will help you identify it (and what it does). + + +``` +name: API Deprecation Check +on: pull_request, push +jobs: + deprecation-check: +``` + +Next, you need to tell your workflow that you want to trigger these Actions based on any **pull_request** or **push** that happens to this repository because these are the two main events that get new code into a repository. You can do this by utilizing the **on** keyword. + + +``` +name: API Deprecation Check +on: pull_request, push +jobs: +  deprecation-check: +    runs-on: ubuntu-latest +    steps: +      - uses: actions/checkout@master +``` + +Then, add where you want these Actions to run and how the Action can get the code. You can tell the Action where to run by using the **runs-on** keyword. You have a few options here: Windows, Mac, or Ubuntu. In most cases, using Ubuntu is fine, as you'll frequently rely on Actions that run inside their own container (versus running on the base OS that you define here). It's also very important to understand that an Action does not check out code by default. When you need to do something that interacts with your code, make sure to use the Action **actions/checkout**. When this is included, your code will be available within your Action, and you can pass that through to the next step in your workflow. + + +``` +name: API Deprecation Check +on: pull_request, push +name: API Deprecation Check +jobs: +  deprecation-check: +    runs-on: ubuntu-latest +    steps: +      - uses: actions/checkout@master +      - name: curl +        uses: wei/curl@master +        with: +          args: > /github/home/deprek8.rego +``` + +Now that your code is checked out, you can start preparing to do something with it. As mentioned, before you can check code for deprecations, you first need the file that contains the policies that you want to check for, so just retrieve the file using the **curl** Action. This is a fairly straightforward Action, in that it accepts whatever parameters you would normally pass into the curl command. If you were doing something more complicated, this is where you could pass in things like specific HTTP Actions, headers, etc. However, in this case, you're just trying to retrieve a file, so the only thing you need to pass to your Action is the URL you want to retrieve (in this case, the one that contains your raw policy file) and then tell it where you want to write that file. In this case, you're going to have it write to **/github/home**. Why? It's because this filesystem persists between steps and will allow you to use the policy file within this next step. + + +``` +name: API Deprecation Check +on: pull_request, push +jobs: +  deprecation-check: +    runs-on: ubuntu-latest +    steps: +      - uses: actions/checkout@master +      - name: curl +        uses: wei/curl@master +        with: +          args: > /github/home/deprek8.rego +      - name: Check helm chart for deprecation +        uses: instrumenta/conftest-action/helm@master +        with: +          chart: nginx-test +          policy: /github/home/deprek8.rego +``` + +Now that you have your policy file, it's just a matter of running it against the code via **conftest**. Similar to the **curl** Action, the **conftest** Action just expects a series of parameters to understand how it should run against the code. In the example above, it runs against a Helm chart, but it can run against a specific file (or set of files) by changing the **uses** value to **instrumenta/[conftest-action@master][13]**. Just point to the path where your chart sits in the repository and then provide the path to your policy file (specified in the previous step). Once you have all of this together, you have a complete workflow. But what does this look like (assuming there's some bad code in your Helm chart)? To find out, take a look at the [example repository][14]. + +In the Nginx Helm chart, you'll notice that one of the templates is a [statefulset][15]. You may also notice that the apiVersion the StatefulSet is using is **apps/v1beta1**. This API was deprecated in Kubernetes 1.16 and is now hosted in **apps/v1**. So when your GitHub Actions workflow runs, it should detect this issue and serve an error like: + + +``` +FAIL - StatefulSetf/web: API apps/v1beta1 is no longer served by default, use apps/v1 instead. +Error: plugin "conftest" exited with error +##[error]Docker run failed with exit code 1 +``` + +The Action indicates there is something wrong and then fails the rest of the Action. You can see the [full workflow][16] if you are interested. + +### Wrapping up + +This workflow will save some future heartache by alerting you to any deprecated APIs that slip into your codebase. To be clear, this is an _alerting_ mechanism. This won't prevent you from merging bad code into your codebase. But, as long as you pay attention, you should be completely aware prior to (or just after) merging problematic code. + +Where do you go from here? Well, there are a few things to keep in mind. Currently, Deprek8 is up to date as of Kubernetes 1.16. If you're interested in more recent versions, I'm sure Deprek8 would be happy to accept your [pull request][3]. + +The other shortcoming of this method is that the **conftest** and GitHub Actions are a bit limited in that they only allow you to point at specific files or a single chart at a time. What if you want to point at multiple directories of manifests or have multiple charts inside your repository? Currently, the only way to get around that is to either list out every single file you're interested in (in the case of having multiple charts) or have multiple steps inside your workflow. Other scenarios could become problematic, like other templating engines that require some custom logic to pair the parameters and template files together. But a simple workaround for that could be to have a step in your workflow that pulls down Conftest along with a tiny inline script to loop through some of this. I'm sure there are more elegant solutions (and if you come up with one, I'm sure these projects would be more than happy to take a look at your PR). + +Regardless, you now have a mechanism that should allow you to sleep a bit easier when checking in your code! And hopefully, this method will help you build even more robust workflows to protect your code. + +* * * + +_This was originally published in [Tyler Auerbeck's GitHub repository][17] and is reposted, with edits, with permission._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/deprek8 + +作者:[Tyler Auerbeck][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/tylerauerbeck +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) +[2]: https://opensource.com/resources/what-is-kubernetes +[3]: https://github.com/naquada/deprek8 +[4]: https://github.com/open-policy-agent/opa +[5]: https://blog.openpolicyagent.org/opas-full-stack-policy-language-caeaadb1e077 +[6]: https://github.com/instrumenta/conftest +[7]: https://github.com/instrumenta/conftest/tree/master/docs +[8]: https://github.com/features/actions +[9]: https://github.com/marketplace?type=actions +[10]: https://github.com/marketplace/actions/github-action-for-curl +[11]: https://github.com/instrumenta/conftest-action +[12]: https://help.github.com/en/actions +[13]: mailto:conftest-action@master +[14]: https://github.com/tylerauerbeck/deprek8-example +[15]: https://raw.githubusercontent.com/tylerauerbeck/deprek8-example/master/nginx-test/templates/statefulset.yaml +[16]: https://github.com/tylerauerbeck/deprek8-example/runs/426774566?check_suite_focus=true +[17]: https://github.com/tylerauerbeck/writing/blob/master/opa/deprek8.md From 6cdf6b10c3ad35bf213807677995be12326ac7cc Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:17:45 +0800 Subject: [PATCH 047/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200326=203=20op?= =?UTF-8?q?en=20source=20tools=20for=20sticking=20to=20a=20budget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200326 3 open source tools for sticking to a budget.md --- ...n source tools for sticking to a budget.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sources/tech/20200326 3 open source tools for sticking to a budget.md diff --git a/sources/tech/20200326 3 open source tools for sticking to a budget.md b/sources/tech/20200326 3 open source tools for sticking to a budget.md new file mode 100644 index 0000000000..2c3ca5bc2e --- /dev/null +++ b/sources/tech/20200326 3 open source tools for sticking to a budget.md @@ -0,0 +1,56 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 open source tools for sticking to a budget) +[#]: via: (https://opensource.com/article/20/3/open-source-budget) +[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) + +3 open source tools for sticking to a budget +====== +Find the right solution for you in this roundup of open source budgeting +tools. Plus, learn about an open source tax preparation software. +![A dollar sign in a network][1] + +In light of changing economical times in many countries around the world right now, you may find yourself wanting to revamp or improve your financial situation and your understanding of it. Or, perhaps one of your New Year's resolutions was to start budgeting? You are not alone. + +The best way to stick to that resolution is to keep track of the money you are spending and making on a regular basis. The problem is, many popular personal finance apps out there are proprietary. Are you looking for an open source alternative to Quicken, Mint, or You Need a Budget? Whether you are new to open source software or new to budgeting in general, one of these tools will suit your needs and comfort level.  + +### LibreOffice Calc + +I recommend using LibreOffice Calc to any open source newcomer who wants to start budgeting. If you've used proprietary spreadsheets like Google Sheets or Microsoft Excel, the LibreOffice Calc template will be very familiar. In this [budgeting tutorial][2], author Jess Weichler has done a lot of the work for you by including a handy, downloadable template. The template already has expense categories like utility bills, groceries, dining out, and more, but you have the freedom to customize it to your lifestyle. In a second article, she shows you how to [create your own templates][3].  + +### HomeBank + +HomeBank is another great option for open source users of all levels. HomeBank is free, yet it has plenty of analysis and transaction features like its proprietary counterparts. In fact, you can export and import Quicken files to HomeBank, which makes transitioning to this open source app a breeze. Finally, you can use a tool to help you make wise decisions about your money without spending more money. Learn how to get started in Jessica Cherry's [tutorial][4].  + +### GnuCash + +Like the other budgeting tools mentioned here, GnuCash can be used on Windows, macOS, and Linux. There is a slew of documentation available, but our very own Don Watkins guides you through the steps of setting up GnuCash on Linux in [this tutorial][5]. Not only is GnuCash a great option for taking control of your personal finances, but it also has features like invoicing to help you manage your small business.  + +### Bonus: OpenTaxSolver + +The dreaded tax season can be a stressful time for many Americans. Many folks purchase TurboTax or use an accountant or tax service to do their taxes. Contrary to popular belief, open source tax preparation software exists! Author Jessica Cherry did the belaboring research and introduces our readers to OpenTaxSolver in [this article][6]. To use OpenTaxSolver successfully, you'll need keen attention to detail, but you won't have to worry about doing the complicated math.  + +Which open source budgeting app will you try? Do you have a favorite tool that I didn't mention in this list? Share your thoughts in the comments. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/open-source-budget + +作者:[Lauren Pritchett][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/lauren-pritchett +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) +[2]: https://opensource.com/article/20/3/libreoffice-open-source-budget +[3]: https://opensource.com/article/20/3/libreoffice-templates +[4]: https://opensource.com/article/20/2/open-source-homebank +[5]: https://opensource.com/article/20/2/gnucash +[6]: https://opensource.com/article/20/2/open-source-taxes From 5edb8f25145ee2cc7701321e5eef8a34354a4b37 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:18:29 +0800 Subject: [PATCH 048/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200325=20npm=20?= =?UTF-8?q?joins=20GitHub,=20building=20operators=20in=20Kubernetes,=20and?= =?UTF-8?q?=20more=20industry=20trends?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md --- ...in Kubernetes, and more industry trends.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md diff --git a/sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md b/sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md new file mode 100644 index 0000000000..3a7671da2c --- /dev/null +++ b/sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md @@ -0,0 +1,70 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (npm joins GitHub, building operators in Kubernetes, and more industry trends) +[#]: via: (https://opensource.com/article/20/3/npm-github-operators-kubernetes-industry-trends) +[#]: author: (Tim Hildred https://opensource.com/users/thildred) + +npm joins GitHub, building operators in Kubernetes, and more industry trends +====== +A weekly look at open source community and industry trends. +![Person standing in front of a giant computer screen with numbers, data][1] + +As part of my role as a senior product marketing manager at an enterprise software company with an open source development model, I publish a regular update about open source community, market, and industry trends for product marketers, managers, and other influencers. Here are five of my and their favorite articles from that update. + +## [npm is joining GitHub][2] + +> Looking further ahead, we’ll integrate GitHub and npm to improve the security of the open source software supply chain, and enable you to trace a change from a GitHub pull request to the npm package version that fixed it. Open source security is an important global issue, and with the recent launch of the [GitHub Security Lab][3] and GitHub’s built-in [security advisories][4], we are well-positioned to make a difference. In addition, [GitHub Sponsors][5] has already paid out millions of dollars to open source contributors, and we’re excited to explore tasteful ways to extend it to the npm ecosystem. + +**The impact**: Open source supply chain security is a big problem that probably needs a lot more resources thrown at it. + +## [Why and how to build operators in Kubernetes][6] + +> For cluster administrators managing large clusters, this proliferation of development methodologies and management interfaces can be problematic. The class of applications that Operators were developed to manage are almost always part of a larger application stack, with dependencies between them. If we have a lot of Operators written in different ways running on our clusters, how can we ensure they will interoperate with each other, and how do we validate and test them? + +**The impact**: This illustrates two cool things about open source. First, the alternating waves of innovation and consolidation. Second, the empowering of affected parties to address their own challenges. + +## [Automation for improved security frameworks][7] + +> In recent years we’ve seen the posts of CIO and CTO elevated to boardroom level, with senior figures in IT now influencing corporate strategy. Due to a heightened awareness of cybersecurity, it won’t be long before the board looks to CSO and CISO executives for strategic direction. + +**The impact**: This statement has gotten truer over the last several weeks. More activity is being pushed online than ever before; keeping that activity secure is integral to making it all profitable. Security people need to be able to say "no" at the highest possible level. + +## [Interoperability of open source tools: The emergence of interfaces][8] + +> Being non-opinionated about the adoption of specific technologies and the methodologies of distributing its primitive resources, were the main axes of Kubernetes evolution. Additionally, the proliferation of solutions from multiple vendors played an instrumental role in the emergence of interfaces and it served as the engine for further development and innovation. + +**The impact**: Kubernetes may be the only large-scale open source project where competition is hot. Even still, competitors need to be able to work together and interfaces are the points that separate collaboration and competition. + +## [Do you operate OpenStack? Take this survey.][9] + +> Direct feedback from the individuals and organizations operating OpenStack helps the upstream development community know what features to prioritize and which bugs to fix first, among other important learnings on how the software is being used. Each of the official project teams has the opportunity to add a question to the survey as well as review anonymized data and trends to further influence their roadmaps. + +**The impact**: Not every community participant can or will provide feedback on bug reports or feature requests. In that case, it is important to provide multiple ways to get feedback and meet users where they are. + +_I hope you enjoyed this list and come back next week for more open source community, market, and industry trends._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/npm-github-operators-kubernetes-industry-trends + +作者:[Tim Hildred][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/thildred +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr (Person standing in front of a giant computer screen with numbers, data) +[2]: https://github.blog/2020-03-16-npm-is-joining-github/ +[3]: https://securitylab.github.com +[4]: https://help.github.com/en/github/managing-security-vulnerabilities/creating-a-security-advisory +[5]: https://github.com/sponsors +[6]: https://devops.com/day-2-for-the-operator-ecosystem/ +[7]: https://www.infosecurity-magazine.com/opinions/automation-governance-culture/ +[8]: https://medium.com/@kgamanji/interoperability-of-open-source-tools-the-emergence-of-interfaces-f3b7a90891e4 +[9]: https://superuser.openstack.org/articles/operate-openstack-take-the-survey-heres-why-it-matters/ From 49261580daf21befe851eeb8c329ed65c75b0dc6 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:21:48 +0800 Subject: [PATCH 049/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200326=20Tricks?= =?UTF-8?q?=20for=20getting=20around=20your=20Linux=20file=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200326 Tricks for getting around your Linux file system.md --- ...r getting around your Linux file system.md | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 sources/tech/20200326 Tricks for getting around your Linux file system.md diff --git a/sources/tech/20200326 Tricks for getting around your Linux file system.md b/sources/tech/20200326 Tricks for getting around your Linux file system.md new file mode 100644 index 0000000000..e8ed2b3869 --- /dev/null +++ b/sources/tech/20200326 Tricks for getting around your Linux file system.md @@ -0,0 +1,146 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Tricks for getting around your Linux file system) +[#]: via: (https://www.networkworld.com/article/3533421/tricks-for-getting-around-your-linux-file-system.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Tricks for getting around your Linux file system +====== +The cd command is probably one of the first 10 that any Linux user learns, but it's not the only way to navigate the Linux file system.Here are some other ways. +Thinkstock + +Whether you're moving around the file system, looking for files or trying to move into important directories, Linux can provide a lot of help. In this post, we'll look at a number of tricks to make moving around the file system and both finding and using commands that you need a little easier. + +### Adding to your $PATH + +One of the easiest and most useful ways to ensure that you don't have to invest a lot of time into finding commands on a Linux system is to add the proper directories to your $PATH variable. The order of directories that you add to your $PATH variable is, however, very important. They determine the order in which the system will look through the directories to find the command to run -- stopping when it finds the first match. + +You might, for example, want to put your home directory first so that, if you create a script that has the same name as some other executable, it will be the one that you end up running whenever you type its name. + +[RELATED: Linux hardening: a 15-step checklist for a secure Linux server][1] + +To add your home directory to your $PATH variable, you could do this: + +``` +$ export PATH=~:$PATH +``` + +The **~** character represents your home directory. + +If you keep your scripts in your bin directory, this would work for you: + +``` +$ export PATH=~/bin:$PATH +``` + +You can then run a script located in your home directory like this: + +[][2] + +``` +$ myscript +Good morning, you just ran /home/myacct/bin/myscript +``` + +**IMPORTANT:** The commands shown above _add_ to your search path because $PATH (the current path) is included. They don't override it. Your search path should be configured in your **.bashrc** file, and any changes you intend to be permanent should be added there as well. + +### Using symbolic links + +Symbolic links provide an easy and obvious way to record the location of directories that you might need to use often. If you manage content for a web site, for example, you might want to get your account to "remember" where the web files are located by creating a link like this: + +``` +ln -s /var/www/html www +``` + +The order of the arguments is critical. The first (/var/www/html) is the target and the second is the name of the link that you will be creating. If you're not currently located in your home directory, the following command would do the same thing: + +``` +ln -s /var/www/html ~/www +``` + +After setting this up, you can use "cd www" to get to **/var/www/html**. + +### Using shopt + +The **shopt** command also provides a way to make moving to a different directory a bit easier. When you employ **shopt'**s **autocd** option, you can go to a directory simply by typing its name. For example: + +``` +$ shopt -s autocd +$ www +cd -- www +/home/myacct/www +$ pwd -P +/var/www/html + +$ ~/bin +cd -- /home/myacct/bin +$ pwd +/home/myacct/bin +``` + +In the first set of commands above, the **shopt** command's **autocd** option is enabled. Typing **www** then invokes a "cd www" command. Because this symbolic link was created in one of the **ln** command examples above, this moves us to **/var/www/html**. The **pwd -P** command displays the actual location. + +In the second set, typing **~/bin** invokes a **cd** into the **bin** directory in the user's home. + +Note that the **autocd** behavior will _not_ kick in when what you type is a command –  even if it's also the name of a directory. + +The **shopt** command is a bash builtin and has a lot of options. This one just means that you don't have to type "cd" before the name of each directory you want to move into. + +To see **shopt**'s other options, just type "shopt". + +### Using $CDPATH + +Probably one of the most useful tricks for moving into particular directories is adding the paths that you want to be able to move into easily to your **$CDPATH**. This creates a list of directories that will be moved into by typing only a portion of the full path names. + +There is one aspect of this that may be just a little tricky. Your **$CDPATH** needs to include the directories that _contain_ the directories that you want to move into, not the directories themselves. + +For example, say that you want to be able to move into the **/var/www/html** directory simply by typing "cd html" and into subdirectories in /var/log using only "cd" and the simple directory names. In this case, this **$CDPATH** would work: + +``` +$ CDPATH=.:/var/log:/var/www +``` + +Here's what you would see: + +``` +$ cd journal +/var/log/journal +$ cd html +/var/www/html +``` + +Your **$CDPATH** kicks in when what you type is _not_ a full path. Then it looks down its list of directories in order to see if the directory you identified exists in one of them. Once it finds a match, it takes you there. + +Keeping the "." at the beginning of your **$CDPATH** means that you can move into local directories without having to have them defined in the **$CDPATH**. + +``` +$ export CDPATH=".:$CDPATH" +$ Videos +cd -- Videos +/home/myacct/Videos +``` + +It's not hard to move around the Linux file system, but you can save a few brain cells if you use some handy tricks for getting to various locations easily. + +Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3533421/tricks-for-getting-around-your-linux-file-system.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/article/3143050/linux/linux-hardening-a-15-step-checklist-for-a-secure-linux-server.html#tk.nww-fsb +[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[3]: https://www.facebook.com/NetworkWorld/ +[4]: https://www.linkedin.com/company/network-world From 5ed587c39edbf3a9f805784d2b5bed59b662f526 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:22:46 +0800 Subject: [PATCH 050/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200326=20ROLLIN?= =?UTF-8?q?G=20UPDATE:=20The=20impact=20of=20COVID-19=20on=20public=20netw?= =?UTF-8?q?orks=20and=20security?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md --- ...OVID-19 on public networks and security.md | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md diff --git a/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md b/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md new file mode 100644 index 0000000000..7f8c0a2cd8 --- /dev/null +++ b/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md @@ -0,0 +1,119 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (ROLLING UPDATE: The impact of COVID-19 on public networks and security) +[#]: via: (https://www.networkworld.com/article/3534037/rolling-update-the-impact-of-covid-19-on-public-networks-and-security.html) +[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) + +ROLLING UPDATE: The impact of COVID-19 on public networks and security +====== +Network World updates the latest coronavirus-related networking news +Ig0rZh / Getty Images + +_As the coronavirus spreads, public and private companies as well as government entities are requiring employees to work from home, putting unforeseen strain on all manner of networking technologies and causing bandwidth and security concerns.  What follows is a round-up of news and traffic updates that Network World will update as needed to help keep up with the ever-changing situation.  Check back frequently!_ + +**UPDATE 3.27** + +Broadband watchers at [BroadbandNow][1] say users in most of the cities it analyzed are experiencing normal network conditions, suggesting that ISP’s (and their networks) are holding up to the shifting demand. In a March 25 [post][2] the firm wrote: “Encouragingly, many of the areas hit hardest by the spread of the coronavirus are holding up to increased network demand. Cities like Los Angeles, Chicago, Brooklyn, and San Francisco have all experienced little or no disruption. New York City,  now the epicenter of the virus in the U.S., has seen a 24% dip out of its previous ten-week range. However, with a new median speed of nearly 52 Mbps, home connections still appear to be holding up overall.” + +**[ Also see [What to consider when deploying a next generation firewall][3]. | Get regularly scheduled insights by [signing up for Network World newsletters][4]. ]** + +Other BroadbandNow findings included: + + * Eighty eight (44%) of the 200 cities it analyzed experienced some degree of network degradation over the past week compared to the 10 weeks prior. However, only 27 (13.5%) cities experienced dips of 20% below range or greater. + * Seattle download speeds have continued to hold up over the past week, while New York City’s speeds have fallen out of range by 24%. Both cities are currently heavily affected by the coronavirus pandemic. + * Three cities – Austin, Texas, Winston Salem, N.C., and Oxnard, Calif. – have experienced significant degradations, falling out of their 10-week range by more than 40%. + + + +Cisco’s Talos threat-intelligence arm [wrote][5] on March 26 about the COVID security threat noting what it called three broad categories of attacks leveraging COVID with known advanced persistent threat participation in: [Malware and phishing campaigns][6] using COVID-themed lures; attacks against organizations that carry out research and other work related to COVID; and fraud and disinformation. From an enterprise security perspective, Talos recommended: + + * Remote access: Do not expose Remote Desktop Protocol (RDP) to the internet. Use secure VPN connections with multi-factor authentication schemes. Network access control packages can be used to ensure that systems attempting to remotely connect to the corporate environment meet a minimum set of security standards such as anti-malware protection, patch levels, etc,. prior to granting them access to corporate resources. Continually identify and remediate access-policy violations. + * Identity Management: Protect critical and public-facing applications with multi-factor authentication and supporting corporate policies. Verify that remote-account and access-termination capabilities work as intended in a remote environment. + * Endpoint Control: Because many people may be working from home networks, endpoint visibility, protection, and mitigation is now more important than ever. Consider whether remediation and reimaging capabilities will work as intended in a remote environment. Encrypt devices where possible, and add this check to your NAC solution as a gate for connectivity. Another simple method of protecting endpoints is via DNS, such as with [Cisco’s] Umbrella, by blocking the resolution of malicious domains before the host has a chance to make a connection. + + + +In an [FAQ][7] about the impact of COVID-19 on fulfilling customer hardware orders, VMware stated: “Some VMware SD-WAN hardware appliances are on backorder as a result of supply chain issues. As a result, we are extending the option to update existing orders with different appliances where inventory is more readily available. Customers may contact a special email hotline with questions related to backordered appliances. Please send an email to [sd-wan-hotline@vmware.com][8] with your questions and include the order number, urgent quantities, and contact information. We will do our best to respond within 48 hours.” + +Cisco said it has been analyzing traffic statistics with major carriers across Asia, Europe, and the Americas, and its data shows that typically, the most congested point in the network occurs at inter-provider peering points, Jonathan Davidson, senior vice president and general manager of Cisco's Mass-Scale Infrastructure Group wrote in a [blog][9] on March 26. “However, the traffic exchanged at these bottlenecks is only a part of the total internet traffic, meaning reports on traffic may be higher overall as private peering and local destinations also contribute to more traffic growth.” + +[][10] + +“Our analysis at these locations shows an increase in traffic of 10% to 33% over normal levels. In every country, traffic spiked with the decision to shut down non-essential businesses and keep people at home. Since then, traffic has remained stable or has experienced a slight uptick over the days that followed,” Davidson stated. + +He said that traffic during peak hours from 6 p.m. and 10 p.m. has increased slightly, but is not the primary driver for the overall inrease. Busy hours have extended to 9 a.m. 10 p.m., although the new busy-hour (9 a.m. to 6 p.m.) traffic is still below the traditional peak hours. "Service providers are certainly paying attention to these changes, but they are not yet a dire concern, as most networks are designed for growth. Current capacities are utilized more over the course of the entire day,” he wrote. + +Spanish multinational telecommunications company [Telefonica][11]’ said IP networks are experiencing traffic increases of close to 40% while mobile voice use is up about 50% and data is up 25%. In general, traffic through IP networks has experienced increases of nearly 40% while mobile use has increased by about 50% for voice and 25% for data. Likewise, traffic from instant-messaging tools such as Whatsapp has increased fivefold in recent days. + +**UPDATE: 3.26** + + * Week over week (ending March 23) [Ookla][12] says it has started to see a degradation of mobile and fixed-broadband performance worldwide. More detail on specific locations is available below. Comparing the week of March 16 to the week of March 9, mean download speed over mobile and fixed broadband decreased in Canada and the U.S. while both remained relatively flat in Mexico. + * What is the impact of the coronavirus on corporate network planning? Depends on how long the work-from-home mandate goes on really. Tom Nolle, president of CIMI Corp. [takes an interesting look at the situation][13] saying the shutdown “could eventually produce a major uptick for SD-WAN services, particularly in [managed service provider]    Businesses would be much more likely to embark on an SD-WAN VPN adventure that didn’t involve purchase/licensing, favoring a service approach in general, and in particular one with a fairly short contract period.” + * Statistics from VPN provider [NordVPN][14] show the growth of VPN usage across the globe.  For example, the company said the US has experienced a 65.93% growth in the use of business VPNs since March 11. It reported that mass remote working has contributed towards a rise in desktop (94.09%) and mobile app (0.39%) usage among Americans. Globally, NordVPN teams has seen a 165% spike in the use of business VPNs and business VPN usage in Netherlands (240.49%), Canada (206.29%) and Austria (207.86%) has skyrocketed beyond 200%. Italy has had the most modest growth in business VPN usage at just 10.57%. + + + +**UPDATE: 3. 25**: + + * According to [Atlas VPN][15] user data, VPN usage in the US increased by 124% during the last two weeks. VPN usage in the country increased by 71% between March 16 and 22 alone. Atlas said it measured how much traffic traveled through its servers during that period compared to March 9 to 15. The data came from the company's 53,000 weekly users. + * Verizon [reports][16] that voice usage, long declining in the age of texting, chat and social media, is up 25% in the last week. The network report shows the primary driver is accessing conference calls. In addition, people are talking longer on mobile devices with wireless voice usage notching a 10% increase and calls lasting 15% longer.  + * AT&T also [reported][17] increased calling, especially Wi-Fi calling, up 88% on March 22 versus a normal Sunday. It says that consumer home voice calls were up 74% more than an average Sunday; traffic from Netflix dipped after all-time highs on Friday and Saturday; and data traffic due to heavy video streaming between its network and peered networks tied record highs. AT&T said it has deployed portable cell nodes to bolster coverage supporting FirstNet customers in Indiana, Connecticut, New Jersey, California and New York. + * Microsoft this week advised users of Office 365 it was throttling back some services: + * **OneNote: ** OneNote in Teams will be read-only for commercial tenants, excluding EDU. Users can go to OneNote for the web for editing. Download size and sync frequency of file attachments has been changed. You can find details on these and other OneNote related updates as . + * **SharePoint:** We are rescheduling specific backend operations to regional evening and weekend business hours. Impacted capabilities include migration, DLP and delays in file management after uploading a new file, video or image. Reduced video resolution for playback videos. + * **Stream:** People timeline has been disabled for newly uploaded videos. Pre-existing videos will not be impacted. Meeting recording video resolution adjusted to 720p. + + + +**RELATED COVID-19 NEWS:** + + * Security vendor [Check Point’s Threat Intelligence][18] says that Since January 2020, there have been over 4,000 coronavirus-related domains registered globally. Out of these websites, 3% were found to be malicious and an additional 5% are suspicious. Coronavirus- related domains are 50% more likely to be malicious than other domains registered at the same period, and also higher than recent seasonal themes such as Valentine’s day. + * [Orange][19] an IT and communications **services** company aid that has increased its network capacity and upgraded its service platforms. These measures allow it to support the ongoing exponential increase in needs and uses. The number of users connecting to their company's network remotely has already increased by 700% among its customers. It has also doubled the capacity for simultaneous connections on its platforms. The use of remote collaboration solutions such as video conferencing has also risen massively with usage increasing by between 20% to 100%. + * Verizon said it has seen a 34% increase in VPN traffic from March 10 to 17. It has also seen a 75% increase in gaming traffic and web traffic increased by just under 20% in that time period according to Verizon. + * One week after the CDC declaration of the virus as a pandemic, data analytics and broadband vendor OpenVault wrote on March 19 that: + * Subscribers’ average usage during the 9 am-to-5 pm daypart has risen to 6.3 GB, 41.4% higher than the January figure of 4.4 GB.  + * During the same period, peak hours (6 pm–11 pm) usage has risen 17.2% from 5.0 GB per subscriber in January to 5.87 GB in March.  + * Overall daily usage has grown from 12.19 GB to 15.46 GB, an increase of 26.8%. + * Based on the current rate of growth, OpenVault projected that consumption for March will reach nearly 400 GB per subscriber, an increase of almost 11% over the previous monthly record of 361 GB, established in January of this year. In addition, OpenVault projects a new coronavirus-influenced run rate of 460 GB per subscriber per month going forward. + + + +Join the Network World communities on [Facebook][20] and [LinkedIn][21] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534037/rolling-update-the-impact-of-covid-19-on-public-networks-and-security.html + +作者:[Michael Cooney][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Michael-Cooney/ +[b]: https://github.com/lujun9972 +[1]: https://broadbandnow.com/ +[2]: https://broadbandnow.com/report/internet-speed-analysis-march-15th-21st/ +[3]: https://www.networkworld.com/article/3236448/lan-wan/what-to-consider-when-deploying-a-next-generation-firewall.html +[4]: https://www.networkworld.com/newsletters/signup.html +[5]: https://blog.talosintelligence.com/2020/03/covid-19-pandemic-threats.html +[6]: https://blog.talosintelligence.com/2020/02/coronavirus-themed-malware.html +[7]: https://www.vmware.com/company/news/updates/vmware-response-covid-19.html?mid=31381&eid=CVMW2000048242496 +[8]: mailto:sd-wan-hotline@vmware.com +[9]: https://blogs.cisco.com/news/global-traffic-spikes-no-panic-at-the-cisco +[10]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[11]: https://www.telefonica.com/en/web/press-office/-/telefonica-announces-measures-related-to-covid-19 +[12]: https://downdetector.com/?utm_campaign=Ookla%20Insights%20Blog%20Subscription&utm_source=hs_email&utm_medium=email&utm_content=85202785&_hsenc=p2ANqtz--Nj93d_eQyJpsqxrPJyNPtTiMBWBQU984psLyalw51K61e4d1WODareMF5NWFriHY2Uzw3WF7rF-2vSfH5cR53Jg3K5Q&_hsmi=85202785 +[13]: https://blog.cimicorp.com/?p=4068 +[14]: https://nordvpnteams.com/ +[15]: https://atlasvpn.com/blog/lockdowns-and-panic-leads-to-a-124-surge-in-vpn-usage-in-the-us/ +[16]: https://www.verizon.com/about/news/update-verizon-serve-customers-covid-19 +[17]: https://about.att.com/pages/COVID-19.html +[18]: https://blog.checkpoint.com/2020/03/05/update-coronavirus-themed-domains-50-more-likely-to-be-malicious-than-other-domains/ +[19]: https://www.orange.com/en/Press-Room/press-releases/press-releases-2020/Orange-is-mobilised-to-ensure-continuity-of-service-for-all-customers-in-France-and-around-the-world +[20]: https://www.facebook.com/NetworkWorld/ +[21]: https://www.linkedin.com/company/network-world From 355dd1dd012e6a1ef8f44922a0f3f940fb3696e2 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:27:34 +0800 Subject: [PATCH 051/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200325=20The=20?= =?UTF-8?q?coming=20together=20of=20SD-WAN=20and=20AIOps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200325 The coming together of SD-WAN and AIOps.md --- ...The coming together of SD-WAN and AIOps.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 sources/talk/20200325 The coming together of SD-WAN and AIOps.md diff --git a/sources/talk/20200325 The coming together of SD-WAN and AIOps.md b/sources/talk/20200325 The coming together of SD-WAN and AIOps.md new file mode 100644 index 0000000000..690a27686d --- /dev/null +++ b/sources/talk/20200325 The coming together of SD-WAN and AIOps.md @@ -0,0 +1,104 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The coming together of SD-WAN and AIOps) +[#]: via: (https://www.networkworld.com/article/3533437/the-coming-together-of-aiops-and-sd-wan.html) +[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) + +The coming together of SD-WAN and AIOps +====== +SD-WAN delivers cost and resiliency benefits. Infusing AI into SD-WAN takes things further, enabling automated operations and business agility. +kohb / Getty Images + +Software-defined wide-area networking ([SD-WAN][1]) and AIOps are both red-hot technologies. SD-WANs increase application availability, reduce costs and in some cases improve performance. AIOps infuses machine learning into IT operations to increase the level of automation. This reduces errors and enables businesses to make changes at digital speeds. Most think of these as separate technologies, but the two are on a collision course and will give rise to what I'm calling the AI-WAN.  + +### SD-WAN not a panacea for all network woes + +SD-WAN is the biggest leap forward in networking since… well, the actual WAN. But many solutions still rely on manual configurations. SD-WANs certainly increase application resiliency, lower telecommunications costs, and often increase application performance, but they are more complicated than traditional WANs. Initial setup can be a challenge, but the bigger issue is ongoing operations. Manually tweaking and tuning the network to adapt to business changes can be time consuming and error-prone. A solution is needed to bring better automation to SD-WANs. + +**READ MORE:** [How AI can improve network capacity planning][2] + +Enter AI-WAN. Much like a self-driving car, an AI-WAN can make decisions based on different rules and adapt to changes faster than people can. Self-driving cars continually monitor road conditions, speed limits and other factors to determine what changes to make. Similarly, a self-driving network can monitor, correct, defend, and analyze with minimal to no human involvement. This is done through automation capabilities powered by AI, obviating the need for people to get involved. + +Make no mistake, manual operations will hold businesses back from reaching their full potential. An interesting data point from my research is that it takes enterprises an average of four months to make changes across a network. That's because maintaining legacy networks and fixing glitches takes too much time. One ZK Research study found 30% of engineers spend at least one day a week doing nothing but troubleshooting problems. SD-WANs can improve these metrics, but there's still a heavy people burden. + +With growing data challenges businesses face as they migrate to the cloud, they simply can't afford to wait that long. Instead of being afraid of AI taking over jobs, businesses should embrace it. AI can remove human error—which is the largest cause of unplanned network downtime—and help businesses focus on higher-level tasks instead. + +### AI-WAN will transform network operations + +So how will the evolution of SD-WAN into AI-WAN transform network management and operations? Administrators can use their time to focus on strategic initiatives instead of fixing problems. Another data point from ZK Research is that 90% of the time taken to fix a problem is spent identifying the source. Now that applications reside in the cloud and run on mobile devices, identifying the source of a problem has gotten harder. AI-WANs have the ability to spot even the smallest anomaly, even if it hasn't yet begun to impact business. + +SD-WANs are fundamentally designed so that all routing rules are managed centrally by administrators and can be transmitted across a network. AI-WAN takes it a step further and enables administrators to anticipate problems before they happen through fault prediction. It may even adjust network glitches on its own before users are affected, thus improving network performance. + +[][3] + +A self-driving car knows the rules of the road—where the blind spots are, how to synch with traffic signals, and which safety measures to take—using AI software, real-time data from IoT sensors, cameras, and much more. Similarly, a self-driving network knows the higher-level rules and can prevent administrators from making mistakes, such as allowing applications in countries where certain actions are banned.  + +Security is another concern. Everything from mobile devices to Internet of Things (IoT) to cloud computing is creating multiple new entry points and shifting resources to the network edge. This puts businesses at a security risk, as they struggle to respond to changes quickly. + +Businesses can miss security gaps created by users, with hundreds of software-as-a-service (SaaS) apps being used at the same time without IT's knowledge. Older networking technologies cannot support SaaS and cloud services, while SD-WANs can. But simply deploying an SD-WAN is not enough to protect a network. Security shouldn't be an afterthought in an SD-WAN deployment, but part of it from the get-go. + +Increasingly, vendors are bundling AI-based analytics with SD-WAN solutions to boost network security. Such solutions use AI to analyze how certain events impact the network, application performance, and security. Then, they create intelligent recommendations for any network changes, such as unauthorized use of SaaS apps. + +Going back to the autonomous car analogy, AI-WANs are designed to keep roads clear and accident-free. They enable smarter networks that can adapt quickly to changing conditions and self-heal if necessary. With the growing demands of cloud computing and SaaS apps, intelligent networks are the future and forward-thinking businesses are already in the driver’s seat. + +### AI-WAN exists today and will explode in the future + +AI-WAN may seem futuristic, but there are a number of vendors that are delivering it or in the process of bringing solutions to market. Managed service provider Masergy, for example, recently introduced [AIOps for SD-WAN][4] to deliver autonomous networking and has the most complete offering. + +Open System, another managed service provider, [snapped up cloud-based Sqooba][5] to add AIOps to its strong network and security services. Keeping with the M&A theme, VMware recently [acquired AIOps vendor Nyansa][6] and rolled it into its VeloCloud SD-WAN group. That move gives VMware similar capabilities to [Aruba Networks][7], which initially applied AI to WiFi troubleshooting but is now bringing it to its SD-Branch offering. [Cisco][8] is another networking vendor with an AIOps story, although it's trying to apply it network-wide, not just with the WAN.  + +Over time, I expect every SD-WAN or SASE vendor to bring AIOps into the fold, shifting the focus away from connectivity to automated operations. + +**Learn more about SD-WAN** + + * [Top 10 underused SD-WAN features][9] + * [SD-WAN: The inside scoop from real-world deployments][10] + * [5 reasons to choose a managed SD-WAN and 5 reasons to think twice][11] + * [10 essential SD-WAN considerations][12] + * [SD-WAN: What is it and why you’ll use it one day][13] + * [SD-WAN deployment options: DIY vs. cloud managed][14] + * [How SD-WAN can improve your security strategy][15] + * [10 hot SD-WAN startups to watch][16] + * [How SD-WAN saves $1.2M over 5 years for a radiology firm][17] + * [SD-WAN creates new security challenges][18] + + + +Join the Network World communities on [Facebook][19] and [LinkedIn][20] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3533437/the-coming-together-of-aiops-and-sd-wan.html + +作者:[Zeus Kerravala][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Zeus-Kerravala/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html +[2]: https://www.networkworld.com/article/3338100/using-ai-to-improve-network-capacity-planning-what-you-need-to-know.html +[3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[4]: https://techcrunch.com/2020/03/19/nvidia-makes-its-gpu-powered-genome-sequencing-tool-available-free-to-those-studying-covid-19/?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAMI6we4H-fTz2mf5g-l6IP27C1O-V-u6EiQuJ5QzVnlrrPU04iS0fhyrZo5U8q5rAk5I9uVW5PQYKHX8ziMdWrFBxhBP7f__JshmAGevyu4Z5zm98nDnC6nEdIekjVX4RPPmF9Q_PImcQ0opZy6JukS-DZA62tHI9R7D1Q2JAog7 +[5]: https://open-systems.com/press-release/open-systems-acquires-sqooba +[6]: https://www.vmware.com/company/acquisitions/nyansa.html +[7]: https://blogs.arubanetworks.com/solutions/ai-doing-more-with-less-in-2020-and-beyond/ +[8]: https://www.cisco.com/c/en/us/products/cloud-systems-management/crosswork-network-automation/service-centric-approach-to-aiops.html#~overview +[9]: https://www.networkworld.com/article/3518992/top-10-underused-sd-wan-features.html +[10]: https://www.networkworld.com/article/3316568/sd-wan/sd-wan-the-inside-scoop-from-real-world-deployments.html +[11]: https://www.networkworld.com/article/3431080/5-reasons-to-choose-a-managed-sd-wan-and-5-reasons-to-think-twice.html +[12]: https://www.networkworld.com/article/3355138/sd-wan-10-essential-considerations.html +[13]: https://www.networkworld.com/article/3031279/sd-wan/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html +[14]: https://www.networkworld.com/article/3243701/wide-area-networking/sd-wan-deployment-options-diy-vs-cloud-managed.html +[15]: https://www.networkworld.com/article/3336483/how-sd-wan-can-improve-your-security-strategy.html +[16]: https://www.networkworld.com/article/3284367/sd-wan/10-hot-sd-wan-startups-to-watch.html +[17]: https://www.networkworld.com/article/3255291/lan-wan/sd-wan-helps-radiology-firm-cut-costs-scale-bandwidth.html +[18]: https://www.networkworld.com/article/3336155/sd-wan-creates-new-security-challenges.html +[19]: https://www.facebook.com/NetworkWorld/ +[20]: https://www.linkedin.com/company/network-world From 3049b5801559d9e9cc869664a5480505a8884351 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:36:29 +0800 Subject: [PATCH 052/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200325=20COVID-?= =?UTF-8?q?19=20vs.=20Raspberry=20Pi:=20Researchers=20bring=20IoT=20techno?= =?UTF-8?q?logy=20to=20disease=20detection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md --- ...ing IoT technology to disease detection.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md diff --git a/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md b/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md new file mode 100644 index 0000000000..cdcf720c0b --- /dev/null +++ b/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md @@ -0,0 +1,55 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (COVID-19 vs. Raspberry Pi: Researchers bring IoT technology to disease detection) +[#]: via: (https://www.networkworld.com/article/3534101/covid-19-vs-raspberry-pi-researchers-bring-iot-technology-to-disease-detection.html) +[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) + +COVID-19 vs. Raspberry Pi: Researchers bring IoT technology to disease detection +====== +Researchers from UMass say that a Raspberry Pi edge device can help identify flu-like symptoms in crowds, broadening the range of tools that can be used to track the spread of disease. +[Bill Oxford / Raspberry Pi / Modified by IDG Comm.][1] [(CC0)][2] + +An [IoT][3] device that tracks coughing and crowd size in real time could become a useful tool for identifying the presence of flu-like symptoms among large groups of people, according to a team of researchers at UMass Amherst. + +FluSense, as the researchers call it, is about the size of a dictionary. It contains a cheap microphone array, a thermal sensor, a Raspberry Pi and an Intel Movidius 2 neural computing engine. The idea is to use AI at the edge to classify audio samples and identify the number of people in a room at any given time. + +[[Get regularly scheduled insights by signing up for Network World newsletters.]][4] + +Since the system can distinguish coughing from other types of non-speech audio, correlating coughing with the size of a given crowd could give a useful index of how many people are likely to be experiencing flu-like symptoms. + +A test run between December 2018 and July 2019 saw FluSense installed in four waiting rooms at UMass’ University Health Services clinic, and the researchers said that they were able to “strongly” correlate the system’s results with clinical testing for influenza and other illnesses with similar symptoms. + +And bigger plans for FluSense are afoot, according to the paper’s lead author, Ph.D student Forsad Al Hossain and his co-author and adviser, assistant professor Tauhidur Rahman. + +“[C]urrently we are planning to deploy the FluSense system in several large public spaces (e.g., large cafeteria, classroom, dormitories, gymnasium, auditorium) to capture syndromic signals from a broad range of people who live in a certain town or city,” they said. “We are also looking for funding to run a large-scale multi-city trial. In the meantime, we are also diversifying our sensing capability by extending FluSense’s capability to capture more syndromic signals (e.g., recently we added sneeze sensing capability to FluSense). We definitely see a significant level of commercialization potential in this line of research.” + +FluSense is particularly interesting from a technical perspective because all of the meaningful processing work is done locally, via the Intel neural computing engine and Raspberry Pi. Symptom information is sent wirelessly to the lab for collation, of course, but the heavy lifting is accomplished at the edge. Al Hossain and Rahman were quick to emphasize that the device doesn’t collect personally identifiable information – the emphasis is on aggregating data in a given setting, rather than identifying sickness in any single patient – and everything it does collect is heavily encrypted, making it a minimal privacy concern. + +The key point of FluSense, according to the researchers, is to think of it as a health surveillance tool, rather than a piece of diagnostic equipment. Al Hossain and Rahman said that it has several important advantages over other health surveillance techniques, particularly those based on Internet tracking, like Google Flu Trend and Twitter. + +“FluSense is not easily influenced by public health campaigns or advertisements. Also, the contactless nature of this sensor is ideal to capture syndromic signals passively from different geographical locations and different socioeconomic groups (including underprivileged who may not have access to healthcare and may not go to a doctor/clinic,” they said. + +Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534101/covid-19-vs-raspberry-pi-researchers-bring-iot-technology-to-disease-detection.html + +作者:[Jon Gold][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Jon-Gold/ +[b]: https://github.com/lujun9972 +[1]: https://unsplash.com/photos/tR0PPLuN6Pw +[2]: https://creativecommons.org/publicdomain/zero/1.0/ +[3]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html +[4]: https://www.networkworld.com/newsletters/signup.html +[5]: https://www.facebook.com/NetworkWorld/ +[6]: https://www.linkedin.com/company/network-world From f2a46f252c2131f9ac9147ea6115a5ffc4f3b723 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:37:33 +0800 Subject: [PATCH 053/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200325=20Linux?= =?UTF-8?q?=20firewall=20basics=20with=20ufw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200325 Linux firewall basics with ufw.md --- ...20200325 Linux firewall basics with ufw.md | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 sources/tech/20200325 Linux firewall basics with ufw.md diff --git a/sources/tech/20200325 Linux firewall basics with ufw.md b/sources/tech/20200325 Linux firewall basics with ufw.md new file mode 100644 index 0000000000..104d3527ac --- /dev/null +++ b/sources/tech/20200325 Linux firewall basics with ufw.md @@ -0,0 +1,215 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Linux firewall basics with ufw) +[#]: via: (https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Linux firewall basics with ufw +====== +We take a look at ufw - the uncomplicated firewall - on Linux, providing some insights and commands for making changes. +Vertigo3D / Getty Images + +The **ufw** (uncomplicated firewall) represents a serious simplification to [iptables][1] and, in the years that it’s been available, has become the default firewall on systems such as Ubuntu and Debian. And, yes, **ufw** is surprisingly uncomplicated – a boon for newer admins who might otherwise have to invest a lot of time to get up to speed on firewall management. + +GUIs are available for **ufw** (like **gufw**), but **ufw** commands are generally issued on the command line. This post examines some commands for using **ufw** and looks into how it works. + +First, one quick way to see how **ufw** is configured is to look at its configuration file – **/etc/default/ufw**. In the command below, we display the settings, using **grep** to suppress the display of both blank lines and comments (line starting with #). + +[RELATED: Linux hardening: a 15-step checklist for a secure Linux server][2] + +``` +$ grep -v '^#\|^$' /etc/default/ufw +IPV6=yes +DEFAULT_INPUT_POLICY="DROP" +DEFAULT_OUTPUT_POLICY="ACCEPT" +DEFAULT_FORWARD_POLICY="DROP" +DEFAULT_APPLICATION_POLICY="SKIP" +MANAGE_BUILTINS=no +IPT_SYSCTL=/etc/ufw/sysctl.conf +IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" +``` + +As you can see, the default policy is to drop input and allow output. Additional rules that allow the connections that you specifically want to be accept are configured separately. + +The basic syntax for ufw commands might look like thee below, though this synopsis is not meant to imply that typing only “ufw” will get you further than a quick error telling you that arguments are required. + +``` +ufw [--dry-run] [options] [rule syntax] +``` + +The **\--dry-run** option means that **ufw** won’t run the command you specify, but will show you the results that you would see if it did. It will, however, display the entire set of rules as they would exist if the change were made, so be prepared for more than a few lines of output. + +To check the status of **ufw**, run a command like the following. Note that even this command requires use of **sudo** or use of the root account. + +[][3] + +``` +$ sudo ufw status +Status: active + +To Action From +-- ------ ---- +22 ALLOW 192.168.0.0/24 +9090 ALLOW Anywhere +9090 (v6) ALLOW Anywhere (v6) +``` + +Otherwise, you will see something like this: + +``` +$ ufw status +ERROR: You need to be root to run this script +``` + +Adding "verbose" provides a few additional details: + +``` +$ sudo ufw status verbose +Status: active +Logging: on (low) +Default: deny (incoming), allow (outgoing), disabled (routed) +New profiles: skip + +To Action From +-- ------ ---- +22 ALLOW IN 192.168.0.0/24 +9090 ALLOW IN Anywhere +9090 (v6) ALLOW IN Anywhere (v6) +``` + +You can easily allow and deny connections by port number with commands like these: + +``` +$ sudo ufw allow 80 <== allow http access +$ sudo ufw deny 25 <== deny smtp access +``` + +You can check out the **/etc/services** file to find the connections between port numbers and service names. + +``` +$ grep 80/ /etc/services +http 80/tcp www # WorldWideWeb HTTP +socks 1080/tcp # socks proxy server +socks 1080/udp +http-alt 8080/tcp webcache # WWW caching service +http-alt 8080/udp +amanda 10080/tcp # amanda backup services +amanda 10080/udp +canna 5680/tcp # cannaserver +``` + +Alternately, you can use service names like in these commands. + +``` +$ sudo ufw allow http +Rule added +Rule added (v6) +$ sudo ufw allow https +Rule added +Rule added (v6) +``` + +After making changes, you should check the status again to see that those changes have been made: + +``` +$ sudo ufw status +Status: active + +To Action From +-- ------ ---- +22 ALLOW 192.168.0.0/24 +9090 ALLOW Anywhere +80/tcp ALLOW Anywhere <== +443/tcp ALLOW Anywhere <== +9090 (v6) ALLOW Anywhere (v6) +80/tcp (v6) ALLOW Anywhere (v6) <== +443/tcp (v6) ALLOW Anywhere (v6) <== +``` + +The rules that **ufw** follows are stored in the **/etc/ufw** directory. Note that you need root access to view these files and that each contains a large number of rules. + +``` +$ ls -ltr /etc/ufw +total 48 +-rw-r--r-- 1 root root 1391 Aug 15 2017 sysctl.conf +-rw-r----- 1 root root 1004 Aug 17 2017 after.rules +-rw-r----- 1 root root 915 Aug 17 2017 after6.rules +-rw-r----- 1 root root 1130 Jan 5 2018 before.init +-rw-r----- 1 root root 1126 Jan 5 2018 after.init +-rw-r----- 1 root root 2537 Mar 25 2019 before.rules +-rw-r----- 1 root root 6700 Mar 25 2019 before6.rules +drwxr-xr-x 3 root root 4096 Nov 12 08:21 applications.d +-rw-r--r-- 1 root root 313 Mar 18 17:30 ufw.conf +-rw-r----- 1 root root 1711 Mar 19 10:42 user.rules +-rw-r----- 1 root root 1530 Mar 19 10:42 user6.rules +``` + +The changes made earlier in this post (the addition of port **80** for **http** access and **443** for **https** (encrypted http) access will look like this in the **user.rules** and **user6.rules** files: + +``` +# grep " 80 " user*.rules +user6.rules:### tuple ### allow tcp 80 ::/0 any ::/0 in +user6.rules:-A ufw6-user-input -p tcp --dport 80 -j ACCEPT +user.rules:### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 in +user.rules:-A ufw-user-input -p tcp --dport 80 -j ACCEPT +You have new mail in /var/mail/root +# grep 443 user*.rules +user6.rules:### tuple ### allow tcp 443 ::/0 any ::/0 in +user6.rules:-A ufw6-user-input -p tcp --dport 443 -j ACCEPT +user.rules:### tuple ### allow tcp 443 0.0.0.0/0 any 0.0.0.0/0 in +user.rules:-A ufw-user-input -p tcp --dport 443 -j ACCEPT +``` + +With **ufw**, you can also easily block connections from a system using a command like this: + +``` +$ sudo ufw deny from 208.176.0.50 +Rule added +``` + +The status command will show the change: + +``` +$ sudo ufw status verbose +Status: active +Logging: on (low) +Default: deny (incoming), allow (outgoing), disabled (routed) +New profiles: skip + +To Action From +-- ------ ---- +22 ALLOW IN 192.168.0.0/24 +9090 ALLOW IN Anywhere +80/tcp ALLOW IN Anywhere +443/tcp ALLOW IN Anywhere +Anywhere DENY IN 208.176.0.50 <== new +9090 (v6) ALLOW IN Anywhere (v6) +80/tcp (v6) ALLOW IN Anywhere (v6) +443/tcp (v6) ALLOW IN Anywhere (v6) +``` + +All in all, **ufw** is both easy to configure and easy to understand. + +Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/article/2716098/working-with-iptables.html +[2]: https://www.networkworld.com/article/3143050/linux/linux-hardening-a-15-step-checklist-for-a-secure-linux-server.html#tk.nww-fsb +[3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[4]: https://www.facebook.com/NetworkWorld/ +[5]: https://www.linkedin.com/company/network-world From 1c60f6aa818f44e58a1b32ada5628c5a0ca53c3e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sun, 29 Mar 2020 01:39:19 +0800 Subject: [PATCH 054/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200324=20COVID-?= =?UTF-8?q?19:=20Weekly=20health=20check=20of=20ISPs,=20cloud=20providers?= =?UTF-8?q?=20and=20conferencing=20services?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md --- ...oud providers and conferencing services.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md diff --git a/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md b/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md new file mode 100644 index 0000000000..a5540c4ce2 --- /dev/null +++ b/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md @@ -0,0 +1,96 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (COVID-19: Weekly health check of ISPs, cloud providers and conferencing services) +[#]: via: (https://www.networkworld.com/article/3534130/covid-19-weekly-health-check-of-isps-cloud-providers-and-conferencing-services.html) +[#]: author: (Tim Greene https://www.networkworld.com/author/Tim-Greene/) + +COVID-19: Weekly health check of ISPs, cloud providers and conferencing services +====== +ThousandEyes, which tracks internet and cloud traffic, is providing Network World with weekly updates on the performance of three categories of service provider: ISP, cloud provider, UCaaS +[ThousandEyes][1] + +_As COVID-19 continues to spread, forcing employees to work from home, the services of ISPs, cloud providers and conferencing services a.k.a. unified communications as a service (UCaaS) providers are experiencing increased traffic._ + +_Thousand Eyes is monitoring how these increases affect outages and the performance these providers undergo. It will provide Network World a roundup of interesting events of  the week in the delivery of these services, and Network World will provide a summary here. Stop back next week for another update._ + +With the increased use of remote-access VPNs, major carriers are reporting dramatic increases in their network traffic – with Verizon reporting a 20% week-over-week increase, and Vodafone reporting an increase of 50%. + +[Read about IPv6 and cloud-access security brokers][2] + +While there has been no corresponding spike in outages in service provider networks, over the past six weeks there has been a steady increase in outages across multiple provider types both worldwide and in the U.S., all according to ThousandEyes, which keeps track of internet and cloud traffic. + +### IDG Special Report: + +Navigating the Pandemic + + * [Business continuity: Coronavirus crisis puts CIOs’ plans to the test][3] + * [Coronavirus challenges remote networking][4] + * [A security guide for pandemic planning: 7 key steps][5] + * [10 tips to set up your home office for videoconferencing][6] + * [How to survive and thrive while working from home][7] + * [WTH? OSS knows how to WFH IRL][8] + + + +This includes “a concerning upward trajectory” since the beginning of March of ISP outages worldwide that coincides with the spread of COVID-19, [according to a ThousandEyes blog][9] by Angelique Medina, the company’s director of product marketing. ISP outages worldwide hovered around 150 per week between Feb. 10 and March 19, but then increased to between just under 200 and about 225 during the following three weeks. + +In the U.S. those numbers were a little over 50 in the first time range and reaching about 100 during the first week of March. “That early March level has been mostly sustained over the last couple of weeks,” Medina writes. + +Cogent Communications was one ISP with nearly identical large scale outages on March 11 and March 18, with “disruptions for the fairly lengthy period (by Internet standards) of 30 minutes,” she wrote. + +[][10] + +Hurricane Electric suffered an outage March 20 that was less extensive and shorter than Cogent’s but included smaller disruptions that altogether affected hundreds of sites and services, she wrote. + +Public-cloud provider networks have withstood the effects of COVID-19 well, with slight increases in the number of outages in the U.S., but otherwise relatively level around the world. The possible reason: “Major public cloud providers, such as AWS, Microsoft Azure, and Google Cloud, have built massive global networks that are incredibly well-equipped to handle traffic surges,” Medina wrote. And when these networks do have major outages it’s due to routing or infrastructure state changes, not traffic congestion. + +Some providers of collaboration applications – the likes of Zoom, Webex, MSFT Teams, RingCentral – also experienced performance problems between March 9 and March 20. ThousandEyes doesn’t name them, but does list performance numbers for what it describes “the top three” UCaaS providers. One actually showed improvements in availability, latency, packet loss and jitter. The other two “showed minimal (in the grand scheme of things) degradations on all fronts — not surprising given the unprecedented strain they’ve been under,” according to the blog. + +Each provider showed spikes in traffic loss over the time period that ranged from less than 1% to more than 4% in one case. In the case of one provider, “outages within its own network spiked last week, meaning that the network issues impacting users were taking place on infrastructure managed by the provider versus an external ISP.” + +“Outage incidents within large UCaaS provider networks are fairly infrequent; however, the recent massive surge in usage is clearly stressing current design limits. Capacity is reportedly being added across the board to meet new service demands,” according to the blog. + +Meanwhile, ThousandEyes has introduced a new feature on its site a [Global Internet Outages Map][1] that is updated every few minutes. It shows recent and ongoing outages + +## Google outage unrelated to COVID-19 + +On March 26 Google suffered a 20 minute outage on the East Coast of the U.S., apparently from a router failure in Atlanta, ThousandEyes said, agreeing with a statement put out by Googe to that effect. + +That problem affected other regions of the U.S. as evidenced by Google sites such as google.com intermittently returning server errors."These 500 server errors are consistent with an inability to reach the backend systems necessary to correctly load various services," ThousandEyes said in a statement. "Any traffic traversing the affected region — connecting from Google’s front-end servers to backend services — may have been impacted and seen the resulting server errors." + +ThousandEyes posted interactive results of tests it ran about the outage [here][11] and [here][12]. + +. + +Join the Network World communities on [Facebook][13] and [LinkedIn][14] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534130/covid-19-weekly-health-check-of-isps-cloud-providers-and-conferencing-services.html + +作者:[Tim Greene][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Tim-Greene/ +[b]: https://github.com/lujun9972 +[1]: https://www.thousandeyes.com/outages +[2]: https://www.networkworld.com/article/3391380/does-your-cloud-access-security-broker-support-ipv6-it-should.html +[3]: https://www.cio.com/article/3532899/business-continuity-coronavirus-crisis-puts-cios-plans-to-the-test.html +[4]: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html +[5]: https://www.csoonline.com/article/3528878/a-security-guide-for-pandemic-planning-7-key-steps.html +[6]: https://www.computerworld.com/article/3250684/10-tips-to-set-up-your-home-office-for-videoconferencing.html +[7]: https://www.computerworld.com/article/3532283/how-to-survive-and-thrive-while-working-from-home.html +[8]: https://www.infoworld.com/article/3533050/wth-oss-knows-how-to-wfh-irl.html +[9]: https://blog.thousandeyes.com/internet-health-during-covid-19/ +[10]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[11]: https://agisi.share.thousandeyes.com/view/endpoint-agent/?roundId=1585237800&metric=loss&scenarioId=eyebrowNetwork&filters=%7B%22filters%22:%7B%22domain%22:%5B%22google.com%22%5D,%22geonameId%22:%5B4148757,4180439,4459467,4460243,4509177,4671240,4744709,4744870,4887398,4890864,4930956,5099836,5110266,5110302,5128581,5145476,5150529,5282804,5786882%5D%7D%7D&page=0,0&grouping=BY_NETWORK,BY_DOMAIN +[12]: https://ythkurgdz.share.thousandeyes.com/view/tests/?roundId=1585236900&metric=availability&scenarioId=httpServer&testId=1283781 +[13]: https://www.facebook.com/NetworkWorld/ +[14]: https://www.linkedin.com/company/network-world From 0ee178b5842e74099b7c1d5d21811c599cb4a0f4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 10:40:01 +0800 Subject: [PATCH 055/218] PRF @wxy --- ...ware projects working to solve COVID-19.md | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md index 2655544108..423ad5f6e8 100644 --- a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md +++ b/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md @@ -1,45 +1,48 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (7 open hardware projects working to solve COVID-19) [#]: via: (https://opensource.com/article/20/3/open-hardware-covid19) [#]: author: (Harris Kenny https://opensource.com/users/harriskenny) -应对新冠病毒事件的 7 个开放硬件项目 +应对新冠病毒的 7 个开源硬件项目 ====== -> 开放硬件解决方案可以为抵御新型冠状病毒的传播和痛苦做出贡献。 -![open on blue background with heartbeat symbol][1] +> 开源硬件解决方案可以为抵御新型冠状病毒的传播和痛苦做出贡献。 -开源[硬件][2]运动长期以来一直主张维修权的重要性,完全拥有所购买的技术,并能够像音乐一样重新组合和复制组件。因此,在这个充满挑战的时期内,开放硬件为由冠状病毒大流行引起的一些问题提供了一些答案。 +![](https://img.linux.net.cn/data/attachment/album/202003/29/103909f50gm91z22twuv23.jpg) + +开源[硬件][2]运动长期以来一直主张维修权的重要性,完全拥有所购买的技术,并能够像音乐一样重新组合和复制部件。因此,在这个充满挑战的时期内,开源硬件为由冠状病毒大流行引起的一些问题提供了一些答案。 ### 背景概述 -首先,全球的硬件开发人员正在努力使用开源解决供应链中的弱点,在过去 30 年中,这种理念推动了新软件技术的大量涌现。过去在硬件运动方面的成功,如 [RepRap Project][3],[Open Source Ecology][4] 和 [Open Source Beehives][5],证明了这一点是可以做到的。 +首先,全球的硬件开发人员正在努力使用开源解决供应链中的弱点,在过去 30 年中,这种理念推动了新软件技术的大量涌现。过去在硬件运动方面的成功,如 [RepRap Project][3]、[Open Source Ecology][4] 和 [Open Source Beehives][5],证明了这一点是可以做到的。 -对使用 3D 打印和其他技术按需制造安全设备的替换零件和按需生产的创作者的兴趣日益增加。例如,香港理工大学实验室为医院工作人员提供 [3D 打印面罩][6]。意大利初创公司 Isinnova 与米兰 FabLab 合作,为受重灾的意大利北部提供用于呼吸机的 [3D 打印替换阀][7]。公司们还发布了设计以适应我们的物理接触,例如 Materialise 的 [3D 打印免提开门器] [8]。这些更换零件和解决问题的示例是一个很好的起点,为挽救生命做出了努力。 +对于使用 3D 打印和其他技术按需生产安全设备和按需制造它的替换零件,创客们的兴趣日益增加。例如,香港理工大学实验室为医院工作人员提供 [3D 打印面罩][6]。意大利初创公司 Isinnova 与米兰 FabLab 合作,为受重灾的意大利北部提供用于呼吸机的 [3D 打印替换阀][7]。公司们还发布了设计以适应我们的物理接触需求,例如 Materialise 的 [3D 打印免提开门器][8]。这些更换零件和解决问题的示例是一个很好的起点,为挽救生命做出了努力。 另一种传统的硬件技术正在加速发展:缝纫。法新社报道说,全球急需口罩,来自世界卫生组织的指导也指明了其重要性。随着一次性口罩要优先供给于医护人员,捷克共和国的人们[开始缝制自己的口罩][9]。(重复使用的口罩确实会带来细菌问题。)Facebook 小组“捷克缝制口罩”开始在他们的国家解决这个问题,成千上万的成员开始用起了他们的家用缝纫机。 -开源硬件设备和机械项目也越来越受欢迎。首先,有一些测试性设备具备高精度且功能强大。其次,在没有其他选择方案的情况下,有一些医疗设备可以归类为现场级(最好)。这些项目将在下面详细概述。 +开源硬件设备和机械项目也越来越受欢迎。首先,有一些测试性设备具备高精度且功能强大。其次,在没有其他选择方案的情况下,有一些医疗设备(顶多)可以归类为现场级。这些项目将在下面详细概述。 -为了解更多信息,我与总部位于芝加哥的 [Tapster Robotics][10] 的创始人兼首席执行官 Jason Huggins 进行了交谈。Tapster Robotics 使用 3 D打印、计算机数控(CNC)加工和 [Arduino][11] 等开放式电子产品设计和制造台式机器人。他兼具技术知识和工业能力,具有很高的影响力。他想投入自己公司的资源来帮助这场斗争。 +为了解更多信息,我与总部位于芝加哥的 [Tapster Robotics][10] 的创始人兼首席执行官 Jason Huggins 进行了交谈。Tapster Robotics 使用 3D 打印、计算机数控(CNC)加工和 [Arduino][11] 等开源电子产品设计和制造台式机器人。他兼具技术知识和工业能力,具有很高的影响力。他想投入自己公司的资源来帮助这场斗争。 -“基本上,我们现在正处于第二次世界大战的动员时刻。即使我不是医生,我们仍然应该遵循希波克拉底誓言。无论我做什么,我都不想让问题变得更糟,” Huggins 解释。他认为:“作为对策,世卫组织执行主任 Michael Ryan 博士发表了这样的评论:‘速度胜过完美’。” +“基本上,我们现在正处于第二次世界大战的动员时刻。即使我不是医生,我们仍然应该遵循希波克拉底誓言。无论我做什么,我都不想让问题变得更糟”,Huggins 解释,他认为:“作为对策,世卫组织执行主任 Michael Ryan 博士发表了这样的评论:‘速度胜过完美’。” -> 哇 +> 哇! > -> 这个人是疾病传播的全球权威。如果您是领导者(无论以何种身份),请注意。如果不是,也请注意。 [pic.twitter.com/bFogaekehM][12] +> 这个人是疾病传播的全球权威。如果您是领导者(无论以何种身份),请注意。如果不是,也请注意。 +> +> [pic.twitter.com/bFogaekehM][12] > > — Jim RichardsSh🎙wgram(@JIMrichards1010)[2020 年 3 月 15 日][13] Huggins 在应需提供方面具有丰富的经验。他的努力有助于 [Healthcare.gov][14] 在挑战性的最初启动后得以扩展。他还创建了软件行业标准的测试框架 Selenium 和 Appium。有了这一经验,他的建议非常值得考虑。 -我还与 [Tyson Law][15] 的西雅图律师 Mark Tyson 进行了交谈,他与初创公司和小型企业合作。他在快速发展的行业中与敏捷公司合作有着直接的经验。在阐述整个问题时,Tyson 说到: +我还与 [Tyson Law][15] 的西雅图律师 Mark Tyson 进行了交谈,他的合作对象是初创公司和小型企业。他在快速发展的行业中与敏捷公司合作有着直接的经验。在阐述整个问题时,Tyson 说到: -> 《善良的撒玛利亚人法Good Samaritan law》保护志愿者(即“好撒玛利亚人”)免于因其决定在紧急情况下提供援助而承担责任。尽管这些法律的具体内容因州而异,但它们具有共同的公共政策依据:即鼓励旁观者帮助遇到紧急情况的其他人。可以想象,除了传统的把车祸的受害者从伤害中拉出来之外,这种理论依据可以证明在不太传统的环境中应用这类法律的合理性。 +> 《善良的撒玛利亚人法Good Samaritan law》保护志愿者(即“好撒玛利亚人”)免于因其在紧急情况下提供援助的决定而承担责任。尽管这些法律的具体内容因州而异,但它们具有共同的公共政策依据:即鼓励旁观者帮助遇到紧急情况的其他人。可以想象,除了传统的把车祸的受害者从伤害中拉出来之外,这种理论依据可以证明在不太传统的环境中应用这类法律的合理性。 对于这种特定情况,Tyson 指出: @@ -49,17 +52,17 @@ Tyson 明白情况的紧迫性和严重性。使用合同的这种选择并不 综上所述,让我们探索正在使用或正在开发中的项目(可能很快就可以部署)。 -### 7 个与新冠病毒对抗的开放硬件项目 +### 7 个与新冠病毒对抗的开源硬件项目 #### Opentrons -[Opentrons][16] 的开源实验室自动化平台由一套开源硬件、经过验证的实验室器具、消耗品、试剂和工作站组成。Opentrons 表示,其产品可以“在下订单后几天内每天自动进行多达 2400 个测试”的系统,可以极大地帮助提高[新冠病毒测试规模][17]。它计划在 7 月 1 日之前提升多达 100 万个测试样本。 +[Opentrons][16] 的开源实验室自动化平台由一套开源硬件、经过验证的实验室器具、消耗品、试剂和工作站组成。Opentrons 表示,其产品可以“在下订单后几天内每天自动进行多达 2400 个测试”的系统,可以极大地帮助提高[新冠病毒测试规模][17]。它计划在 7 月 1 日之前提升到多达 100 万个测试样本。 ![Opentrons roadmap graphic][18] *来自 Opentrons [网站][17],版权所有* -该公司已经在与联邦和地方政府机构合作,以确定其系统是否可以在[紧急使用授权][19]下用于临床诊断。 Opentrons 在 [Apache 2.0 许可证][20]下共享。我最初是从与该项目有联系的生物学家 Kristin Ellis 斯那里得知它的。 +该公司已经在与联邦和地方政府机构合作,以确定其系统是否可以在[紧急使用授权][19]下用于临床诊断。 Opentrons 在 [Apache 2.0 许可证][20]下共享。我最初是从与该项目有联系的生物学家 Kristin Ellis 那里得知它的。 #### Chai 的 Open qPCR @@ -67,17 +70,17 @@ Chai 的 [Open qPCR][21] 设备使用[聚合酶链反应][22](PCR)快速检 #### OpenPCR -[OpenPCR][25] 是 Chai Open qPCR 的创建者 Josh Perfetto 和 Jessie Ho 的 PCR 测试设备套件。与以前的项目相比,这更像是一种 DIY 开源设备,但它具有相同的使用场景:使用环境测试来识别野外冠状病毒。正如该项目页面所指出的那样,“能够检测这些病原体的传统实时 PCR 机通常花费超过 30,000 美元,而且不适合在现场使用。”由于 OpenPCR 是用户构建的工具包,并且在 [GPLv3.0 许可证][26]下共享,因此该设备旨在使分子诊断的访问大众化。 +[OpenPCR][25] 是 Chai Open qPCR 的创建者 Josh Perfetto 和 Jessie Ho 的 PCR 测试设备套件。与他们的前一个项目相比,这更像是一种 DIY 开源设备,但它具有相同的使用场景:使用环境测试来识别野外冠状病毒。正如该项目页面所指出的那样,“能够检测这些病原体的传统实时 PCR 设备通常花费超过 30,000 美元,而且不适合在现场使用。”由于 OpenPCR 是用户构建的工具包,并且在 [GPLv3.0 许可证][26]下共享,因此该设备旨在使分子诊断的访问大众化。 ![OpenPCR][27] *来自 OpenPCR [网站][25],版权所有* -而且,就像任何优秀的开源项目一样,它也有一个衍生产品!瑞士的 [GaudiLabs][29] 推出的 [WildOpenPCR][28] 也以 [GPLv3.0 许可证][30]共享。 +而且,就像任何优秀的开源项目一样,它也有一个衍生产品!瑞士的 [Gaudi Labs][29] 推出的 [WildOpenPCR][28] 也以 [GPLv3.0 许可证][30]共享。 #### PocketPCR -Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中液体的温度来激活生物反应。它可以通过简单的 USB 电源适配器供电,该适配器可以绑定到设备上,也可以单独使用,不需要计算机或智能手机时可使用预设参数。 +Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中液体的温度来激活生物反应。它可以通过简单的 USB 电源适配器供电,该适配器可以绑定到设备上,也可以单独使用,不使用计算机或智能手机时可使用预设参数。 ![PocketPCR][32] @@ -87,7 +90,7 @@ Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中 #### Open Lung 低资源呼吸机 -[Open Lung 低资源呼吸机][34]是一种快速部署的呼吸机,它以[气囊阀罩][35](BVM)(也称为 Ambu 气囊)为核心组件。Ambu 气囊已批量生产,经过认证,体积小,机械简单,并且适用于侵入性导管和口罩。 OPEN LUNG 呼吸机使用微电子技术来感测和控制气压和流量,以实现半自主运行。 +[Open Lung 低资源呼吸机][34]是一种快速部署的呼吸机,它以[气囊阀罩][35](BVM)(也称为 Ambu 气囊)为核心组件。Ambu 气囊已批量生产,经过认证,体积小,机械简单,并且适用于侵入性导管和口罩。 Open Lung 呼吸机使用微电子技术来感测和控制气压和流量,以实现半自主运行。 ![Open Lung ventilator][36] @@ -101,27 +104,27 @@ Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中 #### Folding at Home -[Folding at Home][40] 是一个分布式计算项目,用于模拟蛋白质动力学,包括蛋白质折叠的过程以及与多种疾病有关的蛋白质运动。这是一个面向公民科学家、研究人员和志愿者的行动呼吁,类似于退役的 [SETI@Home 项目][41]中在家中使用计算机来运行解码计算。如果你是具备强大计算机硬件功能的技术人员,那么这个项目适合你。 +[Folding at Home][40] 是一个分布式计算项目,用于模拟蛋白质动力学,包括蛋白质折叠的过程以及与多种疾病有关的蛋白质运动。这是一个面向公民科学家、研究人员和志愿者的行动呼吁,类似于退役的 [SETI@Home 项目][41]使用家中的计算机来运行解码计算。如果你是具备强大计算机硬件功能的技术人员,那么这个项目适合你。 ![Markov state model][42] *Vincent Voelz,CC BY-SA 3.0* -Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模蛋白质可能采取的形状和折叠途径,以寻找新的治疗机会。你可以在华盛顿大学生物物理学家 Greg Bowman 的帖子“[它是如何运作的以及如何提供帮助][43]”中找到有关该项目的更多信息。 +Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模蛋白质可能采取的形状和折叠途径,以寻找新的治疗机会。你可以在华盛顿大学生物物理学家 Greg Bowman 的帖子《[它是如何运作的以及如何提供帮助][43]》中找到有关该项目的更多信息。 -该项目涉及来自许多国家(包括香港、克罗地亚、瑞典和美国)的财团的学术实验室、贡献者和公司赞助者。 在 [GitHub][45] 上,[在混合了 GPL 和专有许可证][44]下可以共享,并且可以在 Windows、macOS 和 GNU/Linux(例如 Debian、Ubuntu、Mint、RHEL、CentOS、Fedora)。 +该项目涉及来自许多国家(包括香港、克罗地亚、瑞典和美国)的财团的学术实验室、贡献者和公司赞助者。 在 [GitHub][45] 上,[在混合了 GPL 和专有许可证][44]下共享,并且可以在 Windows、macOS 和 GNU/Linux(例如 Debian、Ubuntu、Mint、RHEL、CentOS、Fedora)。 ### 许多其他有趣的项目 -这些项目只是在开放硬件领域中解决或治疗新冠病毒活动中的一小部分。在研究本文时,我发现了其他值得探索的项目,例如: +这些项目只是在开源硬件领域中解决或治疗新冠病毒活动中的一小部分。在研究本文时,我发现了其他值得探索的项目,例如: * Coronavirus Tech Handbook 提供的[开源呼吸机、氧气浓缩器等][46] * 来自 ProjectOpenAir 的 [有用的工程][47] * Hackaday 上的[开源呼吸机黑客马拉松][48] * 约翰·霍普金斯急诊医学住院医师 Julian Botta 的[简单开源机械呼吸机规范][49] * [与冠状病毒有关的网络钓鱼、恶意软件和随机软件正在增加][50],作者:Shannon Morse -* [将低成本的 CPAP 鼓风机转换为基本通风机][51],作者: jcl5m1 -* [A.I.R.E. 论坛上关于开放呼吸器和风扇的讨论][52](西班牙语) +* [将低成本的 CPAP 鼓风机转换为基本呼吸机][51],作者: jcl5m1 +* [A.I.R.E. 论坛上关于开源呼吸器和风扇的讨论][52](西班牙语) * [关于新冠病毒的开源医疗硬件的特殊问题][53],作者:Elsevier HardwareX 这些项目遍布全球,而这种全球合作正是我们所需要的,因为病毒无视国界。新冠病毒大流行在不同时期以不同方式影响国家,因此我们需要一种分布式方法。 @@ -132,7 +135,7 @@ Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模 *OSHdata,CC BY-SA 4.0 国际版* -如果你有兴趣加入这场与全球开源硬件开发人员的对话,请加入[Open Hardware Summit Discord][56]服 务器,并通过专用渠道进行有关新冠病毒的讨论。你在这里可以找到机器人专家、设计师、艺术家、固件和机械工程师、学生、研究人员以及其他共同为这场战争而战的人。希望可以看到你。 +如果你有兴趣加入这场与全球开源硬件开发人员的对话,请加入[开源硬件峰会的 Discord][56] 服务器,并通过专用渠道进行有关新冠病毒的讨论。你在这里可以找到机器人专家、设计师、艺术家、固件和机械工程师、学生、研究人员以及其他共同为这场战争而战的人。希望可以看到你。 -------------------------------------------------------------------------------- @@ -141,7 +144,7 @@ via: https://opensource.com/article/20/3/open-hardware-covid19 作者:[Harris Kenny][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 03202111aa42b092d0c1e293484e6b16719b5a1c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 10:43:52 +0800 Subject: [PATCH 056/218] PUB @wxy https://linux.cn/article-12047-1.html --- ...0319 7 open hardware projects working to solve COVID-19.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200319 7 open hardware projects working to solve COVID-19.md (99%) diff --git a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md b/published/20200319 7 open hardware projects working to solve COVID-19.md similarity index 99% rename from translated/tech/20200319 7 open hardware projects working to solve COVID-19.md rename to published/20200319 7 open hardware projects working to solve COVID-19.md index 423ad5f6e8..98ab25270f 100644 --- a/translated/tech/20200319 7 open hardware projects working to solve COVID-19.md +++ b/published/20200319 7 open hardware projects working to solve COVID-19.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12047-1.html) [#]: subject: (7 open hardware projects working to solve COVID-19) [#]: via: (https://opensource.com/article/20/3/open-hardware-covid19) [#]: author: (Harris Kenny https://opensource.com/users/harriskenny) From 9c5a49eb911cb873fd839a5fb56eefad02ef459c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 11:21:39 +0800 Subject: [PATCH 057/218] PRF @geekpi --- ...rkdown tools for the Linux command line.md | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/translated/tech/20200319 4 Markdown tools for the Linux command line.md b/translated/tech/20200319 4 Markdown tools for the Linux command line.md index bb6a4944fe..cb95fc02bb 100644 --- a/translated/tech/20200319 4 Markdown tools for the Linux command line.md +++ b/translated/tech/20200319 4 Markdown tools for the Linux command line.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (4 Markdown tools for the Linux command line) @@ -9,28 +9,30 @@ 4 个 Linux 命令行下的 Markdown 工具 ====== -命令行 Markdown 工具快速、强大、灵活。以下是 4 个值得试一下的工具。 -![A person working.][1] -在处理 [Markdown][2] 格式的文件时,命令行工具会占据主导地位。它们轻巧、快速、强大、灵活,它们大多数都遵循 Unix 哲学只做好一件事。 +> 命令行 Markdown 工具快速、强大、灵活。以下是 4 个值得试一下的工具。 + +![](https://img.linux.net.cn/data/attachment/album/202003/29/112110pbd22dku6b2g6ku6.jpg) + +(在 Linux 上)在处理 [Markdown][2] 格式的文件时,命令行工具会占据主导地位。它们轻巧、快速、强大、灵活,它们大多数都遵循 Unix 哲学只做好一件事。 看一下这四个程序,它们可以帮助你在命令行中更有效地处理 Markdown 文件。 ### mdless -如果你使用过一段时间的 Linux 命令行,那么你可能对名为 [less][3] 的文本查看器很熟悉。当然,你可以使用 less 查看 Markdown 文件,但结果有点枯燥。如何在终端中查看 Markdown 文件效果更好一点?来使用 [mdless][4]。 +如果你使用过一段时间的 Linux 命令行,那么你可能对名为 [less][3] 的文本查看器很熟悉。当然,你可以使用 `less` 查看 Markdown 文件,但结果有点枯燥。如何在终端中查看 Markdown 文件效果更好一点?来使用 [mdless][4]。 ![mdless][5] -你可以使用键盘上的箭头键四处移动,并且 mdless 提供了很好的搜索功能。 +你可以使用键盘上的箭头键四处移动,并且 `mdless` 提供了很好的搜索功能。 -mdless 不仅会显示文本,而且还会渲染标题、粗体和斜体等格式。它还可以显示表格并语法高亮代码块。你还可以创建一个或多个主题文件来[定制][6] mdless 的外观。 +`mdless` 不仅会显示文本,而且还会渲染标题、粗体和斜体等格式。它还可以显示表格并语法高亮代码块。你还可以创建一个或多个主题文件来[定制][6] `mdless` 的外观。 ### Markdown lint 工具 你在快速输入时会犯错误。如果你在使用 Markdown(或其他任何标记语言)时丢失了一些格式,那么在将文件转换为另一种格式时可能会有问题。 -程序员通常使用名为 _linter_ 的工具来检查语法是否正确。你可以使用 [Markdown lint 工具][7]对 Markdown 执行相同的操作。 +程序员通常使用名为 linter 的工具来检查语法是否正确。你可以使用 [Markdown lint 工具][7]对 Markdown 执行相同的操作。 在你对 Markdown 文件运行该工具时,它会根据[规则集][8]检查格式。这些规则控制着文档的结构,包括标题级别的顺序、不正确的缩进和间距、代码块问题、文件中存在 HTML 等等。 @@ -40,25 +42,25 @@ mdless 不仅会显示文本,而且还会渲染标题、粗体和斜体等格 ### mdmerge -合并任何类型的文件可能会很痛苦。例如,我在整理一本电子书。它是一篇文章集,最初发布在我的[每周邮件][10]中。这些文章都放在单独的文件中,作为受虐狂,我以凌乱,手动的方式将它们组合在一起。 +合并任何类型的文件可能会很痛苦。例如,我在整理一本电子书。它是一篇文章集,最初发布在我的[每周邮件][10]中。这些文章都放在单独的文件中,作为受虐狂,我以凌乱、手动的方式将它们组合在一起。 -我希望在开始项目之前就了解了 [mdmerge][11]。这样我可以节省很多时间和精力。 +我希望在开始这个项目之前就知道 [mdmerge][11]。这样我可以节省很多时间和精力。 -mdmerge,你可能已经从名称中猜到了它的作用,它将两个或多个 Markdown 文件合并为一个文件。你无需在命令行中输入文件名。相反,你可以将它们添加到名为 book.txt 的文件中,并将其用作 mdmerge 的输入文件。 +`mdmerge`,你可能已经从名称中猜到了它的作用,它将两个或多个 Markdown 文件合并为一个文件。你无需在命令行中输入文件名。相反,你可以将它们添加到名为 `book.txt` 的文件中,并将其用作 `mdmerge` 的输入文件。 -这并不是 mdmerge 能做的一切。你可以添加对另一个文档的引用(使用 Markdown 格式引用或一段源代码),然后将其放入主文档中。这样一来,你就可以创建针对特定受众定制的[主文档] [12]。 +这并不是 `mdmerge` 能做的一切。你可以添加对另一个文档的引用(使用 Markdown 格式引用或一段源代码),然后将其放入主文档中。这样一来,你就可以创建针对特定受众定制的[主文档][12]。 -mdmerge 不会是你一直使用的程序之一。当你需要时,你会很高兴硬盘上有它。 +`mdmerge` 不会是你经常使用的程序。但当你需要时,你会很高兴硬盘上有它。 ### bashblog -[bashblog][13] 并不是严格上的 Markdown 工具。它获取 Markdown 文件,并使用它们来构建简单的博客或网站。你可以将 bashblog 视为[静态站点生成器][14],但是它没有很多脆弱的依赖关系。一切几乎都在一个不到 50KB 的 shell 脚本中。 +严格说 [bashblog][13] 并不是 Markdown 工具。它获取 Markdown 文件,并使用它们来构建简单的博客或网站。你可以将 bashblog 视为[静态站点生成器][14],但是它没有很多脆弱的依赖关系。一切几乎都在一个不到 50KB 的 shell 脚本中。 -要使用 bashblog,只需在计算机上安装 Markdown 处理器即可。在此,你可以编辑 Shell 脚本添加有关博客的信息,例如标题、名字、社交媒体链接等。然后运行脚本。之后会在默认文本编辑器中新建一篇文章。开始输入。 +要使用 bashblog,只需在计算机上安装 Markdown 处理器即可。在此,你可以编辑 Shell 脚本添加有关博客的信息,例如标题、名字、社交媒体链接等。然后运行该脚本。之后会在默认文本编辑器中新建一篇文章。开始输入。 保存文章后,你可以发布它或将其另存为草稿。如果你选择发布文章,那么 bashblog 会将你的博客、文章和所有内容生成为一组 HTML 文件,你可以将它们上传到 Web 服务器。 -它开箱即用,你的博客会平淡无奇,但可以使用。你可以根据自己喜好编辑站点的 CSS 文件来改变外观。 +它开箱即用,你的博客或许会平淡无奇,但可以使用。你可以根据自己喜好编辑站点的 CSS 文件来改变外观。 ![bashblog][15] @@ -66,12 +68,12 @@ mdmerge 不会是你一直使用的程序之一。当你需要时,你会很高 当然,Panddoc 是一个非常强大的工具,可以将 Markdown 文件转换为其他标记语言。但是,在命令行上使用 Markdown 要比 Pandoc 多。 -如果你需要 Pandoc 修复,请查看我们在 Opensource.com 上发布的文章: +如果你需要 Pandoc,请查看我们发布的文章: - * [使用 Pandoc 在命令行中转换文件][16] -  * [使用 Pandoc 将你的书变成网站和 ePub] [17] -  * [如何使用 Pandoc 生成论文] [18] -  * [使用 Pandoc 将 Markdown 文件转换为 word 文档] [19] +* [在命令行使用 Pandoc 进行文件转换][16] +* [使用 Pandoc 将你的书转换成网页和电子书][17] +* [用 Pandoc 生成一篇调研论文][18] +* [使用 pandoc 将 Markdown 转换为格式化文档][19] @@ -82,7 +84,7 @@ via: https://opensource.com/article/20/3/markdown-apps-linux-command-line 作者:[Scott Nesbitt][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -103,7 +105,7 @@ via: https://opensource.com/article/20/3/markdown-apps-linux-command-line [13]: https://github.com/cfenollosa/bashblog [14]: https://en.wikipedia.org/wiki/Web_template_system#Static_site_generators [15]: https://opensource.com/sites/default/files/uploads/bashblog.png (bashblog) -[16]: https://opensource.com/article/18/9/intro-pandoc -[17]: https://opensource.com/article/18/10/book-to-website-epub-using-pandoc -[18]: https://opensource.com/article/18/9/pandoc-research-paper -[19]: https://opensource.com/article/19/5/convert-markdown-to-word-pandoc +[16]: https://linux.cn/article-10228-1.html +[17]: https://linux.cn/article-10287-1.html +[18]: https://linux.cn/article-10179-1.html +[19]: https://linux.cn/article-11160-1.html From 8980fb6df72fb68b605ca0dd239e2e301070a8b7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 11:22:31 +0800 Subject: [PATCH 058/218] PUB @geekpi https://linux.cn/article-12048-1.html --- .../20200319 4 Markdown tools for the Linux command line.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200319 4 Markdown tools for the Linux command line.md (98%) diff --git a/translated/tech/20200319 4 Markdown tools for the Linux command line.md b/published/20200319 4 Markdown tools for the Linux command line.md similarity index 98% rename from translated/tech/20200319 4 Markdown tools for the Linux command line.md rename to published/20200319 4 Markdown tools for the Linux command line.md index cb95fc02bb..0aa052696b 100644 --- a/translated/tech/20200319 4 Markdown tools for the Linux command line.md +++ b/published/20200319 4 Markdown tools for the Linux command line.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12048-1.html) [#]: subject: (4 Markdown tools for the Linux command line) [#]: via: (https://opensource.com/article/20/3/markdown-apps-linux-command-line) [#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) From 6af5ad42ed3bc258c7c4c7aab000cdb4af666574 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 29 Mar 2020 11:30:03 +0800 Subject: [PATCH 059/218] Rename sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md to sources/news/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md --- ... building operators in Kubernetes, and more industry trends.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md (100%) diff --git a/sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md b/sources/news/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md similarity index 100% rename from sources/tech/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md rename to sources/news/20200325 npm joins GitHub, building operators in Kubernetes, and more industry trends.md From 622346acfd50f1edcdb090d728faf1fe27ba4387 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 12:18:53 +0800 Subject: [PATCH 060/218] PUB @HankChow https://linux.cn/article-12049-1.html --- ...n Kubernetes on a Raspberry Pi with k3s.md | 61 +++++++------------ 1 file changed, 23 insertions(+), 38 deletions(-) rename {translated/tech => published}/20200310 Run Kubernetes on a Raspberry Pi with k3s.md (81%) diff --git a/translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md b/published/20200310 Run Kubernetes on a Raspberry Pi with k3s.md similarity index 81% rename from translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md rename to published/20200310 Run Kubernetes on a Raspberry Pi with k3s.md index e0b3ad324c..79b42ade4d 100644 --- a/translated/tech/20200310 Run Kubernetes on a Raspberry Pi with k3s.md +++ b/published/20200310 Run Kubernetes on a Raspberry Pi with k3s.md @@ -1,29 +1,32 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12049-1.html) [#]: subject: (Run Kubernetes on a Raspberry Pi with k3s) [#]: via: (https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s) [#]: author: (Lee Carpenter https://opensource.com/users/carpie) 使用 K3s 在树莓派上运行 Kubernetes 集群 ====== -> 跟随接下来的介绍,自己搭建一个三节点的 Kubernetes 集群。 -![A ship wheel with someone steering][1] +> 跟随接下来的介绍,自己搭建一个三节点的 Kubernetes 集群。 + +![](https://img.linux.net.cn/data/attachment/album/202003/29/121559p44e3dfrerf3zver.jpg) 我对在树莓派上搭建 [Kubernetes][2] 集群已经感兴趣很长时间了,只要照着网上的教程,我可以在由三个树莓派组成的集群中搭建一套 Kubernetes 并正常运行。但在这种情况下,主节点上的内存和 CPU 资源捉襟见肘,执行 Kubernetes 任务的时候往往性能不佳,想要升级 Kubernetes 就更不可能了。 -这个时候,我发现了 [K3s][3] 这个项目。K3s 誉为可用于资源受限环境下的轻量级 Kubernetes,它还针对 ARM 处理器做出了优化,这让 Kubernetes 集群可以在树莓派上运行得更好。在下文中,我们将会使用 K3s 来创建一个 Kubernetes 集群。 +这个时候,我非常激动地发现了 [K3s][3] 这个项目。K3s 被誉为在可用于资源受限环境下的轻量级 Kubernetes,它还针对 ARM 处理器做出了优化,这让 Kubernetes 集群可以在树莓派上运行得更好。在下文中,我们将会使用 K3s 来创建一个 Kubernetes 集群。 + +- [video](https://youtu.be/6PqxJhV-t1s) ### 准备 要按照本文介绍的方式创建 Kubernetes 集群,首先需要准备: - * 至少一个树莓派(包括 SD 卡和电源) - * 网线 - * 将所有树莓派连接到一起的交换机或路由器 +* 至少一个树莓派(包括 SD 卡和电源) +* 网线 +* 将所有树莓派连接到一起的交换机或路由器 我们会通过在线安装的方式安装 K3s,因此还需要可以连接到互联网。 @@ -35,7 +38,6 @@ 为了不需要通过 IP 来引用某一个节点,我们将每个节点的主机名记录到 PC 的 `/etc/hosts` 文件当中: - ``` echo -e "192.168.0.50\tkmaster" | sudo tee -a /etc/hosts echo -e "192.168.0.51\tknode1" | sudo tee -a /etc/hosts @@ -48,20 +50,17 @@ echo -e "192.168.0.52\tknode2" | sudo tee -a /etc/hosts 在主节点上安装 Raspbian 完成后,启动树莓派并通过 `ssh` 连接上去: - ``` ssh pi@kmaster ``` -执行以下命令安装 K3s: - +在主节点上执行以下命令安装 K3s: ``` curl -sfL https://get.k3s.io | sh - ``` -等到命令跑完以后,一个单节点集群就已经运行起来了。还在这个树莓派上执行: - +等到命令跑完以后,一个单节点集群就已经运行起来了。让我们检查一下,还在这个树莓派上执行: ``` sudo kubectl get nodes @@ -69,7 +68,6 @@ sudo kubectl get nodes 就会看到这样的输出: - ``` NAME STATUS ROLES AGE VERSION kmaster Ready master 2m13s v1.14.3-k3s.1 @@ -77,8 +75,7 @@ kmaster Ready master 2m13s v1.14.3-k3s.1 ### 获取连接令牌join token -之后我们需要部署工作节点。在工作节点上安装 K3s 的时候,会需要用到连接令牌,它放置在主节点的文件系统上。首先把连接令牌打印出来保存以便后续使用: - +之后我们需要部署工作节点。在工作节点上安装 K3s 的时候,会需要用到连接令牌,它放置在主节点的文件系统上。首先把连接令牌保存出来以便后续使用: ``` sudo cat /var/lib/rancher/k3s/server/node-token @@ -90,17 +87,15 @@ sudo cat /var/lib/rancher/k3s/server/node-token 启动主机名为 `knode1` 的树莓派,通过 `ssh` 连接上去: - ``` ssh pi@knode1 ``` 在这个树莓派上,安装 K3s 的过程和之前差不多,但需要另外加上一些参数,表示它是一个工作节点,需要连接到一个已有的集群上: - ``` -curl -sfL | K3S_URL= \ -K3S_TOKEN=<刚才保存下来的连接令牌> sh - +curl -sfL http://get.k3s.io | K3S_URL=https://192.168.0.50:6443 \ +K3S_TOKEN=刚才保存下来的连接令牌 sh - ``` `K3S_TOKEN` 的值需要替换成刚才保存下来的实际的连接令牌。完成之后,在主机名为 `knode2` 的树莓派上重复这个安装过程。 @@ -109,20 +104,17 @@ K3S_TOKEN=<刚才保存下来的连接令牌> sh - 现在如果我们想要查看或者更改集群,都必须 `ssh` 到集群的主节点才能使用 `kubectl`,这是比较麻烦的。因此我们会将 `kubectl` 放到 PC 上使用。首先,在主节点上获取一些必要的配置信息,`ssh` 到 `kmaster` 上执行: - ``` sudo cat /etc/rancher/k3s/k3s.yaml ``` -复制上面命令的输出,创建一个目录用来放置配置文件: - +复制上面命令的输出,然后在你的 PC 上创建一个目录用来放置配置文件: ``` mkdir ~/.kube ``` -将复制好的内容写入到 `~/.kube/config` 文件中,然后将 - +将复制好的内容写入到 `~/.kube/config` 文件中,然后编辑该文件,将 ``` server: https://localhost:6443 @@ -130,26 +122,22 @@ server: https://localhost:6443 改为 - ``` server: https://kmaster:6443 ``` 出于安全考虑,只对自己保留这个配置文件的读写权限: - ``` chmod 600 ~/.kube/config ``` 如果 PC 上还没有安装 `kubectl` 的话,就可以开始安装了。Kubernetes 官方网站上有各种平台安装 `kubectl` 的[方法说明][5],我使用的是 Ubuntu 的衍生版 Linux Mint,所以我的安装方法是这样的: - ``` sudo apt update && sudo apt install -y apt-transport-https -curl -s | sudo apt-key add - -echo "deb kubernetes-xenial main" | \ -sudo tee -a /etc/apt/sources.list.d/kubernetes.list +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt update && sudo apt install kubectl ``` @@ -157,14 +145,12 @@ sudo apt update && sudo apt install kubectl 现在在 PC 上就可以查看 Kubernetes 集群了: - ``` kubectl get nodes ``` 输出大概会是这样: - ``` NAME STATUS ROLES AGE VERSION kmaster Ready master 12m v1.14.3-k3s.1 @@ -176,11 +162,10 @@ knode1 Ready worker 103s v1.14.3-k3s.1 ### K3s 的彩蛋 -如果执行 `kubectl get pods --all-namespaces`,就会看到其它服务的一些 pod,比如 [Traefik][6]。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后引导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择,K3s 安装后立即可用的优点也得益于此。 +如果执行 `kubectl get pods --all-namespaces`,就会看到其它服务的一些 Pod,比如 [Traefik][6]。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后引导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择,K3s 安装后立即可用的优点也得益于此。 在后续的文章中,我们会继续探讨 Traefik 在 Kubernetes ingress 中的应用,以及在集群中部署其它组件。敬请关注。 - -------------------------------------------------------------------------------- via: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s @@ -188,7 +173,7 @@ via: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s 作者:[Lee Carpenter][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 2525ef63dbb5e540223a311fdd45eaacfebc499d Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 29 Mar 2020 12:35:12 +0800 Subject: [PATCH 061/218] Rename sources/tech/20200327 6 tricks for developing a work from home schedule.md to sources/talk/20200327 6 tricks for developing a work from home schedule.md --- .../20200327 6 tricks for developing a work from home schedule.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200327 6 tricks for developing a work from home schedule.md (100%) diff --git a/sources/tech/20200327 6 tricks for developing a work from home schedule.md b/sources/talk/20200327 6 tricks for developing a work from home schedule.md similarity index 100% rename from sources/tech/20200327 6 tricks for developing a work from home schedule.md rename to sources/talk/20200327 6 tricks for developing a work from home schedule.md From b6dc3031b08b13979a17c28c6fcd40d49895fe44 Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Sun, 29 Mar 2020 12:47:24 +0800 Subject: [PATCH 062/218] hankchow translating --- .../20200327 How open source software is fighting COVID-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200327 How open source software is fighting COVID-19.md b/sources/tech/20200327 How open source software is fighting COVID-19.md index c5b95fa4e5..92e80e183a 100644 --- a/sources/tech/20200327 How open source software is fighting COVID-19.md +++ b/sources/tech/20200327 How open source software is fighting COVID-19.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (HankChow) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 2eda7939738f736345d2e84e8b08562f63b250c5 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sun, 29 Mar 2020 16:03:51 +0800 Subject: [PATCH 063/218] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...n your blog on GitHub Pages with Python.md | 235 ------------------ ...n your blog on GitHub Pages with Python.md | 232 +++++++++++++++++ 2 files changed, 232 insertions(+), 235 deletions(-) delete mode 100644 sources/tech/20190523 Run your blog on GitHub Pages with Python.md create mode 100644 translated/tech/20190523 Run your blog on GitHub Pages with Python.md diff --git a/sources/tech/20190523 Run your blog on GitHub Pages with Python.md b/sources/tech/20190523 Run your blog on GitHub Pages with Python.md deleted file mode 100644 index da6c13a20e..0000000000 --- a/sources/tech/20190523 Run your blog on GitHub Pages with Python.md +++ /dev/null @@ -1,235 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (MjSeven) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run your blog on GitHub Pages with Python) -[#]: via: (https://opensource.com/article/19/5/run-your-blog-github-pages-python) -[#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani) - -Run your blog on GitHub Pages with Python -====== -Create a blog with Pelican, a Python-based blogging platform that works -well with GitHub. -![Raspberry Pi and Python][1] - -[GitHub][2] is a hugely popular web service for source code control that uses [Git][3] to synchronize local files with copies kept on GitHub's servers so you can easily share and back up your work. - -In addition to providing a user interface for code repositories, GitHub also enables users to [publish web pages][4] directly from a repository. The website generation package GitHub recommends is [Jekyll][5], written in Ruby. Since I'm a bigger fan of [Python][6], I prefer [Pelican][7], a Python-based blogging platform that works well with GitHub. - -Pelican and Jekyll both transform content written in [Markdown][8] or [reStructuredText][9] into HTML to generate static websites, and both generators support themes that allow unlimited customization. - -In this article, I'll describe how to install Pelican, set up your GitHub repository, run a quickstart helper, write some Markdown files, and publish your first page. I'll assume that you have a [GitHub account][10], are comfortable with [basic Git commands][11], and want to publish a blog using Pelican. - -### Install Pelican and create the repo - -First things first, Pelican (and **ghp-import** ) must be installed on your local machine. This is super easy with [pip][12], the Python package installation tool (you have pip right?): - - -``` -`$ pip install pelican ghp-import` -``` - -Next, open a browser and create a new repository on GitHub for your sweet new blog. Name it as follows (substituting your GitHub username for here and throughout this tutorial): - - -``` -`https://GitHub.com/username/username.github.io` -``` - -Leave it empty; we will fill it with compelling blog content in a moment. - -Using a command line (you command line right?), clone your empty Git repository to your local machine: - - -``` -$ git clone blog -$ cd blog -``` - -### That one weird trick… - -Here's a not-super-obvious trick about publishing web content on GitHub. For user pages (pages hosted in repos named _username.github.io_ ), the content is served from the **master** branch. - -I strongly prefer not to keep all the Pelican configuration files and raw Markdown files in **master** , rather just the web content. So I keep the Pelican configuration and the raw content in a separate branch I like to call **content**. (You can call it whatever you want, but the following instructions will call it **content**.) I like this structure since I can throw away all the files in **master** and re-populate it with the **content** branch. - - -``` -$ git checkout -b content -Switched to a new branch 'content' -``` - -### Configure Pelican - -Now it's time for content configuration. Pelican provides a great initialization tool called **pelican-quickstart** that will ask you a series of questions about your blog. - - -``` -$ pelican-quickstart -Welcome to pelican-quickstart v3.7.1. - -This script will help you create a new Pelican-based website. - -Please answer the following questions so this script can generate the files -needed by Pelican. - -> Where do you want to create your new web site? [.] -> What will be the title of this web site? Super blog -> Who will be the author of this web site? username -> What will be the default language of this web site? [en] -> Do you want to specify a URL prefix? e.g., (Y/n) n -> Do you want to enable article pagination? (Y/n) -> How many articles per page do you want? [10] -> What is your time zone? [Europe/Paris] US/Central -> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) y -> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) y -> Do you want to upload your website using FTP? (y/N) n -> Do you want to upload your website using SSH? (y/N) n -> Do you want to upload your website using Dropbox? (y/N) n -> Do you want to upload your website using S3? (y/N) n -> Do you want to upload your website using Rackspace Cloud Files? (y/N) n -> Do you want to upload your website using GitHub Pages? (y/N) y -> Is this your personal page (username.github.io)? (y/N) y -Done. Your new project is available at /Users/username/blog -``` - -You can take the defaults on every question except: - - * Website title, which should be unique and special - * Website author, which can be a personal username or your full name - * Time zone, which may not be in Paris - * Upload to GitHub Pages, which is a "y" in our case - - - -After answering all the questions, Pelican leaves the following in the current directory: - - -``` -$ ls -Makefile content/ develop_server.sh* -fabfile.py output/ pelicanconf.py -publishconf.py -``` - -You can check out the [Pelican docs][13] to find out how to use those files, but we're all about getting things done _right now_. No, I haven't read the docs yet either. - -### Forge on - -Add all the Pelican-generated files to the **content** branch of the local Git repo, commit the changes, and push the local changes to the remote repo hosted on GitHub by entering: - - -``` -$ git add . -$ git commit -m 'initial pelican commit to content' -$ git push origin content -``` - -This isn't super exciting, but it will be handy if we need to revert edits to one of these files. - -### Finally getting somewhere - -OK, now you can get bloggy! All of your blog posts, photos, images, PDFs, etc., will live in the **content** directory, which is initially empty. To begin creating a first post and an About page with a photo, enter: - - -``` -$ cd content -$ mkdir pages images -$ cp /Users/username/SecretStash/HotPhotoOfMe.jpg images -$ touch first-post.md -$ touch pages/about.md -``` - -Next, open the empty file **first-post.md** in your favorite text editor and add the following: - - -``` -title: First Post on My Sweet New Blog -date: -author: Your Name Here - -# I am On My Way To Internet Fame and Fortune! - -This is my first post on my new blog. While not super informative it -should convey my sense of excitement and eagerness to engage with you, -the reader! -``` - -The first three lines contain metadata that Pelican uses to organize things. There are lots of different metadata you can put there; again, the docs are your best bet for learning more about the options. - -Now, open the empty file **pages/about.md** and add this text: - - -``` -title: About -date: - -![So Schmexy][my_sweet_photo] - -Hi, I am and I wrote this epic collection of Interweb -wisdom. In days of yore, much of this would have been deemed sorcery -and I would probably have been burned at the stake. - -😆 - -[my_sweet_photo]: {filename}/images/HotPhotoOfMe.jpg -``` - -You now have three new pieces of web content in your content directory. Of the content branch. That's a lot of content. - -### Publish - -Don't worry; the payoff is coming! - -All that's left to do is: - - * Run Pelican to generate the static HTML files in **output** : [code]`$ pelican content -o output -s publishconf.py` -``` -* Use **ghp-import** to add the contents of the **output** directory to the **master** branch: [code]`$ ghp-import -m "Generate Pelican site" --no-jekyll -b master output` -``` - * Push the local master branch to the remote repo: [code]`$ git push origin master` -``` - * Commit and push the new content to the **content** branch: [code] $ git add content -$ git commit -m 'added a first post, a photo and an about page' -$ git push origin content -``` - - - -### OMG, I did it! - -Now the exciting part is here, when you get to view what you've published for everyone to see! Open your browser and enter: - - -``` -`https://username.github.io` -``` - -Congratulations on your new blog, self-published on GitHub! You can follow this pattern whenever you want to add more pages or articles. Happy blogging. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/5/run-your-blog-github-pages-python - -作者:[Erik O'Shaughnessy][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/getting_started_with_python.png?itok=MFEKm3gl (Raspberry Pi and Python) -[2]: https://github.com/ -[3]: https://git-scm.com -[4]: https://help.github.com/en/categories/github-pages-basics -[5]: https://jekyllrb.com -[6]: https://python.org -[7]: https://blog.getpelican.com -[8]: https://guides.github.com/features/mastering-markdown -[9]: http://docutils.sourceforge.net/docs/user/rst/quickref.html -[10]: https://github.com/join?source=header-home -[11]: https://git-scm.com/docs -[12]: https://pip.pypa.io/en/stable/ -[13]: https://docs.getpelican.com diff --git a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md new file mode 100644 index 0000000000..fc37810381 --- /dev/null +++ b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md @@ -0,0 +1,232 @@ +[#]: collector: (lujun9972) +[#]: translator: (MjSeven) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Run your blog on GitHub Pages with Python) +[#]: via: (https://opensource.com/article/19/5/run-your-blog-github-pages-python) +[#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani) + +在 GitHub 上使用 Python 运行你的博客 +====== +使用 Pelican(一个基于 Python 的平台)在 GitHub 上创建博客,看起来很不错。 + +![Raspberry Pi and Python][1] + +[GitHub][2] 是一个非常流行的用于源代码控制的 Web 服务,它使用 [Git][3] 同步本地文件和 GitHub 服务器上保留的副本,这样你就可以轻松地共享和备份你的工作。 + +除了为代码仓库提供用户界面之外,GitHub 还运允许用户直接从仓库[发布网页][4]。GitHub 推荐的网站生成软件包是 [Jekll][5],使用 Ruby 编写。因为我是 [Python][6] 的忠实粉丝,所以我更喜欢 [Pelican][7],这是一个基于 Python 的博客平台,可与 GitHub 很好地协同工作。 + +Pelican 和 Jekll 都可以将 [Markdown][8] 或 [reStructuredText][9] 中编写的内容转换为 HTML 以生成静态网站,并且两个生成器都支持定制的主题。 + +在本文中,我将介绍如何安装 Pelican、设置 GitHub 仓库、运行快速入门帮助、编写一些 Markdown 文件以及发布第一篇博客。我假设你有一个 [GitHub 账户][10],熟悉[基础的 Git 命令][11],并且想使用 Pelican 发布博客。 + +### 安装 Pelican 并创建仓库 + +首先,你必须在本地计算机上安装 Pelican 和 **ghp-import**。使用 Python 软件包安装工具 [pip][12](你有,对吧?),这非常容易: + +``` +$ pip install pelican ghp-import Markdown +``` + +然后,打开浏览器并在 GitHub 上为你的新博客创建一个新的仓库,命名如下(在此处以及整个教程中,用 GitHub 用户名替换 ): + +``` +https://GitHub.com/username/username.github.io +``` + +让它保持空白,稍后我们用引人注目的博客内容来填充它。 + +使用命令行(确保正确),将空的 Git 仓库克隆到本地计算机: + +``` +$ git clone blog +$ cd blog +``` + +### 奇怪的把戏... + +在 GitHub 上发布 Web 内容有一个不太明显的技巧,对于用户页面(托管在名为 _username.github.io_ 的仓库的页面上),其内容来自 **master** 分支。 + +我强烈建议不要将所有 Pelican 配置文件和原始 Markdown 文件都保留在 **master** 中,**master** 中只保留 Web 内容中。因此,我将 Pelican 配置和原始内容保留在一个我喜欢称为 **content** 的单独分支中。(你可以随意创建一个分支,但以下内容沿用 **content**。)我喜欢这种结构,因为我可以放弃掉 **master** 中的所有文件,然后用 **content** 分支重新填充它。 + +``` +$ git checkout -b content +Switched to a new branch 'content' +``` + +### 配置 Pelican + +现在该进行内容配置了。Pelican 提供了一个很棒的初始化工具 **pelican-quickstart**,它会询问你有关博客的一系列问题。 + +``` +$ pelican-quickstart +Welcome to pelican-quickstart v3.7.1. + +This script will help you create a new Pelican-based website. + +Please answer the following questions so this script can generate the files +needed by Pelican. + +> Where do you want to create your new web site? [.] +> What will be the title of this web site? Super blog +> Who will be the author of this web site? username +> What will be the default language of this web site? [en] +> Do you want to specify a URL prefix? e.g., (Y/n) n +> Do you want to enable article pagination? (Y/n) +> How many articles per page do you want? [10] +> What is your time zone? [Europe/Paris] US/Central +> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) y +> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) y +> Do you want to upload your website using FTP? (y/N) n +> Do you want to upload your website using SSH? (y/N) n +> Do you want to upload your website using Dropbox? (y/N) n +> Do you want to upload your website using S3? (y/N) n +> Do you want to upload your website using Rackspace Cloud Files? (y/N) n +> Do you want to upload your website using GitHub Pages? (y/N) y +> Is this your personal page (username.github.io)? (y/N) y +Done. Your new project is available at /Users/username/blog +``` + +你可以对每个问题都采用默认值,但除了以下这些问题: + + * 网站标题,应该唯一且特殊 + * 网站作者,可以是个人用户名或你的全名 + * 时区,可能你不在巴黎 + * 上传到 GitHub 页面,我们选择 "y" + + +回答完所有问题后,Pelican 会在当前目录中保留以下内容: + +``` +$ ls +Makefile content/ develop_server.sh* +fabfile.py output/ pelicanconf.py +publishconf.py +``` + +你可以查看 [Pelican 文档][13]来了解如何使用这些文件,但 _现在_ 我们要做的是完成手头的工作。说实话,我也没有阅读文档。 + +### 继续 + +将所有 Pelican 生成的文件添加到本地 Git 仓库的 **content** 分支,提交更改,然后将本地更改推送到 Github 上托管的远程仓库: + +``` +$ git add . +$ git commit -m 'initial pelican commit to content' +$ git push origin content +``` + +这件事情并不是特别令人兴奋,但是如果我们需要将内容恢复到这些文件的时候,这将非常方便。 + +### 终于 + +终于,现在你得到一个博客了!你所有的博客文章、照片、图像、PDF 等都将位于 **content** 目录中,它最初是空的。要开始创建第一篇博客和关于页面,输入: + +``` +$ cd content +$ mkdir pages images +$ cp /Users/username/SecretStash/HotPhotoOfMe.jpg images +$ touch first-post.md +$ touch pages/about.md +``` + +接下来,在你喜欢的文本编辑器中打开 **first-post.md**,并添加以下内容: + +``` +title: First Post on My Sweet New Blog +date: +author: Your Name Here + +# I am On My Way To Internet Fame and Fortune! + +This is my first post on my new blog. While not super informative it +should convey my sense of excitement and eagerness to engage with you, +the reader! +``` + +前三行是 Pelican 用于组织内容的元数据。有很多不同的元数据可供你选择。再说一次,文档是你了解更多选项的最佳选择。 + +现在,打开空白文件 **pages/about.md** 并添加以下文本: + +``` +title: About +date: + +![So Schmexy][my_sweet_photo] + +Hi, I am and I wrote this epic collection of Interweb +wisdom. In days of yore, much of this would have been deemed sorcery +and I would probably have been burned at the stake. + +😆 + +[my_sweet_photo]: {filename}/images/HotPhotoOfMe.jpg +``` + +现在,content 目录中将包含三个新的 Web 内容,在 content 分支中还有很多内容。 + +### 发布 + +不要急,马上要见到成果了! + +剩下要做的就是: + + * 运行 Pelican 以在 **output** 中生成静态 HTML 文件: + ``` + `$ pelican content -o output -s publishconf.py` + ``` + + * 使用 **ghp-import** 将 **output** 目录的内容添加到 **master** 分支中: + ``` + $ ghp-import -m "Generate Pelican site" --no-jekyll -b master output` + ``` + + * 将本地 master 分支推送到远程仓库: + ``` + $ git push origin master + ``` + + * 提交新内容并将其推送到 **content** 分支 + ``` + $ git add content + $ git commit -m 'added a first post, a photo and an about page' + $ git push origin content + ``` + +### OMG,我成功了 + +现在最激动的时候到了,当你想要看到你发布给大家的博客内容时,打开浏览器输入: + +``` +https://username.github.io +``` + +恭喜你可以在 GitHub 上发布自己的博客了!当你想添加更多页面或文章时,都可以按照上面的步骤来。希望你可以愉快地发布博客。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/5/run-your-blog-github-pages-python + +作者:[Erik O'Shaughnessy][a] +选题:[lujun9972][b] +译者:[MjSeven](https://github.com/MjSeven) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/getting_started_with_python.png?itok=MFEKm3gl (Raspberry Pi and Python) +[2]: https://github.com/ +[3]: https://git-scm.com +[4]: https://help.github.com/en/categories/github-pages-basics +[5]: https://jekyllrb.com +[6]: https://python.org +[7]: https://blog.getpelican.com +[8]: https://guides.github.com/features/mastering-markdown +[9]: http://docutils.sourceforge.net/docs/user/rst/quickref.html +[10]: https://github.com/join?source=header-home +[11]: https://git-scm.com/docs +[12]: https://pip.pypa.io/en/stable/ +[13]: https://docs.getpelican.com From 5cff045e97e5537dcfcf4e4f4203c7dc99b0baed Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sun, 29 Mar 2020 16:10:53 +0800 Subject: [PATCH 064/218] fix --- .../tech/20190523 Run your blog on GitHub Pages with Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md index fc37810381..47134718ee 100644 --- a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md +++ b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md @@ -161,7 +161,7 @@ and I would probably have been burned at the stake. 😆 -[my_sweet_photo]: {filename}/images/HotPhotoOfMe.jpg +[my_sweet_photo]: {static}/images/HotPhotoOfMe.jpg ``` 现在,content 目录中将包含三个新的 Web 内容,在 content 分支中还有很多内容。 From f06c9b8a4f52c8d125c17122384f2361567873be Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sun, 29 Mar 2020 17:07:38 +0800 Subject: [PATCH 065/218] Translating --- sources/tech/20200325 Linux firewall basics with ufw.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200325 Linux firewall basics with ufw.md b/sources/tech/20200325 Linux firewall basics with ufw.md index 104d3527ac..78bb763b3b 100644 --- a/sources/tech/20200325 Linux firewall basics with ufw.md +++ b/sources/tech/20200325 Linux firewall basics with ufw.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (MjSeven) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From d8c9aebabbeaa76cad66a728f4e95dec3574e4f5 Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Sun, 29 Mar 2020 17:28:19 +0800 Subject: [PATCH 066/218] hankchow translated --- ...en source software is fighting COVID-19.md | 107 ------------------ ...en source software is fighting COVID-19.md | 107 ++++++++++++++++++ 2 files changed, 107 insertions(+), 107 deletions(-) delete mode 100644 sources/tech/20200327 How open source software is fighting COVID-19.md create mode 100644 translated/tech/20200327 How open source software is fighting COVID-19.md diff --git a/sources/tech/20200327 How open source software is fighting COVID-19.md b/sources/tech/20200327 How open source software is fighting COVID-19.md deleted file mode 100644 index 92e80e183a..0000000000 --- a/sources/tech/20200327 How open source software is fighting COVID-19.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How open source software is fighting COVID-19) -[#]: via: (https://opensource.com/article/20/3/open-source-software-covid19) -[#]: author: (Jeff Stern https://opensource.com/users/jeffstern) - -How open source software is fighting COVID-19 -====== -Learn about four of the thousands of open source projects combating the -spread of coronavirus. -![symbols showing healthcare][1] - -Work is hard right now. COVID-19 makes it a challenge to stay focused and motivated. But it was cathartic for me to do some research into how the open source community is responding to the global pandemic. - -Since the end of January, the community has contributed to [thousands of open source repositories][2] that mention coronavirus or COVID-19. These repositories consist of datasets, models, visualizations, web and mobile applications, and more, and the majority are written in JavaScript and Python. - -Previously, we shared information about several [open hardware makers helping][3] to stop the spread and suffering caused by the coronavirus. Here, we're sharing four (of many) examples of how the open source software community is responding to coronavirus and COVID-19, with the goal of celebrating the creators and the overall impact the open source community is making on the world right now. - -### 1\. CHIME by PennSignals - -![CHIME by PennSignals][4] - -COVID-19 Hospital Impact Model for Epidemics ([CHIME][5]) is an open source application built by data scientists at Penn Medicine at the University of Pennsylvania. The online tool allows hospitals to better understand the impact the virus will have on hospital demand. - -Hospital leaders can use CHIME to "get more informed estimates of how many patients will need hospitalization, ICU beds, and mechanical ventilation over the coming days and weeks." A user can input how many patients are currently hospitalized and see, based on other variables, how demand might increase over the coming days. - -CHIME is primarily built with Python and uses the [pandas][6] open source dependency for much of the underlying data-transformation number-crunching to generate the estimates. Pandas has a relatively robust team and is one of the most commonly used Python libraries for data analysis and, like all open source projects, is highly dependent on [users' support][7] for income. - -### 2\. Real-time COVID-19 visualization by Locale.ai - -![Locale.ai COVID-19 visualization][8] - -Maps that track the number of cases help us visualize the relative scale and spread of COVID-19. [Locale.ai created an open source, interactive visualization][9] of all known cases of COVID-19. The map provides live updates with new data as it becomes available. - -I find this project especially interesting because the data is retrieved via [an open source API][9] created by GitHub user ExpDev07 that queries [an open source dataset][10] from John Hopkins University. The John Hopkins dataset (an aggregate of more than a dozen other sources) is currently the most popular COVID19-related project on GitHub. This is the branching nature of open source at its finest! - -Locale.ai built the visualization website using [Vue.js][11], a popular framework that allows web developers to create modern web apps. Vue.js was created and continues to be maintained by [Evan You][12], one of the few people who have made a full-time career as an open source maintainer. - -### 3\. DXY-COVID-19-Crawler by BlankerL - -![BlankerL DXY-COVID-19-Crawler][13] - -[DXY-COVID-19-Crawler][14] was created in January and is one of the earliest responses from the open source community to COVID-19. When the virus was spreading primarily in China, the Chinese medical community was using a site called [DXY.cn][15] to report and track cases. To make the information more readily available and usable by others, GitHub user BlankerL wrote a web crawler to systematically collect data from the DXY.cn site and make it available via an API and data warehouse. That data has been used by academic researchers and others to examine trends and visualize the spread of the virus. So far, DXY-COVID-19-Crawler has been starred more than 1,300 times and forked nearly 300 times. - -BlankerL wrote the web crawler using Python and a package called [Beautiful Soup][16]. Beautiful Soup is an application that allows Python developers to easily scrape information from websites. Beautiful Soup is maintained by Leonard Richardson, who also works full-time as a software architect. - -### 4\. City of Tokyo's COVID-19 task force website - -![City of Tokyo's COVID-19 Task Force site][17] - -Many cities around the world have updated their websites with information for their residents about COVID-19. The Tokyo Metropolitan Government created a [comprehensive website][18] that "aims to allow Tokyo residents, companies with offices in Tokyo, and visitors to Tokyo to grasp the current situation and take measures and precautions accordingly." - -Unlike many other cities, Tokyo decided to [open source its site][19]. The project boasts contributions by more than 180 different users, and [at least three other cities][20] in Japan (Nagano, Chiba, and Fukuoka City) remixed the site. The project is an example of how cities can better serve their citizens by building openly. - -There's an incredible amount of open source technology powering Tokyo's open source website. Using the [Tidelift][21] application, I identified 1,365 dependencies used in the project. All of this complexity happens because 38 direct dependencies (i.e., dependencies the developers explicitly decided to use) have dependencies of their own. That said, maintainers of more than a thousand different open source dependencies (including [Nuxt.js][22], [Prettier][23], [Babel][24], [Ajv][25], and more) are in a small way responsible for helping Tokyo share information with their citizens. - -![Dependencies in Tokyo's COVID-19 Task Force site][26] - -### Other projects - -There are [many other important projects][27] being built in the open in response to COVID-19. I am inspired by how the open source community is responding to this pandemic and leveraging other open source technologies to work quickly. The weeks ahead will be difficult, but I know we can continue to find motivation in the open source community. - -If you are working on an open source project related to COVID-19, please share it in the comments so we can help spread the word. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/open-source-software-covid19 - -作者:[Jeff Stern][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jeffstern -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Medical%20costs.jpg?itok=ke57j6cs (symbols showing healthcare) -[2]: https://github.com/search?q=coronavirus+OR+covid19 -[3]: https://opensource.com/article/20/3/open-hardware-covid19 -[4]: https://opensource.com/sites/default/files/uploads/chime_pennsignals.png (CHIME by PennSignals) -[5]: http://penn-chime.phl.io/ -[6]: https://tidelift.com/subscription/pkg/pypi-pandas -[7]: https://pandas.pydata.org/about/sponsors.html -[8]: https://opensource.com/sites/default/files/uploads/locale-ai-visualization.png (Locale.ai COVID-19 visualization) -[9]: https://github.com/localeai/covid19-live-visualization -[10]: https://github.com/CSSEGISandData/COVID-19 -[11]: https://tidelift.com/subscription/pkg/npm-vue -[12]: https://blog.tidelift.com/vuejs-evan-you-javascript-framework -[13]: https://opensource.com/sites/default/files/uploads/dxy-covid-19-crawler.png (BlankerL DXY-COVID-19-Crawler) -[14]: https://github.com/BlankerL/DXY-COVID-19-Crawler -[15]: https://dxy.cn -[16]: https://blog.tidelift.com/beautiful-soup-is-now-part-of-the-tidelift-subscription -[17]: https://opensource.com/sites/default/files/uploads/tokyo-covid19-task-force.png (City of Tokyo's COVID-19 Task Force site) -[18]: https://stopcovid19.metro.tokyo.lg.jp/en/ -[19]: https://github.com/tokyo-metropolitan-gov/covid19 -[20]: https://github.com/tokyo-metropolitan-gov/covid19/issues/1802 -[21]: https://tidelift.com/ -[22]: https://tidelift.com/subscription/pkg/npm-nuxt -[23]: https://blog.tidelift.com/prettier-is-now-part-of-the-tidelift-subscriptions -[24]: https://tidelift.com/subscription/pkg/npm-babel -[25]: https://blog.tidelift.com/ajv-is-now-part-of-the-tidelift-subscription -[26]: https://opensource.com/sites/default/files/uploads/tokyo-dependencies.png (Dependencies in Tokyo's COVID-19 Task Force site) -[27]: https://github.com/soroushchehresa/awesome-coronavirus diff --git a/translated/tech/20200327 How open source software is fighting COVID-19.md b/translated/tech/20200327 How open source software is fighting COVID-19.md new file mode 100644 index 0000000000..dae4f55de7 --- /dev/null +++ b/translated/tech/20200327 How open source software is fighting COVID-19.md @@ -0,0 +1,107 @@ +[#]: collector: (lujun9972) +[#]: translator: (HankChow) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How open source software is fighting COVID-19) +[#]: via: (https://opensource.com/article/20/3/open-source-software-covid19) +[#]: author: (Jeff Stern https://opensource.com/users/jeffstern) + +开源软件在应对 COVID-19 中的贡献 +====== +> 在新冠疫情爆发之际,涌现了数以千计的开源项目,今天我们来了解其中四个。 + +![symbols showing healthcare][1] + +在当前紧张的疫情环境下,保持专注和积极性是一个很大的挑战。而研究开源社区如何应对这一次疫情爆发,对于我来说却成为了一种宣泄。 + +从今年一月底开始,整个开源社区已经贡献了数以千计关于冠状病毒或 COVID-19 的[开源软件库][2],其中涉及的内容包括但不限于数据集、模型、可视化、Web 应用、移动应用,且大多数都使用了 JavaScript 和 Python 编写。 + +之前我们分享过一些关于开源硬件厂商在帮助遏制冠状病毒传播方面做的[贡献][3],现在将继续分享四个由开源社区作出的应对冠状病毒和 COVID-19 的项目,这体现了开发者们和整个开源社区在当下对整个世界的影响力。 + +### 1. PennSignals:CHIME + +![CHIME by PennSignals][4] + +COVID-19 流行病医院影响模型COVID-19 Hospital Impact Model for Epidemics([CHIME][5])是由宾夕法尼亚大学 Penn Medicine 机构的数据科学家们建立的开源在线应用,它可以让医院更好地了解本次新型冠状病毒对医院需求的影响。 + +医院的管理人员可以通过 CHIME 来大致预测未来几天和几周内将会有多少患者需要住院治疗,并推算 ICU 和呼吸机的需求量。只需要输入当前住院患者数以及一些相关的变量,就可以看到未来几天内需求的变化情况。 + +CHIME 主要使用 Python 开发,并通过 [pandas][6] 这个开源库实现了大部分的数据转换和数值计算,最终得出相关的估计值。pandas 的背后有一个强大的团队进行支持,因此它是在数据分析方面被广泛使用的 Python 库之一。和很多其它的开源项目一样,pandas 团队的收入大部分来源于[用户的资金支持][7]。 + +### 2. Locale.ai:Real-time COVID-19 visualization + +![Locale.ai COVID-19 visualization][8] + +实时显示世界各地病例数量分布的地图可以让我们直观了解 COVID-19 的规模和扩散程度。Locale.ai 就开发了这样一个开源、可交互的 [COVID-19 已知病例可视化分布图][9],这个图会根据最新的可靠数据实时进行更新。 + +这个项目有趣的地方在于,它的数据是是通过 GitHub 用户 ExpDev07 创建的[开源 API][10] 进行检索的,这个 API 的数据来源是[约翰·霍普金斯大学的开源数据集][11],而约翰·霍普金斯大学这份聚合了多个来源的数据集则是 GitHub 上 COVID-19 相关的最受欢迎的项目。这就是开源项领域中分支带来的一大好处。 + +Locale.ai 的这个图表通过 [Vue.js][11] 开发。Vue.js 是一个在 Web 应用开发方面非常流行的框架,它是由[尤雨溪][12]创造并维护的。值得一提的是,尤雨溪是全职参与开源项目维护的少数人之一。 + +### 3. BlankerL:DXY-COVID-19-Crawler + +![BlankerL DXY-COVID-19-Crawler][13] + +[DXY-COVID-19-Crawler][14] 建立于今年 1 月份,是开源社区对 COVID-19 最早发起响应的项目之一。当时 COVID-19 主要在中国范围内传播,中国医学界通过[丁香园][15]网站来进行病例的报告和跟踪。为了使这些疫情信息具有更高的可读性和易用性,GitHub 用户 BlankerL 开发了一个爬虫,系统地从丁香园网站获取数据,并通过 API 和数据仓库的方式对外公开。这些数据也被学术研究人员用于研究病毒传播趋势和制作相关的可视化图表。到目前为止,DXY-COVID-19-Crawler 这个项目已经获得了超过 1300 个星标和近 300 次的复刻。 + +BlankerL 使用 Python 和 [Beautiful Soup][16] 库开发了这个爬虫。Beautiful Soup 是 Python 开发者用于从页面 HTML DOM 中提取信息的库,它由 Leonard Richardson 维护,这位作者i你另外还全职担任软件架构师。 + +### 4. 东京 COVID-19 工作组网站 + +![City of Tokyo's COVID-19 Task Force site][17] + +世界各地很多城市都在网络上持续更新当地的 COVID-19 信息。东京都政府则为此创建了一个[综合性的网站][18],让东京当地居民、在东京设有办事处的公司以及到东京的游客了解最新情况,并采取相应的预防措施。 + +这个网站的不同之处在于它是由东京都政府[开源][19]的。这个项目受到了来自 180 多名用户的贡献,日本的[长野市、千叶市、福冈市][20]还对这个网站进行了改造。这个项目是城市公共建设更好地服务大众的有力示范。 + +这个开源网站也使用了很多开源技术。通过 [Tidelift][21],我留意到项目中存在了 1365 个依赖项,其中 38 个是由开发者直接使用的依赖项。也就是说,超过一千多个开源项目(包括 [Nuxt.js][22]、[Prettier][23]、[Babel][24]、[Ajv][25] 等等)都为东京向市民共享信息提供了帮助。 + +![Dependencies in Tokyo's COVID-19 Task Force site][26] + +### 其它项目 + +除此以外,还有很多[响应 COVID-19 的重要项目][27]正在公开进行当中。在这次研究中,开源社区应对流行病以及利用开源技术开展工作的方式让我深受启发。接下来的一段时间都是应对疫情的关键时期,我们也可以继续在开源社区中寻找到更大的动力。 + +如果你也参与到了 COVID-19 相关的开源项目当中,欢迎在评论区分享。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/open-source-software-covid19 + +作者:[Jeff Stern][a] +选题:[lujun9972][b] +译者:[HankChow](https://github.com/HankChow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jeffstern +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Medical%20costs.jpg?itok=ke57j6cs (symbols showing healthcare) +[2]: https://github.com/search?q=coronavirus+OR+covid19 +[3]: https://opensource.com/article/20/3/open-hardware-covid19 +[4]: https://opensource.com/sites/default/files/uploads/chime_pennsignals.png (CHIME by PennSignals) +[5]: http://penn-chime.phl.io/ +[6]: https://tidelift.com/subscription/pkg/pypi-pandas +[7]: https://pandas.pydata.org/about/sponsors.html +[8]: https://opensource.com/sites/default/files/uploads/locale-ai-visualization.png (Locale.ai COVID-19 visualization) +[9]: https://github.com/localeai/covid19-live-visualization +[10]: https://github.com/CSSEGISandData/COVID-19 +[11]: https://tidelift.com/subscription/pkg/npm-vue +[12]: https://blog.tidelift.com/vuejs-evan-you-javascript-framework +[13]: https://opensource.com/sites/default/files/uploads/dxy-covid-19-crawler.png (BlankerL DXY-COVID-19-Crawler) +[14]: https://github.com/BlankerL/DXY-COVID-19-Crawler +[15]: https://dxy.cn +[16]: https://blog.tidelift.com/beautiful-soup-is-now-part-of-the-tidelift-subscription +[17]: https://opensource.com/sites/default/files/uploads/tokyo-covid19-task-force.png (City of Tokyo's COVID-19 Task Force site) +[18]: https://stopcovid19.metro.tokyo.lg.jp/en/ +[19]: https://github.com/tokyo-metropolitan-gov/covid19 +[20]: https://github.com/tokyo-metropolitan-gov/covid19/issues/1802 +[21]: https://tidelift.com/ +[22]: https://tidelift.com/subscription/pkg/npm-nuxt +[23]: https://blog.tidelift.com/prettier-is-now-part-of-the-tidelift-subscriptions +[24]: https://tidelift.com/subscription/pkg/npm-babel +[25]: https://blog.tidelift.com/ajv-is-now-part-of-the-tidelift-subscription +[26]: https://opensource.com/sites/default/files/uploads/tokyo-dependencies.png (Dependencies in Tokyo's COVID-19 Task Force site) +[27]: https://github.com/soroushchehresa/awesome-coronavirus From 5f41b35048faf635fc1d89bfe9835c054b17e8d8 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 20:23:37 +0800 Subject: [PATCH 067/218] PRF @FSSlc --- ... Command Line Using Firefox Send Client.md | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md b/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md index 6e9b6ba2a1..b04263776d 100644 --- a/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md +++ b/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md @@ -1,18 +1,20 @@ [#]: collector: "lujun9972" [#]: translator: "FSSlc" -[#]: reviewer: " " +[#]: reviewer: "wxy" [#]: publisher: " " [#]: url: " " [#]: subject: "ffsend – Easily And Securely Share Files From Linux Command Line Using Firefox Send Client" [#]: via: "https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-command-line-using-firefox-send-client/" [#]: author: "Vinoth Kumar https://www.2daygeek.com/author/vinoth/" -ffsend - 在 Linux 命令行中通过 FireFox Send 服务来简单安全地分享文件 +ffsend:在命令行中通过 FireFox Send 分享文件 ====== -Linux 用户更偏爱使用 `scp` 或 `rsync` 来进行文件或目录的复制拷贝。很多新的可选方式正发生在 Linux 上,因为 Linux 是开源的,所以任何人都可以为 Linux 开发一个安全软件。 +![](https://img.linux.net.cn/data/attachment/album/202003/29/202308w7ormrouomij2dzq.jpg) -在过去我们已经写了多篇有关安全分享这个话题的文章,它们分别是 **[OnionShare][1]** , **[Magic Wormhole][2]** , **[Transfer.sh][3]** 和 **[Dcp – Dat Copy][4]**. +Linux 用户偏爱使用 `scp` 或 `rsync` 来进行文件或目录的复制拷贝。不过在 Linux 上正出现了许多新的可选方式,因为 Linux 是开源的,所以任何人都可以为 Linux 开发一个安全软件。 + +在过去我们已经写了多篇有关安全分享这个话题的文章,它们分别是 [OnionShare][1]、[Magic Wormhole][2]、[Transfer.sh][3] 和 [Dcp – Dat Copy][4]。 今天我们甚至还将继续讨论这个话题,我们将介绍名为 `ffsend` 的工具。 @@ -22,33 +24,33 @@ Linux 用户更偏爱使用 `scp` 或 `rsync` 来进行文件或目录的复制 它允许我们通过一个安全、私密、加密的链接,使用一个简单的命令来轻易安全地分享文件和目录。 -使用 Firefox 的 Send 服务,文件可以被共享,最大允许的文件大小为 2GB(译者注:现在官网上写的是最大 1GB,登录后最大 2.5GB)。其他人可以通过这个工具或者网页浏览器来下载这些被分享的文件。 +通过 Firefox 的 Send 服务共享的文件最大大小为 2GB(LCTT 译注:现在官网上写的是最大 1GB,登录后最大 2.5GB)。其他人可以通过这个工具或者网页浏览器来下载这些分享的文件。 -所有的文件总是在客户端被加密,并且秘钥将不会被远程主机所分享。另外,你还可以为上传的文件设置密码。 +所有的文件都是在客户端加密的,并且秘钥将不会被共享到远程主机。另外,你还可以为上传的文件额外设置一个密码。 -被上传的文件在被下载(默认被下载 1 次,最多可被下载 10 次)后或者 24 小时后,它们将被自动删除。这将确保你的文件不会永远的保留在网络上。 +上传的文件在下载(默认被下载 1 次,最多可被下载 10 次)后或者 24 小时后,就会自动删除。这将确保你的文件不会一直保留在网络上。 -该工具当前处于 alpha 阶段,使用时请自担风险。而且,当前只有有限个安装选项可用。 +该工具当前处于 alpha 阶段,使用时请自担风险。而且,当前只有有限的安装方式可用。 ### ffsend 的特点: - * 全功能且友好的命令行工具 - * 安全地上传和下载文件与目录 - * 在客户端总是被加密 - * 额外的密码保护,密码生成和可配置下载次数限制 - * 内置文件或目录的打包和解压 - * 可以简单地管理你的历史分享记录 - * 能够使用你自己的发送主机 - * 查看或者删除共享文件 + * 全功能且使用友好的命令行工具 + * 可以安全地上传和下载文件与目录 + * 总是在客户端加密 + * 可用额外的密码进行保护、密码生成和可配置下载次数限制 + * 内置的文件或目录的打包和解压 + * 可以轻松地管理你的历史分享记录 + * 能够使用你自己的 Send 主机 + * 审查或者删除共享文件 * 精准的错误报告 - * 由加密或上传下载导致的低内存消耗 - * 无需集成就可被用在脚本中 + * 低内存消耗,用于加密或上传下载 + * 无需交互,可以集成在脚本中 ### 如何在 LInux 中安装 ffsend 呢? -当前除了 Debian 和 Arch Linux 系统,其他发行版还没有相应的安装包(译者注:这个信息已过时,最新内容请看[这里](https://github.com/timvisee/ffsend#install))。然而,我们可以轻易地根据我们自己的操作系统和架构下载到相应的预编译二进制文件。 +当前除了 Debian 和 Arch Linux 系统,其他发行版还没有相应的安装包(LCTT 译注:这个信息已过时,最新内容请看[这里](https://github.com/timvisee/ffsend#install))。然而,我们可以轻易地根据我们自己的操作系统和架构下载到相应的预编译二进制文件。 -运行下面的命令来为你的操作系统下载 `ffsend` 最新可用的版本(译者注:当前最新版本为 v0.2.58): +运行下面的命令来为你的操作系统下载 `ffsend` 最新可用的版本(LCTT 译注:当前最新版本为 v0.2.58): ``` $ wget https://github.com/timvisee/ffsend/releases/download/v0.1.2/ffsend-v0.1.2-linux-x64.tar.gz @@ -91,20 +93,20 @@ To show all subcommands, features and other help: ffsend help [SUBCOMMAND] ``` -对于使用基于 Arch Linux 系统的用户可以简单地借助 **[AUR Helper][6]** 来安装它,因为这个包已经在 AUR 软件仓库中了。 +对于使用基于 Arch Linux 系统的用户可以简单地借助 [AUR 助手][6]来安装它,因为这个包已经在 AUR 软件仓库中了。 ``` $ yay -S ffsend ``` -对于使用 **`Debian/Ubuntu`** 系统的用户,使用 **[DPKG 命令][7]** 来安装 `ffsend`。 +对于使用 Debian/Ubuntu 系统的用户,使用 [DPKG 命令][7]来安装 `ffsend`。 ``` $ wget https://github.com/timvisee/ffsend/releases/download/v0.1.2/ffsend_0.1.2_amd64.deb $ sudo dpkg -i ffsend_0.1.2_amd64.deb ``` -### 如何使用 ffsend 来发送文件? +### 如何使用 ffsend 这并不复杂,我们可以简单地通过下面的语法来发送文件。 @@ -240,12 +242,16 @@ $ ffsend delete https://send.firefox.com/download/69afaab1f9/#5z51_94jtxcUCJNNvf File deleted ``` -另外,你还可以通过使用 firefox 浏览其打开 https://send.firefox.com/ 来完成相应的分享。 +### 如何在浏览器中使用 Send + +另外,你还可以通过使用 firefox 浏览器打开 https://send.firefox.com/ 来完成相应的分享。 只需要拖拽该文件就可以上传它: + ![][11] 一旦该文件被下载,它将展示 100% 的下载状态。 + ![][12] 想查看其他的可能选项,请浏览它对应的 man 信息或者帮助页: @@ -298,16 +304,16 @@ via: https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-com 作者:[Vinoth Kumar][a] 选题:[lujun9972][b] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://www.2daygeek.com/author/vinoth/ [b]: https://github.com/lujun9972 -[1]: https://www.2daygeek.com/onionshare-secure-way-to-share-files-sharing-tool-linux/ +[1]: https://linux.cn/article-9177-1.html [2]: https://www.2daygeek.com/wormhole-securely-share-files-from-linux-command-line/ [3]: https://www.2daygeek.com/transfer-sh-easy-fast-way-share-files-over-internet-from-command-line/ -[4]: https://www.2daygeek.com/dcp-dat-copy-secure-way-to-transfer-files-between-linux-systems/ +[4]: https://linux.cn/article-10516-1.html [5]: https://github.com/timvisee/ffsend [6]: https://www.2daygeek.com/category/aur-helper/ [7]: https://www.2daygeek.com/dpkg-command-to-manage-packages-on-debian-ubuntu-linux-mint-systems/ From 12e50a9201574fca0f9934451d9ed8c19fa9237a Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 20:29:08 +0800 Subject: [PATCH 068/218] PUB @FSSlc https://linux.cn/article-12051-1.html --- ... Command Line Using Firefox Send Client.md | 47 ++----------------- 1 file changed, 3 insertions(+), 44 deletions(-) rename {translated/tech => published}/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md (87%) diff --git a/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md b/published/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md similarity index 87% rename from translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md rename to published/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md index b04263776d..0663005ce5 100644 --- a/translated/tech/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md +++ b/published/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md @@ -1,8 +1,8 @@ [#]: collector: "lujun9972" [#]: translator: "FSSlc" [#]: reviewer: "wxy" -[#]: publisher: " " -[#]: url: " " +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-12051-1.html" [#]: subject: "ffsend – Easily And Securely Share Files From Linux Command Line Using Firefox Send Client" [#]: via: "https://www.2daygeek.com/ffsend-securely-share-files-folders-from-linux-command-line-using-firefox-send-client/" [#]: author: "Vinoth Kumar https://www.2daygeek.com/author/vinoth/" @@ -254,48 +254,7 @@ File deleted ![][12] -想查看其他的可能选项,请浏览它对应的 man 信息或者帮助页: - -``` -$ ffsend --help -ffsend 0.1.2 -Tim Visee -Easily and securely share files from the command line. -A fully featured Firefox Send client. - -USAGE: - ffsend [FLAGS] [OPTIONS] [SUBCOMMAND] - -FLAGS: - -f, --force Force the action, ignore warnings - -h, --help Prints help information - -i, --incognito Don't update local history for actions - -I, --no-interact Not interactive, do not prompt - -q, --quiet Produce output suitable for logging and automation - -V, --version Prints version information - -v, --verbose Enable verbose information and logging - -y, --yes Assume yes for prompts - -OPTIONS: - -H, --history Use the specified history file [env: FFSEND_HISTORY] - -t, --timeout Request timeout (0 to disable) [env: FFSEND_TIMEOUT] - -T, --transfer-timeout Transfer timeout (0 to disable) [env: FFSEND_TRANSFER_TIMEOUT] - -SUBCOMMANDS: - upload Upload files [aliases: u, up] - download Download files [aliases: d, down] - debug View debug information [aliases: dbg] - delete Delete a shared file [aliases: del] - exists Check whether a remote file exists [aliases: e] - help Prints this message or the help of the given subcommand(s) - history View file history [aliases: h] - info Fetch info about a shared file [aliases: i] - parameters Change parameters of a shared file [aliases: params] - password Change the password of a shared file [aliases: pass, p] - -The public Send service that is used as default host is provided by Mozilla. -This application is not affiliated with Mozilla, Firefox or Firefox Send. -``` +想查看其他的可能选项,请浏览它对应的 man 信息或者帮助页。 -------------------------------------------------------------------------------- From 160f4b67ed8ae0e0dee74e70d04f6fb7ba8defe6 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sun, 29 Mar 2020 20:30:31 +0800 Subject: [PATCH 069/218] translating --- sources/tech/20200325 Linux firewall basics with ufw.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sources/tech/20200325 Linux firewall basics with ufw.md b/sources/tech/20200325 Linux firewall basics with ufw.md index 78bb763b3b..c81af35c1e 100644 --- a/sources/tech/20200325 Linux firewall basics with ufw.md +++ b/sources/tech/20200325 Linux firewall basics with ufw.md @@ -8,15 +8,20 @@ [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) Linux firewall basics with ufw +Linux 防火墙 ufw 简介 ====== We take a look at ufw - the uncomplicated firewall - on Linux, providing some insights and commands for making changes. Vertigo3D / Getty Images +我们来看看 ufw - linux 上一个简单的防火墙,它提供了一些见解和进行更改的命令。 The **ufw** (uncomplicated firewall) represents a serious simplification to [iptables][1] and, in the years that it’s been available, has become the default firewall on systems such as Ubuntu and Debian. And, yes, **ufw** is surprisingly uncomplicated – a boon for newer admins who might otherwise have to invest a lot of time to get up to speed on firewall management. +**ufw** 可以说是 [iptables][1] 的简化版,在未来几年,它已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且它并不复杂,这对新管理员来说是一个福音,否则他们可能不得不投入大量时间来加快防火墙管理的速度。 GUIs are available for **ufw** (like **gufw**), but **ufw** commands are generally issued on the command line. This post examines some commands for using **ufw** and looks into how it works. +**ufw** 也有 GUI(例如 **gufw**),但是 **ufw** 命令通常在命令行上发布。这篇文章检查了一些使用 **ufw** 的命令,并研究了它的工作方式。 First, one quick way to see how **ufw** is configured is to look at its configuration file – **/etc/default/ufw**. In the command below, we display the settings, using **grep** to suppress the display of both blank lines and comments (line starting with #). +首先,查看 **ufw** 配置方式的一种快速方法是查看其配置文件 **/etc/default/ufw**。在下面的命令中,我们显示设置,使用 **grep** 禁止显示空白行和注释(以 # 开头的行), [RELATED: Linux hardening: a 15-step checklist for a secure Linux server][2] @@ -33,8 +38,10 @@ IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" ``` As you can see, the default policy is to drop input and allow output. Additional rules that allow the connections that you specifically want to be accept are configured separately. +正如你所看到的,默认策略是删除输入并允许输入。允许你专门接受的连接的其它规则是单独配置的。 The basic syntax for ufw commands might look like thee below, though this synopsis is not meant to imply that typing only “ufw” will get you further than a quick error telling you that arguments are required. +ufw 命令的基本语法如下所示,尽管该提要并不意味着仅输入 ufw 将使你走的更远,而不是一个快速的错误提示你需要参数。 ``` ufw [--dry-run] [options] [rule syntax] From dfb75b47111f4230a3bdbfa58030950b3c622cfb Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 20:45:07 +0800 Subject: [PATCH 070/218] PRF --- ...0319 7 open hardware projects working to solve COVID-19.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/published/20200319 7 open hardware projects working to solve COVID-19.md b/published/20200319 7 open hardware projects working to solve COVID-19.md index 98ab25270f..3b3f5cf23e 100644 --- a/published/20200319 7 open hardware projects working to solve COVID-19.md +++ b/published/20200319 7 open hardware projects working to solve COVID-19.md @@ -112,7 +112,7 @@ Gaudi Labs 的 [PocketPCR][31] 热循环仪可通过升高和降低小试管中 Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模蛋白质可能采取的形状和折叠途径,以寻找新的治疗机会。你可以在华盛顿大学生物物理学家 Greg Bowman 的帖子《[它是如何运作的以及如何提供帮助][43]》中找到有关该项目的更多信息。 -该项目涉及来自许多国家(包括香港、克罗地亚、瑞典和美国)的财团的学术实验室、贡献者和公司赞助者。 在 [GitHub][45] 上,[在混合了 GPL 和专有许可证][44]下共享,并且可以在 Windows、macOS 和 GNU/Linux(例如 Debian、Ubuntu、Mint、RHEL、CentOS、Fedora)。 +该项目涉及来自许多国家和地区(包括香港、克罗地亚、瑞典和美国)的财团的学术实验室、贡献者和公司赞助者。 在 [GitHub][45] 上,[在混合了 GPL 和专有许可证][44]下共享,并且可以在 Windows、macOS 和 GNU/Linux(例如 Debian、Ubuntu、Mint、RHEL、CentOS、Fedora)。 ### 许多其他有趣的项目 @@ -129,7 +129,7 @@ Folding at Home 项目使用马尔可夫状态模型(如上所示)来建模 这些项目遍布全球,而这种全球合作正是我们所需要的,因为病毒无视国界。新冠病毒大流行在不同时期以不同方式影响国家,因此我们需要一种分布式方法。 -正如我和同事 Steven Abadie 在 [OSHdata 2020 报告][54]中所写的那样,开源硬件运动是全球性运动。参与该认证项目的个人和组织遍布全球 35 个国家和每个半球。 +正如我和同事 Steven Abadie 在 [OSHdata 2020 报告][54]中所写的那样,开源硬件运动是全球性运动。参与该认证项目的个人和组织遍布全球 35 个国家地区和每个半球。 ![Open source hardware map][55] From 5b67b02956440e7ac7b4acc60668fc037781a65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E6=96=B0=E9=98=BF=E5=B2=A9?= <31788564+mengxinayan@users.noreply.github.com> Date: Sun, 29 Mar 2020 05:56:35 -0700 Subject: [PATCH 071/218] Translated (mengxinayan) File name: 20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md Translator: mengxinayan --- ... You Need to Know to Work in Vim Editor.md | 168 ------------------ ... You Need to Know to Work in Vim Editor.md | 161 +++++++++++++++++ 2 files changed, 161 insertions(+), 168 deletions(-) delete mode 100644 sources/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md create mode 100644 translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md diff --git a/sources/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md b/sources/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md deleted file mode 100644 index 6b959364b7..0000000000 --- a/sources/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md +++ /dev/null @@ -1,168 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (mengxinayan) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Basic Vim Commands You Need to Know to Work in Vim Editor) -[#]: via: (https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/) -[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -Basic Vim Commands You Need to Know to Work in Vim Editor -====== - -If you are a system administrator or developer, you may need to edit a file while working on the Linux terminal. - -There are several file editors on Linux, and how to choose the right one for your needs. - -I would like to recommend Vim editor. - -### You may ask, why? - -You may spend more time in the editor to modify an existing file than writing new text. - -In this case, Vim Keyboard shortcuts allow you to efficiently meet your needs. - -The following articles may help you learn about file and directory manipulation. - - * [**L**][1]**[inux Basic – Linux and Unix Commands for File and Directory Manipulation][1]** - * **[10 Methods to View Different File Formats in Linux][2]** - - - -### What’s vim? - -Vim is one of the most popular and powerful text editor that widely used by Linux administrators and developers. - -It’s highly configurable text editor which enables efficient text editing. This is an updated version of the vi editor, which is already installed on most Unix systems. - -Vim is often called a “programmer’s editor,” but it is not limited to it, and is suitable for all types of text editing. - -It comes with many features like multi level undo, multi windows and buffers, syntax highlighting, command line editing, file name completion, visual selection. - -You can easily obtain online help with the “:help” command. - -### Understanding Vim Modes - -Vim has two modes, the details are below: - -**Command Mode:** When you launch Vim Editor, you will default to Command Mode. You can move around the file, and modify some parts of the text, cut, copy, and paste parts of the text and issue commands to do more (press ESC for Command Mode). - -**Insert Mode:** The nsert mode is used to type text in a given given document (Press i for insert mode). - -### How do I know which Vim mode I am on? - -If you are in insert mode, you will see **“INSERT”** at the bottom of the editor. If nothing is shown, or if it shows the file name at the bottom of the editor, you are in “Command Mode”. - -### Cursor Movement in Normal Mode - -These Vim keyboard shortcuts allow you to move your cursor around a file in different ways. - - * `G` – Go to the last line of the file - * `gg` – Go to the first line of the file - * `$` – Go to the end of line. - * `0` (zero) – Go to the beginning of line. - - - * `w` – Jump by start of words - * `W` – Jump by words (spaces separate words) - * `b` – Jump backward by words - * `B` – Jump backward by words (spaces separate words) - - - * `PgDn` Key – Move down page-wise - * `PgUp` Key – Move up page-wise - * `Ctrl+d` – Move half-page down - * `Ctrl+u` – Move half-page up - - - -### Insert mode – insert a text - -These vim keyboard shortcuts allows you to insert a cursor in varies position based on your needs. - - * `i` – Insert before the cursor - * `a` – Insert after the cursor - * `I` – Insert at the beginning of the line, this is useful when you are in the middle of the line. - * `A` – Insert at the end of the line - * `o` – Open a new line below the current line - * `O` – Append a new line above the current line - * `ea` – Insert at the end of the word - - - -### Copy, Paste and Delete a Line - - * `yy` – yank (copy) a line - * `p/P` – Paste after cursor/ put before cursor - * `dd` – delete a line - * `dw` – delete the word - - - -### Search and Replace Pattern in Vim - - * `/pattern` – To search a given pattern - * `?pattern` – To search backward a given pattern - * `n` – To repeat search - * `N` – To repeat backward search - - - * `:%s/old-pattern/new-pattern/g` – Replace all old formats with the new format across the file. - * `:s/old-pattern/new-pattern/g` – Replace all old formats with the new format in the current line. - * `:%s/old-pattern/new-pattern/gc` – Replace all old formats with the new format across the file with confirmations. - - - -### How do I go to a particular line in Vim Editor - -You can do this in two ways, depending on your need. If you don’t know the line number I suggest you go with the first method. - -Add line number by opening a file and running the command below. - -``` -:set number -``` - -Once you have set the line number, press **“: n”** to go to the corresponding line number. For example, if you want to go to **line 15**, enter. - -``` -:15 -``` - -If you already know the line number, use the following method to go directly to the corresponding line. For example, if you want to move to line 20, enter the command below. - -``` -$ vim +20 [File_Name] -``` - -### Undo/Redo/Repeat Operation - - * `u` – Undo the changes - * `Ctrl+r` – Redo the changes - * `.` – Repeat last command - - - -### Saving and Exiting Vim - - * `:w` – Save the changes but don’t exit - * `:wq` – Write and quit - * `:q!` – Force quit - - - --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/ - -作者:[Magesh Maruthamuthu][a] -选题:[lujun9972][b] -译者:[萌新阿岩](https://github.com/mengxinayan) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.2daygeek.com/author/magesh/ -[b]: https://github.com/lujun9972 -[1]: https://www.2daygeek.com/linux-basic-commands-file-directory-manipulation/ -[2]: https://www.2daygeek.com/unix-linux-command-to-view-file/ diff --git a/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md b/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md new file mode 100644 index 0000000000..3920687144 --- /dev/null +++ b/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md @@ -0,0 +1,161 @@ +[#]: collector: (lujun9972) +[#]: translator: (mengxinayan) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Basic Vim Commands You Need to Know to Work in Vim Editor) +[#]: via: (https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/) +[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) + +你需要知道的 Vim 编辑器中的基础命令 +====== + +如果你是一名系统管理员或者开发者,当你在终端工作时有时会需要编辑一个文件。 + +在 Linux 系统中有几种文件编辑器,你可以根据需求选择合适的文件编辑器 + +在这里,我想推荐 Vim 编辑器 + + +### 为什么推荐 Vim 编辑器 + +和创建编写新文件相比,你会在编辑器中花费更多的时间用来修改已经存在的文件。 + +在这种情况下,Vim 快捷键可以有效地满足你的需求。 + +文章下面的内容可以帮助你了解对文件和目录的操作。 + + [Linux 基础:对文件和目录进行操作的 Linux 和 Unix 命令][1] + [在 Linux 中查看不同文件格式的10种方法][2] + + +### 什么是 Vim + +Vim 是被 Linux 管理员和开发者广泛使用的最流行和功能强大的编辑器之一。 + +它可以通过高度的自定义配置来提高文本编辑效率。它是在众多 Unix 默认安装的 Vi 编辑器的升级版。 + +Vim 通常被称为“程序员的编辑器”,但并不限于此,它也可用于编辑任何类型的文件。 + +它具有许多功能,例如:多次撤销,多窗口和缓冲区,语法高亮,命令行编辑,文件名补全,可视选择。 + +你可以使用 `:help` 命令来获取在线帮助 + + +### 理解 Vim 的模式 + +Vim 有两种模式,详细介绍如下: + +**命令模式:** 当启动 Vim 编辑器后,默认处在命令模式下。你可以在文件中移动并且修改内容,剪切,复制和粘贴文件的一部分,同时发出命令执行更多操作(按 ESC 键进入命令模式) + +**插入模式:** 插入模式用于在给定的文档位置插入文本(按 i 键进入插入模式) + +### 我如何知道我正使用哪种 Vim 模式呢? + +如果你正在使用插入模式,你会在编辑器的底部看到 `INSERT` 。如果编辑器底部没有显示任何内容,或者在编辑器底部显示了文件名,则处于 “命令模式”。 + +### 正常模式下的光标移动 +### Cursor Movement in Normal Mode + +Vim 快捷键允许你使用不同的方式来移动光标: + + * `G` – 跳转到文件最后一行 + * `gg` – 跳转到文件首行 + * `$` – 跳转到行末尾 + * `0` (零) – 跳转到行开头 + + * `w` – 跳转到下一个单词的开始(单词的分隔符可以是空格或其他符号) + * `W` – 跳转到下一个单词的开始(单词的分隔符只能是空格) + * `b` – 跳转到下一个单词的末尾(单词的分隔符可以是空格或其他符号) + * `B` – 跳转到下一个单词的末尾(单词的分隔符只能是空格) + + * `PgDn` 键 – 向下移动一页 + * `PgUp` 键 – 向上移动一页 + * `Ctrl+d` – 向下移动半页 + * `Ctrl+u` – 向上移动半页 + + +### 插入模式:插入文字 + +下面的 vim 快捷键允许你根据需要在光标的不同位置插入内容。 + + * `i` – 在光标之前插入 + * `a` – 在光标之后插入 + * `I` – 在光标所在行的开头插入。当光标位于行中间时,这个键很有用 + * `A` – 在光标所在行的末尾插入。 + * `o` – 在光标所在行的下面插入新行 + * `O` – 在光标所在行的上面插入新行 + * `ea` – 在单词的末尾插入 + + +### 拷贝,粘贴和删除一行 + + * `yy` – 复制一行 + * `p/P` – 将内容粘贴到光标之后 / 将内容粘贴到光标之前 + * `dd` – 删除一行 + * `dw` – 删除一个单词 + + +### 在 Vim 中搜索和替换模式 + + * `/pattern` – 向后搜索给定的模式 + * `?pattern` – 向前搜索给定的模式 + * `n` – 向后重复搜索之前给定的模式 + * `N` – 向前重复搜索之前给定的模式 + + * `:%s/old-pattern/new-pattern/g` – 将文件中所有的旧模式替换为新模式 + * `:s/old-pattern/new-pattern/g` – 将当前行中所有的旧模式替换为新模式 + * `:%s/old-pattern/new-pattern/gc` – 逐个询问是否文件中的旧模式替换为新模式 + + +### 如何在 Vim 编辑器中跳转到特定行 + +你可以根据需求以两种方式达到该目的,如果你不知道行号,建议采用第一种方法。 + +通过打开文件并运行下面的命令来显示行号 + +``` +:set number +``` + +当你设置好显示行号后,按 `:n` 跳转到相应的行号。例如,如果你想跳转到第 15 行,请输入: + +``` +:15 +``` + +如果你已经知道行号,请使用以下方法在打开文件时直接跳转到相应行。例如,如果在打开文件时直接跳转到 20 行,请输入下面的命令: + +``` +$ vim +20 [File_Name] +``` + +### 撤销操作/恢复上一次操作/重复上一次操作 + + * `u` – 撤销更改 + * `Ctrl+r` – 恢复更改 + * `.` – 重复上一条命令 + + +### 保存和退出 Vim + + * `:w` – 保存更改但不退出 vim + * `:wq` – 写并退出 + * `:q!` – 强制退出 + + +-------------------------------------------------------------------------------- + +via: https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/ + +作者:[Magesh Maruthamuthu][a] +选题:[lujun9972][b] +译者:[萌新阿岩](https://github.com/mengxinayan) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.2daygeek.com/author/magesh/ +[b]: https://github.com/lujun9972 +[1]: https://www.2daygeek.com/linux-basic-commands-file-directory-manipulation/ +[2]: https://www.2daygeek.com/unix-linux-command-to-view-file/ From bb4fb5fed003b52ec961af64f4308b0beb17bae5 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 21:54:37 +0800 Subject: [PATCH 072/218] PRF @HankChow --- ...umentation for your open source project.md | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/translated/tech/20200312 How to write effective documentation for your open source project.md b/translated/tech/20200312 How to write effective documentation for your open source project.md index 51cd81bacd..e99d3e0c4d 100644 --- a/translated/tech/20200312 How to write effective documentation for your open source project.md +++ b/translated/tech/20200312 How to write effective documentation for your open source project.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to write effective documentation for your open source project) @@ -9,15 +9,16 @@ 如何为你的开源项目编写实用的文档 ====== -一份优质的文档可以让很多用户对你的项目路人转粉。 -![A pink typewriter][1] +> 一份优质的文档可以让很多用户对你的项目路人转粉。 + +![](https://img.linux.net.cn/data/attachment/album/202003/29/215343srdknc1o8kplbu8z.jpg) 好的代码很多时候并不代表一切。或许你能用最精巧的代码解决了世界上最迫切需要解决的问题,但如果你作为一个开源开发者,没能用准确的语言将你的作品公之于世,你的代码也只能成为沧海遗珠。因此,技术写作和文档编写是很重要的技能。 -一般来说,项目中的文档是最受人关注的部分,很多用户会通过文档来决定自己是否应该对某个项目开始学习或研究。所以,我们不能忽视技术写作和文档编写的工作,尤其要重点关注其中的“入门”部分,这会对你项目的发展起到关键性的作用。 +一般来说,项目中的文档是最受人关注的部分,很多用户会通过文档来决定自己是否应该对某个项目开始学习或研究。所以,我们不能忽视技术写作和文档编写的工作,尤其要重点关注其中的“入门Getting Started”部分,这会对你项目的发展起到关键性的作用。 -对于很多人来说,写作是一件令人厌烦甚至恐惧的事情。我们这些工程师出身的人,学习“写代码”比学习“为代码写文档”明显更多。不少人会把英语作为自己的第二语言或者第三语言,他们可能会对英语写作感到不安全甚至害怕(我的母语是汉语,英语是作为我的第二语言学习的,所以我也能感受到这种痛苦)。 +对于很多人来说,写作是一件令人厌烦甚至恐惧的事情。我们这些工程师出身的人,更多学习的是“写代码”而不是学习“为代码写文档”。不少人会把英语作为自己的第二语言或者第三语言,他们可能会对英语写作感到不自信甚至害怕(我的母语是汉语,英语是作为我的第二语言学习的,所以我也能感受到这种痛苦)。 但如果你希望自己的项目能在全球范围内产生一定的影响力,英语就是你必须使用的语言,这是一个无法避免的现实。但不必害怕,我在写这篇文章的时候就考虑到了这些可能带来的挑战,并给出了我的一些建议。 @@ -25,30 +26,30 @@ 这五条建议你马上就可以用起来,尽管看起来似乎有些浅显,但在技术写作时却经常被忽视。 - 1. 使用[主动语态][2]:感受一下主动语态下的“你可以这样更改配置(You can change these configurations by…)”和被动语态下的“配置可以这样更改(These configurations can be changed by…)”有什么不同之处。 - 2. 使用简洁明了的句子:可以借助 [Hemingway App][3] 或者 [Grammarly][4] 这样的工具,尽管它们并不开源。 - 3. 保持条理性:你可以在文档中通过写标题、划重点、引链接等方式,把各类信息划分为不同的部分,避免将所有内容都杂糅在一大段冗长的文字当中。 - 4. 提高可读性:除了单纯的文字之外,运用图表也是从多种角度表达的手段之一。 - 5. 注意拼写和语法:必须记得检查文档中是否有拼写错误或者语法错误。 +1. **使用主动语态**:感受一下[主动语态][2]下的“你可以这样更改配置(You can change these configurations by...)”和被动语态下的“配置可以这样更改(These configurations can be changed by…)”有什么不同之处。 +2. **使用简洁明了的句子**:可以借助 [Hemingway App][3] 或者 [Grammarly][4] 这样的工具,尽管它们并不开源。 +3. **保持条理性**:你可以在文档中通过写标题、划重点、引链接等方式,把各类信息划分为不同的部分,避免将所有内容都杂糅在一大段冗长的文字当中。 +4. **提高可读性**:除了单纯的文字之外,运用图表也是从多种角度表达的手段之一。 +5. **注意拼写和语法**:必须记得检查文档中是否有拼写错误或者语法错误。 只要在文档的写作和编辑过程中应用到这些技巧,你就能够和读者建立起沟通和信任。 - * 高效沟通:对于工程师们来说,阅读长篇大论的冗长文字,还不如去看小说。在阅读技术文档时,他们总是希望能够从中快速准确地获取到有用的信息。因此,技术文档的最佳风格应该是精简而有效的,不过这并不代表文档中不能出现类似幽默、emoji 甚至段子这些东西,这些元素可以当你的文档更有个性、更使人印象深刻。当然,具体的实现方式就因人而异了 - * 建立信任:你需要取得文档读者们的信任,这在一个项目的前期尤为重要。读者对你的信任除了来源于你代码的质量,还跟你文档编写的质量有关。所以你不仅要打磨代码,还要润色好相关的文档,这也是上面第 5 点建议拼写和语法检查的原因。 +* **高效沟通**:对于工程师们来说,阅读长篇大论的冗长文字,还不如去看小说。在阅读技术文档时,他们总是希望能够从中快速准确地获取到有用的信息。因此,技术文档的最佳风格应该是精简而有效的,不过这并不代表文档中不能出现类似幽默、emoji 甚至段子这些东西,这些元素可以当你的文档更有个性、更使人印象深刻。当然,具体的实现方式就因人而异了 +* **建立信任**:你需要取得文档读者们的信任,这在一个项目的前期尤为重要。读者对你的信任除了来源于你代码的质量,还跟你文档编写的质量有关。所以你不仅要打磨代码,还要润色好相关的文档,这也是上面第 5 点建议拼写和语法检查的原因。 -### 如何开始编写文档 +### 从编写“入门”文档开始 现在,最需要花费功夫的应该就是“入门”部分了,这是一篇技术文档最重要的部分,[二八定律][5]在这里得到了充分体现:访问一个项目的大部分流量都会落在项目文档上,而访问项目文档的大部分流量则会落在文档的“入门”部分中。因此,如果文档的“入门”部分写得足够好,项目就会吸引到很多用户,反之,用户会对你的项目敬而远之。 那么如何写好“入门”部分呢?我建议按照以下三步走: - 1. 任务化:入门指南应该以任务为导向。这里的任务指的是对于开发者来说可以完成的离散的小项目,而不应该包含太多涉及到体系结构、核心概念等的抽象信息,因此在“入门”部分只需要提供一个简单明了的概述就可以了。也不要在“入门”部分大谈这个项目如何优秀地解决了问题,这个话题可以放在文档中别的部分进行说明。总而言之,“入门”部分最好是给出一些主要的操作步骤,这样显得开门见山。 - 2. 30 分钟内能够完成:这一点的核心是耗时尽可能短,不宜超过 30 分钟,这个时间上限是考虑到用户可能对你的项目并不了解。这一点很重要,大部分愿意浏览文档的人都是有技术基础的,但对你的项目也仅仅是一知半解。首先让这些读者尝试进行一些相关操作,在收到一定效果后,他们才会愿意花更多时间深入研究整个项目。因此,你可以从耗时这个角度来评估你的文档“入门”部分有没有需要改进之处。 - 3. 有意义的任务:这里“有意义”的含义取决于你的开源项目。最重要的是认真思考并将“入门”部分严格定义为一项任务,然后交给你的读者去完成。这个项目的价值应该在这项有意义的任务中有所体现,不然读者可能会感觉这是一个浪费时间的行为。 +1. **任务化**:入门指南应该以任务为导向。这里的任务指的是对于开发者来说可以完成的离散的小项目,而不应该包含太多涉及到体系结构、核心概念等的抽象信息,因此在“入门”部分只需要提供一个简单明了的概述就可以了。也不要在“入门”部分大谈这个项目如何优秀地解决了问题,这个话题可以放在文档中别的部分进行说明。总而言之,“入门”部分最好是给出一些主要的操作步骤,这样显得开门见山。 +2. **30 分钟内能够完成**:这一点的核心是耗时尽可能短,不宜超过 30 分钟,这个时间上限是考虑到用户可能对你的项目并不了解。这一点很重要,大部分愿意浏览文档的人都是有技术基础的,但对你的项目也仅仅是一知半解。首先让这些读者尝试进行一些相关操作,在收到一定效果后,他们才会愿意花更多时间深入研究整个项目。因此,你可以从耗时这个角度来评估你的文档“入门”部分有没有需要改进之处。 +3. **有意义的任务**:这里“有意义”的含义取决于你的开源项目。最重要的是认真思考并将“入门”部分严格定义为一项任务,然后交给你的读者去完成。这个项目的价值应该在这项有意义的任务中有所体现,不然读者可能会感觉这是一个浪费时间的行为。 -提示:假如你的项目是一个分布式数据库,那么达到“整个集群在某些节点故障的情况下可以不中断地保持可用”的目标就可以认为是“有意义”的;加入你的项目是一个数据分析工具或者是商业智能工具,“有意义”的目标也可以是“加载数据后能快速生成多种可视化效果的仪表板”。总之,无论你的项目需要达到什么“有意义”的目标,都应该能在笔记本电脑上本地快速实现。 +提示:假如你的项目是一个分布式数据库,那么达到“整个集群在某些节点故障的情况下可以不中断地保持可用”的目标就可以认为是“有意义”的;假如你的项目是一个数据分析工具或者是商业智能工具,“有意义”的目标也可以是“加载数据后能快速生成多种可视化效果的仪表板”。总之,无论你的项目需要达到什么“有意义”的目标,都应该能在笔记本电脑上本地快速实现。 -[Linkerd 入门][6]就是一个很好的例子。Linkerd 是 Kubernetes 的开源服务网格Service Mesh,当时我对 Kubernetes 了解并不多,也不熟悉服务网格。但我在自己的笔记本电脑上很轻松地就完成了其中的任务,同时也加深了对服务网格的理解。 +[Linkerd 入门][6]就是一个很好的例子。Linkerd 是一个开源的 Kubernetes 服务网格Service Mesh,当时我对 Kubernetes 了解并不多,也不熟悉服务网格。但我在自己的笔记本电脑上很轻松地就完成了其中的任务,同时也加深了对服务网格的理解。 上面提到的三步过程是一个很有用的框架,对一篇文档“入门”部分的设计和量化评估很有帮助。今后你如果想将你的[开源项目产品化][7],这个框架还可能对实现价值的时间time-to-value产生影响。 @@ -56,15 +57,15 @@ 认真写好“入门”部分之后,你的文档中还需要有这五个部分:架构设计、生产环境使用指导、使用案例、参考资料以及未来展望,这五个部分在一份完整的文档中是必不可少的。 - * 架构设计:这一部分需要深入探讨整个项目架构设计的依据,“入门”部分中一笔带过的那些关键细节就应该在这里体现。在产品化过程中,这个部分将会是[产品推广计划][8]的核心,因此通常会包含一些可视化呈现的内容,期望的效果是让更多用户长期参与到项目中来。 - * 生产环境使用指导:对于同一个项目,在生产环境中部署比在笔记本电脑上部署要复杂得多。因此,指导用户认真使用就尤为重要。同时,有些用户可能对项目很感兴趣,但对生产环境下的使用有所顾虑,而指导和展示的过程则正好能够吸引到这类潜在的用户。 - * 使用案例:社会认同social proof的力量是有目共睹的,所以很有必要列出正在生产环境使用这个项目的其他用户,并把这些信息摆放在显眼的位置。这个部分的浏览量甚至仅次于“入门”部分。 - * 参考资料:这个部分是对项目的一些详细说明,让用户得以进行详细的研究以及查阅相关信息。一些开源作者会在这个部分事无巨细地列出项目中的每一个细节和边缘情况edge case,这种做法可以理解,但不推荐在项目初期就在这个部分花费过多的时间。你可以采取更折中的方式,在质量和效率之间取得平衡,例如提供一些相关社区的链接、Stack Overflow 上的标签或单独的 FAQ 页面。 - * 未来展望:你需要制定一个简略的时间表,规划这个项目的未来发展方向,这会让用户长期保持兴趣。尽管项目在当下可能并不完美,但要让用户知道你仍然有完善这个项目的计划。这个部分也能让整个社区构建一个强大的生态,因此还要向用户提供表达他们对未来展望的看法的交流区。 +* **架构设计**:这一部分需要深入探讨整个项目架构设计的依据,“入门”部分中那些一笔带过的关键细节就应该在这里体现。在产品化过程中,这个部分将会是[产品推广计划][8]的核心,因此通常会包含一些可视化呈现的内容,期望的效果是让更多用户长期参与到项目中来。 +* **生产环境使用指导**:对于同一个项目,在生产环境中部署比在笔记本电脑上部署要复杂得多。因此,指导用户认真使用就尤为重要。同时,有些用户可能对项目很感兴趣,但对生产环境下的使用有所顾虑,而指导和展示的过程则正好能够吸引到这类潜在的用户。 +* **使用案例**:社会认同social proof的力量是有目共睹的,所以很有必要列出正在生产环境使用这个项目的其他用户,并把这些信息摆放在显眼的位置。这个部分的浏览量甚至仅次于“入门”部分。 +* **参考资料**:这个部分是对项目的一些详细说明,让用户得以进行详细的研究以及查阅相关信息。一些开源作者会在这个部分事无巨细地列出项目中的每一个细节和边缘情况edge case,这种做法可以理解,但不推荐在项目初期就在这个部分花费过多的时间。你可以采取更折中的方式,在质量和效率之间取得平衡,例如提供一些相关社区的链接、Stack Overflow 上的标签或单独的 FAQ 页面。 +* **未来展望**:你需要制定一个简略的时间表,规划这个项目的未来发展方向,这会让用户长期保持兴趣。尽管项目在当下可能并不完美,但要让用户知道你仍然有完善这个项目的计划。这个部分也能让整个社区构建一个强大的生态,因此还要向用户提供表达他们对未来展望的看法的交流区。 以上这几个部分或许还没有在你的文档中出现,甚至可能会在后期才能出现,尤其是“使用案例”部分。尽管如此,还是应该在文档中逐渐加入这些部分。如果用户对“入门”部分已经感觉良好,那以上这几个部分将会提起用户更大的兴趣。 -最后,请在“入门”部分、README 文件或其它显眼的位置注明整个项目所使用的许可证。这个细节会让你的项目更容易通过终端用户的审核。 +最后,请在“入门”部分、README 文件或其它显眼的位置注明整个项目所使用的许可证。这个细节会让你的项目更容易通过最终用户的审核。 ### 花 20% 的时间写作 @@ -74,12 +75,9 @@ * * * -_特别鸣谢云原生计算基金会的布道师 [Luc Perkins][9] 给出的宝贵意见。_ - -_本文首发于_ _[COSS Media][10]_ _并经许可发布。_ - -Nigel Babu 提供了 10 条帮助编写项目文档的有用技巧。 +*特别鸣谢云原生计算基金会的布道师 [Luc Perkins][9] 给出的宝贵意见。* +*本文首发于 [COSS Media][10] 并经许可发布。* -------------------------------------------------------------------------------- @@ -88,7 +86,7 @@ via: https://opensource.com/article/20/3/documentation 作者:[Kevin Xu][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From fd5e35c9b92a155854d1ca0391c936304c29f081 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 29 Mar 2020 21:55:18 +0800 Subject: [PATCH 073/218] PUB @HankChow https://linux.cn/article-12052-1.html --- ...te effective documentation for your open source project.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200312 How to write effective documentation for your open source project.md (99%) diff --git a/translated/tech/20200312 How to write effective documentation for your open source project.md b/published/20200312 How to write effective documentation for your open source project.md similarity index 99% rename from translated/tech/20200312 How to write effective documentation for your open source project.md rename to published/20200312 How to write effective documentation for your open source project.md index e99d3e0c4d..1635591917 100644 --- a/translated/tech/20200312 How to write effective documentation for your open source project.md +++ b/published/20200312 How to write effective documentation for your open source project.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12052-1.html) [#]: subject: (How to write effective documentation for your open source project) [#]: via: (https://opensource.com/article/20/3/documentation) [#]: author: (Kevin Xu https://opensource.com/users/kevin-xu) From be4a29722dc110ec5b5cc833cb44902831ddeb55 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 30 Mar 2020 08:35:17 +0800 Subject: [PATCH 074/218] translated --- ...00323 Don-t love diff- Use Meld instead.md | 131 ------------------ ...00323 Don-t love diff- Use Meld instead.md | 129 +++++++++++++++++ 2 files changed, 129 insertions(+), 131 deletions(-) delete mode 100644 sources/tech/20200323 Don-t love diff- Use Meld instead.md create mode 100644 translated/tech/20200323 Don-t love diff- Use Meld instead.md diff --git a/sources/tech/20200323 Don-t love diff- Use Meld instead.md b/sources/tech/20200323 Don-t love diff- Use Meld instead.md deleted file mode 100644 index e5049454e2..0000000000 --- a/sources/tech/20200323 Don-t love diff- Use Meld instead.md +++ /dev/null @@ -1,131 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Don't love diff? Use Meld instead) -[#]: via: (https://opensource.com/article/20/3/meld) -[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) - -Don't love diff? Use Meld instead -====== -Meld is a visual diff tool that makes it easier to compare and merge -changes in files, directories, Git repos, and more. -![Person drinking a hat drink at the computer][1] - -Meld is one of my essential tools for working with code and data files. It's a graphical diff tool, so if you've ever used the **diff** command and struggled to make sense of the output, [Meld][2] is here to help. - -Here is a brilliant description from the project's website: - -> "Meld is a visual diff and merge tool targeted at developers. Meld helps you compare files, directories, and version controlled projects. It provides two- and three-way comparison of both files and directories, and has support for many popular version control systems. -> -> "Meld helps you review code changes and understand patches. It might even help you to figure out what is going on in that merge you keep avoiding." - -You can install Meld on Debian/Ubuntu systems (including Raspbian) with: - - -``` -`$ sudo apt install meld` -``` - -On Fedora or similar, it's: - - -``` -`$ sudo dnf install meld` -``` - -Meld is cross-platform—there's a [Windows install][3] using the [Chocolately][4] package manager. While it's not officially supported on macOS, there are [builds available for Mac][5], and you can install it on Homebrew with: - - -``` -`$ brew cask install meld` -``` - -See Meld's homepage for [additional options][2]. - -### Meld vs. the diff command - -If you have two similar files (perhaps one is a modified version of the other) and want to see the changes between them, you could run the **diff** command to see their differences in the terminal: - -![diff output][6] - -This example shows the differences between **conway1.py** and **conway2.py**. It's showing that I: - - * Removed the [shebang][7] and second line - * Removed **(object)** from the class declaration - * Added a docstring to the class - * Swapped the order of **alive** and **neighbours == 2** in a method - - - -Here's the same example using the **meld** command. You can run the same comparison from the command line with: - - -``` -`$ meld conway1.py conway2.py` -``` - -![Meld output][8] - -Much clearer! - -You can easily see changes and merge changes between files by clicking the arrows (they work both ways). You can even edit the files live (Meld doubles up as a simple text editor with live comparisons as you type)—just be sure to save before you close the window. - -You can even compare and edit three different files: - -![Comparing three files in Meld][9] - -### Meld's Git-awareness - -Hopefully, you're using a version control system like [Git][10]. If so, your comparison isn't between two different files but to find differences between the current working file and the one Git knows. Meld understands this, so if you run **meld conway.py**, where **conway.py** is known by Git, it'll show you any changes made since the last Git commit: - -![Comparing Git files in Meld][11] - -You can see changes made in the current version (on the right) and the repository version (on the left). You can see I deleted a method and added a parameter and a loop since the last commit. - -If you run **meld .**, you'll see all the changes in the current directory (or the whole repository, if you're in its root): - -![Meld . output][12] - -You can see a single file is modified, another file is unversioned (meaning it's new to Git, so I need to **git add** the file before comparing it), and lots of other unmodified files. Various display options are provided by icons along the top. - -You can also compare two directories, which is sometimes handy: - -![Comparing directories in Meld][13] - -### Conclusion - -Even regular users can find comparisons with diff difficult to decipher. I find the visualizations Meld provides make a big difference in troubleshooting what's changed between files. On top of that, Meld comes with some helpful awareness of version control and helps you compare across Git commits without thinking much about it. Give Meld a go, and make troubleshooting a little easier on the eyes. - -* * * - -_This was originally published on Ben Nuttall's [Tooling blog][14] and is reused with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/meld - -作者:[Ben Nuttall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/bennuttall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) -[2]: https://meldmerge.org/ -[3]: https://chocolatey.org/packages/meld -[4]: https://opensource.com/article/20/3/chocolatey -[5]: https://yousseb.github.io/meld/ -[6]: https://opensource.com/sites/default/files/uploads/diff-output.png (diff output) -[7]: https://en.wikipedia.org/wiki/Shebang_(Unix) -[8]: https://opensource.com/sites/default/files/uploads/meld-output.png (Meld output) -[9]: https://opensource.com/sites/default/files/uploads/meld-3-files.png (Comparing three files in Meld) -[10]: https://opensource.com/resources/what-is-git -[11]: https://opensource.com/sites/default/files/uploads/meld-git.png (Comparing Git files in Meld) -[12]: https://opensource.com/sites/default/files/uploads/meld-directory-changes.png (Meld . output) -[13]: https://opensource.com/sites/default/files/uploads/meld-directory-compare.png (Comparing directories in Meld) -[14]: https://tooling.bennuttall.com/meld/ diff --git a/translated/tech/20200323 Don-t love diff- Use Meld instead.md b/translated/tech/20200323 Don-t love diff- Use Meld instead.md new file mode 100644 index 0000000000..7f3c980685 --- /dev/null +++ b/translated/tech/20200323 Don-t love diff- Use Meld instead.md @@ -0,0 +1,129 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Don't love diff? Use Meld instead) +[#]: via: (https://opensource.com/article/20/3/meld) +[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) + +不喜欢 diff 么?试试 Meld 吧 +====== +Meld 是一个可视化 diff 工具,它可让你轻松比较和合并文件、目录、Git 仓库等的更改。 +![Person drinking a hat drink at the computer][1] + +Meld 是我处理代码和数据文件的基本工具之一。它是一个图形化的 diff 工具,因此,如果你曾经使用过 **diff** 命令并难以理解输出,那么 [Meld][2] 可以为你提供帮助。 + +这是该项目网站的精彩描述: + +>“ Meld 是面向开发人员的可视化 diff 和合并工具。Meld 帮助你比较文件、目录和版本控制的项目。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。“ +> +>“ Meld 帮助你检查代码更改并了解补丁。它甚至可以帮助你弄清你一直在避免的合并中发生了什么。” + +你可以使用以下命令在 Debian/Ubuntu 系统(包括 Raspbian)上安装 Meld: + + +``` +`$ sudo apt install meld` +``` + +在 Fedora 或类似产品上,是: + + +``` +`$ sudo dnf install meld` +``` + +Meld 是跨平台的,它有一个使用 [Chocolately][4] 包管理器的 [Windows 安装包][3]。尽管它在 macOS 上不受官方支持,但有[可用于 Mac 的版本][5],你可以使用 Homebrew 安装: + + +``` +`$ brew cask install meld` +``` + +有关[其他系统][2],请参见 Meld 的主页。 + +### Meld 对比 diff 命令 + +如果你有两个相似的文件(也许一个是另一个的修改版本),并想要查看它们之间的更改,那么可以在终端中运行 **diff** 命令查看它们的区别: + +![diff output][6] + +此例显示了 **conway1.py** 和 **conway2.py** 之间的区别。表明我: + + * 删除了 [shebang][7] 和第二行 +  * 从类声明中删除了 **(object)** +  * 为类添加了 docstring +  * 在方法中交换了 **alive** 和 **neighbours == 2** 的顺序 + + +这是使用 **meld** 命令的相同例子。你可以在命令行中运行以下命令进行相同的比较: + + +``` +`$ meld conway1.py conway2.py` +``` + +![Meld output][8] + +Meld 更清晰! + +你可以单击箭头(上下都行)轻松查看并合并文件之间的更改。你甚至可以实时编辑文件(在输入时,Meld 可以用作具有实时比较功能的简单文本编辑器)—仅在关闭窗口之前一定要保存。 + +你甚至可以比较和编辑三个不同的文件: + +![Comparing three files in Meld][9] + +### Meld 的 Git 认知 + +希望你正在使用 [Git][10] 之类的版本控制系统。如果是这样,那么你的比较不是在两个不同文件之间进行,而是要查找当前文件与 Git 历史文件之间的差异。Meld 理解这一点,因此,如果你运行 **meld conway.py**(Git 中有 **conway.py**),它将显示自上次 Git 提交以来所做的更改: + +![Comparing Git files in Meld][11] + +你可以看到当前版本(右侧)和仓库版本(左侧)之间的更改。你可以看到,自上次提交以来,我删除了一个方法,并添加了一个参数和一个循环。 + +如果你运行 **meld .**,你将看到当前目录(如果位于根目录,就是整个仓库)中的所有更改: + +![Meld . output][12] + +你会看到一个文件被修改,另一个文件未加入版本控制(这意味着它对 Git 是新的,因此在比较之前,我需要 **git add** 该文件),以及许多其他未修改的文件。顶部的图标提供了各种显示选项。 + +你还可以比较两个目录,这有时很方便: + +![Comparing directories in Meld][13] + +### 结论 + +即使是普通用户也会觉得 diff 的比较难以理解。我发现 Meld 提供的可视化在找出文件之间的更改方面有很大的不同。最重要的是,Meld 有一些有用的版本控制认知,可以帮助你在不考虑太多内容的情况下对 Git 提交进行比较。快来试试 Meld,并轻松解决问题。 + +* * * + +_本文最初发表在 Ben Nuttall 的 [Tooling blog][14] 上,并经允许重新使用。_ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/meld + +作者:[Ben Nuttall][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/bennuttall +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) +[2]: https://meldmerge.org/ +[3]: https://chocolatey.org/packages/meld +[4]: https://opensource.com/article/20/3/chocolatey +[5]: https://yousseb.github.io/meld/ +[6]: https://opensource.com/sites/default/files/uploads/diff-output.png (diff output) +[7]: https://en.wikipedia.org/wiki/Shebang_(Unix) +[8]: https://opensource.com/sites/default/files/uploads/meld-output.png (Meld output) +[9]: https://opensource.com/sites/default/files/uploads/meld-3-files.png (Comparing three files in Meld) +[10]: https://opensource.com/resources/what-is-git +[11]: https://opensource.com/sites/default/files/uploads/meld-git.png (Comparing Git files in Meld) +[12]: https://opensource.com/sites/default/files/uploads/meld-directory-changes.png (Meld . output) +[13]: https://opensource.com/sites/default/files/uploads/meld-directory-compare.png (Comparing directories in Meld) +[14]: https://tooling.bennuttall.com/meld/ From 9efd11699ae4d0e3040f78d476392741e2752f86 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 30 Mar 2020 08:41:28 +0800 Subject: [PATCH 075/218] translating --- .../20200326 3 open source tools for sticking to a budget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200326 3 open source tools for sticking to a budget.md b/sources/tech/20200326 3 open source tools for sticking to a budget.md index 2c3ca5bc2e..66b440be97 100644 --- a/sources/tech/20200326 3 open source tools for sticking to a budget.md +++ b/sources/tech/20200326 3 open source tools for sticking to a budget.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 285520384e34194fdce42aa1588726dd1a185d11 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 12:07:37 +0800 Subject: [PATCH 076/218] PRF @mengxinayan --- ... You Need to Know to Work in Vim Editor.md | 74 +++++++------------ 1 file changed, 25 insertions(+), 49 deletions(-) diff --git a/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md b/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md index 3920687144..ba60e91fd2 100644 --- a/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md +++ b/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md @@ -1,69 +1,52 @@ [#]: collector: (lujun9972) [#]: translator: (mengxinayan) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Basic Vim Commands You Need to Know to Work in Vim Editor) [#]: via: (https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) -你需要知道的 Vim 编辑器中的基础命令 +必知必会的 Vim 编辑器基础命令 ====== -如果你是一名系统管理员或者开发者,当你在终端工作时有时会需要编辑一个文件。 - -在 Linux 系统中有几种文件编辑器,你可以根据需求选择合适的文件编辑器 - -在这里,我想推荐 Vim 编辑器 - +如果你是一名系统管理员或者开发者,当你在终端工作时有时会需要编辑一个文件。在 Linux 系统中有几种文件编辑器,你可以根据需求选择合适的文件编辑器。在这里,我想推荐 Vim 编辑器。 ### 为什么推荐 Vim 编辑器 -和创建编写新文件相比,你会在编辑器中花费更多的时间用来修改已经存在的文件。 +相对于创建新文件,你更多是修改已经存在的文件。在这种情况下,Vim 快捷键可以有效地满足你的需求。 -在这种情况下,Vim 快捷键可以有效地满足你的需求。 - -文章下面的内容可以帮助你了解对文件和目录的操作。 - - [Linux 基础:对文件和目录进行操作的 Linux 和 Unix 命令][1] - [在 Linux 中查看不同文件格式的10种方法][2] +下列文章可以帮助你了解对文件和目录的操作。 +- [Linux 基础:对文件和目录进行操作的 Linux 和 Unix 命令][1] +- [在 Linux 中查看不同文件格式的 10 种方法][2] ### 什么是 Vim -Vim 是被 Linux 管理员和开发者广泛使用的最流行和功能强大的编辑器之一。 - -它可以通过高度的自定义配置来提高文本编辑效率。它是在众多 Unix 默认安装的 Vi 编辑器的升级版。 - -Vim 通常被称为“程序员的编辑器”,但并不限于此,它也可用于编辑任何类型的文件。 - -它具有许多功能,例如:多次撤销,多窗口和缓冲区,语法高亮,命令行编辑,文件名补全,可视选择。 - -你可以使用 `:help` 命令来获取在线帮助 +Vim 是被 Linux 管理员和开发者广泛使用的最流行和功能强大的编辑器之一。它可以通过高度的自定义配置来提高文本编辑效率。它是在众多 Unix 默认安装的 Vi 编辑器的升级版。 +Vim 通常被称为“程序员的编辑器”,但并不限于此,它也可用于编辑任何类型的文件。它具有许多功能,例如:多次撤销、多窗口和缓冲区、语法高亮、命令行编辑、文件名补全、可视选择等等。你可以使用 `:help` 命令来获取在线帮助。 ### 理解 Vim 的模式 Vim 有两种模式,详细介绍如下: -**命令模式:** 当启动 Vim 编辑器后,默认处在命令模式下。你可以在文件中移动并且修改内容,剪切,复制和粘贴文件的一部分,同时发出命令执行更多操作(按 ESC 键进入命令模式) +**命令模式:** 当启动 Vim 编辑器后,默认处在命令模式下。你可以在文件中移动并且修改内容,剪切、复制和粘贴文件的一部分,同时发出命令执行更多操作(按 `ESC` 键进入命令模式) -**插入模式:** 插入模式用于在给定的文档位置插入文本(按 i 键进入插入模式) +**插入模式:** 插入模式用于在给定的文档位置插入文本(按 `i` 键进入插入模式) ### 我如何知道我正使用哪种 Vim 模式呢? -如果你正在使用插入模式,你会在编辑器的底部看到 `INSERT` 。如果编辑器底部没有显示任何内容,或者在编辑器底部显示了文件名,则处于 “命令模式”。 +如果你正在使用插入模式,你会在编辑器的底部看到 `INSERT`。如果编辑器底部没有显示任何内容,或者在编辑器底部显示了文件名,则处于 “命令模式”。 -### 正常模式下的光标移动 -### Cursor Movement in Normal Mode +### 命令模式下的光标移动 Vim 快捷键允许你使用不同的方式来移动光标: * `G` – 跳转到文件最后一行 * `gg` – 跳转到文件首行 * `$` – 跳转到行末尾 - * `0` (零) – 跳转到行开头 - + * `0`(数字 0) – 跳转到行开头 * `w` – 跳转到下一个单词的开始(单词的分隔符可以是空格或其他符号) * `W` – 跳转到下一个单词的开始(单词的分隔符只能是空格) * `b` – 跳转到下一个单词的末尾(单词的分隔符可以是空格或其他符号) @@ -74,10 +57,9 @@ Vim 快捷键允许你使用不同的方式来移动光标: * `Ctrl+d` – 向下移动半页 * `Ctrl+u` – 向上移动半页 - ### 插入模式:插入文字 -下面的 vim 快捷键允许你根据需要在光标的不同位置插入内容。 +下面的 Vim 快捷键允许你根据需要在光标的不同位置插入内容。 * `i` – 在光标之前插入 * `a` – 在光标之后插入 @@ -87,26 +69,22 @@ Vim 快捷键允许你使用不同的方式来移动光标: * `O` – 在光标所在行的上面插入新行 * `ea` – 在单词的末尾插入 - -### 拷贝,粘贴和删除一行 +### 拷贝、粘贴和删除一行 * `yy` – 复制一行 - * `p/P` – 将内容粘贴到光标之后 / 将内容粘贴到光标之前 + * `p` / `P` – 将内容粘贴到光标之后 / 之前 * `dd` – 删除一行 * `dw` – 删除一个单词 +### 在 Vim 中搜索和替换匹配的模式 -### 在 Vim 中搜索和替换模式 - - * `/pattern` – 向后搜索给定的模式 - * `?pattern` – 向前搜索给定的模式 + * `/模式` – 向后搜索给定的模式 + * `?模式` – 向前搜索给定的模式 * `n` – 向后重复搜索之前给定的模式 * `N` – 向前重复搜索之前给定的模式 - - * `:%s/old-pattern/new-pattern/g` – 将文件中所有的旧模式替换为新模式 - * `:s/old-pattern/new-pattern/g` – 将当前行中所有的旧模式替换为新模式 - * `:%s/old-pattern/new-pattern/gc` – 逐个询问是否文件中的旧模式替换为新模式 - + * `:%s/旧模式/新模式/g` – 将文件中所有的旧模式替换为新模式 + * `:s/旧模式/新模式/g` – 将当前行中所有的旧模式替换为新模式 + * `:%s/旧模式/新模式/gc` – 逐个询问是否文件中的旧模式替换为新模式 ### 如何在 Vim 编辑器中跳转到特定行 @@ -127,7 +105,7 @@ Vim 快捷键允许你使用不同的方式来移动光标: 如果你已经知道行号,请使用以下方法在打开文件时直接跳转到相应行。例如,如果在打开文件时直接跳转到 20 行,请输入下面的命令: ``` -$ vim +20 [File_Name] +$ vim +20 [文件名] ``` ### 撤销操作/恢复上一次操作/重复上一次操作 @@ -136,14 +114,12 @@ $ vim +20 [File_Name] * `Ctrl+r` – 恢复更改 * `.` – 重复上一条命令 - ### 保存和退出 Vim * `:w` – 保存更改但不退出 vim * `:wq` – 写并退出 * `:q!` – 强制退出 - -------------------------------------------------------------------------------- via: https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/ @@ -151,7 +127,7 @@ via: https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/ 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] 译者:[萌新阿岩](https://github.com/mengxinayan) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From f5c26b2fd196f034f836eb8e5928e4b816d005d9 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 12:08:12 +0800 Subject: [PATCH 077/218] PUB @mengxinayan https://linux.cn/article-12053-1.html --- ...sic Vim Commands You Need to Know to Work in Vim Editor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md (98%) diff --git a/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md b/published/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md similarity index 98% rename from translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md rename to published/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md index ba60e91fd2..2a6b8e91d7 100644 --- a/translated/tech/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md +++ b/published/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (mengxinayan) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12053-1.html) [#]: subject: (Basic Vim Commands You Need to Know to Work in Vim Editor) [#]: via: (https://www.2daygeek.com/basic-vim-commands-cheat-sheet-quick-start-guide/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From b80b72912f5d71ba82c7073dc6645d5ca3635ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Mon, 30 Mar 2020 15:16:20 +0800 Subject: [PATCH 078/218] Translated --- ...et DebianDog - Puppy sized Debian Linux.md | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md index ea2b2d1f7c..ac429383ba 100644 --- a/sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md +++ b/sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md @@ -7,72 +7,72 @@ [#]: via: (https://itsfoss.com/debiandog/) [#]: author: (John Paul https://itsfoss.com/author/john/) -Meet DebianDog – Puppy sized Debian Linux +体验 DebianDog– Puppy 大小的 Debian Linux ====== -Recently I stumbled upon an intriguing Linux project. This project aims to create small live CDs for Debian and Debian-based systems, similar to the [Puppy Linux project][1]. Let’s take a look at DebianDog. +不久前,我偶然发现了一个有趣的 Linux 项目。这个项目旨在为 Debian 和基于 Debian 的系统创建一个小型的 live cd,类似于 [Puppy Linux 项目][1] 。让我们看看 DebianDog 。 -### What is DebianDog? +### DebianDog 是什么? -As it says on the tin, [DebianDog][2] “is a small Debian Live CD shaped to look like Puppy and act like Puppy. Debian structure and Debian behaviour are untouched and Debian documentation is 100% valid for DebianDog. You have access to all Debian repositories using apt-get or synaptic.” +正如字面所述,[DebianDog][2] “是一个被塑造成一个外观和动作都像 Puppy 的小型 Debian Live CD ,Debian 结构和 Debian 活动方式是不受影响的, Debian 文档对 DebianDog 来说是100%有效的。你可以使用 apt-get 或 synaptic 来访问所有的 Debian 存储库。” ![DebianDog Jessie][3] -For those of you who are not familiar with [Puppy Linux][1], the project is “a collection of multiple Linux distributions, built on the same shared principles”. Those principles are to be fast, small (300 MB or less), and easy to use. There are versions of Puppy Linux built to support Ubuntu, Slackware, and Raspbian packages. +对于那些不熟悉 [Puppy Linux][1] 的人来说,该项目是 “多个 Linux 发行版的一个集合,建立在相同的共享法则之上”。这些法则能够实现快速、小型(300 MB 或更少),和易于使用。这里有为支持 Ubuntu, Slackware 和 Raspbian 软件包构建的 Puppy linux 变种。 -The major difference between DebianDog and Puppy Linux is that Puppy Linux has its own package manager [the [Puppy Package Manager][4]]. As stated above, DebianDog using the Debian package manager and packages. Even the DebianDog website tries to make that clear: “It is not Puppy Linux and it has nothing to do with Puppy based on Debian.” +DebianDog 和 Puppy Linux 之间最大的不同是,Puppy Linux 有其自己的软件包管理器 [Puppy 软件包管理器][4] 。如上所述,DebianDog 使用 Debian 软件包管理器及其软件包。甚至 DebianDog 网站也试图澄清这一点:“它不是 Puppy Linux ,并且也与基于 Debian 的 Puppy 无关。” -### Why should anyone use DebianDog? +### 为什么一些人使用 DebianDog ? -The main reason to install DebianDog (or any of its derivatives) would be to restore an older system to operability. Every entry on DebianDog has a 32-bit option. They also have lighter desktop environments/window managers, such as [Openbox][5] or the [Trinity Desktop][6] environment. Most of those also have an alternative to systemd. They also come with lighter applications installed, such as [PCManFM][7]. +安装 DebianDog (或其任何衍生产品) 的主要原因是恢复一台较旧电脑的可操作性。在 DebianDog 上的每个条目都有一个32位选项。它们还有更轻量级的桌面环境/窗口管理器,例如 [Openbox][5] 或 [Trinity Desktop][6] 环境。它们中大多数也都有一个 systemd 的可替代版本。它们也安装更轻的应用程序,例如 [PCManFM][7] 。 -### What versions of DebianDog are available? +### DebianDog 有哪些可用的变体版本? -Though DebianDog was the first in the series, the project is called ‘Dog Linux’ and provides various ‘Dog variants’ on popular distributions based on Debian and Ubuntu. +尽管 DebianDog 在本系列中是第一个,但是该项目被称为 ‘Dog Linux’ ,提供各种基于Debian 和 Ubuntu的流行发行版的 ‘Dog 变体’。 #### DebianDog Jessie -The first (and original) version of DebianDog is DebianDog Jessie. There are two [32-bit versions][8] of it. One uses [Joe’s Window Manager (JWM)][9] as default and the other uses XFCE. Both systemd and sysvinit are available. There is also a [64-bit version][10]. DebianDog Jessie is based on Debian 8.0 (codename Jessie). Support for Debian 8.0 ends on June 30th, 2020, so install with caution. +DebianDog 的第一个(也是最初的) 版本是 DebianDog Jessie。它有两个 [32位版本][8] ,一个使用 [Joe’s Window Manager (JWM)][9] 作为默认桌面环境,另一个使用 XFCE 作为默认桌面环境。systemd 和 sysvinit 都是可用的。它还有一个 [64位版本][10]。DebianDog Jessie 基于 Debian 8.0 (代号 Jessie)。Debian 8.0 的支持将于2020年6月30日结束,因此安装需谨慎。 ![TrinityDog][11] #### StretchDog -[Stret][12][c][12][hDog][12] is based on Debian 9.0 (codename Stretch). It is available in 32 and 64-bit. Openbox is the default window manager, but we can also switch to JWM. Support for Debian 9.0 ends on June 30th, 2022. +[StretchDog][12] 基于 Debian 9.0 (代号 Stretch) 。它有32位和64位两种可用。Openbox是默认的窗口管理器,但是我们可以切换到 JWM 。Debian 9.0 的支持将于2022年6月30日结束。 #### BusterDog -[BusterDog][13] is interesting. It is based on [Debian 10][14] (codename Buster). It does not use systemd, instead, it uses [elogind][15] just like [AntiX][16]. Support for Debian 10.0 ends on June 2024. +[BusterDog][13] 是很有趣的。它基于 [Debian 10][14] (代号 Buster) 。它不使用 systemd ,反而像 [AntiX][16] 一样使用 [elogind][15] 。Debian 10.0 的支持将于2024年6月结束。 #### MintPup -[MintPup][17] is based on [Linux Mint][18] 17.1. This LiveCD is 32-bit only. You can also access all of the “Ubuntu/Mint repositories using apt-get or synaptic”. Considering that Mint 17 has reached end of life, this version must be avoided. +[MintPup][17] 基于 [Linux Mint][18] 17.1 。LiveCD 仅有32位版本。你也可以使用 “apt-get 或 synaptic 访问 Ubuntu/Mint 的存储库”。考虑到 Mint 17 已经到了生命的尽头,这一版本必须避免使用。 #### XenialDog -There are both [32-bit][19] and [64-bit versions][20] of this spin based on the Ubuntu 16.04 LTS. Both versions come with Openbox as default with JWM as an option. Support for Ubuntu 16.04 LTS ends in April of 2021, so install with caution. +XenialDog 有[32位][19]和[64位][20] 两种变种,基于 Ubuntu 16.04 LTS 。两个变种都使用 Openbox 作为默认版本,JWM 是一种选项。Ubuntu 16.04 LTS 的支持将于2021年4月结束, 因此安装需谨慎。 #### TrinityDog -There are two versions of the [TrintyDog][21] spin. One is based on Debian 8 and the other is based on Debian 9. Both are 32-bit and both use the [Trinity Desktop Environment][6], thus the name. +[TrintyDog][21] 有两种变体。一个基于 Debian 8 ,另一个基于 Debian 9 。两种变体都有32位版本,并且都使用 [Trinity Desktop Environment][6] ,依以此得名。 ![BionicDog][22] #### BionicDog -As you should be able to guess by the name. [BionicDog][23] is based on [Ubuntu 18.04 LTS][24]. The main version of this spin has both 32 and 64-bit with Openbox as the default window manager. There is also a version that uses the [Cinnamon desktop][25] and is only 64-bit. +你应该能够从名称猜到。[BionicDog][23] 基于 [Ubuntu 18.04 LTS][24] 。主要版本有32位和64位两个版本,Openbox 是默认的窗口管理器。这里也有一个使用 [Cinnamon desktop][25] 的版本,并且只有64位。 -### Final Thoughts +### 结束语 -I like any [Linux project that wants to make older systems usable][26]. However, most of the operating systems available through DebianDog are no longer supported or nearing the end of their life span. This makes it less than useful for the long run. +我喜欢任何 [想让较旧电脑系统有用的 Linux 项目][26]。但是,通过 DebianDog 项目提供的大多数操作系统不再受支持,或者接近它们的生命尽头。从长远来看,这就不那么有用了。 -**I wouldn’t really advise to use it on your main computer.** Try it in live USB or on a spare system. Also, [you can create][27] your own LiveCD spin if you want to take advantage of a newer base system. +**我不建议在你的主计算机上使用它。** 在 live USB 中或一台闲置的系统上尝试它。此外,如果你想使用较新的基础系统,[你可以创建][27]你自己的 LiveCD 。 -Somehow I keep on stumbling across obscure Linux distributions like [FatDog64][28], [4M Linux][29] and [Vipper Linux][30]. Even though I may not always recommend them to use, it’s still good to know about the existence of such projects. +似乎冥冥中自有天意,我总是在探索鲜为人知的 Linux 发行版的路上艰难地前行,像 [FatDog64][28] ,[4M Linux][29] 以及 [Vipper Linux][30] 。虽然我不建议使用它们,但是知晓这些项目的存在的意义总是好的。 -What are your thoughts on the DebianDog? What is your favorite Puppy-syle OS? Please let us know in the comments below. +你对 DebianDog 有什么看法?你最最喜欢的 Puppy 样式的操作系统是什么?请在下面的评论区中告诉我们。 -If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][31]. +如果你觉得这篇文章很有趣,请花点时间在社交媒体、黑客新闻或 [Reddit][31] 上分享。 -------------------------------------------------------------------------------- @@ -80,7 +80,7 @@ via: https://itsfoss.com/debiandog/ 作者:[John Paul][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[robsean](https://github.com/robsean) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 6620f1d2fc833ddff74520173504ed863500d78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Mon, 30 Mar 2020 15:20:54 +0800 Subject: [PATCH 079/218] Translating --- ...ll Microsoft TrueType Fonts on Ubuntu-based Distributions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md index e502219448..82deeed260 100644 --- a/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md +++ b/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (robsean) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 111abdeb35b75139b3f3d6d5d791169f1b6b57aa Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Mon, 30 Mar 2020 19:17:10 +0800 Subject: [PATCH 080/218] Rename sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md to translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md --- .../tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md (100%) diff --git a/sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md similarity index 100% rename from sources/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md rename to translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md From 911ebea63d23fbf6270efaaad5d423bbcaf11a5c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 19:41:39 +0800 Subject: [PATCH 081/218] PRF @PsiACE --- ...Building a Messenger App- Conversations.md | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/translated/tech/20180708 Building a Messenger App- Conversations.md b/translated/tech/20180708 Building a Messenger App- Conversations.md index 8ab0e2c083..dbecb13624 100644 --- a/translated/tech/20180708 Building a Messenger App- Conversations.md +++ b/translated/tech/20180708 Building a Messenger App- Conversations.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (PsiACE) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Building a Messenger App: Conversations) @@ -10,16 +10,18 @@ 构建一个即时消息应用(三):对话 ====== +![](https://img.linux.net.cn/data/attachment/album/202003/30/193824w7xsj2ixs8frsal8.jpg) + 本文是该系列的第三篇。 * [第一篇:模式][1] * [第二篇:OAuth][2] -在我们的即时消息应用中,消息表现为两个参与者对话的堆叠。如果你想要开始异常对话,就应该向应用提供你想要交谈的用户,而当对话创建后(如果该对话此前并不存在),就可以向该对话发送消息。 +在我们的即时消息应用中,消息表现为两个参与者对话的堆叠。如果你想要开始一场对话,就应该向应用提供你想要交谈的用户,而当对话创建后(如果该对话此前并不存在),就可以向该对话发送消息。 就前端而言,我们可能想要显示一份近期对话列表。并在此处显示对话的最后一条消息以及另一个参与者的姓名和头像。 -在这篇帖子中,我们将会编写一些端点(endpoints)来完成像「创建对话」、「获取对话列表」以及「找到单个对话」这样的任务。 +在这篇帖子中,我们将会编写一些端点endpoint来完成像“创建对话”、“获取对话列表”以及“找到单个对话”这样的任务。 首先,要在主函数 `main()` 中添加下面的路由。 @@ -45,7 +47,7 @@ func requireJSON(handler http.HandlerFunc) http.HandlerFunc { } ``` -如果请求(request)不是 JSON 格式,那么它会返回 `415 Unsupported Media Type`(不支持的媒体类型)错误。 +如果请求request不是 JSON 格式,那么它会返回 `415 Unsupported Media Type`(不支持的媒体类型)错误。 ### 创建对话 @@ -58,7 +60,7 @@ type Conversation struct { } ``` -就像上面的代码那样,对话中保持对另一个参与者和最后一条消息的引用,还有一个 bool 类型的字段,用来告知是否有未读消息。 +就像上面的代码那样,对话中保持对另一个参与者和最后一条消息的引用,还有一个 `bool` 类型的字段,用来告知是否有未读消息。 ```go type Message struct { @@ -188,7 +190,7 @@ type Errors struct { } ``` -然后,我们开始执行 SQL 事务。收到的仅仅是用户名,但事实上,我们需要知道实际的用户 ID 。因此,事务的第一项内容是查询另一个参与者的 ID 和头像。如果找不到该用户,我们将会返回 `404 Not Found`(未找到) 错误。另外,如果找到的用户恰好和「当前已验证用户」相同,我们应该返回 `403 Forbidden`(拒绝处理)错误。这是由于对话只应当在两个不同的用户之间发起,而不能是同一个。 +然后,我们开始执行 SQL 事务。收到的仅仅是用户名,但事实上,我们需要知道实际的用户 ID 。因此,事务的第一项内容是查询另一个参与者的 ID 和头像。如果找不到该用户,我们将会返回 `404 Not Found`(未找到) 错误。另外,如果找到的用户恰好和“当前已验证用户”相同,我们应该返回 `403 Forbidden`(拒绝处理)错误。这是由于对话只应当在两个不同的用户之间发起,而不能是同一个。 然后,我们试图找到这两个用户所共有的对话,所以需要使用 `INTERSECT` 语句。如果存在,只需要通过 `/api/conversations/{conversationID}` 重定向到该对话并将其返回。 @@ -265,11 +267,11 @@ func getConversations(w http.ResponseWriter, r *http.Request) { } ``` -该处理程序仅对数据库进行查询。它通过一些联接来查询对话表……首先,从消息表中获取最后一条消息。然后依据「ID 与当前已验证用户不同」的条件,从参与者表找到对话的另一个参与者。然后联接到用户表以获取该用户的用户名和头像。最后,再次联接参与者表,并以相反的条件从该表中找出参与对话的另一个用户,其实就是当前已验证用户。我们会对比消息中的 `messages_read_at` 和 `created_at` 两个字段,以确定对话中是否存在未读消息。然后,我们通过 `user_id` 字段来判定该消息是否属于「我」(指当前已验证用户)。 +该处理程序仅对数据库进行查询。它通过一些联接来查询对话表……首先,从消息表中获取最后一条消息。然后依据“ID 与当前已验证用户不同”的条件,从参与者表找到对话的另一个参与者。然后联接到用户表以获取该用户的用户名和头像。最后,再次联接参与者表,并以相反的条件从该表中找出参与对话的另一个用户,其实就是当前已验证用户。我们会对比消息中的 `messages_read_at` 和 `created_at` 两个字段,以确定对话中是否存在未读消息。然后,我们通过 `user_id` 字段来判定该消息是否属于“我”(指当前已验证用户)。 注意,此查询过程假定对话中只有两个用户参与,它也仅仅适用于这种情况。另外,该设计也不很适用于需要显示未读消息数量的情况。如果需要显示未读消息的数量,我认为可以在 `participants` 表上添加一个`unread_messages_count` `INT` 字段,并在每次创建新消息的时候递增它,如果用户已读则重置该字段。 -接下来需要遍历每一条记录,通过扫描每一个存在的对话来建立一个对话切片(an slice of conversations)并在最后进行响应。 +接下来需要遍历每一条记录,通过扫描每一个存在的对话来建立一个对话切片slice of conversations并在最后进行响应。 ### 找到单个对话 @@ -329,7 +331,7 @@ func getConversation(w http.ResponseWriter, r *http.Request) { 在下一篇帖子中,我们将会看到如何创建并列出消息。 -[Souce Code][3] +- [源代码][3] -------------------------------------------------------------------------------- @@ -338,7 +340,7 @@ via: https://nicolasparada.netlify.com/posts/go-messenger-conversations/ 作者:[Nicolás Parada][a] 选题:[lujun9972][b] 译者:[PsiACE](https://github.com/PsiACE) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 1396664621a894cb880746eed6010603d0d79307 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 19:42:12 +0800 Subject: [PATCH 082/218] PUB @PsiACE https://linux.cn/article-12056-1.html --- .../20180708 Building a Messenger App- Conversations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20180708 Building a Messenger App- Conversations.md (99%) diff --git a/translated/tech/20180708 Building a Messenger App- Conversations.md b/published/20180708 Building a Messenger App- Conversations.md similarity index 99% rename from translated/tech/20180708 Building a Messenger App- Conversations.md rename to published/20180708 Building a Messenger App- Conversations.md index dbecb13624..722383745d 100644 --- a/translated/tech/20180708 Building a Messenger App- Conversations.md +++ b/published/20180708 Building a Messenger App- Conversations.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (PsiACE) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12056-1.html) [#]: subject: (Building a Messenger App: Conversations) [#]: via: (https://nicolasparada.netlify.com/posts/go-messenger-conversations/) [#]: author: (Nicolás Parada https://nicolasparada.netlify.com/) From 759355eaa1a1dcd1e40d73a4826beab4895f4260 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 21:07:07 +0800 Subject: [PATCH 083/218] PRF @HankChow --- ...en source software is fighting COVID-19.md | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/translated/tech/20200327 How open source software is fighting COVID-19.md b/translated/tech/20200327 How open source software is fighting COVID-19.md index dae4f55de7..d2553f765f 100644 --- a/translated/tech/20200327 How open source software is fighting COVID-19.md +++ b/translated/tech/20200327 How open source software is fighting COVID-19.md @@ -1,69 +1,70 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How open source software is fighting COVID-19) [#]: via: (https://opensource.com/article/20/3/open-source-software-covid19) [#]: author: (Jeff Stern https://opensource.com/users/jeffstern) -开源软件在应对 COVID-19 中的贡献 +开源软件在应对新冠病毒中的贡献 ====== + > 在新冠疫情爆发之际,涌现了数以千计的开源项目,今天我们来了解其中四个。 -![symbols showing healthcare][1] +![](https://img.linux.net.cn/data/attachment/album/202003/30/210613wchojyc5rrwh8y5k.jpg) 在当前紧张的疫情环境下,保持专注和积极性是一个很大的挑战。而研究开源社区如何应对这一次疫情爆发,对于我来说却成为了一种宣泄。 -从今年一月底开始,整个开源社区已经贡献了数以千计关于冠状病毒或 COVID-19 的[开源软件库][2],其中涉及的内容包括但不限于数据集、模型、可视化、Web 应用、移动应用,且大多数都使用了 JavaScript 和 Python 编写。 +从今年一月底开始,整个开源社区已经贡献了数以千计关于冠状病毒或新冠病毒的[开源软件仓库][2],其中涉及的内容包括但不限于数据集、模型、可视化、Web 应用、移动应用,且大多数都使用了 JavaScript 和 Python 编写。 -之前我们分享过一些关于开源硬件厂商在帮助遏制冠状病毒传播方面做的[贡献][3],现在将继续分享四个由开源社区作出的应对冠状病毒和 COVID-19 的项目,这体现了开发者们和整个开源社区在当下对整个世界的影响力。 +之前我们分享过一些关于[开源硬件创客们在帮助][3]遏制冠状病毒传播方面做的贡献,现在将继续分享四个由开源社区作出的应对冠状病毒和新冠病毒的项目,这体现了开发者们和整个开源社区在当下对整个世界的影响力。 ### 1. PennSignals:CHIME ![CHIME by PennSignals][4] -COVID-19 流行病医院影响模型COVID-19 Hospital Impact Model for Epidemics([CHIME][5])是由宾夕法尼亚大学 Penn Medicine 机构的数据科学家们建立的开源在线应用,它可以让医院更好地了解本次新型冠状病毒对医院需求的影响。 +新冠病毒流行病医院影响模型COVID-19 Hospital Impact Model for Epidemics([CHIME][5])是由宾夕法尼亚大学 Penn Medicine 机构的数据科学家们建立的开源在线应用,它可以让医院更好地了解本次新型冠状病毒对医院需求的影响。 医院的管理人员可以通过 CHIME 来大致预测未来几天和几周内将会有多少患者需要住院治疗,并推算 ICU 和呼吸机的需求量。只需要输入当前住院患者数以及一些相关的变量,就可以看到未来几天内需求的变化情况。 -CHIME 主要使用 Python 开发,并通过 [pandas][6] 这个开源库实现了大部分的数据转换和数值计算,最终得出相关的估计值。pandas 的背后有一个强大的团队进行支持,因此它是在数据分析方面被广泛使用的 Python 库之一。和很多其它的开源项目一样,pandas 团队的收入大部分来源于[用户的资金支持][7]。 +CHIME 主要使用 Python 开发,并通过 [Pandas][6] 这个开源库实现了大部分的数据转换和数值计算,最终得出相关的估计值。Pandas 的背后有一个强大的团队进行支持,它是在数据分析方面被广泛使用的 Python 库之一。和很多其它的开源项目一样,Pandas 团队的收入大部分来源于[用户的资金支持][7]。 -### 2. Locale.ai:Real-time COVID-19 visualization +### 2. Locale.ai:实时新冠病毒可视化 ![Locale.ai COVID-19 visualization][8] -实时显示世界各地病例数量分布的地图可以让我们直观了解 COVID-19 的规模和扩散程度。Locale.ai 就开发了这样一个开源、可交互的 [COVID-19 已知病例可视化分布图][9],这个图会根据最新的可靠数据实时进行更新。 +实时显示世界各地病例数量分布的地图可以让我们直观了解新冠病毒的规模和扩散程度。Locale.ai 就开发了这样一个开源、可交互的[新冠病毒已知病例可视化分布图][9],这个图会根据最新的可靠数据实时进行更新。 -这个项目有趣的地方在于,它的数据是是通过 GitHub 用户 ExpDev07 创建的[开源 API][10] 进行检索的,这个 API 的数据来源是[约翰·霍普金斯大学的开源数据集][11],而约翰·霍普金斯大学这份聚合了多个来源的数据集则是 GitHub 上 COVID-19 相关的最受欢迎的项目。这就是开源项领域中分支带来的一大好处。 +这个项目有趣的地方在于,它的数据是是通过 GitHub 用户 ExpDev07 创建的[开源 API][10] 进行检索的,这个 API 的数据来源是[约翰·霍普金斯大学的开源数据集][11],而约翰·霍普金斯大学这份聚合了多个来源的数据集则是 GitHub 上新冠病毒相关的最受欢迎的项目。这就是开源项领域中分支带来的一大好处。 -Locale.ai 的这个图表通过 [Vue.js][11] 开发。Vue.js 是一个在 Web 应用开发方面非常流行的框架,它是由[尤雨溪][12]创造并维护的。值得一提的是,尤雨溪是全职参与开源项目维护的少数人之一。 +Locale.ai 的这个图表通过 [Vue.js][11] 开发。Vue.js 是一个在 Web 应用开发方面非常流行的框架,它是由[尤雨溪][12]创造并维护的。值得一提的是,尤雨溪是少数以全职参与开源项目维护的人之一。 ### 3. BlankerL:DXY-COVID-19-Crawler ![BlankerL DXY-COVID-19-Crawler][13] -[DXY-COVID-19-Crawler][14] 建立于今年 1 月份,是开源社区对 COVID-19 最早发起响应的项目之一。当时 COVID-19 主要在中国范围内传播,中国医学界通过[丁香园][15]网站来进行病例的报告和跟踪。为了使这些疫情信息具有更高的可读性和易用性,GitHub 用户 BlankerL 开发了一个爬虫,系统地从丁香园网站获取数据,并通过 API 和数据仓库的方式对外公开。这些数据也被学术研究人员用于研究病毒传播趋势和制作相关的可视化图表。到目前为止,DXY-COVID-19-Crawler 这个项目已经获得了超过 1300 个星标和近 300 次的复刻。 +[DXY-COVID-19-Crawler][14] 建立于今年 1 月份,是开源社区对新冠病毒最早发起响应的项目之一。当时该病毒主要在中国范围内传播,中国医学界通过[丁香园][15]网站来进行病例的报告和跟踪。为了使这些疫情信息具有更高的可读性和易用性,GitHub 用户 BlankerL 开发了一个爬虫,系统地从丁香园网站获取数据,并通过 API 和数据仓库的方式对外公开。这些数据也被学术研究人员用于研究病毒传播趋势和制作相关的可视化图表。到目前为止,DXY-COVID-19-Crawler 这个项目已经获得了超过 1300 个星标和近 300 次的复刻。 -BlankerL 使用 Python 和 [Beautiful Soup][16] 库开发了这个爬虫。Beautiful Soup 是 Python 开发者用于从页面 HTML DOM 中提取信息的库,它由 Leonard Richardson 维护,这位作者i你另外还全职担任软件架构师。 +BlankerL 使用 Python 和 [Beautiful Soup][16] 库开发了这个爬虫。Beautiful Soup 是 Python 开发者用于从页面 HTML DOM 中提取信息的库,它由 Leonard Richardson 维护,这位作者另外还全职担任软件架构师。 -### 4. 东京 COVID-19 工作组网站 +### 4. 东京新冠病毒工作组网站 ![City of Tokyo's COVID-19 Task Force site][17] -世界各地很多城市都在网络上持续更新当地的 COVID-19 信息。东京都政府则为此创建了一个[综合性的网站][18],让东京当地居民、在东京设有办事处的公司以及到东京的游客了解最新情况,并采取相应的预防措施。 +世界各地很多城市都在网络上持续更新当地的新冠病毒信息。东京都政府则为此创建了一个[综合性的网站][18],让东京当地居民、在东京设有办事处的公司以及到东京的游客了解最新情况,并采取相应的预防措施。 这个网站的不同之处在于它是由东京都政府[开源][19]的。这个项目受到了来自 180 多名用户的贡献,日本的[长野市、千叶市、福冈市][20]还对这个网站进行了改造。这个项目是城市公共建设更好地服务大众的有力示范。 -这个开源网站也使用了很多开源技术。通过 [Tidelift][21],我留意到项目中存在了 1365 个依赖项,其中 38 个是由开发者直接使用的依赖项。也就是说,超过一千多个开源项目(包括 [Nuxt.js][22]、[Prettier][23]、[Babel][24]、[Ajv][25] 等等)都为东京向市民共享信息提供了帮助。 +这个开源网站也使用了很多开源技术。通过 [Tidelift][21],我留意到项目中存在了 1365 个依赖项,而这都是由 38 个由开发者明确使用的直接依赖项所依赖的。也就是说,超过一千多个开源项目(包括 [Nuxt.js][22]、[Prettier][23]、[Babel][24]、[Ajv][25] 等等)都为东京向市民共享信息提供了帮助。 ![Dependencies in Tokyo's COVID-19 Task Force site][26] ### 其它项目 -除此以外,还有很多[响应 COVID-19 的重要项目][27]正在公开进行当中。在这次研究中,开源社区应对流行病以及利用开源技术开展工作的方式让我深受启发。接下来的一段时间都是应对疫情的关键时期,我们也可以继续在开源社区中寻找到更大的动力。 +除此以外,还有很多[应对新冠病毒的重要项目][27]正在公开进行当中。在这次研究中,开源社区应对流行病以及利用开源技术开展工作的方式让我深受启发。接下来的一段时间都是应对疫情的关键时期,我们也可以继续在开源社区中寻找到更大的动力。 -如果你也参与到了 COVID-19 相关的开源项目当中,欢迎在评论区分享。 +如果你也参与到了新冠病毒相关的开源项目当中,欢迎在评论区分享。 -------------------------------------------------------------------------------- @@ -72,7 +73,7 @@ via: https://opensource.com/article/20/3/open-source-software-covid19 作者:[Jeff Stern][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -80,7 +81,7 @@ via: https://opensource.com/article/20/3/open-source-software-covid19 [b]: https://github.com/lujun9972 [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Medical%20costs.jpg?itok=ke57j6cs (symbols showing healthcare) [2]: https://github.com/search?q=coronavirus+OR+covid19 -[3]: https://opensource.com/article/20/3/open-hardware-covid19 +[3]: https://linux.cn/article-12047-1.html [4]: https://opensource.com/sites/default/files/uploads/chime_pennsignals.png (CHIME by PennSignals) [5]: http://penn-chime.phl.io/ [6]: https://tidelift.com/subscription/pkg/pypi-pandas From b9ca70d2fa91a9eec359da497e85009c8fd3a93e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 30 Mar 2020 21:08:41 +0800 Subject: [PATCH 084/218] PUB @HankChow https://linux.cn/article-12057-1.html --- .../20200327 How open source software is fighting COVID-19.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200327 How open source software is fighting COVID-19.md (99%) diff --git a/translated/tech/20200327 How open source software is fighting COVID-19.md b/published/20200327 How open source software is fighting COVID-19.md similarity index 99% rename from translated/tech/20200327 How open source software is fighting COVID-19.md rename to published/20200327 How open source software is fighting COVID-19.md index d2553f765f..03f0b0d822 100644 --- a/translated/tech/20200327 How open source software is fighting COVID-19.md +++ b/published/20200327 How open source software is fighting COVID-19.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12057-1.html) [#]: subject: (How open source software is fighting COVID-19) [#]: via: (https://opensource.com/article/20/3/open-source-software-covid19) [#]: author: (Jeff Stern https://opensource.com/users/jeffstern) From 0bc27de72e41d0b273a962e8019ed5eb40f18de7 Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Mon, 30 Mar 2020 21:38:47 +0800 Subject: [PATCH 085/218] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E6=9C=89=E7=96=8F?= =?UTF-8?q?=E6=BC=8F=E9=9C=80=E8=A6=81=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20200327 How open source software is fighting COVID-19.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/published/20200327 How open source software is fighting COVID-19.md b/published/20200327 How open source software is fighting COVID-19.md index 03f0b0d822..28429de34e 100644 --- a/published/20200327 How open source software is fighting COVID-19.md +++ b/published/20200327 How open source software is fighting COVID-19.md @@ -36,7 +36,7 @@ CHIME 主要使用 Python 开发,并通过 [Pandas][6] 这个开源库实现 实时显示世界各地病例数量分布的地图可以让我们直观了解新冠病毒的规模和扩散程度。Locale.ai 就开发了这样一个开源、可交互的[新冠病毒已知病例可视化分布图][9],这个图会根据最新的可靠数据实时进行更新。 -这个项目有趣的地方在于,它的数据是是通过 GitHub 用户 ExpDev07 创建的[开源 API][10] 进行检索的,这个 API 的数据来源是[约翰·霍普金斯大学的开源数据集][11],而约翰·霍普金斯大学这份聚合了多个来源的数据集则是 GitHub 上新冠病毒相关的最受欢迎的项目。这就是开源项领域中分支带来的一大好处。 +这个项目有趣的地方在于,它的数据是是通过 GitHub 用户 ExpDev07 创建的[开源 API][10] 进行检索的,这个 API 的数据来源是[约翰·霍普金斯大学的开源数据集][11],而约翰·霍普金斯大学这份聚合了多个来源的数据集则是 GitHub 上新冠病毒相关的最受欢迎的项目。这就是开源领域中分支带来的一大好处。 Locale.ai 的这个图表通过 [Vue.js][11] 开发。Vue.js 是一个在 Web 应用开发方面非常流行的框架,它是由[尤雨溪][12]创造并维护的。值得一提的是,尤雨溪是少数以全职参与开源项目维护的人之一。 From 7e91ded93d65eb3c42d07130ee4e3f05e70afedb Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 00:53:10 +0800 Subject: [PATCH 086/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200330=20Using?= =?UTF-8?q?=20data=20from=20spreadsheets=20in=20Fedora=20with=20Python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md --- ...from spreadsheets in Fedora with Python.md | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md diff --git a/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md b/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md new file mode 100644 index 0000000000..a32cf4165d --- /dev/null +++ b/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md @@ -0,0 +1,117 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Using data from spreadsheets in Fedora with Python) +[#]: via: (https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/) +[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) + +Using data from spreadsheets in Fedora with Python +====== + +![][1] + +[Python][2] is one of the most popular and powerful programming languages available. Because it’s free and open source, it’s available to everyone — and most Fedora systems come with the language already installed. Python is useful for a wide variety of tasks, but among them is processing comma-separated value (**CSV**) data. CSV files often start off life as tables or spreadsheets. This article shows how to get started working with CSV data in Python 3. + +CSV data is precisely what it sounds like. A CSV file includes one row of data at a time, with data values separated by commas. Each row is defined by the same _fields_. Short CSV files are often easily read and understood. But longer data files, or those with more fields, may be harder to parse with the naked eye, so computers work better in those cases. + +Here’s a simple example where the fields are _Name_, _Email_, and _Country_. In this example, the CSV data includes a field definition as the first row, although that is not always the case. + +``` +Name,Email,Country +John Q. Smith,jqsmith@example.com,USA +Petr Novak,pnovak@example.com,CZ +Bernard Jones,bjones@example.com,UK +``` + +### Reading CSV from spreadsheets + +Python helpfully includes a _csv_ module that has functions for reading and writing CSV data. Most spreadsheet applications, both native like Excel or Numbers, and web-based such as Google Sheets, can export CSV data. In fact, many other services that can publish tabular reports will also export as CSV (PayPal for instance). + +The Python _csv_ module has a built in reader method called _DictReader_ that can deal with each data row as an ordered dictionary (OrderedDict). It expects a file object to access the CSV data. So if our file above is called _example.csv_ in the current directory, this code snippet is one way to get at this data: + +``` +f = open('example.csv', 'r') +from csv import DictReader +d = DictReader(f) +data = [] +for row in d: + data.append(row) +``` + +Now the _data_ object in memory is a list of OrderedDict objects : + +``` +[OrderedDict([('Name', 'John Q. Smith'), + ('Email', 'jqsmith@example.com'), + ('Country', 'USA')]), + OrderedDict([('Name', 'Petr Novak'), + ('Email', 'pnovak@example.com'), + ('Country', 'CZ')]), + OrderedDict([('Name', 'Bernard Jones'), + ('Email', 'bjones@example.com'), + ('Country', 'UK')])] +``` + +Referencing each of these objects is easy: + +``` +>>> print(data[0]['Country']) +USA +>>> print(data[2]['Email']) +bjones@example.com +``` + +By the way, if you have to deal with a CSV file with no header row of field names, the _DictReader_ class lets you define them. In the example above, add the _fieldnames_ argument and pass a sequence of the names: + +``` +d = DictReader(f, fieldnames=['Name', 'Email', 'Country']) +``` + +### A real world example + +I recently wanted to pick a random winner from a long list of individuals. The CSV data I pulled from spreadsheets was a simple list of names and email addresses. + +Fortunately, Python also has a helpful _random_ module good for generating random values. The _randrange_ function in the _Random_ class from that module was just what I needed. You can give it a regular range of numbers — like integers — and a step value between them. The function then generates a random result, meaning I could get a random integer (or row number!) back within the total number of rows in my data. + +So this small program worked well: + +``` +from csv import DictReader +from random import Random + +d = DictReader(open('mydata.csv')) +data = [] +for row in d: + data.append(row) + +r = Random() +winner = data[r.randrange(0, len(data), 1)] +print('The winner is:', winner['Name']) +print('Email address:', winner['Email']) +``` + +Obviously this example is extremely simple. Spreadsheets themselves include sophisticated ways to analyze data. However, if you want to do something outside the realm of your spreadsheet app, Python may be just the trick! + +* * * + +_Photo by [Isaac Smith][3] on [Unsplash][4]._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/ + +作者:[Paul W. Frields][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/pfrields/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2020/03/spreadsheets-python-816x345.jpg +[2]: https://python.org +[3]: https://unsplash.com/@isaacmsmith?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[4]: https://unsplash.com/s/photos/spreadsheets?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText From b665d2a5cee413d16903244debd2c82d78867a42 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 00:54:06 +0800 Subject: [PATCH 087/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200331=20Rambox?= =?UTF-8?q?=20is=20an=20All-in-one=20Messenger=20for=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200331 Rambox is an All-in-one Messenger for Linux.md --- ...ox is an All-in-one Messenger for Linux.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 sources/tech/20200331 Rambox is an All-in-one Messenger for Linux.md diff --git a/sources/tech/20200331 Rambox is an All-in-one Messenger for Linux.md b/sources/tech/20200331 Rambox is an All-in-one Messenger for Linux.md new file mode 100644 index 0000000000..f70829e98f --- /dev/null +++ b/sources/tech/20200331 Rambox is an All-in-one Messenger for Linux.md @@ -0,0 +1,98 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Rambox is an All-in-one Messenger for Linux) +[#]: via: (https://itsfoss.com/rambox/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Rambox is an All-in-one Messenger for Linux +====== + +_**Brief: Rambox is an all-in-one messenger that lets you combine multiple services like Discord, Slack, Facebook Messenger and hundreds of more such services in one place.**_ + +### Rambox: Add multiple messaging Services in a single app + +![][1] + +Rambox is one of the best ways to manage multiple services for communication through a single app installed. You can use [multiple messaging services][2] like Facebook Messenger, Gmail chats, AOL, Discord, Google Duo, [Viber][3] and a lot more from the same interface. + +This way, you don’t need to install individual apps or keep them opened in browser all the time. You can use a master password to lock the Rambox application. You can also use do not disturb feature. + +Rambox offers an [open source community edition][4] which is free to use. The paid pro version gives you access to 600+ apps while the community addition has 99+ apps. Pro version has additional features like themes, hibernation, ad-block, spell check and premium support. + +Don’t worry. The open source community edition itself is quite useful and you may not even need those pro features. + +### Features of Rambox + +![][5] + +While you should find most of the essential features in the open-source edition, you might notice some of them limited to the pro version. + +Here, I’ve mentioned all the essential features available: + + * You get about 100 apps/services to choose from in the open-source edition + * Ability to protect the app with a single Master password lock + * Ability to lock each session that you load up + * Do Not Disturb mode + * Ability to sync apps and configuration across multiple devices. + * You can create and add custom apps + * Support for keyboard shortcuts + * Ability to enable/disable apps without needing to delete them + * JS & CSS injection support to tweak the styling of apps + * Ad-block (**pro version**) + * Hibernation support (**pro version**) + * Theme support (**pro version**) + * Mobile view **(pro version)** + * Spell check **(pro version)** + * Work hours – to schedule a time for incoming notifications **(pro version)** + * Proxies support **(pro version)** + + + +In addition to what I’ve listed here, you might find some more features in the Rambox Pro edition. To know more about it, you can refer to the [official list of features][6]. + +It is also worth noting that you cannot have more than 3 active simultaneous device connections. + +### Installing Rambox on Linux + +You can easily get started using Rambox using the **.AppImage** file available on the [official download page][4]. If you’re curious, you can refer our guide on how to [use the AppImage file on Linux][7]. + +In either case, you can also get it from the [Snap store][8]. Also, feel free to check their [GitHub releases section][9] for **.deb / .rpm** or other packages. + +[Download Rambox Community Edition][4] + +### Wrapping Up + +It can be a little overwhelming to have a lot of apps installed using Rambox. So, I’d suggest you monitor the RAM usage when adding more apps and using them for work. + +There is also a similar app called [Franz][10] which is also part open source and part premium like Rambox. + +Even though solutions like Rambox or Franz are quite useful, they aren’t always resource-friendly, specially if you start using tens of services at the same time. So, keep an eye on your system resources (if you notice a performance impact). + +Otherwise, it’s an impressive app that does the work that you’d expect. Have you tried it out? Feel free to let me know your thoughts! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/rambox/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/rambox-ce.jpg?ssl=1 +[2]: https://itsfoss.com/best-messaging-apps-linux/ +[3]: https://itsfoss.com/viber-linux-client-beta-install/ +[4]: https://rambox.pro/#ce +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/rambox-preferences.png?ssl=1 +[6]: https://rambox.pro/#features +[7]: https://itsfoss.com/use-appimage-linux/ +[8]: https://snapcraft.io/rambox +[9]: https://github.com/ramboxapp/community-edition/releases +[10]: https://itsfoss.com/franz-messaging-app/ From 363bd5093f2fcbe9e40bfad42ce9ebec9b32a19e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 00:56:02 +0800 Subject: [PATCH 088/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200330=20Access?= =?UTF-8?q?=20control=20lists=20and=20external=20drives=20on=20Linux:=20Wh?= =?UTF-8?q?at=20you=20need=20to=20know?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md --- ... drives on Linux- What you need to know.md | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md diff --git a/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md b/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md new file mode 100644 index 0000000000..079e775ce1 --- /dev/null +++ b/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md @@ -0,0 +1,233 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Access control lists and external drives on Linux: What you need to know) +[#]: via: (https://opensource.com/article/20/3/external-drives-linux) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +Access control lists and external drives on Linux: What you need to know +====== +Learn how to use external drives correctly on Linux. +![Penguin driving a car with a yellow background][1] + +While cloud storage offers many advantages, there's nothing quite like having your data on a physical hard drive. When you save data to a drive, you know exactly where your data is, and it's always available when you need it. When you save data to an external portable drive like a USB thumb drive, it's even better—not only do you know where your data is, but you can take your data with you everywhere you go. If you're new to [Linux][2], or you're trying to use a Linux file system on an external drive, you might find external drives confusing, being prone to permission errors or conflicts, or even losing metadata. + +There are two "right" answers to this: + +### ExFAT + +Formerly, ExFAT was a file system fraught with legal threats from Microsoft because they own the code. They've sued companies and organizations before to defend their ownership of FAT, so it was commonly feared that they could do the same over ExFAT. However, recently. Microsoft made the specifications for ExFAT open source. They didn't provide a driver, unfortunately, but there's an existing drive to make it function on Linux, and, now that developers have access to the full specs, improvements are inevitable. + +The advantage of ExFAT is that it's cross-platform (Windows, Mac, and many portable devices use it), and it's designed without the overhead of file permissions. You can attach a drive formatted as ExFAT to any computer, and all files are available to anyone. Whether that's good or bad depends on your use case, but for portable media, that's often exactly the intent. + +### Access control lists (ACL) + +If you prefer to use a Linux file system on your portable drive, then you can do that, but to make sharing files seamless, you should use access control lists (ACL). + +When you create a file or directory on a drive, there are defaults on your system determining what file permissions it gets. For most cases, those defaults make sense—when you create a file in your home directory, you probably don't want other users to have access to that file. However, when you're creating a file on an external drive, there's a high likelihood that it's because you need to share that file with someone else (even if that someone is you on another computer). + +You can override default permissions for file viewing with an ACL, and you can control default file creation mode by setting a sticky bit. An ACL is a layer of security policies in the extended attributes of directories and files. It allows you to specify exceptions to what the file system permissions indicate. Most notably, this allows you to transcend the single-owner and single-group model of traditional UNIX permissions. + +For instance, while the **seth** (ID 1000) account might own a directory created on my desktop, **seth** (ID 500) on my laptop does not, because the user IDs are different. + +The same could be true for a group. If a directory with group ID 1000 is assigned to a directory on one computer, then a group with an ID 500 or 10922 doesn't have access to it on another computer. But an ACL can add secondary owners and groups to directories and files. + +#### View the current ACL + +Any directory and file on any common Linux filesystem has ACL rules by default. They're stored in extended attributes, a kind of metadata that you don't normally see. + +You can view them in the terminal: + + +``` +$ getfacl ./example +# file: /run/media/drive/example +# owner: seth +# group: users +user::rwx +group::rwx +other::r-- +``` + +The commented lines are just for your reference; they tell you the path, and the owner and group, of the file or directory you're viewing information about. The next lines display the rules applied to the file or directory. In this example, the user permissions are set to **rwx**, the group to **r-x**, and other to **r-x**. These permissions are reflected by a normal filesystem list: + + +``` +$ ls -lA /run/media/drive +drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example +$ id +uid=1000(seth) gid=100(users) groups=100(users)... +``` + +As long as user **seth** (UID 1000) or a member of **group** (GID 100) interacts with the **example** directory, full access is granted. Any other account, however, has only read (**r**) permission. + +#### Setting an ACL + +To modify an ACL, you use the **setfacl** command or use a file manager with ACL support. You can be very specific or very generic when setting your ACL. + +To just modify the filesystem permission settings, you can use either **chmod** or **setfacl**. This is a very generic ACL setting because you're not adding anything to the permissions already available to UNIX from the filesystem specification. + + +``` +$ setfacl --modify g::r example +$ getfacl ./example | grep "group::" +group::r-- +$ ls -l . | grep example +drwxr--r-- 26 seth users 4096 Jan 16 21:04 example +``` + +The same effect is available through **chmod**: + + +``` +$ chmod g+x example +$ getfacl ./example | grep "group::" +group::r-x +$ ls -l . | grep example +drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example +``` + +#### Adding users and groups + +To really benefit from an ACL is to use it for permissions outside the scope of native UNIX permissions. If I'm logged into my desktop as **seth** with user ID 1000, and I know that a directory on my portable drive needs to be usable by **seth** with ID 500 on my laptop, then just declaring **seth** as owner isn't enough because the user IDs aren't the same. + +You can add a user or user ID to an access control list: + + +``` +$ setfacl --modify u:500:rwx example +$ getfacl example +# file: /run/media/drive/example +# owner: seth +# group: users +user::rwx +user:500:rwx +[...] +``` + +A new entry, specific to user ID 500, has been added to the list. Attaching the drive to another Linux or UNIX computer now allows the user with ID 500 to access the **example** folder. + +You can also add users by account name, or groups by either group name or group ID. The IDs are what really count with permissions, though, so if you're in a mixed environment (RHEL servers and Elementary clients, for example), you should verify the user IDs and group IDs lurking behind accounts that seem, on the surface, identical. + +#### Setting default ACL rules + +If you treat access control as a one-time setting, you'll quickly run into problems once your different user accounts start creating files and directories. Any new file or directory created by each user inherits the system's default permissions (and ACL). This means that once laptop user **seth** with ID 500 creates a file in a directory, it could be off-limits to desktop user **seth** with ID 1000 because the owner of the file is set to UID 500. + +A default ACL can be applied to directories so that files and subdirectories created within them inherit the parent ACL. You can set the default ACL of a directory with the **–default** option: + + +``` +$ setfacl --default --modify u:500:rwx example +$ setfacl --default --modify u:1000:rwx example +$ getfacl --omit-header example +user::rwx +user:500:rwx +group::rw- +mask::rwx +other::r-x +default:user::rwx +default:group::rw- +default:group:500:rwx +default:group:1000:rwx +default😷:rwx +default:other::r-x +``` + +When a user creates a new directory within the **example** directory, the inherited ACL is the same as its parent: + + +``` +$ cd example +$ mkdir penguins +$ getfacl --omit-header penguins +user::rwx +group::rw- +group:500:rwx +group:1000:rwx +mask::rwx +other::r-x +default:user::rwx +default:group::rw- +default:group:500:rwx +default:group:1000:rwx +default😷:rwx +default:other::r-x +``` + +This means that any directory or file created inherits the same ACL, so neither user 500 or 1000 are ever excluded from access. + +#### Pragmatic ACL for external drives + +When using a Linux filesystem for external drives, the easy method of ensuring it works with all the users who expect to use the portable drive is to set an ACL on a single top-level directory. + +For instance, assume you have formatted a USB drive called **mydrive** as an ext4 filesystem. You want your account on your laptop and your desktop, as well as your colleague Alice, to be able to access the files. + +First, create a directory at the top level of the drive: + + +``` +$ mkdir /mnt/mydrive/umbrella +``` + +Then apply an ACL to the top-level directory to grant all-important users access: + + +``` +$ setfacl --modify \ +  u:500:rwx,u:1000:rwx,u:alice:rwx \ +  /mnt/mydrive/umbrella +``` + +Finally, apply a default ACL so that all directories and files created within the top-level directory **umbrella** inherit the same default ACL (note that this command uses the short version of **–modify**): + + +``` +$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \ +  /mnt/mydrive/umbrella +``` + +#### Applying defaults to an existing system + +If you need to apply ACL settings to many files that already exist, you can accomplish that with the **find** command. + +First, find all directories and apply ACL rules: + + +``` +$ find /mnt/mydrive/umbrella -type d | \ +  parallel --max-args=6 setfacl \ +  --default -m u:500:rwx,u:1000:rwx,u:alice:rwx +``` + +It's not wise to indiscriminately set all file permissions to executable, so next, find all files and set permissions to **re**. Files that require an executable bit can be set manually or by file extension: + + +``` +$ find /mnt/mydrive/umbrella -type f | \ +  parallel --max-args=6 setfacl \ +  --default -m u:500:rw,u:1000:rw,u:alice:rw +``` + +Adjust the logic of these commands to suit your individual need (don't run a command that removes the executable bit on **/usr**, for instance, or on a directory containing nothing but executable programs). + +### External drives + +Don't let confusion around external drives on Linux get the best of you, and don't limit yourself to traditional UNIX permissions. Put access control lists to work for you, and feel free to use native journaled Linux filesystems on your portable drives. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/external-drives-linux + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background) +[2]: https://opensource.com/resources/linux From cd5c51b6f9995484634f3a2f87704adda863a0c7 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 00:56:32 +0800 Subject: [PATCH 089/218] add done: 20200330 Access control lists and external drives on Linux- What you need to know.md --- ...200330 Why I switched from Mac to Linux.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 sources/tech/20200330 Why I switched from Mac to Linux.md diff --git a/sources/tech/20200330 Why I switched from Mac to Linux.md b/sources/tech/20200330 Why I switched from Mac to Linux.md new file mode 100644 index 0000000000..95561b6b45 --- /dev/null +++ b/sources/tech/20200330 Why I switched from Mac to Linux.md @@ -0,0 +1,68 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Why I switched from Mac to Linux) +[#]: via: (https://opensource.com/article/20/3/mac-linux) +[#]: author: (Lee Tusman https://opensource.com/users/leeto) + +Why I switched from Mac to Linux +====== +After 25 years, Lee made the switch to Linux and couldn't be happier. +Here's what he uses. +![Code going into a computer.][1] + +In 1994, my family bought a Macintosh Performa 475 as a home computer. I had used Macintosh SE computers in school and learned to type with [Mavis Beacon Teaches Typing][2], so I've been a Mac user for well over 25 years. Back in the mid-1990s, I was attracted to its ease of use. It didn't start with a DOS command prompt; it opened to a friendly desktop. It was playful. And even though there was a lot less software for Macintosh than PCs, I thought the Mac ecosystem was better, just on the strength of KidPix and Hypercard, which I still think of as the unsurpassed, most intuitive _creative stack_. + +Even so, I still had the feeling that Mac was an underdog compared to Windows. I remember thinking the company could disappear one day. Flash-forward decades later, and Apple is a behemoth, a trillion-dollar company. But as it evolved, it changed significantly. Some changes have been for the better, such as better stabilization, simpler hardware choices, increased security, and more accessibility options. Other changes annoyed me—not all at once, but slowly. Most significantly, I am annoyed by Apple's closed ecosystem—the difficulty of accessing photos without iPhoto; the necessity of using iTunes; and the enforced bundling of the Apple store ecosystem even when I don't want to use it. + +Over time, I found myself working largely in the terminal. I used iTerm2 and the [Homebrew][3] package manager. I couldn't get all my Linux software to work, but much of it did. I thought I had the best of both worlds: the macOS graphical operating system and user interface alongside the ability to jump into a quick terminal session. + +Later, I began using Raspberry Pi computers booting Raspbian. I also collected a number of very old laptops rescued from the trash at universities, so, by necessity, I decided to try out various Linux distros. While none of them became my main machine, I started to really enjoy using Linux. I began to consider what it would be like to try running a Linux distro as my daily driver, but I thought the Macbook's comfort and ease, especially the hardware's size and weight, would be hard to find in a non-Mac laptop. + +## Time to make the switch? + +About two years ago, I began using a Dell for work. It was a larger laptop with an integrated GPU, and dual-booted Linux and Windows. I used it for game development, 3D modeling, some machine learning, and basic programming in C# and Java. I considered making it my primary machine, but I loved the portability of my Macbook Air, and continued to use that as well. + +Last fall, I started to notice my Air was running hot, and the fan was coming on more often. My primary machine was starting to show its age. For years, I used the Mac's terminal to access Darwin's Unix-like operating system, and I was spending more and more time bouncing between the terminal and my web browser. Was it time to make the switch? + +I began exploring the possibilities for a Macbook-like Linux laptop. After doing some research, reading reviews and message boards, I went with the long-celebrated Dell XPS 13 Developer Edition 7390, opting for the 10th Generation i7. I chose it because I love the feel of the Macbook (and especially the slim Macbook Air), and reviews of the XPS 13 suggested it seemed it was similar, with really positive reviews of the trackpad and keyboard. + +Most importantly, it came loaded with Ubuntu. While it's easy enough to get a PC, wipe it, and install a new Linux distro, I was attracted to the cohesive operating system and hardware, but one that allowed a lot of the customization we know and love in Linux. So when there was a sale, I took the plunge and purchased it. + +## What it's like to run Linux daily + +I've been using the XPS 13 for three months and my dual-booted Linux work laptop for two years. At first, I thought I'd want to spend more time finding an alternate desktop environment or window manager that was more Mac-like, such as [Enlightenment][4]. I tried several, but I have to say, I like the simplicity of running [GNOME][5] out of the box. For one thing, it's minimal; there's not much GUI to get caught up in. In fact, it's intuitive and the [overview][6] takes only a couple minutes to read.  + +I can access my applications through the application dash bar or a grid button to get to the application view. To access my file system, I click on the **Files** icon in the dash. To open the GNOME terminal, I type **Ctrl+Alt+T** or just **Alt+Tab** to switch between an open application and an open terminal. It's also easy to define your own [custom hotkey shortcuts][7]. + +Beyond this, there's not much else to say. Unlike the Mac's desktop, there's not a lot to get lost in, which means there's less to distract me from my work or the applications I want to run. I didn't realize all the options or how much time I spent navigating windows on my Mac. In Linux, there are just files, applications, and the terminal. + +I installed the [i3 tiling window manager][8] to do a test run. I had a few issues configuring it because I type in [Dvorak][9], and i3 doesn't adapt to the alternate keyboard configuration. I think with more effort, I could figure out a new keyboard mapping in i3, but the main thing I was looking for was simple tiling. + +I looked up GNOME's tiling capabilities and was pleasantly surprised. You press the **Super** key (for me, it's the key with the Windows logo—which I should cover with a sticker!) and then a modifier key. For example, pressing **Super+Left** moves your current window to a tile on the left side of the screen. **Super+Right** moves to the right half. **Super+Up** maximizes the current window. **Super+Down** reverts to the previous size. You can move between app windows with **Alt+Tab**. This is all default behavior and can be customized in the Keyboard settings. + +Plugging in headphones or connecting to HDMI works the way you expect. Sometimes, I open the Sound settings to switch between the HDMI sound output or my external audio cable, just as I would on a Mac or PC. The trackpad is responsive, and I haven't noticed any difference from the Macbook's. When I plug in a three-button mouse, it works instantly, even with my Bluetooth mouse and keyboard. + +### Software + +I installed Atom, VLC, Keybase, Brave Browser, Krita, Blender, and Thunderbird in a matter of minutes. I installed other software with the Apt package manager in the terminal (as normal), which offers many more packages than the Homebrew package manager for macOS. + +### Music + +I have a variety of options for listening to music. I use Spotify and [PyRadio][10] to stream music. [Rhythmbox][11] is installed by default on Ubuntu; the simple music player launches instantly and without any bloat. Simply click on the menu, choose **Add Music**, and navigate to a directory of audio tracks (it searches recursively). You can also stream podcasts or online radio easily. + +### Text and PDFs + +I tend to write in Markdown in [Neovim][12] with some plugins, then convert my document using Pandoc to whatever final format is needed. For a nice Markdown editor with preview, I downloaded [Ghostwriter][13], a minimal-focus writing application. + +If someone sends me a Microsoft Word document, I can open it using the default LibreOffice Writer application. + +Occasionally, I have to sign a document. This is easy with macOS's Preview application and my signature in PNG format, and I needed a Linux equivalent. I found that the default PDF viewer app didn't have the annotation tools I needed. The LibreOffice Draw program was acceptable but not particularly easy to use, and it occasionally crashed. Based on some research, I installed [Xournal][14], which has the simple annotation tools I need to add dates, text, and my signature and is fairly comparable to Mac's Preview app. It works exactly as needed. + +### Importing images from my phone + +I have an iPhone. To get my images off the phone, there are a number of methods to sync and access your files. If you have a different phone, your process may be different. Here's my method: + + 1. Install gvfs-backends with **sudo apt install gvfs-backends**, which is part of the GNO \ No newline at end of file From 7159a7d62cb510c9fd1fb6be2486dc974a9f2577 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 01:01:44 +0800 Subject: [PATCH 090/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200330=20SASE?= =?UTF-8?q?=20might=20be=20better=20than=20VPNs=20for=20quickly=20ramping?= =?UTF-8?q?=20up=20remote=20access?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md --- ...Ns for quickly ramping up remote access.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md diff --git a/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md b/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md new file mode 100644 index 0000000000..10f3abab83 --- /dev/null +++ b/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md @@ -0,0 +1,98 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (SASE might be better than VPNs for quickly ramping up remote access) +[#]: via: (https://www.networkworld.com/article/3534501/sase-might-be-better-than-vpns-for-quickly-ramping-up-remote-access.html) +[#]: author: (Linda Musthaler https://www.networkworld.com/author/Linda-Musthaler/) + +SASE might be better than VPNs for quickly ramping up remote access +====== +A secure access service edge model can quickly grow remote-worker capacity without requiring enterprises to deploy their own new VPN gear. +Getty Images + +The global pandemic now hitting almost every corner of the world is forcing countless millions of people to work from home. In one sense, we’re fortunate to now have the technology that allows us to do that. Between broadband Internet access in the home, corporate VPNs, team workspaces and videoconferencing services, many people can continue to do their jobs as effectively as if they were in their regular office environment. + +That doesn’t mean it’s all smooth sailing for the IT departments that have to enable and support those critical work-from-home services. Depending on the type of network architecture a company has, it can be relatively easy or significantly challenging to support tens of thousands of employees now suddenly working from home. + +[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] + +I recently talked with Mark Casey, CEO of the network infrastructure services provider [Apcela][2], who conveyed the challenges that many large enterprises have. It’s these companies that typically still have a traditional hub-and-spoke kind of WAN anchored in a physical data center. Corporate traffic is backhauled from branch and remote locations (like workers’ homes) to a centralized [data center][3] to pass through a security stack before it is sent to the internet or to cloud services. Unfortunately, this legacy network architecture doesn’t adapt well to the dramatically different traffic patterns resulting from a massive surge in telework. + +When you look at the [VPN][4] architecture in this environment, it’s largely dominated by Cisco with its AnyConnect solution that pairs with the vendor’s ASA [firewall][5] products. Countless large enterprises have these hardware appliances in their on-premises data centers. Whether it’s Cisco equipment or some other vendor’s, the VPN/firewall combination is a real workhorse under normal conditions, but the vast increase in remote workers is causing a strain. + +**VPN capacity is strained** + +A home-based worker brings up a VPN connection that creates a secure tunnel to take him straight into the data center. This might be fine when the company expects 10% to 20% of its employees to work remotely at any given time, but now the numbers might approach 50% or 70%. This creates contention for resources and a poor VPN experience for all. What’s more, workers are routing a bunch of internet traffic to the data center along with traffic destined for on-premise applications like [Microsoft Office 365][6]. This is the landscape that Casey sees every day as he engages with large enterprise organizations. + +“We’ve talked to a number of companies recently that say they need to expand their VPN capacity but the legacy network architecture is holding them back. [Cisco][7], Palo Alto and others are offering free VPN client licenses but the enterprises still need to expand the VPN terminating appliances. It’s hard to quickly scale capacity in this environment,” says Casey. “Whether it’s coronavirus or some other catalyst that puts stress on the legacy network environment, we advocate that enterprises should diversify and shift portions of their network architecture to the cloud. This will give them much more flexibility to provide security and remote access services to their workforce in the long run.” + +[][8] + +**SASE for flexibility and capacity on demand** + +Casey points to the [Secure Access Service Edge][9] (SASE, pronounced “sassy”) framework as a model for re-architecting the enterprise network. SASE is Gartner’s name for a combination of [SD-WAN][10] capabilities with a number of security services that are primarily delivered through a cloud-based delivery model. + +Gartner defines the service edge as an offering that supports the access needs of digital enterprises by combining SD-WAN functions with network security services such as secure web gateway (SWG), cloud access security broker (CASB), and cloud-based firewall. In short, a SASE offering helps simplify network management by offering highly customizable policy-based control that can be tailored by user identity, session context, and application needs for performance and security – and it’s delivered from the cloud.  + +Casey explains the concept of a service edge with a geographical example. “Suppose an employee is VPNing into his corporate network from his New York area home, and the data center happens to be in Chicago. Ordinarily the traffic would all be directed to Chicago, but if he’s accessing internet content, it would be optimal to egress that traffic via secure web gateway much more locally to where the user is. It’s better to go to a site in New York where the VPN terminates on a local firewall, and there’s a secure web gateway there so the Internet traffic can be offloaded there instead of backhauling it to Chicago. This site in New York is called the service edge.” + +Casey continues his explanation: “A virtualized version of a company’s firewall sits in the hub. The VPN terminates on the VPN concentrator in the local hub and then the traffic is routed appropriately. That traffic going to the internet goes out through secure web gateway and that traffic that's destined for an application in the data center goes over a private network inside the security parameters. This is essentially another tunnel back to the data center. And that's a great use case for this whole concept of SASE, which is to lift some of your core security components and move them out to the cloud.” + +With the word cloud, people tend to think of AWS or Azure or Google Cloud Platform, but Casey gives cloud a broader definition. “Cloud is Software as a Service, like Salesforce and ServiceNow,” says Casey. “If you’re an enterprise, cloud is an Equinix data center. Cloud is anything that’s not you, and it’s delivered as a service.” + +**The service edge is a powerful hub** + +In Apcela’s parlance, a service edge is called an application hub, or AppHub. Other companies call them communication hubs, cloud hubs, or simply Points of Presence (PoPs). Regardless of the name, the concept is the same. + +These hubs consist of racks of switching and routing equipment that are typically deployed in carrier-neutral co-location centers. Then these data centers are interconnected with high-capacity, low-latency circuits that create a high-performance core network. SD-WAN, VPN and security stacks are typically deployed in the hubs. At the edge of this network, an enterprise can directly connect its own data centers, branch offices, remote and mobile users, and even third-party partners. The leading SASE providers have built hubs, or PoPs, around the world so that organizations and their workers can connect to the closest hub to obtain the communication and security services they need. Each enterprise chooses what services it wants to utilize. + +When considering how to deploy security as a virtual service, Casey says, “You don't necessarily want to put all the security in AWS because then it will work great with AWS, but it won't work for GCP or Azure, and it certainly won't help you for your SaaS applications. So having this hub environment that sits between the application clouds – Salesforce, Office 365, Workday, etc. – and the users and enterprise locations is the perfect location to put these security services. And because the hubs are essentially an Infrastructure as a Service, you're not stuck with having to move to some proprietary cloud-based platform.” + +SASE infrastructure is essentially on demand, so it’s fairly easy for new customers to adopt it. “It’s not complicated,” says Casey. “We have to find a place, somewhere in the world, and cross connect back into an enterprise’s infrastructure to deliver private connectivity. But it's all very cloud-like. It takes the agility of cloud and the speed of cloud and enables you to act quickly.” + +**SASE has VPN capacity pre-built** + +The SASE model allows companies to expand their VPN platforms easily because the capability is all pre-built. Once the service is turned on, the company is well positioned to support thousands of new home-based workers. + +I asked Casey about a realistic timeframe for companies that are new to the SASE approach before they can expect to be up and running with expanded VPN capacity. “I can only speak to the solution Apcela offers, of course, but I’d say it’s a matter of days to weeks, but certainly not months,” he says. “In our case, it depends on their security platform because we leverage virtualized network functions on the security side, so the whole concept of procuring and shipping equipment goes away.” Other vendors might do the deployment in different ways. + +Contrast this approach to the legacy model of installing new hardware in a data center to provide more capacity. By the time the company orders the hardware, gets it shipped to the data center, and then installed and configured, two or three months might pass. + +Another benefit of the SASE framework is that traffic travels over a private core network rather than the public Internet. “The Internet shouldn’t become your new [WAN][11] – certainly not for business and mission-critical platforms. You need a specialized sort of [MPLS][12]-like network for your cloud apps, which is what a SASE platform does,” says Casey. “Traffic is taken off the Internet at the secure edge, put onto a private secure network and routed directly to the appropriate SaaS or IaaS platform data center.” + +Having a private core network is especially important at this time because the public Internet is under great strain due to the traffic and content pattern shifts now that so many people are staying home or working from home. The [strain is so bad][13] that companies like Facebook and Netflix have been asked by the European Commissioner for internal market and services to throttle their services to consume less bandwidth. As Casey says, “You don’t want your corporate traffic to compete for bandwidth against Netflix and all these different videoconferencing services.” + +If your organization is struggling with ramping up work-from-home capacity in a hurry, consider how a SASE service might help you. + +Join the Network World communities on [Facebook][14] and [LinkedIn][15] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534501/sase-might-be-better-than-vpns-for-quickly-ramping-up-remote-access.html + +作者:[Linda Musthaler][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Linda-Musthaler/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/newsletters/signup.html +[2]: https://www.apcela.com/ +[3]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html +[4]: https://www.networkworld.com/article/3268744/understanding-virtual-private-networks-and-why-vpns-are-important-to-sd-wan.html +[5]: https://www.networkworld.com/article/3230457/what-is-a-firewall-perimeter-stateful-inspection-next-generation.html +[6]: https://techcommunity.microsoft.com/t5/office-365-blog/how-to-quickly-optimize-office-365-traffic-for-remote-staff-amp/ba-p/1214571; +[7]: https://blogs.cisco.com/security/cisco-expands-free-security-offerings-to-help-with-rise-in-remote-workers +[8]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[9]: https://www.networkworld.com/article/3516503/it-pros-need-to-weigh-in-on-that-sassy-security-model.html +[10]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html +[11]: https://www.networkworld.com/article/3248989/what-is-a-wan-wide-area-network-definition-and-examples.html +[12]: https://www.networkworld.com/article/2297171/network-security-mpls-explained.html +[13]: https://mashable.com/article/eu-netflix-standard-definition-coronavirus/ +[14]: https://www.facebook.com/NetworkWorld/ +[15]: https://www.linkedin.com/company/network-world From 2e820584744ef71c158d3a0e7fb6dc1313f6d01b Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 01:02:28 +0800 Subject: [PATCH 091/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200330=20Know?= =?UTF-8?q?=20the=20benefits=20of=20cloud-native=20networking=20for=20SASE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md --- ...its of cloud-native networking for SASE.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md diff --git a/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md b/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md new file mode 100644 index 0000000000..e4c38f352e --- /dev/null +++ b/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Know the benefits of cloud-native networking for SASE) +[#]: via: (https://www.networkworld.com/article/3534720/know-the-benefits-of-cloud-native-networking-for-sase.html) +[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) + +Know the benefits of cloud-native networking for SASE +====== +Shlomo Kramer, CEO of Cato Networks discusses the benefits cloud-native networking brings to SASE +Metamorworks / Getty Images + +Gartner has positioned secure access service edge (SASE) as the next wave of SD-WANs. While most industry people I talk to agree on the concept of security and networking being brought together, there is some debate surrounding cloud-native versus cloud-managed. + +To get a better understanding of why cloud native matters, I sat down with Shlomo Kramer, CEO of Cato Networks, which designed its SASE service from the ground up for cloud delivery. + +**Last year Gartner coined the term SASE, do you agree or disagree with their premise?** + +[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] + +Well I definitely agree.  The manifesto that Cato was founded on was the vision of converging network transport and network security and delivering it as a cloud service. The argument as to why you need SASE is topological in nature because traffic patterns have changed. Network traffic used to be inward bound because people sat at their desks, using corporate workstations and connecting to enterprise applications that resided in the company data centers. + +That meant security was effectively a hard shell placed around a soft core.  Security was applied at the edge and protected all the physical locations behind it. Today, the traffic patterns have changed, and the security needs to be applied everywhere.  Applications are built in AWS as well as on-premises, workers are in the office, at home and in the hotel or anywhere.  So now corporate assets are everywhere so the hard shell no longer works.  Security needs to be different and be integrated everywhere so I absolutely agree with the concept of SASE. + +**What are some other challenges with legacy technologies like MPLS and security appliances?** + +**T**he problems with MPLS are well documented, so I won’t spend too much time on this topic other than say every company we talk to wants to move off of MPLS because of high costs, long deployment times and a lack of agility.  MPLS does nothing for mobile users or cloud connectivity so organizations need to deploy VPN servers, cloud interconnects and other technologies to connect all of their company resources. + +[][2] + +On the security side, branch appliances have been an enormous problem that we as an industry accepted as the only possible solution.  Appliances need to be procured, deployed, maintained, upgraded and retired. All of which takes time and effort. They need to be integrated with one another, which requires more time and skills. Most appliances are managed from separate management consoles making operations complex and challenging.  Over time, more appliances are added, which raises the complexity level.  Also, when traffic jumps or too many features are turned on, upgrades are often required outside budget cycles.  Security professionals often lag behind when applying software patches because updating appliances is risky and needs to be carefully planned, leaving the company at risk. + +I can go on, but _appliances_ as an architecture involve too many headaches and too much cost for companies looking to become leaner and more agile. And by appliances, I also mean VNFs and virtual appliances. It's the same story again. You still need to deploy, manage and scale them. Appliances are a poor choice not because of anyone's solution's limitations but because of the architecture itself. + +**What benefit do cloud-native platforms provide?** + +For Gur (Co-Founder of Cato, Gur Shatz) and myself, who came from the security and networking worlds, we were well acquainted with these problems. As we thought about what the right architecture would be moving forward, the cloud seemed like the obvious choice. We had already seen how cloud computing changed markets for data centers, servers, storage, and applications. We thought the cloud could do the same for security and networking.  + +Like AWS for data centers and servers, we wanted to create a utility that would secure and network the complete enterprise, not just sites, but also remote users, cloud data centers, cloud applications, and third-party devices. We wanted enterprises to "tap" into this utility and instantly receive all the advanced security and networking services for the entire organization. It's why we called our SD-WAN device the "Cato Socket," like an electrical socket you plug into. This vision is in line with the SASE definition. + +Instead of appliances, we move the “heavy lifting” involved in security and networking into a global, distributed, cloud-native software platform. By cloud-native software, we mean several things.  We actually wrote a [blog on this topic][3] that talks about the value of cloud-native.  There are many benefits but in particular, multi-tenancy is game-changing. This allows cloud providers to amortize costs across their customer base, allowing them to deliver offerings at a price point unmatched by one based on purchasing appliances for customers.  + +This platform runs our single-pass, security and networking stack that performs all security inspections in parallel. A packet comes in, depacketized and decrypted by our software that then performs all the necessary security inspections in parallel before sending the packet on.  This is an incredible change from the way appliances work today. Today, each appliance must depacketize and decrypt packets, run a deep packet inspection (DPI) engine to understand the packet, apply the specific security inspections, and repacketize and re-encrypt for the next appliance to do the same.   + +**You’ve also stated that a global private network is necessary, why is that?** + +As for the network, enterprises require predictable, low latency performance everywhere all the time. That's simply not possible with Internet routing today when broadband is used. While the problems of unpredictable latency across global routes or in under-developed Internet regions is well known even within Internet regions, we've seen specific routes have problems.   + +How do you overcome latency AND the global connectivity costs of MPLS? Our answer was to leverage the massive build-out in global IP connectivity. By buying massive wholesale SLA-backed capacity across multiple IP backbones, and then dynamically selecting the best backbone at each hop across our network, we could deliver global, low-latency connections at a fraction of the cost of MPLS.    + +**The SASE industry is currently filled with start-ups and smaller vendors.  Why are the big incumbents struggling to make this shift?** + +** ** + +I think it should be evident by now, but existing appliance-based solutions simply can't be converted to become cloud-native. Re-engineering a platform for the cloud requires massive investments in R&D, which will come at the expense of existing and very successful product lines, so beyond engineering, there is also an internal conflict to overcome.    + +And that's why the "big incumbents," as you put it, are so threatened by SASE. We all recognize that SASE is the future, but to get that to that future, many of the established solution providers will need to disrupt their existing businesses. That's not easy to do, but what they can do is market.  + +We, as an industry, are seeing vendors trying to capitalize on SASE by rebranding their solutions as SASE offerings. Some are appliances without cloud capabilities; others are security services without networking capabilities. For IT to tell the difference between a true SASE platform and a "fake" one, the litmus test is simple: If the center of gravity is in the appliances. If the offer lacks SD-WAN and if there is more than one management console. It's not SASE, and it's not the future. It's a repackaging of the past.   + +Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534720/know-the-benefits-of-cloud-native-networking-for-sase.html + +作者:[Zeus Kerravala][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Zeus-Kerravala/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/newsletters/signup.html +[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[3]: https://www.catonetworks.com/blog/the-cloud-native-network-what-it-means-and-why-it-matters/ +[4]: https://www.facebook.com/NetworkWorld/ +[5]: https://www.linkedin.com/company/network-world From c121b397c0a6f4bf088594c5aa4247541d45a8e2 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 03:50:19 +0800 Subject: [PATCH 092/218] Revert "translating" This reverts commit 627e8617369fe7b7eafc72c2bb964f9603451574. --- .../20190702 One CI-CD pipeline per product to rule them all.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190702 One CI-CD pipeline per product to rule them all.md b/sources/tech/20190702 One CI-CD pipeline per product to rule them all.md index 0fd04ee54a..2a7fcb31de 100644 --- a/sources/tech/20190702 One CI-CD pipeline per product to rule them all.md +++ b/sources/tech/20190702 One CI-CD pipeline per product to rule them all.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (hj24) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 73f97bac4f1fe511917e02b8622727c08fc620c4 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 31 Mar 2020 08:23:39 +0800 Subject: [PATCH 093/218] translated --- ...309 Fish - A Friendly Interactive Shell.md | 194 ------------------ ...309 Fish - A Friendly Interactive Shell.md | 194 ++++++++++++++++++ 2 files changed, 194 insertions(+), 194 deletions(-) delete mode 100644 sources/tech/20200309 Fish - A Friendly Interactive Shell.md create mode 100644 translated/tech/20200309 Fish - A Friendly Interactive Shell.md diff --git a/sources/tech/20200309 Fish - A Friendly Interactive Shell.md b/sources/tech/20200309 Fish - A Friendly Interactive Shell.md deleted file mode 100644 index b091fea171..0000000000 --- a/sources/tech/20200309 Fish - A Friendly Interactive Shell.md +++ /dev/null @@ -1,194 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fish – A Friendly Interactive Shell) -[#]: via: (https://fedoramagazine.org/fish-a-friendly-interactive-shell/) -[#]: author: (Michal Konečný https://fedoramagazine.org/author/zlopez/) - -Fish – A Friendly Interactive Shell -====== - -![Fish — A Friendly Interactive Shell][1] - -Are you looking for an alternative to bash? Are you looking for something more user-friendly? Then look no further because you just found the golden fish! - -Fish (friendly interactive shell) is a smart and user-friendly command line shell that works on Linux, MacOS, and other operating systems. Use it for everyday work in your terminal and for scripting. Scripts written in fish are less cryptic than their equivalent bash versions. - -### Fish’s user-friendly features - - * **Suggestions** -Fish will suggest commands that you have written before. This boosts productivity when typing same commands often. - * **Sane scripting** -Fish avoids using cryptic characters. This provides a clearer and friendlier syntax. - * **Completion based on man pages** -Fish will autocomplete parameters based on the the command’s man page. - * **Syntax highlighting** -Fish will highlight command syntax to make it visually friendly. - - - -### Installation - -#### Fedora Workstation - -Use the _dnf_ command to install fish: - -``` -$ sudo dnf install fish -``` - -Make fish your default shell by installing the _util-linux-user_ package and then running the _chsh_ (change shell) command with the appropriate parameters: - -``` -$ sudo dnf install util-linux-user -$ chsh -s /usr/bin/fish -``` - -You will need to log out and back in for this change to take effect. - -#### Fedora Silverblue - -Because this is not GUI application, you will need to layer it using _rpm-ostree_. Use the following command to install fish on Fedora Silverblue: - -``` -$ rpm-ostree install fish -``` - -On Fedora Silverblue you will need to reboot your PC to switch to the new ostree image. - -If you want to make fish your main shell on Fedora Silverblue, the easiest way is to update the _/etc/passwd_ file. Find your user and change _/bin/bash_ to _/usr/bin/fish_. - -You will need [root privileges][2] to edit the _/etc/passwd_ file. Also you will need to log out and back in for this change to take effect. - -### Configuration - -The per-user configuration file for fish is _~/.config/fish/config.fish_. To make configuration changes for all users, edit _/etc/fish/config.fish_ instead. - -The per-user configuration file must be created manually. The installation scripts will not create _~/.config/fish/config.fish_. - -Here are a couple configuration examples shown alongside their bash equivalents to get you started: - -#### Creating aliases - - * _~/.bashrc_: alias ll='ls -lh' - * _~/.config/fish/config.fish_: alias ll='ls -lh' - - - -#### Setting environment variables - - * _~/.bashrc_: export PATH=$PATH:~/bin - * _~/.config/fish/config.fish_: set -gx PATH $PATH ~/bin - - - -### Working with fish - -When fish is configured as your default shell, the command prompt will look similar to what is shown in the below image. If you haven’t configured fish to be your default shell, just run the _fish_ command to start it in your current terminal session. - -![][3] - -As you start typing commands, you will notice the syntax highlighting: - -![][4] - -Cool, isn’t it? 🙂 - -You will also see commands being suggested as you type. For example, start typing the previous command a second time: - -![][5] - -Notice the gray text that appears as you type. The gray text is fish suggesting the command you wrote before. To autocomplete it, just press **CTRL+F**. - -Get argument suggestions based on the preceding command’s man page by typing a dash (**–**) and then the **TAB** key: - -![][6] - -If you press **TAB** once, it will show you the first few suggestions (or every suggestion, if there are only a few arguments available). If you press **TAB** a second time, it will show you all suggestions. If you press **TAB** three times consecutively, it will switch to interactive mode and you can select an argument using the arrow keys. - -Otherwise, fish works similar to most other shells. The remaining differences are well documented. So it shouldn’t be difficult to find other features that you may be interested in. - -### Make fish even more powerful - -Make the fish even more powerful with [powerline][7]. Powerline adds command execution time, colored git status, current git branch and much more to fish’s interface. - -Before installing powerline for fish, you must install [Oh My Fish][8]. Oh My Fish extends fish’s core infrastructure to enable the installation of additional plugins. The easiest way to install Oh My Fish is to use the _curl_ command: - -``` -> curl -L https://get.oh-my.fish | fish -``` - -If you don’t want to pipe the installation commands directly to _curl_, see the installation section of Oh My Fish’s [README][9] for alternative installation methods. - -Fish’s powerline plugin is [bobthefish][7]. Bobthefish requires the _powerline-fonts_ package. - -**On Fedora Workstation**: - -``` -> sudo dnf install powerline-fonts -``` - -**On Fedora Silverblue**: - -``` -> rpm-ostree install powerline-fonts -``` - -On Fedora Silverblue you will have to reboot to complete the installation of the fonts. - -After you have installed the _powerline-fonts_ package, install _bobthefish_: - -``` -> omf install bobthefish -``` - -Now you can experience the full awesomeness of fish with powerline: - -![][10] - -### Additional resources - -Check out these web pages to learn even more about fish: - - * [Official page][11] - * [Documentation][12] - * [Tutorial][13] - * [FAQ][14] - * [Web playground][15] - * [Mailing lists][16] - * [GitHub][17] - - - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fish-a-friendly-interactive-shell/ - -作者:[Michal Konečný][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/zlopez/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/03/fish-816x345.jpg -[2]: https://fedoramagazine.org/howto-use-sudo/ -[3]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-00-35.png -[4]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-19-24.png -[5]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-25-31.png -[6]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-58-07.png -[7]: https://github.com/oh-my-fish/theme-bobthefish -[8]: https://github.com/oh-my-fish/oh-my-fish -[9]: https://github.com/oh-my-fish/oh-my-fish/blob/master/README.md#installation -[10]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-15-38-07.png -[11]: https://fishshell.com/ -[12]: https://fishshell.com/docs/current/index.html -[13]: https://fishshell.com/docs/current/tutorial.html -[14]: https://fishshell.com/docs/current/faq.html -[15]: https://rootnroll.com/d/fish-shell/ -[16]: https://sourceforge.net/projects/fish/lists/fish-users -[17]: https://github.com/fish-shell/fish-shell/ diff --git a/translated/tech/20200309 Fish - A Friendly Interactive Shell.md b/translated/tech/20200309 Fish - A Friendly Interactive Shell.md new file mode 100644 index 0000000000..8f786287ad --- /dev/null +++ b/translated/tech/20200309 Fish - A Friendly Interactive Shell.md @@ -0,0 +1,194 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Fish – A Friendly Interactive Shell) +[#]: via: (https://fedoramagazine.org/fish-a-friendly-interactive-shell/) +[#]: author: (Michal Konečný https://fedoramagazine.org/author/zlopez/) + +Fish – 一个友好的交互式 Shell +====== + +![Fish — A Friendly Interactive Shell][1] + +你是否正在寻找 bash 的替代品?你是否在寻找更人性化的东西?再往前看看,因为你刚发现了 fish! + +Fish(友好的交互式 shell)是一个智能且用户友好的命令行 shell,可在 Linux、MacOS 和其他操作系统上运行。将其用于终端的日常工作和脚本编写。用 fish 编写的脚本比相同的 bash 版本具有更少的神秘性。 + +### Fish 的用户友好功能 + + * **建议** +Fish 会建议你之前写过的命令。当经常输入相同命令时,这可以提高生产率。 + * **健全的脚本** +Fish 避免使用隐秘字符。这提供了更清晰和更友好的语法。 + * **基于手册页的补全** +Fish 会根据命令的手册页自动补全参数。 + * **语法高亮** +Fish 会高亮显示命令语法以使其在视觉上友好。 + + + +### 安装 + +#### Fedora 工作站 + +使用 _dnf_ 命令安装 fish: + +``` +$ sudo dnf install fish +``` + +安装 _util-linux-user_ 包,然后使用适当的参数运行 _chsh_(更改 shell 程序)命令,将 fish 设置为默认 shell 程序: + +``` +$ sudo dnf install util-linux-user +$ chsh -s /usr/bin/fish +``` + +你需要注销然后重新登录,更改才能生效。 + +#### Fedora Silverblue + +由于它不是 GUI 应用,因此你需要使用 _rpm-ostree_ 安装。使用以下命令在 Fedora Silverblue 上安装 fish: + +``` +$ rpm-ostree install fish +``` + +在 Fedora Silverblue 上,你需要重启 PC 才能切换到新的 ostree 镜像。 + +如果你想在 Fedora Silverblue 用 fish 作为主要 shell,最简单的方法是更新 _/etc/passwd_ 文件。找到你的用户,并将 _/bin/bash_ 更改为 _/usr/bin/fish_。 + +、你需要 [root 权限][2]来编辑 _/etc/passwd_ 文件。另外,你需要注销并重新登录才能使更改生效。 + +### 配置 + +fish 的用户配置文件在 _~/.config/fish/config.fish_。要更改所有用户的配置,请编辑 _/etc/fish/config.fish_。 + +每个用户的配置文件必须手动创建。安装脚本不会创建 _〜/ .config / fish / config.fish_。 + +以下是几个配置示例以及它们的 bash 等效项,以帮助你入门: + +#### 创建别名 + + * _~/.bashrc_: alias ll='ls -lh' + * _~/.config/fish/config.fish_: alias ll='ls -lh' + + + +#### 设置环境变量 + + * _~/.bashrc_: export PATH=$PATH:~/bin + * _~/.config/fish/config.fish_: set -gx PATH $PATH ~/bin + + + +### 使用 fish 工作 + +将 fish 配置为默认 shell 程序后,命令提示符将类似于下图所示。如果尚未将 fish 配置为默认 shell,只需运行 _fish_ 命令以在当前终端会话中启动。 + +![][3] + +在你开始输入命令时,你会注意到语法高亮显示: + +![][4] + +很酷,不是吗?🙂 + +你还将在输入时看到建议的命令。例如,再次开始输入上一个命令: + +![][5] + +注意输入时出现的灰色文本。灰色文本显示建议之前编写的命令。要自动补全,只需按 **CTRL+F**。 + +通过输入连接号(**–**)然后使用 **TAB** 键,它会根据前面命令的手册页获取参数建议: + +![][6] + +如果你按一次 **TAB**,它将显示前几个建议(或所有建议,如果只有少量参数可用)。如果再次按 **TAB**,它将显示所有建议。如果连续三次按 **TAB**,它将切换到交互模式,你可以使用箭头键选择一个参数。 + +除此之外,fish 的工作与大多数其他 shell 相似。其他差异已经写在文档中。因此,找到你可能感兴趣的其他功能应该不难。 + +### 让 fish 变得更强大 + +使用 [powerline][7] 使 fish 变得更强大。Powerline 将命令执行时间、彩色化 git 状态、当前 git 分支等添加到了 fish 的界面中。 + +在安装 powerline 之前,你必须先安装 [Oh My Fish][8]。Oh My Fish 扩展了 fish 的核心基础架构,以支持安装其他插件。安装 Oh My Fish 的最简单方法是使用 _curl_ 命令: + +``` +> curl -L https://get.oh-my.fish | fish +``` + +如果你不想直接将安装命令管道传给 _fish_,请参见 Oh My Fish 的 [README][9] 的安装部分,以了解其他安装方法。 + +Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 _powerline-fonts_ 包。 + +**在Fedora工作站上**: + +``` +> sudo dnf install powerline-fonts +``` + +**在 Fedora Silverblue 上**: + +``` +> rpm-ostree install powerline-fonts +``` + +在 Fedora Silverblue 上,你必须重启以完成字体的安装。 + +安装 _powerline-fonts_ 之后,安装 _bobthefish_: + +``` +> omf install bobthefish +``` + +现在你可以通过 powerline 体验 fish 的全部奇妙之处: + +![][10] + +### 额外的资源 + +查看这些网页,了解更多 fish 内容: + + * [官网][11] + * [文档][12] + * [教程][13] + * [常见问题][14] + * [在线体验][15] + * [邮件列表][16] + * [GitHub][17] + + + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/fish-a-friendly-interactive-shell/ + +作者:[Michal Konečný][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/zlopez/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2020/03/fish-816x345.jpg +[2]: https://fedoramagazine.org/howto-use-sudo/ +[3]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-00-35.png +[4]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-19-24.png +[5]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-25-31.png +[6]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-14-58-07.png +[7]: https://github.com/oh-my-fish/theme-bobthefish +[8]: https://github.com/oh-my-fish/oh-my-fish +[9]: https://github.com/oh-my-fish/oh-my-fish/blob/master/README.md#installation +[10]: https://fedoramagazine.org/wp-content/uploads/2020/03/Screenshot-from-2020-03-03-15-38-07.png +[11]: https://fishshell.com/ +[12]: https://fishshell.com/docs/current/index.html +[13]: https://fishshell.com/docs/current/tutorial.html +[14]: https://fishshell.com/docs/current/faq.html +[15]: https://rootnroll.com/d/fish-shell/ +[16]: https://sourceforge.net/projects/fish/lists/fish-users +[17]: https://github.com/fish-shell/fish-shell/ From dae5405a9831b2b31cd068268d58f7b3e6db2a06 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 31 Mar 2020 08:28:17 +0800 Subject: [PATCH 094/218] translating --- ...acle Announces Java 14- How to Install it on Ubuntu Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md index 17a04e4f91..3e2c6d9acc 100644 --- a/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md +++ b/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 49f555b7afb79280360bd624c93fb74519813008 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 10:47:22 +0800 Subject: [PATCH 095/218] PRF @robsean --- ...et DebianDog - Puppy sized Debian Linux.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md index ac429383ba..be8b07327f 100644 --- a/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md +++ b/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md @@ -1,30 +1,30 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Meet DebianDog – Puppy sized Debian Linux) [#]: via: (https://itsfoss.com/debiandog/) [#]: author: (John Paul https://itsfoss.com/author/john/) -体验 DebianDog– Puppy 大小的 Debian Linux +体验 DebianDog:Puppy 式的 Debian Linux ====== -不久前,我偶然发现了一个有趣的 Linux 项目。这个项目旨在为 Debian 和基于 Debian 的系统创建一个小型的 live cd,类似于 [Puppy Linux 项目][1] 。让我们看看 DebianDog 。 +不久前,我偶然发现了一个有趣的 Linux 项目。这个项目旨在为 Debian 和基于 Debian 的系统创建一个小型的现场版 CD,类似于 [Puppy Linux 项目][1] 。让我们看看 DebianDog 。 ### DebianDog 是什么? -正如字面所述,[DebianDog][2] “是一个被塑造成一个外观和动作都像 Puppy 的小型 Debian Live CD ,Debian 结构和 Debian 活动方式是不受影响的, Debian 文档对 DebianDog 来说是100%有效的。你可以使用 apt-get 或 synaptic 来访问所有的 Debian 存储库。” +正如字面所述,[DebianDog][2] “是一个被塑造成一个外观和动作都像 Puppy Linux 的小型 Debian 现场版 CD。没有改动 Debian 结构和方式,Debian 的文档对 DebianDog 来说是完全有效的。你可以使用 `apt-get` 或 synaptic 来访问所有的 Debian 存储库。” ![DebianDog Jessie][3] -对于那些不熟悉 [Puppy Linux][1] 的人来说,该项目是 “多个 Linux 发行版的一个集合,建立在相同的共享法则之上”。这些法则能够实现快速、小型(300 MB 或更少),和易于使用。这里有为支持 Ubuntu, Slackware 和 Raspbian 软件包构建的 Puppy linux 变种。 +对于那些不熟悉 [Puppy Linux][1] 的人来说,该项目是 “多个 Linux 发行版的一个集合,建立在相同的共享准则之上”。这些准则能够实现快速、小型(300 MB 或更少)、易于使用。这里有为支持 Ubuntu, Slackware 和 Raspbian 软件包构建的 Puppy Linux 变种。 -DebianDog 和 Puppy Linux 之间最大的不同是,Puppy Linux 有其自己的软件包管理器 [Puppy 软件包管理器][4] 。如上所述,DebianDog 使用 Debian 软件包管理器及其软件包。甚至 DebianDog 网站也试图澄清这一点:“它不是 Puppy Linux ,并且也与基于 Debian 的 Puppy 无关。” +DebianDog 和 Puppy Linux 之间最大的不同是,Puppy Linux 有其自己的软件包管理器 [Puppy 软件包管理器][4] 。如上所述,DebianDog 使用 Debian 软件包管理器及其软件包。甚至 DebianDog 网站也试图澄清这一点:“它不是 Puppy Linux,并且也与基于 Debian 的 Puppy 无关。” ### 为什么一些人使用 DebianDog ? -安装 DebianDog (或其任何衍生产品) 的主要原因是恢复一台较旧电脑的可操作性。在 DebianDog 上的每个条目都有一个32位选项。它们还有更轻量级的桌面环境/窗口管理器,例如 [Openbox][5] 或 [Trinity Desktop][6] 环境。它们中大多数也都有一个 systemd 的可替代版本。它们也安装更轻的应用程序,例如 [PCManFM][7] 。 +安装 DebianDog(或其任何衍生产品)的主要原因是让一台较旧电脑重焕新生。在 DebianDog 上的每个版本都有一个 32 位版本。它们还有更轻量级的桌面环境/窗口管理器,例如 [Openbox][5] 或 [Trinity Desktop][6] 环境。它们中大多数也都有一个 systemd 的可替代版本。它们也安装更轻的应用程序,例如 [PCManFM][7] 。 ### DebianDog 有哪些可用的变体版本? @@ -32,47 +32,47 @@ DebianDog 和 Puppy Linux 之间最大的不同是,Puppy Linux 有其自己的 #### DebianDog Jessie -DebianDog 的第一个(也是最初的) 版本是 DebianDog Jessie。它有两个 [32位版本][8] ,一个使用 [Joe’s Window Manager (JWM)][9] 作为默认桌面环境,另一个使用 XFCE 作为默认桌面环境。systemd 和 sysvinit 都是可用的。它还有一个 [64位版本][10]。DebianDog Jessie 基于 Debian 8.0 (代号 Jessie)。Debian 8.0 的支持将于2020年6月30日结束,因此安装需谨慎。 +DebianDog 的第一个(也是最初的)版本是 DebianDog Jessie。它有两个 [32 位版本][8] ,一个使用 [Joe’s Window Manager (JWM)][9] 作为默认桌面环境,另一个使用 XFCE 作为默认桌面环境。systemd 和 sysvinit 都是可用的。它还有一个 [64 位版本][10]。DebianDog Jessie 基于 Debian 8.0(Jessie)。Debian 8.0 的支持将于 2020 年 6 月 30 日结束,因此安装需谨慎。 ![TrinityDog][11] #### StretchDog -[StretchDog][12] 基于 Debian 9.0 (代号 Stretch) 。它有32位和64位两种可用。Openbox是默认的窗口管理器,但是我们可以切换到 JWM 。Debian 9.0 的支持将于2022年6月30日结束。 +[StretchDog][12] 基于 Debian 9.0(Stretch)。它有 32 位和 64 位两种版本可用。Openbox 是默认的窗口管理器,但是我们可以切换到 JWM 。Debian 9.0 的支持将于 2022 年 6 月 30 日结束。 #### BusterDog -[BusterDog][13] 是很有趣的。它基于 [Debian 10][14] (代号 Buster) 。它不使用 systemd ,反而像 [AntiX][16] 一样使用 [elogind][15] 。Debian 10.0 的支持将于2024年6月结束。 +[BusterDog][13] 是很有趣的。它基于 [Debian 10][14](Buster)。它不使用 systemd,反而像 [AntiX][16] 一样使用 [elogind][15] 。Debian 10.0 的支持将于 2024 年 6 月结束。 #### MintPup -[MintPup][17] 基于 [Linux Mint][18] 17.1 。LiveCD 仅有32位版本。你也可以使用 “apt-get 或 synaptic 访问 Ubuntu/Mint 的存储库”。考虑到 Mint 17 已经到了生命的尽头,这一版本必须避免使用。 +[MintPup][17] 基于 [Linux Mint][18] 17.1。现场版 CD 仅有 32 位版本。你也可以使用 “apt-get 或 synaptic 访问 Ubuntu/Mint 的存储库”。考虑到 Mint 17 已经到了生命的尽头,这一版本必须避免使用。 #### XenialDog -XenialDog 有[32位][19]和[64位][20] 两种变种,基于 Ubuntu 16.04 LTS 。两个变种都使用 Openbox 作为默认版本,JWM 是一种选项。Ubuntu 16.04 LTS 的支持将于2021年4月结束, 因此安装需谨慎。 +XenialDog 有 [32 位][19]和 [64 位][20] 两种变种,基于 Ubuntu 16.04 LTS 。两个变种都使用 Openbox 作为默认版本,JWM 可选。Ubuntu 16.04 LTS 的支持将于 2021 年 4 月结束, 因此安装需谨慎。 #### TrinityDog -[TrintyDog][21] 有两种变体。一个基于 Debian 8 ,另一个基于 Debian 9 。两种变体都有32位版本,并且都使用 [Trinity Desktop Environment][6] ,依以此得名。 +[TrintyDog][21] 有两种变体。一个基于 Debian 8 ,另一个基于 Debian 9 。两种变体都有 32 位版本,并且都使用 [Trinity Desktop Environment][6] ,以此得名。 ![BionicDog][22] #### BionicDog -你应该能够从名称猜到。[BionicDog][23] 基于 [Ubuntu 18.04 LTS][24] 。主要版本有32位和64位两个版本,Openbox 是默认的窗口管理器。这里也有一个使用 [Cinnamon desktop][25] 的版本,并且只有64位。 +你应该能够从名称猜到。[BionicDog][23] 基于 [Ubuntu 18.04 LTS][24]。主要版本有 32 位和 64 位两个版本,Openbox 是默认的窗口管理器。这里也有一个使用 [Cinnamon desktop][25] 的版本,并且只有 64 位版本。 ### 结束语 我喜欢任何 [想让较旧电脑系统有用的 Linux 项目][26]。但是,通过 DebianDog 项目提供的大多数操作系统不再受支持,或者接近它们的生命尽头。从长远来看,这就不那么有用了。 -**我不建议在你的主计算机上使用它。** 在 live USB 中或一台闲置的系统上尝试它。此外,如果你想使用较新的基础系统,[你可以创建][27]你自己的 LiveCD 。 +**我不建议在你的主计算机上使用它。**在现场版 USB 中或一台闲置的系统上尝试它。此外,如果你想使用较新的基础系统,[你可以创建][27]你自己的现场版 CD 。 -似乎冥冥中自有天意,我总是在探索鲜为人知的 Linux 发行版的路上艰难地前行,像 [FatDog64][28] ,[4M Linux][29] 以及 [Vipper Linux][30] 。虽然我不建议使用它们,但是知晓这些项目的存在的意义总是好的。 +似乎冥冥中自有天意,我总是在探索鲜为人知的 Linux 发行版的路上艰难地前行,像 [FatDog64][28]、[4M Linux][29] 以及 [Vipper Linux][30] 。虽然我不建议使用它们,但是知晓这些项目的存在的意义总是好的。 -你对 DebianDog 有什么看法?你最最喜欢的 Puppy 样式的操作系统是什么?请在下面的评论区中告诉我们。 +你对 DebianDog 有什么看法?你最最喜欢的 Puppy 式的操作系统是什么?请在下面的评论区中告诉我们。 -如果你觉得这篇文章很有趣,请花点时间在社交媒体、黑客新闻或 [Reddit][31] 上分享。 +如果你觉得这篇文章很有趣,请花点时间在社交媒体、黑客新闻或 Reddit 上分享。 -------------------------------------------------------------------------------- @@ -81,7 +81,7 @@ via: https://itsfoss.com/debiandog/ 作者:[John Paul][a] 选题:[lujun9972][b] 译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -89,7 +89,7 @@ via: https://itsfoss.com/debiandog/ [b]: https://github.com/lujun9972 [1]: http://puppylinux.com/ [2]: https://debiandog.github.io/doglinux/ -[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/DebianDog-Jessie.jpg?fit=800%2C600&ssl=1 +[3]: https://www.linuxinsider.com/article_images/2017/84328_990x556.jpg [4]: http://wikka.puppylinux.com/PPM?redirect=no [5]: http://openbox.org/wiki/Main_Page [6]: https://www.trinitydesktop.org/ From 5b15cd2a3493743741441917dac3e2280eb900b9 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 10:50:19 +0800 Subject: [PATCH 096/218] PUB @robsean https://linux.cn/article-12059-1.html --- .../20200322 Meet DebianDog - Puppy sized Debian Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200322 Meet DebianDog - Puppy sized Debian Linux.md (99%) diff --git a/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md similarity index 99% rename from translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md rename to published/20200322 Meet DebianDog - Puppy sized Debian Linux.md index be8b07327f..edf769a886 100644 --- a/translated/tech/20200322 Meet DebianDog - Puppy sized Debian Linux.md +++ b/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12059-1.html) [#]: subject: (Meet DebianDog – Puppy sized Debian Linux) [#]: via: (https://itsfoss.com/debiandog/) [#]: author: (John Paul https://itsfoss.com/author/john/) From f5ea9cfe4fdf751d2bf0ab1c4d60470fdea8c258 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 10:54:59 +0800 Subject: [PATCH 097/218] PRF --- .../20200322 Meet DebianDog - Puppy sized Debian Linux.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md index edf769a886..c5b50c7670 100644 --- a/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md +++ b/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md @@ -16,7 +16,7 @@ 正如字面所述,[DebianDog][2] “是一个被塑造成一个外观和动作都像 Puppy Linux 的小型 Debian 现场版 CD。没有改动 Debian 结构和方式,Debian 的文档对 DebianDog 来说是完全有效的。你可以使用 `apt-get` 或 synaptic 来访问所有的 Debian 存储库。” -![DebianDog Jessie][3] +![DebianDog][3] 对于那些不熟悉 [Puppy Linux][1] 的人来说,该项目是 “多个 Linux 发行版的一个集合,建立在相同的共享准则之上”。这些准则能够实现快速、小型(300 MB 或更少)、易于使用。这里有为支持 Ubuntu, Slackware 和 Raspbian 软件包构建的 Puppy Linux 变种。 @@ -34,8 +34,6 @@ DebianDog 和 Puppy Linux 之间最大的不同是,Puppy Linux 有其自己的 DebianDog 的第一个(也是最初的)版本是 DebianDog Jessie。它有两个 [32 位版本][8] ,一个使用 [Joe’s Window Manager (JWM)][9] 作为默认桌面环境,另一个使用 XFCE 作为默认桌面环境。systemd 和 sysvinit 都是可用的。它还有一个 [64 位版本][10]。DebianDog Jessie 基于 Debian 8.0(Jessie)。Debian 8.0 的支持将于 2020 年 6 月 30 日结束,因此安装需谨慎。 -![TrinityDog][11] - #### StretchDog [StretchDog][12] 基于 Debian 9.0(Stretch)。它有 32 位和 64 位两种版本可用。Openbox 是默认的窗口管理器,但是我们可以切换到 JWM 。Debian 9.0 的支持将于 2022 年 6 月 30 日结束。 @@ -56,12 +54,14 @@ XenialDog 有 [32 位][19]和 [64 位][20] 两种变种,基于 Ubuntu 16.04 LT [TrintyDog][21] 有两种变体。一个基于 Debian 8 ,另一个基于 Debian 9 。两种变体都有 32 位版本,并且都使用 [Trinity Desktop Environment][6] ,以此得名。 -![BionicDog][22] +![TrinityDog][11] #### BionicDog 你应该能够从名称猜到。[BionicDog][23] 基于 [Ubuntu 18.04 LTS][24]。主要版本有 32 位和 64 位两个版本,Openbox 是默认的窗口管理器。这里也有一个使用 [Cinnamon desktop][25] 的版本,并且只有 64 位版本。 +![BionicDog][22] + ### 结束语 我喜欢任何 [想让较旧电脑系统有用的 Linux 项目][26]。但是,通过 DebianDog 项目提供的大多数操作系统不再受支持,或者接近它们的生命尽头。从长远来看,这就不那么有用了。 From ac7209334fee8e6d7bd29dab239e66ac56fe8402 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 14:10:35 +0800 Subject: [PATCH 098/218] APL --- sources/tech/20190612 Why use GraphQL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190612 Why use GraphQL.md b/sources/tech/20190612 Why use GraphQL.md index ad0d3a0056..924253f8e9 100644 --- a/sources/tech/20190612 Why use GraphQL.md +++ b/sources/tech/20190612 Why use GraphQL.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 2d6e02dac970881eb8f8c815e642943fe88e333e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 14:37:45 +0800 Subject: [PATCH 099/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190429=2010=20m?= =?UTF-8?q?oments=20that=20shaped=20Linux=20history?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20190429 10 moments that shaped Linux history.md --- ...29 10 moments that shaped Linux history.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 sources/talk/20190429 10 moments that shaped Linux history.md diff --git a/sources/talk/20190429 10 moments that shaped Linux history.md b/sources/talk/20190429 10 moments that shaped Linux history.md new file mode 100644 index 0000000000..06bbeedacf --- /dev/null +++ b/sources/talk/20190429 10 moments that shaped Linux history.md @@ -0,0 +1,89 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (10 moments that shaped Linux history) +[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history) +[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) + +10 moments that shaped Linux history +====== +Linux has come a long way since 1991. These events mark its evolution. +![Penguin with green background][1] + +In August 2018, Opensource.com posted a poll with seven options asking readers: _[What was the most important moment in the history of Linux?][2]_ I thought I would expand on the list and present 10 moments that I think have played an important part in shaping the history of Linux. + +### 1\. Linus releases Linux + +Linus Torvalds initially released Linux to the world in 1991 as a hobby. It didn't remain a hobby for long! + +### 2\. Linux distributions + +In 1993, several Linux distributions were founded, notably [Debian][3], [Red Hat][4], and [Slackware][5]. These were important because they demonstrated Linux's gains in market acceptance and development that enabled it to survive the tumultuous OS wars, browser wars, and protocol wars of the 1990s. In contrast, many established, commercial, and proprietary products did not make it past the turn of the millennium! + +### 3\. IBM's big investment in Linux + +In 2000, IBM announced it would invest US$1 billion dollars in Linux. In his CNN Money [article about the investment][6], Richard Richtmyer wrote: "The announcement underscores Big Blue's commitment to Linux and marks significant progress in moving the alternative operating system into the mainstream commercial market." + +### 4\. Hollywood adopts Linux + +In 2002, it seemed the entire Hollywood movie industry adopted Linux. [Disney][7], [Dreamworks][8], and [Industrial Light & Magic][9] all began making movies with Linux that year. + +### 5\. Linux for national security + +In 2003, another big moment came with the US government's acceptance of Linux. Red Hat Linux was [awarded][10] the Department of Defense Common Operating Environment (COE) certification. This is significant because the government—intelligence and military agencies in particular—have very strict requirements for computing systems to prevent attacks and support national security. This opened the door for other agencies to use Linux. Later that year, the [National Weather Service announced][11] it would replace outdated systems with new computers running Linux. + +### 6\. The systems I managed + +This "moment" is really a collection of my personal experiences. As my career progressed in the 2000s, I discovered several types of systems and devices that I managed were all running Linux. Some of the places I found Linux were VMware ESX, F5 Big-IP, Check Point UTM Edge, Cisco ASA, and PIX. This made me realize that Linux was truly viable and here to stay. + +### 7\. Ubuntu + +In 2004, Canonical was founded by Mark Shuttleworth to provide an easy-to-use Linux desktop—[Ubuntu Linux][12]—based on the Debian distribution. I think Ubuntu Linux helped to expand the desktop Linux install base. It put Linux in front of many more people, from casual home users to professional software developers. + +### 8\. Google Linux + +Google released two operating systems based on the Linux kernel: the Android mobile operating system in mid-2008 and Chrome OS, running on a Chromebook, in 2011. Since then, millions of Android mobile phones and Chromebooks have been sold. + +### 9\. The cloud is Linux + +In the past 10 years or so, cloud computing has gone from a grandiose vision of computing on the internet to a reinvention of how we use computers personally and professionally. The big players in the cloud space are built on Linux, including [Amazon Web Services][13], [Google Cloud Services][14], and [Linode][15]. Even in cases where we aren't certain, such as Microsoft Azure, running Linux workloads is well supported. + +### 10\. My car runs Linux + +And so will yours! Many automakers began introducing Linux a few years ago. This led to the formation of the collaborative open source project called [Automotive Grade Linux][16]. Major car makers, such as Toyota and Subaru, have joined together to develop Linux-based automotive entertainment, navigation, and engine-management systems. + +#### Share your favorite + +This is my subjective list pulled from archives of Linux articles and events throughout my career, so there may be other more notable moments that I am overlooking. Share in the comments. Also, the [Linux history poll][2] is still open for voting if you're interested. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/4/top-moments-linux-history + +作者:[Alan Formy-Duval][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alanfdoss +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background) +[2]: https://opensource.com/article/18/8/linux-history +[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html +[4]: https://brand.redhat.com/foundations/history +[5]: https://opensource.com/article/18/7/stackware-turns-25 +[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux +[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html +[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film +[9]: https://www.linuxjournal.com/article/6011 +[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat +[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html +[12]: https://www.ubuntu.com/about +[13]: https://aws.amazon.com/amazon-linux-2 +[14]: https://cloud.google.com +[15]: https://www.linode.com/docs/getting-started +[16]: https://www.automotivelinux.org From 95a664d720b20caa5a910d4b2af837925bdbc858 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 31 Mar 2020 14:43:11 +0800 Subject: [PATCH 100/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020190605=20What?= =?UTF-8?q?=20is=20GraphQL=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20190605 What is GraphQL.md --- sources/tech/20190605 What is GraphQL.md | 129 +++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 sources/tech/20190605 What is GraphQL.md diff --git a/sources/tech/20190605 What is GraphQL.md b/sources/tech/20190605 What is GraphQL.md new file mode 100644 index 0000000000..56d0690cca --- /dev/null +++ b/sources/tech/20190605 What is GraphQL.md @@ -0,0 +1,129 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What is GraphQL?) +[#]: via: (https://opensource.com/article/19/6/what-is-graphql) +[#]: author: (Zach Lendon https://opensource.com/users/zachlendon) + +What is GraphQL? +====== +GraphQL is a query language, an execution engine, and a specification, +and it's leading developers to rethink how they build client and API +applications. +![Analytics: Charts and Graphs][1] + +GraphQL is one of the biggest buzzwords in software tech today. But _what is it_ _actually_? Is it a query language like [SQL][2]? An execution engine like the [JVM][3]? A specification like [XML][4]? + +If you answered all of the above, you are correct! [GraphQL][5] is a query language syntax, a programming language-agnostic execution engine, and a continuously evolving specification. + +Let's dive into how GraphQL can be all of these things and get a glimpse of why people are excited about it. + +### Query language + +GraphQL as a query language seems reasonable—"QL" seemed important enough to be in the name, after all. But what are we querying? It probably helps to look at a sample query request and the corresponding response. + +The following user query: + + +``` +{ + user(id: 4) { +   name +   email +   phoneNumber + } +} +``` + +might return the following JSON response: + + +``` +{ + "user": { +   "name": "Zach Lendon" +   “email”: “[zach@hydrate.io][6]” +   “phoneNumber”: “867-5309” + } +} +``` + +Imagine a client application querying for user details, taking the result, and using it to populate a profile screen. As a query language, one of GraphQL's core benefits is that a client application can request _only the data it needs_ and expect it to be returned in a consistent manner. + +_What_ is returning the GraphQL response, though? This is where the execution engine, typically in the form of a GraphQL server, comes into play. + +### Execution engine + +![GraphQL execution engine][7] + +The GraphQL execution engine is what is responsible for processing a GraphQL query and returning a JSON response. All GraphQL servers are made up of two core components that define the structure and behavior of the execution engine: a schema and resolvers, respectively. + +A GraphQL schema is a custom typed language that exposes which queries are both permitted (valid) and handled by a GraphQL server implementation. The schema for our user example query above might look like: + + +``` +type User { +        name: String +        email: String +        phoneNumber: String +} + +type Query { +        user: User +} +``` + +This schema defines a user query that returns a user. Clients can request any of the fields on a user via the user query, and the GraphQL server will return only those fields in its response. By using the strongly typed schema, a GraphQL server can validate incoming queries to ensure they are valid based on the defined schema. + +Once a query is determined to be valid, it is processed by a GraphQL server by resolvers. A resolver function backs each field of each GraphQL type. An example resolver for our user query might look like: + + +``` +Query: { +  user(obj, args, context, info) { +    return context.db.loadUserById(args.id).then( +      userData => new User(userData) +    ) +  } +} +``` + +While the above example is in JavaScript, GraphQL servers can be written in any number of languages. This is due to the fact that GraphQL is _also_ a specification! + +### Specification + +The GraphQL specification defines the capabilities and characteristics that GraphQL implementations must follow. As an open specification available under the Open Web Foundation Final Specification Agreement ([OWFa 1.0][8]), the technology community has the opportunity to both review what a GraphQL implementation must do to be spec-compliant and help craft the future of the language. + +While the specification is very specific about GraphQL's syntax, what is a valid query, and how a schema works, it provides no direction on how to store data or what implementation programming languages GraphQL servers should use. This is incredibly powerful and relatively unique in the software space—it allows GraphQL servers to be created in any number of programming languages, and clients will know exactly how they function since they are spec-compliant. And GraphQL server implementations have been created across many programming languages, not just ones folks might expect like JavaScript, Java, and C#, but languages like Go, Elixir, and Haskell. The language a server is implemented in will not be a barrier to adoption—not only are there implementations in many languages, but they are all open source. If there isn't an implementation in your language of choice, you are free to create your own. + +### Conclusion + +GraphQL is an exciting, relatively new entrant into the open source API space. It couples a query language and execution engine with an open source specification that defines how GraphQL implementations should look and function. + +GraphQL has already started to change how companies think about building both client and API applications. With GraphQL as part of a technology stack, front-end developers are freed to query for the data they want, and back-end developers can decouple client application needs from their back-end system architectures. Often companies journey into GraphQL by first building a GraphQL API "layer" that sits on top of their existing back-end services. This allows the client applications to begin to gain the performance and operational efficiencies they seek, while allowing the back-end teams an opportunity to determine what, if any, changes they might want to make "under the hood," behind their GraphQL layer. Often, those changes will be geared towards optimizations that will help ensure that applications using GraphQL can operate as performantly as possible. Because of the abstraction GraphQL provides, systems teams can make those changes while continuing to honor the GraphQL "contract" at their GraphQL API level. + +Because GraphQL is relatively new, developers are still finding new and exciting ways to leverage it to build better software solutions. How will GraphQL change how you build applications, and does it live up to the hype? There's only one way to find out—go out there and build something with GraphQL! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/what-is-graphql + +作者:[Zach Lendon][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/zachlendon +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/analytics-graphs-charts.png?itok=sersoqbV (Analytics: Charts and Graphs) +[2]: https://opensource.com/article/18/2/getting-started-sql +[3]: https://www.cubrid.org/blog/understanding-jvm-internals/ +[4]: https://www.w3.org/TR/xml/ +[5]: http://graphql.org/ +[6]: mailto:zach@hydrate.io +[7]: https://opensource.com/sites/default/files/pictures/graphql-execution-engine.png (GraphQL execution engine) +[8]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0---patent-only From 8b806519278f3baa6b62397515d2078adfff1bbb Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 15:56:16 +0800 Subject: [PATCH 101/218] TSL --- sources/tech/20190612 Why use GraphQL.md | 97 --------------------- translated/tech/20190612 Why use GraphQL.md | 91 +++++++++++++++++++ 2 files changed, 91 insertions(+), 97 deletions(-) delete mode 100644 sources/tech/20190612 Why use GraphQL.md create mode 100644 translated/tech/20190612 Why use GraphQL.md diff --git a/sources/tech/20190612 Why use GraphQL.md b/sources/tech/20190612 Why use GraphQL.md deleted file mode 100644 index 924253f8e9..0000000000 --- a/sources/tech/20190612 Why use GraphQL.md +++ /dev/null @@ -1,97 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why use GraphQL?) -[#]: via: (https://opensource.com/article/19/6/why-use-graphql) -[#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley) - -Why use GraphQL? -====== -Here's why GraphQL is gaining ground on standard REST API technology. -![][1] - -[GraphQL][2], as I wrote [previously][3], is a next-generation API technology that is transforming both how client applications communicate with backend systems and how backend systems are designed. - -As a result of the support that began with the organization that founded it, Facebook, and continues with the backing of other technology giants such as Github, Twitter, and AirBnB, GraphQL's place as a linchpin technology for application systems seems secure; both now and long into the future. - -### GraphQL's ascent - -The rise in importance of mobile application performance and organizational agility has provided booster rockets for GraphQL's ascent to the top of modern enterprise architectures. - -Given that [REST][4] is a wildly popular architectural style that already allows mechanisms for data interaction, what advantages does this new technology provide over [REST][4]? The ‘QL’ in GraphQL stands for query language, and that is a great place to start. - -The ease at which different client applications within an organization can query only the data they need with GraphQL usurps alternative REST approaches and delivers real-world application performance boosts. With traditional [REST][4] API endpoints, client applications interrogate a server resource, and receive a response containing all the data that matches the request. If a successful response from a [REST][4] API endpoint returns 35 fields, the client application receives 35 fields - -### Fetching problems - -[REST][4] APIs traditionally provide no clean way for client applications to retrieve or update only the data they care about. This is often described as the “over-fetching” problem. With the prevalence of mobile applications in people’s day to day lives, the over-fetching problem has real world consequences. Every request a mobile application needs to make, every byte it has to send and receive, has an increasingly negative performance impact for end users. Users with slower data connections are particularly affected by suboptimal API design choices. Customers who experience poor performance using mobile applications are more likely to not purchase products and use services. Inefficient API designs cost companies money. - -“Over-fetching” isn’t alone - it has a partner in crime - “under-fetching”. Endpoints that, by default, return only a portion of the data a client actually needs require clients to make additional calls to satisfy their data needs - which requires additional HTTP requests. Because of the over and under fetching problems and their impact on client application performance, an API technology that facilitates efficient fetching has a chance to catch fire in the marketplace - and GraphQL has boldly jumped in and filled that void. - -### REST's response - -[REST][4] API designers, not willing to go down without a fight, have attempted to counter the mobile application performance problem through a mix of: - - * “include” and “exclude” query parameters, allowing client applications to specify which fields they want through a potentially long query format. - * “Composite” services, which combine multiple endpoints in a way that allow client applications to be more efficient in the number of requests they make and the data they receive. - - - -While these patterns are a valiant attempt by the [REST][4] API community to address challenges mobile clients face, they fall short in a few key regards, namely: - - * Include and exclude query key/value pairs quickly get messy, in particular for deeper object graphs that require a nested dot notation syntax (or similar) to target data to include and exclude. Additionally, debugging issues with the query string in this model often requires manually breaking up a URL. - * Server implementations for include and exclude queries are often custom, as there is no standard way for server-based applications to handle the use of include and exclude queries, just as there is no standard way for include and exclude queries to be defined. - * The rise of composite services creates more tightly coupled back-end and front-end systems, requiring increasing coordination to deliver projects and turning once agile projects back to waterfall. This coordination and coupling has the painful side effect of slowing organizational agility. Additionally, composite services are by definition, not RESTful. - - - -### GraphQL's genesis - -For Facebook, GraphQL’s genesis was a response to pain felt and experiences learned from an HTML5-based version of their flagship mobile application back in 2011-2012. Understanding that improved performance was paramount, Facebook engineers realized that they needed a new API design to ensure peak performance. Likely taking the above [REST][4] limitations into consideration, and with needing to support different needs of a number of API clients, one can begin to understand the early seeds of what led co-creators Lee Byron and Dan Schaeffer, Facebook employees at the time, to create what has become known as GraphQL. - -With what is often a single GraphQL endpoint, through the GraphQL query language, client applications are able to reduce, often significantly, the number of network calls they need to make, and ensure that they only are retrieving the data they need. In many ways, this harkens back to earlier models of web programming, where client application code would directly query back-end systems - some might remember writing SQL queries with JSTL on JSPs 10-15 years ago for example! - -The biggest difference now is with GraphQL, we have a specification that is implemented across a variety of client and server languages and libraries. And with GraphQL being an API technology, we have decoupled the back-end and front-end application systems by introducing an intermediary GraphQL application layer that provides a mechanism to access organizational data in a manner that aligns with an organization’s business domain(s). - -Beyond solving technical challenges experienced by software engineering teams, GraphQL has also been a boost to organizational agility, in particular in the enterprise. GraphQL-enabled organizational agility increases are commonly attributable to the following: - - * Rather than creating new endpoints when 1 or more new fields are needed by clients, GraphQL API designers and developers are able to include those fields in existing graph implementations, exposing new capabilities in a fashion that requires less development effort and less change across application systems. - * By encouraging API design teams to focus more on defining their object graph and be less focused on what client applications are delivering, the speed at which front-end and back-end software teams deliver solutions for customers has increasingly decoupled. - - - -### Considerations before adoption - -Despite GraphQL’s compelling benefits, GraphQL is not without its implementation challenges. A few examples include: - - * Caching mechanisms around [REST][4] APIs are much more mature. - * The patterns used to build APIs using [REST][4] are much more well established. - * While engineers may be more attracted to newer technologies like GraphQL, the talent pool in the marketplace is much broader for building [REST][4]-based solutions vs. GraphQL. - - - -### Conclusion - -By providing both a boost to performance and organizational agility, GraphQL's adoption by companies has skyrocketed in the past few years. It does, however, have some maturing to do in comparison to the RESTful ecosystem of API design. - -One of the great benefits of GraphQL is that it’s not designed as a wholesale replacement for alternative API solutions. Instead, GraphQL can be implemented to complement or enhance existing APIs. As a result, companies are encouraged to explore incrementally adopting GraphQL where it makes the most sense for them - where they find it has the greatest positive impact on application performance and organizational agility. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/why-use-graphql - -作者:[Zach Lendon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D -[2]: https://graphql.org/ -[3]: https://opensource.com/article/19/6/what-is-graphql -[4]: https://en.wikipedia.org/wiki/Representational_state_transfer diff --git a/translated/tech/20190612 Why use GraphQL.md b/translated/tech/20190612 Why use GraphQL.md new file mode 100644 index 0000000000..e63f55622d --- /dev/null +++ b/translated/tech/20190612 Why use GraphQL.md @@ -0,0 +1,91 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Why use GraphQL?) +[#]: via: (https://opensource.com/article/19/6/why-use-graphql) +[#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley) + +为什么使用 GraphQL? +====== + +> 这就是 GraphQL 在标准 REST API 技术上获得发展的原因。 + +[][1] + +正如我[以前][3]所写,[GraphQL][2] 是下一代 API 技术,它正在改变客户端应用程序与后端系统的通信方式以及后端系统的设计方式。 + +由于一开始就从创建它的组织 Facebook 获得了支持,并得到了其他技术巨头(如 Github、Twitter 和 AirBnB)的支持,因此 GraphQL 作为应用程序系统的关键技术的地位似乎是可靠的 —— 无论现在还是将来。 + +### GraphQL 在崛起 + +移动应用程序性能和组织敏捷性重要性的提高为 GraphQL 登上现代企业体系结构的顶端提供了助推器。 + +鉴于 [REST][4] 是一种非常流行的体系结构风格,早已提供了数据交互机制,与 [REST][4] 相比,GraphQL 这项新技术具有哪些优势?GraphQL 中的 “QL” 代表查询语言,而这是一个很好的起点。 + +借助 GraphQL,组织内的不同客户端应用程序可以轻松地仅查询所需数据,从而取代了其他 REST 方法,并提高了实际应用程序的性能。 使用传统的 [REST][4] API 端点,客户端应用程序将详询服务器资源,并接收包含了与请求匹配的所有数据的响应。如果来自 [REST][4] API 端点的成功响应返回 35 个字段,那么客户端应用程序就会接收 35 个字段。 + +### 提取的问题 + +传统上,[REST][4] API 无法为客户端应用程序提供简便的方法来仅检索或更新它们关心的数据。这通常被描述为“过度获取over-fetching”的问题。随着移动应用程序在人们的日常生活中的普遍使用,过度获取问题会给现实世界带来不良后果。移动应用程序需要发出的每个请求都必须发送和接收的每个字节,对最终用户的性能造成的负面影响越来越大。数据连接速度较慢的用户尤其会受到不太好的 API 设计方案的影响。在性能体验不佳时,使用移动应用程序的客户更有可能不购买产品或不使用服务。低效的 API 设计只会浪费公司的钱。 + +并非只有“过度获取”是问题,“欠缺获取”同样也是问题。默认情况下,仅返回客户端实际需要的部分数据的端点或许会要求客户端进行其他调用以满足其数据需求,这就需要其他的 HTTP 请求。由于过度和欠缺的获取问题及其对客户端应用程序性能的影响,促进有效获取的 API 技术才有机会在市场上引起轰动 —— GraphQL 大胆地介入并填补了这一空白。 + +### REST 的应对 + +[REST][4] API 设计师不战而退,他们尝试通过以下几种方式来应对移动应用程序性能问题: + +* “include” 和 “exclude” 查询参数,允许客户端应用程序通过可能较长的查询格式来指定所需的字段。 +* “复合”服务,组合了多个端点,以使客户端应用程序在其发出的请求数量和接收到的数据方面更高效。 +   +尽管这些模式是 [REST][4] API 社区为解决移动客户端所面临的挑战而做出的英勇尝试,但它们在以下几个关键方面仍存在不足: + +* 包含和排除查询的键/值对很快变得混乱,特别是对于需要嵌套“点表示法”语法(或类似方法)以包含和排除更深的目标数据的对象图而言。此外,在此模型中调试查询字符串的问题通常需要手动分解 URL。 +* 包含和排除查询的服务器实现通常是自定义的,因为基于服务器的应用程序没有标准的方式来处理包含和排除查询的使用,就像没有定义包含和排除查询的标准方式一样。 +* 复合服务的兴起创建了更加紧密耦合的后端和前端系统,需要加强协调以交付项目,并且一旦将敏捷项目转回瀑布式。这种协调和耦合顺便还能稍减组织敏捷性的痛苦。此外,根据定义,组合服务不是 RESTful。 +   +### GraphQL 的起源 + +对于 Facebook 来说,从其 2011-2012 年基于 HTML5 版本的旗舰移动应用程序中感受到的痛点和体验,才造就了 GraphQL。Facebook 工程师意识到提高性能至关重要,因此意识到他们需要一种新的 API 设计来确保最佳性能。可能考虑到以上 [REST][4] 的局限性,并且需要支持许多 API 客户端的不同需求,因此人们开始去了解其共同创建者 Lee Byron 和 Dan Schaeffer(那时尚是 Facebook 员工)撒播下的早期种子,创建了后来被称之为 GraphQL 的技术。 + +通过 GraphQL 查询语言,客户端(通常是单个 GraphQL 端点)应用程序通常可以显著减少所需的网络调用数量,并确保仅检索所需的数据。在许多方面,这可以追溯到早期的 Web 编程模型,在该模型中,客户端应用程序代码将直接查询后端系统,有些人可能还记得 10 到 15 年前在 JSP 上用 JSTL 编写 SQL 查询吧! + +现在最大的区别是使用 GraphQL,我们有了一个跨多种客户端和服务器语言和库实现的规范。借助 GraphQL 这样一种 API 技术,我们通过引入 GraphQL 应用程序中间层来分离后端和前端应用程序系统,该层提供了一种以与组织的业务领域相一致的方式来访问组织数据的机制。 + +除了解决软件工程团队遇到的技术挑战之外,GraphQL 还促进了组织敏捷性的提高,特别是在企业中。启用 GraphQL 的组织敏捷性通常归因于以下因素: + + * GraphQL API 设计人员和开发人员无需在客户端需要一个或多个新字段时创建新的端点,而是能够将这些字段包含在现有的图形实现中,从而以较少的开发工作量和跨应用程序系统的较少更改的方式公开新功能。 + * 通过鼓励 API 设计团队将更多的精力放在定义对象图上,而不是在专注于客户端应用程序交付上,前端和后端软件团队为客户交付解决方案的速度日益解耦。 +   +### 采纳之前的注意事项 + +尽管 GraphQL 具有引人注目的优势,但 GraphQL 并非没有实施挑战。一些例子包括: + +* 为 [REST][4] API 建立的缓存机制更加成熟。 +* 用于使用 [REST][4] 来构建 API 的模式已经非常完善。 +* 尽管工程师可能更喜欢 GraphQL 等新技术,但与 GraphQL 相比,市场上的人才库更多是从事于构建基于 [REST][4] 的解决方案。 + +### 结论 + +通过同时提高性能和组织敏捷性,GraphQL 在公司中的采纳在过去几年中猛增。但是,与 RESTful API 设计生态系统相比,它确实还需要更成熟一些。 + +GraphQL 的一大优点是,它并不是作为替代 API 解决方案的批发替代品而设计的。相反,可以实现 GraphQL 来补充或增强现有的 API。因此,鼓励公司探索逐步采用 GraphQL 的方法,这对他们来说最有意义,他们发现它对应用程序性能和组织敏捷性具有最大的积极影响。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/why-use-graphql + +作者:[Zach Lendon][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D +[2]: https://graphql.org/ +[3]: https://opensource.com/article/19/6/what-is-graphql +[4]: https://en.wikipedia.org/wiki/Representational_state_transfer From 64adba476006a7b2c8ff5cc33ce2f8c4a294ed1e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 22:10:00 +0800 Subject: [PATCH 102/218] APL --- sources/talk/20190429 10 moments that shaped Linux history.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20190429 10 moments that shaped Linux history.md b/sources/talk/20190429 10 moments that shaped Linux history.md index 06bbeedacf..26f2c30b81 100644 --- a/sources/talk/20190429 10 moments that shaped Linux history.md +++ b/sources/talk/20190429 10 moments that shaped Linux history.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 73e262127cab895ab60cda805f4985898ec18014 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 31 Mar 2020 23:12:38 +0800 Subject: [PATCH 103/218] TSL&PRF --- ...29 10 moments that shaped Linux history.md | 89 ------------------ ...29 10 moments that shaped Linux history.md | 91 +++++++++++++++++++ 2 files changed, 91 insertions(+), 89 deletions(-) delete mode 100644 sources/talk/20190429 10 moments that shaped Linux history.md create mode 100644 translated/talk/20190429 10 moments that shaped Linux history.md diff --git a/sources/talk/20190429 10 moments that shaped Linux history.md b/sources/talk/20190429 10 moments that shaped Linux history.md deleted file mode 100644 index 26f2c30b81..0000000000 --- a/sources/talk/20190429 10 moments that shaped Linux history.md +++ /dev/null @@ -1,89 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (10 moments that shaped Linux history) -[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history) -[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) - -10 moments that shaped Linux history -====== -Linux has come a long way since 1991. These events mark its evolution. -![Penguin with green background][1] - -In August 2018, Opensource.com posted a poll with seven options asking readers: _[What was the most important moment in the history of Linux?][2]_ I thought I would expand on the list and present 10 moments that I think have played an important part in shaping the history of Linux. - -### 1\. Linus releases Linux - -Linus Torvalds initially released Linux to the world in 1991 as a hobby. It didn't remain a hobby for long! - -### 2\. Linux distributions - -In 1993, several Linux distributions were founded, notably [Debian][3], [Red Hat][4], and [Slackware][5]. These were important because they demonstrated Linux's gains in market acceptance and development that enabled it to survive the tumultuous OS wars, browser wars, and protocol wars of the 1990s. In contrast, many established, commercial, and proprietary products did not make it past the turn of the millennium! - -### 3\. IBM's big investment in Linux - -In 2000, IBM announced it would invest US$1 billion dollars in Linux. In his CNN Money [article about the investment][6], Richard Richtmyer wrote: "The announcement underscores Big Blue's commitment to Linux and marks significant progress in moving the alternative operating system into the mainstream commercial market." - -### 4\. Hollywood adopts Linux - -In 2002, it seemed the entire Hollywood movie industry adopted Linux. [Disney][7], [Dreamworks][8], and [Industrial Light & Magic][9] all began making movies with Linux that year. - -### 5\. Linux for national security - -In 2003, another big moment came with the US government's acceptance of Linux. Red Hat Linux was [awarded][10] the Department of Defense Common Operating Environment (COE) certification. This is significant because the government—intelligence and military agencies in particular—have very strict requirements for computing systems to prevent attacks and support national security. This opened the door for other agencies to use Linux. Later that year, the [National Weather Service announced][11] it would replace outdated systems with new computers running Linux. - -### 6\. The systems I managed - -This "moment" is really a collection of my personal experiences. As my career progressed in the 2000s, I discovered several types of systems and devices that I managed were all running Linux. Some of the places I found Linux were VMware ESX, F5 Big-IP, Check Point UTM Edge, Cisco ASA, and PIX. This made me realize that Linux was truly viable and here to stay. - -### 7\. Ubuntu - -In 2004, Canonical was founded by Mark Shuttleworth to provide an easy-to-use Linux desktop—[Ubuntu Linux][12]—based on the Debian distribution. I think Ubuntu Linux helped to expand the desktop Linux install base. It put Linux in front of many more people, from casual home users to professional software developers. - -### 8\. Google Linux - -Google released two operating systems based on the Linux kernel: the Android mobile operating system in mid-2008 and Chrome OS, running on a Chromebook, in 2011. Since then, millions of Android mobile phones and Chromebooks have been sold. - -### 9\. The cloud is Linux - -In the past 10 years or so, cloud computing has gone from a grandiose vision of computing on the internet to a reinvention of how we use computers personally and professionally. The big players in the cloud space are built on Linux, including [Amazon Web Services][13], [Google Cloud Services][14], and [Linode][15]. Even in cases where we aren't certain, such as Microsoft Azure, running Linux workloads is well supported. - -### 10\. My car runs Linux - -And so will yours! Many automakers began introducing Linux a few years ago. This led to the formation of the collaborative open source project called [Automotive Grade Linux][16]. Major car makers, such as Toyota and Subaru, have joined together to develop Linux-based automotive entertainment, navigation, and engine-management systems. - -#### Share your favorite - -This is my subjective list pulled from archives of Linux articles and events throughout my career, so there may be other more notable moments that I am overlooking. Share in the comments. Also, the [Linux history poll][2] is still open for voting if you're interested. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/4/top-moments-linux-history - -作者:[Alan Formy-Duval][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alanfdoss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background) -[2]: https://opensource.com/article/18/8/linux-history -[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html -[4]: https://brand.redhat.com/foundations/history -[5]: https://opensource.com/article/18/7/stackware-turns-25 -[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux -[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html -[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film -[9]: https://www.linuxjournal.com/article/6011 -[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat -[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html -[12]: https://www.ubuntu.com/about -[13]: https://aws.amazon.com/amazon-linux-2 -[14]: https://cloud.google.com -[15]: https://www.linode.com/docs/getting-started -[16]: https://www.automotivelinux.org diff --git a/translated/talk/20190429 10 moments that shaped Linux history.md b/translated/talk/20190429 10 moments that shaped Linux history.md new file mode 100644 index 0000000000..c9f1328ed2 --- /dev/null +++ b/translated/talk/20190429 10 moments that shaped Linux history.md @@ -0,0 +1,91 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: (wxy) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (10 moments that shaped Linux history) +[#]: via: (https://opensource.com/article/19/4/top-moments-linux-history) +[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) + +塑造 Linux 历史的 10 个时刻 +====== + +> 自 1991 年诞生以来,Linux 已经走了漫长的一段路,而这些事件标志着它的发展。 + +![Penguin with green background][1] + +在 2018 年 8 月,Opensource.com 发布了一项包含七个选项的民意测验,询问读者:[Linux 历史上最重要的时刻是什么?][2]我觉得我需要扩大这个清单,并提出我认为的 10 个在塑造 Linux 历史上发挥了重要作用的时刻。 + +### 1、Linus 发布 Linux + +Linus Torvalds 最初是在 1991 年将 Linux 当成一个业余爱好发布到世上的。结果这个业余爱好成了他的职业! + +### 2、出现 Linux 发行版 + +1993 年,出现了几个 Linux 发行版,需要特别指出的有 [Debian][3]、[Red Hat][4] 和 [Slackware][5]。这个时刻之所以重要是因为它们证明了 Linux 在市场认可度和开发水平方面的成就,使其能够在 1990 年代动荡的操作系统战争、浏览器战争和协议战争中生存下来。相反,那时许多成熟的、商业的和专有的产品并没有活过千禧年之交! + +### 3、IBM 斥巨资投注 Linux + +2000 年,IBM 宣布将在 Linux 上投资 10 亿美元。Richard Richtmyer 在他的 CNN Money [有关投资的文章][6] 中写道:“这一声明强调了蓝色巨人对 Linux 的承诺,标志着将这个替代操作系统推向主流商业市场的重大进展。” + +### 4、好莱坞接纳 Linux + +在 2002 年,整个好莱坞电影业似乎都采用了 Linux。[迪尼斯][7]、[梦工厂][8] 和 [工业光魔][9] 都在那一年开始用 Linux 制作电影。 + +### 5、Linux 得到政府认可 + +2003 年,美国政府对 Linux 的接受是它的又一个重要时刻。红帽 Linux 被[授予][10]美国防部通用操作环境(COE)认证。这很重要,因为政府(特别是情报和军事机构)对计算机系统有非常严格的要求,以防止攻击和支持国家安全。这为其他机构使用 Linux 打开了大门。在那年晚些时候,[美国国家气象局宣布][11],它将用运行 Linux 的新计算机代替过时的系统。 + +### 6、我管理的系统 + +这个“时刻”确实是我个人经历的集合。随着在 2000 年代我的职业发展,我发现自己管理的几种类型的系统和设备都运行着 Linux。我在 VMware ESX、F5 Big-IP、Check Point UTM Edge、Cisco ASA 和 PIX 这些地方发现了 Linux。这使我意识到 Linux 确实可行并且可以继续存在下去。 + +### 7、Ubuntu + +2004 年,Mark Shuttleworth 创立了 Canonical,该公司基于 Debian 发行版提供了易于使用的 Linux 桌面:[Ubuntu Linux][12]。我认为 Ubuntu Linux 帮助扩展了桌面 Linux 安装基数。从休闲的家庭用户到专业软件开发人员,它使 Linux 出现在更多人面前。 + +### 8、Google 的 Linux + +Google 发行了两种基于 Linux 内核的操作系统:2008 年中期的 Android 移动操作系统和 2011 年在 Chromebook 上运行的 Chrome OS。在那之后,已经售出了数百万部 Android 手机和 Chromebook。 + +### 9、云计算即 Linux + +在过去这十年左右的时间里,云计算已经从互联网计算的宏伟愿景变成了我们如何个人和专业地使用计算机的全新方式。云计算领域中的主要参与者都是构建于 Linux 之上的,包括 [Amazon Web Services(AWS)][13]、[Google Cloud Services(GCS)][14] 和 [Linode][15]。即使在一些我们不能确信的地方(例如 Microsoft Azure),也很好地支持运行 Linux 工作负载。 + +### 10、我的汽车运行着 Linux + +你的也一样!许多汽车制造商几年前开始引入 Linux。这导致了名为 [汽车级 Linux(AGL)][16] 的协作开源项目的形成。丰田和斯巴鲁等主要汽车制造商已经联合开发基于 Linux 的汽车娱乐、导航和引擎管理系统。 + +### 分享你的最爱 + +这是我从贯穿我的职业生涯的 Linux 文章和事件的档案库中提取出来的主观清单,因此可能还有其他更值得注意的时刻。请分享你的评论吧。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/4/top-moments-linux-history + +作者:[Alan Formy-Duval][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/alanfdoss +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background) +[2]: https://opensource.com/article/18/8/linux-history +[3]: https://www.debian.org/doc/manuals/project-history/ch-intro.en.html +[4]: https://brand.redhat.com/foundations/history +[5]: https://opensource.com/article/18/7/stackware-turns-25 +[6]: https://money.cnn.com/2000/12/12/technology/ibm_linux +[7]: https://www.nytimes.com/2002/06/18/business/technology-disney-shifting-to-linux-for-film-animation.html +[8]: https://www.linux.com/news/stallion-and-penguin-dreamworks-uses-linux-create-new-animated-film +[9]: https://www.linuxjournal.com/article/6011 +[10]: https://www.cnet.com/news/government-tips-hat-to-red-hat +[11]: https://www.computerworld.com/article/2574142/national-weather-service-migrates-to-linux-based-ibm-workstations.html +[12]: https://www.ubuntu.com/about +[13]: https://aws.amazon.com/amazon-linux-2 +[14]: https://cloud.google.com +[15]: https://www.linode.com/docs/getting-started +[16]: https://www.automotivelinux.org From f9b4558ec0f5c6a70b7bbc529ad78419fdc47659 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 1 Apr 2020 00:54:45 +0800 Subject: [PATCH 104/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=20How=20?= =?UTF-8?q?to=20Find=20Which=20Graphics=20Card=20do=20You=20Have=20in=20Li?= =?UTF-8?q?nux=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md --- ...hich Graphics Card do You Have in Linux.md | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md diff --git a/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md b/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md new file mode 100644 index 0000000000..18db3d8c8d --- /dev/null +++ b/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md @@ -0,0 +1,102 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Find Which Graphics Card do You Have in Linux?) +[#]: via: (https://itsfoss.com/check-graphics-card-linux/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +How to Find Which Graphics Card do You Have in Linux? +====== + +Be it [Nvidia][1] or [Radeon][2] or Intel, they all may have some issues with Linux. When you are on your way to troubleshoot the graphics problem, the first thing you want to know is which graphics card do you have in your system. + +Linux has several commands to check hardware information. You can use them to check what graphics card (also refer to as video card) do you have. Let me show you a couple of commands to get GPU information in Linux. + +### Check graphics card details in Linux command line + +![][3] + +#### Use lspci command to find graphics card + +The lspci command displays the information about devices connected through [PCI][4] (peripheral Component Interconnect) buses. Basically, this command gives you the detail about all the peripheral devices to your system from keyboard and mouse to sound, network and graphics cards. + +By default, you’ll have a huge list of such peripheral devices. This is why you need to filter the output for graphics card with grep command in this manner: + +``` +lspci | grep VGA +``` + +This should show a one line information about your graphics card: + +``` +[email protected]:~$ lspci | grep VGA +00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02) +``` + +As you can see, my system has Intel HD 620 video card. + +#### Get detailed graphics card information with lshw command in Linux + +The lspci command is good enough to see what graphics card you have but it doesn’t tell you a lot. You can use lshw command to get more information on it. + +This command requires you to have root access. You need to specify that you are looking for video card (graphics card) information in this fashion: + +``` +sudo lshw -C video +``` + +And as you can see in the output below, this command gives more information on the graphics card such as clock rate, width, driver etc. + +``` +[email protected]:~$ sudo lshw -C video +[sudo] password for abhishek: + *-display + description: VGA compatible controller + product: HD Graphics 620 + vendor: Intel Corporation + physical id: 2 + bus info: [email protected]:00:02.0 + version: 02 + width: 64 bits + clock: 33MHz + capabilities: pciexpress msi pm vga_controller bus_master cap_list rom + configuration: driver=i915 latency=0 + resources: irq:139 memory:db000000-dbffffff memory:90000000-9fffffff ioport:f000(size=64) memory:c0000-dffff +``` + +#### Bonus Tip: Check graphics card details graphically + +It’s not that you must use the command line to find graphics card details in Linux. Most Linux distributions (or should I say desktop environments) provide essential details in the settings application. + +For example, if you are using [GNOME desktop environment][5], you can check the details by going to About section of Settings. Here’s what it looks like in [Ubuntu 20.04][6]: + +![Graphics card information check graphically][7] + +I hope you find this quick tip helpful. You can also use the same commands to [find your network adapter][8] and [CPU information in Linux][9]. + +If you have questions or suggestions, don’t hesitate to write a comment. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/check-graphics-card-linux/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://www.nvidia.com/en-us/ +[2]: https://www.amd.com/en/graphics/radeon-rx-graphics +[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/check-gpu-info-linux.jpg?ssl=1 +[4]: https://en.wikipedia.org/wiki/Conventional_PCI +[5]: https://www.gnome.org/ +[6]: https://itsfoss.com/ubuntu-20-04-release-features/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-gpu-check.jpg?ssl=1 +[8]: https://itsfoss.com/find-network-adapter-ubuntu-linux/ +[9]: https://linuxhandbook.com/check-cpu-info-linux/ From 1db93cd1903bfe8d3d8ef3556f2937ce5de8f2a8 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 1 Apr 2020 00:56:32 +0800 Subject: [PATCH 105/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=20IEEE?= =?UTF-8?q?=20Standards=20Association=20Launches=20an=20Open=20Source=20Co?= =?UTF-8?q?llaboration=20Platform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md --- ...s an Open Source Collaboration Platform.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md diff --git a/sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md b/sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md new file mode 100644 index 0000000000..9a6eadffad --- /dev/null +++ b/sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md @@ -0,0 +1,93 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (IEEE Standards Association Launches an Open Source Collaboration Platform) +[#]: via: (https://itsfoss.com/ieee-open-source-collaboration-platform/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +IEEE Standards Association Launches an Open Source Collaboration Platform +====== + +_**Brief: IEEE Standards Association has announced a GitLab-based open source collaboration platform. Read how is it different and what advantages it has.**_ + +[IEEE][1] is the world’s largest technical professional organization dedicated to advancing technology. The IEEE Standards Association (IEEE SA) is an organization within IEEE that develops global standards in a broad range of industries. + +The IEEE Standards Association (SA) has come up with an open-source collaboration platform i.e [IEEE SA Open][2]. + +It is technically a self-hosted GitLab instance combined with [Mattermost][3] (a [slack alternative][4]) and [GitLab Pages][5]. To describe it further, the [official blog post][6] mentioned: + +> The platform enables independent software developers, startups, industry, academic institutions, and others to create, test, manage, and deploy innovative projects in a collaborative, safe, and responsible environment. + +### How is it different or useful? + +The main key attraction for this platform would be IEEE’s members’ network, technical expertise, and resources. + +IEEE President, [Robert Fish][7], also mentions in brief (during an interview with Radio Kan) how it’s different and why IEEE wanted to go with it: + +> Today, much of the world’s infrastructure is run by software, and that software needs to comply with standards in communications networking, electrical grids, agriculture, and the like. + +It makes sense – if we want to improve standardizing technologies, it highly depends on the software. So, this definitely sounds like something to standardize innovative open-source projects to gear them up for potential capital opportunities as well. + +IEEE also clarified that: + +> As software becomes increasingly prevalent in the world today, ethical alignment, reliability, transparency, and democratic governance become must-haves. IEEE is uniquely positioned to endow open-source projects with these attributes. + +While this sounds good, what exactly the open-source platform by the IEEE offer? Let’s take a look at that: + +### IEEE SA Open: Quick overview + +![][8] + +To start with, it is open to all and completely free to use. You just need to create an [IEEE account][9] and then [sign in to the open-source platform][10] to get started. + +Along with the benefits associated with IEEE’s extensive network of Members, you can also expect guidance support from their open-source community managers or community members. + +![Ieee Gitlab][11] + +The platform presents use cases for both standard and non-standard projects, so you can give it a try. + +For its choice to go with GitLab combined with Mattermost and Pages, you get a couple of useful features, they are: + + * Project planning and management features + * Source code management + * Testing, code quality, and continuous integration features + * Docker container registry and Kubernetes integration + * Application release and delivery features + * Integrated Mattermost chat forum w/slash commands; (Android and iPhone apps are fully supported) + * Capable of bridging the gap between Standards development and open source communities to allow for the advancement of nimble and creative technical solutions at a faster pace + * A safe open space with an enforced code of conduct + + + +### Wrapping Up + +It’s obviously a good thing to have more platforms to potentially amplify the exposure of open-source projects – hence, IEEE’s initiative sounds promising to start with. + +What do you think about it? Let me know your thoughts! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ieee-open-source-collaboration-platform/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://www.ieee.org/about/index.html +[2]: https://standards.ieee.org/content/ieee-standards/en/initiatives/opensource/ +[3]: https://mattermost.com/ +[4]: https://itsfoss.com/open-source-slack-alternative/ +[5]: https://docs.gitlab.com/ee/user/project/pages/ +[6]: https://spectrum.ieee.org/the-institute/ieee-products-services/ieee-standards-association-launches-a-platform-for-open-source-collaboration +[7]: https://www.linkedin.com/in/robertsfish/ +[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/ieee-opensource.jpg?ssl=1 +[9]: https://www.ieee.org/profile/public/createwebaccount/showRegister.html +[10]: https://opensource.ieee.org/ +[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ieee-gitlab.jpg?ssl=1 From 22c1de6e7e374b5df3eb8d879d56f2aa35fcdd77 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 1 Apr 2020 00:57:47 +0800 Subject: [PATCH 106/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200331=20How=20?= =?UTF-8?q?failure-driven=20development=20makes=20you=20successful?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200331 How failure-driven development makes you successful.md --- ...driven development makes you successful.md | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sources/tech/20200331 How failure-driven development makes you successful.md diff --git a/sources/tech/20200331 How failure-driven development makes you successful.md b/sources/tech/20200331 How failure-driven development makes you successful.md new file mode 100644 index 0000000000..a9961daabb --- /dev/null +++ b/sources/tech/20200331 How failure-driven development makes you successful.md @@ -0,0 +1,63 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How failure-driven development makes you successful) +[#]: via: (https://opensource.com/article/20/3/failure-driven-development) +[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) + +How failure-driven development makes you successful +====== +I'm the picture in the dictionary next to the word "failure"—and that's +why I'm good at my job. +![failure sign at a party, celebrating failure][1] + +My job title is senior software engineer, but that's not what my closest co-workers call me. They call me "Cherrybomb" because of all the things I blow up. My regularly scheduled failures have been tracked down to our quarterly earnings and outage times. Literally, I am the production disaster you read about that says, "what not to do ever, in any case, at any time." + +I started my career at a helpdesk where I wrote loops that wrecked servers in high-end companies. I have taken production applications down for up to eight hours without warning, and I have destroyed endless numbers of clusters in an attempt to make things better—and a couple just because I mistyped something. + +I am the reason we have disaster recovery (DR) clusters in [Kubernetes][2]. I am the chaos engineer that, without warning, teaches people how to act and troubleshoot quickly when we have an application that has never been tested for an outage recovery plan. I exist as the best example of failure possible, and it's actually the coolest thing ever. + +### Jess and the disappearing K8s clusters + +One of my official responsibilities involves our application architecture. For any sort of architectural change, I get to make and test the code and see what is possible. Recently, this has been an epic pain in my bosses' side, to put it gently. + +We run most of our infrastructure on Kubernetes, which is known for its resiliency. Despite that reputation, I managed to make two clusters just, well, disappear. You may be wondering how I could do that; it's pretty easy: **terraform destroy**. We manage our infrastructure as code through [Terraform][3], and it won't take any knowledge of the software to know that **destroy** can do something bad. Before you panic, it was the dev clusters, so life went on. + +In light of this, it's reasonable to ask why I am still employed—and why am I writing about this. Those are easy to answer: I'm still employed because my infrastructure code updates work better and faster than the code we started with. And am I writing about this because everyone fails regularly; it is so very, very normal. If you're not failing regularly, I don't think you're trying hard enough to learn. + +### Break things and train people + +You'd also think no one would let me train anyone ever; that it's the worst idea ever because (as my team jokes) you should never, ever do the things I do. However, my boss has me train anyone walking in the door pretty regularly. I even provide training for entire teams using our infrastructure or code to teach people how to build their own infrastructure. + +Here's why: Failure is your first step to success. Failure's lesson isn't just "backups are a fantastic idea." No, from failure, you learn to recover faster, troubleshoot quicker, and get amazingly better at your job. When you get amazing at your job, you can train others about what not to do and help them understand how everything works. Because of your experience, they will be a step ahead of you were when you started—and they, too, will most likely fail in new, amazing, epic ways that everyone can learn from. + +### You are only as good as your failures + +Nobody is born with talent in software engineering and cloud infrastructure, just like no one is born walking. We all start by rolling and bumping into things. From there, we learn to crawl and then stand for a moment or two. When we start walking, we fall and scratch our knees, bump our elbows, and—at least in my brother's case—walk right into a table's sharp corner and get stitches in the center of your eyebrow. + +Things take time to learn. Read everything you can get your hands on to help you along your way—but that is always the beginning. Perfection is some fantasy that's impossible to achieve; you must fail to reach success. + +Every step of the way, my failures teach me how to do things better. + +Ultimately, you are only as good as the sum of your failures, because that's what shows you how successful you are. + +Open source is about more than the code, it’s about the culture. The open culture that many open... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/failure-driven-development + +作者:[Jessica Cherry][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jrepka +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_failure_celebrate.png?itok=LbvDAEZF (failure sign at a party, celebrating failure) +[2]: https://www.redhat.com/en/topics/containers/what-is-kubernetes +[3]: https://github.com/hashicorp/terraform From 2c002a3d893225a4c5308080ee609ec246a6cf18 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 1 Apr 2020 00:58:42 +0800 Subject: [PATCH 107/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200331=205=20wa?= =?UTF-8?q?ys=20to=20level=20up=20your=20Vim=20skills?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200331 5 ways to level up your Vim skills.md --- ...0331 5 ways to level up your Vim skills.md | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 sources/tech/20200331 5 ways to level up your Vim skills.md diff --git a/sources/tech/20200331 5 ways to level up your Vim skills.md b/sources/tech/20200331 5 ways to level up your Vim skills.md new file mode 100644 index 0000000000..f5c315b1e7 --- /dev/null +++ b/sources/tech/20200331 5 ways to level up your Vim skills.md @@ -0,0 +1,161 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5 ways to level up your Vim skills) +[#]: via: (https://opensource.com/article/20/3/vim-skills) +[#]: author: (Detlef Johnson https://opensource.com/users/deckart) + +5 ways to level up your Vim skills +====== +Kick your text editor up a notch with a few fun tricks. +![Computer keyboard typing][1] + +Vim is one of the most popular text editors out there, so it is definitely worth taking time to learn how to use it. If the only things you learn how to do with the ubiquitous [Vi(m)][2] command-line text editor are to open a file, enter and edit some text, save the edited files, and exit the program, you will be much better off for it. + +Circumstances where you will find it extremely convenient to know Vim nearly always involve tasks running remote shell operations. If you regularly use secure shell:  + + +``` +`$ ssh user@hostname.provider.com` +``` + +and work with virtual private servers (VPS) or local virtualization containers, for that matter, you could benefit greatly from strong Vim skills. + +### Set Vim as your default text editor + +Vim is readily available in nearly all modern Linux (or BSD) distributions at the terminal emulator shell-command prompt. Once you've defined Vim as your default editor in your user shell, then you can navigate built-in utilities like **$ man** using familiar Vim key bindings. I'll explain how to do that with both Bash and Z shell (zsh), which is now the default shell for macOS users (since Catalina). + +#### Set Vim as default in Bash + +Bash manages settings through a combination of dotfiles. It's most common to add your preferred editor to your **.bashrc** file in your home directory, but it can be added to **.bash_profile** as well. (Read the [GNU Bash documentation][3] to understand the difference). + +Set Vim as your default editor by adding the following to **~/.bashrc**: + + +``` +# set default editor to Vim +export EDITOR=vim +``` + +A line starting with a **#** is an optional comment, which is a good way to remind yourself what a command does. + +#### Set Vim as default in Zsh + +Zsh is an increasingly popular terminal emulator, especially since Apple's FreeBSD-based Darwin system recently switched from Bash to zsh. + +The zsh dotfile parallels Bash's, so you can choose between **~/.zshrc** or **~/.zprofile**. See [the zsh documentation][4] for details on when to use which one. + +Set it as default with: + + +``` +# set default editor to Vim +export EDITOR=vim +``` + +### Optimize your Vim configuration + +Vim, much like a terminal emulator shell, uses dotfiles to set personal preferences. If you spotted the pattern, you might have guessed it's **~/.vimrc**. + +The first setting you may want to change is switching legacy Vi compatibility mode to Off. Since Vim is a superset of Vi, everything in Vi is available and vastly improved in Vim, and you get many advanced features. The latest version (8.2) allows you to open a terminal as a subprocess shell running in a split window. + +As an aside, setting legacy compatibility off might not seem like it's doing anything ([and in fact, it might not be][5]). Vim automatically switches the mode to Off by implication when it encounters a **.vimrc** file. It can still be important at times to explicitly turn it off. The shorthand "nocp" is synonymous with "nocompatible," which also works. There are many "[TIMTOWTDI][6]" conveniences for switching preferences as you work. + +Lines that begin with **"** are comments in **.vimrc** syntax (just like **#** in **.bashrc** files). They can help you remember things like why you chose a cryptic setting name. + +To turn off Vi compatibility, add the following to your **~/.vimrc** file: + + +``` +" ensure that legacy compatibility mode is off +" documentation: ' +set nocp +``` + +### Understand modes + +The notion of Vim's "modes" is very important to learn about, especially the difference between the very distinct **Normal** and **Insert** modes. Confusion about modes is what trips up most new users. Modes aren't unique to Vim, nor were they introduced by Vi. Command mode is so old that it predates the invention of [copy and paste][7] functionality in the 1970s. + +#### Important modes + +Vim depends on different modes to define keyboard-stroke behavior. The important modes to know are: + + * **Normal mode**: Default mode used primarily for navigation and opening files + * **Insert mode** (includes Replace): Where Vim allows for text input to an open file + * **Visual mode**: Where Vim acts similar to mouse-based input, such as copying, editing, replacing, and more + * **Command mode** (including Line, Ex command, and Last-line mode): A powerful way to do more in Vim + + + +Each mode has a great deal to explore. Use [Vimtutor][8] (**$ vimtutor**) to interactively learn about movement, modes, and running Ex commands in "Last Line" mode. Some indispensable productivity operators include: + +**:E** | Opens explorer for locating files and directories +---|--- +**.** | Repeats the last edit action +**;** | Repeats the last motion or movement forward +**,** | Repeats the last motion or movement backward +**/** | Searches document forward +**?** | Searches document backward +***** | Finds next occurrence of the word under the cursor +**#** | Finds the previous occurrence of the word under the cursor +**~** | Toggles case +**%** | Toggles between opening and closing **()**, **[]**, and **{}**; highly useful for coding +**z=** | Makes spelling suggestions + +### Play Vim like a piano + +While it's important to commit Vim's operator "language" to memory, the challenge to gaining mastery is to learn to think like a musician and combine operators and movements into "key chords in harmony" so that you can play Vim like a piano. That's where the power of text manipulation with Vim rivals that of the other notable command-line editor, Emacs. (While one of these editors will wear down your **Esc** key, using the other will wear down your **Ctrl** key.) + +When describing key chords, it's conventional in Vim to designate the **Ctrl** key using the capital letter C, followed by a hyphen (**C-**). It's not universal, but I will follow that convention from here onward and clarify when there is any potential for confusion. + +If you type long lines in Vim, you'll want to set it to wrap your text. To start personalizing Vim for the way you work, think about that setting: How would you like Vim to handle text wrapping by default when it starts? On or off? I like it turned off and leave it out of the runtime commands file. When I want text to wrap, I simply set it in command-line mode with **:set wrap**. + +There's nothing wrong with having Vim set to wrap text by default. It's simply a matter of preference—which can change over time. The same goes for handling paste, code language indent syntax, and the **Tab** key (tabs or spaces? and how many spaces then? Dive into these options [here][9]). All these options for default behavior are entirely configurable and changeable in real time as you work with command-line mode operations. + +You will find many suggestions for setting Vim defaults in community forums, on Vim wikis, and in articles (like this one). Setting preferences for your personal computing environment should be fairly familiar to you, and Vim is no different. I highly recommend that you start by making very small changes to your settings, and make additional changes slowly so that you can easily revert settings. This way, you might avoid the use of plugins for years—or entirely. + +### Splits, tabs, and terminals in Vim 8.2 + +There are two ways to split your working files into different views: they can appear side-by-side, or you can switch between them with full (window) screens using application tabs. These changes to your application window are initiated from command-line mode, which requires a colon (**:**) to call up the prompt. + +Each window split can host a file for editing, and you can arrange tabs to switch between additional files as much as you like. There is limited screen space for splits, so tabs are handy when you want to split more screens. How you decide to work is purely a matter of preference. To split a window horizontally, use **:sp**, and use **:vs** for vertical splits. + +As of [Vim 8.2][10], you can open a terminal shell sub-process in a vertical split with **:vert term** to run operations on the command line right alongside your code. You need to type **exit** to close your terminal process, just like you would end a shell session, but you close splits and tabs the same way you would close any ordinary Vim window, with **:q**. + +To initialize a tab, use a special edit command: **:tabedit**, which automatically switches you to the new open tab. If you give the command a file name as an argument, that file will open for editing. If you neglect to give it a file name as an argument, the command-line mode edit **:e filename.txt** works just like it would in any ordinary Vim window. Navigate tabs with the next (**:tabn**) and previous (**:tabp**) commands. + +To use splits, you need to know how to navigate among them using the key-chord combination **C-w** plus a movement key in the direction you want to move, such as left (**h**), down (**j**), up (**k**), or right (**l**). When you want to learn more key chords specific to splits and tabs, read the **:help split** and **:help tabpage** for the Vim manual entries. + +### Get help + +While the Vim manual is referenced in Vimtutor, opening Vim help with **:help** will let you spend time with the editor on your own and get more productive without wholly relying on articles like this one. Experience is key to Vim mastery. The experience contributes to your overall computing intuition since so much of what has gone into Vim is drawn from the Unix universe. + +Have fun exploring the beauty of Vim, and share any questions you have in the comments. + +Want to become a master of text editing in the terminal, and beyond? These tips for getting started... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/vim-skills + +作者:[Detlef Johnson][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/deckart +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) +[2]: https://www.vim.org/ +[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html +[4]: http://zsh.sourceforge.net/Intro/intro_3.html +[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default +[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it +[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions +[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor +[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse +[10]: https://www.vim.org/vim-8.2-released.php From 827e7108cd4c58e41b5aeea69ef49f59bb36bbca Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 1 Apr 2020 08:19:35 +0800 Subject: [PATCH 108/218] translated --- ...n source tools for sticking to a budget.md | 56 ------------------- ...n source tools for sticking to a budget.md | 55 ++++++++++++++++++ 2 files changed, 55 insertions(+), 56 deletions(-) delete mode 100644 sources/tech/20200326 3 open source tools for sticking to a budget.md create mode 100644 translated/tech/20200326 3 open source tools for sticking to a budget.md diff --git a/sources/tech/20200326 3 open source tools for sticking to a budget.md b/sources/tech/20200326 3 open source tools for sticking to a budget.md deleted file mode 100644 index 66b440be97..0000000000 --- a/sources/tech/20200326 3 open source tools for sticking to a budget.md +++ /dev/null @@ -1,56 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 open source tools for sticking to a budget) -[#]: via: (https://opensource.com/article/20/3/open-source-budget) -[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) - -3 open source tools for sticking to a budget -====== -Find the right solution for you in this roundup of open source budgeting -tools. Plus, learn about an open source tax preparation software. -![A dollar sign in a network][1] - -In light of changing economical times in many countries around the world right now, you may find yourself wanting to revamp or improve your financial situation and your understanding of it. Or, perhaps one of your New Year's resolutions was to start budgeting? You are not alone. - -The best way to stick to that resolution is to keep track of the money you are spending and making on a regular basis. The problem is, many popular personal finance apps out there are proprietary. Are you looking for an open source alternative to Quicken, Mint, or You Need a Budget? Whether you are new to open source software or new to budgeting in general, one of these tools will suit your needs and comfort level.  - -### LibreOffice Calc - -I recommend using LibreOffice Calc to any open source newcomer who wants to start budgeting. If you've used proprietary spreadsheets like Google Sheets or Microsoft Excel, the LibreOffice Calc template will be very familiar. In this [budgeting tutorial][2], author Jess Weichler has done a lot of the work for you by including a handy, downloadable template. The template already has expense categories like utility bills, groceries, dining out, and more, but you have the freedom to customize it to your lifestyle. In a second article, she shows you how to [create your own templates][3].  - -### HomeBank - -HomeBank is another great option for open source users of all levels. HomeBank is free, yet it has plenty of analysis and transaction features like its proprietary counterparts. In fact, you can export and import Quicken files to HomeBank, which makes transitioning to this open source app a breeze. Finally, you can use a tool to help you make wise decisions about your money without spending more money. Learn how to get started in Jessica Cherry's [tutorial][4].  - -### GnuCash - -Like the other budgeting tools mentioned here, GnuCash can be used on Windows, macOS, and Linux. There is a slew of documentation available, but our very own Don Watkins guides you through the steps of setting up GnuCash on Linux in [this tutorial][5]. Not only is GnuCash a great option for taking control of your personal finances, but it also has features like invoicing to help you manage your small business.  - -### Bonus: OpenTaxSolver - -The dreaded tax season can be a stressful time for many Americans. Many folks purchase TurboTax or use an accountant or tax service to do their taxes. Contrary to popular belief, open source tax preparation software exists! Author Jessica Cherry did the belaboring research and introduces our readers to OpenTaxSolver in [this article][6]. To use OpenTaxSolver successfully, you'll need keen attention to detail, but you won't have to worry about doing the complicated math.  - -Which open source budgeting app will you try? Do you have a favorite tool that I didn't mention in this list? Share your thoughts in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/open-source-budget - -作者:[Lauren Pritchett][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lauren-pritchett -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) -[2]: https://opensource.com/article/20/3/libreoffice-open-source-budget -[3]: https://opensource.com/article/20/3/libreoffice-templates -[4]: https://opensource.com/article/20/2/open-source-homebank -[5]: https://opensource.com/article/20/2/gnucash -[6]: https://opensource.com/article/20/2/open-source-taxes diff --git a/translated/tech/20200326 3 open source tools for sticking to a budget.md b/translated/tech/20200326 3 open source tools for sticking to a budget.md new file mode 100644 index 0000000000..99786659e5 --- /dev/null +++ b/translated/tech/20200326 3 open source tools for sticking to a budget.md @@ -0,0 +1,55 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 open source tools for sticking to a budget) +[#]: via: (https://opensource.com/article/20/3/open-source-budget) +[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) + +3 个控制预算的开源工具 +====== +在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源税收准备软件。 +![A dollar sign in a network][1] + +鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想修改或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你不是一个人。 + +坚持该决心的最佳方法是定期跟踪你的支出和收入。问题是,许多流行的个人理财应用都是专有的。你是否正在寻找 Quicken、Mint 或 You Need a Budget 的开源替代方案?无论你是开源软件新手,还是预算新手,这些工具之一都将满足你的需求和舒适度。 + +### LibreOffice Calc + +我建议希望做预算的任何开源新手使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。 + +### HomeBank + +对于所有的开源用户来说,HomeBank 都是另一个不错的选择。HomeBank 是免费的,但它拥有许多它同类专有软件的分析和交易功能。实际上,你可以将 Quicken 文件导入到 HomeBank 中,这使得转换到它变得轻而易举。最后,你可以使用一种工具来帮助你明智地做出有关资金的决定,而无需花费更多的钱。在 Jessica Cherry 的[教程][4]中学习如何入门。 + +### GnuCash + +就像这里提到的其他预算工具一样,GnuCash 可以在 Windows、macOS 和 Linux 上使用。它提供了大量文档,但 Don Watkins 会在[此教程][5]中指导你在 Linux 上设置 GnuCash。GnuCash 不仅是控制个人财务的绝佳选择,而且还有开发票等功能来帮助你管理小型企业。 + +### 额外一个:OpenTaxSolver + +对许多美国人来说,可怕的税收季可能是一个压力大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,存在开源的税务准备软件!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。 + +你会尝试使用哪个开源预算应用?你是否有我在此列表中未提及的最喜欢的工具?请在评论区分享你的观点。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/open-source-budget + +作者:[Lauren Pritchett][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/lauren-pritchett +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) +[2]: https://opensource.com/article/20/3/libreoffice-open-source-budget +[3]: https://opensource.com/article/20/3/libreoffice-templates +[4]: https://opensource.com/article/20/2/open-source-homebank +[5]: https://opensource.com/article/20/2/gnucash +[6]: https://opensource.com/article/20/2/open-source-taxes From 7b761a7d01541496dfc02b041bdf2c7db5106c44 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 1 Apr 2020 08:23:35 +0800 Subject: [PATCH 109/218] translating --- sources/tech/20190605 What is GraphQL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190605 What is GraphQL.md b/sources/tech/20190605 What is GraphQL.md index 56d0690cca..11b36946f4 100644 --- a/sources/tech/20190605 What is GraphQL.md +++ b/sources/tech/20190605 What is GraphQL.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 772875dbc05dc7a70c652e33ebdcf932269cf985 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 09:33:57 +0800 Subject: [PATCH 110/218] PUB @wxy https://linux.cn/article-12060-1.html --- .../20190429 10 moments that shaped Linux history.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/talk => published}/20190429 10 moments that shaped Linux history.md (97%) diff --git a/translated/talk/20190429 10 moments that shaped Linux history.md b/published/20190429 10 moments that shaped Linux history.md similarity index 97% rename from translated/talk/20190429 10 moments that shaped Linux history.md rename to published/20190429 10 moments that shaped Linux history.md index c9f1328ed2..8dc04ce5de 100644 --- a/translated/talk/20190429 10 moments that shaped Linux history.md +++ b/published/20190429 10 moments that shaped Linux history.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12060-1.html) [#]: subject: (10 moments that shaped Linux history) [#]: via: (https://opensource.com/article/19/4/top-moments-linux-history) [#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) @@ -12,7 +12,7 @@ > 自 1991 年诞生以来,Linux 已经走了漫长的一段路,而这些事件标志着它的发展。 -![Penguin with green background][1] +![](https://img.linux.net.cn/data/attachment/album/202004/01/093243wukmsiwdkkwfrg00.jpg) 在 2018 年 8 月,Opensource.com 发布了一项包含七个选项的民意测验,询问读者:[Linux 历史上最重要的时刻是什么?][2]我觉得我需要扩大这个清单,并提出我认为的 10 个在塑造 Linux 历史上发挥了重要作用的时刻。 From 5825fac64bf34a347dbddd7f431dd4ecd92cce79 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 09:38:11 +0800 Subject: [PATCH 111/218] =?UTF-8?q?=E5=BD=92=E6=A1=A3=20202003?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- published/{ => 202003}/20170918 Fun and Games in Emacs.md | 0 .../{ => 202003}/20180306 Exploring free and open web fonts.md | 0 ...20180522 Advanced use of the less text file viewer in Linux.md | 0 .../20180708 Building a Messenger App- Conversations.md | 0 .../20181231 Troubleshooting hardware problems in Linux.md | 0 published/{ => 202003}/20190113 Editing Subtitles in Linux.md | 0 ...are Files From Linux Command Line Using Firefox Send Client.md | 0 published/{ => 202003}/20190422 9 ways to save the planet.md | 0 ... Disable SSH Access For A Particular User Or Group In Linux.md | 0 .../20190731 How to structure a multi-file C program- Part 2.md | 0 ...813 Building a non-breaking breakpoint for Python debugging.md | 0 .../20190925 Debugging in Emacs- The Grand Unified Debugger.md | 0 ...is an open source scientific calculator for your smartphone.md | 0 .../{ => 202003}/20191223 10 articles to learn Linux your way.md | 0 .../20191223 Prioritizing simplicity in your Python code.md | 0 ...191226 10 Linux command tutorials for beginners and experts.md | 0 .../{ => 202003}/20200113 How to setup a DNS server with bind.md | 0 .../20200121 Syncthing- Open Source P2P File Syncing Tool.md | 0 .../20200123 6 things you should be doing with Emacs.md | 0 ...27 Build your own cloud with Fedora 31 and Nextcloud Server.md | 0 .../20200129 Use Emacs to get social and track your todo list.md | 0 .../20200130 4 open source productivity tools on my wishlist.md | 0 .../20200204 DevOps vs Agile- What-s the difference.md | 0 .../20200211 Basic kubectl and Helm commands for beginners.md | 0 .../20200212 Extend the life of your SSD drive with fstrim.md | 0 ...w to set up your own fast, private open source mesh network.md | 0 published/{ => 202003}/20200214 Linux is our love language.md | 0 .../20200214 PHP Development on Fedora with Eclipse.md | 0 ...9 Basic Vim Commands You Need to Know to Work in Vim Editor.md | 0 ...219 Here Are The Most Beautiful Linux Distributions in 2020.md | 0 ...0219 How to find what you-re looking for on Linux with find.md | 0 .../20200219 Try this Bash script for-large filesystems.md | 0 ...20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md | 0 published/{ => 202003}/20200220 Tools for SSH key management.md | 0 .../{ => 202003}/20200224 Using C and C-- for data science.md | 0 ...hat developers need to know about domain-specific languages.md | 0 .../20200225 3 eBook readers for the Linux desktop.md | 0 .../20200225 7 tips for writing an effective technical resume.md | 0 .../20200226 Use logzero for simple logging in Python.md | 0 ...g between uppercase and lowercase on the Linux command line.md | 0 .../20200302 How to Add New Brushes in GIMP -Quick Tip.md | 0 published/{ => 202003}/20200302 Install GNU Emacs on Windows.md | 0 ...200303 Getting started with the Rust package manager, Cargo.md | 0 ...ource Private Messenger That Doesn-t Need Your Phone Number.md | 0 ...inux Aims to Bring Console Gaming Experience on the Desktop.md | 0 .../20200305 Install and Use Wireshark on Ubuntu Linux.md | 0 ...06 Communicating with other users on the Linux command line.md | 0 ...Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md | 0 .../{ => 202003}/20200309 6 Raspberry Pi tutorials to try out.md | 0 .../20200310 2020 Will Be a Year of Hindsight for SD-WAN.md | 0 ...A Firefox Fork For The Classic Looks and Classic Extensions.md | 0 ...ainers vs. VMs, Istio in production, and more industry news.md | 0 .../20200310 Run Kubernetes on a Raspberry Pi with k3s.md | 0 .../20200311 How to install pip to manage PyPI packages easily.md | 0 ...unched Its Own Linux Distribution But It-s Not for Everyone.md | 0 ... write effective documentation for your open source project.md | 0 ...13 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md | 0 ... GNOME 3.36 Released With Visual - Performance Improvements.md | 0 .../{ => 202003}/20200313 How to Change MAC Address in Linux.md | 0 .../20200314 How to Install Netbeans on Ubuntu and Other Linux.md | 0 .../20200316 Connect your Google Drive to Fedora Workstation.md | 0 .../20200317 Coronavirus challenges remote networking.md | 0 .../20200317 Viewing and configuring password aging on Linux.md | 0 .../20200318 Top 10 open source tools for working from home.md | 0 .../20200319 4 Markdown tools for the Linux command line.md | 0 ...20200319 7 open hardware projects working to solve COVID-19.md | 0 ...19 Fedora 32 Release Date, New Features and Everything Else.md | 0 .../{ => 202003}/20200319 Manually rotating log files on Linux.md | 0 ...ds- Advice on Working From Home during Coronavirus Lockdown.md | 0 .../20200322 Meet DebianDog - Puppy sized Debian Linux.md | 0 ...322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md | 0 .../20200327 How open source software is fighting COVID-19.md | 0 72 files changed, 0 insertions(+), 0 deletions(-) rename published/{ => 202003}/20170918 Fun and Games in Emacs.md (100%) rename published/{ => 202003}/20180306 Exploring free and open web fonts.md (100%) rename published/{ => 202003}/20180522 Advanced use of the less text file viewer in Linux.md (100%) rename published/{ => 202003}/20180708 Building a Messenger App- Conversations.md (100%) rename published/{ => 202003}/20181231 Troubleshooting hardware problems in Linux.md (100%) rename published/{ => 202003}/20190113 Editing Subtitles in Linux.md (100%) rename published/{ => 202003}/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md (100%) rename published/{ => 202003}/20190422 9 ways to save the planet.md (100%) rename published/{ => 202003}/20190527 How To Enable Or Disable SSH Access For A Particular User Or Group In Linux.md (100%) rename published/{ => 202003}/20190731 How to structure a multi-file C program- Part 2.md (100%) rename published/{ => 202003}/20190813 Building a non-breaking breakpoint for Python debugging.md (100%) rename published/{ => 202003}/20190925 Debugging in Emacs- The Grand Unified Debugger.md (100%) rename published/{ => 202003}/20191126 Calculator N- is an open source scientific calculator for your smartphone.md (100%) rename published/{ => 202003}/20191223 10 articles to learn Linux your way.md (100%) rename published/{ => 202003}/20191223 Prioritizing simplicity in your Python code.md (100%) rename published/{ => 202003}/20191226 10 Linux command tutorials for beginners and experts.md (100%) rename published/{ => 202003}/20200113 How to setup a DNS server with bind.md (100%) rename published/{ => 202003}/20200121 Syncthing- Open Source P2P File Syncing Tool.md (100%) rename published/{ => 202003}/20200123 6 things you should be doing with Emacs.md (100%) rename published/{ => 202003}/20200127 Build your own cloud with Fedora 31 and Nextcloud Server.md (100%) rename published/{ => 202003}/20200129 Use Emacs to get social and track your todo list.md (100%) rename published/{ => 202003}/20200130 4 open source productivity tools on my wishlist.md (100%) rename published/{ => 202003}/20200204 DevOps vs Agile- What-s the difference.md (100%) rename published/{ => 202003}/20200211 Basic kubectl and Helm commands for beginners.md (100%) rename published/{ => 202003}/20200212 Extend the life of your SSD drive with fstrim.md (100%) rename published/{ => 202003}/20200214 How to set up your own fast, private open source mesh network.md (100%) rename published/{ => 202003}/20200214 Linux is our love language.md (100%) rename published/{ => 202003}/20200214 PHP Development on Fedora with Eclipse.md (100%) rename published/{ => 202003}/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md (100%) rename published/{ => 202003}/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md (100%) rename published/{ => 202003}/20200219 How to find what you-re looking for on Linux with find.md (100%) rename published/{ => 202003}/20200219 Try this Bash script for-large filesystems.md (100%) rename published/{ => 202003}/20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md (100%) rename published/{ => 202003}/20200220 Tools for SSH key management.md (100%) rename published/{ => 202003}/20200224 Using C and C-- for data science.md (100%) rename published/{ => 202003}/20200224 What developers need to know about domain-specific languages.md (100%) rename published/{ => 202003}/20200225 3 eBook readers for the Linux desktop.md (100%) rename published/{ => 202003}/20200225 7 tips for writing an effective technical resume.md (100%) rename published/{ => 202003}/20200226 Use logzero for simple logging in Python.md (100%) rename published/{ => 202003}/20200228 Converting between uppercase and lowercase on the Linux command line.md (100%) rename published/{ => 202003}/20200302 How to Add New Brushes in GIMP -Quick Tip.md (100%) rename published/{ => 202003}/20200302 Install GNU Emacs on Windows.md (100%) rename published/{ => 202003}/20200303 Getting started with the Rust package manager, Cargo.md (100%) rename published/{ => 202003}/20200303 Session- An Open Source Private Messenger That Doesn-t Need Your Phone Number.md (100%) rename published/{ => 202003}/20200304 Drauger OS Linux Aims to Bring Console Gaming Experience on the Desktop.md (100%) rename published/{ => 202003}/20200305 Install and Use Wireshark on Ubuntu Linux.md (100%) rename published/{ => 202003}/20200306 Communicating with other users on the Linux command line.md (100%) rename published/{ => 202003}/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md (100%) rename published/{ => 202003}/20200309 6 Raspberry Pi tutorials to try out.md (100%) rename published/{ => 202003}/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md (100%) rename published/{ => 202003}/20200310 Basilisk- A Firefox Fork For The Classic Looks and Classic Extensions.md (100%) rename published/{ => 202003}/20200310 Containers vs. VMs, Istio in production, and more industry news.md (100%) rename published/{ => 202003}/20200310 Run Kubernetes on a Raspberry Pi with k3s.md (100%) rename published/{ => 202003}/20200311 How to install pip to manage PyPI packages easily.md (100%) rename published/{ => 202003}/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md (100%) rename published/{ => 202003}/20200312 How to write effective documentation for your open source project.md (100%) rename published/{ => 202003}/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md (100%) rename published/{ => 202003}/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md (100%) rename published/{ => 202003}/20200313 How to Change MAC Address in Linux.md (100%) rename published/{ => 202003}/20200314 How to Install Netbeans on Ubuntu and Other Linux.md (100%) rename published/{ => 202003}/20200316 Connect your Google Drive to Fedora Workstation.md (100%) rename published/{ => 202003}/20200317 Coronavirus challenges remote networking.md (100%) rename published/{ => 202003}/20200317 Viewing and configuring password aging on Linux.md (100%) rename published/{ => 202003}/20200318 Top 10 open source tools for working from home.md (100%) rename published/{ => 202003}/20200319 4 Markdown tools for the Linux command line.md (100%) rename published/{ => 202003}/20200319 7 open hardware projects working to solve COVID-19.md (100%) rename published/{ => 202003}/20200319 Fedora 32 Release Date, New Features and Everything Else.md (100%) rename published/{ => 202003}/20200319 Manually rotating log files on Linux.md (100%) rename published/{ => 202003}/20200322 Linus Torvalds- Advice on Working From Home during Coronavirus Lockdown.md (100%) rename published/{ => 202003}/20200322 Meet DebianDog - Puppy sized Debian Linux.md (100%) rename published/{ => 202003}/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md (100%) rename published/{ => 202003}/20200327 How open source software is fighting COVID-19.md (100%) diff --git a/published/20170918 Fun and Games in Emacs.md b/published/202003/20170918 Fun and Games in Emacs.md similarity index 100% rename from published/20170918 Fun and Games in Emacs.md rename to published/202003/20170918 Fun and Games in Emacs.md diff --git a/published/20180306 Exploring free and open web fonts.md b/published/202003/20180306 Exploring free and open web fonts.md similarity index 100% rename from published/20180306 Exploring free and open web fonts.md rename to published/202003/20180306 Exploring free and open web fonts.md diff --git a/published/20180522 Advanced use of the less text file viewer in Linux.md b/published/202003/20180522 Advanced use of the less text file viewer in Linux.md similarity index 100% rename from published/20180522 Advanced use of the less text file viewer in Linux.md rename to published/202003/20180522 Advanced use of the less text file viewer in Linux.md diff --git a/published/20180708 Building a Messenger App- Conversations.md b/published/202003/20180708 Building a Messenger App- Conversations.md similarity index 100% rename from published/20180708 Building a Messenger App- Conversations.md rename to published/202003/20180708 Building a Messenger App- Conversations.md diff --git a/published/20181231 Troubleshooting hardware problems in Linux.md b/published/202003/20181231 Troubleshooting hardware problems in Linux.md similarity index 100% rename from published/20181231 Troubleshooting hardware problems in Linux.md rename to published/202003/20181231 Troubleshooting hardware problems in Linux.md diff --git a/published/20190113 Editing Subtitles in Linux.md b/published/202003/20190113 Editing Subtitles in Linux.md similarity index 100% rename from published/20190113 Editing Subtitles in Linux.md rename to published/202003/20190113 Editing Subtitles in Linux.md diff --git a/published/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md b/published/202003/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md similarity index 100% rename from published/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md rename to published/202003/20190124 ffsend - Easily And Securely Share Files From Linux Command Line Using Firefox Send Client.md diff --git a/published/20190422 9 ways to save the planet.md b/published/202003/20190422 9 ways to save the planet.md similarity index 100% rename from published/20190422 9 ways to save the planet.md rename to published/202003/20190422 9 ways to save the planet.md diff --git a/published/20190527 How To Enable Or Disable SSH Access For A Particular User Or Group In Linux.md b/published/202003/20190527 How To Enable Or Disable SSH Access For A Particular User Or Group In Linux.md similarity index 100% rename from published/20190527 How To Enable Or Disable SSH Access For A Particular User Or Group In Linux.md rename to published/202003/20190527 How To Enable Or Disable SSH Access For A Particular User Or Group In Linux.md diff --git a/published/20190731 How to structure a multi-file C program- Part 2.md b/published/202003/20190731 How to structure a multi-file C program- Part 2.md similarity index 100% rename from published/20190731 How to structure a multi-file C program- Part 2.md rename to published/202003/20190731 How to structure a multi-file C program- Part 2.md diff --git a/published/20190813 Building a non-breaking breakpoint for Python debugging.md b/published/202003/20190813 Building a non-breaking breakpoint for Python debugging.md similarity index 100% rename from published/20190813 Building a non-breaking breakpoint for Python debugging.md rename to published/202003/20190813 Building a non-breaking breakpoint for Python debugging.md diff --git a/published/20190925 Debugging in Emacs- The Grand Unified Debugger.md b/published/202003/20190925 Debugging in Emacs- The Grand Unified Debugger.md similarity index 100% rename from published/20190925 Debugging in Emacs- The Grand Unified Debugger.md rename to published/202003/20190925 Debugging in Emacs- The Grand Unified Debugger.md diff --git a/published/20191126 Calculator N- is an open source scientific calculator for your smartphone.md b/published/202003/20191126 Calculator N- is an open source scientific calculator for your smartphone.md similarity index 100% rename from published/20191126 Calculator N- is an open source scientific calculator for your smartphone.md rename to published/202003/20191126 Calculator N- is an open source scientific calculator for your smartphone.md diff --git a/published/20191223 10 articles to learn Linux your way.md b/published/202003/20191223 10 articles to learn Linux your way.md similarity index 100% rename from published/20191223 10 articles to learn Linux your way.md rename to published/202003/20191223 10 articles to learn Linux your way.md diff --git a/published/20191223 Prioritizing simplicity in your Python code.md b/published/202003/20191223 Prioritizing simplicity in your Python code.md similarity index 100% rename from published/20191223 Prioritizing simplicity in your Python code.md rename to published/202003/20191223 Prioritizing simplicity in your Python code.md diff --git a/published/20191226 10 Linux command tutorials for beginners and experts.md b/published/202003/20191226 10 Linux command tutorials for beginners and experts.md similarity index 100% rename from published/20191226 10 Linux command tutorials for beginners and experts.md rename to published/202003/20191226 10 Linux command tutorials for beginners and experts.md diff --git a/published/20200113 How to setup a DNS server with bind.md b/published/202003/20200113 How to setup a DNS server with bind.md similarity index 100% rename from published/20200113 How to setup a DNS server with bind.md rename to published/202003/20200113 How to setup a DNS server with bind.md diff --git a/published/20200121 Syncthing- Open Source P2P File Syncing Tool.md b/published/202003/20200121 Syncthing- Open Source P2P File Syncing Tool.md similarity index 100% rename from published/20200121 Syncthing- Open Source P2P File Syncing Tool.md rename to published/202003/20200121 Syncthing- Open Source P2P File Syncing Tool.md diff --git a/published/20200123 6 things you should be doing with Emacs.md b/published/202003/20200123 6 things you should be doing with Emacs.md similarity index 100% rename from published/20200123 6 things you should be doing with Emacs.md rename to published/202003/20200123 6 things you should be doing with Emacs.md diff --git a/published/20200127 Build your own cloud with Fedora 31 and Nextcloud Server.md b/published/202003/20200127 Build your own cloud with Fedora 31 and Nextcloud Server.md similarity index 100% rename from published/20200127 Build your own cloud with Fedora 31 and Nextcloud Server.md rename to published/202003/20200127 Build your own cloud with Fedora 31 and Nextcloud Server.md diff --git a/published/20200129 Use Emacs to get social and track your todo list.md b/published/202003/20200129 Use Emacs to get social and track your todo list.md similarity index 100% rename from published/20200129 Use Emacs to get social and track your todo list.md rename to published/202003/20200129 Use Emacs to get social and track your todo list.md diff --git a/published/20200130 4 open source productivity tools on my wishlist.md b/published/202003/20200130 4 open source productivity tools on my wishlist.md similarity index 100% rename from published/20200130 4 open source productivity tools on my wishlist.md rename to published/202003/20200130 4 open source productivity tools on my wishlist.md diff --git a/published/20200204 DevOps vs Agile- What-s the difference.md b/published/202003/20200204 DevOps vs Agile- What-s the difference.md similarity index 100% rename from published/20200204 DevOps vs Agile- What-s the difference.md rename to published/202003/20200204 DevOps vs Agile- What-s the difference.md diff --git a/published/20200211 Basic kubectl and Helm commands for beginners.md b/published/202003/20200211 Basic kubectl and Helm commands for beginners.md similarity index 100% rename from published/20200211 Basic kubectl and Helm commands for beginners.md rename to published/202003/20200211 Basic kubectl and Helm commands for beginners.md diff --git a/published/20200212 Extend the life of your SSD drive with fstrim.md b/published/202003/20200212 Extend the life of your SSD drive with fstrim.md similarity index 100% rename from published/20200212 Extend the life of your SSD drive with fstrim.md rename to published/202003/20200212 Extend the life of your SSD drive with fstrim.md diff --git a/published/20200214 How to set up your own fast, private open source mesh network.md b/published/202003/20200214 How to set up your own fast, private open source mesh network.md similarity index 100% rename from published/20200214 How to set up your own fast, private open source mesh network.md rename to published/202003/20200214 How to set up your own fast, private open source mesh network.md diff --git a/published/20200214 Linux is our love language.md b/published/202003/20200214 Linux is our love language.md similarity index 100% rename from published/20200214 Linux is our love language.md rename to published/202003/20200214 Linux is our love language.md diff --git a/published/20200214 PHP Development on Fedora with Eclipse.md b/published/202003/20200214 PHP Development on Fedora with Eclipse.md similarity index 100% rename from published/20200214 PHP Development on Fedora with Eclipse.md rename to published/202003/20200214 PHP Development on Fedora with Eclipse.md diff --git a/published/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md b/published/202003/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md similarity index 100% rename from published/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md rename to published/202003/20200219 Basic Vim Commands You Need to Know to Work in Vim Editor.md diff --git a/published/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md b/published/202003/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md similarity index 100% rename from published/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md rename to published/202003/20200219 Here Are The Most Beautiful Linux Distributions in 2020.md diff --git a/published/20200219 How to find what you-re looking for on Linux with find.md b/published/202003/20200219 How to find what you-re looking for on Linux with find.md similarity index 100% rename from published/20200219 How to find what you-re looking for on Linux with find.md rename to published/202003/20200219 How to find what you-re looking for on Linux with find.md diff --git a/published/20200219 Try this Bash script for-large filesystems.md b/published/202003/20200219 Try this Bash script for-large filesystems.md similarity index 100% rename from published/20200219 Try this Bash script for-large filesystems.md rename to published/202003/20200219 Try this Bash script for-large filesystems.md diff --git a/published/20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md b/published/202003/20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md similarity index 100% rename from published/20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md rename to published/202003/20200219 Waterfox- Firefox Fork With Legacy Add-ons Options.md diff --git a/published/20200220 Tools for SSH key management.md b/published/202003/20200220 Tools for SSH key management.md similarity index 100% rename from published/20200220 Tools for SSH key management.md rename to published/202003/20200220 Tools for SSH key management.md diff --git a/published/20200224 Using C and C-- for data science.md b/published/202003/20200224 Using C and C-- for data science.md similarity index 100% rename from published/20200224 Using C and C-- for data science.md rename to published/202003/20200224 Using C and C-- for data science.md diff --git a/published/20200224 What developers need to know about domain-specific languages.md b/published/202003/20200224 What developers need to know about domain-specific languages.md similarity index 100% rename from published/20200224 What developers need to know about domain-specific languages.md rename to published/202003/20200224 What developers need to know about domain-specific languages.md diff --git a/published/20200225 3 eBook readers for the Linux desktop.md b/published/202003/20200225 3 eBook readers for the Linux desktop.md similarity index 100% rename from published/20200225 3 eBook readers for the Linux desktop.md rename to published/202003/20200225 3 eBook readers for the Linux desktop.md diff --git a/published/20200225 7 tips for writing an effective technical resume.md b/published/202003/20200225 7 tips for writing an effective technical resume.md similarity index 100% rename from published/20200225 7 tips for writing an effective technical resume.md rename to published/202003/20200225 7 tips for writing an effective technical resume.md diff --git a/published/20200226 Use logzero for simple logging in Python.md b/published/202003/20200226 Use logzero for simple logging in Python.md similarity index 100% rename from published/20200226 Use logzero for simple logging in Python.md rename to published/202003/20200226 Use logzero for simple logging in Python.md diff --git a/published/20200228 Converting between uppercase and lowercase on the Linux command line.md b/published/202003/20200228 Converting between uppercase and lowercase on the Linux command line.md similarity index 100% rename from published/20200228 Converting between uppercase and lowercase on the Linux command line.md rename to published/202003/20200228 Converting between uppercase and lowercase on the Linux command line.md diff --git a/published/20200302 How to Add New Brushes in GIMP -Quick Tip.md b/published/202003/20200302 How to Add New Brushes in GIMP -Quick Tip.md similarity index 100% rename from published/20200302 How to Add New Brushes in GIMP -Quick Tip.md rename to published/202003/20200302 How to Add New Brushes in GIMP -Quick Tip.md diff --git a/published/20200302 Install GNU Emacs on Windows.md b/published/202003/20200302 Install GNU Emacs on Windows.md similarity index 100% rename from published/20200302 Install GNU Emacs on Windows.md rename to published/202003/20200302 Install GNU Emacs on Windows.md diff --git a/published/20200303 Getting started with the Rust package manager, Cargo.md b/published/202003/20200303 Getting started with the Rust package manager, Cargo.md similarity index 100% rename from published/20200303 Getting started with the Rust package manager, Cargo.md rename to published/202003/20200303 Getting started with the Rust package manager, Cargo.md diff --git a/published/20200303 Session- An Open Source Private Messenger That Doesn-t Need Your Phone Number.md b/published/202003/20200303 Session- An Open Source Private Messenger That Doesn-t Need Your Phone Number.md similarity index 100% rename from published/20200303 Session- An Open Source Private Messenger That Doesn-t Need Your Phone Number.md rename to published/202003/20200303 Session- An Open Source Private Messenger That Doesn-t Need Your Phone Number.md diff --git a/published/20200304 Drauger OS Linux Aims to Bring Console Gaming Experience on the Desktop.md b/published/202003/20200304 Drauger OS Linux Aims to Bring Console Gaming Experience on the Desktop.md similarity index 100% rename from published/20200304 Drauger OS Linux Aims to Bring Console Gaming Experience on the Desktop.md rename to published/202003/20200304 Drauger OS Linux Aims to Bring Console Gaming Experience on the Desktop.md diff --git a/published/20200305 Install and Use Wireshark on Ubuntu Linux.md b/published/202003/20200305 Install and Use Wireshark on Ubuntu Linux.md similarity index 100% rename from published/20200305 Install and Use Wireshark on Ubuntu Linux.md rename to published/202003/20200305 Install and Use Wireshark on Ubuntu Linux.md diff --git a/published/20200306 Communicating with other users on the Linux command line.md b/published/202003/20200306 Communicating with other users on the Linux command line.md similarity index 100% rename from published/20200306 Communicating with other users on the Linux command line.md rename to published/202003/20200306 Communicating with other users on the Linux command line.md diff --git a/published/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md b/published/202003/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md similarity index 100% rename from published/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md rename to published/202003/20200306 Three Ways to Exclude-Hold-Prevent a Specific Package from an apt Upgrade.md diff --git a/published/20200309 6 Raspberry Pi tutorials to try out.md b/published/202003/20200309 6 Raspberry Pi tutorials to try out.md similarity index 100% rename from published/20200309 6 Raspberry Pi tutorials to try out.md rename to published/202003/20200309 6 Raspberry Pi tutorials to try out.md diff --git a/published/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md b/published/202003/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md similarity index 100% rename from published/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md rename to published/202003/20200310 2020 Will Be a Year of Hindsight for SD-WAN.md diff --git a/published/20200310 Basilisk- A Firefox Fork For The Classic Looks and Classic Extensions.md b/published/202003/20200310 Basilisk- A Firefox Fork For The Classic Looks and Classic Extensions.md similarity index 100% rename from published/20200310 Basilisk- A Firefox Fork For The Classic Looks and Classic Extensions.md rename to published/202003/20200310 Basilisk- A Firefox Fork For The Classic Looks and Classic Extensions.md diff --git a/published/20200310 Containers vs. VMs, Istio in production, and more industry news.md b/published/202003/20200310 Containers vs. VMs, Istio in production, and more industry news.md similarity index 100% rename from published/20200310 Containers vs. VMs, Istio in production, and more industry news.md rename to published/202003/20200310 Containers vs. VMs, Istio in production, and more industry news.md diff --git a/published/20200310 Run Kubernetes on a Raspberry Pi with k3s.md b/published/202003/20200310 Run Kubernetes on a Raspberry Pi with k3s.md similarity index 100% rename from published/20200310 Run Kubernetes on a Raspberry Pi with k3s.md rename to published/202003/20200310 Run Kubernetes on a Raspberry Pi with k3s.md diff --git a/published/20200311 How to install pip to manage PyPI packages easily.md b/published/202003/20200311 How to install pip to manage PyPI packages easily.md similarity index 100% rename from published/20200311 How to install pip to manage PyPI packages easily.md rename to published/202003/20200311 How to install pip to manage PyPI packages easily.md diff --git a/published/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md b/published/202003/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md similarity index 100% rename from published/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md rename to published/202003/20200312 Amazon Has Launched Its Own Linux Distribution But It-s Not for Everyone.md diff --git a/published/20200312 How to write effective documentation for your open source project.md b/published/202003/20200312 How to write effective documentation for your open source project.md similarity index 100% rename from published/20200312 How to write effective documentation for your open source project.md rename to published/202003/20200312 How to write effective documentation for your open source project.md diff --git a/published/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md b/published/202003/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md similarity index 100% rename from published/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md rename to published/202003/20200313 6 Best AUR (Arch User Repository) Helpers for Arch Linux.md diff --git a/published/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md b/published/202003/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md similarity index 100% rename from published/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md rename to published/202003/20200313 GNOME 3.36 Released With Visual - Performance Improvements.md diff --git a/published/20200313 How to Change MAC Address in Linux.md b/published/202003/20200313 How to Change MAC Address in Linux.md similarity index 100% rename from published/20200313 How to Change MAC Address in Linux.md rename to published/202003/20200313 How to Change MAC Address in Linux.md diff --git a/published/20200314 How to Install Netbeans on Ubuntu and Other Linux.md b/published/202003/20200314 How to Install Netbeans on Ubuntu and Other Linux.md similarity index 100% rename from published/20200314 How to Install Netbeans on Ubuntu and Other Linux.md rename to published/202003/20200314 How to Install Netbeans on Ubuntu and Other Linux.md diff --git a/published/20200316 Connect your Google Drive to Fedora Workstation.md b/published/202003/20200316 Connect your Google Drive to Fedora Workstation.md similarity index 100% rename from published/20200316 Connect your Google Drive to Fedora Workstation.md rename to published/202003/20200316 Connect your Google Drive to Fedora Workstation.md diff --git a/published/20200317 Coronavirus challenges remote networking.md b/published/202003/20200317 Coronavirus challenges remote networking.md similarity index 100% rename from published/20200317 Coronavirus challenges remote networking.md rename to published/202003/20200317 Coronavirus challenges remote networking.md diff --git a/published/20200317 Viewing and configuring password aging on Linux.md b/published/202003/20200317 Viewing and configuring password aging on Linux.md similarity index 100% rename from published/20200317 Viewing and configuring password aging on Linux.md rename to published/202003/20200317 Viewing and configuring password aging on Linux.md diff --git a/published/20200318 Top 10 open source tools for working from home.md b/published/202003/20200318 Top 10 open source tools for working from home.md similarity index 100% rename from published/20200318 Top 10 open source tools for working from home.md rename to published/202003/20200318 Top 10 open source tools for working from home.md diff --git a/published/20200319 4 Markdown tools for the Linux command line.md b/published/202003/20200319 4 Markdown tools for the Linux command line.md similarity index 100% rename from published/20200319 4 Markdown tools for the Linux command line.md rename to published/202003/20200319 4 Markdown tools for the Linux command line.md diff --git a/published/20200319 7 open hardware projects working to solve COVID-19.md b/published/202003/20200319 7 open hardware projects working to solve COVID-19.md similarity index 100% rename from published/20200319 7 open hardware projects working to solve COVID-19.md rename to published/202003/20200319 7 open hardware projects working to solve COVID-19.md diff --git a/published/20200319 Fedora 32 Release Date, New Features and Everything Else.md b/published/202003/20200319 Fedora 32 Release Date, New Features and Everything Else.md similarity index 100% rename from published/20200319 Fedora 32 Release Date, New Features and Everything Else.md rename to published/202003/20200319 Fedora 32 Release Date, New Features and Everything Else.md diff --git a/published/20200319 Manually rotating log files on Linux.md b/published/202003/20200319 Manually rotating log files on Linux.md similarity index 100% rename from published/20200319 Manually rotating log files on Linux.md rename to published/202003/20200319 Manually rotating log files on Linux.md diff --git a/published/20200322 Linus Torvalds- Advice on Working From Home during Coronavirus Lockdown.md b/published/202003/20200322 Linus Torvalds- Advice on Working From Home during Coronavirus Lockdown.md similarity index 100% rename from published/20200322 Linus Torvalds- Advice on Working From Home during Coronavirus Lockdown.md rename to published/202003/20200322 Linus Torvalds- Advice on Working From Home during Coronavirus Lockdown.md diff --git a/published/20200322 Meet DebianDog - Puppy sized Debian Linux.md b/published/202003/20200322 Meet DebianDog - Puppy sized Debian Linux.md similarity index 100% rename from published/20200322 Meet DebianDog - Puppy sized Debian Linux.md rename to published/202003/20200322 Meet DebianDog - Puppy sized Debian Linux.md diff --git a/published/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md b/published/202003/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md similarity index 100% rename from published/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md rename to published/202003/20200322 Purism Librem Mini- A Privacy-First Linux-Based Mini PC.md diff --git a/published/20200327 How open source software is fighting COVID-19.md b/published/202003/20200327 How open source software is fighting COVID-19.md similarity index 100% rename from published/20200327 How open source software is fighting COVID-19.md rename to published/202003/20200327 How open source software is fighting COVID-19.md From ee061ab1bf9c1d1ac703eafb0081b67d5513fca0 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Wed, 1 Apr 2020 10:05:26 +0800 Subject: [PATCH 112/218] Rename sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md to sources/news/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md --- ... Association Launches an Open Source Collaboration Platform.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md (100%) diff --git a/sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md b/sources/news/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md similarity index 100% rename from sources/tech/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md rename to sources/news/20200401 IEEE Standards Association Launches an Open Source Collaboration Platform.md From 81a52b25b8bab1c1877d58d4f5649615a0bac95f Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Wed, 1 Apr 2020 10:09:08 +0800 Subject: [PATCH 113/218] Rename sources/tech/20200331 How failure-driven development makes you successful.md to sources/talk/20200331 How failure-driven development makes you successful.md --- ...0200331 How failure-driven development makes you successful.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200331 How failure-driven development makes you successful.md (100%) diff --git a/sources/tech/20200331 How failure-driven development makes you successful.md b/sources/talk/20200331 How failure-driven development makes you successful.md similarity index 100% rename from sources/tech/20200331 How failure-driven development makes you successful.md rename to sources/talk/20200331 How failure-driven development makes you successful.md From 2b720b37ffef0210fe20550f3bdd612e01848fe7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 10:50:12 +0800 Subject: [PATCH 114/218] PRF @geekpi --- ... Expiration Date for All Users on Linux.md | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md b/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md index 0991e386b8..7040c3d5fc 100644 --- a/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md +++ b/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to Check Password Expiration Date for All Users on Linux) @@ -10,37 +10,33 @@ 如何在 Linux 上检查所有用户密码到期日期 ====== -如果你在 **[Linux 上启用了密码策略][1]**。 +![](https://img.linux.net.cn/data/attachment/album/202004/01/104918dn0n0anhxoia40rc.jpg) -密码必须在到期前进行更改,并且登录到系统时会收到通知。 +如果你在 [Linux 上启用了密码策略][1]。密码必须在到期前进行更改,并且登录到系统时会收到通知。 -如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。 +如果你很少使用自己的帐户,那么可能由于密码过期而被锁定。在许多情况下,这可能会在[无需密码登录][2]的服务帐户中发生,因为没人会注意到它。 -在许多情况下,这可能会在[无需密码登录][2]的服务帐户中发生,因为没人会注意到它。 - -这将导致停止服务器上配置的 **[cronjob/crontab][3]**。 +这将导致停止服务器上配置的 [cronjob/crontab][3]。 如果如此,该如何缓解这种情况。 -你可以写一个 **[shell 脚本][4]**来获得有关它的通知,我们前一段时间为此写了一篇文章。 - - * **[发送 “X” 日内到期的用户帐户列表邮件的 Bash 脚本][5]** - +你可以写一个 shell 脚本来获得有关它的通知,我们前一段时间为此写了一篇文章。 + * [使用 Bash 脚本发送包含几天内到期的用户账号列表的电子邮件][5] 它将给出天数,但是本文旨在在终端中给你实际日期。 -这可以使用 chage 命令来实现。 +这可以使用 `chage` 命令来实现。 ### 什么是 chage 命令? -chage 代表更改时效 (change age)。它更改用户密码到期信息。 +`chage` 代表更改时效change age。它更改用户密码到期信息。 -chage 命令更改两次密码更改之间的天数,以及最后一次更改密码的日期。 +`chage` 命令可以修改两次密码更改之间的天数,以及最后一次更改密码的日期。 系统使用此信息来确定用户何时应更改密码。 -它允许用户执行其他功能,例如设置帐户到期日期、在到期后将密码设置为无效、显示帐户时效信息、设置密码更改之前的最小和最大天数以及设置到期警告天数。 +它还允许用户执行其他功能,例如设置帐户到期日期、在到期后将密码设置为无效、显示帐户时效信息、设置密码更改之前的最小和最大天数以及设置到期警告天数。 ### 1)如何在 Linux 上检查特定用户的密码到期日期 @@ -60,8 +56,7 @@ Number of days of warning before password expires : 7 ### 2)如何在 Linux 上检查所有用户的密码到期日期 -You can use the chage command directly for a single user, which may not work as expected for many users, but you can use it. -你可以直接对单个用户使用 chage 命令,这对你可以使用的多个用户可能无效。 +你可以直接对单个用户使用 chage 命令,不过可能你对多个用户使用时可能无效。 为此,你需要编写一个小的 shell 脚本。下面的 shell 脚本可以列出添加到系统中的所有用户,包括系统用户。 @@ -111,14 +106,14 @@ via: https://www.2daygeek.com/linux-check-user-password-expiration-date/ 作者:[Magesh Maruthamuthu][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://www.2daygeek.com/author/magesh/ [b]: https://github.com/lujun9972 -[1]: https://www.2daygeek.com/how-to-set-password-complexity-policy-on-linux/ +[1]: https://linux.cn/article-10698-1.html [2]: https://www.2daygeek.com/configure-setup-passwordless-ssh-key-based-authentication-linux/ [3]: https://www.2daygeek.com/linux-crontab-cron-job-to-schedule-jobs-task/ [4]: https://www.2daygeek.com/category/shell-script/ -[5]: https://www.2daygeek.com/bash-script-to-check-user-account-password-expiry-linux/ +[5]: https://linux.cn/article-11781-1.html From ff5dd49a19c4e52267911e0453720dcb1a92f5ea Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 10:50:38 +0800 Subject: [PATCH 115/218] PUB @geekpi https://linux.cn/article-12062-1.html --- ...o Check Password Expiration Date for All Users on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200320 How to Check Password Expiration Date for All Users on Linux.md (98%) diff --git a/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md b/published/20200320 How to Check Password Expiration Date for All Users on Linux.md similarity index 98% rename from translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md rename to published/20200320 How to Check Password Expiration Date for All Users on Linux.md index 7040c3d5fc..1633f32694 100644 --- a/translated/tech/20200320 How to Check Password Expiration Date for All Users on Linux.md +++ b/published/20200320 How to Check Password Expiration Date for All Users on Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12062-1.html) [#]: subject: (How to Check Password Expiration Date for All Users on Linux) [#]: via: (https://www.2daygeek.com/linux-check-user-password-expiration-date/) [#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) From 3d80b17be6aaa9116fadf86386d858a48bcc8c8b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 15:03:24 +0800 Subject: [PATCH 116/218] APL --- ...Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md index 3db70ec4e1..d4242d0473 100644 --- a/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md +++ b/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 831915e13cd5a7a9c6b6589c49bf3af99ef48e85 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 15:45:17 +0800 Subject: [PATCH 117/218] TSL --- ...to a Smart TV With KDE Plasma Bigscreen.md | 96 ------------------- ...to a Smart TV With KDE Plasma Bigscreen.md | 96 +++++++++++++++++++ 2 files changed, 96 insertions(+), 96 deletions(-) delete mode 100644 sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md create mode 100644 translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md diff --git a/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md deleted file mode 100644 index d4242d0473..0000000000 --- a/sources/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen) -[#]: via: (https://itsfoss.com/kde-plasma-bigscreen/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen -====== - -_**Brief: KDE’s upcoming Plasma Bigscreen project lets you use open source technologies to turn your regular TV into a smart one.**_ - -Smart TVs are the new normal these days. Mostly based on Android, these smart TVs let you play YouTube, Netflix, Spotify and other streaming services. You can even use voice commands to control your smart TV. - -One major problem with these so-called [smart TVs are that they probably are spying on you][1]. Your data is being collected with or without your knowledge. - -This is the problem KDE’s [Plasma Bigscreen project][2] is aiming to solve. - -### Plasma Bigscreen: Make your TV smart with open source technologies - -![][3] - -You probably already know about the [KDE][4] project. It started as a Linux desktop environment project more than 20 years ago. The KDE project grew bigger and this is why they created Plasma desktop environment to make it clear that KDE is no more just “K Desktop Environment”. - -The Plasma project itself is quite versatile. You can of course use it on your desktop Linux computer. [Plasma also has a mobile version][5] that you can run on Linux-based smartphones like [Librem5][6] and [PinePhone][7]. - -The Plasma Bigscreen is a new project from KDE that aims to provide interface and features similar to what Smart TVs provide. - -All you need is a [single board computer like Raspberry Pi][8] and a TV with HDMI port. Install Plasma Bigscreen on your device and connect it to your TV. - -### Plasma Bigscreen features: More than just a media server - -![YouTube In Plasma Bigscreen][9] - -Though it may look like one at the first glance, but Plasma Bigscreen is not like Kodi and other [media servers for Linux][10]. It’s more than that. - -#### Control with your regular remote - -You don’t need a new specialized remote control. Thanks to [CEC][11], you can use your regular TV remote control. - -#### Voice control with open source Mycroft AI - -Plasma Bigscreen takes advantage of the open source Mycroft AI project. With Mycroft built in to Bigscreen, you can use voice command to play content, check weather and control other aspects of your smart TV. You can further train this AI by teaching it new skills. - -#### Traditional desktop applications - -Plasma Bigscreen delivers not only media-rich applications, but also traditional desktop applications redesigned to fit the Bigscreen experience. - -#### Free and open source software - -The most important feature is that it is an open source project and it uses other open source technologies to give you the complete control over your data and your smart TV. - -Since it is open source, I believe once it is released, there will be a few vendors providing it as a plug and play device. - -### How to get Plasma Bigscreen? - -Plasma Bigscreen is still in beta phase and there is no definite timeline for the stable release. - -However, the beta version is also working good on devices like Raspberry Pi 4. Here’s a video by one of the developers working on this project. - -[Subscribe to our YouTube channel for more Linux videos][12] - -If you have a Raspberry Pi 4, you can [download Plasma Bigscreen][13] beta version from its official download page and follow the steps [here][14] to install it. - -Personally, I am really excited about it. I am going to take out some time and try it on my [Raspberry Pi 4][15]. What about you? Do you think the project has potential? Will you give it a try? - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/kde-plasma-bigscreen/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.zdnet.com/article/fbi-warns-about-snoopy-smart-tvs-spying-on-you/ -[2]: https://plasma-bigscreen.org/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/plasma-bigscreen-menu.jpg?ssl=1 -[4]: https://kde.org/ -[5]: https://itsfoss.com/kde-announces-plasma-mobile/ -[6]: https://itsfoss.com/librem-linux-phone/ -[7]: https://itsfoss.com/pinephone/ -[8]: https://itsfoss.com/raspberry-pi-alternatives/ -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/youtube-in-plasma-bigscreen.jpg?ssl=1 -[10]: https://itsfoss.com/best-linux-media-server/ -[11]: http://libcec.pulse-eight.com/ -[12]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 -[13]: https://plasma-bigscreen.org/#download-jumpto -[14]: https://plasma-bigscreen.org/manual/ -[15]: https://itsfoss.com/raspberry-pi-4/ diff --git a/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md new file mode 100644 index 0000000000..6e62546f5a --- /dev/null +++ b/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md @@ -0,0 +1,96 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen) +[#]: via: (https://itsfoss.com/kde-plasma-bigscreen/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +用 KDE “等离子大屏幕”把你的普通电视变成智能电视 +====== + +> KDE 即将推出的“等离子大屏幕”项目可让你使用开源技术将普通电视变成智能电视。 + +如今,智能电视已成为新的常态。这些智能电视主要基于 Android,可让你播放 YouTube、Netflix、Spotify 和其他流媒体服务。你甚至可以使用语音命令来控制你的智能电视。 + +这些所谓的“智能电视”的一个主要问题是它们可能正在[监视你][1]。你的数据在你或许知道或许不知道的情况下被收集。 + +这就是 KDE 的“[等离子大屏幕项目][2]”旨在解决的问题。(LCTT 译注: 等离子Plasma恰是 KDE 桌面环境的名称。) + +### 等离子大屏幕:通过开源技术使电视更智能 + +![][3] + +你可能了解 [KDE][4] 项目。它开始是一个 Linux 桌面环境项目,发展了 20 多年后,KDE 项目变得越来越大,这就是为什么他们创建了 Plasma 桌面环境的原因,以明确表明 KDE 不再仅仅是“K 桌面环境K Desktop Environment(KDE)”了。 + +Plasma 项目本身具有多种用途,当然,你可以在台式机 Linux 计算机上使用它,而 [Plasma 也具有移动版本][5],你可以在基于 Linux 的智能手机上运行它,例如 [Librem5][6] 和 [PinePhone][7]。 + +“等离子大屏幕”是 KDE 的一个新项目,旨在提供类似于智能电视所提供的界面和功能。 + +你需要的是一台[树莓派之类的单板计算机][8]和一台带 HDMI 端口的电视,然后在你的树莓派设备上安装“等离子大屏幕”,将其连接到电视就行。 + +### “等离子大屏幕”的功能:不仅仅是媒体服务器 + +![YouTube In Plasma Bigscreen][9] + +乍一看,它看起来很像是一个媒体服务器,但“等离子大屏幕”却与 Kodi 和其它 [Linux 媒体服务器][10] 不同,它不止于此。 + +#### 使用常规遥控器进行控制 + +你不需要新的专用遥控器。多亏了 [CEC][11],你可以使用常规的电视遥控器。 + +####带有开源 Mycroft AI 的语音控制 + +“等离子大屏幕”利用了开源 Mycroft AI 项目。借助“等离子大屏幕”内置的 Mycroft AI,你可以使用语音命令播放内容、检查天气并控制智能电视的其他方面。你可以通过教它新技能来进一步训练它。 + +#### 传统的桌面应用程序 + +“等离子大屏幕”不仅提供丰富的媒体应用程序,还提供经过重新设计以适合它的体验的传统桌面应用程序。 + +#### 自由开源软件 + +最重要的是它是一个开源项目,它使用其他开源技术为你提供对数据和智能电视的完全控制。 + +由于它是开源的,我相信一旦发布,就会有一些供应商将其作为即插即用设备提供。 + +### 如何获取“等离子大屏幕”? + +“等离子大屏幕”仍处于测试阶段,没有确定稳定版发布的时间表。 + +但是,测试版已经可以在树莓派 4 等设备上正常运行。下面是一个从事此项目的开发人员的视频。 + +- [video](https://youtu.be/iOxMuexAPaQ) + +如果你有树莓派 4,则可以从其官方下载页面上下载“[等离子大屏幕][13]”的测试版,然后按照[此处][14]的步骤进行安装。 + +就个人而言,我对此感到非常兴奋。我要花一些时间在[树莓派 4][15]上尝试一下。你呢?你认为该项目具有潜力吗?你想试试看吗? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/kde-plasma-bigscreen/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://www.zdnet.com/article/fbi-warns-about-snoopy-smart-tvs-spying-on-you/ +[2]: https://plasma-bigscreen.org/ +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/plasma-bigscreen-menu.jpg?ssl=1 +[4]: https://kde.org/ +[5]: https://itsfoss.com/kde-announces-plasma-mobile/ +[6]: https://itsfoss.com/librem-linux-phone/ +[7]: https://itsfoss.com/pinephone/ +[8]: https://itsfoss.com/raspberry-pi-alternatives/ +[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/youtube-in-plasma-bigscreen.jpg?ssl=1 +[10]: https://itsfoss.com/best-linux-media-server/ +[11]: http://libcec.pulse-eight.com/ +[12]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[13]: https://plasma-bigscreen.org/#download-jumpto +[14]: https://plasma-bigscreen.org/manual/ +[15]: https://itsfoss.com/raspberry-pi-4/ From 1f9d578b309a200b22bbb5785808b30b2caef995 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 19:55:06 +0800 Subject: [PATCH 118/218] PRF --- ...nto a Smart TV With KDE Plasma Bigscreen.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md index 6e62546f5a..a12268a7f9 100644 --- a/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md +++ b/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen) @@ -16,17 +16,17 @@ 这些所谓的“智能电视”的一个主要问题是它们可能正在[监视你][1]。你的数据在你或许知道或许不知道的情况下被收集。 -这就是 KDE 的“[等离子大屏幕项目][2]”旨在解决的问题。(LCTT 译注: 等离子Plasma恰是 KDE 桌面环境的名称。) +这就是 KDE 的“[等离子大屏幕项目][2]”旨在解决的问题。(LCTT 译注: 等离子Plasma恰是 KDE 桌面环境的名称,和大屏幕Bigscreen很搭,因此这个惯常不翻译的名称这里翻译出来。) -### 等离子大屏幕:通过开源技术使电视更智能 +### “等离子大屏幕”:通过开源技术使电视更智能 ![][3] -你可能了解 [KDE][4] 项目。它开始是一个 Linux 桌面环境项目,发展了 20 多年后,KDE 项目变得越来越大,这就是为什么他们创建了 Plasma 桌面环境的原因,以明确表明 KDE 不再仅仅是“K 桌面环境K Desktop Environment(KDE)”了。 +你可能了解 [KDE][4] 项目。它开始是一个 Linux 桌面环境项目,而在发展了 20 多年后,KDE 项目变得越来越大,这就是为什么他们创建了 Plasma 桌面环境的原因,以明确表明 KDE 不再仅仅是“K 桌面环境K Desktop Environment(KDE)”了。 Plasma 项目本身具有多种用途,当然,你可以在台式机 Linux 计算机上使用它,而 [Plasma 也具有移动版本][5],你可以在基于 Linux 的智能手机上运行它,例如 [Librem5][6] 和 [PinePhone][7]。 -“等离子大屏幕”是 KDE 的一个新项目,旨在提供类似于智能电视所提供的界面和功能。 +“等离子大屏幕Plasma Bigscreen”是 KDE 的一个新项目,旨在提供类似于智能电视所提供的界面和功能。 你需要的是一台[树莓派之类的单板计算机][8]和一台带 HDMI 端口的电视,然后在你的树莓派设备上安装“等离子大屏幕”,将其连接到电视就行。 @@ -34,19 +34,19 @@ Plasma 项目本身具有多种用途,当然,你可以在台式机 Linux 计 ![YouTube In Plasma Bigscreen][9] -乍一看,它看起来很像是一个媒体服务器,但“等离子大屏幕”却与 Kodi 和其它 [Linux 媒体服务器][10] 不同,它不止于此。 +乍一看,它看起来很像是一个媒体服务器,但“等离子大屏幕”却和 Kodi 及其它 [Linux 媒体服务器][10] 不同,它不止于此。 #### 使用常规遥控器进行控制 你不需要新的专用遥控器。多亏了 [CEC][11],你可以使用常规的电视遥控器。 -####带有开源 Mycroft AI 的语音控制 +#### 带有开源 Mycroft AI 的语音控制 “等离子大屏幕”利用了开源 Mycroft AI 项目。借助“等离子大屏幕”内置的 Mycroft AI,你可以使用语音命令播放内容、检查天气并控制智能电视的其他方面。你可以通过教它新技能来进一步训练它。 #### 传统的桌面应用程序 -“等离子大屏幕”不仅提供丰富的媒体应用程序,还提供经过重新设计以适合它的体验的传统桌面应用程序。 +“等离子大屏幕”不仅提供丰富的媒体应用程序,还提供经过重新设计,适合它的体验的传统桌面应用程序。 #### 自由开源软件 @@ -73,7 +73,7 @@ via: https://itsfoss.com/kde-plasma-bigscreen/ 作者:[Abhishek Prakash][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 5070544f740aba199f55639c98a14600f0952ceb Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 1 Apr 2020 19:55:40 +0800 Subject: [PATCH 119/218] PUB @wxy https://linux.cn/article-12063-1.html --- ...ur Regular TV into a Smart TV With KDE Plasma Bigscreen.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md (98%) diff --git a/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md b/published/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md similarity index 98% rename from translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md rename to published/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md index a12268a7f9..fd51a345f3 100644 --- a/translated/tech/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md +++ b/published/20200329 Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12063-1.html) [#]: subject: (Turn Your Regular TV into a Smart TV With KDE Plasma Bigscreen) [#]: via: (https://itsfoss.com/kde-plasma-bigscreen/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) From 2e12f52a83026136b1d193573673084994992177 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 2 Apr 2020 00:59:39 +0800 Subject: [PATCH 120/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200402=20How=20?= =?UTF-8?q?to=20Upgrade=20to=20Ubuntu=2020.04=20Beta=20from=2018.04=20&=20?= =?UTF-8?q?19.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md --- ...to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md diff --git a/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md new file mode 100644 index 0000000000..aa74979e36 --- /dev/null +++ b/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md @@ -0,0 +1,135 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10) +[#]: via: (https://itsfoss.com/upgrade-ubuntu-beta/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10 +====== + +[Ubuntu 20.04 LTS release][1] is less than a month away. It has plenty of visual changes and several performance improvements. + +If you are still using Ubuntu 18.04 LTS, you’ll find Ubuntu 20.04 stunningly beautiful with its dark Yaru theme. Here’s a [video showing what Ubuntu 20.04 looks like][2]. Have a look and judge it yourself. + +[Subscribe to our YouTube channel for more Linux videos][3] + +Looks great, isn’t it? If you are excited about Ubuntu 20.04 and cannot wait till the final stable release on 23rd April, you can start using it even today. It’s fairly stable and it could even help Ubuntu team in testing this release. + +There’s always the option to download the daily build and install it afresh. But if you are using Ubuntu 18.04 or Ubuntu 19.10, you can upgrade to Ubuntu 20.04 beta from your existing system. + +Please check this tutorial to learn [how to find out which Ubuntu version you are using][4]. + +In this tutorial, I’ll show you the steps to upgrade to Ubuntu 20.04 beta. + +### How to upgrade to Ubuntu 20.04 beta from Ubuntu 18.04 and 19.10 + +![Upgrade Ubuntu 20 04 Beta][5] + +Before you see the steps, let me answer some of the common questions regarding upgrading to Ubuntu beta version. + + * The upgrade from one version to another is an easy process but you need to have a good internet connection that could download a couple of GBs of data at a good speed. + * Upgrading to a newer version disables the third-party repositories ([PPA][6] you added on your own). Some of these PPAs might not be available for the new version yet. You can manually enable the PPAs after upgrading. + * Having a backup of your important data on an external USB disk is always recommended. Just copy all your important files from Documents, Pictures, Music, Downloads and other places and put it on an external USB or hard disk. + * Once you have upgraded to a newer version, you cannot go back to the older version you were using. Reinstalling the older version is the only option. + * If you upgrade to the Ubuntu 20.04 beta version, you don’t need to install it again when the final stable version is released. Just update your Ubuntu system regularly and you’ll already be using the same 20.04 when it is released. + * You cannot upgrade to Ubuntu 20.04 directly from Ubuntu 16.04, 17, 18, 19.04. + + + +Alright! You know enough now. Let’s see the steps to upgrade to Ubuntu 20.04 beta from Ubuntu 19.10 and 18.04. + +#### Step 1: Make sure the settings are right + +Go to Software & Updates application: + +![Software & Updates application in Ubuntu][7] + +In the Updates tab, check that Notify me of a new Ubuntu version is set to “Any new version” or “LTS version”: + +![Ubuntu Upgrade Version Settings][8] + +This may reload the Software repository cache. + +#### Step 2: Update your system for any pending software updates + +Once you have the correct settings in place, open a terminal ([use Ctrl+Alt+T shortcut in Ubuntu][9]) and use the following [command to update your Ubuntu system][10]: + +``` +sudo apt update && sudo apt full-upgrade +``` + +The apt full-upgrade or dist-upgrade function the same as ‘apt upgrade’ but it will remove currently installed packages if this is needed to upgrade the system as a whole (i.e. a version upgrade). + +Your system may ask to restart after installing updates. That’s fine. Restart and resume upgrading to beta release from step 3. + +#### Step 3: Run update manager with development release upgrade option + +Now that you have all the necessary updates installed, you can open the update manager but with -d option. The -d option tells it to look for development releases. + +``` +update-manager -d +``` + +It may take a couple of minutes before informing you that a new version of Ubuntu is available. + +![Availability of Ubuntu 20.04 in Ubuntu 19.10][11] + +A similar message is displayed in Ubuntu 18.04 as well: + +![Availability of Ubuntu 20.04 in Ubuntu 18.04][12] + +Hit the upgrade button when you see the above message. + +#### Step 4: Start upgrading to Ubuntu 20.04 beta + +The rest of the upgrade procedure is basically waiting for update downloads and clicking okay wherever requested. + +![][13] + +Hit the upgrade button and follow the on-screen instructions. + +![][14] + +You might be notified that all the third party sources have been disabled. At some point, it will also inform you of the packages that will be upgraded, removed etc. It will also ask if you want to keep obsolete packages or not. I prefer to remove them. + +Depending on your internet speed, the upgrade may take a couple of hours. Once the upgrade process is complete, you’ll be asked to restart your system. + +![][15] + +This video shows all the steps in action: + +See, it wasn’t that difficult. Enjoy all the new features in Ubuntu 20.04. + +Questions or suggestions? Feel free to leave a comment below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/upgrade-ubuntu-beta/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/ubuntu-20-04-release-features/ +[2]: https://www.youtube.com/watch?v=9u5B0njRgOw +[3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[4]: https://itsfoss.com/how-to-know-ubuntu-unity-version/ +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-beta.jpg?ssl=1 +[6]: https://itsfoss.com/ppa-guide/ +[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/software-updates-app-ubuntu.jpg?ssl=1 +[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-upgrade-version-settings.jpg?ssl=1 +[9]: https://itsfoss.com/ubuntu-shortcuts/ +[10]: https://itsfoss.com/update-ubuntu/ +[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04.jpg?ssl=1 +[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-from-18-04.jpg?ssl=1 +[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-1.jpg?ssl=1 +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-2.jpg?ssl=1 +[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/restart-to-finish-beta-upgarde-ubuntu-20-04.jpg?ssl=1 From f7cd942c36141fb711cbfb1ec631d43a42fcbaed Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 2 Apr 2020 01:02:23 +0800 Subject: [PATCH 121/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=203=20Py?= =?UTF-8?q?thon=20templating=20languages=20you=20should=20(probably)=20nev?= =?UTF-8?q?er=20use?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200401 3 Python templating languages you should (probably) never use.md --- ...nguages you should (probably) never use.md | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 sources/tech/20200401 3 Python templating languages you should (probably) never use.md diff --git a/sources/tech/20200401 3 Python templating languages you should (probably) never use.md b/sources/tech/20200401 3 Python templating languages you should (probably) never use.md new file mode 100644 index 0000000000..e23b443b0d --- /dev/null +++ b/sources/tech/20200401 3 Python templating languages you should (probably) never use.md @@ -0,0 +1,180 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 Python templating languages you should (probably) never use) +[#]: via: (https://opensource.com/article/20/4/python-templating-languages) +[#]: author: (Moshe Zadka https://opensource.com/users/moshez) + +3 Python templating languages you should (probably) never use +====== +Python has accumulated a lot of templating languages, including these +three that are perfect for April Fools' Day. +![Hands on a keyboard with a Python book ][1] + +When reaching for a templating language for writing a [Python][2] web application, there are an abundance of robust solutions.  + +There are [Jinja2][3], [Genshi, and Mako][4]. There are even solutions like [Chameleon][5], which are a bit older, but still recommended by the [Pyramid][6] framework. + +Python has been around for a long time. In that time, deep in the corners of its system, it has accumulated some almost forgotten templating languages that are well worth poking at. + +Like cute koalas on top of a eucalyptus tree, happy in their ecological niche, and sometimes as dangerous to work with, these are the templating languages few have heard of—and even fewer should use. + +### 3\. string.Template + +Have you ever wondered, "How can I get a templating language with no features, but also without needing to **pip install** anything?" The Python standard library has you covered. While it does no looping or conditionals, the **string.Template** class is a minimal templating language. + +Using it is simplicity itself. + + +``` +>>> import string +>>> greeting = string.Template("Hello, $name, good $time!") +>>> greeting.substitute(name="OpenSource.com", time="afternoon") +'Hello, OpenSource.com, good afternoon!' +``` + +### 2\. twisted.web.template + +What gift do you give the library that has everything? + +Not a templating language, certainly, because it already has one. Nestled in **twisted.web.template** are two templating languages. One is XML-based and has a [great tutorial][7]. + +But there is another one, one that is based on using Python as a domain-specific language to produce HTML documents. + +It is based on two primitives: **twisted.web.template.tags**, which contains tag objects, and **twisted.web.template.flattenString**, which will render them. Because it is part of Twisted, it has built-in support for rendering async results efficiently. + +This example will render a silly little page: + + +``` +async def render(reactor): +    my_title = "A Fun page" +    things = ["one", "two", "red", "blue"] +    template = tags.html( +            tags.head( +                tags.title(my_title), +            ), +            tags.body( +                tags.h1(my_title), +                tags.ul( +                    [tags.li(thing) for thing in things], +                ), +                tags.p( +                    task.deferLater(reactor, 3, lambda: "Hello "), +                    task.deferLater(reactor, 3, lambda: "world!"), +                ) +            ) +    ) +    res = await flattenString(None, template) +    res = res.decode('utf-8') +    with open("hello.html", 'w') as fpout: +        fpout.write(res) +``` + +The template is regular Python code that uses the **tags.<TAGNAME>** to indicate the hierarchy. It natively supports strings as renderables, so any string is fine. + +To render it, the only things you need to do are to add a preamble: + + +``` +from twisted.internet import task, defer +from twisted.web.template import tags, flattenString + +def main(reactor): +    return defer.ensureDeferred(render(reactor)) +``` + +and an epilogue to run the whole thing: + + +``` +`task.react(main)` +``` + +In just _three_ seconds (and not _six_), it will render a nice HTML page. In real-life, those **deferLater**s can be, for example, calls to an HTTP API: they will be sent and processed in parallel, without having to put in any effort. I recommend you instead read about a [far better use for Twisted][8]. But still, this works. + +### 1\. Quixote + +You will say, "But Python is not _optimized_ for being an HTML-spouting domain-specific language." What if, instead of settling for Python-as-is, there was a language that [transpiles][9] to Python, but is better at defining templates? A "Python template language" (PTL), if you will. + +Writing your own language is sometimes said to be a dreamer's project for someone who tilts at windmills. Irony was not lost on the creators of Quixote (available on [PyPI][10]) when they decided to do exactly that. + +The following will render an equivalent template to the one done with Twisted above. _Warning: the following is not valid Python_: + + +``` +import time + +def render [html] (): +    my_title = "A Fun page" +    things = ["one", "two", "red", "blue"] +    "<html><head><title>" +    my_title +    "</head></title><body><h1>" +    my_title +    "</h1>" +    "<ul>" +    for thing in things: +        "<li>" +        thing +        "</li>" +    "<p>" +    time.sleep(3) +    (lambda: "Hello ")() +    time.sleep(3) +    (lambda: "world!")() +    "</p>" +    "</body></html>" + +def write(): +    result = render() +    with open("hello.html", 'w') as fpout: +        fpout.write(str(result)) +``` + +However, if you put it in a file called **template.ptl**, you can make it importable to Quixote and write out the rendered version of the template: + + +``` +>>> from quixote import enable_ptl +>>> enable_ptl() +>>> import template +>>> template.write() +``` + +Quixote installs an import hook that will cause PTL files to transpile into Python. Note that this render takes _six_ seconds, not _three_; you no longer gain free asynchronicity. + +### So many templates in Python + +Python has a long and winding history of libraries, some of which can achieve the same outcomes in more or less similar ways (for example, Python [package management][11]). + +On this April Fools' Day, I hope you enjoyed exploring three ways you _can_ create templates in Python. Instead, I recommend starting with [one of these libraries][4] for ways you _should_ template. + +Do you have another esoteric way to template? Share it in the comments below! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/python-templating-languages + +作者:[Moshe Zadka][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/moshez +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/python-programming-code-keyboard.png?itok=fxiSpmnd (Hands on a keyboard with a Python book ) +[2]: https://opensource.com/resources/python +[3]: https://opensource.com/article/20/2/jinja2-cheat-sheet +[4]: https://opensource.com/resources/python/template-libraries +[5]: https://chameleon.readthedocs.io/en/latest/ +[6]: https://opensource.com/article/18/5/pyramid-framework +[7]: https://twistedmatrix.com/documents/13.1.0/web/howto/twisted-templates.html +[8]: https://opensource.com/article/20/3/treq-python +[9]: https://en.wikipedia.org/wiki/Source-to-source_compiler +[10]: https://pypi.org/project/Quixote/ +[11]: https://opensource.com/article/19/4/managing-python-packages From 057715a126b81dd872d0e9679e851f32db4bdf08 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 2 Apr 2020 01:03:35 +0800 Subject: [PATCH 122/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=20How=20?= =?UTF-8?q?does=20kanban=20relate=C2=A0to=20DevOps=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200401 How does kanban relate-to DevOps.md --- ...200401 How does kanban relate-to DevOps.md | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 sources/tech/20200401 How does kanban relate-to DevOps.md diff --git a/sources/tech/20200401 How does kanban relate-to DevOps.md b/sources/tech/20200401 How does kanban relate-to DevOps.md new file mode 100644 index 0000000000..3f37c35a4c --- /dev/null +++ b/sources/tech/20200401 How does kanban relate-to DevOps.md @@ -0,0 +1,117 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How does kanban relate to DevOps?) +[#]: via: (https://opensource.com/article/20/4/kanban-devops) +[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub) + +How does kanban relate to DevOps? +====== +Reduce waste, optimize the flow of value, and continuously deliver value +to delighted users. +![two women kanban brainstorming and brainmapping with post-it notes on a whiteboard ][1] + +Kanban is nothing new; in fact, it predates most readers of this article. Its age becomes apparent when we add the year Toyota introduced kanban in its main plant machine shop (1953) to the timeline image from our [analyzing the DNA of DevOps][2] article. + +![DevOps timeline][3] + +I have intuitively been using kanban, in one form or the other, for more than two decades to track personal plans, engineering projects, and digital transformations. Only in the past few weeks have I pondered the origins, power, and synergy of kanban with other frameworks and systems, while introducing teams to kanban and helping them embrace it as a powerful system in our common engineering system. + +### What is kanban? + +Kanban means "visual signal" and has its roots in the Toyota manufacturing industry. It was developed by [Taiichi Ohno][4] to improve manufacturing efficiency. When we jump a few decades into the future, kanban complements agile and lean, often used with frameworks such as scrum, Scaled Agile Framework, and Disciplined Agile to visualize and manage work. + +![Kanban complements agile and lean][5] + +You can explore the many interpretations of kanban on the internet, in books, and in vibrant discussions with other engineers who have embraced the system. In the context of our common collaboration and engineering system, kanban delivers four pivotal practices: + + * **Visualize work:** We visualize all work and look for triggers such as cards turning **red** when the work they represent is blocked or has been dormant for more than two days. + * **Limit work in progress:** We agree on and enforce (soft) work-in-progress limits to encourage reduced batch sizes and manage queue lengths. + * **Focus on flow:** We _pull_ not push work, which helps us to defer commitment until we meet our definition of done (_DoD_) and we have the capacity to commit to the next _activity_. + * **Continuous improvement:** It is important to measure work from when it enters our backlog, how long it takes to get through the process (lead time), and how efficient we are working (cycle/lead time). This enables us to continuously inspect and improve how we work and track progress. + + + +![Kanban practices and terminology][6] + +We use colorful, visual cards to represent activities that flow through one or more _activities_ in one of many _swim lanes_. Each kanban column represents an activity, and each swim lane represents a person, group, or another bucket to segment the cards. There are no rules for the color of the cards, but **red** typically signals a problem. But remember to combine color with a meaningful icon to visualize special states for users who are color-blind. + +> "_We should defer commitment until our Definition of Ready (DOR) is met so that we can ensure that our Definition of Done (DOD) is achieved sooner and with high quality. I like the two distinct terms (DOR and DOD) because the [project owner] should be accountable for the DOR while the team can take ownership of the DOD_." —[Mathew Mathai][7] + +I often use this analogy to explain the difference between _lead_ and _cycle_ time to new teams: Imagine you walk into a restaurant. You sit down, study the menu, and decide what you would like to drink and eat. When the waiter takes your order, the _lead_ cycle time starts ticking. When the bar starts pouring your favorite potion and the kitchen starts preparing your meal, the _cycle_ time starts ticking. As the order arrives at your table, both the lead and cycle time are stopped if (and only if) you are satisfied. + +Therefore, the _lead_ time measures how long you, the customer, had to wait until you received your order. The _cycle_ time measures the process time of an activity to prepare your order. From a customer perspective, the _lead_ time is important. + +It is important to _make your policies explicit_, such as when you start measuring lead and cycle times. Some customers start their "impatience" clock when they enter the restaurant, while others start the clock when they place their order. In both cases, they need to understand how you measure your flow to avoid misunderstandings, unfeasible expectations, and disappointment. + +This image is extracted from one of our information transfer posters, and it summarizes key learnings when we started adopting the kanban system. + +![Key kanban learnings][8] + +### What about DevOps? + +In _[Using PowerShell to automate Linux, macOS, and Windows processes][9]_, we briefly introduced value-stream mapping. It enables us to measure individual and total lead times, cycle times, efficiency, and quality and unearth different activities, groups, and silos that cancel out each other. + +![value-stream mapping][10] + +You will notice a similarity between the kanban board and the value-stream mapping images. Both _visualize_ and _focus_ on the flow of activities represented by individual cards pulled across a visual board. + +![Continuous delivery pipeline][11] + +Continuous flow and efficiency are core to a healthy DevOps mindset. It transforms into a continuous delivery pipeline, as shown above, which unites different teams, such as business, development, security, and quality assurance, to implement ideas from ideation to production. Continuously measuring and streamlining the delivery pipeline not only helps improve the flow of value, but also the quality of value. + +It should be evident that (similar to kanban) the focus here is on flow. Flipping back and forth between activities is frowned upon in kanban and impractical with continuous delivery pipelines. It reminds me of a recent whiteboard discussion where we discussed the challenge of visualizing and managing the flow of work that requires two teams. + +![Dividing a job between two teams][12] + +As shown here, we slice a job that requires team X to perform activities, then team Y, and again team X, into three stories. The three stories are visualized by three cards on two kanban boards, flowing from A to B to C, with clear ownership by team X and Y, which we can measure independently as lead and cycle time. + +We are drifting into another exciting topic of flow optimization … let's get back to the original question. + +### What is the relationship between kanban and DevOps? + +[Donovan Brown][13] defines DevOps as "_the union of people, process, and products to enable continuous delivery of value to our end users._" + +When we unpack this definition, we realize that the core of the DevOps [mindset][14] is to continuously deliver value and delight our customers. + + * _"Feedback from stakeholders is essential."_ + * _"Improve beyond the limits of today's processes."_ + * _"No new silos to break down silos."_ + * _"Knowing your customers means cross-organization collaboration."_ + * _"Inspire adoption through enthusiasm."_ + + + +The kanban system helps us visualize and improve the efficiency of value delivery, resulting in delighted customers. I argue that if you are comfortable with kanban, you will enjoy the full benefits of DevOps through _visualization_, _flow improvement_, _feedback_, and _continuous innovation_. + +We have collaboration at its finest—_synergy_**,** or is that _symbiosis_? + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/kanban-devops + +作者:[Willy-Peter Schaub][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/wpschaub +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/whiteboard-brainstorming-brainmapping-design-thinking-postits-kanban.png?itok=Is2Tg1Jk (Brainstorming with post-it notes on a whiteboard) +[2]: https://opensource.com/article/18/11/analyzing-devops +[3]: https://opensource.com/sites/default/files/uploads/devops-timeline.png (DevOps timeline) +[4]: https://en.wikipedia.org/wiki/Taiichi_Ohno +[5]: https://opensource.com/sites/default/files/uploads/kanban-agile-lean-devops.png (Kanban complements agile and lean) +[6]: https://opensource.com/sites/default/files/uploads/kanban-practices-terms.png (Kanban practices and terminology) +[7]: https://opensource.com/users/anicheinc +[8]: https://opensource.com/sites/default/files/uploads/kanban-key-learnings.png (Key kanban learnings) +[9]: https://opensource.com/article/20/2/devops-automation +[10]: https://opensource.com/sites/default/files/uploads/value-stream-mapping.png (value-stream mapping) +[11]: https://opensource.com/sites/default/files/uploads/cd-pipeline.png (Continuous delivery pipeline) +[12]: https://opensource.com/sites/default/files/uploads/splitting-jobs.png (Dividing a job between two teams) +[13]: https://www.donovanbrown.com/post/what-is-devops +[14]: https://opensource.com/article/19/5/values-devops-mindset From 2c7a430b7b8c13f5c6415bec9a59a748b1dac787 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 2 Apr 2020 01:05:53 +0800 Subject: [PATCH 123/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=20The=20?= =?UTF-8?q?ins=20and=20outs=20of=20high-performance=20computing=20as=20a?= =?UTF-8?q?=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200401 The ins and outs of high-performance computing as a service.md --- ...high-performance computing as a service.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 sources/talk/20200401 The ins and outs of high-performance computing as a service.md diff --git a/sources/talk/20200401 The ins and outs of high-performance computing as a service.md b/sources/talk/20200401 The ins and outs of high-performance computing as a service.md new file mode 100644 index 0000000000..cbf7a5a44f --- /dev/null +++ b/sources/talk/20200401 The ins and outs of high-performance computing as a service.md @@ -0,0 +1,104 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The ins and outs of high-performance computing as a service) +[#]: via: (https://www.networkworld.com/article/3534725/the-ins-and-outs-of-high-performance-computing-as-a-service.html) +[#]: author: (Josh Fruhlinger https://www.networkworld.com/author/Josh-Fruhlinger/) + +The ins and outs of high-performance computing as a service +====== +HPC services can be a way to meet expanding supercomputing needs, but depending on the use case, they’re not necessarily better than on-premises supercomputers. +Dell EMC + +Electronics on missiles and military helicopters need to survive extreme conditions. Before any of that physical hardware can be deployed, defense contractor McCormick Stevenson Corp. simulates the real-world conditions it will endure, relying on finite element analysis software like Ansys, which requires significant computing power. + +Then one day a few years ago, it unexpectedly ran up against its computing limits. + +[10 of the world's fastest supercomputers][1] + +"We had some jobs that would have overwhelmed the computers that we had in office," says Mike Krawczyk, principal engineer at McCormick Stevenson. "It did not make economic or schedule sense to buy a machine and install software." Instead, the company contracted with Rescale, which could sell them cycles on a supercomputer-class system for a tiny fraction of what they would've spent on new hardware. + +McCormick Stevenson had become an early adopter in a market known as supercomputing as a service or high-performance computing (HPC) as a service – two terms that are closely related. HPC is the application of supercomputers to computationally complex problems, while supercomputers are those computers at the cutting edge of processing capacity, according to the National Institute for Computational Sciences. + +Whatever it's called, these services are upending the traditional supercomputing market and bringing HPC power to customers who could never afford it before. But it's no panacea, and it's definitely not plug-and-play – at least not yet. + +### HPC services in practice + +From the end user's perspective, HPC as a service resembles the batch-processing model that dates back to the early mainframe era. "We create an Ansys batch file and send that up, and after it runs, we pull down the result files and import them locally here," Krawczyk says. + +Behind the scenes, cloud providers are running the supercomputing infrastructure in their own data centers – though that doesn't necessarily imply the sort of cutting-edge hardware you might be visualizing when you hear "supercomputer." As Dave Turek, Vice President of Technical Computing at IBM OpenPOWER, explains it, HPC services at their core are "a collection of servers that are strung together with an interconnect. You have the ability to invoke this virtual computing infrastructure that allows you to bring a lot of different servers to work together in a parallel construct to solve the problem when you present it." + +[][2] + +Sounds simple in theory. But making it viable in practice required some chipping away at technical problems, according to Theo Lynn, Professor of Digital Business at Dublin City University. What differentiates ordinary computing from HPC is those interconnects – high-speed, low-latency, and expensive – so those needed to be brought to the world of cloud infrastructure. Storage performance and data transport also needed to be brought up to a level at least in the same ballpark as on-prem HPC before HPC services could be viable. + +But Lynn says that some of the innovations that have helped HPC services take off have been more institutional than technological. In particular, "we are now seeing more and more traditional HPC applications adopting cloud-friendly licensing models – a barrier to adoption in the past." + +And the economics have also shifted the potential customer base, he says. "Cloud service providers have opened up the market more by targeting low-end HPC buyers who couldn’t afford the capex associated with traditional HPC and opening up the market to new users. As the markets open up, the hyperscale economic model becomes more and more feasible, costs start coming down." + +Avoid on-premises CAPEX** +** + +HPC services are attractive to private-sector customers in the same fields where traditional supercomputing has long held sway. These include sectors that rely heavily on complex mathematical modeling, including defense contractors like McCormick Stevenson, along with oil and gas companies, financial services firms, and biotech companies. Dublin City University's Lynn adds that loosely coupled workloads are a particularly good use case, which meant that many early adopters used it for 3D image rendering and related applications. + +But when does it make sense to consider HPC services over on-premises HPC? For hhpberlin, a German company that simulates smoke propagation in and fire damage to structural components of buildings, the move came as it outgrew its current resources. + +"For several years, we had run our own small cluster with up to 80 processor cores," says Susanne Kilian, hhpberlin's scientific head of numerical simulation. "With the rise in application complexity, however, this constellation has increasingly proven to be inadequate; the available capacity was not always sufficient to handle projects promptly." + +But just spending money on a new cluster wasn't an ideal solution, she says: "In view of the size and administrative environment of our company, the necessity of constant maintenance of this cluster (regular software and hardware upgrades) turned out to be impractical. Plus, the number of required simulation projects is subject to significant fluctuations, such that the utilization of the cluster was not really predictable. Typically, phases with very intensive use alternate with phases with little to no use." By moving to an HPC service model, hhpberlin shed that excess capacity and the need to pay up front for upgrades. + +IBM's Turek explains the calculus that different companies go through while assessing their needs. For a biosciences startup with 30 people, "you need computing, but you really can't afford to have 15% of your staff dedicated to it. It's just like you might also say you don't want to have on-staff legal representation, so you'll get that as a service as well." For a bigger company, though, it comes down to weighing the operational expense of an HPC service against the capacity expense of buying an in-house supercomputer or HPC cluster. + +So far, those are the same sorts of arguments you'd have over adopting any cloud service. But the opex vs. capex dilemma can be weighted towards the former by some of the specifics of the HPC market. Supercomputers aren't commodity hardware like storage or x86 servers; they're very expensive, and technological advances can swiftly render them obsolete. As McCormick Stevenson's Krawczyk puts it, "It's like buying a car: as soon as you drive off the lot it starts to depreciate." And for many companies –especially larger and less nimble ones – the process of buying a supercomputer can get hopelessly bogged down. "You're caught up in planning issues, building issues, construction issues, training issues, and then you have to execute an RFP," says IBM's Turek. "You have to work through the CIO. You have to work with your internal customers to make sure there's continuity of service. It's a very, very complex process and not something that a lot of institutions are really excellent at executing." + +Once you choose to go down the services route for HPC, you'll find you get many of the advantages you expect from cloud services, particularly the ability to pay only for HPC power when you need it, which results in an efficient use of resources. Chirag Dekate, Senior Director and Analyst at Gartner, says bursty workloads, when you have short-term needs for high-performance computing, are a key use case driving adoption of HPC  services. + +"In the manufacturing industry, you tend to have a high peak of HPC activity around the product design stage," he says. "But once the product is designed, HPC resources are less utilized during the rest of the product-development cycle." In contrast, he says, "when you have large, long-running jobs, the economics of the cloud wear down." + +With clever system design, you can integrate those HPC-services bursts of activity with your own in-house conventional computing. Teresa Tung, managing director in Accenture Labs, gives an example: "Accessing HPC via APIs makes it seamless to mix with traditional computing. A traditional AI pipeline might have its training done on a high-end supercomputer at the stage when the model is being developed, but then the resulting trained model that runs predictions over and over would be deployed on other services in the cloud or even devices at the edge." + +### It's not for all use cases** + +** + +Use of HPC services lends itself to batch-processing and loosely-coupled use cases. That ties into a common HPC downside: data transfer issues. High-performance computing by its very nature often involves huge data sets, and sending all that information over the internet to a cloud service provider is no simple thing. "We have clients I talk to in the biotech industry who spend $10 million a month on just the data charges," says IBM's Turek. + +And money isn't the only potential problem. Building a workflow that makes use of your data can challenge you to work around the long times required for data transfer. "When we had our own HPC cluster, local access to the simulation results already produced – and thus an interactive interim evaluation — was of course possible at any time," says hhpberlin's Kilian. "We're currently working on being able to access and evaluate the data produced in the cloud even more efficiently and interactively at any desired time of the simulation without the need to download large amounts of simulation data." + +Mike Krawczyk cites another stumbling block: compliance issues. Any service a defense contractor uses needs to be complaint with the International Traffic in Arms Regulations (ITAR), and McCormick Stevenson went with Rescale in part because it was the only vendor they found that checked that box. While more do today, any company looking to use cloud services should be aware of the legal and data-protection issues involved in living on someone else's infrastructure, and the sensitive nature of many of HPC's use cases makes this doubly true for HPC as a service. + +In addition, the IT governance that HPC services require goes beyond regulatory needs. For instance, you'll need to keep track of whether your software licenses permit cloud use ­– especially with specialized software packages written to run on an on-premises HPC cluster. And in general, you need to keep track of how you use HPC services, which can be a tempting resource, especially if you've transitioned from in-house systems where staff was used to having idle HPC capabilities available. For instance, Ron Gilpin, senior director and Azure Platform Services global lead at Avanade, suggests dialing back how many processing cores you use for tasks that aren't time sensitive. "If a job only needs to be completed in an hour instead of ten minutes," he says, "that might use 165 processors instead of 1,000, a savings of thousands of dollars." + +### A premium on HPC skills** + +** + +One of the biggest barriers to HPC adoption has always been the unique in-house skills it requires, and HPC services don't magically make that barrier vanish. "Many CIOs have migrated a lot of their workloads into the cloud and they have seen cost savings and increased agility and efficiency, and believe that they can achieve similar results in HPC ecosystems," says Gartner's Dekate. "And a common misperception is that they can somehow optimize human resource cost by essentially moving away from system admins and hiring new cloud experts who can solve their HPC workloads." + +"But HPC is not one of the main enterprise environments," he says. "You're dealing with high-end compute nodes interconnected with high-bandwidth, low-latency networking stacks, along with incredibly complicated application and middleware stacks. Even the filesystem layers in many cases are unique to HPC environments. Not having the right skills can be destabilizing." + +But supercomputing skills are in shortening supply, something Dekate refers to as the workforce "greying," in the wake of a generation of developers going to splashy startups rather than academia or the more staid firms where HPC is in use. As a result, vendors of HPC services are doing what they can to bridge the gap. IBM's Turek says that many HPC vets will always want to roll their own exquisitely fine-tuned code and will need specialized debuggers and other tools to help them do that for the cloud. But even HPC newbies can make calls to code libraries built by vendors to exploit supercomputing's parallel processing. And third-party software providers sell turnkey software packages that abstract away much of HPC's complication. + +Accenture's Tung says the sector needs to lean further into this in order to truly prosper. "HPCaaS has created dramatically impactful new capability, but what needs to happen is making this easy to apply for the data scientist, the enterprise architect, or the software developer," she says. "This includes easy to use APIs, documentation, and sample code. It includes user support to answer questions. It’s not enough to provide an API; that API needs to be fit-for-purpose. For a data scientist this should likely be in Python and easily change out for the frameworks she is already using. The value comes from enabling these users who ultimately will have their jobs improved through new efficiencies and performance, if only they can access the new capabilities." If vendors can pull that off, HPC services might truly bring supercomputing to the masses. + +Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534725/the-ins-and-outs-of-high-performance-computing-as-a-service.html + +作者:[Josh Fruhlinger][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Josh-Fruhlinger/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/article/3236875/embargo-10-of-the-worlds-fastest-supercomputers.html +[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[3]: https://www.facebook.com/NetworkWorld/ +[4]: https://www.linkedin.com/company/network-world From f856967ab3ee70555d691b01905d4c0675d8b4ff Mon Sep 17 00:00:00 2001 From: DarkSun Date: Thu, 2 Apr 2020 01:07:35 +0800 Subject: [PATCH 124/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200401=20How=20?= =?UTF-8?q?enterprise=20networking=20is=20changing=20with=20a=20work-at-ho?= =?UTF-8?q?me=20workforce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md --- ... changing with a work-at-home workforce.md | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md diff --git a/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md b/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md new file mode 100644 index 0000000000..f87bc0a8f8 --- /dev/null +++ b/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md @@ -0,0 +1,114 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How enterprise networking is changing with a work-at-home workforce) +[#]: via: (https://www.networkworld.com/article/3534037/how-enterprise-networking-is-changing-with-a-work-at-home-workforce.html) +[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) + +How enterprise networking is changing with a work-at-home workforce +====== +Network World updates the latest COVID-19-related networking news +Ig0rZh / Getty Images + +_As the coronavirus spreads, public and private companies as well as government entities are requiring employees to work from home, putting unforeseen strain on all manner of networking technologies and causing bandwidth and security concerns.  What follows is a round-up of news and traffic updates that Network World will update as needed to help keep up with the ever-changing situation.  Check back frequently!_ + +UPDATE: 3.30 + +AT&T said its core network traffic – which includes business, home broadband and wireless  – was up 24% through March 30 compared to the same day last month.  It broke down some mobility traffic patterns as well: voice calls: +33%, instant messaging: +63%, text messaging: +41%, email: -18%, web browsing: -5%, video: +4% (also accounts for over half of all mobility traffic). It also usage for conferencing: AT&T’s global audio-conferencing solution: +200%; audio, web and video conferencing tools: +400%; Large-scale webcast events: +200%. + +[RELATED: Firewall face-off for the enterprise][1] + +AT&T said its investment in artificial intelligence technology is helping it keep up with demand. For example, the company said AI is helping remotely troubleshoot and diagnose problems with customer equipment, by identifying the cause or even proactively identifying a potential issue before it occurs. “We’ve expedited deployments of new AI capabilities in certain markets that will allow us to balance the traffic load within a sector and across sectors to help avoid overloading specific cells and improve the experience.” + +DNS vendor BlueCat says it has been tracking the use of DNS over HTTPS (DoH) – a method of encrypting queries to prevent visibility into DNS traffic patterns.  Over the last week through March 27, the company said it has  seen a massive increase in the use of DoH across its customer base wrote Ben Ball, director of strategy and content marketing at BlueCat in a [blog][2] about the trend. “In the course of a single weekend, the number of endpoints attempting to use DoH went from an average of 90 to about 1,400.  That’s a 1,500% increase in the use of DoH. Around 45% of these queries are from Firefox (which now activates DoH by default).  Aside from that, we’re seeing queries to eleven different DoH services from all kinds of applications. DoH usage is fairly uniform across our customer base as well – this isn’t one company or industry vertical; this is a broad trend. While we haven’t seen any clear indications that any of these queries are from [DoH enabled malware][3], that is an emerging threat that we are tracking,” Ball stated. + +Ookla’s [SpeedTest][4] shows mean download speed over fixed broadband declined only slightly in Mexico and the U.S. when comparing the week of March 23 to that of March 16, while a decline in Canada’s mean download speed over fixed broadband was more evident. Mean download speed over mobile was down in the U.S. and Canada during the week of March 23, while it rose slightly in Mexico during the same period. + +**UPDATE 3.27** + +[][5] + +Broadband watchers at [BroadbandNow][6] say users in most of the cities it analyzed are experiencing normal network conditions, suggesting that ISP’s (and their networks) are holding up to the shifting demand. In a March 25 [post][7] the firm wrote: “Encouragingly, many of the areas hit hardest by the spread of the coronavirus are holding up to increased network demand. Cities like Los Angeles, Chicago, Brooklyn, and San Francisco have all experienced little or no disruption. New York City,  now the epicenter of the virus in the U.S., has seen a 24% dip out of its previous ten-week range. However, with a new median speed of nearly 52 Mbps, home connections still appear to be holding up overall.” + +Other BroadbandNow findings included: + + * Eighty eight (44%) of the 200 cities it analyzed experienced some degree of network degradation over the past week compared to the 10 weeks prior. However, only 27 (13.5%) cities experienced dips of 20% below range or greater. + * Seattle download speeds have continued to hold up over the past week, while New York City’s speeds have fallen out of range by 24%. Both cities are currently heavily affected by the coronavirus pandemic. + * Three cities – Austin, Texas, Winston Salem, N.C., and Oxnard, Calif. – have experienced significant degradations, falling out of their 10-week range by more than 40%. + + + +Cisco’s Talos threat-intelligence arm [wrote][8] on March 26 about the COVID security threat noting what it called three broad categories of attacks leveraging COVID with known advanced persistent threat participation in: [Malware and phishing campaigns][9] using COVID-themed lures; attacks against organizations that carry out research and other work related to COVID; and fraud and disinformation. From an enterprise security perspective, Talos recommended: + + * Remote access: Do not expose Remote Desktop Protocol (RDP) to the internet. Use secure VPN connections with multi-factor authentication schemes. Network access control packages can be used to ensure that systems attempting to remotely connect to the corporate environment meet a minimum set of security standards such as anti-malware protection, patch levels, etc,. prior to granting them access to corporate resources. Continually identify and remediate access-policy violations. + * Identity Management: Protect critical and public-facing applications with multi-factor authentication and supporting corporate policies. Verify that remote-account and access-termination capabilities work as intended in a remote environment. + * Endpoint Control: Because many people may be working from home networks, endpoint visibility, protection, and mitigation is now more important than ever. Consider whether remediation and reimaging capabilities will work as intended in a remote environment. Encrypt devices where possible, and add this check to your NAC solution as a gate for connectivity. Another simple method of protecting endpoints is via DNS, such as with [Cisco’s] Umbrella, by blocking the resolution of malicious domains before the host has a chance to make a connection. + + + +In an [FAQ][10] about the impact of COVID-19 on fulfilling customer hardware orders, VMware stated: “Some VMware SD-WAN hardware appliances are on backorder as a result of supply chain issues. As a result, we are extending the option to update existing orders with different appliances where inventory is more readily available. Customers may contact a special email hotline with questions related to backordered appliances. Please send an email to [sd-wan-hotline@vmware.com][11] with your questions and include the order number, urgent quantities, and contact information. We will do our best to respond within 48 hours.” + +Cisco said it has been analyzing traffic statistics with major carriers across Asia, Europe, and the Americas, and its data shows that typically, the most congested point in the network occurs at inter-provider peering points, Jonathan Davidson, senior vice president and general manager of Cisco's Mass-Scale Infrastructure Group wrote in a [blog][12] on March 26. “However, the traffic exchanged at these bottlenecks is only a part of the total internet traffic, meaning reports on traffic may be higher overall as private peering and local destinations also contribute to more traffic growth.” + +“Our analysis at these locations shows an increase in traffic of 10% to 33% over normal levels. In every country, traffic spiked with the decision to shut down non-essential businesses and keep people at home. Since then, traffic has remained stable or has experienced a slight uptick over the days that followed,” Davidson stated. + +He said that traffic during peak hours from 6 p.m. and 10 p.m. has increased slightly, but is not the primary driver for the overall inrease. Busy hours have extended to 9 a.m. 10 p.m., although the new busy-hour (9 a.m. to 6 p.m.) traffic is still below the traditional peak hours. "Service providers are certainly paying attention to these changes, but they are not yet a dire concern, as most networks are designed for growth. Current capacities are utilized more over the course of the entire day,” he wrote. + +Spanish multinational telecommunications company [Telefonica][13]’ said IP networks are experiencing traffic increases of close to 40% while mobile voice use is up about 50% and data is up 25%. In general, traffic through IP networks has experienced increases of nearly 40% while mobile use has increased by about 50% for voice and 25% for data. Likewise, traffic from instant-messaging tools such as Whatsapp has increased fivefold in recent days. + +**UPDATE: 3.26** + + * Week over week (ending March 23) [Ookla][14] says it has started to see a degradation of mobile and fixed-broadband performance worldwide. More detail on specific locations is available below. Comparing the week of March 16 to the week of March 9, mean download speed over mobile and fixed broadband decreased in Canada and the U.S. while both remained relatively flat in Mexico. + * What is the impact of the coronavirus on corporate network planning? Depends on how long the work-from-home mandate goes on really. Tom Nolle, president of CIMI Corp. [takes an interesting look at the situation][15] saying the shutdown “could eventually produce a major uptick for SD-WAN services, particularly in [managed service provider]    Businesses would be much more likely to embark on an SD-WAN VPN adventure that didn’t involve purchase/licensing, favoring a service approach in general, and in particular one with a fairly short contract period.” + * Statistics from VPN provider [NordVPN][16] show the growth of VPN usage across the globe.  For example, the company said the US has experienced a 65.93% growth in the use of business VPNs since March 11. It reported that mass remote working has contributed towards a rise in desktop (94.09%) and mobile app (0.39%) usage among Americans. Globally, NordVPN teams has seen a 165% spike in the use of business VPNs and business VPN usage in Netherlands (240.49%), Canada (206.29%) and Austria (207.86%) has skyrocketed beyond 200%. Italy has had the most modest growth in business VPN usage at just 10.57%. + + + +**UPDATE: 3. 25**: + + * According to [Atlas VPN][17] user data, VPN usage in the US increased by 124% during the last two weeks. VPN usage in the country increased by 71% between March 16 and 22 alone. Atlas said it measured how much traffic traveled through its servers during that period compared to March 9 to 15. The data came from the company's 53,000 weekly users. + * Verizon [reports][18] that voice usage, long declining in the age of texting, chat and social media, is up 25% in the last week. The network report shows the primary driver is accessing conference calls. In addition, people are talking longer on mobile devices with wireless voice usage notching a 10% increase and calls lasting 15% longer.  + * AT&T also [reported][19] increased calling, especially Wi-Fi calling, up 88% on March 22 versus a normal Sunday. It says that consumer home voice calls were up 74% more than an average Sunday; traffic from Netflix dipped after all-time highs on Friday and Saturday; and data traffic due to heavy video streaming between its network and peered networks tied record highs. AT&T said it has deployed portable cell nodes to bolster coverage supporting FirstNet customers in Indiana, Connecticut, New Jersey, California and New York. + * Microsoft this week advised users of Office 365 it was throttling back some services: + * **OneNote: ** OneNote in Teams will be read-only for commercial tenants, excluding EDU. Users can go to OneNote for the web for editing. Download size and sync frequency of file attachments has been changed. You can find details on these and other OneNote related updates as . + * **SharePoint:** We are rescheduling specific backend operations to regional evening and weekend business hours. Impacted capabilities include migration, DLP and delays in file management after uploading a new file, video or image. Reduced video resolution for playback videos. + * **Stream:** People timeline has been disabled for newly uploaded videos. Pre-existing videos will not be impacted. Meeting recording video resolution adjusted to 720p. + + + +**RELATED COVID-19 NEWS:** + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3534037/how-enterprise-networking-is-changing-with-a-work-at-home-workforce.html + +作者:[Michael Cooney][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Michael-Cooney/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/article/3189176/security/face-off-cisco-vs-fortinet-for-enterprise-firewalls.html +[2]: https://www.bluecatnetworks.com/blog/wfh-doh/ +[3]: https://blog.netlab.360.com/an-analysis-of-godlua-backdoor-en/ +[4]: https://www.speedtest.net/insights/blog/tracking-covid-19-impact-global-internet-performance/ +[5]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[6]: https://broadbandnow.com/ +[7]: https://broadbandnow.com/report/internet-speed-analysis-march-15th-21st/ +[8]: https://blog.talosintelligence.com/2020/03/covid-19-pandemic-threats.html +[9]: https://blog.talosintelligence.com/2020/02/coronavirus-themed-malware.html +[10]: https://www.vmware.com/company/news/updates/vmware-response-covid-19.html?mid=31381&eid=CVMW2000048242496 +[11]: mailto:sd-wan-hotline@vmware.com +[12]: https://blogs.cisco.com/news/global-traffic-spikes-no-panic-at-the-cisco +[13]: https://www.telefonica.com/en/web/press-office/-/telefonica-announces-measures-related-to-covid-19 +[14]: https://downdetector.com/?utm_campaign=Ookla%20Insights%20Blog%20Subscription&utm_source=hs_email&utm_medium=email&utm_content=85202785&_hsenc=p2ANqtz--Nj93d_eQyJpsqxrPJyNPtTiMBWBQU984psLyalw51K61e4d1WODareMF5NWFriHY2Uzw3WF7rF-2vSfH5cR53Jg3K5Q&_hsmi=85202785 +[15]: https://blog.cimicorp.com/?p=4068 +[16]: https://nordvpnteams.com/ +[17]: https://atlasvpn.com/blog/lockdowns-and-panic-leads-to-a-124-surge-in-vpn-usage-in-the-us/ +[18]: https://www.verizon.com/about/news/update-verizon-serve-customers-covid-19 +[19]: https://about.att.com/pages/COVID-19.html From 471e64aa4fc5c2f61ec636029e181ec6d9aebb4c Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 2 Apr 2020 08:27:17 +0800 Subject: [PATCH 125/218] translated --- ...a 14- How to Install it on Ubuntu Linux.md | 82 ------------------- ...a 14- How to Install it on Ubuntu Linux.md | 82 +++++++++++++++++++ 2 files changed, 82 insertions(+), 82 deletions(-) delete mode 100644 sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md create mode 100644 translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md diff --git a/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md deleted file mode 100644 index 3e2c6d9acc..0000000000 --- a/sources/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Oracle Announces Java 14! How to Install it on Ubuntu Linux) -[#]: via: (https://itsfoss.com/java-14-ubuntu/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Oracle Announces Java 14! How to Install it on Ubuntu Linux -====== - -Recently, Oracle announced the general availability of Java 14 (or the Oracle JDK 14). If you are someone who wants to have the latest and greatest to experiment and develop stuff – you can try installing Java 14 on your Linux system. - -Oracle JDK 14 (or simply Java 14) [release][1] includes a couple of new features if you’re interested to preview them. I’ve linked them below: - - * [Pattern matching for instanceof][2] - * [Records][3] - * [Text Blocks][4] - - - -In addition to the preview features, it packs in several improvements and additions. Quoting the press release, they mentioned the additional improvements as well: - -> Additionally, the latest Java release adds Java language support for switch expressions, exposes new APIs for continuous monitoring of JDK Flight Recorder data, extends the availability of the low-latency Z Garbage Collector to macOS and Windows, and adds, in incubator modules, the packaging of self-contained Java applications and a new Foreign memory access API for safe, efficient access to memory outside of the Java heap. - -Of course, if you want to dive into the exact details, you should check the [official announcement][1]. - -In this tutorial, I’ll show you the easy way to get Java 14 installed on your Ubuntu system. Read on. - -**Note:** If you opt for Oracle Java 11 or above, you should learn about the new [Oracle Technology Network License Agreement][5] to know how it affects personal users, developers, and commercial organizations. Usually, these are free to use for development and testing – but not for production. - -### How To Install Java 14 on Ubuntu Linux? - -![][6] - -For reference, I’ve successfully tried it on **Pop!_OS 19.10** where I had the **OpenJDK 11** installed as the default. - -Here, we are going to use the Java 14 installer (originally based on WebUpd8 Java Package) by [Linux Uprising][7]. - -Simply enter the commands below in the terminal to get it installed: - -``` -sudo add-apt-repository ppa:linuxuprising/java -sudo apt update -sudo apt install oracle-java14-installer -``` - -This should do the job. And, when it’s done, if you want to make it the default, you can type in the following command to do it: - -``` -sudo apt install oracle-java14-set-default -``` - -It is worth noting that this is only for Ubuntu-based distributions. If you want to install it on Debian and other Linux distributions, you can follow [Linux Uprising’s detailed guide][7] on installing Java 14 as well. - -### Wrapping Up - -Of course, while this is about the bleeding edge features – if you do not want to break things, you might want to hold on to Java 11. If you want to experiment while knowing the risks, go ahead and give it a try! - -Feel free to let me know your thoughts on Java 14 in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/java-14-ubuntu/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://www.oracle.com/corporate/pressrelease/oracle-announces-java14-031720.html -[2]: https://openjdk.java.net/jeps/305 -[3]: https://openjdk.java.net/jeps/359 -[4]: https://openjdk.java.net/jeps/368 -[5]: https://www.oracle.com/technetwork/java/javase/overview/oracle-jdk-faqs.html -[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/install-java-14-ubuntu.png?ssl=1 -[7]: https://www.linuxuprising.com/2020/03/how-to-install-oracle-java-14-jdk14-on.html diff --git a/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md new file mode 100644 index 0000000000..e030ed192e --- /dev/null +++ b/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Oracle Announces Java 14! How to Install it on Ubuntu Linux) +[#]: via: (https://itsfoss.com/java-14-ubuntu/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Oracle 发布 Java 14!如何在 Ubuntu Linux 上安装 +====== + +最近,Oracle 宣布 Java 14(或 Oracle JDK 14)正式开放。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14。 + +Oracle JDK 14(或简称 Java 14)[发行版][1]包含几个新功能,如果你想预览它们的话。我已添加了链接: + + * [instanceof 的模式匹配][2] + * [Records][3] + * [Text Blocks][4] + + + +除预览功能外,它还包含一些改进和补充。在新闻中,他们还提到了其他改进: + +>此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的新 API,将低延迟 zgc 扩展到了 macOS 和 Windows,并添加在 incubator 模块中,独立的 Java 应用打包和为了安全的新的外部内存访问 API 来有效地访问 Java 堆外部的内存。 + +当然,如果你想详细了解细节,那么你应查看[官方公告][1]。 + +在本教程中,我将向你展示在 Ubuntu 系统上安装 Java 14 的简便方法。继续阅读。 + +**注意:**如果你选择 Oracle Java 11 或更高版本,那么应该了解新的 [Oracle 技术网络许可协议][5],以了解它如何影响个人用户、开发人员和商业组织。通常,它们可以免费用于开发和测试,但不能用于生产。 + +### 如何在 Ubuntu Linux 上安装 Java 14? + +![][6] + +作为参考,我已成功在默认安装 **OpenJDK 11** 的 **Pop!_OS 19.10** 上成功安装了它。 + +这里,我们将使用 [Linux Uprising][7] 的 Java 14 安装程序(最初基于 WebUpd8 Java 软件包)。 + +只需在终端中输入以下命令即可进行安装: + +``` +sudo add-apt-repository ppa:linuxuprising/java +sudo apt update +sudo apt install oracle-java14-installer +``` + +这应该就完成了,如果你想将它设为默认,那么你可以输入以下命令: + +``` +sudo apt install oracle-java14-set-default +``` + +值得注意的是,这仅适用于基于 Ubuntu 的发行版。如果要在 Debian 和其他 Linux 发行版上安装它,那么也可以按照 [Linux Uprising 中的详细指南][7]安装 Java 14。 + +### 总结 + +当然,这些是最新的特性,如果你不想破环环境,你或许会希望继续使用 Java11。如果你想在了解风险的情况下进行试验,请继续尝试! + +欢迎在下面的评论中让我知道你对 Java 14 的想法。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/java-14-ubuntu/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://www.oracle.com/corporate/pressrelease/oracle-announces-java14-031720.html +[2]: https://openjdk.java.net/jeps/305 +[3]: https://openjdk.java.net/jeps/359 +[4]: https://openjdk.java.net/jeps/368 +[5]: https://www.oracle.com/technetwork/java/javase/overview/oracle-jdk-faqs.html +[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/install-java-14-ubuntu.png?ssl=1 +[7]: https://www.linuxuprising.com/2020/03/how-to-install-oracle-java-14-jdk14-on.html From 3ff19319186f5301b15fc49b318fb54ea2622ab9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 2 Apr 2020 08:35:13 +0800 Subject: [PATCH 126/218] translating --- ...0401 How to Find Which Graphics Card do You Have in Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md b/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md index 18db3d8c8d..112a024b5c 100644 --- a/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md +++ b/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From ac42a35dc9e8af631e8f61f3cc3a6fc343bc6ca7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 10:11:01 +0800 Subject: [PATCH 127/218] PRF @MjSeven --- ...n your blog on GitHub Pages with Python.md | 95 ++++++++++--------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md index 47134718ee..302ff61426 100644 --- a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md +++ b/translated/tech/20190523 Run your blog on GitHub Pages with Python.md @@ -1,21 +1,22 @@ [#]: collector: (lujun9972) [#]: translator: (MjSeven) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Run your blog on GitHub Pages with Python) [#]: via: (https://opensource.com/article/19/5/run-your-blog-github-pages-python) [#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani) -在 GitHub 上使用 Python 运行你的博客 +使用 Python 在 GitHub 上运行你的博客 ====== -使用 Pelican(一个基于 Python 的平台)在 GitHub 上创建博客,看起来很不错。 -![Raspberry Pi and Python][1] +> 使用 Pelican 创建博客,这是一个基于 Python 的平台,与 GitHub 配合的不错。 + +![](https://img.linux.net.cn/data/attachment/album/202004/02/101030cy0t0f0e0jvf5e5e.jpg) [GitHub][2] 是一个非常流行的用于源代码控制的 Web 服务,它使用 [Git][3] 同步本地文件和 GitHub 服务器上保留的副本,这样你就可以轻松地共享和备份你的工作。 -除了为代码仓库提供用户界面之外,GitHub 还运允许用户直接从仓库[发布网页][4]。GitHub 推荐的网站生成软件包是 [Jekll][5],使用 Ruby 编写。因为我是 [Python][6] 的忠实粉丝,所以我更喜欢 [Pelican][7],这是一个基于 Python 的博客平台,可与 GitHub 很好地协同工作。 +除了为代码仓库提供用户界面之外,GitHub 还运允许用户直接从仓库[发布网页][4]。GitHub 推荐的网站生成软件包是 [Jekll][5],是使用 Ruby 编写的。因为我是 [Python][6] 的忠实粉丝,所以我更喜欢 [Pelican][7],这是一个基于 Python 的博客平台,可与 GitHub 很好地协同工作。 Pelican 和 Jekll 都可以将 [Markdown][8] 或 [reStructuredText][9] 中编写的内容转换为 HTML 以生成静态网站,并且两个生成器都支持定制的主题。 @@ -23,21 +24,21 @@ Pelican 和 Jekll 都可以将 [Markdown][8] 或 [reStructuredText][9] 中编写 ### 安装 Pelican 并创建仓库 -首先,你必须在本地计算机上安装 Pelican 和 **ghp-import**。使用 Python 软件包安装工具 [pip][12](你有,对吧?),这非常容易: +首先,你必须在本地计算机上安装 Pelican 和 `ghp-import`。使用 Python 软件包安装工具 [pip][12](你有,对吧?),这非常容易: ``` $ pip install pelican ghp-import Markdown ``` -然后,打开浏览器并在 GitHub 上为你的新博客创建一个新的仓库,命名如下(在此处以及整个教程中,用 GitHub 用户名替换 ): +然后,打开浏览器并在 GitHub 上为你新鲜出炉的博客创建一个新仓库,命名如下(在此处以及整个教程中,用 GitHub 用户名替换 `username`): ``` https://GitHub.com/username/username.github.io ``` -让它保持空白,稍后我们用引人注目的博客内容来填充它。 +让它保持为空,稍后我们用引人注目的博客内容来填充它。 -使用命令行(确保正确),将空的 Git 仓库克隆到本地计算机: +使用命令行(确保正确),将这个空 Git 仓库克隆到本地计算机: ``` $ git clone blog @@ -46,9 +47,9 @@ $ cd blog ### 奇怪的把戏... -在 GitHub 上发布 Web 内容有一个不太明显的技巧,对于用户页面(托管在名为 _username.github.io_ 的仓库的页面上),其内容来自 **master** 分支。 +在 GitHub 上发布 Web 内容有一个不太引入注意的技巧,对于托管在名为 `username.github.io` 的仓库的用户页面,其内容由 `master` 分支提供服务。 -我强烈建议不要将所有 Pelican 配置文件和原始 Markdown 文件都保留在 **master** 中,**master** 中只保留 Web 内容中。因此,我将 Pelican 配置和原始内容保留在一个我喜欢称为 **content** 的单独分支中。(你可以随意创建一个分支,但以下内容沿用 **content**。)我喜欢这种结构,因为我可以放弃掉 **master** 中的所有文件,然后用 **content** 分支重新填充它。 +我强烈建议所有的 Pelican 配置文件和原始的 Markdown 文件都不要保留在 `master` 中,`master` 中只保留 Web 内容。因此,我将 Pelican 配置和原始内容保留在一个我喜欢称为 `content` 的单独分支中。(你可以随意创建一个分支,但以下内容沿用 `content`。)我喜欢这种结构,因为我可以放弃掉 `master` 中的所有文件,然后用 `content` 分支重新填充它。 ``` $ git checkout -b content @@ -57,7 +58,7 @@ Switched to a new branch 'content' ### 配置 Pelican -现在该进行内容配置了。Pelican 提供了一个很棒的初始化工具 **pelican-quickstart**,它会询问你有关博客的一系列问题。 +现在该进行内容配置了。Pelican 提供了一个很棒的初始化工具 `pelican-quickstart`,它会询问你有关博客的一系列问题。 ``` $ pelican-quickstart @@ -68,11 +69,11 @@ This script will help you create a new Pelican-based website. Please answer the following questions so this script can generate the files needed by Pelican. -> Where do you want to create your new web site? [.] +> Where do you want to create your new web site? [.] > What will be the title of this web site? Super blog > Who will be the author of this web site? username > What will be the default language of this web site? [en] -> Do you want to specify a URL prefix? e.g., (Y/n) n +> Do you want to specify a URL prefix? e.g., http://example.com (Y/n) n > Do you want to enable article pagination? (Y/n) > How many articles per page do you want? [10] > What is your time zone? [Europe/Paris] US/Central @@ -90,13 +91,12 @@ Done. Your new project is available at /Users/username/blog 你可以对每个问题都采用默认值,但除了以下这些问题: - * 网站标题,应该唯一且特殊 - * 网站作者,可以是个人用户名或你的全名 - * 时区,可能你不在巴黎 - * 上传到 GitHub 页面,我们选择 "y" +* 网站标题,应该唯一且特殊 +* 网站作者,可以是个人用户名或你的全名 +* 时区,可能你不在巴黎 +* 上传到 GitHub 页面,我们选择 `y` - -回答完所有问题后,Pelican 会在当前目录中保留以下内容: +回答完所有问题后,Pelican 会在当前目录中留下以下内容: ``` $ ls @@ -105,11 +105,11 @@ fabfile.py output/ pelicanconf.py publishconf.py ``` -你可以查看 [Pelican 文档][13]来了解如何使用这些文件,但 _现在_ 我们要做的是完成手头的工作。说实话,我也没有阅读文档。 +你可以查看 [Pelican 文档][13]来了解如何使用这些文件,但**现在**我们要做的是完成手头的工作。说实话,我也没有阅读文档。 ### 继续 -将所有 Pelican 生成的文件添加到本地 Git 仓库的 **content** 分支,提交更改,然后将本地更改推送到 Github 上托管的远程仓库: +将所有 Pelican 生成的文件添加到本地 Git 仓库的 `content` 分支,提交更改,然后将本地更改推送到 Github 上托管的远程仓库: ``` $ git add . @@ -117,11 +117,11 @@ $ git commit -m 'initial pelican commit to content' $ git push origin content ``` -这件事情并不是特别令人兴奋,但是如果我们需要将内容恢复到这些文件的时候,这将非常方便。 +这件事情并不是特别令人兴奋,但是如果我们需要撤销这些文件之一的修改时,这将非常方便。 ### 终于 -终于,现在你得到一个博客了!你所有的博客文章、照片、图像、PDF 等都将位于 **content** 目录中,它最初是空的。要开始创建第一篇博客和关于页面,输入: +终于,现在你得到一个博客了!你所有的博客文章、照片、图像、PDF 等都将位于 `content` 目录中,它最初是空的。要开始创建第一篇博客和关于页面,输入: ``` $ cd content @@ -131,7 +131,7 @@ $ touch first-post.md $ touch pages/about.md ``` -接下来,在你喜欢的文本编辑器中打开 **first-post.md**,并添加以下内容: +接下来,在你喜欢的文本编辑器中打开 `first-post.md`,并添加以下内容: ``` title: First Post on My Sweet New Blog @@ -147,7 +147,7 @@ the reader! 前三行是 Pelican 用于组织内容的元数据。有很多不同的元数据可供你选择。再说一次,文档是你了解更多选项的最佳选择。 -现在,打开空白文件 **pages/about.md** 并添加以下文本: +现在,打开空白文件 `pages/about.md` 并添加以下文本: ``` title: About @@ -164,7 +164,7 @@ and I would probably have been burned at the stake. [my_sweet_photo]: {static}/images/HotPhotoOfMe.jpg ``` -现在,content 目录中将包含三个新的 Web 内容,在 content 分支中还有很多内容。 +现在,`content` 目录中将包含三个新的 Web 内容,在 `content` 分支中还有很多内容。 ### 发布 @@ -172,27 +172,28 @@ and I would probably have been burned at the stake. 剩下要做的就是: - * 运行 Pelican 以在 **output** 中生成静态 HTML 文件: - ``` - `$ pelican content -o output -s publishconf.py` - ``` +* 运行 Pelican 以在 `output` 中生成静态 HTML 文件: - * 使用 **ghp-import** 将 **output** 目录的内容添加到 **master** 分支中: - ``` - $ ghp-import -m "Generate Pelican site" --no-jekyll -b master output` - ``` + ``` +$ pelican content -o output -s publishconf.py +``` +* 使用 `ghp-import` 将 `output` 目录的内容添加到 `master` 分支中: - * 将本地 master 分支推送到远程仓库: - ``` - $ git push origin master - ``` - - * 提交新内容并将其推送到 **content** 分支 - ``` - $ git add content - $ git commit -m 'added a first post, a photo and an about page' - $ git push origin content - ``` + ``` +$ ghp-import -m "Generate Pelican site" --no-jekyll -b master output +``` +* 将本地 `master` 分支推送到远程仓库: + + ``` +$ git push origin master +``` +* 提交新内容并将其推送到 `content` 分支 + + ``` +$ git add content +$ git commit -m 'added a first post, a photo and an about page' +$ git push origin content +``` ### OMG,我成功了 @@ -211,7 +212,7 @@ via: https://opensource.com/article/19/5/run-your-blog-github-pages-python 作者:[Erik O'Shaughnessy][a] 选题:[lujun9972][b] 译者:[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 f0e882d9c2cdf28afcb09e829cae5dd5e791975f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 10:11:32 +0800 Subject: [PATCH 128/218] PUB @MjSeven https://linux.cn/article-12064-1.html --- .../20190523 Run your blog on GitHub Pages with Python.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190523 Run your blog on GitHub Pages with Python.md (99%) diff --git a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md b/published/20190523 Run your blog on GitHub Pages with Python.md similarity index 99% rename from translated/tech/20190523 Run your blog on GitHub Pages with Python.md rename to published/20190523 Run your blog on GitHub Pages with Python.md index 302ff61426..ea62c62a04 100644 --- a/translated/tech/20190523 Run your blog on GitHub Pages with Python.md +++ b/published/20190523 Run your blog on GitHub Pages with Python.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (MjSeven) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12064-1.html) [#]: subject: (Run your blog on GitHub Pages with Python) [#]: via: (https://opensource.com/article/19/5/run-your-blog-github-pages-python) [#]: author: (Erik O'Shaughnessy https://opensource.com/users/jnyjny/users/jasperzanjani/users/jasperzanjani/users/jasperzanjani/users/jnyjny/users/jasperzanjani) From c207c3a91b56c21d7bbb624e1b6434a5736cab13 Mon Sep 17 00:00:00 2001 From: Hank Chow <280630620@qq.com> Date: Thu, 2 Apr 2020 10:57:22 +0800 Subject: [PATCH 129/218] hankchow translating --- ...02 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md index aa74979e36..cbbe8f7866 100644 --- a/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md +++ b/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (HankChow) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 0b20ce72e7dc4c82b468dd65602c7d3a5d22e369 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 11:13:05 +0800 Subject: [PATCH 130/218] APL --- .../tech/20200311 Directing Kubernetes traffic with Traefik.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md b/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md index 76a457be59..a76138274b 100644 --- a/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md +++ b/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 3b87db4c5ef239abf1575103960cb44d8b273189 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 13:04:09 +0800 Subject: [PATCH 131/218] TSL --- ...recting Kubernetes traffic with Traefik.md | 394 ------------------ ...recting Kubernetes traffic with Traefik.md | 381 +++++++++++++++++ 2 files changed, 381 insertions(+), 394 deletions(-) delete mode 100644 sources/tech/20200311 Directing Kubernetes traffic with Traefik.md create mode 100644 translated/tech/20200311 Directing Kubernetes traffic with Traefik.md diff --git a/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md b/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md deleted file mode 100644 index a76138274b..0000000000 --- a/sources/tech/20200311 Directing Kubernetes traffic with Traefik.md +++ /dev/null @@ -1,394 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Directing Kubernetes traffic with Traefik) -[#]: via: (https://opensource.com/article/20/3/kubernetes-traefik) -[#]: author: (Lee Carpenter https://opensource.com/users/carpie) - -Directing Kubernetes traffic with Traefik -====== -A step-by-step walkthrough on ingressing traffic into a -Kubernetes-Raspberry Pi cluster. -![Digital creative of a browser on the internet][1] - -In this article, we will deploy a couple of simple websites and learn how to ingress traffic from the outside world into our cluster using Traefik. After that, we will learn how to remove Kubernetes resources as well. Let’s get started! - -### Materials needed - -To follow along with the article, you only need [the k3s Raspberry Pi cluster][2] we built in a previous article. Since your cluster will be pulling images from the web, the cluster will need to be able to access the internet. - -Some configuration files and sample HTML files will be shown in this article for explanation purposes. All sample files can be downloaded [here][3]. - -### Deploying a simple website - -Previously, we did a direct deploy with **kubectl**. This is not the typical way to deploy things, however. Generally, YAML configuration files are used, and that is what we will use in this article. We will start at the top and create our configuration files in a top-down approach. - -### Deployment configuration - -First up is the deployment configuration. The configuration is shown below, and the explanation follows. I typically use the samples from the [Kubernetes documentation][4] as a starting point and then modify them to suit my needs. For example, the configuration below was modified after copying the sample from the [deployment docs][5]. - -Create a file, **mysite.yaml**, with the following contents: - - -``` -apiVersion: apps/v1 -kind: Deployment -metadata: -  name: mysite-nginx -  labels: -    app: mysite-nginx -spec: -  replicas: 1 -  selector: -    matchLabels: -      app: mysite-nginx -  template: -    metadata: -      labels: -        app: mysite-nginx -    spec: -      containers: -      - name: nginx -        image: nginx -        ports: -        - containerPort: 80 -``` - -Most of this is boilerplate. The important parts, we have named our deployment **mysite-nginx** with an **app** label of **mysite-nginx **as well. We have specified that we want one **replica** which means there will only be one pod created. We also specified **one container**, which we named **nginx**. We specified the **image** to be **nginx**. This means, on deployment, k3s will download the **nginx** image from DockerHub and create a pod from it. Finally, we specified a **containerPort** of **80**, which just means that inside the container the pod will listen on port **80**. - -I emphasized "inside the container" above because it is an important distinction. As we have the container configured, it is only accessible inside the container, and it is further restricted to an internal network. This is necessary to allow multiple containers to listen on the same container ports. In other words, with this configuration, some other pod could listen on its container port 80 as well and not conflict with this one. To provide formal access to this pod, we need a **service** configuration. - -### Service configuration - -In Kubernetes, a **service** is an abstraction. It provides a means to access a pod or set of pods. One connects to the service and the service routes to a single pod or load balances to multiple pods if multiple pod replicas are defined. - -The service can be specified in the same configuration file, and that is what we will do here. Separate configuration areas with **`---`**. Add the following to **mysite.yaml**: - - -``` -\--- -apiVersion: v1 -kind: Service -metadata: -  name: mysite-nginx-service -spec: -  selector: -    app: mysite-nginx -  ports: -    - protocol: TCP -      port: 80 -``` - -In this configuration, we have named our service **mysite-nginx-service**. We provided a `selector` of **app: mysite-nginx**. This is how the service chooses the application containers it routes to. Remember, we provided an **app** label for our container as **mysite-nginx**. This is what the service will use to find our container. Finally, we specified that the service protocol is **TCP** and the service listens on port **80**. - -### Ingress configuration - -The ingress configuration specifies how to get traffic from outside our cluster to services inside our cluster. Remember, k3s comes pre-configured with Traefik as an ingress controller. Therefore, we will write our ingress configuration specific to Traefik. Add the following to **mysite.yaml **( and don’t forget to separate with **`---`**): - - -``` -\--- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: -  name: mysite-nginx-ingress -  annotations: -    kubernetes.io/ingress.class: "traefik" -spec: -  rules: -  - http: -      paths: -      - path: / -        backend: -          serviceName: mysite-nginx-service -          servicePort: 80 -``` - -In this configuration, we have named the ingress record **mysite-nginx-ingress**. And we told Kubernetes that we expect **traefik** to be our ingress controller with the **kubernetes.io/ingress.class** annotation. - -In the **rules** section, we are basically saying, when **http** traffic comes in, and the **path** matches **`/`** (or anything below that), route it to the **backend** service specified by the **serviceName mysite-nginx-service**, and route it to **servicePort 80**. This connects incoming HTTP traffic to the service we defined earlier. - -### Something to deploy - -That is really it as far as configuration goes. If we deployed now, we would get the default **nginx** page, but that is not what we want. Let’s create something simple but custom to deploy. Create the file **index.html** with the following contents: - - -``` -<html> -<head><title>K3S!</title> -  <style> -    html { -      font-size: 62.5%; -    } -    body { -      font-family: sans-serif; -      background-color: midnightblue; -      color: white; -      display: flex; -      flex-direction: column; -      justify-content: center; -      height: 100vh; -    } -    div { -      text-align: center; -      font-size: 8rem; -      text-shadow: 3px 3px 4px dimgrey; -    } -  </style> -</head> -<body> -  <div>Hello from K3S!</div> -</body> -</html> -``` - -We have not yet covered storage mechanisms in Kubernetes, so we are going to cheat a bit and just store this file in a Kubernetes config map. This is not the recommended way to deploy a website, but it will work for our purposes. Run the following: - - -``` -`kubectl create configmap mysite-html --from-file index.html` -``` - -This command creates a `configmap` resource named **mysite-html** from the local file **index.html**. This essentially stores a file (or set of files) inside a Kubernetes resource that we can call out in configuration. It is typically used to store configuration files (hence the name), so we are abusing it a bit here. In a later article, we will discuss proper storage solutions in Kubernetes. - -With the config map created, let’s mount it inside our **nginx** container. We do this in two steps. First, we need to specify a **volume**, calling out the config map. Then we need to mount the volume into the **nginx** container. Complete the first step by adding the following under the **spec** label, just after **containers** in **mysite.yaml**: - - -``` -      volumes: -      - name: html-volume -        configMap: -          name: mysite-html -``` - -This tells Kubernetes that we want to define a **volume**, with the name **html-volume** and that volume should contain the contents of the **configMap** named **html-volume** (which we created in the previous step). - -Next, in the **nginx** container specification, just under **ports**, add the following: - - -``` -        volumeMounts: -        - name: html-volume -          mountPath: /usr/share/nginx/html -``` - -This tells Kubernetes, for the **nginx** container, we want to mount a **volume** named **html-volume** at the path (in the container) **/usr/share/nginx/html**. Why **/usr/share/nginx/html**? That is where the **nginx** image serves HTML from. By mounting our volume at that path, we have replaced the default contents with our volume contents. - -For reference, the **deployment** section of the configuration file should now look like this: - - -``` -apiVersion: apps/v1 -kind: Deployment -metadata: -  name: mysite-nginx -  labels: -    app: mysite-nginx -spec: -  replicas: 1 -  selector: -    matchLabels: -      app: mysite-nginx -  template: -    metadata: -      labels: -        app: mysite-nginx -    spec: -      containers: -      - name: nginx -        image: nginx -        ports: -        - containerPort: 80 -        volumeMounts: -        - name: html-volume -          mountPath: /usr/share/nginx/html -      volumes: -      - name: html-volume -        configMap: -          name: mysite-html -``` - -### Deploy it! - -Now we are ready to deploy! We can do that with: - - -``` -`kubectl apply -f mysite.yaml` -``` - -You should see something similar to the following: - - -``` -deployment.apps/mysite-nginx created -service/mysite-nginx-service created -ingress.networking.k8s.io/mysite-nginx-ingress created -``` - -This means that Kubernetes created resources for each of the three configurations we specified. Check on the status of the pods with: - - -``` -`kubectl get pods` -``` - -If you see a status of **ContainerCreating**, give it some time and run **kubectl get pods** again. Typically, the first time, it will take a while because k3s has to download the **nginx** image to create the pod. After a while, you should get a status of **Running**. - -### Try it! - -Once the pod is running, it is time to try it. Open up a browser and type **kmaster** into the address bar. - -![][6] - -Congratulations! You’ve deployed a website on your k3s cluster! - -### Another one - -So now we have a whole k3s cluster running a single website. But we can do more! What if we have another website we want to serve on the same cluster? Let’s see how to do that. - -Again, we need something to deploy. It just so happens that my dog has a message she has wanted the world to know for some time. So, I crafted some HTML just for her (available from the samples zip file). Again, we will use the config map trick to host our HTML. This time we are going to poke a whole directory (the **html** directory) into a config map, but the invocation is the same. - - -``` -`kubectl create configmap mydog-html --from-file html` -``` - -Now we need to create a configuration file for this site. It is almost exactly the same as the one for **mysite.yaml**, so start by copying **mysite.yaml** to **mydog.yaml**. Now edit **mydog.yaml** to be: - - -``` -apiVersion: apps/v1 -kind: Deployment -metadata: -  name: mydog-nginx -  labels: -    app: mydog-nginx -spec: -  replicas: 1 -  selector: -    matchLabels: -      app: mydog-nginx -  template: -    metadata: -      labels: -        app: mydog-nginx -    spec: -      containers: -      - name: nginx -        image: nginx -        ports: -        - containerPort: 80 -        volumeMounts: -        - name: html-volume -          mountPath: /usr/share/nginx/html -      volumes: -      - name: html-volume -        configMap: -          name: mydog-html -\--- -apiVersion: v1 -kind: Service -metadata: -  name: mydog-nginx-service -spec: -  selector: -    app: mydog-nginx -  ports: -    - protocol: TCP -      port: 80 -\--- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: -  name: mydog-nginx-ingress -  annotations: -    kubernetes.io/ingress.class: "traefik" -    traefik.frontend.rule.type: PathPrefixStrip -spec: -  rules: -  - http: -      paths: -      - path: /mydog -        backend: -          serviceName: mydog-nginx-service -          servicePort: 80 -``` - -We can do most of the edits by simply doing a search and replace of **mysite** to **mydog**. The two other edits are in the ingress section. We changed **path** to **/mydog **and we added an annotation, **traefik.frontend.rule.type: PathPrefixStrip**. - -The specification of the path **/mydog** instructs Traefik to route any incoming request that requests a path starting with **/mydog** to the **mydog-nginx-service**. Any other path will continue to be routed to **mysite-nginx-service.** - -The new annotation, **PathPrefixStrip**, tells Traefik to strip off the prefix **/mydog** before sending the request to **mydog-nginx-service**. We did this because the **mydog-nginx** application doesn’t expect a prefix. This means we could change where the service was mounted simply by changing the prefix in the ingress record. - -Now we can deploy like we did before: - - -``` -`kubectl apply -f mydog.yaml` -``` - -And now, my dog’s message should be available at . - -![][7] - -Phew! The message is out! Maybe we can all get some sleep tonight. - -So now, we have a k3s cluster hosting two websites with Traefik making decisions, based on path names, as to which service to pass the request to! We are not limited to path-based routing, however. We could use hostname based routing as well, which we will explore in a future article. - -Also, the websites we just hosted are standard unencrypted HTML sites. Everything these days is encrypted with SSL/TLS. In our next article, we will add support to our k3s cluster to host SSL/TLS HTTPS sites as well! - -### Cleaning up - -Before you go, since this article mostly dealt with sample sites, I would like to show you how to delete things in case you don’t want the samples hanging around on your cluster. - -For most configurations, you can undo the configuration simply by running the **delete** command with the same configuration file you deployed with. So let’s clean up both **mysite** and **mydog**. - - -``` -kubectl delete -f mysite.yaml -kubectl delete -f mydog.yaml -``` - -Since we manually created the config maps, we’ll need to delete those manually as well. - - -``` -kubectl delete configmap mysite-html -kubectl delete configmap mydog-html -``` - -Now if we do a **kubectl get pods**, we should see that our nginx pods are no longer around. - - -``` -$ kubectl get pods -No resources found in default namespace. -``` - -Everything is cleaned up. - -Tell me what thoughts you have on this project in the comments below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/kubernetes-traefik - -作者:[Lee Carpenter][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/carpie -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) -[2]: https://opensource.com/article/20/3/kubernetes-raspberry-pi -[3]: https://gitlab.com/carpie/ingressing_with_k3s/-/archive/master/ingressing_with_k3s-master.zip -[4]: https://kubernetes.io/docs/ -[5]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment -[6]: https://opensource.com/sites/default/files/uploads/mysite.jpg -[7]: https://opensource.com/sites/default/files/uploads/mydog.jpg diff --git a/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md b/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md new file mode 100644 index 0000000000..bb35205ad2 --- /dev/null +++ b/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md @@ -0,0 +1,381 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Directing Kubernetes traffic with Traefik) +[#]: via: (https://opensource.com/article/20/3/kubernetes-traefik) +[#]: author: (Lee Carpenter https://opensource.com/users/carpie) + +使用 Traefik 引导 Kubernetes 流量 +====== + +> 将流量引入 Kubernetes 树莓派集群的分步指南。 + +![Digital creative of a browser on the internet][1] + +在本文中,我们将部署几个简单的网站,并学习如何使用 Traefik 将来自外部世界的流量引入到我们的集群中。之后,我们还将学习如何删除 Kubernetes 资源。让我们开始吧! + +- [video](https://youtu.be/QcC-5fRhsM8) + +### 准备 + +要继续阅读本文,你只需要我们在上一篇文章中构建的 [k3s 树莓派集群][2]。由于你的集群将从网络上拉取图像,因此该集群需要能够访问互联网。 + +出于解释目的,本文将显示一些配置文件和示例 HTML 文件。所有示例文件都可以在[此处][3]下载。 + +### 部署一个简单的网站 + +之前,我们使用 `kubectl` 进行了直接部署。但是,这不是部署事物的典型方法。通常,会使用 YAML 配置文件,这就是我们将在本文中使用的配置文件。我们将从顶部开始,并以自顶向下的方式创建该配置文件。 + +### 部署配置 + +首先是部署配置。配置如下所示,并在下面进行说明。我通常以 [Kubernetes 文档][4]中的示例为起点,然后对其进行修改以适合我的需求。例如,从[部署文档][5]复制示例后,修改下面的配置。 + +创建一个文件 `mysite.yaml`,其内容如下: + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysite-nginx + labels: + app: mysite-nginx +spec: + replicas: 1 + selector: + matchLabels: + app: mysite-nginx + template: + metadata: + labels: + app: mysite-nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 +``` + +其中大部分是样板。重要的部分,我们会将该部署命名为 `mysite-nginx`,并加上 `mysite-nginx` 的 `app` 标签。我们已指定要一个副本replica,这意味着将只创建一个 Pod。我们还指定了一个容器,我们将其命名为 `nginx`。我们将镜像image指定为 `nginx`。这意味着在部署时,k3s 将从 DockerHub 下载 `nginx` 镜像并从中创建一个 Pod。最后,我们指定了容器端口containerPort为 `80`,这只意味着在容器内部 Pod 会监听 `80` 端口。 + +我在上面强调了“在容器内部”,因为这是一个重要的区别。由于我们是按容器配置的,因此只能在容器内部访问它,并且进一步将其限制为内部网络。这是允许多个容器在同一容器端口上监听所必需的。换句话说,通过这种配置,其他某些 Pod 也可以在其容器端口 80 上侦听,并且不会与此容器冲突。为了提供对该 Pod 的正式访问权限,我们需要一个服务service配置。 + +### 服务配置 + +在 Kubernetes 中,服务service是一种抽象。它提供了一种访问一个或一组 Pod 的方法。如果定义了多个 Pod 副本,则一个连接到服务,并且由服务路由到单个 Pod,或通过负载均衡路由到多个 Pod。 + +可以在同一配置文件中指定该服务,这就是我们将在此处执行的操作。用 `---` 分隔配置区域。将以下内容添加到 `mysite.yaml` 中: + +``` +--- +apiVersion: v1 +kind: Service +metadata: + name: mysite-nginx-service +spec: + selector: + app: mysite-nginx + ports: + - protocol: TCP + port: 80 +``` + +在此配置中,我们将服务命名为 `mysite-nginx-service`。我们提供了 `app: mysite-nginx` 的选择器selector。这是服务选择其路由到的应用程序容器的方式。请记住,我们为容器提供了一个内容为 `mysite-nginx` 的 `app` 标签。这就是服务用来查找我们的容器的方式。最后,我们指定服务协议为 `TCP`,在端口 `80` 上侦听。 + +### 入口配置 + +入口Ingress配置指定如何将流量从集群外部传递到集群内部的服务。请记住,k3s 预先配置了 Traefik 作为入口控制器。因此,我们将编写特定于 Traefik 的入口配置。将以下内容添加到 `mysite.yaml` 中(不要忘了用 `---` 分隔): + +``` +--- +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: mysite-nginx-ingress + annotations: + kubernetes.io/ingress.class: "traefik" +spec: + rules: + - http: + paths: + - path: / + backend: + serviceName: mysite-nginx-service + servicePort: 80 +``` + +在此配置中,我们将入口记录命名为 `mysite-nginx-ingress`。我们告诉 Kubernetes,我们希望 `traefik` 成为我们的入口控制器,带有 `kubernetes.io/ingress.class` 的注解。 + +在规则rules部分中,我们基本上是说,当 `http` 流量进入时,并且 `path` 匹配 `/`(或其下的任何内容),将其路由到由 `serviceName mysite-nginx-service` 指定的后端backend服务中,并将其路由到 `servicePort 80`。这会将传入的 HTTP 流量连接到我们之前定义的服务。 + +### 部署的东西 + +就配置而言,确实如此。如果现在部署,我们将获得默认的 nginx 页面,但这不是我们想要的。让我们创建一些简单但可自定义的部署方式。创建具有以下内容的文件 `index.html`: + +``` + +K3S! + + + +
Hello from K3S!
+ + +``` + +我们尚未介绍 Kubernetes 中的存储机制,因此在这里我们偷懒一下,仅将该文件存储在 Kubernetes 配置映射中。这不是建议的网站部署方式,但可以满足我们的目的。运行以下命令: + +``` +kubectl create configmap mysite-html --from-file index.html +``` + +该命令从本地文件 `index.html` 创建名为 `mysite-html` 的配置映射configmap资源。这实际上是在 Kubernetes 资源中存储一个文件(或一组文件),我们可以在配置中调出该文件。它通常用于存储配置文件(因此而得名),因此我们在这里稍加滥用。在以后的文章中,我们将讨论 Kubernetes 中适当的存储解决方案。 + +创建配置映射后,让我们将其挂载在我们的 `nginx` 容器中。我们分两个步骤进行。首先,我们需要指定一个volume来调出配置映射。然后我们需要将该卷挂载到 `nginx` 容器中。通过在 `mysite.yaml` 中的 `container` 后面的 `spec` 标签下添加以下内容来完成第一步: + +``` +      volumes: +      - name: html-volume +        configMap: +          name: mysite-html +``` + +这告诉 Kubernetes 我们要定义一个名为 `html-volume` 的卷,并且该卷应包含名为 `html-volume`(我们在上一步中创建的)的配置映射的内容。 + +接下来,在 `nginx` 容器规范中的端口port下方,添加以下内容: + +``` +        volumeMounts: +        - name: html-volume +          mountPath: /usr/share/nginx/html +``` + +这告诉 Kubernetes,对于 `nginx` 容器,我们想在容器中的 `/usr/share/nginx/html` 路径中挂载名为 `html-volume` 的卷。 为什么要使用 `/usr/share/nginx/html`?那个位置就是 `nginx` 镜像提供 HTML 服务的地方。通过在该路径上挂载卷,我们用该卷内容替换了默认内容。 + +作为参考,配置文件的 `deployment` 部分现在应如下所示: + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: +  name: mysite-nginx +  labels: +    app: mysite-nginx +spec: +  replicas: 1 +  selector: +    matchLabels: +      app: mysite-nginx +  template: +    metadata: +      labels: +        app: mysite-nginx +    spec: +      containers: +      - name: nginx +        image: nginx +        ports: +        - containerPort: 80 +        volumeMounts: +        - name: html-volume +          mountPath: /usr/share/nginx/html +      volumes: +      - name: html-volume +        configMap: +          name: mysite-html +``` + +### 部署它! + +现在我们准备部署! 我们可以这样做: + +``` +kubectl apply -f mysite.yaml +``` + +你应该看到类似于以下内容: + +``` +deployment.apps/mysite-nginx created +service/mysite-nginx-service created +ingress.networking.k8s.io/mysite-nginx-ingress created +``` + +这意味着 Kubernetes 为我们指定的三个配置分别创建了资源。使用以下方法检查 Pod 的状态: + +``` +kubectl get pods +``` + +如果看到状态为 `ContainerCreating`,请给它一些时间并再次运行 `kubectl get pods`。通常,第一次会花一些时间,因为 k3s 必须下载 `nginx` 镜像来创建 Pod。一段时间后,你应该看到 `Running` 的状态。 + +### 尝试一下! + +Pod 运行之后,就该尝试了。 开浏览器,然后在地址栏中输入 `kmaster`。 + +![][6] + +恭喜你!你已经在 k3s 集群上部署了一个网站! + +### 另一个 + +因此,现在我们有了一个运行单个网站的整个 k3s 集群。但是我们可以做更多!如果我们要在同一集群中提供另一个网站怎么办?让我们看看如何做到这一点。 + +同样,我们需要部署一些东西。碰巧我的狗有一条信息,她想让世界知道一段时间。因此,我专门为她制作了一些 HTML(可从示例 zip 文件中获得)。同样,我们将使用配置映射的技巧来托管这些 HTML。这次我们将把整个目录(`html` 目录)放到配置映射中,但是调用是相同的。 + +``` +kubectl create configmap mydog-html --from-file html +``` + +现在,我们需要为此站点创建一个配置文件。它几乎与用于 `mysite.yaml` 的完全相同,因此首先将 `mysite.yaml` 复制为 `mydog.yaml`。现在将 `mydog.yaml` 修改为: + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mydog-nginx + labels: + app: mydog-nginx +spec: + replicas: 1 + selector: + matchLabels: + app: mydog-nginx + template: + metadata: + labels: + app: mydog-nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 + volumeMounts: + - name: html-volume + mountPath: /usr/share/nginx/html + volumes: + - name: html-volume + configMap: + name: mydog-html +--- +apiVersion: v1 +kind: Service +metadata: + name: mydog-nginx-service +spec: + selector: + app: mydog-nginx + ports: + - protocol: TCP + port: 80 +--- +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: mydog-nginx-ingress + annotations: + kubernetes.io/ingress.class: "traefik" + traefik.frontend.rule.type: PathPrefixStrip +spec: + rules: + - http: + paths: + - path: /mydog + backend: + serviceName: mydog-nginx-service + servicePort: 80 +``` + +我们只需进行搜索并将 `mysite` 替换为 `mydog`即可完成大多数修改。其他两个修改在入口部分中。我们将 `path` 更改为 `/mydog`,并添加了一个注解 `traefik.frontend.rule.type: PathPrefixStrip`。 + +`/mydog` 路径的规范指示 Traefik 将以 `/mydog` 路径开头的所有传入请求路由到 `mydog-nginx-service`。任何其他路径将继续路由到 `mysite-nginx-service`。 + +新的注解 `PathPrefixStrip` 告诉 Traefik 在将请求发送到 `mydog-nginx-service` 之前先去除前缀 `/mydog`。我们这样做是因为 `mydog-nginx` 应用程序不需要前缀。这意味着我们可以简单地通过更改入口记录中的前缀来更改挂载的服务的位置。 + +现在我们可以像以前一样进行部署: + +``` +kubectl apply -f mydog.yaml +``` + +现在,我的狗的消息应该可以在 上找到。 + +![][7] + + +呼!消息出来了!也许今晚我们都可以睡一觉。 + +因此,现在,我们有了一个 k3s 集群,该集群托管了两个网站,Traefik 根据路径名决定将请求传递给哪个服务!但是,我们不仅限于基于路径的路由。我们也可以使用基于主机名的路由,我们将在以后的文章中进行探讨。 + +另外,我们刚刚托管的网站是标准的未加密 HTML 网站,如今的所有内容都使用 SSL/TLS 加密。在我们的下一篇文章中,我们将为 k3s 集群添加支持以托管 SSL/TLS HTTPS 站点! + +### 清理 + +在开始之前,由于本文主要涉及的是示例站点,因此我想向你展示如何删除内容,以防万一你不希望将这些示例丢在集群中。 + +对于大多数配置,只需使用与部署时使用的相同配置文件运行 `delete` 命令即可撤消配置。因此,让我们同时清理 `mysite` 和 `mydog`。 + +``` +kubectl delete -f mysite.yaml +kubectl delete -f mydog.yaml +``` + +由于我们是手动创建配置映射的,因此我们也需要手动删除它们。 + +``` +kubectl delete configmap mysite-html +kubectl delete configmap mydog-html +``` + +现在,如果我们执行 `kubectl get pods`,我们应该看到我们的 nginx Pod 不存在了。 + +``` +$ kubectl get pods +No resources found in default namespace. +``` + +一切都清理了。 + +请在下面的评论中告诉我你对这个项目有什么想法。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/kubernetes-traefik + +作者:[Lee Carpenter][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/carpie +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) +[2]: https://opensource.com/article/20/3/kubernetes-raspberry-pi +[3]: https://gitlab.com/carpie/ingressing_with_k3s/-/archive/master/ingressing_with_k3s-master.zip +[4]: https://kubernetes.io/docs/ +[5]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment +[6]: https://opensource.com/sites/default/files/uploads/mysite.jpg +[7]: https://opensource.com/sites/default/files/uploads/mydog.jpg From 59362ca799f82ca0451846d7ccc152bdcf40a61c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 17:40:13 +0800 Subject: [PATCH 132/218] APL --- sources/tech/20200331 5 ways to level up your Vim skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200331 5 ways to level up your Vim skills.md b/sources/tech/20200331 5 ways to level up your Vim skills.md index f5c315b1e7..d927fb59da 100644 --- a/sources/tech/20200331 5 ways to level up your Vim skills.md +++ b/sources/tech/20200331 5 ways to level up your Vim skills.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 2991518b037cbd35ce30ee623bee31ac52e13543 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 2 Apr 2020 19:19:19 +0800 Subject: [PATCH 133/218] TSL PART 1 --- ...0331 5 ways to level up your Vim skills.md | 161 ------------------ ...0331 5 ways to level up your Vim skills.md | 159 +++++++++++++++++ 2 files changed, 159 insertions(+), 161 deletions(-) delete mode 100644 sources/tech/20200331 5 ways to level up your Vim skills.md create mode 100644 translated/tech/20200331 5 ways to level up your Vim skills.md diff --git a/sources/tech/20200331 5 ways to level up your Vim skills.md b/sources/tech/20200331 5 ways to level up your Vim skills.md deleted file mode 100644 index d927fb59da..0000000000 --- a/sources/tech/20200331 5 ways to level up your Vim skills.md +++ /dev/null @@ -1,161 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 ways to level up your Vim skills) -[#]: via: (https://opensource.com/article/20/3/vim-skills) -[#]: author: (Detlef Johnson https://opensource.com/users/deckart) - -5 ways to level up your Vim skills -====== -Kick your text editor up a notch with a few fun tricks. -![Computer keyboard typing][1] - -Vim is one of the most popular text editors out there, so it is definitely worth taking time to learn how to use it. If the only things you learn how to do with the ubiquitous [Vi(m)][2] command-line text editor are to open a file, enter and edit some text, save the edited files, and exit the program, you will be much better off for it. - -Circumstances where you will find it extremely convenient to know Vim nearly always involve tasks running remote shell operations. If you regularly use secure shell:  - - -``` -`$ ssh user@hostname.provider.com` -``` - -and work with virtual private servers (VPS) or local virtualization containers, for that matter, you could benefit greatly from strong Vim skills. - -### Set Vim as your default text editor - -Vim is readily available in nearly all modern Linux (or BSD) distributions at the terminal emulator shell-command prompt. Once you've defined Vim as your default editor in your user shell, then you can navigate built-in utilities like **$ man** using familiar Vim key bindings. I'll explain how to do that with both Bash and Z shell (zsh), which is now the default shell for macOS users (since Catalina). - -#### Set Vim as default in Bash - -Bash manages settings through a combination of dotfiles. It's most common to add your preferred editor to your **.bashrc** file in your home directory, but it can be added to **.bash_profile** as well. (Read the [GNU Bash documentation][3] to understand the difference). - -Set Vim as your default editor by adding the following to **~/.bashrc**: - - -``` -# set default editor to Vim -export EDITOR=vim -``` - -A line starting with a **#** is an optional comment, which is a good way to remind yourself what a command does. - -#### Set Vim as default in Zsh - -Zsh is an increasingly popular terminal emulator, especially since Apple's FreeBSD-based Darwin system recently switched from Bash to zsh. - -The zsh dotfile parallels Bash's, so you can choose between **~/.zshrc** or **~/.zprofile**. See [the zsh documentation][4] for details on when to use which one. - -Set it as default with: - - -``` -# set default editor to Vim -export EDITOR=vim -``` - -### Optimize your Vim configuration - -Vim, much like a terminal emulator shell, uses dotfiles to set personal preferences. If you spotted the pattern, you might have guessed it's **~/.vimrc**. - -The first setting you may want to change is switching legacy Vi compatibility mode to Off. Since Vim is a superset of Vi, everything in Vi is available and vastly improved in Vim, and you get many advanced features. The latest version (8.2) allows you to open a terminal as a subprocess shell running in a split window. - -As an aside, setting legacy compatibility off might not seem like it's doing anything ([and in fact, it might not be][5]). Vim automatically switches the mode to Off by implication when it encounters a **.vimrc** file. It can still be important at times to explicitly turn it off. The shorthand "nocp" is synonymous with "nocompatible," which also works. There are many "[TIMTOWTDI][6]" conveniences for switching preferences as you work. - -Lines that begin with **"** are comments in **.vimrc** syntax (just like **#** in **.bashrc** files). They can help you remember things like why you chose a cryptic setting name. - -To turn off Vi compatibility, add the following to your **~/.vimrc** file: - - -``` -" ensure that legacy compatibility mode is off -" documentation: ' -set nocp -``` - -### Understand modes - -The notion of Vim's "modes" is very important to learn about, especially the difference between the very distinct **Normal** and **Insert** modes. Confusion about modes is what trips up most new users. Modes aren't unique to Vim, nor were they introduced by Vi. Command mode is so old that it predates the invention of [copy and paste][7] functionality in the 1970s. - -#### Important modes - -Vim depends on different modes to define keyboard-stroke behavior. The important modes to know are: - - * **Normal mode**: Default mode used primarily for navigation and opening files - * **Insert mode** (includes Replace): Where Vim allows for text input to an open file - * **Visual mode**: Where Vim acts similar to mouse-based input, such as copying, editing, replacing, and more - * **Command mode** (including Line, Ex command, and Last-line mode): A powerful way to do more in Vim - - - -Each mode has a great deal to explore. Use [Vimtutor][8] (**$ vimtutor**) to interactively learn about movement, modes, and running Ex commands in "Last Line" mode. Some indispensable productivity operators include: - -**:E** | Opens explorer for locating files and directories ----|--- -**.** | Repeats the last edit action -**;** | Repeats the last motion or movement forward -**,** | Repeats the last motion or movement backward -**/** | Searches document forward -**?** | Searches document backward -***** | Finds next occurrence of the word under the cursor -**#** | Finds the previous occurrence of the word under the cursor -**~** | Toggles case -**%** | Toggles between opening and closing **()**, **[]**, and **{}**; highly useful for coding -**z=** | Makes spelling suggestions - -### Play Vim like a piano - -While it's important to commit Vim's operator "language" to memory, the challenge to gaining mastery is to learn to think like a musician and combine operators and movements into "key chords in harmony" so that you can play Vim like a piano. That's where the power of text manipulation with Vim rivals that of the other notable command-line editor, Emacs. (While one of these editors will wear down your **Esc** key, using the other will wear down your **Ctrl** key.) - -When describing key chords, it's conventional in Vim to designate the **Ctrl** key using the capital letter C, followed by a hyphen (**C-**). It's not universal, but I will follow that convention from here onward and clarify when there is any potential for confusion. - -If you type long lines in Vim, you'll want to set it to wrap your text. To start personalizing Vim for the way you work, think about that setting: How would you like Vim to handle text wrapping by default when it starts? On or off? I like it turned off and leave it out of the runtime commands file. When I want text to wrap, I simply set it in command-line mode with **:set wrap**. - -There's nothing wrong with having Vim set to wrap text by default. It's simply a matter of preference—which can change over time. The same goes for handling paste, code language indent syntax, and the **Tab** key (tabs or spaces? and how many spaces then? Dive into these options [here][9]). All these options for default behavior are entirely configurable and changeable in real time as you work with command-line mode operations. - -You will find many suggestions for setting Vim defaults in community forums, on Vim wikis, and in articles (like this one). Setting preferences for your personal computing environment should be fairly familiar to you, and Vim is no different. I highly recommend that you start by making very small changes to your settings, and make additional changes slowly so that you can easily revert settings. This way, you might avoid the use of plugins for years—or entirely. - -### Splits, tabs, and terminals in Vim 8.2 - -There are two ways to split your working files into different views: they can appear side-by-side, or you can switch between them with full (window) screens using application tabs. These changes to your application window are initiated from command-line mode, which requires a colon (**:**) to call up the prompt. - -Each window split can host a file for editing, and you can arrange tabs to switch between additional files as much as you like. There is limited screen space for splits, so tabs are handy when you want to split more screens. How you decide to work is purely a matter of preference. To split a window horizontally, use **:sp**, and use **:vs** for vertical splits. - -As of [Vim 8.2][10], you can open a terminal shell sub-process in a vertical split with **:vert term** to run operations on the command line right alongside your code. You need to type **exit** to close your terminal process, just like you would end a shell session, but you close splits and tabs the same way you would close any ordinary Vim window, with **:q**. - -To initialize a tab, use a special edit command: **:tabedit**, which automatically switches you to the new open tab. If you give the command a file name as an argument, that file will open for editing. If you neglect to give it a file name as an argument, the command-line mode edit **:e filename.txt** works just like it would in any ordinary Vim window. Navigate tabs with the next (**:tabn**) and previous (**:tabp**) commands. - -To use splits, you need to know how to navigate among them using the key-chord combination **C-w** plus a movement key in the direction you want to move, such as left (**h**), down (**j**), up (**k**), or right (**l**). When you want to learn more key chords specific to splits and tabs, read the **:help split** and **:help tabpage** for the Vim manual entries. - -### Get help - -While the Vim manual is referenced in Vimtutor, opening Vim help with **:help** will let you spend time with the editor on your own and get more productive without wholly relying on articles like this one. Experience is key to Vim mastery. The experience contributes to your overall computing intuition since so much of what has gone into Vim is drawn from the Unix universe. - -Have fun exploring the beauty of Vim, and share any questions you have in the comments. - -Want to become a master of text editing in the terminal, and beyond? These tips for getting started... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/vim-skills - -作者:[Detlef Johnson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/deckart -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) -[2]: https://www.vim.org/ -[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html -[4]: http://zsh.sourceforge.net/Intro/intro_3.html -[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default -[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it -[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions -[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor -[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse -[10]: https://www.vim.org/vim-8.2-released.php diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/translated/tech/20200331 5 ways to level up your Vim skills.md new file mode 100644 index 0000000000..6ca9cc0d65 --- /dev/null +++ b/translated/tech/20200331 5 ways to level up your Vim skills.md @@ -0,0 +1,159 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5 ways to level up your Vim skills) +[#]: via: (https://opensource.com/article/20/3/vim-skills) +[#]: author: (Detlef Johnson https://opensource.com/users/deckart) + +提升你的 Vim 技能的 5 个方法 +====== + +> 通过一些有趣的技巧使你的文本编辑器更上一层楼。 + +![Computer keyboard typing][1] + +Vim 是最受欢迎的文本编辑器之一,因此绝对值得花时间学习如何使用它。如果你使用这个无处不在的 [Vi(m)][2] 命令行文本编辑器来做的只是打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,那么你还有很大的提示空间、。 + +在某些情况下你会发现,使用 Vim 非常方便的的场景几乎总是涉及到运行远程 Shell 操作的任务。如果你时不时地使用 ssh,比如 + +``` +$ ssh user@hostname.provider.com +``` + +并在虚拟专用服务器(VPS)或本地虚拟化容器中工作,那么就可以从这些强大的 Vim 技能中受益匪浅。 + +### 将 Vim 设置为默认的文本编辑器 + +几乎在所有现代 Linux(或 BSD)发行版中,都可以在终端仿真器的 shell 命令提示符下使用 Vim。在用户 shell 程序中将 Vim 定义为默认编辑器后,即可使用熟悉的 Vim 键绑定来浏览内置的实用程序,例如 `man`。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 现在是 macOS 用户的默认shell(自 Catalina 起)。 + +#### 在 Bash 中将 Vim 设置为默认 + +Bash 通过点文件的组合来管理设置。将首选编辑器添加到主目录中的 `.bashrc` 文件中是最常见的,但也可以将其添加到 `.bash_profile` 中。(请阅读 [GNU Bash 文档][3]了解不同之处)。 + +通过在 `~/.bashrc` 中添加以下内容,将 Vim 设置为默认编辑器: + +``` +# set default editor to Vim +export EDITOR=vim +``` + +以 `#` 开头的行是可选的注释,这是提醒自己该命令的功能的好方法。 + +#### 在 zsh 中将 Vim 设置为默认 + +zsh 是一种越来越流行的终端模拟器,尤其是自苹果的基于 FreeBSD 的 Darwin 系统最近从 Bash 切换到 zsh 以来。 + +zsh 点文件与 Bash 的文件相当,因此你可以在 `~/.zshrc` 或 `~/.zprofile` 之间进行选择。有关何时使用哪一个的详细信息,请参见 [zsh文档][4]。 + +将其设置为默认: + +``` +# set default editor to Vim +export EDITOR=vim +``` + +### 优化 Vim 配置 + +Vim 很像终端仿真器外壳,它使用点文件来设置个人偏好。如果发现该模式,则可能已经猜到它是 `~/.vimrc`。 + +你可能要更改的第一个设置是将对旧 Vi 兼容模式切换为“关”。由于 Vim 是 Vi 的超集,因此 Vi 中的所有功能都可用,并在 Vim 中进行了很大的改进,你可以获得许多高级功能。最新版本(8.2)允许你在拆分的窗口中打开终端运行一个子进程 shell 程序。 + +顺便说一句,关闭旧版兼容性似乎没有做什么事情([事实上,可能不是][5])。当遇到一个 `.vimrc` 文件时,Vim 会自动将该模式切换为关闭。但有时将其明确关闭仍然很重要。缩写 `nocp` 是 `nocompatible` 的同义词,也可以使用它。[条条大道通罗马][6],切换首选项有很多方式。 + +在 `.vimrc` 语法中, 以 `"` 开头的行是注释(就像 `.bashrc` 文件中的 `#` 一样),这些注释可以帮助你记住诸如为何选择一个隐秘的设置名称之类的内容。 + +要关闭 Vi 兼容性,请将以下内容添加到 `~/.vimrc` 文件中: + +``` +" ensure that legacy compatibility mode is off +" documentation: ' +set nocp +``` + +### Understand modes + +The notion of Vim's "modes" is very important to learn about, especially the difference between the very distinct `Normal` and `Insert` modes. Confusion about modes is what trips up most new users. Modes aren't unique to Vim, nor were they introduced by Vi. Command mode is so old that it predates the invention of [copy and paste][7] functionality in the 1970s. + +#### Important modes + +Vim depends on different modes to define keyboard-stroke behavior. The important modes to know are: + + * `Normal mode`: Default mode used primarily for navigation and opening files + * `Insert mode` (includes Replace): Where Vim allows for text input to an open file + * `Visual mode`: Where Vim acts similar to mouse-based input, such as copying, editing, replacing, and more + * `Command mode` (including Line, Ex command, and Last-line mode): A powerful way to do more in Vim + + + +Each mode has a great deal to explore. Use [Vimtutor][8] (`$ vimtutor`) to interactively learn about movement, modes, and running Ex commands in "Last Line" mode. Some indispensable productivity operators include: + +`:E` | Opens explorer for locating files and directories +---|--- +`.` | Repeats the last edit action +`;` | Repeats the last motion or movement forward +`,` | Repeats the last motion or movement backward +`/` | Searches document forward +`?` | Searches document backward +``* | Finds next occurrence of the word under the cursor +`#` | Finds the previous occurrence of the word under the cursor +`~` | Toggles case +`%` | Toggles between opening and closing `()`, `[]`, and `{}`; highly useful for coding +`z=` | Makes spelling suggestions + +### Play Vim like a piano + +While it's important to commit Vim's operator "language" to memory, the challenge to gaining mastery is to learn to think like a musician and combine operators and movements into "key chords in harmony" so that you can play Vim like a piano. That's where the power of text manipulation with Vim rivals that of the other notable command-line editor, Emacs. (While one of these editors will wear down your `Esc` key, using the other will wear down your `Ctrl` key.) + +When describing key chords, it's conventional in Vim to designate the `Ctrl` key using the capital letter C, followed by a hyphen (`C-`). It's not universal, but I will follow that convention from here onward and clarify when there is any potential for confusion. + +If you type long lines in Vim, you'll want to set it to wrap your text. To start personalizing Vim for the way you work, think about that setting: How would you like Vim to handle text wrapping by default when it starts? On or off? I like it turned off and leave it out of the runtime commands file. When I want text to wrap, I simply set it in command-line mode with `:set wrap`. + +There's nothing wrong with having Vim set to wrap text by default. It's simply a matter of preference—which can change over time. The same goes for handling paste, code language indent syntax, and the `Tab` key (tabs or spaces? and how many spaces then? Dive into these options [here][9]). All these options for default behavior are entirely configurable and changeable in real time as you work with command-line mode operations. + +You will find many suggestions for setting Vim defaults in community forums, on Vim wikis, and in articles (like this one). Setting preferences for your personal computing environment should be fairly familiar to you, and Vim is no different. I highly recommend that you start by making very small changes to your settings, and make additional changes slowly so that you can easily revert settings. This way, you might avoid the use of plugins for years—or entirely. + +### Splits, tabs, and terminals in Vim 8.2 + +There are two ways to split your working files into different views: they can appear side-by-side, or you can switch between them with full (window) screens using application tabs. These changes to your application window are initiated from command-line mode, which requires a colon (`:`) to call up the prompt. + +Each window split can host a file for editing, and you can arrange tabs to switch between additional files as much as you like. There is limited screen space for splits, so tabs are handy when you want to split more screens. How you decide to work is purely a matter of preference. To split a window horizontally, use `:sp`, and use `:vs` for vertical splits. + +As of [Vim 8.2][10], you can open a terminal shell sub-process in a vertical split with `:vert term` to run operations on the command line right alongside your code. You need to type `exit` to close your terminal process, just like you would end a shell session, but you close splits and tabs the same way you would close any ordinary Vim window, with `:q`. + +To initialize a tab, use a special edit command: `:tabedit`, which automatically switches you to the new open tab. If you give the command a file name as an argument, that file will open for editing. If you neglect to give it a file name as an argument, the command-line mode edit `:e filename.txt` works just like it would in any ordinary Vim window. Navigate tabs with the next (`:tabn`) and previous (`:tabp`) commands. + +To use splits, you need to know how to navigate among them using the key-chord combination `C-w` plus a movement key in the direction you want to move, such as left (`h`), down (`j`), up (`k`), or right (`l`). When you want to learn more key chords specific to splits and tabs, read the `:help split` and `:help tabpage` for the Vim manual entries. + +### Get help + +While the Vim manual is referenced in Vimtutor, opening Vim help with `:help` will let you spend time with the editor on your own and get more productive without wholly relying on articles like this one. Experience is key to Vim mastery. The experience contributes to your overall computing intuition since so much of what has gone into Vim is drawn from the Unix universe. + +Have fun exploring the beauty of Vim, and share any questions you have in the comments. + +Want to become a master of text editing in the terminal, and beyond? These tips for getting started... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/vim-skills + +作者:[Detlef Johnson][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/deckart +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) +[2]: https://www.vim.org/ +[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html +[4]: http://zsh.sourceforge.net/Intro/intro_3.html +[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default +[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it +[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions +[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor +[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse +[10]: https://www.vim.org/vim-8.2-released.php From 879801b46439c8cbc3ca272fb80e78791b90aa2e Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 3 Apr 2020 08:20:30 +0800 Subject: [PATCH 134/218] translated --- sources/tech/20190605 What is GraphQL.md | 129 -------------------- translated/tech/20190605 What is GraphQL.md | 127 +++++++++++++++++++ 2 files changed, 127 insertions(+), 129 deletions(-) delete mode 100644 sources/tech/20190605 What is GraphQL.md create mode 100644 translated/tech/20190605 What is GraphQL.md diff --git a/sources/tech/20190605 What is GraphQL.md b/sources/tech/20190605 What is GraphQL.md deleted file mode 100644 index 11b36946f4..0000000000 --- a/sources/tech/20190605 What is GraphQL.md +++ /dev/null @@ -1,129 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is GraphQL?) -[#]: via: (https://opensource.com/article/19/6/what-is-graphql) -[#]: author: (Zach Lendon https://opensource.com/users/zachlendon) - -What is GraphQL? -====== -GraphQL is a query language, an execution engine, and a specification, -and it's leading developers to rethink how they build client and API -applications. -![Analytics: Charts and Graphs][1] - -GraphQL is one of the biggest buzzwords in software tech today. But _what is it_ _actually_? Is it a query language like [SQL][2]? An execution engine like the [JVM][3]? A specification like [XML][4]? - -If you answered all of the above, you are correct! [GraphQL][5] is a query language syntax, a programming language-agnostic execution engine, and a continuously evolving specification. - -Let's dive into how GraphQL can be all of these things and get a glimpse of why people are excited about it. - -### Query language - -GraphQL as a query language seems reasonable—"QL" seemed important enough to be in the name, after all. But what are we querying? It probably helps to look at a sample query request and the corresponding response. - -The following user query: - - -``` -{ - user(id: 4) { -   name -   email -   phoneNumber - } -} -``` - -might return the following JSON response: - - -``` -{ - "user": { -   "name": "Zach Lendon" -   “email”: “[zach@hydrate.io][6]” -   “phoneNumber”: “867-5309” - } -} -``` - -Imagine a client application querying for user details, taking the result, and using it to populate a profile screen. As a query language, one of GraphQL's core benefits is that a client application can request _only the data it needs_ and expect it to be returned in a consistent manner. - -_What_ is returning the GraphQL response, though? This is where the execution engine, typically in the form of a GraphQL server, comes into play. - -### Execution engine - -![GraphQL execution engine][7] - -The GraphQL execution engine is what is responsible for processing a GraphQL query and returning a JSON response. All GraphQL servers are made up of two core components that define the structure and behavior of the execution engine: a schema and resolvers, respectively. - -A GraphQL schema is a custom typed language that exposes which queries are both permitted (valid) and handled by a GraphQL server implementation. The schema for our user example query above might look like: - - -``` -type User { -        name: String -        email: String -        phoneNumber: String -} - -type Query { -        user: User -} -``` - -This schema defines a user query that returns a user. Clients can request any of the fields on a user via the user query, and the GraphQL server will return only those fields in its response. By using the strongly typed schema, a GraphQL server can validate incoming queries to ensure they are valid based on the defined schema. - -Once a query is determined to be valid, it is processed by a GraphQL server by resolvers. A resolver function backs each field of each GraphQL type. An example resolver for our user query might look like: - - -``` -Query: { -  user(obj, args, context, info) { -    return context.db.loadUserById(args.id).then( -      userData => new User(userData) -    ) -  } -} -``` - -While the above example is in JavaScript, GraphQL servers can be written in any number of languages. This is due to the fact that GraphQL is _also_ a specification! - -### Specification - -The GraphQL specification defines the capabilities and characteristics that GraphQL implementations must follow. As an open specification available under the Open Web Foundation Final Specification Agreement ([OWFa 1.0][8]), the technology community has the opportunity to both review what a GraphQL implementation must do to be spec-compliant and help craft the future of the language. - -While the specification is very specific about GraphQL's syntax, what is a valid query, and how a schema works, it provides no direction on how to store data or what implementation programming languages GraphQL servers should use. This is incredibly powerful and relatively unique in the software space—it allows GraphQL servers to be created in any number of programming languages, and clients will know exactly how they function since they are spec-compliant. And GraphQL server implementations have been created across many programming languages, not just ones folks might expect like JavaScript, Java, and C#, but languages like Go, Elixir, and Haskell. The language a server is implemented in will not be a barrier to adoption—not only are there implementations in many languages, but they are all open source. If there isn't an implementation in your language of choice, you are free to create your own. - -### Conclusion - -GraphQL is an exciting, relatively new entrant into the open source API space. It couples a query language and execution engine with an open source specification that defines how GraphQL implementations should look and function. - -GraphQL has already started to change how companies think about building both client and API applications. With GraphQL as part of a technology stack, front-end developers are freed to query for the data they want, and back-end developers can decouple client application needs from their back-end system architectures. Often companies journey into GraphQL by first building a GraphQL API "layer" that sits on top of their existing back-end services. This allows the client applications to begin to gain the performance and operational efficiencies they seek, while allowing the back-end teams an opportunity to determine what, if any, changes they might want to make "under the hood," behind their GraphQL layer. Often, those changes will be geared towards optimizations that will help ensure that applications using GraphQL can operate as performantly as possible. Because of the abstraction GraphQL provides, systems teams can make those changes while continuing to honor the GraphQL "contract" at their GraphQL API level. - -Because GraphQL is relatively new, developers are still finding new and exciting ways to leverage it to build better software solutions. How will GraphQL change how you build applications, and does it live up to the hype? There's only one way to find out—go out there and build something with GraphQL! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/what-is-graphql - -作者:[Zach Lendon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/zachlendon -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/analytics-graphs-charts.png?itok=sersoqbV (Analytics: Charts and Graphs) -[2]: https://opensource.com/article/18/2/getting-started-sql -[3]: https://www.cubrid.org/blog/understanding-jvm-internals/ -[4]: https://www.w3.org/TR/xml/ -[5]: http://graphql.org/ -[6]: mailto:zach@hydrate.io -[7]: https://opensource.com/sites/default/files/pictures/graphql-execution-engine.png (GraphQL execution engine) -[8]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0---patent-only diff --git a/translated/tech/20190605 What is GraphQL.md b/translated/tech/20190605 What is GraphQL.md new file mode 100644 index 0000000000..0f005efd40 --- /dev/null +++ b/translated/tech/20190605 What is GraphQL.md @@ -0,0 +1,127 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What is GraphQL?) +[#]: via: (https://opensource.com/article/19/6/what-is-graphql) +[#]: author: (Zach Lendon https://opensource.com/users/zachlendon) + +什么是 GraphQL? +====== +GraphQL 是一种查询语言、执行引擎和规范,它让开发人员重新思考如何构建客户端和 API + 应用。 +![Analytics: Charts and Graphs][1] + +GraphQL 是当今软件技术中最大的流行语之一。但它_实际上_是什么?它是像 [SQL][2] 这样的查询语言吗?像 [JVM][3] 这样的执行引擎?像 [XML][4] 这样的规范? + +如果你的回答是上面这些,那么你是对的![GraphQL][5] 是查询语言语法、编程语言无关的执行引擎和不断发展的规范。 + +让我们深入了解 GraphQL 如何成为这些,并了解人们为什么对此感到兴奋。 + +### 查询语言 + +GraphQL 作为查询语言似乎是合理的—”QL“ 似乎足够重要,毕竟它出现在名称中。但是我们在查询什么?查看示例查询请求和相应的响应可能会有所帮助。 + +以下的用户查询: + + +``` +{ + user(id: 4) { +   name +   email +   phoneNumber + } +} +``` + +可能会返回下面的 JSON 结果: + + +``` +{ + "user": { +   "name": "Zach Lendon" +   “email”: “[zach@hydrate.io][6]” +   “phoneNumber”: “867-5309” + } +} +``` + +想象一下,客户端应用查询用户详细信息,获取结果,并使用它填充配置文件。作为查询语言,GraphQL 的核心优势之一是客户端应用可以_只请求它需要_的数据,并期望以一致的方式返回这些数据。 + +那么_什么_返回了 GraphQL 响应?这就是执行引擎(通常以 GraphQL 服务器的形式)发挥作用的地方。 + +### 执行引擎 + +![GraphQL execution engine][7] + +GraphQL 执行引擎负责处理 GraphQL 查询并返回 JSON 响应。所有 GraphQL 服务器由两个核心组件组成,分别定义了执行引擎的结构和行为:schema 和解析器。 + +GraphQL schema 是一种自定义类型语言,它公开哪些查询既允许(有效),又由 GraphQL 服务器实现处理。上面用户示例查询的 schema 可能如下所示: + + +``` +type User { +        name: String +        email: String +        phoneNumber: String +} + +type Query { +        user: User +} +``` + +此 schema 定义返回用户的用户查询。客户端可以通过用户查询请求用户上的任何字段,并且 GraphQL 服务器将仅返回请求的字段。通过使用强类型架构,GraphQL 服务器可以验证传入查询,以确保它们基于定义的 schema 有效。 + +确定查询有效后,它由 GraphQL 服务器的解析器处理。解析器函数支持每个 GraphQL 类型的每个字段。用户查询的示例解析器可能如下所示: + +``` +Query: { +  user(obj, args, context, info) { +    return context.db.loadUserById(args.id).then( +      userData => new User(userData) +    ) +  } +} +``` + +虽然上面的例子是 JavaScript,但 GraphQL 服务器可以用任意语言编写。这是因为 GraphQL 也是_也是_一种规范! + +### 规范 + +GraphQL 规范定义了 GraphQL 实现必须遵循的功能和特性。作为开放网络基金会最终规范协议([OWFa 1.0][8])所提供的开放规范,技术社区可以借此机会查看 GraphQL 实现必须符合规范的要求,并帮助制定 GraphQL 的未来。 + +虽然该规范对 GraphQL 的语法,什么是有效查询以及 schema 进行了非常具体的说明,但它没有提供有关如何存储数据或 GraphQL 服务器应使用哪种编程语言实现的指导。这在软件领域是非常强大且相对独特。它允许以多种编程语言创建 GraphQL 服务器,并且由于它们符合规范,因此客户端将确切知道它们的工作方式。GraphQL 服务器已经有多种语言实现,人们不仅可以期望像 JavaScript、Java和 C# 这样的语言,还可以使用Go、Elixir 和 Haskell 等。服务器实现所使用的语言不会成为采用过程的障碍。它不仅存在多种语言实现,而且它们都是开源的。如果没有你选择的语言的实现,那么可以自己实现。 + +### 总结 + +GraphQL 是开源 API 领域中一个令人兴奋的,相对较新的参与者。它将查询语言和执行引擎与开源规范结合在一起,它定义了 GraphQL 实现的功能。 + +GraphQL 已经开始改变公司对构建客户端和 API 应用的看法。通过将 GraphQL 作为技术栈的一部分,前端开发人员可以自由查询所需的数据,而后端开发人员可以将客户端应用需求与后端系统架构分离。通常,公司首先通过在其现有后端服务之上构建一个 GraphQL API “层”来使用 GraphQL。这使客户端应用开始获得寻求的性能和运营效率,同时使后端团队有机会在 GraphQL 层后面进行所需的“幕后”更改(如果有)。通常,这些更改将针对优化,这些优化将帮助确保使用 GraphQL 的应用可以尽可能高效地运行。由于 GraphQL 提供了抽象,因此系统团队可以进行更改的同时继续在其 GraphQL API 级别上遵守 GraphQL 的“合约”。 + +由于 GraphQL 相对较新,因此开发人员仍在寻找新颖而激动人心的方法来利用它构建更好的软件解决方案。GraphQL 将如何改变你构建应用的方式,它不会辜负宣传吗?只有一种方法可以找到答案。去使用 GraphQL 构建一些东西! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/6/what-is-graphql + +作者:[Zach Lendon][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/zachlendon +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/analytics-graphs-charts.png?itok=sersoqbV (Analytics: Charts and Graphs) +[2]: https://opensource.com/article/18/2/getting-started-sql +[3]: https://www.cubrid.org/blog/understanding-jvm-internals/ +[4]: https://www.w3.org/TR/xml/ +[5]: http://graphql.org/ +[6]: mailto:zach@hydrate.io +[7]: https://opensource.com/sites/default/files/pictures/graphql-execution-engine.png (GraphQL execution engine) +[8]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0---patent-only From b067bfe532365294fa5001bd8ae8073cc979aae9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 3 Apr 2020 08:25:07 +0800 Subject: [PATCH 135/218] translating --- ...200330 Using data from spreadsheets in Fedora with Python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md b/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md index a32cf4165d..a24dd7faa9 100644 --- a/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md +++ b/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 60840217728ec415f042d77e86d67dff8d442f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Fri, 3 Apr 2020 08:53:42 +0800 Subject: [PATCH 136/218] Translated --- ...ype Fonts on Ubuntu-based Distributions.md | 114 ----------------- ...ype Fonts on Ubuntu-based Distributions.md | 115 ++++++++++++++++++ 2 files changed, 115 insertions(+), 114 deletions(-) delete mode 100644 sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md create mode 100644 translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md diff --git a/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md deleted file mode 100644 index 82deeed260..0000000000 --- a/sources/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (robsean) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions) -[#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/) -[#]: author: (Community https://itsfoss.com/author/itsfoss/) - -How to install Microsoft TrueType Fonts on Ubuntu-based Distributions -====== - -If you open some Microsoft documents in LibreOffice on Linux, you’ll notice that the fonts look a bit different. You’ll also notice that you cannot find common fonts like [Times New Roman][1], Arial etc. - -Don’t worry. I’ll show you how to install these fonts in Ubuntu and other Ubuntu-based Linux distributions. But before that, let me tell you why these fonts are not available by default. - -### Why Microsoft fonts are not installed by default in Linux? - -![][2] - -Times New Roman, Arial and other such fonts are owned by Microsoft and they are not open source. Many Linux distributions don’t provide proprietary software by default to avoid licensing issue. - -This is why Ubuntu and other Linux distributions use an open source fonts “Liberation fonts” to substitute Microsoft fonts by default. The [Liberation Fonts][3] were created by [Red Hat][4] to substitute Arial, Arial Narrow, Times New Roman and Courier New as their width is the same. When you open a document written in Times New Roman, the equivalent Liberation Font will be used to keep the document uninterrupted. - -However Liberation fonts are not identical to Microsoft’s fonts and in some cases you may need to use Arial or Times New Roman. A very common scenario is that Microsoft’s fonts are the only option is in schools, universities and other public and private organizations. They require you to submit the documents in one of those fonts. - -Good thing is that you can install the Microsoft fonts on Ubuntu and other distributions easily. This way, you will be able to increase compatibility of LibreOffice and have the freedom to choose an open source office software. - -### Installing Microsoft fonts on Ubuntu-based Linux distributions - -You can [install new fonts in Ubuntu][5] by downloading them on your own. But since Microsoft fonts are very popular (and is provided free of cost), Ubuntu provides an easy way of installing it. - -Be aware that despite Microsoft has released its core fonts for free of charge, the usage of the fonts is restricted in other operating systems. You’ll have to read and accept EULA (End User License Agreement) before installing Microsoft fonts in Ubuntu. - -These fonts are [available in the multiverse repositories so make sure to enable it][6] first: - -``` -sudo add-apt-repository multiverse -``` - -After that, you can update your Ubuntu repository cache and install the Microsoft fonts like this: - -``` -sudo apt update && sudo apt install ttf-mscorefonts-installer -``` - -Press tab to select **OK** and the press enter when the Microsoft’s End user agreement appears. - -![Press tab to highlight the selection][7] - -Click **Yes** to accept the Microsoft’s agreement: - -![Use tab key to make a selection and then press enter][8] - -When the installation is done, you should update the font cache using the command below: - -``` -sudo fc-cache -f -v -``` - -![][9] - -If you open the LibreOffice now, you’ll see the Microsoft [TrueType fonts][10]. - -![][11] - -In case that you accidentally reject the license agreement, you can reinstall the installer with this command: - -``` -sudo apt install –reinstall ttf-mscorefonts-installer -``` - -Microsoft TrueType fonts are also available via the [Ubuntu Restricted Extras package][12] that contains other proprietary media codecs to play files like MP3 etc. - -Don’t underestimate proprietary fonts - -You may think what’s the big deal with fonts? After all, it’s just a font, not a crucial piece of software, right? -But did you know that for years, [Netflix paid millions of dollars for the proprietary font][13] it used? At the end, they created their own custom fonts and that saved them a considerable amount of money. - -I hope you find this quick tutorial useful. More productivity tutorials are down the line, leave your comments below and subscribe to our social media for more! - -![][14] - -### Dimitrios Savvopoulos - -Dimitrios is an MSc Mechanical Engineer but a Linux enthusiast in heart. He is well settled in Solus OS but curiosity drives him to constantly test other distros. Challenge is part of his personality and his hobby is to compete from 5k to the marathon distance. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-microsoft-fonts-ubuntu/ - -作者:[Community][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/itsfoss/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/Times_New_Roman -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-fonts-ubuntu.png?ssl=1 -[3]: https://en.wikipedia.org/wiki/Liberation_fonts -[4]: https://en.wikipedia.org/wiki/Red_Hat -[5]: https://itsfoss.com/install-fonts-ubuntu/ -[6]: https://itsfoss.com/ubuntu-repositories/ -[7]: https://i1.wp.com/i.imgur.com/JoEJp5w.png?ssl=1 -[8]: https://i0.wp.com/i.imgur.com/M8zTc7f.png?ssl=1 -[9]: https://i0.wp.com/i.imgur.com/Cshle6S.png?ssl=1 -[10]: https://en.wikipedia.org/wiki/TrueType -[11]: https://i1.wp.com/i.imgur.com/9oIu3oj.png?ssl=1 -[12]: https://itsfoss.com/install-media-codecs-ubuntu/ -[13]: https://thehustle.co/nextflix-sans-custom-font/ -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1 diff --git a/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md new file mode 100644 index 0000000000..f94e89c807 --- /dev/null +++ b/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md @@ -0,0 +1,115 @@ +[#]: collector: (lujun9972) +[#]: translator: (robsean) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions) +[#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/) +[#]: author: (Community https://itsfoss.com/author/itsfoss/) + +如何在基于 Ubuntu 的发行版上安装微软 TrueType 字体 +====== + +如果你在 Linux 上打开一些微软文档,你将注意到字体会看起来有一点不同。你也将注意到你不能找到一些常见的字体,像 [Times New Roman][1], Arial 等等。 + +不用担心。我将向你展示如何在 Ubuntu 上和其它基于 Ubuntu 的 Linux 发行版上安装这些字体。但是在此之前,让我告诉你为什么这些字体没有被默认安装。 + +### 为什么微软字体不被默认安装在 Linux 中? + +![][2] + +Times New Roman, Arial 和其它此类字体归微软所有,并且这些字体不是开源的。很多 Linux 发行版默认不提供专有软件来避免许可证问题。 + +这就是为什么在默认情况下 Ubuntu 和其它 Linux 发行版使用开源字体 “Liberation fonts” 来替代微软字体的原因。[Red Hat][4] 创建 [Liberation Fonts][3]来代替 Arial, Arial Narrow, Times New Roman 和 Courier New ,如同这些字体的宽度一样。当你打开一个使用 Times New Roman 字体的文档时, 对应的 Liberation Font 将被用来保持文档文字间间隔等距连续。 + +不过,Liberation fonts 与微软的字体并不是完全相同的,在一些情况下,你可能需要使用 Arial 或 Times New Roman 。一个非常常见的情况是,在学校,大学和其他公共和私人组织中,微软的字体是唯一的选择。他们要求你使用微软字体中的其中一种字体来提交文档。 + +你可以在 Ubuntu 和其它发行版上很容易地安装微软字体的一件很好的事。以这种方式,你将增强 LibreOffice 的兼容性,并将有选择开源办公软件的自由。 + +### 在基于 Ubuntu 的 Linux 发行版上安装微软字体 + +你可以自己下载字体,并 [在 Ubuntu 中安装新的字体][5] 。但是自从微软字体变得非常流行(并且免费提供),Ubuntu 提供了一种简单的方法来安装它们。 + +要知道尽管微软已经免费发布了其核心字体,在其它操作系统中使用字体依然受到限制。在 Ubuntu 中安装微软字体前,你必须阅读并接受 EULA (最终用户许可协议) 。 + +这些字体 [在 multiverse 存储库中可获得,首先要确保启用它][6] : + +``` +sudo add-apt-repository multiverse +``` + +在此之后,你可以更新你的 Ubuntu 存储库缓存,并像这样安装微软字体: + +``` +sudo apt update && sudo apt install ttf-mscorefonts-installer +``` + +当微软的最终用户协议出现时,按 tab 键来选择 **OK** ,并按回车键。 + +![按 tab 键来高亮选择][7] + +单击 **Yes** 来接受微软的协议: + +![使用 tab 键来作出选择,并按回车键][8] + +当安装完成后,你应该使用下面的命令来更新字体缓存: + +``` +sudo fc-cache -f -v +``` + +![][9] + +如果你现在打开 LibreOffice ,你将看到微软 [TrueType 字体][10] 。 + +![][11] + +如果意外地拒绝许可协议,你可以使用这个命令来重新安装安装程序: + +``` +sudo apt install –reinstall ttf-mscorefonts-installer +``` + +微软的 TrueType 字体也可以通过 [Ubuntu Restricted Extras package][12] 获得,其包含用来播放 MP3 等文件的其它专有的多媒体编解码器。 + +不要轻视专有字体。 + +你可能认为字体有什么大不了的呢?毕竟,它只是一款字体,而不是软件的一个关键部分,对吧? +但是你知道,这些年来 [Netflix 为其使用的专有字体支付了数百万美元][13] 吗?最后,他们创建了自己的自定义字体,这为他们节省了一大笔钱。 + +我希望你发现这个快速教程是有用的。更多的创造性的教程已下线,请在下面留下你的评论,了解更多信息请订阅我们的社交媒体! + +![][14] + +### Dimitrios Savvopoulos + +Dimitrios 是一名机械工程师理学硕士,但是在内心深处是一名 Linux 狂热爱好者。他习惯于使用 Solus 操作系统,但好奇心驱使者他不断测试其它的发行版。 +挑战是他魅力的一部分,他的爱好是自5公里到马拉松的长距离比赛。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-microsoft-fonts-ubuntu/ + +作者:[Community][a] +选题:[lujun9972][b] +译者:[robsean](https://github.com/robsean) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/itsfoss/ +[b]: https://github.com/lujun9972 +[1]: https://en.wikipedia.org/wiki/Times_New_Roman +[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/microsoft-fonts-ubuntu.png?ssl=1 +[3]: https://en.wikipedia.org/wiki/Liberation_fonts +[4]: https://en.wikipedia.org/wiki/Red_Hat +[5]: https://itsfoss.com/install-fonts-ubuntu/ +[6]: https://itsfoss.com/ubuntu-repositories/ +[7]: https://i1.wp.com/i.imgur.com/JoEJp5w.png?ssl=1 +[8]: https://i0.wp.com/i.imgur.com/M8zTc7f.png?ssl=1 +[9]: https://i0.wp.com/i.imgur.com/Cshle6S.png?ssl=1 +[10]: https://en.wikipedia.org/wiki/TrueType +[11]: https://i1.wp.com/i.imgur.com/9oIu3oj.png?ssl=1 +[12]: https://itsfoss.com/install-media-codecs-ubuntu/ +[13]: https://thehustle.co/nextflix-sans-custom-font/ +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Dimitrios.jpg?ssl=1 From 1c99795ad871c33fbce3759ede5277d6c023c807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Fri, 3 Apr 2020 09:01:53 +0800 Subject: [PATCH 137/218] Translating --- ...1209 Use the Fluxbox Linux desktop as your window manager.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md b/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md index 8c7ddcb1e5..6d1d84b9bd 100644 --- a/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md +++ b/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (robsean) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 780bb15cec63726ca84a4e13710d28bb6f1ce6d4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 11:42:34 +0800 Subject: [PATCH 138/218] TSL --- ...0331 5 ways to level up your Vim skills.md | 78 +++++++++---------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/translated/tech/20200331 5 ways to level up your Vim skills.md index 6ca9cc0d65..2ddeb2f40d 100644 --- a/translated/tech/20200331 5 ways to level up your Vim skills.md +++ b/translated/tech/20200331 5 ways to level up your Vim skills.md @@ -72,67 +72,63 @@ Vim 很像终端仿真器外壳,它使用点文件来设置个人偏好。如 set nocp ``` -### Understand modes +### 理解模式 -The notion of Vim's "modes" is very important to learn about, especially the difference between the very distinct `Normal` and `Insert` modes. Confusion about modes is what trips up most new users. Modes aren't unique to Vim, nor were they introduced by Vi. Command mode is so old that it predates the invention of [copy and paste][7] functionality in the 1970s. +Vim的 “模式”概念是非常重要的,尤其是“正常模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并不是 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以至于它比 70 年代的[复制和粘贴][7]功能的发明还要早。 -#### Important modes +#### 重要的模式 -Vim depends on different modes to define keyboard-stroke behavior. The important modes to know are: +Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重要模式有 - * `Normal mode`: Default mode used primarily for navigation and opening files - * `Insert mode` (includes Replace): Where Vim allows for text input to an open file - * `Visual mode`: Where Vim acts similar to mouse-based input, such as copying, editing, replacing, and more - * `Command mode` (including Line, Ex command, and Last-line mode): A powerful way to do more in Vim +* 正常模式:默认模式,主要用于导航和打开文件。 +* 插入模式(包括替换):这种模式下 Vim 允许将文本输入到打开的文件中。 +* 可视模式:Vim 的行为类似于基于鼠标的输入方式,如复制、编辑、替换等。 +* 命令模式(包括行模式、Ex 命令模式和末行模式):在 Vim 中做更多事情的强大方法。 +每种模式都有很多值得探索的地方。使用 [Vimtutor][8](`vimtutor`)可以交互式地学习移动光标、模式和在末行模式下运行 Ex 命令。一些不可缺少的生产力操作符包括: +`:E` | 打开资源管理器,用于定位文件和目录。 +--- | --- +`.` | 重复上次的编辑操作。 +`;` | 向前重复上一次的动作或移动 +`,` | 向后重复上一次的动作或移动。 +`/` | 向前搜索文档。 +`?` | 向后搜索文档。 +`*` | 查找光标所在处的单词的下一个出现的地方。 +`#` | 查找光标所在处的单词的上一次出现的地方。 +`~` | 切换大小写。 +`%` | 在打开和关闭的 `()`、`[]` 和 `{}` 之间切换;对编码非常有用。 +`z=` | 提出拼写建议。 -Each mode has a great deal to explore. Use [Vimtutor][8] (`$ vimtutor`) to interactively learn about movement, modes, and running Ex commands in "Last Line" mode. Some indispensable productivity operators include: +### 像钢琴一样弹奏 Vim -`:E` | Opens explorer for locating files and directories ----|--- -`.` | Repeats the last edit action -`;` | Repeats the last motion or movement forward -`,` | Repeats the last motion or movement backward -`/` | Searches document forward -`?` | Searches document backward -``* | Finds next occurrence of the word under the cursor -`#` | Finds the previous occurrence of the word under the cursor -`~` | Toggles case -`%` | Toggles between opening and closing `()`, `[]`, and `{}`; highly useful for coding -`z=` | Makes spelling suggestions +把 Vim 的操作符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家一样思考,把操作符和动作组合成“和声和弦”,这样你就可以像弹钢琴一样弹奏 Vim。这就是 Vim 的文本操作能力可以与另一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 `Esc` 键,而另一个编辑器会让你的 `Ctrl` 键磨损掉。) -### Play Vim like a piano +在描述和弦时,Vim 中的传统做法是用大写字母 `C` 来指代 `Ctrl` 键,后面加上一个连字符(`C-`)。这并不是通用的,但我将从这里开始遵循这一惯例,并在有可能引起混淆的时候加以说明。 -While it's important to commit Vim's operator "language" to memory, the challenge to gaining mastery is to learn to think like a musician and combine operators and movements into "key chords in harmony" so that you can play Vim like a piano. That's where the power of text manipulation with Vim rivals that of the other notable command-line editor, Emacs. (While one of these editors will wear down your `Esc` key, using the other will wear down your `Ctrl` key.) +如果你在 Vim 中键入长行,你会想把它设置成可以换行你的文字。想要根据你的工作方式对 Vim 进行个性化设置,请考虑一下这个设置:当 Vim 启动时,你希望 Vim 默认情况下如何处理文本换行?开着还是关着?我喜欢将其关闭,并在运行时用命令打开它。当我想让文本换行时,我只需在命令行模式下用 `:set wrap` 设置即可。 -When describing key chords, it's conventional in Vim to designate the `Ctrl` key using the capital letter C, followed by a hyphen (`C-`). It's not universal, but I will follow that convention from here onward and clarify when there is any potential for confusion. +让 Vim 设置为默认文字换行并没有什么问题。这只是一个偏好的问题 —— 它可能随着时间的推移而改变。同样你也可以控制粘贴、代码语言缩进语法和 `Tab` 键的设置(制表符还是空格?多少个空格?可也在[这里][9]深入研究这些选项)。所有这些默认行为的选项都是完全可配置的,并且在你使用命令行模式操作时可以实时更改。 -If you type long lines in Vim, you'll want to set it to wrap your text. To start personalizing Vim for the way you work, think about that setting: How would you like Vim to handle text wrapping by default when it starts? On or off? I like it turned off and leave it out of the runtime commands file. When I want text to wrap, I simply set it in command-line mode with `:set wrap`. +你会在社区论坛、Vim 维基和文章中找到很多关于设置 Vim 默认设置的建议(比如这篇文章)。为你的个人计算环境设置首选项对你来说应该相当熟悉,Vim 也不例外。我强烈建议你从对你的设置进行非常小的更改开始,慢慢地进行更多的更改,这样你就可以轻松地恢复设置。这样一来,你就可以避免使用插件好多年或完全不用。 -There's nothing wrong with having Vim set to wrap text by default. It's simply a matter of preference—which can change over time. The same goes for handling paste, code language indent syntax, and the `Tab` key (tabs or spaces? and how many spaces then? Dive into these options [here][9]). All these options for default behavior are entirely configurable and changeable in real time as you work with command-line mode operations. +### Vim 8.2中的分割、标签和终端 -You will find many suggestions for setting Vim defaults in community forums, on Vim wikis, and in articles (like this one). Setting preferences for your personal computing environment should be fairly familiar to you, and Vim is no different. I highly recommend that you start by making very small changes to your settings, and make additional changes slowly so that you can easily revert settings. This way, you might avoid the use of plugins for years—or entirely. +有两种方法可以将你正在处理的文件分割成不同的视图:它们可以并排显示,也可以使用应用程序标签页在全屏(窗口)中切换。这些对应用程序窗口的更改是从命令模式启动的,这需要使用冒号(`:`)来调起提示符。 -### Splits, tabs, and terminals in Vim 8.2 +每个分割的窗口可以容纳一个文件进行编辑,你可以通过标签页在更多的文件之间随意切换。分割的屏幕空间是有限的,所以当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属个人喜好的问题。要横向分割一个窗口,使用 `:sp`,垂直分割时使用 `:vs`。 -There are two ways to split your working files into different views: they can appear side-by-side, or you can switch between them with full (window) screens using application tabs. These changes to your application window are initiated from command-line mode, which requires a colon (`:`) to call up the prompt. +从 [Vim 8.2][10] 开始,你可以用 `:vert term` 打开一个垂直分割的终端 shell 子进程,来在你的代码旁边在命令行进行操作。你需要键入 `exit` 来关闭你的终端进程,就像你结束一个 shell 会话一样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口一样,用 `:q` 来关闭。 -Each window split can host a file for editing, and you can arrange tabs to switch between additional files as much as you like. There is limited screen space for splits, so tabs are handy when you want to split more screens. How you decide to work is purely a matter of preference. To split a window horizontally, use `:sp`, and use `:vs` for vertical splits. +要初始化一个标签页,请使用一个特殊的编辑命令:`:tabedit`,它会自动切换到新打开的标签页。如果你给该命令一个文件名作为参数,将会打开该文件并进行编辑。如果你忽略了给它一个文件名作为参数,可以在命令行模式下的使用编辑命令 `:e filename.txt`,就像在任何一个普通的 Vim 窗口中一样。可以使用下一个(`:tabn`)和上一个(`:tabp`)命令在标签页间导航。 -As of [Vim 8.2][10], you can open a terminal shell sub-process in a vertical split with `:vert term` to run operations on the command line right alongside your code. You need to type `exit` to close your terminal process, just like you would end a shell session, but you close splits and tabs the same way you would close any ordinary Vim window, with `:q`. +要使用分割,你需要知道如何使用组合键 `C-w` 和你想要移动的方向的移动键,例如左(`h`)、下(`j`)、左(`k`)、右(`l`)。如果你想学习更多的组合键,请阅读 Vim 手册中的 `:help split` 和 `:help tabpage`。 -To initialize a tab, use a special edit command: `:tabedit`, which automatically switches you to the new open tab. If you give the command a file name as an argument, that file will open for editing. If you neglect to give it a file name as an argument, the command-line mode edit `:e filename.txt` works just like it would in any ordinary Vim window. Navigate tabs with the next (`:tabn`) and previous (`:tabp`) commands. +### 获取帮助 -To use splits, you need to know how to navigate among them using the key-chord combination `C-w` plus a movement key in the direction you want to move, such as left (`h`), down (`j`), up (`k`), or right (`l`). When you want to learn more key chords specific to splits and tabs, read the `:help split` and `:help tabpage` for the Vim manual entries. +虽然可以在 Vimtutor 中打开参考 Vim 手册,但用 `:help` 打开 Vim 帮助,可以让你自己把时间花在编辑器上,不用完全依赖像这样的文章,就能获得更多的成果。经验是掌握 Vim 的关键。经验有助于提高你的整体计算直觉,因为 Vim 中的很多东西都是从 Unix 宇宙中汲取的。 -### Get help - -While the Vim manual is referenced in Vimtutor, opening Vim help with `:help` will let you spend time with the editor on your own and get more productive without wholly relying on articles like this one. Experience is key to Vim mastery. The experience contributes to your overall computing intuition since so much of what has gone into Vim is drawn from the Unix universe. - -Have fun exploring the beauty of Vim, and share any questions you have in the comments. - -Want to become a master of text editing in the terminal, and beyond? These tips for getting started... +祝你在探索 Vim 之美的过程中玩得开心,有什么问题可以在评论中分享。 -------------------------------------------------------------------------------- @@ -140,7 +136,7 @@ via: https://opensource.com/article/20/3/vim-skills 作者:[Detlef Johnson][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[wxy](https://github.com/wxy) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 1fd07ed4aaaced9c3ab577cbb8ced3b46d8f301e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 12:25:00 +0800 Subject: [PATCH 139/218] PRF @geekpi --- ...00323 Don-t love diff- Use Meld instead.md | 57 +++++++++---------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/translated/tech/20200323 Don-t love diff- Use Meld instead.md b/translated/tech/20200323 Don-t love diff- Use Meld instead.md index 7f3c980685..375c6ff0d4 100644 --- a/translated/tech/20200323 Don-t love diff- Use Meld instead.md +++ b/translated/tech/20200323 Don-t love diff- Use Meld instead.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Don't love diff? Use Meld instead) @@ -9,84 +9,81 @@ 不喜欢 diff 么?试试 Meld 吧 ====== -Meld 是一个可视化 diff 工具,它可让你轻松比较和合并文件、目录、Git 仓库等的更改。 -![Person drinking a hat drink at the computer][1] -Meld 是我处理代码和数据文件的基本工具之一。它是一个图形化的 diff 工具,因此,如果你曾经使用过 **diff** 命令并难以理解输出,那么 [Meld][2] 可以为你提供帮助。 +> Meld 是一个可视化 diff 工具,它可让你轻松比较和合并文件、目录、Git 仓库等的更改。 + +![](https://img.linux.net.cn/data/attachment/album/202004/03/122428dkagz1qtgh9f2g10.jpg) + +Meld 是我处理代码和数据文件的基本工具之一。它是一个图形化的 diff 工具,因此,如果你曾经使用过 `diff` 命令并难以理解输出,那么 [Meld][2] 可以为你提供帮助。 这是该项目网站的精彩描述: ->“ Meld 是面向开发人员的可视化 diff 和合并工具。Meld 帮助你比较文件、目录和版本控制的项目。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。“ +>“Meld 是面向开发人员的可视化 diff 和合并工具。Meld 可以帮助你比较文件、目录和版本控制的项目。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。” > ->“ Meld 帮助你检查代码更改并了解补丁。它甚至可以帮助你弄清你一直在避免的合并中发生了什么。” +>“Meld 可以帮助你检查代码更改并了解补丁。它甚至可以帮助你弄清你一直在避免的合并中发生了什么。” 你可以使用以下命令在 Debian/Ubuntu 系统(包括 Raspbian)上安装 Meld: - ``` -`$ sudo apt install meld` +$ sudo apt install meld ``` -在 Fedora 或类似产品上,是: - +在 Fedora 或类似产品上: ``` -`$ sudo dnf install meld` +$ sudo dnf install meld ``` Meld 是跨平台的,它有一个使用 [Chocolately][4] 包管理器的 [Windows 安装包][3]。尽管它在 macOS 上不受官方支持,但有[可用于 Mac 的版本][5],你可以使用 Homebrew 安装: - ``` -`$ brew cask install meld` +$ brew cask install meld ``` 有关[其他系统][2],请参见 Meld 的主页。 ### Meld 对比 diff 命令 -如果你有两个相似的文件(也许一个是另一个的修改版本),并想要查看它们之间的更改,那么可以在终端中运行 **diff** 命令查看它们的区别: +如果你有两个相似的文件(也许一个是另一个的修改版本),并想要查看它们之间的更改,那么可以在终端中运行 `diff` 命令查看它们的区别: ![diff output][6] -此例显示了 **conway1.py** 和 **conway2.py** 之间的区别。表明我: +此例显示了 `conway1.py` 和 `conway2.py` 之间的区别。表明我: - * 删除了 [shebang][7] 和第二行 -  * 从类声明中删除了 **(object)** -  * 为类添加了 docstring -  * 在方法中交换了 **alive** 和 **neighbours == 2** 的顺序 - - -这是使用 **meld** 命令的相同例子。你可以在命令行中运行以下命令进行相同的比较: +* 删除了[释伴][7]和第二行 +* 从类声明中删除了 `(object)` +* 为类添加了 docstring +* 在方法中交换了 `alive` 和 `neighbours == 2` 的顺序 +这是使用 `meld` 命令的相同例子。你可以在命令行中运行以下命令进行相同的比较: ``` -`$ meld conway1.py conway2.py` +$ meld conway1.py conway2.py ``` ![Meld output][8] Meld 更清晰! -你可以单击箭头(上下都行)轻松查看并合并文件之间的更改。你甚至可以实时编辑文件(在输入时,Meld 可以用作具有实时比较功能的简单文本编辑器)—仅在关闭窗口之前一定要保存。 +你可以轻松查看并单击箭头(左右都行)合并文件之间的更改。你甚至可以实时编辑文件(在输入时,Meld 可以用作具有实时比较功能的简单文本编辑器)—只是要记得在关闭窗口之前保存。 你甚至可以比较和编辑三个不同的文件: ![Comparing three files in Meld][9] -### Meld 的 Git 认知 +### Meld 的 Git 感知 -希望你正在使用 [Git][10] 之类的版本控制系统。如果是这样,那么你的比较不是在两个不同文件之间进行,而是要查找当前文件与 Git 历史文件之间的差异。Meld 理解这一点,因此,如果你运行 **meld conway.py**(Git 中有 **conway.py**),它将显示自上次 Git 提交以来所做的更改: +希望你正在使用 [Git][10] 之类的版本控制系统。如果是这样,那么你的比较就不是在两个不同文件之间进行,而是要查找当前文件与 Git 历史文件之间的差异。Meld 理解这一点,因此,如果你运行 `meld conway.py`(`conway.py` 在 Git 中),它将显示自上次 Git 提交以来所做的更改: ![Comparing Git files in Meld][11] 你可以看到当前版本(右侧)和仓库版本(左侧)之间的更改。你可以看到,自上次提交以来,我删除了一个方法,并添加了一个参数和一个循环。 -如果你运行 **meld .**,你将看到当前目录(如果位于根目录,就是整个仓库)中的所有更改: +如果你运行 `meld .`,你将看到当前目录(如果位于仓库的根目录,就是整个仓库)中的所有更改: ![Meld . output][12] -你会看到一个文件被修改,另一个文件未加入版本控制(这意味着它对 Git 是新的,因此在比较之前,我需要 **git add** 该文件),以及许多其他未修改的文件。顶部的图标提供了各种显示选项。 +你会看到一个文件被修改了,另一个文件未加入版本控制(这意味着它对 Git 是新的,因此在比较之前,我需要 `git add` 添加该文件),以及许多其他未修改的文件。顶部的图标提供了各种显示选项。 你还可以比较两个目录,这有时很方便: @@ -98,7 +95,7 @@ Meld 更清晰! * * * -_本文最初发表在 Ben Nuttall 的 [Tooling blog][14] 上,并经允许重新使用。_ +*本文最初发表在 Ben Nuttall 的 [Tooling blog][14] 上,并经允许重新使用。* -------------------------------------------------------------------------------- @@ -107,7 +104,7 @@ via: https://opensource.com/article/20/3/meld 作者:[Ben Nuttall][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 54f3fa9c4efa23df17b42771dc06812af6db82e4 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 12:27:00 +0800 Subject: [PATCH 140/218] PUB @geekpi https://linux.cn/article-12067-1.html --- .../20200323 Don-t love diff- Use Meld instead.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200323 Don-t love diff- Use Meld instead.md (98%) diff --git a/translated/tech/20200323 Don-t love diff- Use Meld instead.md b/published/20200323 Don-t love diff- Use Meld instead.md similarity index 98% rename from translated/tech/20200323 Don-t love diff- Use Meld instead.md rename to published/20200323 Don-t love diff- Use Meld instead.md index 375c6ff0d4..9fd421118f 100644 --- a/translated/tech/20200323 Don-t love diff- Use Meld instead.md +++ b/published/20200323 Don-t love diff- Use Meld instead.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12067-1.html) [#]: subject: (Don't love diff? Use Meld instead) [#]: via: (https://opensource.com/article/20/3/meld) [#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) From c1b9a5c43b700126a22a80a1a0601e13306d5255 Mon Sep 17 00:00:00 2001 From: Chunibyo <359806334@qq.com> Date: Fri, 3 Apr 2020 12:51:09 +0800 Subject: [PATCH 141/218] chunibyo is translating --- sources/tech/20190612 How to write a loop in Bash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190612 How to write a loop in Bash.md b/sources/tech/20190612 How to write a loop in Bash.md index f63bff9cd3..c795a3bf82 100644 --- a/sources/tech/20190612 How to write a loop in Bash.md +++ b/sources/tech/20190612 How to write a loop in Bash.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (chunibyo-wly) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From ffdbb7c7a3eb79fe2a9cbb492f12159c3c1b7949 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 14:24:48 +0800 Subject: [PATCH 142/218] PRF @wxy --- ...0190822 How the Linux desktop has grown.md | 71 ++++++++++--------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/translated/talk/20190822 How the Linux desktop has grown.md b/translated/talk/20190822 How the Linux desktop has grown.md index faa1bbac3e..e1305bec8a 100644 --- a/translated/talk/20190822 How the Linux desktop has grown.md +++ b/translated/talk/20190822 How the Linux desktop has grown.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How the Linux desktop has grown) @@ -9,89 +9,90 @@ Linux 桌面史话 ====== -> 自 1990 年代初以来,Linux 桌面已从简单的窗口管理器发展为完整的桌面。与我们一起来探索 Linux 桌面的历史。 -![Person typing on a 1980's computer][1] +> 自 20 世纪 90 年代初以来,Linux 桌面已从一个简单的窗口管理器发展为一个完整的桌面。让我们一起来回顾一下 Linux 桌面的历史。 -我首次安装 Linux 是 1993 年。那时,安装这种操作系统没有太多的选择。早期,许多人只是从别人那里复制一个正在运行的镜像。然后有人想到了一个精巧的主意,创建一个 Linux 的“发行版”,使你可以自定义要安装的软件。那就是 Softlanding Linux 系统(SLS),也是我首次见到了 Linux。 +![](https://img.linux.net.cn/data/attachment/album/202004/03/142430kei55auvvv254aka.jpg) -我的 386 PC 虽然内存不多,但也足够了。SLS 1.03 需要 2MB 的内存才能运行,如果要编译程序,则需要 4MB 的内存。如果要运行 X Window 系统,则需要多达 8MB 的内存!而我的电脑正好有足够的内存来运行 X Window 系统。 +我第一次安装 Linux 是在 1993 年。那时,安装这种操作系统没有太多的选择。早期,许多人只是从别人那里复制一个运行中的镜像。然后有人有了一个很好的想法,创建一个 Linux 的“发行版”,让你可以自定义要安装的软件。这就是 Softlanding Linux 系统(SLS),也是我首次接触 Linux。 -因为我是在命令行中成长的,图形用户界面对我来说并不是必不可少的。但它确实很方便。我可以在不同的窗口中运行应用程序,并轻松地在任务之间切换。 +当时我的 386 PC 虽然内存不多,但已经足够了。SLS 1.03 需要 2MB 的内存才能运行,如果要编译程序,则需要 4MB 的内存。如果要运行 X 窗口系统,则需要多达 8MB 的内存!而我的电脑正好有足够的内存来运行 X 窗口系统。 -从我首次体验 Linux 开始,我就迷上了它。从那以后,我一直在台式机上使用 Linux。和许多人一样,我在双引导配置下运行 Linux 已有一段时间,因此我可以跳回到 MS-DOS 和 Windows 来运行某些程序。直到 1998 年,我终于冒了个险,全面投身于 Linux 之中。 +因为我是在命令行中成长的,所以图形化的用户界面对我来说并不重要,但它确实很方便,我可以在不同的窗口中运行应用程序,并在任务间轻松切换。 -在过去的 26 年中,我目睹了 Linux 桌面的成熟。在那段时间里,我还尝试了一种有趣的桌面环境组合,我会在下面通过 Linux 桌面的历史之旅分享它。 +从我第一次尝试 Linux 开始,我就迷上了它。从那以后,我一直在台式机上使用 Linux。和许多人一样,我也曾有一段时间以双引导配置运行 Linux,这样我就可以跳回到 MS-DOS 和 Windows 来运行某些程序。直到 1998 年,我终于冒了个险,全面投身于 Linux 之中。 + +在过去的 26 年中,我看着 Linux 桌面逐渐成熟。在这段时间里,我还尝试了各种有趣的桌面环境,下面我来分享一下 Linux 桌面的历史。 ### X 和窗口管理器 -Linux 上的第一个“桌面”其实不是桌面。相反,它们是运行在 X Window 系统上的“窗口管理器window manager”(WM)。X 提供了图形用户界面的基本组件,如在屏幕上创建窗口以及提供键盘和鼠标输入。就其本身而言,X 并没有做太多事情。为了使 X 图形环境能够用起来,你需要一种方法来管理会话中的所有窗口。这就出现了窗口管理器window manager。运行 xterm 或 xclock 之类的 X 程序会在一个窗口中打开该程序。窗口管理器会跟踪窗口并进行基本的内部管理,例如让你可以来回移动窗口并将其最小化。其余的事情取决于你自己。你可以通过将程序名列在 `~/ .xinitrc` 文件中以在 X 开始时启动这些程序,但是通常,你会从 xterm 中运行新程序。 +Linux 上的第一个“桌面”还不是桌面。相反,它们是运行在 X 窗口系统上的“窗口管理器window manager”(WM)。X 提供了图形用户界面的基本构件,比如在屏幕上创建窗口,并提供键盘和鼠标输入。就其本身而言,X 的用处并不大。为了使 X 图形环境变得有用,你需要一种方法来管理会话中的所有窗口。这就出现了窗口管理器window manager。运行 xterm 或 xclock 之类的 X 程序就会在一个窗口中打开该程序。窗口管理器可以跟踪窗口并进行基本的内部管理,例如让你可以来回移动窗口并将其最小化。其余的事情取决于你自己。你可以通过将程序名列在 `~/.xinitrc` 文件中以在 X 开始时启动这些程序,但是通常,你会从 xterm 中运行新程序。 -在 1993 年,最常见的窗口管理器是 TWM,它的历史可以追溯到 1988 年。TWM 极其简单,仅仅提供了基本的窗口管理功能。 +在 1993 年,最常见的窗口管理器是 TWM,它的历史可以追溯到 1988 年。TWM 相当简单,仅仅提供了基本的窗口管理功能。 ![TWM on SLS 1.05][2] *SLS 1.05 上的 TWM,显示了 xterm、xclock 和 Emacs 编辑器* -另一个早期的窗口管理器是 OpenLook 虚拟窗口管理器(OLVWM)。OpenLook 是 Sun 微系统公司在 1980 年代开发的图形用户界面,后来又移植到其他 Unix 平台。作为一个*虚拟*窗口管理器,OLVWM 支持多个工作区。 +另一个早期的窗口管理器是 OpenLook 虚拟窗口管理器(OLVWM)。OpenLook 是 Sun 微系统公司在 20世纪 80 年代开发的图形用户界面,后来被移植到其它 Unix 平台。作为一个*虚拟*窗口管理器,OLVWM 支持多个工作区。 ![OLVWM on SLS 1.05][3] *SLS 1.05 上的 OLVWM,显示了 xterm 和虚拟工作区选择器* -当 Linux 开始流行时,没多久就有人创建出具有更流畅性能和改进界面的新的窗口管理器。这些新的窗口管理器中首先出现的是虚拟窗口管理器 FVWM。FVWM 比 TWM 或 OLVWM 更具现代感。但是,我们仍然没有桌面。 +当 Linux 开始流行起来的时候,没多久就有人创建出性能更流畅、界面更好的新窗口管理器。这些新的窗口管理器中首先出现的是虚拟窗口管理器 FVWM。FVWM 比 TWM 或 OLVWM 更具现代感。但是,我们仍然没有桌面。 ![FVWM on SLS 1.05][4] *SLS 1.05 上的 FVWM,显示了 xterm 和文件管理器* -以现代的眼光来看,TWM 和 FVWM 可能看起来很普通。但重要的是要想想当时其它图形环境的外观。 Windows 当时的版本看起来也相当简单。Windows 版本 1 到版本 3 使用了一个称为“程序管理器”的普通启动器。 +以现代的眼光来看,TWM 和 FVWM 可能看起来很朴素。但重要的是要想想当时其它图形环境是什么样子。 Windows 当时的版本看起来也相当简单。Windows 版本 1 到版本 3 使用了一个称为“程序管理器”的普通启动器。 ![Windows 3.11][5] *Windows 3.11,显示程序管理器和记事本编辑器* -1995 年 8 月,微软发布了 Windows 95,改变了现代 PC 桌面的格局。当然,我对此印象深刻。我觉得 Windows 3.x 笨拙而丑陋,但 Windows 95 却流畅而漂亮。更重要的是,我们现在将 Windows 95 视为“ **桌面**”。新的“桌面”隐喻是向前迈出的一大步。你可以在桌面上放置图标——实际上,Windows 95 提供了两个默认的桌面图标,分别是“我的电脑”(用于打开文件管理器)和“回收站”(用于放置以后要删除的文件)。 +1995 年 8 月,微软发布了 Windows 95,改变了现代 PC 桌面的格局。当然,我当时对此印象很深刻。我曾觉得 Windows 3.x 笨拙而丑陋,但 Windows 95 却流畅而漂亮。更重要的是,我们现在将 Windows 95 视为“**桌面**”。新的“桌面”隐喻是一个巨大的进步。你可以在桌面上放置图标——事实上,Windows 95 提供了两个默认的桌面图标,分别是“我的电脑”(用于打开文件管理器)和“回收站”(用于放置以后要删除的文件)。 -但是,更重要的是,Windows 95 桌面的意味着*集成*。程序管理器不见了,取而代之的是屏幕底部的任务栏,可让你使用更简单的“开始”菜单启动新程序。任务栏是多功能的,还通过一系列的按钮显示了你正在运行的程序,而托盘显示了时间、扬声器音量和其它简单的控件。你可以在这个新桌面上右键单击任何对象, Windows 95 会为你提供一个上下文相关的菜单,其中包含你可以执行的操作。 +但是,更重要的是,Windows 95 桌面的意味着*整合*。程序管理器不见了,取而代之的是屏幕底部的任务栏,可让你使用更简单的“开始”菜单启动新程序。任务栏是多功能的,还通过一系列的按钮显示了你正在运行的程序,而托盘显示了时间、扬声器音量和其它简单的控件。你可以在这个新桌面上右键单击任何对象, Windows 95 会为你提供一个上下文相关的菜单,其中又你可以执行的操作。 ![Windows 95][6] *Windows 95,显示了记事本编辑器* -与以前版本的 Windows 甚至其它 Linux 窗口管理器相比,Windows 95 的界面更加流畅并且易于使用。值得一提的是,Linux 开发人员创建了一个模仿 Windows 95 界面的 FVWM 的新版本。名为 FVWM95 的新窗口管理器仍然不是桌面,但看起来非常漂亮。新的任务栏使你可以使用“开始”菜单启动新的 X 程序。任务栏还使用类似于 Windows 95 的按钮显示了正在运行的程序。 +与以前版本的 Windows 甚至其它 Linux 窗口管理器相比,Windows 95 的界面更加流畅并且易于使用。值得一提的是,Linux 开发人员创建了一个模仿 Windows 95 界面的 FVWM 的新版本。名为 FVWM95 的新窗口管理器仍然不是桌面,但它看起来非常漂亮。新的任务栏让你可以使用“开始”菜单启动新的 X 程序。任务栏还可以使用类似于 Windows 95 的按钮显示了正在运行的程序。 ![FVWM95 on Red Hat Linux 5.2][7] *在 Red Hat Linux 5.2 上的 FVWM95,显示了 xterm 和一个带有 xterm 图标、文件管理器和其他程序的快速访问程序启动器* -在 FVWM95 和其他窗口管理器还在改进的同时,核心问题仍然存在:Linux 并没有真正的桌面。它具有一堆窗口管理器,仅此而已。使用图形用户界面的 Linux 应用程序(基本上意味着它们是 X 应用程序)看起来形态各异且工作方式也不同。除了 X Window 系统提供的简单的纯文本复制/粘贴功能外,你无法从一个应用程序复制和粘贴到另一个应用程序里。Linux 真正需要的是在其图形用户界面中完全重新打造以创建它的第一个桌面。 +虽然 FVWM95 和其他窗口管理器都在改进,但核心问题仍然存在:Linux 并没有真正的桌面。它具有一堆窗口管理器,仅此而已。使用图形用户界面的 Linux 应用程序(基本上意味着它们是 X 应用程序)看起来形态各异且工作方式也不同。除了 X 窗口系统提供的简单的纯文本复制/粘贴功能外,你不能从一个应用程序复制和粘贴到另一个应用程序里。Linux 真正需要的是在其图形用户界面中进行彻底的重新打造,以创建它的第一个桌面。 ### Linux 桌面之初啼 -在 1996 年,Matthias Ettrich 感于 X 之下 Linux 应用程序体验不一致的困扰。他想使找个图形环境更易于使用,而且更重要的是,他想使所有东西都像实际的桌面一样“集成”在一起。 +在 1996 年,Matthias Ettrich 有感于 X 之下 Linux 应用程序体验不一致的困扰。他想使找个更易于使用的图形环境,而且更重要的是,他想让所有东西都“集成”在一起,就像真正的桌面一样。 -Matthias 开始研究K 桌面环境K Desktop Environment(KDE)。那个 K 代表着 “Kool”(LCTT 译注:即 Cool)。但是 KDE 这个名字也意味着可以在通用桌面环境Common Desktop Environment(CDE)上发挥作用,而通用桌面环境是“大 Unix”世界的标准。尽管到了 1996 年,CDE 看起来已经有点过时了。CDE 基于 Motif 部件集,这与 FVWM 模仿的设计相同。KDE 1.0 于 1998 年 7 月完成,是对 FVWM95 等普通窗口管理器的绝对改进。 +Matthias 开始了K 桌面环境K Desktop Environment(KDE)的工作。那个 K 代表着 “Kool”(LCTT 译注:即 Cool)。但是 KDE 这个名字也意味着可以类似通用桌面环境Common Desktop Environment(CDE)的做法,而 CDE 是“大 Unix”世界的标准。尽管到了 1996 年,CDE 看起来已经有点过时了。CDE 基于 Motif 部件集,这也是 FVWM 所模仿的设计。KDE 1.0 于 1998 年 7 月完成,与 FVWM95 等普通窗口管理器相比,它有了明显改进。 ![KDE 1.0][8] *K 桌面环境(KDE)版本 1.0。图片来源:Paul Brown / KDE* -KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个具有应用程序集成和更现代的桌面图标的真正的桌面。KDE 的设计与 Windows 95 并无不同。屏幕底部有一个任务栏,它提供与 Windows 95 的“开始”菜单等效的功能以及一些应用程序快捷方式。KDE 还支持虚拟桌面,它们被巧妙地标记为 “One”、“ Two”、“Three” 和 “Four”。而正在运行的应用程序则通过屏幕顶部单独的任务栏中的按钮表示。 +KDE 是 Linux 向前迈出的一大步。最终,Linux 有了一个真正的桌面,集成了应用程序和更多现代的桌面图标。KDE 的设计与 Windows 95 并无不同。屏幕底部有一个任务栏,它提供了相当于 Windows 95 的“开始”菜单以及一些应用程序的快捷键。KDE 还支持虚拟桌面,这些桌面被巧妙地标记为 “One”、“ Two”、“Three” 和 “Four”。正在运行的应用程序通过位于屏幕顶部单独的任务栏的按钮表示。 -但是并不是每个人都对 KDE 感到满意。为了从系统中抽象出 GUI 来,KDE 使用了 Trolltech 的 Qt 工具套件库。不幸的是,Qt 并不是以自由软件的许可证进行分发的。Trolltech 允许 Qt 免费在自由软件应用程序中使用,但在商业或专有应用程序中要收取使用费。而且这种二分法与自由软件不符。这给 Linux 发行版带来了问题:它们应该包括 KDE 吗?还是默认使用较旧而属于自由软件的图形用户界面(例如 FVWM)? +但并不是每个人都对 KDE 感到满意。为了将 GUI 从系统中抽象出来,KDE 使用了 Trolltech 的 Qt 工具套件库。不幸的是,Qt 并不是以自由软件的许可证进行分发的。Trolltech 允许 Qt 在自由软件应用程序中免费使用,但在商业或专有应用程序中要收取使用费。而且这种二分法与自由软件不符。这给 Linux 发行版带来了问题:它们应该包括 KDE 吗?还是默认使用 FVWM 这样老式但属于自由软件的图形用户界面? -面对这种情况,Miguel de Icaza 和 Federico Mena 于 1997 年开始开发新的 Linux 桌面上。这个新项目被称为 GNOME,即GNU 网络对象模型环境GNU Network Object Model Environment的缩写。GNOME 旨在成为完全自由的软件,并使用了来自 GIMP 图像编辑器中的另一种工具套件(称为 GTK)。 GTK 从字面上代表 GIMP 工具套件GIMP Tool Kit。当 GNOME 1.0 最终于 1999 年发布时,Linux 有了另一个现代化的桌面环境。 +面对这种情况,Miguel de Icaza 和 Federico Mena 于 1997 年开始开发新的 Linux 桌面上。这个新项目被称为 GNOME,即GNU 网络对象模型环境GNU Network Object Model Environment的缩写。GNOME 旨在成为一个完全自由的软件,并使用了一个不同的工具套件库 —— 来自 GIMP 图像编辑器的 GTK。GTK 从字面上的意思 GIMP 工具套件GIMP Tool Kit。当 GNOME 1.0 终于在 1999 年发布时,Linux 又多了一个现代化的桌面环境。 ![GNOME 1.0][9] *GNOME 1.0 版。图片来源:GNOME 文档项目* -有两个 Linux 桌面环境固然很棒,但“KDE 与 GNOME”之争仍持续了一段时间。到 1999 年,Trolltech 以新的公共许可证 Q 公共许可证Q Public License(QPL)重新发布了 Qt 库。但是,新许可证有其自己的包袱—-QPL 仅适用于 Qt 在开源软件项目中的使用,而不适用于商业项目。因此,自由软件基金会Free Software Foundation(FSF)认为 QPL 与 GNU 通用公共许可证GNU General Public License(GNU GPL)[不兼容][10]。在 Trolltech 在 2000 年根据 GNU GPL v2 重新发布 Qt 库之前,这个许可证问题一直存在。 +有两个 Linux 桌面环境固然很棒,但“KDE 与 GNOME”之争仍持续了一段时间。到了 1999 年,Trolltech 以新的公共许可证 Q 公共许可证Q Public License(QPL)重新发布了 Qt 库。但是,新许可证有其自身的包袱—-QPL 仅适用于 Qt 在开源软件项目中的使用,而不适用于商业项目。因此,自由软件基金会Free Software Foundation(FSF)认为 QPL 与 GNU 通用公共许可证GNU General Public License(GNU GPL)[不兼容][10]。这个许可证问题一直持续到 2000 年 Trolltech 在 GNU GPL v2 下重新发布 Qt 库。 ### 随着时间的发展 -Linux 桌面继续成熟。KDE 和 GNOME 进行了一场友好的竞争,不仅增加了新功能,还互相交流了思想和观念。到 2004 年,GNOME 和 KDE 都取得了长足的进步,但用户界面只是在原有基础上添加了一些变化。 +Linux 桌面继续走向成熟。KDE 和 GNOME 进行了一场友好的竞争,促使双方都在增加了新的功能,还互相交流了思想和观念。到了 2004 年,GNOME 和 KDE 都取得了长足的进步,但只是给用户界面带来了渐进式的变化。 KDE 2 和 3 继续依赖屏幕底部的任务栏概念,但并入了用于运行应用程序的按钮。KDE 最明显的变化之一是添加了 Konqueror 浏览器,该浏览器首次出现在 KDE 2 中。 @@ -103,21 +104,21 @@ KDE 2 和 3 继续依赖屏幕底部的任务栏概念,但并入了用于运 *Fedora Core 2 上的 KDE 3.2.2(2004),显示了 Konqueror 文件管理器(使用 Fedora Core 2 主题)* -GNOME 2 还使用了任务栏概念,但将其分为两个部分:位于屏幕顶部的任务栏以启动应用程序并响应桌面警报,以及位于页面底部的任务栏以显示正在运行的应用程序。我自己将这两个任务栏称之为“你可以做的事情”(顶部)和“你正在做的事情”(底部)。除了精简的用户界面外,GNOME 还添加了由 Eazel 开发的名为 Nautilus 的更新文件管理器。 +GNOME 2 也使用了任务栏概念,但将任务栏一分为二:屏幕顶部的任务栏用于启动应用程序并响应桌面提示,屏幕底部的任务栏用于显示正在运行的应用程序。我把这两个任务栏称之为“你可以做的事情”(顶部)和“你正在做的事情”(底部)。除了精简的用户界面外,GNOME 还添加了由 Eazel 开发的更新过的文件管理器,名为 Nautilus。 ![GNOME 2.6.0][13] *Fedora Core 2 上的 GNOME 2.6.0(2004),显示了 Nautilus 文件管理器(使用 Fedora Core 2 主题)* -随着时间的流逝,KDE 和 GNOME 走了不同的路径。两者都提供了功能丰富、健壮且现代化的桌面环境,但是却具有不同的用户界面目标。2011 年,GNOME 和 KDE 处理桌面界面的方式之间存在重大偏差。KDE 4.6(2011 年 1 月)和 KDE 4.7(2011 年 7 月)提供了更传统的桌面感受,同时继续根植于许多用户熟悉的任务栏概念。当然,可以看到 KDE 发生很多变化,但是它仍然保留了熟悉的外观。 +随着时间的流逝,KDE 和 GNOME 走了不同的道路。两者都提供了功能丰富、健壮且现代化的桌面环境,但是却具有不同的用户界面目标。2011 年,GNOME 和 KDE 在桌面界面上出现了很大的偏差。KDE 4.6(2011 年 1 月)和 KDE 4.7(2011 年 7 月)提供了更传统的桌面感受,同时继续根植于许多用户熟悉的任务栏概念。当然,KDE 的底层发生很多变化,但是它仍然保留了熟悉的外观。 ![KDE 4.6][14] *KDE 4.6,显示 Gwenview 图像查看器。图片来源:KDE* -2011 年,GNOME 通过新的桌面概念彻底改变了走向。GNOME 3 旨在创建一个更简单、更精简的桌面体验,使用户可以专注于自己的工作。任务栏消失了,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控件,显示了时间和电池状态,并允许用户通过重新设计过的菜单启动新程序。 +2011 年,GNOME 以一个新的桌面概念彻底改变了走向。GNOME 3 旨在创建一个更简单、更精简的桌面体验,使用户能够专注于自己的工作。任务栏消失了,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控件,显示了时间和电池状态,并允许用户通过重新设计过的菜单启动新程序。 -菜单的变化最具最戏剧性。单击“活动”菜单或将鼠标移到“活动”的“热角”,会将所有打开的应用程序显示为单独的窗口。用户还可以从概述中单击“应用程序”选项卡以启动新程序。“概述”还提供了内部集成的搜索功能。 +菜单的变化最具最戏剧性。单击“活动”菜单或将鼠标移到“活动”的“热角”,所有打开的应用程序会显示为单独的窗口。用户还可以从“概述”中单击“应用程序”选项卡以启动新程序。“概述”还提供了一个内部集成的搜索功能。 ![GNOME 3.0][15] @@ -129,13 +130,13 @@ GNOME 2 还使用了任务栏概念,但将其分为两个部分:位于屏幕 ### 你的桌面之选 -拥有两个 Linux 桌面意味着用户有很多选择。有些人喜欢 KDE,而另一些人喜欢 GNOME。没关系,选择最适合你的桌面就行。 +拥有两个 Linux 桌面意味着用户有很大的选择余地。有些人喜欢 KDE,而另一些人喜欢 GNOME。没关系,选择最适合你的桌面就行。 -可以肯定的是,KDE 和 GNOME 都有拥护者和批评者。例如,GNOME 放弃任务栏以支持“活动概述”而受到了很多批评。也许最著名的批评家是 Linus Torvalds,他在 2011 年[大声斥责并抛弃了][17]新的 GNOME,将其视为“邪恶的烂摊子”,然后在两年后[回到了][18] GNOME。 +可以肯定的是,KDE 和 GNOME 都有拥护者和批评者。例如,GNOME 因为放弃任务栏而改成“活动概述”而受到了不少批评。也许最著名的批评者是 Linus Torvalds,他在 2011 年[大声斥责并抛弃了][17]新的 GNOME,将其视为“邪恶的烂摊子”,然后在两年后又[回到了][18] GNOME。 -其他人也对 GNOME 3 提出了类似的批评,以至于一些开发人员复刻 GNOME 2 的源代码来创建 MATE 桌面。MATE(是MATE 高级传统环境MATE Advanced Traditional Environment的递归缩写)延续了 GNOME 2 的传统任务栏界面。 +其他人也对 GNOME 3 提出了类似的批评,以至于一些开发人员复刻 GNOME 2 的源代码创建了 MATE 桌面。MATE(是MATE 高级传统环境MATE Advanced Traditional Environment的递归缩写)延续了 GNOME 2 的传统任务栏界面。 -无论如何,毫无疑问当今两个最受欢迎的 Linux 桌面是 KDE 和 GNOME。它们的当前版本非常成熟,并且具有很多功能。 KDE 5.16(2019)和 GNOME 3.32(2019)都试图简化和精简 Linux 桌面体验,但是方式有所不同。GNOME 3.32 继续致力于极简外观,删除所有分散用户注意力的用户界面元素,以便用户可以专注于其应用程序和工作。 KDE 5.16 在任务栏上采用了更为熟悉的方法,但是增加了其他视觉上的改进和特质,尤其是围绕改进的小部件处理和图标。 +无论如何,毫无疑问当今两个最受欢迎的 Linux 桌面是 KDE 和 GNOME。它们的当前版本非常成熟,功能也很丰富。KDE 5.16(2019)和 GNOME 3.32(2019)都试图简化和精简 Linux 桌面体验,但是方式有所不同。GNOME 3.32 继续致力于极简外观,删除所有分散用户注意力的用户界面元素,以便用户可以专注于其应用程序和工作。KDE 5.16 采用了更为熟悉的任务栏方法,但也增加了其他视觉上的改进和亮点,尤其是改进的小部件处理和图标。 ![KDE 5.16 Plasma][19] @@ -145,9 +146,9 @@ GNOME 2 还使用了任务栏概念,但将其分为两个部分:位于屏幕 *GNOME 3.32。图片来源:GNOME* -同时,你也不会完全失去它们之间的兼容性。每个主要的 Linux 发行版都提供兼容性库,因此你可以在运行 GNOME 时从 KDE 运行应用程序。在当你实际要使用的应用程序是为其他桌面环境编写的时候,这非常有用。 你可以在 GNOME 上运行 KDE 应用程序,反之亦然。 +同时,你也不会完全失去它们之间的兼容性。每个主要的 Linux 发行版都提供了兼容性库,因此你可以在运行 GNOME 的同时来运行 KDE 应用程序。当你真正想使用的应用程序是为其他桌面环境编写的,这一点非常有用。你可以在 GNOME 上运行 KDE 应用程序,反之亦然。 -我认为这种态势不会很快改变,这是一件好事。KDE 和 GNOME 之间的良性竞争使这两个阵营的开发人员都可以避免故步自封。无论你使用 KDE 还是 GNOME,你都将拥有一个集成度很高的现代化桌面。最重要的是,这意味着 Linux 拥有自由软件的最佳特性:选择。 +我认为这种态势不会很快改变,这是一件好事。KDE 和 GNOME 之间的良性竞争使这两个阵营的开发人员可以避免故步自封。无论你使用 KDE 还是 GNOME,你都将拥有一个集成度很高的现代化桌面。而最重要的是,这意味着 Linux 拥有自由软件最好的特点:选择。 -------------------------------------------------------------------------------- @@ -156,7 +157,7 @@ via: https://opensource.com/article/19/8/how-linux-desktop-grown 作者:[Jim Hall][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 64c8c59667b103a42a48504a000ebb74c283a04b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 14:28:17 +0800 Subject: [PATCH 143/218] PUB @wxy https://linux.cn/article-12068-1.html --- .../20190822 How the Linux desktop has grown.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/talk => published}/20190822 How the Linux desktop has grown.md (99%) diff --git a/translated/talk/20190822 How the Linux desktop has grown.md b/published/20190822 How the Linux desktop has grown.md similarity index 99% rename from translated/talk/20190822 How the Linux desktop has grown.md rename to published/20190822 How the Linux desktop has grown.md index e1305bec8a..0bfb102dd6 100644 --- a/translated/talk/20190822 How the Linux desktop has grown.md +++ b/published/20190822 How the Linux desktop has grown.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12068-1.html) [#]: subject: (How the Linux desktop has grown) [#]: via: (https://opensource.com/article/19/8/how-linux-desktop-grown) [#]: author: (Jim Hall https://opensource.com/users/jim-hall) From b91de55a510cdb3c9a2eae305ce0d7a48bf06107 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 21:44:01 +0800 Subject: [PATCH 144/218] PRF @geekpi --- ...309 Fish - A Friendly Interactive Shell.md | 77 ++++++++----------- 1 file changed, 33 insertions(+), 44 deletions(-) diff --git a/translated/tech/20200309 Fish - A Friendly Interactive Shell.md b/translated/tech/20200309 Fish - A Friendly Interactive Shell.md index 8f786287ad..7e3fc59f99 100644 --- a/translated/tech/20200309 Fish - A Friendly Interactive Shell.md +++ b/translated/tech/20200309 Fish - A Friendly Interactive Shell.md @@ -1,45 +1,39 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Fish – A Friendly Interactive Shell) [#]: via: (https://fedoramagazine.org/fish-a-friendly-interactive-shell/) [#]: author: (Michal Konečný https://fedoramagazine.org/author/zlopez/) -Fish – 一个友好的交互式 Shell +Fish:一个友好的交互式 Shell ====== ![Fish — A Friendly Interactive Shell][1] -你是否正在寻找 bash 的替代品?你是否在寻找更人性化的东西?再往前看看,因为你刚发现了 fish! +你是否正在寻找 bash 的替代品?你是否在寻找更人性化的东西?不用再看了,因为你刚发现了 fish! -Fish(友好的交互式 shell)是一个智能且用户友好的命令行 shell,可在 Linux、MacOS 和其他操作系统上运行。将其用于终端的日常工作和脚本编写。用 fish 编写的脚本比相同的 bash 版本具有更少的神秘性。 +Fish(友好的交互式 shell)是一个智能且用户友好的命令行 shell,可在 Linux、MacOS 和其他操作系统上运行。可以将其用于终端的日常工作和脚本编写。用 fish 编写的脚本比相同的 bash 版本具有更少的神秘性。 ### Fish 的用户友好功能 - * **建议** -Fish 会建议你之前写过的命令。当经常输入相同命令时,这可以提高生产率。 - * **健全的脚本** -Fish 避免使用隐秘字符。这提供了更清晰和更友好的语法。 - * **基于手册页的补全** -Fish 会根据命令的手册页自动补全参数。 - * **语法高亮** -Fish 会高亮显示命令语法以使其在视觉上友好。 - - +* **建议**:Fish 会提示你之前写过的命令。当经常输入相同命令时,这样可以提高生产率。 +* **健全的脚本能力**:Fish 避免使用那些隐秘字符。这提供了更清晰和更友好的语法。 +* **基于手册页的补全**:Fish 会根据命令的手册页自动补全参数。 +* **语法高亮**:Fish 会高亮显示命令语法以使其在视觉上友好。 ### 安装 #### Fedora 工作站 -使用 _dnf_ 命令安装 fish: +使用 `dnf` 命令安装 fish: ``` $ sudo dnf install fish ``` -安装 _util-linux-user_ 包,然后使用适当的参数运行 _chsh_(更改 shell 程序)命令,将 fish 设置为默认 shell 程序: +安装 `util-linux-user` 包,然后使用适当的参数运行 `chsh`(更改 shell 程序)命令,将 fish 设置为默认 shell 程序: ``` $ sudo dnf install util-linux-user @@ -50,7 +44,7 @@ $ chsh -s /usr/bin/fish #### Fedora Silverblue -由于它不是 GUI 应用,因此你需要使用 _rpm-ostree_ 安装。使用以下命令在 Fedora Silverblue 上安装 fish: +由于它不是 GUI 应用,因此你需要使用 `rpm-ostree` 将其加到层内。使用以下命令在 Fedora Silverblue 上安装 fish: ``` $ rpm-ostree install fish @@ -58,35 +52,31 @@ $ rpm-ostree install fish 在 Fedora Silverblue 上,你需要重启 PC 才能切换到新的 ostree 镜像。 -如果你想在 Fedora Silverblue 用 fish 作为主要 shell,最简单的方法是更新 _/etc/passwd_ 文件。找到你的用户,并将 _/bin/bash_ 更改为 _/usr/bin/fish_。 +如果你想在 Fedora Silverblue 用 fish 作为主要 shell,最简单的方法是更新 `/etc/passwd` 文件。找到你的用户,并将 `/bin/bash` 更改为 `/usr/bin/fish`。 -、你需要 [root 权限][2]来编辑 _/etc/passwd_ 文件。另外,你需要注销并重新登录才能使更改生效。 +你需要 [root 权限][2]来编辑 `/etc/passwd` 文件。另外,你需要注销并重新登录才能使更改生效。 ### 配置 -fish 的用户配置文件在 _~/.config/fish/config.fish_。要更改所有用户的配置,请编辑 _/etc/fish/config.fish_。 +fish 的用户配置文件在 `~/.config/fish/config.fish`。要更改所有用户的配置,请编辑 `/etc/fish/config.fish`。 -每个用户的配置文件必须手动创建。安装脚本不会创建 _〜/ .config / fish / config.fish_。 +用户配置文件必须手动创建。安装脚本不会创建 `~/.config/fish/config.fish`。 -以下是几个配置示例以及它们的 bash 等效项,以帮助你入门: +以下是两个个配置示例以及它们的 bash 等效项,以帮助你入门: #### 创建别名 - * _~/.bashrc_: alias ll='ls -lh' - * _~/.config/fish/config.fish_: alias ll='ls -lh' - - +* `~/.bashrc`:`alias ll='ls -lh'` +* `~/.config/fish/config.fish`: `alias ll='ls -lh'` #### 设置环境变量 - * _~/.bashrc_: export PATH=$PATH:~/bin - * _~/.config/fish/config.fish_: set -gx PATH $PATH ~/bin - - + * `~/.bashrc`:`export PATH=$PATH:~/bin` + * `~/.config/fish/config.fish`:`set -gx PATH $PATH ~/bin` ### 使用 fish 工作 -将 fish 配置为默认 shell 程序后,命令提示符将类似于下图所示。如果尚未将 fish 配置为默认 shell,只需运行 _fish_ 命令以在当前终端会话中启动。 +将 fish 配置为默认 shell 程序后,命令提示符将类似于下图所示。如果尚未将 fish 配置为默认 shell,只需运行 `fish` 命令以在当前终端会话中启动。 ![][3] @@ -100,37 +90,37 @@ fish 的用户配置文件在 _~/.config/fish/config.fish_。要更改所有用 ![][5] -注意输入时出现的灰色文本。灰色文本显示建议之前编写的命令。要自动补全,只需按 **CTRL+F**。 +注意输入时出现的灰色文本。灰色文本显示建议之前编写的命令。要自动补全,只需按 `CTRL+F`。 -通过输入连接号(**–**)然后使用 **TAB** 键,它会根据前面命令的手册页获取参数建议: +通过输入连接号(`–`)然后使用 `TAB` 键,它会根据前面命令的手册页获取参数建议: ![][6] -如果你按一次 **TAB**,它将显示前几个建议(或所有建议,如果只有少量参数可用)。如果再次按 **TAB**,它将显示所有建议。如果连续三次按 **TAB**,它将切换到交互模式,你可以使用箭头键选择一个参数。 +如果你按一次 `TAB`,它将显示前几个建议(或所有建议,如果只有少量参数可用)。如果再次按 `TAB`,它将显示所有建议。如果连续三次按 `TAB`,它将切换到交互模式,你可以使用箭头键选择一个参数。 除此之外,fish 的工作与大多数其他 shell 相似。其他差异已经写在文档中。因此,找到你可能感兴趣的其他功能应该不难。 ### 让 fish 变得更强大 -使用 [powerline][7] 使 fish 变得更强大。Powerline 将命令执行时间、彩色化 git 状态、当前 git 分支等添加到了 fish 的界面中。 +使用 [powerline][7] 使 fish 变得更强大。Powerline 可以为 fish 的界面添加命令执行时间、彩色化 git 状态、当前 git 分支等。 -在安装 powerline 之前,你必须先安装 [Oh My Fish][8]。Oh My Fish 扩展了 fish 的核心基础架构,以支持安装其他插件。安装 Oh My Fish 的最简单方法是使用 _curl_ 命令: +在安装 powerline 之前,你必须先安装 [Oh My Fish][8]。Oh My Fish 扩展了 fish 的核心基础架构,以支持安装其他插件。安装 Oh My Fish 的最简单方法是使用 `curl` 命令: ``` > curl -L https://get.oh-my.fish | fish ``` -如果你不想直接将安装命令管道传给 _fish_,请参见 Oh My Fish 的 [README][9] 的安装部分,以了解其他安装方法。 +如果你不想直接将安装命令管道传给 `fish`,请参见 Oh My Fish 的 [README][9] 的安装部分,以了解其他安装方法。 -Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 _powerline-fonts_ 包。 +Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 `powerline-fonts` 包。 -**在Fedora工作站上**: +在 Fedora 工作站上: ``` > sudo dnf install powerline-fonts ``` -**在 Fedora Silverblue 上**: +在 Fedora Silverblue 上: ``` > rpm-ostree install powerline-fonts @@ -138,7 +128,7 @@ Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 _powerline-font 在 Fedora Silverblue 上,你必须重启以完成字体的安装。 -安装 _powerline-fonts_ 之后,安装 _bobthefish_: +安装 `powerline-fonts` 之后,安装 `bobthefish`: ``` > omf install bobthefish @@ -148,7 +138,7 @@ Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 _powerline-font ![][10] -### 额外的资源 +### 更多资源 查看这些网页,了解更多 fish 内容: @@ -161,7 +151,6 @@ Fish 的 powerline 插件是 [bobthefish][7]。Bobthefish 需要 _powerline-font * [GitHub][17] - -------------------------------------------------------------------------------- via: https://fedoramagazine.org/fish-a-friendly-interactive-shell/ @@ -169,7 +158,7 @@ via: https://fedoramagazine.org/fish-a-friendly-interactive-shell/ 作者:[Michal Konečný][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From b14ccc2e1b65dfdcffe954203a46170c02f91c33 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Fri, 3 Apr 2020 21:44:29 +0800 Subject: [PATCH 145/218] PUB @geekpi https://linux.cn/article-12069-1.html --- .../20200309 Fish - A Friendly Interactive Shell.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200309 Fish - A Friendly Interactive Shell.md (98%) diff --git a/translated/tech/20200309 Fish - A Friendly Interactive Shell.md b/published/20200309 Fish - A Friendly Interactive Shell.md similarity index 98% rename from translated/tech/20200309 Fish - A Friendly Interactive Shell.md rename to published/20200309 Fish - A Friendly Interactive Shell.md index 7e3fc59f99..cb7b6cb62d 100644 --- a/translated/tech/20200309 Fish - A Friendly Interactive Shell.md +++ b/published/20200309 Fish - A Friendly Interactive Shell.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12069-1.html) [#]: subject: (Fish – A Friendly Interactive Shell) [#]: via: (https://fedoramagazine.org/fish-a-friendly-interactive-shell/) [#]: author: (Michal Konečný https://fedoramagazine.org/author/zlopez/) From bde50e9a07198d5fb4fe5aba5ecb8f0f179db6aa Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:16:49 +0800 Subject: [PATCH 146/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200403=20Take?= =?UTF-8?q?=20back=20your=20dotfiles=20with=20Chezmoi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200403 Take back your dotfiles with Chezmoi.md --- ...03 Take back your dotfiles with Chezmoi.md | 309 ++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 sources/tech/20200403 Take back your dotfiles with Chezmoi.md diff --git a/sources/tech/20200403 Take back your dotfiles with Chezmoi.md b/sources/tech/20200403 Take back your dotfiles with Chezmoi.md new file mode 100644 index 0000000000..2b2bed6621 --- /dev/null +++ b/sources/tech/20200403 Take back your dotfiles with Chezmoi.md @@ -0,0 +1,309 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Take back your dotfiles with Chezmoi) +[#]: via: (https://fedoramagazine.org/take-back-your-dotfiles-with-chezmoi/) +[#]: author: (Ryan Walter https://fedoramagazine.org/author/rwaltr/) + +Take back your dotfiles with Chezmoi +====== + +![][1] + +In Linux, dotfiles are hidden text files that are used to store various configuration settings for many such as Bash and Git to more complex applications like i3 or VSCode. + +Most of these files are contained in the _~/.config_ directory or right in the home directory. Editing these files allows you to customize applications beyond what a settings menu may provide, and they tend to be portable across devices and even other Linux distributions. But one talking point across the Linux enthusiast community is how to manage these dotfiles and how to share them. + +We will be showcasing a tool called [Chezmoi][2] that does this task a little differently from the others. + +### The history of dotfile management + +If you search [GitHub for dotfiles][3], what you will see are over 100k repositories after one goal: Store people’s dotfiles in a shareable and repeatable manor. However, other than using git, they store their files differently. + +While Git has solved code management problems that also translates to config file management, It does not solve how to separate between distributions, roles (such as home vs work computers) secrets management, and per device configuration. + +Because of this, many users decide to craft their own solutions, and the community has responded with multiple answers over the years. This article will briefly cover some of the solutions that have been created. + +#### Experiment in an isolated environment + +Do you want to try these below solutions quickly in a contained environment? Run: + +``` +$ podman run --rm -it fedora +``` + +… to create a Fedora container to try the applications in. This container will automatically delete itself when you exit the shell. + +#### The install problem + +If you store your dotfiles in Git repository, you will want to make it easy for your changes to automatically be applied inside your home directory, the easiest way to do this at first glance is to use a symlink, such as _ln -s ~/.dotfies/bashrc ~/.bashrc_. This will allow your changes to take place instantly when your repository is updated. + +The problem with symlinks is that managing symlinks can be a chore. Stow and [RCM (covered here on Fedora Magazine)][4] can help you manage those, but these are not seamless solutions. Files that are private will need to be modified and chmoded properly after download. If you revamp your dotfiles on one system, and download your repository to another system, you may get conflicts and require troubleshooting. + +Another solution to this problem is writing your own install script. This is the most flexible option, but has the tradeoff of requiring more time into building a custom solution. + +#### The secrets problem + +Git is designed to track changes. If you store a secret such as a password or an API key in your git repository, you will have a difficult time and will need to rewrite your git history to remove that secret. If your repository is public, your secret would be impossible to recover if someone else has downloaded your repository. This problem alone will prevent many individuals from sharing their dotfiles with the public world. + +#### The multi-device config problem + +The problem is not pulling your config to multiple devices, the problem is when you have multiple devices that require different configuration. Most individuals handle this by either having different folders or by using different forks. This makes it difficult to share configs across the different devices and role sets + +### How Chezmoi works + +Chezmoi is a tool to manage your dotfiles with the above problems in mind, it doesn’t blindly copy or symlink files from your repository. Chezmoi acts more like a template engine to generate your dotfiles based on system variables, templates, secret managers, and Chezmoi’s own config file. + +#### Getting Started with Chezmoi + +Currently Chezmoi is not in the default repositories. You can download the current version of Chezmoi as of writing with the following command. + +``` +$ sudo dnf install https://github.com/twpayne/chezmoi/releases/download/v1.7.17/chezmoi-1.7.17-x86_64.rpm +``` + +This will install the pre-packaged RPM to your system. + +Lets go ahead and create your repository using: + +``` +$ chezmoi init +``` + +It will create your new repository in _~/.local/share/chezmoi/_. You can easily cd to this directory by using: + +``` +$ chezmoi cd +``` + +Lets add our first file: + +``` +chezmoi add ~/.bashrc +``` + +… to add your bashrc file to your chezmoi repository. + +Note: if your bashrc file is actually a symlink, you will need to add the -f flag to follow it and read the contents of the real file. + +You can now edit this file using: + +``` +$ chezmoi edit ~/.bashrc +``` + +Now lets add a private file, This is a file that has the permissions 600 or similar. I have a file at .ssh/config that I would like to add by using + +``` +$ chezmoi add ~/.ssh/config +``` + +Chezmoi uses special prefixes to keep track of what is a hidden file and a private file to work around Git’s limitations. Run the following command to see it: + +``` +$ chezmoi cd +``` + +**Do note that files that are marked as private are not actually private, they are still saved as plain text in your git repo. More on that later.** + +You can apply any changes by using: + +``` +$ chezmoi apply +``` + +and inspect what is different by using + +``` +$ chezmoi diff +``` + +#### Using variables and templates + +To export all of your data Chezmoi can gather, run: + +``` +$ chezmoi data +``` + +Most of these are information about your username, arch, hostname, os type and os name. But you can also add our own variables. + +Go ahead and run: + +``` +$ chezmoi edit-config +``` + +… and input the following: + +``` +[data] + email = "fedorauser@example.com" + name = "Fedora Mcdora" +``` + +Save your file and run chezmoi data again. You will see on the bottom that your email and name are now added. You can now use these with templates with Chezmoi. Run: + +``` +$ chezmoi add -T --autotemplate ~/.gitconfig +``` + +… to add your gitconfig as a template into Chezmoi. If Chezmoi is successful in inferring template correctly, you could get the following: + +``` +[user] + email = "{{ .email }}" + name = "{{ .name }}" +``` + +If it does not, you can change the file to this instead. + +Inspect your file with: + +``` +$ chezmoi edit ~/.gitconfig +``` + +After using + +``` +$ chezmoi cat ~/.gitconfig +``` + +… to see what chezmoi will generate for this file. My generated example is below: + +``` +[root@a6e273a8d010 ~]# chezmoi cat ~/.gitconfig + [user] + email = "fedorauser@example.com" + name = "Fedora Mcdora" + [root@a6e273a8d010 ~]# +``` + +It will generate a file filled with the variables in our chezmoi config. +You can also use the varibles to perform simple logic statements. One example is: + +``` +{{- if eq .chezmoi.hostname "fsteel" }} +# this will only be included if the host name is equal to "fsteel" +{{- end }} +``` + +Do note that for this to work the file has to be a template. You can check this by seeing if the file has a “.tmpl” appended to its name on the file in _chezmoi cd_, or by readding the file using the -T option + +#### Keeping secrets… secret + +To troubleshoot your setup, use the following command. + +``` +$ chezmoi doctor +``` + +What is important here is that it also shows you the [password managers it supports][5]. + +``` +[root@a6e273a8d010 ~]# chezmoi doctor + warning: version dev + ok: runtime.GOOS linux, runtime.GOARCH amd64 + ok: /root/.local/share/chezmoi (source directory, perm 700) + ok: /root (destination directory, perm 550) + ok: /root/.config/chezmoi/chezmoi.toml (configuration file) + ok: /bin/bash (shell) + ok: /usr/bin/vi (editor) + warning: vimdiff (merge command, not found) + ok: /usr/bin/git (source VCS command, version 2.25.1) + ok: /usr/bin/gpg (GnuPG, version 2.2.18) + warning: op (1Password CLI, not found) + warning: bw (Bitwarden CLI, not found) + warning: gopass (gopass CLI, not found) + warning: keepassxc-cli (KeePassXC CLI, not found) + warning: lpass (LastPass CLI, not found) + warning: pass (pass CLI, not found) + warning: vault (Vault CLI, not found) + [root@a6e273a8d010 ~]# +``` + +You can use either of these clients, or a [generic client][6], or your system’s [Keyring][7]. + +For GPG, you will need to add the following to your config using: + +``` +$ chezmoi edit-config +``` + +``` +[gpg] + recipient = " Date: Sat, 4 Apr 2020 01:43:28 +0800 Subject: [PATCH 147/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200404=20Best?= =?UTF-8?q?=20Raspberry=20Pi=20Operating=20Systems=20for=20Various=20Purpo?= =?UTF-8?q?ses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200404 Best Raspberry Pi Operating Systems for Various Purposes.md --- ... Operating Systems for Various Purposes.md | 296 ++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 sources/tech/20200404 Best Raspberry Pi Operating Systems for Various Purposes.md diff --git a/sources/tech/20200404 Best Raspberry Pi Operating Systems for Various Purposes.md b/sources/tech/20200404 Best Raspberry Pi Operating Systems for Various Purposes.md new file mode 100644 index 0000000000..f4b09c9dbc --- /dev/null +++ b/sources/tech/20200404 Best Raspberry Pi Operating Systems for Various Purposes.md @@ -0,0 +1,296 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Best Raspberry Pi Operating Systems for Various Purposes) +[#]: via: (https://itsfoss.com/raspberry-pi-os/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Best Raspberry Pi Operating Systems for Various Purposes +====== + +[Raspberry Pi][1] is an indispensable single-board computer that comes in handy for a lot of work. Don’t believe me? Just [go through this list of Raspberry Pi projects][2] to get a gist of what this tiny device is capable of. + +Considering how useful a Raspberry Pi is – it is an important task to choose the right operating system for it. Of course, you can do a lot of things with Linux but an OS specially configured for a specific purpose can save you considerable time and effort. + +So, in this article, I will be mentioning some of the popular and useful operating systems tailored for Raspberry Pi. + +### Installing any OS on Raspberry Pi is really easy thanks to the Raspberry Pi Imager tool + +[Installing a Raspberry PI operating system on an SD card][3] is easier than ever before. You can simply get the [Raspberry Pi Imager][4] and get any Raspberry Pi OS installed quickly. Check the official video to see how easy it is. + +You may also utilize [NOOBS][5] (New Out Of the Box Software) to easily install different operating systems on Raspberry Pi. You might also get a pre-installed SD card from the list of their supported retailers mentioned in their [official NOOBS download page][5]. + +Feel free to explore more about installing the operating systems in their [official documentation][6]. + +[Raspberry Pi OS Download][4] + +Now that you know how to install it (and where to get it from), let me highlight a list of useful Raspberry Pi OS to help you out. + +### Various operating systems for Raspberry Pi + +Please keep in mind that I have taken some effort to list only those Raspberry Pi operating system projects that are being actively maintained. If a project gets discontinued in near future, let me know in the comment section and I’ll update this article. + +Another thing is that I have focused on the latest Raspberry 4 but this should not be considered a list of Raspberry Pi 4 OS. You should be able to use it on Raspberry Pi 3, 3 B+ and other variants as well but please check the official project websites for the exact details. + +**Note:** The list is in no particular order of ranking. + +#### 1\. Raspbian OS: The official Raspberry Pi OS + +![][7] + +Raspbian is the officially supported OS for Raspberry Pi boards. It comes baked in with several tools for education, programming, and general use. Specifically, it includes Python, Scratch, Sonic Pi, Java, and several other important packages. + +Originally, Raspbian is based on Debian and comes pre-installed with loads of useful packages. So, when you get this installed, you probably don’t need to install essentials separately – you should find almost everything pre-installed. + +Raspbian OS is actively maintained and it is one of the most popular Raspberry Pi OS out there. You can install it using [NOOBS][5] or follow the [official documentation][6] to get it installed. + +[Raspbian OS][8] + +#### 2\. Ubuntu MATE: For general purpose computing + +![][9] + +Even though Raspbian is the officially supported OS, it does not feature the latest and greatest packages. So, if you want quicker updates and potentially latest packages, you can try Ubuntu MATE for Raspberry Pi. + +Ubuntu MATE tailored as a Raspberry Pi OS is an incredibly lightweight distribution to have installed. It’s also popularly used on [NVIDIA’s Jetson Nano][10]. In other words, you can utilize it for several use-cases with the Raspberry Pi. + +To help you out, we also have a detailed guide on [how to install Ubuntu MATE on Raspberry Pi][11]. + +[Ubuntu MATE for Raspberry Pi][12] + +#### 3\. Ubuntu Server: To use it as a Linux server + +![][13] + +If you’re planning to use your Raspberry Pi as some sort of server for your project, Ubuntu Server can be a great choice to have installed. + +You can find both 32-bit and 64-bit images of the OS. And, depending on what board you have (if it supports 64-bit), you can go ahead and install the same. + +However, it is worth noting that Ubuntu Server isn’t tailored for desktop usage. So, you need to keep in mind that you will have no proper graphical user interface installed by default. + +[Ubuntu Server][14] + +#### 4\. LibreELEC: For media server + +![][15] + +While we already have a list of [media server software available for Linux][16], LibreELEC is one of them. + +It’s a great lightweight OS system capable enough to have [KODI][17] on your Raspberry Pi. You can try installing it using the Raspberry Pi Imager. + +You can easily head to their [official download webpage][18] and find a suitable installer image for your board. + +[LibreELEC][19] + +#### 5\. OSMC: For media server + +![][20] + +OSMC is yet another [popular media server software][16] for Linux. While considering the use of Raspberry Pi boards as media center devices, this is one of the best Raspberry Pi OS that you can recommend to someone. + +Similar to LibreELEC, OSMC also runs KODI to help you manage your media files and enjoy watching the content you already have. + +OSMC does not officially mention the support for **Raspberry Pi 4**. So, if you have Raspberry Pi 3 or lower, you should be good to go. + +[OSMC][21] + +#### 6\. RISC OS: The original ARM OS + +![][22] + +Originally crafted for ARM devices, RISC OS has been around for almost 30 years or so. + +We also have a separate detailed article on [RISC OS][23], if you’re curious to know more about it. Long story short, RISC OS is also tailored for modern ARM-based single-board computers like the Raspberry Pi. It presents a simple user interface with a focus on performance. + +Again, this is not something meant for the Raspberry Pi 4. So, only if you have a Raspberry Pi 3 or lower, you can give it a try. + +[RISC OS][24] + +#### 7\. Mozilla WebThings Gateway: For IoT projects + +![][25] + +As part of Mozilla’s [open-source implementation for IoT devices][26], WebThings Gateway lets you monitor and control all your connected IoT devices. + +You can follow the [official documentation][27] to check the requirements and the instructions to get it installed on a Raspberry Pi. Definitely, one of the most useful Raspberry Pi OS for IoT applications. + +[WebThings Gateway][28] + +#### 8\. Ubuntu Core: For IoT projects + +Yet another Raspberry Pi OS for potential [IoT][29] applications or just to simply test snaps – Ubuntu Core. + +Ubuntu core is specifically tailored for IoT devices or specifically Raspberry Pi, here. I wouldn’t make any claims about it- but Ubuntu Core is a suitable secure OS for Raspberry Pi boards. You can give this a try for yourself! + +[Ubuntu Core][30] + +#### 9\. DietPi: Lightweight Raspberry Pi OS + +![DietPi Screenshot via Distrowatch][31] + +DietPi is a lightweight [Debian][32] operating system that also claims to be lighter than the “Raspbian Lite” OS. + +While considering it as a lightweight Raspberry Pi OS, it offers a lot of features that could come in handy for several use-cases. Ranging from easy installers for software packages to a backup solution, there’s a lot to explore. + +If you’re aiming to get an OS with a low footprint but potentially better performance, you could give this a try. + +[DietPi][33] + +#### 10\. Lakka Linux: Make a retro gaming console + +![][34] + +Looking for a way to turn your Raspberry Pi to a retro gaming console? + +Lakka Linux distribution is originally built on the RetroArch emulator. So, you can have all your retro games on your Raspberry Pi in no time. + +We also have a separate article on [Lakka Linux][35] – if you’re curious to know about it. Or else, just go right ahead and test it out! + +[Lakka][36] + +#### 11\. RetroPie: For retro gaming + +![ ][37] + +RetroPie is yet another popular Raspberry Pi OS that turns it into a retro gaming console. It features several configuration tools so that you can customize the theme or just tweak the emulator to have the best retro games. + +It is worth noting that it does not include any copyrighted games. You can give it a try and see how it works! + +[RetroPie][38] + +#### 12\. Kali Linux: For hacking on budget + +![][39] + +Want to try and learn some ethical hacking skills on your Raspberry Pi? Kali Linux can be a perfect fit for it. And, yes, it usually supports the latest Raspberry Pi as soon as it launches. + +Not just limited to Raspberry Pi, but you can get a long list of other supported devices as well. Try it out and have fun! + +[Kali Linux][40] + +#### 13\. OpenMediaVault: For Network Attached Storage (NAS) + +![][41] + +If you’re trying to set up a [NAS][42] (Network Attached Storage) solution on minimal hardware, Raspberry Pi can help. + +Originally, based on Debian Linux, OpenMediaVault offers a bunch of features that include web-based administration capabilities, plugin support, and more. It does support most of the Raspberry Pi models – so you can try downloading it and get it installed! + +[OpenMediaVault][43] + +#### 14\. ROKOS: For crypto mining + +![][44] + +If you’re someone who’s interested in cryptocurrencies and bitcoins specifically, this could interest you. + +ROKOS is a Debian-based OS that basically lets you turn your Raspberry Pi into a node while having pre-installed drivers and packages for the same. Of course, you need to know how it works before getting it installed. So, I suggest you do some research if you’re not sure what you’re doing. + +[ROKOS][45] + +#### 15\. Alpine Linux: Lightweight security-focused Linux + +Nowadays, a lot of users are usually looking for security-focused and [privacy-focused distributions][46]. And, if you are one of them, you might as well try Alpine Linux for Raspberry Pi. + +It may not be as user-friendly as you’d expect (or beginner-friendly) if you’re just getting started with Raspberry Pi. But, if you want something different to start with, you can try Alpine Linux, which is a security-focused Linux distribution. + +[Alpine Linux][47] + +#### 16\. Kano OS: Operating system for kids’education + +![][48] + +If you’re looking for an open-source OS for Raspberry Pi to make things interesting to learn and educate kids, Kano OS is a good choice. + +It’s being actively maintained and the user experience for the desktop integration on Kano OS is quite simple and fun for someone to play and make kids learn from it. + +[Kano OS][49] + +#### 17\. KDE Plasma Bigscreen: To convert regular TVs into Smart TVs + +![][50] + +This is an under development project from KDE. With [KDE Plasma Bigscreen OS][51] installed on Raspberry Pi, you can use your regular TV like a smart TV. + +You don’t need a special remote to control the TV. You can use the regular remote control. + +Plasma Bigscreen also integrates [MyCroft open source AI][52] for voice control. + +The project is in beta phase so expect some bugs and issues if you are willing to give it a try. + +[Plasma Bigscreen][53] + +#### Wrapping Up + +I’m sure there are a lot of other operating systems tailored for Raspberry Pi – but I’ve tried to list the most popular or the useful ones that are actively maintained. + +If you think I missed one of best suited Raspberry Pi OS, feel free to let me know about it in the comments below! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/raspberry-pi-os/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://www.raspberrypi.org/ +[2]: https://itsfoss.com/raspberry-pi-projects/ +[3]: https://itsfoss.com/tutorial-how-to-install-raspberry-pi-os-raspbian-wheezy/ +[4]: https://www.raspberrypi.org/downloads/ +[5]: https://www.raspberrypi.org/downloads/noobs/ +[6]: https://www.raspberrypi.org/documentation/installation/installing-images/README.md +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/06/raspbian_home_screen.jpg?resize=800%2C492&ssl=1 +[8]: https://www.raspbian.org/ +[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/04/Desktop-ubuntu.jpg?resize=800%2C600&ssl=1 +[10]: https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-nano/ +[11]: https://itsfoss.com/ubuntu-mate-raspberry-pi/ +[12]: https://ubuntu-mate.org/raspberry-pi/ +[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubunt-server.png?ssl=1 +[14]: https://ubuntu.com/download/raspberry-pi +[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/02/libreelec.jpg?resize=800%2C600&ssl=1 +[16]: https://itsfoss.com/best-linux-media-server/ +[17]: https://kodi.tv/ +[18]: https://libreelec.tv/downloads_new/ +[19]: https://libreelec.tv/ +[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/osmc-server.jpg?resize=800%2C450&ssl=1 +[21]: https://osmc.tv/ +[22]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2018/10/riscos5.1.jpg?resize=800%2C600&ssl=1 +[23]: https://itsfoss.com/risc-os-is-now-open-source/ +[24]: https://www.riscosopen.org/content/ +[25]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/web-things-gateway.png?ssl=1 +[26]: https://iot.mozilla.org/about/ +[27]: https://iot.mozilla.org/docs/gateway-getting-started-guide.html +[28]: https://iot.mozilla.org/gateway/ +[29]: https://en.wikipedia.org/wiki/Internet_of_things +[30]: https://ubuntu.com/download/raspberry-pi-core +[31]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/diet-pi.jpg?ssl=1 +[32]: https://www.debian.org/ +[33]: https://dietpi.com/ +[34]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2016/08/lakkaos.jpg?resize=1024%2C640&ssl=1 +[35]: https://itsfoss.com/lakka-retrogaming-linux/ +[36]: http://www.lakka.tv/ +[37]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/retro-pie.png?ssl=1 +[38]: https://retropie.org.uk/ +[39]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/kali-linux-pi.png?ssl=1 +[40]: https://www.offensive-security.com/kali-linux-arm-images/ +[41]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/openmediavault.jpg?ssl=1 +[42]: https://en.wikipedia.org/wiki/Network-attached_storage +[43]: https://www.openmediavault.org/ +[44]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/rocos-bitcoin-pi.jpg?ssl=1 +[45]: https://rokos.space/ +[46]: https://itsfoss.com/privacy-focused-linux-distributions/ +[47]: https://alpinelinux.org/ +[48]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/kano-os-pi.jpeg?ssl=1 +[49]: https://kano.me/row/downloadable +[50]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/plasma-bigscreen-menu.jpg?ssl=1 +[51]: https://itsfoss.com/kde-plasma-bigscreen/ +[52]: https://itsfoss.com/mycroft-mark-2/ +[53]: https://plasma-bigscreen.org/#download-jumpto From d23f034925750f9fba6caaf674be9e887222e27e Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:44:23 +0800 Subject: [PATCH 148/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200404=20Bodhi?= =?UTF-8?q?=20Linux=205.1=20Review:=20Slightly=20Different=20Lightweight?= =?UTF-8?q?=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200404 Bodhi Linux 5.1 Review- Slightly Different Lightweight Linux.md --- ...w- Slightly Different Lightweight Linux.md | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 sources/tech/20200404 Bodhi Linux 5.1 Review- Slightly Different Lightweight Linux.md diff --git a/sources/tech/20200404 Bodhi Linux 5.1 Review- Slightly Different Lightweight Linux.md b/sources/tech/20200404 Bodhi Linux 5.1 Review- Slightly Different Lightweight Linux.md new file mode 100644 index 0000000000..d4892ffbcc --- /dev/null +++ b/sources/tech/20200404 Bodhi Linux 5.1 Review- Slightly Different Lightweight Linux.md @@ -0,0 +1,129 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Bodhi Linux 5.1 Review: Slightly Different Lightweight Linux) +[#]: via: (https://itsfoss.com/bodhi-linux-review/) +[#]: author: (John Paul https://itsfoss.com/author/john/) + +Bodhi Linux 5.1 Review: Slightly Different Lightweight Linux +====== + +Bodhi Linux is a [lightweight Linux distribution][1] based on Ubuntu. Unlike most other distributions, Bodhi uses its own Moksha desktop and focuses on providing you a minimal setup to run on older computers. + +### What is Bodhi Linux? + +![Bodhi Start Page][2] + +[Bodhi Linux][3] was first introduced in 2011. It is designed with “[minimalism, resource efficiency, and user choice][4]” in mind. The devs strove to provide a “[system that is functional but not bloated][5]“. As such, it uses the lightweight Moksha Desktop and has only the basic applications preinstalled. The idea is to give the user a stable platform to build the system that they want. It is based on the latest Ubuntu LTS. + +### Moksha Desktop + +![Bodhi Desktop][6] + +Originally Bodhi shipped with the [Enlightenment desktop environment][7]. Bodhi Linux has long been known as the “Enlightened” Linux distro. In fact, the word ‘bodhi’ is based on the Sanskrit word for “enlightenment”. + +However, that changed when Enlightenment 18 was released. The release was in such bad shape that it was not included in Bodhi. Enlightenment 19 was released and fixed some of the problems, but still had issues. + +After trying to work with the Enlightenment dev team and getting nowhere, the Bodhi devs [forked][8] Enlightenment 17 in 2015. The new desktop environment would be named [Moksha][9], which is based on the Sanskrit word for “emancipation, liberation, or release”. You can find the code for it on [GitHub][10]. + +### What is new in 5.1.0? + +[Subscribe to our YouTube channel for more Linux videos][11] + +[Bodhi 5.1.0][12] is the first release in two years and the second release to be based on Ubuntu 18.04. Besides updating packages, it also has new default icons and theme. This release makes several changes to the default applications. Leafpad comes preinstalled instead of epad and [GNOME Web][13] (also known as Epiphany) replaces [Midori][14]). The eepDater system updater was removed. + +There are currently [four different versions][15] of Bodhi 5.1.0 available to [download][16]: Standard, Hwe, Legacy, and AppPack. + + * Standard will work for systems made in the last decade. It does not push kernel updates. + * Hwe (Hardware Enablement) edition is new to the Bodhi family and is designed to include support for newer hardware and will received kernel updates. The 5.1 release features the 5.3.0-42 kernel. + * Legacy is the only edition that is 32-bit. It uses the “older 4.9.0-6-686 Linux kernel that is optimized for old (15+ years old) hardware. This kernel also does not include the PAE extension which is not supported on many older systems.” + * The AppPack edition is for those who want a fully-loaded system out of the box and comes with many applications preinstalled. + + + +### System Requirements for Bodhi Linux + +Minimum system requirement + + * 500 MHz processor + * 256 MB of RAM + * 5 GB of drive space + + + +Recommended system requirement + + * 1.0 GHz processor + * 512 MB of RAM + * 10 GB of drive space + + + +### Experiencing Bodhi Linux + +![Old Bodhi Linux][17] + +Since it is based on Ubuntu, installing Bodhi was very simple. After I signed into Bodhi, I was surprised by the new theme and icon set. The last time I installed Bodhi (including 5.0 a couple of months ago) I thought that it needed a new look. There was nothing really wrong with the previous theme, but it looked like something from the early 2000. The new theme gives it a more modern look. + +![Bodhi Linux 5.1][18] + +I was also glad to see that Midori had been replaced by GNOME Web. I’m not a fan of [Midori browser][19]. It always seemed too minimal for me. (However, that might change in the future with [Midori Next][20].) Web felt more like the web browser I need. Most importantly it comes with Firefox Sync, so I can keep all of my bookmarks and passwords synced. + +Unlike many Linux distros, Bodhi doesn’t really come with a stand-alone software center. Instead, if you click the AppCenter icon it opens the browser and navigates to the [AppCenter p][21][a][21][ge][21] of the Bodhi website. Here apps are sorted by category. Most of them are [lightweight applications][22]. + +![Bodhi Linux Appcenter][23] + +If you click on one of the pages and click “Install”, Bodhi will install it (after to type in your passwords). This is achieved using a neat little program named [apturl][24] that “is a very simple way to install a software package from a web browser”. It’s pretty slick and I wish more Ubuntu-based distros would use it. + +Overall, I like the Moksha desktop. It adheres to the desktop metaphor we have seen for decades (and which I am most comfortable with). It stays out of your way but is very easy to change and modify. The only thing I miss is that the application menu doesn’t open when I hit the super key. But I guess you can’t have everything in life. + +### Final Thoughts + +I was pleasantly surprised by this recent release of Bodhi Linux. In the past, I’ve played with it from time to time. I always liked it, but this last release has been the best so far. In a way, they have broken free of the idea that Bodhi is only for older system by adding support for newer kernels. + +If you are looking for a change of scenery while staying close to the world of Ubuntu give [Bodhi Linux][3] a try. + +Have you ever used Bodhi Linux? What is your favorite Ubuntu-based distro? Please let us know in the comments below. + +If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][25]. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/bodhi-linux-review/ + +作者:[John Paul][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/john/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/lightweight-linux-beginners/ +[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/bodhi-start-page.png?resize=800%2C500&ssl=1 +[3]: https://www.bodhilinux.com/ +[4]: https://www.bodhilinux.com/w/wiki/ +[5]: https://www.bodhilinux.com/w/what-is-bodhi-linux/ +[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/bodhi-desktop.jpg?resize=800%2C500&ssl=1 +[7]: https://www.enlightenment.org/start +[8]: https://www.bodhilinux.com/2015/04/28/introducing-the-moksha-desktop/ +[9]: https://www.bodhilinux.com/moksha-desktop/ +[10]: https://github.com/JeffHoogland/moksha +[11]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[12]: https://www.bodhilinux.com/2020/03/25/bodhi-linux-5-1-0-released/ +[13]: https://wiki.gnome.org/Apps/Web/ +[14]: https://en.wikipedia.org/wiki/Midori_(web_browser +[15]: https://www.bodhilinux.com/w/selecting-the-correct-iso-image/ +[16]: https://www.bodhilinux.com/download/ +[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/bodhi.png?resize=800%2C400&ssl=1 +[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/bodhi-Linux-5-1-screenshot.jpg?ssl=1 +[19]: https://itsfoss.com/midori-browser/ +[20]: https://www.midori-browser.org/2020/01/15/midori-next-come-on-yarovi-we-can/ +[21]: https://www.bodhilinux.com/a/ +[22]: https://itsfoss.com/lightweight-alternative-applications-ubuntu/ +[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Bodhi-Linux-AppCenter.png?resize=800%2C500&ssl=1 +[24]: https://wiki.ubuntu.com/AptUrl +[25]: https://reddit.com/r/linuxusersgroup From 95bed27498aed397e912d351a26d5a466449c7ea Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:45:14 +0800 Subject: [PATCH 149/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200404=20What?= =?UTF-8?q?=20is=20Arch=20User=20Repository=20(AUR)=3F=20How=20to=20Use=20?= =?UTF-8?q?AUR=20on=20Arch=20and=20Manjaro=20Linux=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md --- ...ow to Use AUR on Arch and Manjaro Linux.md | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md diff --git a/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md b/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md new file mode 100644 index 0000000000..c9c4ff7340 --- /dev/null +++ b/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md @@ -0,0 +1,140 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What is Arch User Repository (AUR)? How to Use AUR on Arch and Manjaro Linux?) +[#]: via: (https://itsfoss.com/aur-arch-linux/) +[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) + +What is Arch User Repository (AUR)? How to Use AUR on Arch and Manjaro Linux? +====== + +If you have been using [Arch Linux][1] or other distribution based on Arch such as Manjaro, you might have comes across the term AUR. You try to install a new software and someone suggests to install it from AUR. This leaves you confused. + +What is this AUR? Why is it used? How to use AUR? I’ll answer these questions in this article. + +### What is AUR? + +![][2] + +AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users. It contains package descriptions named [PKGBUILDs][3] that allow you to compile a package from source with [makepkg][4] and then install it via [pacman][5] (package manager in Arch Linux). + +The AUR was created to organize and share new packages from the community and to help accelerate popular packages’ inclusion into the [community repository][6]. + +A good number of new packages that enter the official repositories start in the AUR. In the AUR, users are able to contribute their own package builds (PKGBUILD and related files). + +The AUR community has the ability to vote for packages in the AUR. If a package becomes popular enough — provided it has a compatible license and good packaging technique — it may be entered into the community repository directly accessible by pacman. + +In short, AUR is the way for developers to make new software available to Arch Linux users before the software is officially included in Arch repositories. + +### Should you use AUR? What’s the risk involved? + +Using the AUR is like crossing the street. If you proceed with caution you should be fine. + +If you are new to Linux it is advised to not to use the AUR until you build a foundation knowledge about Arch/Manjaro and Linux in general. + +It is true that anyone can upload packages to the AUR but the [Trusted Users][7] (TUs) are charged with keeping an eye on what gets uploaded. Although TUs perform quality control to the uploaded packages, there is in no guarantee that packages in the AUR are well formed or not malicious. + +In practice the AUR seems to be quite safe but in theory it can do some damage, but only if you are not careful. A smart Arch user, **always** inspects PKGBUILDs and *.install files when building packages from the AUR. + +Additionally TUs (Trusted Users) also remove packages in the AUR that are included in core/extra/community so there should be no naming conflicts between them. The AUR will often contain developmental versions of packages (cvs/svn/git/etc) but they will have modified names such as foo-git. + +As for the AUR packages, pacman handles dependency resolution and detects file conflicts so you never have to worry about overwriting files in one package with files from another package unless you use the “–force” option by default. If you do that, you probably have more serious problems than file conflicts. + +### How to use AUR? + +The simplest way to use AUR is through a AUR helper. An [AUR helper][8] is a command line tool (some has GUI as well) that lets you search for packages published on the AUR and install them. + +##### Installing an AUR helper on Arch Linux + +Let’s say you want to use [Yay AUR helper][9]. Make sure that you have git installed on Linux. And then clone the repository, go to the directory and build the package. + +Use these commands one by one for that: + +``` +sudo pacman -S git +sudo git clone https://aur.archlinux.org/yay-git.git +cd yay +makepkg -si +``` + +Once installed, you can use yay command like this to install a package: + +``` +yay -S package_name +``` + +It’s not that you must use AUR helper for installing packages from AUR. Expand the next section to see how to use AUR without AUR helper. + +##### Installing AUR packages without AUR helpers + +If you don’t want to use AUR helper, you can install packages from AUR on your own as well. + +As soon as you find the package you want to install on [AUR page][10] it is advised to confirm “Licence”, “Popularity”, “Last Updated”, “Dependencies” and so on as an extra quality control step. + +``` +git clone [package URL] +cd [package name] +makepkg -si +``` + +For example. let’s say you want to install [telegram desktop package][11]: + +``` +git clone https://aur.archlinux.org/telegram-desktop-git.git +cd telegram-desktop-git +makepkg -si +``` + +#### Enabling AUR support in Manjaro Linux + +AUR isn’t enabled by default and you have to enable it through pamac. My laptop runs [Manjaro][12] Cinnamon but the steps are same for all Manjaro flavors. + +Open Pamac (listed as Add/Remove Software): + +![][13] + +Once you are in pamac go to preferences like shown below. + +![][14] + +In preferences dialog box go to AUR tab, enable the AUR support, enable check for updates and close the dialog box. + +![][15] + +You can now search for packages and those which belong to AUR can be identified by the tag under the package descriptions. + +![][16] + +I hope you find this article useful and keep an eye on social media for upcoming Arch related topics. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/aur-arch-linux/ + +作者:[Dimitrios Savvopoulos][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/dimitrios/ +[b]: https://github.com/lujun9972 +[1]: https://www.archlinux.org/ +[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/what-is-aur.png?ssl=1 +[3]: https://wiki.archlinux.org/index.php/PKGBUILD +[4]: https://wiki.archlinux.org/index.php/Makepkg +[5]: https://wiki.archlinux.org/index.php/Pacman#Additional_commands +[6]: https://wiki.archlinux.org/index.php/Community_repository +[7]: https://wiki.archlinux.org/index.php/Trusted_Users +[8]: https://itsfoss.com/best-aur-helpers/ +[9]: https://github.com/Jguer/yay +[10]: https://aur.archlinux.org/ +[11]: https://aur.archlinux.org/packages/telegram-desktop-git +[12]: https://manjaro.org/ +[13]: https://i1.wp.com/i.imgur.com/kFF6HtW.png?ssl=1 +[14]: https://i0.wp.com/i.imgur.com/47r963A.png?ssl=1 +[15]: https://i1.wp.com/i.imgur.com/UThiDHO.png?ssl=1 +[16]: https://i2.wp.com/i.imgur.com/RM5BKi2.png?ssl=1 From 3bf5932488f8b065f51fa2b272eb862169e2bd45 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:48:45 +0800 Subject: [PATCH 150/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200403=20Buildi?= =?UTF-8?q?ng=20a=20sensing=20prosthetic=20with=20the=20Raspberry=20Pi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md --- ...ensing prosthetic with the Raspberry Pi.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md diff --git a/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md b/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md new file mode 100644 index 0000000000..0eef549525 --- /dev/null +++ b/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md @@ -0,0 +1,85 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Building a sensing prosthetic with the Raspberry Pi) +[#]: via: (https://opensource.com/article/20/4/raspberry-pi-sensebreast) +[#]: author: (Kathy Reid https://opensource.com/users/kathyreid) + +Building a sensing prosthetic with the Raspberry Pi +====== +SenseBreast is an early prototype of a sensing mastectomy prosthetic +based on open hardware. +![Open source doctor.][1] + +_Content advisory: this article contains frank discussions of breast cancer._ + +What's the first question you ask your surgeon when you're discussing reconstruction options after breast cancer? + +"How many USB ports can you give me?" is probably not the one that comes to mind for many people! + +Although the remark was said jokingly, it sparked a thread that would ultimately become [SenseBreast][2]—an early prototype of a sensing mastectomy prosthetic, based on open hardware. + +### How did SenseBreast come about? + +All technology has a history—an origin story of experimentation, missteps, successes, setbacks, and breakthroughs. SenseBreast is no different. SenseBreast was developed as a term project for the Masters of Applied Cybernetics—a highly selective course at the Australian National University's [3A Institute][3]. The mission of the 3Ai is to bring artificial intelligence and cyber-physical systems safely, responsibly, and sustainably to scale. The purpose of the assignment was to explore the nexus between the electronic, virtual world, and the physical, tactile world. + +### What is SenseBreast? + +SenseBreast combines two distinct elements: a cyber component—electronics, sensors, and storage for gathering data, and a physical component—a breast form designed to be worn inside a mastectomy bra. SenseBreast is a rudimentary cyber-physical system. In cyber-physical systems, physical and software components are deeply intertwined and interact in different ways depending on context. + +The SenseBreast draws on a rich heritage of open source hardware and software. Based on the Raspberry Pi 3B+, it uses the Debian-flavored Raspbian operating system, Python to interact with the onboard sensors, and d3.js to visualize the data that the sensors generate. + +Early versions of the SenseBreast used the SenseHAT, but in the true spirit of open source collaboration, I partnered with Australian open source luminary Jon Oxer to develop a custom SenseBreast board. This contains an inertial motion unit (IMU) and temperature, humidity, and pressure sensors, just like the SenseHAT, but in addition, it contains the BME680 volatile gas sensor and a breakout for a heart rate monitor. + +![SenseBreast open hardware board developed by Jon Oxer and Kathy Reid][4] + +SenseBreast is wearable tech, so the physical form of the cyber-physical system is also important. Factors like comfort, texture, and fit in clothing are important in the design of wearables because technology isn't better unless it's better for people! The early attempts at building a housing for SenseBreast were spectacular failures; in fact, the very first iteration was put together using acrylic render and linen cloth, and held together with paper clips—in true hacker style! It wasn't comfortable to wear at all, but it served as a proof point for further exploration. + +![First attempt at creating a breast form using acrylic render covered in linen cloth][5] + +Later iterations used a different approach. This involved taking a cast of a breast, using quick-dry silicone supported by a plaster cast. The resulting mold was then used with slow-setting silicone to create a true-to-life shape. A recess was carved into the form to house the electronic components, and an additional silicone layer was added to protect the wearer's skin from contact with electronics. + +### What did we learn from SenseBreast? + +The key learning from SenseBreast is that data is partial. It only tells part of a story. It can be misleading and untrustworthy, which makes the decisions based on that data unreliable too. For example, the sensor data gathered by SenseBreast was affected by how hard the CPU was working. The graph below plots a sequence of 5 minutes of data from SenseBreast, just after the device has booted. You can see that the temperature decreases over time; this is because the CPU has to work harder as the Raspberry Pi boots, and then cools down after the boot operations are completed. + +![Data visualisation of the readings in SenseBreast using the d3.js library][6] + +These sorts of learnings have implications on a broader scale. + +What if the SenseBreast were not an open source device, but a commercial wearable that stored data about me? What if part of the business model of that company was to sell the data that was harvested? What if my health insurer had access to that data? Or prospective employers? Now, more than ever, it's important that we have private, open solutions for sensing data about ourselves. + +### What's next for the SenseBreast project? + +The SenseBreast is a very early prototype, but it has the potential to develop through many different arcs. It could be used to assess range of movement post-surgery, to research how different garments and fabrics adjust to temperature and humidity, and to identify correlations between ambient air pressure and conditions such as lymphoedema. The path SenseBreast takes will be dependent on the passion, needs, and dedication of the incredible global open source community. + +You can learn more about SenseBreast at [https://sensebreast.org][2] and see my presentation at [linux.conf.au][7] 2020 [here][8]. + +The code for SenseBreast is available on [GitHub][9]. + +Health IT has been surprisingly unwilling to deeply support open source software. Despite the huge... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/raspberry-pi-sensebreast + +作者:[Kathy Reid][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/kathyreid +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourcedoctor.png?itok=fk79NwpC (Open source doctor.) +[2]: https://sensebreast.org/ +[3]: https://3ainstitute.cecs.anu.edu.au/ +[4]: https://opensource.com/sites/default/files/uploads/49427571178_bb5df37c3a_c.jpg (SenseBreast open hardware board developed by Jon Oxer and Kathy Reid) +[5]: https://opensource.com/sites/default/files/uploads/49641040471_6d0cc91619_c.jpg (First attempt at creating a breast form using acrylic render covered in linen cloth) +[6]: https://opensource.com/sites/default/files/uploads/49640513813_5a7d63803a_c.jpg (Data visualisation of the readings in SenseBreast using the d3.js library) +[7]: http://linux.conf.au +[8]: https://www.youtube.com/watch?v=G3QfZ11DCpc. +[9]: https://github.com/KathyReid/sensebreast From fcf1f7e1539972c41af086ee7604d3d3f3793837 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:50:07 +0800 Subject: [PATCH 151/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200402=20Ansibl?= =?UTF-8?q?e=20streaming=20video=20series,=20open=20source=20security=20to?= =?UTF-8?q?ols,=20and=20more=20industry=20trends?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md --- ...ecurity tools, and more industry trends.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md diff --git a/sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md b/sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md new file mode 100644 index 0000000000..d2dba3b1cb --- /dev/null +++ b/sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md @@ -0,0 +1,65 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Ansible streaming video series, open source security tools, and more industry trends) +[#]: via: (https://opensource.com/article/20/4/ansible-security-more-industry-trends) +[#]: author: (Tim Hildred https://opensource.com/users/thildred) + +Ansible streaming video series, open source security tools, and more industry trends +====== +A weekly look at open source community and industry trends. +![Person standing in front of a giant computer screen with numbers, data][1] + +As part of my role as a senior product marketing manager at an enterprise software company with an open source development model, I publish a regular update about open source community, market, and industry trends for product marketers, managers, and other influencers. Here are five of my and their favorite articles from that update. + +## [Ansible 101 by Jeff Geerling: a YouTube streaming series][2] + +> After the incredible response I got from [making my Ansible books free for the rest of March][3] to help people learn new automation skills, I tried to think of some other things I could do to help developers who may be experiencing hardship during the coronavirus pandemic and market upheaval. + +**The impact**: Not everyone is a frontline worker in this crisis, but then not every problem it has created needs one. This is a great example of someone using their resources to help in a unique way. + +## [Open source security tools for cloud and container applications][4] + +> Open-source security tools play an important role in securing your container-based infrastructure. Tools such as Anchore can be used for strong governance capabilities, while on the other hand, Dagda can be used to perform static analysis of known vulnerabilities. Two other tools, OpenSCAP and Clair, also provide good capabilities for vulnerability scanning and compliance management. So, depending upon your business requirements and priorities, you can select the right tool to secure your container investments. + +**The impact**: Containers are Linux, and container security is open source as well. + +## [Cloud cover: Clearing up some misunderstandings about data centres][5] + +> The [carbon footprint of data][6] is becoming more and more of a concern, but there appears to be little economic interest in decreasing the amount of data flowing around the world to mitigate this. In that scenario, finding the most energy-efficient and carbon-neutral ways to run purpose-built data centres could be the only answer. + +**The impact**: I was talking to a colleague who manages a team of virtualization engineers about this very problem. He seemed optimistic about the amount of headway his team could make on improving the energy consumption of things like KVM at the kernel level; though at the moment customers aren't asking for it. I'd guess that if, for example, the price of carbon emissions were to go up for some reason, that situation would change pretty quickly. + +## [Business culture is key in OpenStack network requirements][7] + +> The main question is: What is your [culture][8]? Do you go to a vendor and say, 'Give me your design, tell me what to buy and how to support it'? Starting out, you evaluate systems. What are your options? +> +> If you have siloed folks that work on a particular model of equipment, then OpenStack is probably not for you. If you have people that function at a higher level with some fundamental understanding about the underlying architecture that makes things work, then OpenStack can be very useful for you, and you're much less restricted. + +**The impact:** Not every organization can adopt a given technology. Certainly not without a willingness to change at a fundamental level. + +_I hope you enjoyed this list and come back next week for more open source community, market, and industry trends._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/ansible-security-more-industry-trends + +作者:[Tim Hildred][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/thildred +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr (Person standing in front of a giant computer screen with numbers, data) +[2]: https://www.jeffgeerling.com/blog/2020/ansible-101-jeff-geerling-youtube-streaming-series +[3]: https://www.jeffgeerling.com/blog/2020/you-can-get-my-devops-books-free-rest-month +[4]: http://techgenix.com/open-source-security-tools/ +[5]: https://www.siliconrepublic.com/enterprise/data-centres-seamus-dunne-interxion +[6]: https://www.siliconrepublic.com/machines/data-carbon-footprint +[7]: https://searchnetworking.techtarget.com/feature/Business-culture-is-key-in-OpenStack-network-requirements +[8]: https://whatis.techtarget.com/definition/corporate-culture From 3771c22e142174f7929558f50fb30dadcae27cfd Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:53:14 +0800 Subject: [PATCH 152/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200402=20When?= =?UTF-8?q?=20debugging,=20your=20attitude=20matters?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200402 When debugging, your attitude matters.md --- ...2 When debugging, your attitude matters.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 sources/tech/20200402 When debugging, your attitude matters.md diff --git a/sources/tech/20200402 When debugging, your attitude matters.md b/sources/tech/20200402 When debugging, your attitude matters.md new file mode 100644 index 0000000000..106b40a64a --- /dev/null +++ b/sources/tech/20200402 When debugging, your attitude matters.md @@ -0,0 +1,101 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (When debugging, your attitude matters) +[#]: via: (https://jvns.ca/blog/debugging-attitude-matters/) +[#]: author: (Julia Evans https://jvns.ca/) + +When debugging, your attitude matters +====== + +A while back I wrote [What does debugging a program look like?][1] on what to do when debugging (change one thing at a time! check your assumptions!). + +But I was debugging some CSS last week, and I think that post is missing something important: **your attitude**. + +Now – I’m not a very good CSS developer yet. I’ve never written CSS professionally and I don’t understand a lot of basic CSS concepts (I think I finally understood for the first time recently how `position: absolute` works). And last week I was working on the most complicated CSS project I’d ever attempted. + +While I was debugging my CSS, I noticed myself doing some bad things that I normally would not! I was: + + * making random changes to my code in the hopes that it would work + * googling a lot of things and trying them without understanding what they did + * if something broke, reverting my changes and starting again + + + +This strategy was exactly as effective as you might imagine (not very effective!), and it was because of my attitude about CSS! I had this unusual-for-me belief that CSS was Too Hard and impossible for me to understand. So let’s talk about that attitude a bit! + +### the problem attitude: “this is too hard for me to understand” + +One specific problem I was having was – I had 2 divs stacked on top of one another, and I wanted Div A to be on top of Div B. My model of CSS stacking order at the start of this was basically “if you want Thing A to be on top of Thing B, change the z-index to make it work”. So I changed the z-index of Div A to be 5 or something. + +But it didn’t work! In Firefox, div A was on top, but in Chrome, Div B was on top. Argh! Why? CSS is impossible!!! + +I googled a bit, and I found out that a possible reason z-index might not work was because Div A and Div B were actually in different “stacking contexts”. If that was true, even if I set the z-index of Div A to 999999 it would still not put it on top of Div B. ([here’s a small example of what this z-index problem looks like, though I think my specific bug had some extra complications][2]) + +I thought “man, this stacking context thing seems really complicated, why is it different between Firefox and Chrome, I’m not going to be able to figure this out”. So I tried a bunch of random things a bunch of blog posts suggested, which as usual did not work. + +Finally I gave up this “change random things and pray” strategy and thought “well, what if I just read the documentation on stacking order, maybe it’s not that bad”. + +So I read the [MDN page on stacking order][3], which says: + +> When the z-index property is not specified on any element, elements are stacked in the following order (from bottom to top): +> 1\. The background and borders of the root element +> 2\. Descendant non-positioned blocks, in order of appearance in the HTML +> 3\. Descendant positioned elements, in order of appearance in the HTML + +This is SO SIMPLE! It just depends on the order in the HTML! I put Div A after Div B in the HTML (as a sibling) and it made everything work in both browsers. + +### better attitude: “let’s learn the basics and see if that helps” + +This whole stacking problem turned out to really not be that complicated – all I needed to do was read a very short and simple documentation page to understand how stacking works! + +Of course, computer things are not always this simple (and even in this specific case the [rules about what creates a new stacking context][4] are pretty complicated.). But I did not need to understand those more complicated rules in order to put Div A on top of Div B! I only needed to know the much simpler 3 rules above. + +So – calm down for a second, learn a few of the basics, and see if that helps. + +### watching people who know what they’re doing is inspiring + +Another area of CSS that I thought was “too hard” for me to understand was this whole `position: absolute` and `position: relative` business. I kept seeing (and sometimes using!) examples where people made complicated CSS things with `position: absolute` but I didn’t understand how they worked. Doesn’t `position: absolute` mean that the element is always in the same place on the screen? Why are these `position: absolute` things moving when I scroll like the rest of the document? (spoiler: no, that’s `position: fixed`.) + +But last week, I paired with someone who’s a lot better at CSS than me on some code, and I saw that they were just typing in `position: absolute` and `position: relative` confidently into their code without seeming confused about it!! Could that be me? + +I looked up the [documentation on MDN][5] on `position: absolute`, and it said: + +> The element is removed from the normal document flow, and no space is created for the element in the page layout. It is positioned relative to its closest positioned ancestor… Its final position is determined by the values of top, right, bottom, and left. + +So things with `position: absolute` are positioned relative to their closest positioned ancestor! And you just use `top/bottom/right/left` to pick where! That’s so simple! + +### documentation that you can trust makes a big difference + +I think another big source of my frustration with CSS is that I didn’t have the best grasp of where to find accurate information & advice. I knew that MDN was a reliable reference, but MDN doesn’t really help answer questions like “ok but seriously how do I center a div???” and I found myself reading a lot of random Stack Overflow answers/blog posts that I wasn’t 100% sure were correct. + +This week I learned about [CSS Tricks][6] which has a lot of GREAT articles like [Centering in CSS: A Complete Guide][7] which seems very reputable and is written in a super clear way. + +### that’s all! + +I don’t really know why I started to believe that it was “impossible” to understand basic CSS concepts since I don’t believe that about computers in general. Maybe because I’ve been writing CSS at a beginner level for a very long time but hadn’t ever really tried to do a more involved CSS project than “let’s arrange some divs in a grid with flexbox”! + +But this attitude really got in the way of me writing the CSS I wanted to write! And once I let go of it and used my normal debugging techniques I was able to get a lot more things to work the way I wanted. + +-------------------------------------------------------------------------------- + +via: https://jvns.ca/blog/debugging-attitude-matters/ + +作者:[Julia Evans][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://jvns.ca/ +[b]: https://github.com/lujun9972 +[1]: https://jvns.ca/blog/2019/06/23/a-few-debugging-resources/ +[2]: https://codepen.io/jvns-css-fun/pen/YzXMMdQ +[3]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index +[4]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context +[5]: https://developer.mozilla.org/en-US/docs/Web/CSS/position +[6]: https://css-tricks.com +[7]: https://css-tricks.com/centering-css-complete-guide/ From 1e87d41d23b33de0f9e3f93fdd74dcc0f0839f40 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Sat, 4 Apr 2020 01:55:27 +0800 Subject: [PATCH 153/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200403=20Schedu?= =?UTF-8?q?ling=20tasks=20on=20Linux=20using=20the=20at=20command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200403 Scheduling tasks on Linux using the at command.md --- ...ing tasks on Linux using the at command.md | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 sources/tech/20200403 Scheduling tasks on Linux using the at command.md diff --git a/sources/tech/20200403 Scheduling tasks on Linux using the at command.md b/sources/tech/20200403 Scheduling tasks on Linux using the at command.md new file mode 100644 index 0000000000..090ae1620a --- /dev/null +++ b/sources/tech/20200403 Scheduling tasks on Linux using the at command.md @@ -0,0 +1,162 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Scheduling tasks on Linux using the at command) +[#]: via: (https://www.networkworld.com/article/3535808/scheduling-tasks-on-linux-using-the-at-command.html) +[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) + +Scheduling tasks on Linux using the at command +====== +The at command makes it easy to schedule Linux tasks to be run at any time or date you choose. Check out what it can do for you. +romkaz / Getty Images + +When you want commands or scripts to run at some particular time, you don’t have to sit with your fingers hovering over the keyboard waiting to press the enter key or even be at your desk at the right time. Instead, you can set your task to be run through the **at** command. In this post, we’ll look at how tasks are scheduled using **at**, how you can precisely select the time you want your process to run and how to view what’s been scheduled to run using **at**. + +### at vs cron + +For those who’ve been scheduling tasks on Linux systems using **cron**, the **at** command is something like **cron** in that you can schedule tasks to run at a selected time, but **cron** is used for jobs that are run periodically – even if that means only once a year. Most **cron** jobs are set up to be run daily, weekly or monthly, though you control how often and when. + +The **at** command, on the other hand, is used for tasks which are run only once. Want to reboot your system at midnight tonight? No problem, **at** can do that for you assuming you have the proper permissions. If you want the system rebooted every Saturday night at 2 a.m., use **cron** instead. + +### Using at + +The **at** command is easy to use ,and there are only a few things to remember. A simple use of **at** might look like this: + +``` +$ at 5:00PM +at> date >> thisfile +at> +``` + +After typing “at” and the time the command should be run, **at** prompts you for the command to be run (in this case, the **date** command). Type **^D** to complete your request. + +Assuming we set up this **at** command earlier than 5 p.m., the date and time will be added to the end of a file named “thisfile” later the same day. Otherwise, the command will run at 5 p.m. the following day. + +You can enter more than one command when interacting with the **at** command. If you want more than one command to be run at the same time, simply specify more than one command line: + +[][1] + +``` +$ at 6:22 +warning: commands will be executed using /bin/sh +at> echo first >> thisfile +at> echo second >> thisfile +at> +``` + +In the commands above, we’re using a regular user account and adding some simple text to a file in that user’s home directory. If it’s after 6:22 a.m. when this command is run, the command will run the following day because 6:22 is taken to mean 6:22 a.m. If you want it to run at 6:22 p.m., either use 6:22 PM or 18:22. “6:22 PM” also works. + +You can use **at** to schedule commands to run on specific dates either by specifying the dates or specifying dates and times like “10:00AM April 15 2021” or “noon + 5 days” (run at noon five days from today). Here are some examples: + +``` +at 6PM tomorrow +at noon April 15 2021 +at noon + 5 days +at 9:15 + 1000 days +``` + +After you specify the command to run and press **^D**, you will notice that the **at** command has assigned a job number to each request. This number will show up in the **at** command's job queue. + +``` +$ at noon + 1000 days +warning: commands will be executed using /bin/sh +at> date >> thisfile +at> +job 36 at Tue Dec 27 12:00:00 2022 <== job # is 36 +``` + +### Checking the queue + +You can look at the queue of **at** jobs with the **atq** (at queue) command: + +``` +$ atq +32 Thu Apr 2 03:06:00 2020 a shs +35 Mon Apr 6 12:00:00 2020 a shs +36 Tue Dec 27 12:00:00 2022 a shs +34 Thu Apr 2 18:00:00 2020 a shs +``` + +If you need to cancel one of the jobs in the queue, use the **atrm** (at remove) command along with the job number. + +``` +$ atrm 32 +$ atq +35 Mon Apr 6 12:00:00 2020 a shs +36 Tue Dec 27 12:00:00 2022 a shs +34 Thu Apr 2 18:00:00 2020 a shs +``` + +You can look into the details of a scheduled task using the **at -c** command. Additional details (the active search path, etc.) are also available, but the bottom lines of the output will show you what command has been scheduled to run. + +``` +$ at -c 36 | tail -6 +cd /home/shs || { + echo 'Execution directory inaccessible' >&2 + exit 1 +} +date >> thisfile +``` + +Notice that the command shown begins with testing whether the user’s directory can be entered with a **cd** command. The job will exit with an error if this is not the case. Otherwise the command specified when the **at** command was issued will be run. Read the command as "move into /home/shs OR exit with the error shown". + +### Running jobs as root + +To run **at** jobs as root, simply use **sudo** with your **at** command like this: + +``` +$ sudo at 8PM +[sudo] password for shs: +warning: commands will be executed using /bin/sh +at> reboot now +at> +job 37 at Wed Apr 1 16:00:00 2020 +``` + +Notice that the root task shows up in the queue with **root** as the one to execute it. + +``` +35 Mon Apr 6 12:00:00 2020 a shs +36 Tue Dec 27 12:00:00 2022 a shs +37 Wed Apr 1 20:00:00 2020 a root <== +``` + +### Running scripts + +You can also use the **at** command to run scripts. Here's an example: + +``` +$ at 4:30PM +warning: commands will be executed using /bin/sh +at> bin/tryme +at> +``` + +### Denying use of the at command + +The **/etc/at.deny** file provides a way to disallow users from being able to make use of the **at** command. By default, it will probably include a list of disallowed accounts like **ftp** and **nobody**. An **/etc/at.allow** file could be used to do the opposite but, generally, only the **at.deny** file is configured. + +**Wrap-Up** + +The **at** command is very versatile and easy to use when you want to schedule a one-time task – even if you want it to run this afternoon or years in the future. + +Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. + +-------------------------------------------------------------------------------- + +via: https://www.networkworld.com/article/3535808/scheduling-tasks-on-linux-using-the-at-command.html + +作者:[Sandra Henry-Stocker][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ +[b]: https://github.com/lujun9972 +[1]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) +[2]: https://www.facebook.com/NetworkWorld/ +[3]: https://www.linkedin.com/company/network-world From 224d59ceac3b51571f22f3a28c41dadd67613ba5 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 4 Apr 2020 11:29:57 +0800 Subject: [PATCH 154/218] PRF @geekpi --- translated/tech/20190605 What is GraphQL.md | 84 ++++++++++----------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/translated/tech/20190605 What is GraphQL.md b/translated/tech/20190605 What is GraphQL.md index 0f005efd40..ab1765d855 100644 --- a/translated/tech/20190605 What is GraphQL.md +++ b/translated/tech/20190605 What is GraphQL.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (What is GraphQL?) @@ -9,100 +9,98 @@ 什么是 GraphQL? ====== -GraphQL 是一种查询语言、执行引擎和规范,它让开发人员重新思考如何构建客户端和 API - 应用。 -![Analytics: Charts and Graphs][1] -GraphQL 是当今软件技术中最大的流行语之一。但它_实际上_是什么?它是像 [SQL][2] 这样的查询语言吗?像 [JVM][3] 这样的执行引擎?像 [XML][4] 这样的规范? +> GraphQL 是一种查询语言、一个执行引擎,也是一种规范,它让开发人员重新思考如何构建客户端和 API 应用。 -如果你的回答是上面这些,那么你是对的![GraphQL][5] 是查询语言语法、编程语言无关的执行引擎和不断发展的规范。 +![](https://img.linux.net.cn/data/attachment/album/202004/04/112938odz6sbw6hzwsh7f6.jpg) -让我们深入了解 GraphQL 如何成为这些,并了解人们为什么对此感到兴奋。 +GraphQL 是当今软件技术中最大的流行语之一。但它*究竟*是什么?是像 [SQL][2] 一样的查询语言吗?是像 [JVM][3] 这样的执行引擎?还是像 [XML][4] 这样的规范? + +如果你回答上面这些都是,那么你是对的![GraphQL][5] 是一种查询语言的语法、是一种编程语言无关的执行引擎,也是一种不断发展的规范。 + +让我们深入了解一下 GraphQL 如何成为所有这些东西的,并了解一下人们为什么对它感到兴奋。 ### 查询语言 -GraphQL 作为查询语言似乎是合理的—”QL“ 似乎足够重要,毕竟它出现在名称中。但是我们在查询什么?查看示例查询请求和相应的响应可能会有所帮助。 +GraphQL 作为查询语言似乎是合理的 —— 毕竟 “QL” 似乎重要到出现在名称中。但是我们查询什么呢?看一个示例查询请求和相应的响应可能会有所帮助。 以下的用户查询: - ``` { - user(id: 4) { -   name -   email -   phoneNumber - } + user(id: 4) { +    name +    email +    phoneNumber +  } } ``` 可能会返回下面的 JSON 结果: - ``` { - "user": { -   "name": "Zach Lendon" -   “email”: “[zach@hydrate.io][6]” -   “phoneNumber”: “867-5309” - } +  "user": { +    "name": "Zach Lendon" +    “email”: “zach@hydrate.io” +    “phoneNumber”: “867-5309” +  } } ``` -想象一下,客户端应用查询用户详细信息,获取结果,并使用它填充配置文件。作为查询语言,GraphQL 的核心优势之一是客户端应用可以_只请求它需要_的数据,并期望以一致的方式返回这些数据。 +想象一下,客户端应用查询用户详细信息、获取结果,并使用它填充配置屏幕。作为查询语言,GraphQL 的核心优势之一是客户端应用可以*只请求它需要*的数据,并期望以一致的方式返回这些数据。 -那么_什么_返回了 GraphQL 响应?这就是执行引擎(通常以 GraphQL 服务器的形式)发挥作用的地方。 +那么 GraphQL 响应返回的*什么*呢?这就是执行引擎发挥的作用,通常是以 GraphQL 服务器的形式出现。 ### 执行引擎 ![GraphQL execution engine][7] -GraphQL 执行引擎负责处理 GraphQL 查询并返回 JSON 响应。所有 GraphQL 服务器由两个核心组件组成,分别定义了执行引擎的结构和行为:schema 和解析器。 - -GraphQL schema 是一种自定义类型语言,它公开哪些查询既允许(有效),又由 GraphQL 服务器实现处理。上面用户示例查询的 schema 可能如下所示: +GraphQL 执行引擎负责处理 GraphQL 查询并返回 JSON 响应。所有 GraphQL 服务器由两个核心组件组成,分别定义了执行引擎的结构和行为:模式和解析器。 +GraphQL 模式是一种自定义类型语言,它公开哪些查询既允许(有效),又由 GraphQL 服务器实现处理。上面用户示例查询的模式可能如下所示: ``` type User { -        name: String -        email: String -        phoneNumber: String + name: String +    email: String +    phoneNumber: String } type Query { -        user: User +    user: User } ``` -此 schema 定义返回用户的用户查询。客户端可以通过用户查询请求用户上的任何字段,并且 GraphQL 服务器将仅返回请求的字段。通过使用强类型架构,GraphQL 服务器可以验证传入查询,以确保它们基于定义的 schema 有效。 +此模式定义了一个返回用户的用户查询。客户端可以通过用户查询请求用户上的任何字段,并且 GraphQL 服务器将仅返回请求的字段。通过使用强类型模式,GraphQL 服务器可以根据定义的模式验证传入的查询,以确保是有效的。 -确定查询有效后,它由 GraphQL 服务器的解析器处理。解析器函数支持每个 GraphQL 类型的每个字段。用户查询的示例解析器可能如下所示: +确定查询有效后,就会由 GraphQL 服务器的解析器处理。解析器函数支持每个 GraphQL 类型的每个字段。我们的这个用户查询的示例解析器可能如下所示: ``` Query: { -  user(obj, args, context, info) { -    return context.db.loadUserById(args.id).then( -      userData => new User(userData) -    ) -  } + user(obj, args, context, info) { + return context.db.loadUserById(args.id).then( + userData => new User(userData) + ) + } } ``` -虽然上面的例子是 JavaScript,但 GraphQL 服务器可以用任意语言编写。这是因为 GraphQL 也是_也是_一种规范! +虽然上面的例子是用 JavaScript 编写的,但 GraphQL 服务器可以用任意语言编写。这是因为 GraphQL 也是*也是*一种规范! ### 规范 -GraphQL 规范定义了 GraphQL 实现必须遵循的功能和特性。作为开放网络基金会最终规范协议([OWFa 1.0][8])所提供的开放规范,技术社区可以借此机会查看 GraphQL 实现必须符合规范的要求,并帮助制定 GraphQL 的未来。 +GraphQL 规范定义了 GraphQL 实现必须遵循的功能和特性。作为一个在开放网络基金会的最终规范协议([OWFa 1.0][8])下提供的开放规范,技术社区可以审查 GraphQL 实现必须符合规范的要求,并帮助制定 GraphQL 的未来。 -虽然该规范对 GraphQL 的语法,什么是有效查询以及 schema 进行了非常具体的说明,但它没有提供有关如何存储数据或 GraphQL 服务器应使用哪种编程语言实现的指导。这在软件领域是非常强大且相对独特。它允许以多种编程语言创建 GraphQL 服务器,并且由于它们符合规范,因此客户端将确切知道它们的工作方式。GraphQL 服务器已经有多种语言实现,人们不仅可以期望像 JavaScript、Java和 C# 这样的语言,还可以使用Go、Elixir 和 Haskell 等。服务器实现所使用的语言不会成为采用过程的障碍。它不仅存在多种语言实现,而且它们都是开源的。如果没有你选择的语言的实现,那么可以自己实现。 +虽然该规范对 GraphQL 的语法,什么是有效查询以及模式的工作方式进行了非常具体的说明,但它没有提供有关如何存储数据或 GraphQL 服务器应使用哪种编程语言实现的指导。这在软件领域是非常强大的,也是相对独特的。它允许以各种编程语言创建 GraphQL 服务器,并且由于它们符合规范,因此客户端会确切知道它们的工作方式。GraphQL 服务器已经有多种语言实现,人们不仅可以期望像 JavaScript、Java和 C# 这样的语言,还可以使用 Go、Elixir 和 Haskell 等。服务器实现所使用的语言不会成为采用过程的障碍。它不仅存在多种语言实现,而且它们都是开源的。如果没有你选择的语言的实现,那么可以自己实现。 ### 总结 -GraphQL 是开源 API 领域中一个令人兴奋的,相对较新的参与者。它将查询语言和执行引擎与开源规范结合在一起,它定义了 GraphQL 实现的功能。 +GraphQL 是开源 API 领域中一个令人兴奋的、相对较新的参与者。它将查询语言、执行引擎与开源规范结合在一起,它定义了 GraphQL 实现的外观和功能。 -GraphQL 已经开始改变公司对构建客户端和 API 应用的看法。通过将 GraphQL 作为技术栈的一部分,前端开发人员可以自由查询所需的数据,而后端开发人员可以将客户端应用需求与后端系统架构分离。通常,公司首先通过在其现有后端服务之上构建一个 GraphQL API “层”来使用 GraphQL。这使客户端应用开始获得寻求的性能和运营效率,同时使后端团队有机会在 GraphQL 层后面进行所需的“幕后”更改(如果有)。通常,这些更改将针对优化,这些优化将帮助确保使用 GraphQL 的应用可以尽可能高效地运行。由于 GraphQL 提供了抽象,因此系统团队可以进行更改的同时继续在其 GraphQL API 级别上遵守 GraphQL 的“合约”。 +GraphQL 已经开始改变企业对构建客户端和 API 应用的看法。通过将 GraphQL 作为技术栈的一部分,前端开发人员可以自由地查询所需的数据,而后端开发人员可以将客户端应用需求与后端系统架构分离。通常,公司在使用 GraphQL 的过程中,首先会在其现有的后端服务之上构建一个 GraphQL API “层”。这使得客户端应用开始获得他们所追求的性能和运营效率,同时使后端团队有机会确定他们可能需要在 GraphQL 层后面的“幕后”进行哪些更改。通常,这些更改都是为了优化,这些优化有助于确保使用 GraphQL 的应用可以尽可能高效地运行。由于 GraphQL 提供了抽象性,因此系统团队可以进行更改的同时继续在其 GraphQL API 级别上遵守 GraphQL 的“合约”。 -由于 GraphQL 相对较新,因此开发人员仍在寻找新颖而激动人心的方法来利用它构建更好的软件解决方案。GraphQL 将如何改变你构建应用的方式,它不会辜负宣传吗?只有一种方法可以找到答案。去使用 GraphQL 构建一些东西! +由于 GraphQL 相对较新,因此开发人员仍在寻找新颖而激动人心的方法来利用它构建更好的软件解决方案。GraphQL 将如何改变你构建应用的方式,它是否对得起众望所归?只有一种方法可以找到答案 —— 用 GraphQL 构建一些东西! -------------------------------------------------------------------------------- @@ -111,7 +109,7 @@ via: https://opensource.com/article/19/6/what-is-graphql 作者:[Zach Lendon][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From d40a9d8a07439573ea70545ff9694c1ba14d4a7f Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sat, 4 Apr 2020 11:31:08 +0800 Subject: [PATCH 155/218] PUB @geekpi https://linux.cn/article-12070-1.html --- {translated/tech => published}/20190605 What is GraphQL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190605 What is GraphQL.md (98%) diff --git a/translated/tech/20190605 What is GraphQL.md b/published/20190605 What is GraphQL.md similarity index 98% rename from translated/tech/20190605 What is GraphQL.md rename to published/20190605 What is GraphQL.md index ab1765d855..49d68894b1 100644 --- a/translated/tech/20190605 What is GraphQL.md +++ b/published/20190605 What is GraphQL.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12070-1.html) [#]: subject: (What is GraphQL?) [#]: via: (https://opensource.com/article/19/6/what-is-graphql) [#]: author: (Zach Lendon https://opensource.com/users/zachlendon) From b2776636478a7cd18cfd7a946505c9e291bfced9 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sat, 4 Apr 2020 12:15:44 +0800 Subject: [PATCH 156/218] Rename sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md to sources/news/20200402 Ansible streaming video series, open source security tools, and more industry trends.md --- ...eries, open source security tools, and more industry trends.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => news}/20200402 Ansible streaming video series, open source security tools, and more industry trends.md (100%) diff --git a/sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md b/sources/news/20200402 Ansible streaming video series, open source security tools, and more industry trends.md similarity index 100% rename from sources/tech/20200402 Ansible streaming video series, open source security tools, and more industry trends.md rename to sources/news/20200402 Ansible streaming video series, open source security tools, and more industry trends.md From 3cbb48102c35bdc9f5e9ad879c2b69e3a25c874f Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sat, 4 Apr 2020 12:20:41 +0800 Subject: [PATCH 157/218] Rename sources/tech/20200402 When debugging, your attitude matters.md to sources/talk/20200402 When debugging, your attitude matters.md --- .../20200402 When debugging, your attitude matters.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200402 When debugging, your attitude matters.md (100%) diff --git a/sources/tech/20200402 When debugging, your attitude matters.md b/sources/talk/20200402 When debugging, your attitude matters.md similarity index 100% rename from sources/tech/20200402 When debugging, your attitude matters.md rename to sources/talk/20200402 When debugging, your attitude matters.md From 66d9dd378df0b0ff325d6b9257deb195d75cc0d5 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Sat, 4 Apr 2020 14:29:18 +0800 Subject: [PATCH 158/218] translating --- ...e Keyring Concept in Ubuntu- What is It and How to Use it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index e5eec51802..7026431f0c 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (messon007) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a8eae33d071123e1815676245bf9351fade102f9 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Sat, 4 Apr 2020 14:34:58 +0800 Subject: [PATCH 159/218] translating --- .../20190814 9 open source cloud native projects to consider.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190814 9 open source cloud native projects to consider.md b/sources/tech/20190814 9 open source cloud native projects to consider.md index 8f95262799..b3d31fc7af 100644 --- a/sources/tech/20190814 9 open source cloud native projects to consider.md +++ b/sources/tech/20190814 9 open source cloud native projects to consider.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (messon007) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 9c6ea9e1222cbf7e4c1493cab3ed585e73bde706 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Sat, 4 Apr 2020 14:53:06 +0800 Subject: [PATCH 160/218] translating --- .../20200313 What is the internet backbone and how it works.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20200313 What is the internet backbone and how it works.md b/sources/talk/20200313 What is the internet backbone and how it works.md index 7a163fce7f..8393026255 100644 --- a/sources/talk/20200313 What is the internet backbone and how it works.md +++ b/sources/talk/20200313 What is the internet backbone and how it works.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (messon007) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From ef4a6d01af1874f70c9351b4008b58d31daf50f7 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Sat, 4 Apr 2020 14:57:36 +0800 Subject: [PATCH 161/218] translating --- ...e ins and outs of high-performance computing as a service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20200401 The ins and outs of high-performance computing as a service.md b/sources/talk/20200401 The ins and outs of high-performance computing as a service.md index cbf7a5a44f..0b0a1ac39b 100644 --- a/sources/talk/20200401 The ins and outs of high-performance computing as a service.md +++ b/sources/talk/20200401 The ins and outs of high-performance computing as a service.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (messon007) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From be5797405993ae262c733421ae4f671ebc6b0ee7 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sat, 4 Apr 2020 23:43:12 +0800 Subject: [PATCH 162/218] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20200325 Linux firewall basics with ufw.md | 72 +++++++------------ 1 file changed, 27 insertions(+), 45 deletions(-) rename {sources => translated}/tech/20200325 Linux firewall basics with ufw.md (56%) diff --git a/sources/tech/20200325 Linux firewall basics with ufw.md b/translated/tech/20200325 Linux firewall basics with ufw.md similarity index 56% rename from sources/tech/20200325 Linux firewall basics with ufw.md rename to translated/tech/20200325 Linux firewall basics with ufw.md index c81af35c1e..e281821b70 100644 --- a/sources/tech/20200325 Linux firewall basics with ufw.md +++ b/translated/tech/20200325 Linux firewall basics with ufw.md @@ -7,24 +7,17 @@ [#]: via: (https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) -Linux firewall basics with ufw Linux 防火墙 ufw 简介 ====== -We take a look at ufw - the uncomplicated firewall - on Linux, providing some insights and commands for making changes. -Vertigo3D / Getty Images -我们来看看 ufw - linux 上一个简单的防火墙,它提供了一些见解和进行更改的命令。 +我们来研究下 ufw - linux 上一个简单的防火墙,它为防火墙更改提供了一些见解和命令。 -The **ufw** (uncomplicated firewall) represents a serious simplification to [iptables][1] and, in the years that it’s been available, has become the default firewall on systems such as Ubuntu and Debian. And, yes, **ufw** is surprisingly uncomplicated – a boon for newer admins who might otherwise have to invest a lot of time to get up to speed on firewall management. -**ufw** 可以说是 [iptables][1] 的简化版,在未来几年,它已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且它并不复杂,这对新管理员来说是一个福音,否则他们可能不得不投入大量时间来加快防火墙管理的速度。 +![][0] -GUIs are available for **ufw** (like **gufw**), but **ufw** commands are generally issued on the command line. This post examines some commands for using **ufw** and looks into how it works. -**ufw** 也有 GUI(例如 **gufw**),但是 **ufw** 命令通常在命令行上发布。这篇文章检查了一些使用 **ufw** 的命令,并研究了它的工作方式。 - -First, one quick way to see how **ufw** is configured is to look at its configuration file – **/etc/default/ufw**. In the command below, we display the settings, using **grep** to suppress the display of both blank lines and comments (line starting with #). -首先,查看 **ufw** 配置方式的一种快速方法是查看其配置文件 **/etc/default/ufw**。在下面的命令中,我们显示设置,使用 **grep** 禁止显示空白行和注释(以 # 开头的行), - -[RELATED: Linux hardening: a 15-step checklist for a secure Linux server][2] +**ufw** (简易防火墙)可以说是 [iptables][1] 的简化版,最近几年,它已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 **ufw** 出乎意料的简单,这对新管理员来说是一个福音,否则他们可能不得不投入大量时间来加快防火墙管理的速度。 +**ufw** 也有 GUI 客户端(例如 **gufw**),但是 **ufw** 命令通常在命令行上发出。本文介绍了一些使用 **ufw** 的命令,并研究了它的工作方式。 + +首先,查看 **ufw** 如何配置的一个快速方法是查看其配置文件 -- **/etc/default/ufw**。使用下面的命令可以查看其配置,使用 **grep** 来禁止显示空白行和注释(以 # 开头的行)。 ``` $ grep -v '^#\|^$' /etc/default/ufw IPV6=yes @@ -37,22 +30,16 @@ IPT_SYSCTL=/etc/ufw/sysctl.conf IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" ``` -As you can see, the default policy is to drop input and allow output. Additional rules that allow the connections that you specifically want to be accept are configured separately. -正如你所看到的,默认策略是删除输入并允许输入。允许你专门接受的连接的其它规则是单独配置的。 - -The basic syntax for ufw commands might look like thee below, though this synopsis is not meant to imply that typing only “ufw” will get you further than a quick error telling you that arguments are required. -ufw 命令的基本语法如下所示,尽管该提要并不意味着仅输入 ufw 将使你走的更远,而不是一个快速的错误提示你需要参数。 +正如你所看到的,默认策略是丢弃输入但允许输出。如果你想接受专有连接,你需要单独配置。 +ufw 命令的基本语法如下所示,但是这个概要并不意味着你只需要输入 "ufw" 就能熟悉它,而是通过一个个错误提示来告诉你需要哪些参数。 ``` ufw [--dry-run] [options] [rule syntax] ``` -The **\--dry-run** option means that **ufw** won’t run the command you specify, but will show you the results that you would see if it did. It will, however, display the entire set of rules as they would exist if the change were made, so be prepared for more than a few lines of output. - -To check the status of **ufw**, run a command like the following. Note that even this command requires use of **sudo** or use of the root account. - -[][3] +**\--dry-run** 选项意味着 **ufw** 不会运行你指定的命令,但你会看到它是否执行了的结果。如果进行了更改,它将显示整个规则集,因此你要做好多行输出的准备。 +运行以下命令来检查 **ufw** 的状态。注意,即使此命令也需要使用 **sudo** 或 root 账户。 ``` $ sudo ufw status Status: active @@ -64,15 +51,13 @@ To Action From 9090 (v6) ALLOW Anywhere (v6) ``` -Otherwise, you will see something like this: - +否则,你会看到以下内容: ``` $ ufw status ERROR: You need to be root to run this script ``` -Adding "verbose" provides a few additional details: - +"verbose" 选项将提供一些其它细节: ``` $ sudo ufw status verbose Status: active @@ -87,15 +72,13 @@ To Action From 9090 (v6) ALLOW IN Anywhere (v6) ``` -You can easily allow and deny connections by port number with commands like these: - +你可以使用以下命令轻松地通过端口号允许和拒绝连接: ``` -$ sudo ufw allow 80 <== allow http access -$ sudo ufw deny 25 <== deny smtp access +$ sudo ufw allow 80 <== 允许 http 访问 +$ sudo ufw deny 25 <== 拒绝 smtp 访问 ``` -You can check out the **/etc/services** file to find the connections between port numbers and service names. - +你可以查看 **/etc/services** 文件来找到端口号和服务名称之间的联系。 ``` $ grep 80/ /etc/services http 80/tcp www # WorldWideWeb HTTP @@ -108,7 +91,7 @@ amanda 10080/udp canna 5680/tcp # cannaserver ``` -Alternately, you can use service names like in these commands. +或者,你可以命令中直接使用服务的名称。 ``` $ sudo ufw allow http @@ -119,7 +102,7 @@ Rule added Rule added (v6) ``` -After making changes, you should check the status again to see that those changes have been made: +进行更改后,你应该再次检查状态来查看是否生效: ``` $ sudo ufw status @@ -136,7 +119,7 @@ To Action From 443/tcp (v6) ALLOW Anywhere (v6) <== ``` -The rules that **ufw** follows are stored in the **/etc/ufw** directory. Note that you need root access to view these files and that each contains a large number of rules. +**ufw** 遵循的规则存储在 **/etc/ufw** 目录中,注意,你需要 root 用户访问权限才能查看这些文件,每个文件都包含大量规则。 ``` $ ls -ltr /etc/ufw @@ -154,8 +137,7 @@ drwxr-xr-x 3 root root 4096 Nov 12 08:21 applications.d -rw-r----- 1 root root 1530 Mar 19 10:42 user6.rules ``` -The changes made earlier in this post (the addition of port **80** for **http** access and **443** for **https** (encrypted http) access will look like this in the **user.rules** and **user6.rules** files: - +本文前面所作的更改,为 **http** 访问添加了端口 **80** 和为 **https** 访问添加了端口 **443**,在 **user.rules** 和 **user6.rules** 文件中看起来像这样: ``` # grep " 80 " user*.rules user6.rules:### tuple ### allow tcp 80 ::/0 any ::/0 in @@ -170,15 +152,13 @@ user.rules:### tuple ### allow tcp 443 0.0.0.0/0 any 0.0.0.0/0 in user.rules:-A ufw-user-input -p tcp --dport 443 -j ACCEPT ``` -With **ufw**, you can also easily block connections from a system using a command like this: - +使用 **ufw**,你还可以使用以下命令轻松地阻止来自一个系统的连接: ``` $ sudo ufw deny from 208.176.0.50 Rule added ``` -The status command will show the change: - +status 命令将显示更改: ``` $ sudo ufw status verbose Status: active @@ -198,9 +178,9 @@ Anywhere DENY IN 208.176.0.50 <== new 443/tcp (v6) ALLOW IN Anywhere (v6) ``` -All in all, **ufw** is both easy to configure and easy to understand. +总而言之,**ufw** 不仅容易配置,而且且容易理解。 -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. +加入 [Facebook][4] 和 [LinkedIn][5] 上的网络世界社区,评论最火的主题。 -------------------------------------------------------------------------------- @@ -208,13 +188,15 @@ via: https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[MjSeven](https://github.com/MjSeven) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + [a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ [b]: https://github.com/lujun9972 +[0]: https://images.idgesg.net/images/article/2019/06/cso_network_security_encryption_automation_by_vertigo3d_gettyimages-597931354_2400x1600-100798880-large.jpg [1]: https://www.networkworld.com/article/2716098/working-with-iptables.html [2]: https://www.networkworld.com/article/3143050/linux/linux-hardening-a-15-step-checklist-for-a-secure-linux-server.html#tk.nww-fsb [3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) From f1427aaf25a5e5c987d6199b1df5c61a5c23fd4e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 09:28:05 +0800 Subject: [PATCH 163/218] PRF @geekpi --- ...en source tools for sticking to a budget.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/translated/tech/20200326 3 open source tools for sticking to a budget.md b/translated/tech/20200326 3 open source tools for sticking to a budget.md index 99786659e5..b3c945464b 100644 --- a/translated/tech/20200326 3 open source tools for sticking to a budget.md +++ b/translated/tech/20200326 3 open source tools for sticking to a budget.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (3 open source tools for sticking to a budget) @@ -9,16 +9,18 @@ 3 个控制预算的开源工具 ====== -在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源税收准备软件。 -![A dollar sign in a network][1] -鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想修改或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你不是一个人。 +> 在这篇开源预算工具汇总中找到适合你的解决方案。另外学习有关开源的备税务软件。 + +![](https://img.linux.net.cn/data/attachment/album/202004/05/092735ni323vgji9sbigq9.jpg) + +鉴于目前世界上许多国家/地区的经济形势都在变化,你可能会想改造或改善财务状况和你对它的了解。或者,也许你的新年决心之一是开始预算?你并不孤单。 坚持该决心的最佳方法是定期跟踪你的支出和收入。问题是,许多流行的个人理财应用都是专有的。你是否正在寻找 Quicken、Mint 或 You Need a Budget 的开源替代方案?无论你是开源软件新手,还是预算新手,这些工具之一都将满足你的需求和舒适度。 ### LibreOffice Calc -我建议希望做预算的任何开源新手使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。 +我向希望做预算的任何开源新手推荐使用 LibreOffice Calc。如果你使用过 Google Sheets 或 Microsoft Excel 等专有电子表格,那么 LibreOffice Calc 模板将非常熟悉。在此[预算教程][2]中,作者 Jess Weichler 已经为你提供了方便、可下载的模板。该模板已经有费用类别,例如水电费、杂货、外出就餐等,但是你可以自由地根据自己的生活方式对其进行自定义。在第二篇文章中,她向你展示了如何[创建自己的模板][3]。 ### HomeBank @@ -28,9 +30,9 @@ 就像这里提到的其他预算工具一样,GnuCash 可以在 Windows、macOS 和 Linux 上使用。它提供了大量文档,但 Don Watkins 会在[此教程][5]中指导你在 Linux 上设置 GnuCash。GnuCash 不仅是控制个人财务的绝佳选择,而且还有开发票等功能来帮助你管理小型企业。 -### 额外一个:OpenTaxSolver +### 赠品:OpenTaxSolver -对许多美国人来说,可怕的税收季可能是一个压力大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,存在开源的税务准备软件!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。 +对许多美国人来说,可怕的税收季可能是一个压力很大的时期。许多人购买 TurboTax 或请会计师或税务服务来缴税。与普遍的看法相反,开源的备税务软件是存在的!作者 Jessica Cherry 在[本文][6]中做了研究,并向读者介绍 OpenTaxSolver。要正确使用 OpenTaxSolver,你需要特别注意细节,但是你不必担心进行复杂的数学运算。 你会尝试使用哪个开源预算应用?你是否有我在此列表中未提及的最喜欢的工具?请在评论区分享你的观点。 @@ -41,7 +43,7 @@ via: https://opensource.com/article/20/3/open-source-budget 作者:[Lauren Pritchett][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From d92dec7e31f33bfc8995a473bf0be44bbb010327 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 09:28:36 +0800 Subject: [PATCH 164/218] PUB @geekpi https://linux.cn/article-12072-1.html --- .../20200326 3 open source tools for sticking to a budget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200326 3 open source tools for sticking to a budget.md (98%) diff --git a/translated/tech/20200326 3 open source tools for sticking to a budget.md b/published/20200326 3 open source tools for sticking to a budget.md similarity index 98% rename from translated/tech/20200326 3 open source tools for sticking to a budget.md rename to published/20200326 3 open source tools for sticking to a budget.md index b3c945464b..8504fec779 100644 --- a/translated/tech/20200326 3 open source tools for sticking to a budget.md +++ b/published/20200326 3 open source tools for sticking to a budget.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12072-1.html) [#]: subject: (3 open source tools for sticking to a budget) [#]: via: (https://opensource.com/article/20/3/open-source-budget) [#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) From 32b04c1659a6509fb26f4c7273b75f692320f90c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 10:08:31 +0800 Subject: [PATCH 165/218] PRF @robsean --- ...ype Fonts on Ubuntu-based Distributions.md | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md index f94e89c807..889bab7f26 100644 --- a/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md +++ b/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md @@ -1,16 +1,16 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions) [#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/) -[#]: author: (Community https://itsfoss.com/author/itsfoss/) +[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/itsfoss/) 如何在基于 Ubuntu 的发行版上安装微软 TrueType 字体 ====== -如果你在 Linux 上打开一些微软文档,你将注意到字体会看起来有一点不同。你也将注意到你不能找到一些常见的字体,像 [Times New Roman][1], Arial 等等。 +如果你在 Linux 上用 LibreOffice 打开一些微软文档,你会发现字体看起来有一点不同。你也将注意到有些常用字体找不到,如 [Times New Roman][1]、Arial 等等。 不用担心。我将向你展示如何在 Ubuntu 上和其它基于 Ubuntu 的 Linux 发行版上安装这些字体。但是在此之前,让我告诉你为什么这些字体没有被默认安装。 @@ -18,21 +18,21 @@ ![][2] -Times New Roman, Arial 和其它此类字体归微软所有,并且这些字体不是开源的。很多 Linux 发行版默认不提供专有软件来避免许可证问题。 +Times New Roman、Arial 等字体都是微软的,并且这些字体不是开源的。很多 Linux 发行版默认不提供专有软件,以避免授权问题。 -这就是为什么在默认情况下 Ubuntu 和其它 Linux 发行版使用开源字体 “Liberation fonts” 来替代微软字体的原因。[Red Hat][4] 创建 [Liberation Fonts][3]来代替 Arial, Arial Narrow, Times New Roman 和 Courier New ,如同这些字体的宽度一样。当你打开一个使用 Times New Roman 字体的文档时, 对应的 Liberation Font 将被用来保持文档文字间间隔等距连续。 +这就是为什么在默认情况下 Ubuntu 和其它 Linux 发行版使用开源字体 “Liberation” 字体来替代微软字体的原因。[Red Hat][4] 创建 [Liberation 字体][3] 来代替 Arial、Arial Narrow、 Times New Roman 和 Courier New,因为这些字体的宽度一样。当你打开一个使用 Times New Roman 字体书写的文档时,会使用对应的 Liberation 字体来保持文档不被破坏。 -不过,Liberation fonts 与微软的字体并不是完全相同的,在一些情况下,你可能需要使用 Arial 或 Times New Roman 。一个非常常见的情况是,在学校,大学和其他公共和私人组织中,微软的字体是唯一的选择。他们要求你使用微软字体中的其中一种字体来提交文档。 +不过,Liberation 字体与微软的字体并不是完全相同的,在一些情况下,你可能需要使用 Arial 或 Times New Roman。一个非常常见的情况是,在学校、大学和其他公共或私人机构中,微软的字体是唯一的选择。他们要求你使用这些字体之一来提交文档。 -你可以在 Ubuntu 和其它发行版上很容易地安装微软字体的一件很好的事。以这种方式,你将增强 LibreOffice 的兼容性,并将有选择开源办公软件的自由。 +好在,你可以在 Ubuntu 和其它发行版上很容易地安装微软字体。以这种方式,你将增强 LibreOffice 的兼容性,并可以自由选择开源办公软件。 ### 在基于 Ubuntu 的 Linux 发行版上安装微软字体 -你可以自己下载字体,并 [在 Ubuntu 中安装新的字体][5] 。但是自从微软字体变得非常流行(并且免费提供),Ubuntu 提供了一种简单的方法来安装它们。 +你可以自行下载字体,并[在 Ubuntu 中安装新的字体][5]。但是由于微软字体非常受欢迎(并且是免费提供的),所以 Ubuntu 提供了一种简单的方法来安装它们。 -要知道尽管微软已经免费发布了其核心字体,在其它操作系统中使用字体依然受到限制。在 Ubuntu 中安装微软字体前,你必须阅读并接受 EULA (最终用户许可协议) 。 +要知道尽管微软已经免费发布了其核心字体,在其它操作系统中使用该字体依然是受到限制的。在 Ubuntu 中安装微软字体前,你必须阅读并接受 EULA (最终用户许可协议) 。 -这些字体 [在 multiverse 存储库中可获得,首先要确保启用它][6] : +这些字体 [可在 multiverse 存储库中获得,首先要确保启用它][6]: ``` sudo add-apt-repository multiverse @@ -44,11 +44,11 @@ sudo add-apt-repository multiverse sudo apt update && sudo apt install ttf-mscorefonts-installer ``` -当微软的最终用户协议出现时,按 tab 键来选择 **OK** ,并按回车键。 +当微软的最终用户协议出现时,按 `tab` 键来选择 “OK” ,并按回车键。 ![按 tab 键来高亮选择][7] -单击 **Yes** 来接受微软的协议: +单击 “Yes” 来接受微软的协议: ![使用 tab 键来作出选择,并按回车键][8] @@ -64,7 +64,7 @@ sudo fc-cache -f -v ![][11] -如果意外地拒绝许可协议,你可以使用这个命令来重新安装安装程序: +如果意外地拒绝了许可协议,你可以使用这个命令来重新安装安装程序: ``` sudo apt install –reinstall ttf-mscorefonts-installer @@ -72,28 +72,20 @@ sudo apt install –reinstall ttf-mscorefonts-installer 微软的 TrueType 字体也可以通过 [Ubuntu Restricted Extras package][12] 获得,其包含用来播放 MP3 等文件的其它专有的多媒体编解码器。 -不要轻视专有字体。 +> 不要轻视专有字体。 +> +> 你可能认为字体有什么大不了的呢?毕竟,它只是一款字体,而不是软件的一个关键部分,对吧?但是你知道,这些年来 [Netflix 为其使用的专有字体支付了数百万美元][13]吗?最后,他们创建了自己的自定义字体,这为他们节省了一大笔钱。 -你可能认为字体有什么大不了的呢?毕竟,它只是一款字体,而不是软件的一个关键部分,对吧? -但是你知道,这些年来 [Netflix 为其使用的专有字体支付了数百万美元][13] 吗?最后,他们创建了自己的自定义字体,这为他们节省了一大笔钱。 - -我希望你发现这个快速教程是有用的。更多的创造性的教程已下线,请在下面留下你的评论,了解更多信息请订阅我们的社交媒体! - -![][14] - -### Dimitrios Savvopoulos - -Dimitrios 是一名机械工程师理学硕士,但是在内心深处是一名 Linux 狂热爱好者。他习惯于使用 Solus 操作系统,但好奇心驱使者他不断测试其它的发行版。 -挑战是他魅力的一部分,他的爱好是自5公里到马拉松的长距离比赛。 +希望这个快速教程有用。更多的生产力教程即将上线,请在下面留下你的评论,了解更多信息请订阅我们的社交媒体! -------------------------------------------------------------------------------- via: https://itsfoss.com/install-microsoft-fonts-ubuntu/ -作者:[Community][a] +作者:[Dimitrios Savvopoulos][a] 选题:[lujun9972][b] 译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 403d99e60058b8a11539e36c18a7700a5db38174 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 10:09:08 +0800 Subject: [PATCH 166/218] PUB @robsean https://linux.cn/article-12074-1.html --- ... Microsoft TrueType Fonts on Ubuntu-based Distributions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md (98%) diff --git a/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md b/published/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md similarity index 98% rename from translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md rename to published/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md index 889bab7f26..2300ffee80 100644 --- a/translated/tech/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md +++ b/published/20200329 How to install Microsoft TrueType Fonts on Ubuntu-based Distributions.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12074-1.html) [#]: subject: (How to install Microsoft TrueType Fonts on Ubuntu-based Distributions) [#]: via: (https://itsfoss.com/install-microsoft-fonts-ubuntu/) [#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/itsfoss/) From 6a5951003a10eb7851130c22c40004e56de1e5d1 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 10:58:32 +0800 Subject: [PATCH 167/218] PRF @wxy --- translated/tech/20190612 Why use GraphQL.md | 56 ++++++++++----------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/translated/tech/20190612 Why use GraphQL.md b/translated/tech/20190612 Why use GraphQL.md index e63f55622d..763d352cb2 100644 --- a/translated/tech/20190612 Why use GraphQL.md +++ b/translated/tech/20190612 Why use GraphQL.md @@ -1,76 +1,76 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Why use GraphQL?) [#]: via: (https://opensource.com/article/19/6/why-use-graphql) [#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley) -为什么使用 GraphQL? +为什么使用 GraphQL? ====== -> 这就是 GraphQL 在标准 REST API 技术上获得发展的原因。 +> 以下是 GraphQL 在标准 REST API 技术上获得发展的原因。 -[][1] +[](https://img.linux.net.cn/data/attachment/album/202004/05/105820rdnjrppprjdjddfd.jpg) -正如我[以前][3]所写,[GraphQL][2] 是下一代 API 技术,它正在改变客户端应用程序与后端系统的通信方式以及后端系统的设计方式。 +正如我[以前][3]所写,[GraphQL][2] 是一种下一代 API 技术,它正在改变客户端应用程序与后端系统的通信方式以及后端系统的设计方式。 -由于一开始就从创建它的组织 Facebook 获得了支持,并得到了其他技术巨头(如 Github、Twitter 和 AirBnB)的支持,因此 GraphQL 作为应用程序系统的关键技术的地位似乎是可靠的 —— 无论现在还是将来。 +由于一开始就从创建它的组织 Facebook 获得了支持,并得到了其他技术巨头(如 Github、Twitter 和 AirBnB)的支持,因此 GraphQL 作为应用程序系统的关键技术的地位似乎是稳固的 —— 无论现在还是将来。 -### GraphQL 在崛起 +### GraphQL 的崛起 移动应用程序性能和组织敏捷性重要性的提高为 GraphQL 登上现代企业体系结构的顶端提供了助推器。 -鉴于 [REST][4] 是一种非常流行的体系结构风格,早已提供了数据交互机制,与 [REST][4] 相比,GraphQL 这项新技术具有哪些优势?GraphQL 中的 “QL” 代表查询语言,而这是一个很好的起点。 +鉴于 [REST][4] 是一种非常流行的体系结构风格,早已提供了数据交互机制,与 [REST][4] 相比,GraphQL 这项新技术具有哪些优势呢?GraphQL 中的 “QL” 代表着查询语言,而这是一个很好的起点。 -借助 GraphQL,组织内的不同客户端应用程序可以轻松地仅查询所需数据,从而取代了其他 REST 方法,并提高了实际应用程序的性能。 使用传统的 [REST][4] API 端点,客户端应用程序将详询服务器资源,并接收包含了与请求匹配的所有数据的响应。如果来自 [REST][4] API 端点的成功响应返回 35 个字段,那么客户端应用程序就会接收 35 个字段。 +借助 GraphQL,组织内的不同客户端应用程序可以轻松地仅查询所需数据,这一点超越了其它 REST 方法,并带来了实际应用程序性能的提高。使用传统的 [REST][4] API 端点,客户端应用程序将详询服务器资源,并接受包含了与请求匹配的所有数据的响应。如果来自 [REST][4] API 端点的成功响应返回 35 个字段,那么客户端应用程序就会收到 35 个字段。 -### 提取的问题 +### 获取的问题 -传统上,[REST][4] API 无法为客户端应用程序提供简便的方法来仅检索或更新它们关心的数据。这通常被描述为“过度获取over-fetching”的问题。随着移动应用程序在人们的日常生活中的普遍使用,过度获取问题会给现实世界带来不良后果。移动应用程序需要发出的每个请求都必须发送和接收的每个字节,对最终用户的性能造成的负面影响越来越大。数据连接速度较慢的用户尤其会受到不太好的 API 设计方案的影响。在性能体验不佳时,使用移动应用程序的客户更有可能不购买产品或不使用服务。低效的 API 设计只会浪费公司的钱。 +传统上,[REST][4] API 没有为客户端应用程序提供简便的方法来仅检索或只更新它们关心的数据。这通常被描述为“过度获取over-fetching”的问题。随着移动应用程序在人们的日常生活中的普遍使用,过度获取问题会给现实世界带来不良后果。移动应用程序发出的每个请求、每一个字节的接受和发送,对终端用户的性能影响越来越大。数据连接速度较慢的用户尤其会受到不太好的 API 设计方案的影响。使用移动应用程序而性能体验不佳的客户更有可能不购买产品或不使用服务。低效的 API 设计只会浪费企业的钱。 -并非只有“过度获取”是问题,“欠缺获取”同样也是问题。默认情况下,仅返回客户端实际需要的部分数据的端点或许会要求客户端进行其他调用以满足其数据需求,这就需要其他的 HTTP 请求。由于过度和欠缺的获取问题及其对客户端应用程序性能的影响,促进有效获取的 API 技术才有机会在市场上引起轰动 —— GraphQL 大胆地介入并填补了这一空白。 +并非只有“过度获取”是问题,“欠缺获取”同样也是问题。默认情况下,端点只返回客户端实际需要的部分数据,这需要客户端进行额外的调用以满足其数据需求,这就产生了额外的 HTTP 请求。由于过度和欠缺的获取问题及其对客户端应用程序性能的影响,促进有效获取的 API 技术才有机会在市场上引起轰动 —— GraphQL 大胆地介入并填补了这一空白。 ### REST 的应对 -[REST][4] API 设计师不战而退,他们尝试通过以下几种方式来应对移动应用程序性能问题: +[REST][4] API 设计师不甘心不战而退,他们试图通过以下几种方式来应对移动应用程序性能问题: -* “include” 和 “exclude” 查询参数,允许客户端应用程序通过可能较长的查询格式来指定所需的字段。 -* “复合”服务,组合了多个端点,以使客户端应用程序在其发出的请求数量和接收到的数据方面更高效。 +* “包含”和“排除”查询参数,允许客户端应用程序通过可能较长的查询格式来指定所需的字段。 +* “复合”服务,将多个端点组合在一起,以使客户端应用程序在其发出的请求数量和接收到的数据方面更高效。    尽管这些模式是 [REST][4] API 社区为解决移动客户端所面临的挑战而做出的英勇尝试,但它们在以下几个关键方面仍存在不足: -* 包含和排除查询的键/值对很快变得混乱,特别是对于需要嵌套“点表示法”语法(或类似方法)以包含和排除更深的目标数据的对象图而言。此外,在此模型中调试查询字符串的问题通常需要手动分解 URL。 -* 包含和排除查询的服务器实现通常是自定义的,因为基于服务器的应用程序没有标准的方式来处理包含和排除查询的使用,就像没有定义包含和排除查询的标准方式一样。 -* 复合服务的兴起创建了更加紧密耦合的后端和前端系统,需要加强协调以交付项目,并且一旦将敏捷项目转回瀑布式。这种协调和耦合顺便还能稍减组织敏捷性的痛苦。此外,根据定义,组合服务不是 RESTful。 +* 包含和排除查询键/值对很快就会变得混乱,特别是对于需要用嵌套“点表示法”语法(或类似方法)以对目标数据进行包含和排除的深层对象图而言,更是如此。此外,在此模型中调试查询字符串的问题通常需要手动分解 URL。 +* 包含和排除查询的服务器的实现往往是自定义的,因为基于服务器的应用程序没有标准的方式来处理包含和排除查询的使用,就像没有定义包含和排除查询的标准方式一样。 +* 复合服务的兴起形成了更加紧密耦合的后端和前端系统,这就需要加强协调以交付项目,并且将曾经的敏捷项目转回瀑布式开发。这种协调和耦合还有一个痛苦的副作用,那就是减宦了组织的敏捷性。此外,顾名思义,组合服务不是 RESTful。    ### GraphQL 的起源 -对于 Facebook 来说,从其 2011-2012 年基于 HTML5 版本的旗舰移动应用程序中感受到的痛点和体验,才造就了 GraphQL。Facebook 工程师意识到提高性能至关重要,因此意识到他们需要一种新的 API 设计来确保最佳性能。可能考虑到以上 [REST][4] 的局限性,并且需要支持许多 API 客户端的不同需求,因此人们开始去了解其共同创建者 Lee Byron 和 Dan Schaeffer(那时尚是 Facebook 员工)撒播下的早期种子,创建了后来被称之为 GraphQL 的技术。 +对于 Facebook 来说,从其 2011-2012 年基于 HTML5 版本的旗舰移动应用程序中感受到的痛点和体验,才造就了 GraphQL。Facebook 工程师意识到提高性能至关重要,因此意识到他们需要一种新的 API 设计来确保最佳性能。可能考虑到上述 [REST][4] 的局限性,并且需要支持许多 API 客户端的不同需求,因此人们可以理解是什么导致其共同创建者 Lee Byron 和 Dan Schaeffer(那时尚是 Facebook 员工)创建了后来被称之为 GraphQL 的技术的早期种子。 -通过 GraphQL 查询语言,客户端(通常是单个 GraphQL 端点)应用程序通常可以显著减少所需的网络调用数量,并确保仅检索所需的数据。在许多方面,这可以追溯到早期的 Web 编程模型,在该模型中,客户端应用程序代码将直接查询后端系统,有些人可能还记得 10 到 15 年前在 JSP 上用 JSTL 编写 SQL 查询吧! +通过 GraphQL 查询语言,客户端(通常是单个 GraphQL 端点)应用程序通常可以显著减少所需的网络调用数量,并确保仅检索所需的数据。在许多方面,这可以追溯到早期的 Web 编程模型,在该模型中,客户端应用程序代码会直接查询后端系统 —— 比如说,有些人可能还记得 10 到 15 年前在 JSP 上用 JSTL 编写 SQL 查询的情形吧! -现在最大的区别是使用 GraphQL,我们有了一个跨多种客户端和服务器语言和库实现的规范。借助 GraphQL 这样一种 API 技术,我们通过引入 GraphQL 应用程序中间层来分离后端和前端应用程序系统,该层提供了一种以与组织的业务领域相一致的方式来访问组织数据的机制。 +现在最大的区别是使用 GraphQL,我们有了一个跨多种客户端和服务器语言和库实现的规范。借助 GraphQL 这样一种 API 技术,我们通过引入 GraphQL 应用程序中间层来解耦后端和前端应用程序系统,该层提供了一种机制,以与组织的业务领域相一致的方式来访问组织数据。 除了解决软件工程团队遇到的技术挑战之外,GraphQL 还促进了组织敏捷性的提高,特别是在企业中。启用 GraphQL 的组织敏捷性通常归因于以下因素: - * GraphQL API 设计人员和开发人员无需在客户端需要一个或多个新字段时创建新的端点,而是能够将这些字段包含在现有的图形实现中,从而以较少的开发工作量和跨应用程序系统的较少更改的方式公开新功能。 - * 通过鼓励 API 设计团队将更多的精力放在定义对象图上,而不是在专注于客户端应用程序交付上,前端和后端软件团队为客户交付解决方案的速度日益解耦。 + * GraphQL API 设计人员和开发人员无需在客户端需要一个或多个新字段时创建新的端点,而是能够将这些字段包含在现有的图实现中,从而以较少的开发工作量和跨应用程序系统的较少更改的方式展示出新功能。 + * 通过鼓励 API 设计团队将更多的精力放在定义对象图上,而不是在专注于客户端应用程序交付上,前端和后端软件团队为客户交付解决方案的速度日益解耦。    ### 采纳之前的注意事项 尽管 GraphQL 具有引人注目的优势,但 GraphQL 并非没有实施挑战。一些例子包括: * 为 [REST][4] API 建立的缓存机制更加成熟。 -* 用于使用 [REST][4] 来构建 API 的模式已经非常完善。 +* 使用 [REST][4] 来构建 API 的模式更加完善。 * 尽管工程师可能更喜欢 GraphQL 等新技术,但与 GraphQL 相比,市场上的人才库更多是从事于构建基于 [REST][4] 的解决方案。 ### 结论 -通过同时提高性能和组织敏捷性,GraphQL 在公司中的采纳在过去几年中猛增。但是,与 RESTful API 设计生态系统相比,它确实还需要更成熟一些。 +通过同时提高性能和组织敏捷性,GraphQL 在过去几年中被企业采纳的数量激增。但是,与 API 设计的 RESTful 生态系统相比,它确实还需要更成熟一些。 -GraphQL 的一大优点是,它并不是作为替代 API 解决方案的批发替代品而设计的。相反,可以实现 GraphQL 来补充或增强现有的 API。因此,鼓励公司探索逐步采用 GraphQL 的方法,这对他们来说最有意义,他们发现它对应用程序性能和组织敏捷性具有最大的积极影响。 +GraphQL 的一大优点是,它并不是作为替代 API 解决方案的批发替代品而设计的。相反,GraphQL 可以用来补充或增强现有的 API。因此,鼓励企业探索在 GraphQL 对其最有意义的地方逐步采用 GraphQL —— 在他们发现它对应用程序性能和组织敏捷性具有最大的积极影响的地方。 -------------------------------------------------------------------------------- @@ -79,7 +79,7 @@ via: https://opensource.com/article/19/6/why-use-graphql 作者:[Zach Lendon][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -87,5 +87,5 @@ via: https://opensource.com/article/19/6/why-use-graphql [b]: https://github.com/lujun9972 [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D [2]: https://graphql.org/ -[3]: https://opensource.com/article/19/6/what-is-graphql +[3]: https://linux.cn/article-12070-1.html [4]: https://en.wikipedia.org/wiki/Representational_state_transfer From ee6430e5b48a9c0a25f331741c9ed706557bcb63 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 11:03:59 +0800 Subject: [PATCH 168/218] PUB @wxy https://linux.cn/article-12075-1.html --- {translated/tech => published}/20190612 Why use GraphQL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190612 Why use GraphQL.md (99%) diff --git a/translated/tech/20190612 Why use GraphQL.md b/published/20190612 Why use GraphQL.md similarity index 99% rename from translated/tech/20190612 Why use GraphQL.md rename to published/20190612 Why use GraphQL.md index 763d352cb2..b71cb64206 100644 --- a/translated/tech/20190612 Why use GraphQL.md +++ b/published/20190612 Why use GraphQL.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12075-1.html) [#]: subject: (Why use GraphQL?) [#]: via: (https://opensource.com/article/19/6/why-use-graphql) [#]: author: (Zach Lendon https://opensource.com/users/zachlendon/users/goncasousa/users/patrickhousley) From 0e95c3eedae46d1dbf7e174ad58f2dc710875b67 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Sun, 5 Apr 2020 11:05:56 +0800 Subject: [PATCH 169/218] Translating --- .../20200403 Scheduling tasks on Linux using the at command.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200403 Scheduling tasks on Linux using the at command.md b/sources/tech/20200403 Scheduling tasks on Linux using the at command.md index 090ae1620a..42b1025fe4 100644 --- a/sources/tech/20200403 Scheduling tasks on Linux using the at command.md +++ b/sources/tech/20200403 Scheduling tasks on Linux using the at command.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (MjSeven) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 4529cabf72d9396e2b6b9e085a0352ee39a3e3ca Mon Sep 17 00:00:00 2001 From: HankChow <280630620@qq.com> Date: Sun, 5 Apr 2020 20:51:56 +0800 Subject: [PATCH 170/218] hankchow translated --- ...to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 135 ------------------ ...to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 134 +++++++++++++++++ 2 files changed, 134 insertions(+), 135 deletions(-) delete mode 100644 sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md create mode 100644 translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md diff --git a/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md deleted file mode 100644 index cbbe8f7866..0000000000 --- a/sources/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md +++ /dev/null @@ -1,135 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10) -[#]: via: (https://itsfoss.com/upgrade-ubuntu-beta/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10 -====== - -[Ubuntu 20.04 LTS release][1] is less than a month away. It has plenty of visual changes and several performance improvements. - -If you are still using Ubuntu 18.04 LTS, you’ll find Ubuntu 20.04 stunningly beautiful with its dark Yaru theme. Here’s a [video showing what Ubuntu 20.04 looks like][2]. Have a look and judge it yourself. - -[Subscribe to our YouTube channel for more Linux videos][3] - -Looks great, isn’t it? If you are excited about Ubuntu 20.04 and cannot wait till the final stable release on 23rd April, you can start using it even today. It’s fairly stable and it could even help Ubuntu team in testing this release. - -There’s always the option to download the daily build and install it afresh. But if you are using Ubuntu 18.04 or Ubuntu 19.10, you can upgrade to Ubuntu 20.04 beta from your existing system. - -Please check this tutorial to learn [how to find out which Ubuntu version you are using][4]. - -In this tutorial, I’ll show you the steps to upgrade to Ubuntu 20.04 beta. - -### How to upgrade to Ubuntu 20.04 beta from Ubuntu 18.04 and 19.10 - -![Upgrade Ubuntu 20 04 Beta][5] - -Before you see the steps, let me answer some of the common questions regarding upgrading to Ubuntu beta version. - - * The upgrade from one version to another is an easy process but you need to have a good internet connection that could download a couple of GBs of data at a good speed. - * Upgrading to a newer version disables the third-party repositories ([PPA][6] you added on your own). Some of these PPAs might not be available for the new version yet. You can manually enable the PPAs after upgrading. - * Having a backup of your important data on an external USB disk is always recommended. Just copy all your important files from Documents, Pictures, Music, Downloads and other places and put it on an external USB or hard disk. - * Once you have upgraded to a newer version, you cannot go back to the older version you were using. Reinstalling the older version is the only option. - * If you upgrade to the Ubuntu 20.04 beta version, you don’t need to install it again when the final stable version is released. Just update your Ubuntu system regularly and you’ll already be using the same 20.04 when it is released. - * You cannot upgrade to Ubuntu 20.04 directly from Ubuntu 16.04, 17, 18, 19.04. - - - -Alright! You know enough now. Let’s see the steps to upgrade to Ubuntu 20.04 beta from Ubuntu 19.10 and 18.04. - -#### Step 1: Make sure the settings are right - -Go to Software & Updates application: - -![Software & Updates application in Ubuntu][7] - -In the Updates tab, check that Notify me of a new Ubuntu version is set to “Any new version” or “LTS version”: - -![Ubuntu Upgrade Version Settings][8] - -This may reload the Software repository cache. - -#### Step 2: Update your system for any pending software updates - -Once you have the correct settings in place, open a terminal ([use Ctrl+Alt+T shortcut in Ubuntu][9]) and use the following [command to update your Ubuntu system][10]: - -``` -sudo apt update && sudo apt full-upgrade -``` - -The apt full-upgrade or dist-upgrade function the same as ‘apt upgrade’ but it will remove currently installed packages if this is needed to upgrade the system as a whole (i.e. a version upgrade). - -Your system may ask to restart after installing updates. That’s fine. Restart and resume upgrading to beta release from step 3. - -#### Step 3: Run update manager with development release upgrade option - -Now that you have all the necessary updates installed, you can open the update manager but with -d option. The -d option tells it to look for development releases. - -``` -update-manager -d -``` - -It may take a couple of minutes before informing you that a new version of Ubuntu is available. - -![Availability of Ubuntu 20.04 in Ubuntu 19.10][11] - -A similar message is displayed in Ubuntu 18.04 as well: - -![Availability of Ubuntu 20.04 in Ubuntu 18.04][12] - -Hit the upgrade button when you see the above message. - -#### Step 4: Start upgrading to Ubuntu 20.04 beta - -The rest of the upgrade procedure is basically waiting for update downloads and clicking okay wherever requested. - -![][13] - -Hit the upgrade button and follow the on-screen instructions. - -![][14] - -You might be notified that all the third party sources have been disabled. At some point, it will also inform you of the packages that will be upgraded, removed etc. It will also ask if you want to keep obsolete packages or not. I prefer to remove them. - -Depending on your internet speed, the upgrade may take a couple of hours. Once the upgrade process is complete, you’ll be asked to restart your system. - -![][15] - -This video shows all the steps in action: - -See, it wasn’t that difficult. Enjoy all the new features in Ubuntu 20.04. - -Questions or suggestions? Feel free to leave a comment below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/upgrade-ubuntu-beta/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/ubuntu-20-04-release-features/ -[2]: https://www.youtube.com/watch?v=9u5B0njRgOw -[3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 -[4]: https://itsfoss.com/how-to-know-ubuntu-unity-version/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-beta.jpg?ssl=1 -[6]: https://itsfoss.com/ppa-guide/ -[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/software-updates-app-ubuntu.jpg?ssl=1 -[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-upgrade-version-settings.jpg?ssl=1 -[9]: https://itsfoss.com/ubuntu-shortcuts/ -[10]: https://itsfoss.com/update-ubuntu/ -[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04.jpg?ssl=1 -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-from-18-04.jpg?ssl=1 -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-1.jpg?ssl=1 -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-2.jpg?ssl=1 -[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/restart-to-finish-beta-upgarde-ubuntu-20-04.jpg?ssl=1 diff --git a/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md new file mode 100644 index 0000000000..fd629c8db7 --- /dev/null +++ b/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md @@ -0,0 +1,134 @@ +[#]: collector: (lujun9972) +[#]: translator: (HankChow) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10) +[#]: via: (https://itsfoss.com/upgrade-ubuntu-beta/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +如何将 Ubuntu 18.04/19.10 升级到 Ubuntu 20.04 beta +====== + +[Ubuntu 20.04 LTS 版本][1]还有不到一个月就发布了,Ubuntu 在这一个版本中对视觉效果作出了大变动,同时在性能方面也有所提高。 + +如果你还在使用 Ubuntu 18.04 LTS 版本,你会发现 Ubuntu 20.04 配合深色 Yaru 主题非常惊艳,看过 [Ubuntu 20.04 的展示视频][2]你就知道了。 + +[订阅我们的 YouTube 频道观看更多 Linux 视频][3] + +感觉确实不错。如果你想在 4 月 23 日最终稳定版正式发布前率先使用 Ubuntu 20.04,也可以在官方网站上下载 beta 版本。尽管如此,它的稳定性并不差,同时你也可以在使用这个版本的过程中帮助 Ubuntu 团队进行测试。 + +你可以下载每日构建daily build版并进行重新安装,如果你正在使用的是 Ubuntu 18.04 或 Ubuntu 19.10,也可以在现有系统的基础上直接升级到 Ubuntu 20.04 beta 版本。 + +如果你需要确认正在使用的 Ubuntu 版本,可以参考[这篇文章][4]。 + +在本文中,我将会介绍如何升级到 Ubuntu 20.04 beta 版本。 + +### 如何将 Ubuntu 18.04/19.10 升级到 Ubuntu 20.04 beta + +![Upgrade Ubuntu 20 04 Beta][5] + +在你阅读后面的内容之前,我首先说明一些关于升级到 Ubuntu beta 版本的常见问题。 + + * 版本升级的过程并不复杂,但在整个过程中需要有良好的网络连接,以便下载高达好几 GB 的数据。 + * 版本升级的过程中,第三方存储库(比如你自行添加的 [PPA][6])会被禁用,有些 PPA 可能也和新版本不兼容,在版本升级完毕后,你可以手动启用 PPA。 + * 强烈建议将重要数据备份到外部的 USB 硬盘上。你只需要将各个目录下的重要文件直接复制到外部 USB 硬盘上保存即可。 + * 升级到新版本之后,就无法再回滚到之前的旧版本了,只能重新安装旧版本系统。 + * 如果你选择升级到 Ubuntu 20.04 beta 版本,那么在 Ubuntu 20.04 最终稳定版发布之后,你也不需要重新安装。只需要保持定期更新 Ubuntu 系统,届时你就可以直接用上最终稳定版了。 + * Ubuntu 16.04/17/18/19.04 都无法直接升级到 Ubuntu 20.04。 + +了解完上面的内容之后,下面开始从 Ubuntu 18.04/19.10 升级到 Ubuntu 20.04。 + +#### 步骤 1:检查设置是否正确 + +进入“软件和升级Software & Updates”应用: + +![Software & Updates application in Ubuntu][7] + +在“升级Updates”选项卡中,设置“有任何新版本 Ubuntu 都提醒我”或“有 LTS 版本 Ubuntu 就提醒我”: + +![Ubuntu Upgrade Version Settings][8] + +设置完成后,系统会刷新软件库缓存。 + +#### 步骤 2:安装系统更新 + +在上面的步骤完成之后,打开终端(在 Ubuntu 中可以使用 `Ctrl+Alt+T` [快捷键][9]),然后使用以下命令[更新 Ubuntu 系统][10]: + +``` +sudo apt update && sudo apt full-upgrade +``` + +`apt full-upgrade` 或 `apt dist-upgrade` 的功能和 `apt upgrade` 大致相同,但对于系统版本的升级,`apt full-upgrade` 会在需要的情况下将当前已安装的软件移除掉。 + +更新安装完成后,系统可能会需要重新启动。在重新启动之后,就可以进入步骤 3 了。 + +#### 步骤 3:使用更新管理器查找开发版本 + +在步骤 2 中已经安装了所有必要的更新,现在通过下面的命令打开更新管理器,其中 `-d` 参数表示需要查找开发版本: + +``` +update-manager -d +``` + +整个过程可能需要好几分钟,随后会提示有新版本的 Ubuntu 可用: + +![Availability of Ubuntu 20.04 in Ubuntu 19.10][11] + +在 Ubuntu 18.04 上的提示是这样的: + +![Availability of Ubuntu 20.04 in Ubuntu 18.04][12] + +然后点击对话框中的“升级upgrade”按钮。 + +#### 步骤 4:开始升级到 Ubuntu 20.04 beta + +接下来只要等待下载更新就可以了,遇到对话框直接点击 OK 即可。 + +![][13] + +点击“升级upgrade”按钮,然后按照提示进行操作。 + +![][14] + +在升级过程中,可能会有提示信息告知所有第三方源都已经禁用。有时候还会提示有哪些软件包需要升级或删除,以及是否需要保留一些已经过时了的软件包。一般情况下,我会选择直接删除。 + +整个升级过程通常会需要几个小时,但主要还是取决于实际的网速。升级完成后,系统会提示需要重新启动。 + +![][15] + +下面的视频展示了所有相关步骤。 + +由此可见,这个升级流程并不复杂。欢迎体验 Ubuntu 20.04 带来的新特性。 + +如果你有疑问或建议,欢迎在评论区留言。 + + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/upgrade-ubuntu-beta/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[HankChow](https://github.com/HankChow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/ubuntu-20-04-release-features/ +[2]: https://www.youtube.com/watch?v=9u5B0njRgOw +[3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[4]: https://itsfoss.com/how-to-know-ubuntu-unity-version/ +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-beta.jpg?ssl=1 +[6]: https://itsfoss.com/ppa-guide/ +[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/software-updates-app-ubuntu.jpg?ssl=1 +[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-upgrade-version-settings.jpg?ssl=1 +[9]: https://itsfoss.com/ubuntu-shortcuts/ +[10]: https://itsfoss.com/update-ubuntu/ +[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04.jpg?ssl=1 +[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-from-18-04.jpg?ssl=1 +[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-1.jpg?ssl=1 +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-steps-2.jpg?ssl=1 +[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/restart-to-finish-beta-upgarde-ubuntu-20-04.jpg?ssl=1 From 808bdd3e5e493a34cb4fefab36346be7c0876800 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 20:54:20 +0800 Subject: [PATCH 171/218] PRF @geekpi --- ...a 14- How to Install it on Ubuntu Linux.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md index e030ed192e..62b77b4a1c 100644 --- a/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md +++ b/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md @@ -1,39 +1,37 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Oracle Announces Java 14! How to Install it on Ubuntu Linux) [#]: via: (https://itsfoss.com/java-14-ubuntu/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) -Oracle 发布 Java 14!如何在 Ubuntu Linux 上安装 +如何在 Ubuntu Linux 上安装 Oracle Java 14 ====== -最近,Oracle 宣布 Java 14(或 Oracle JDK 14)正式开放。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14。 +![](https://img.linux.net.cn/data/attachment/album/202004/05/205313e188lsbrbgz9932d.jpg) -Oracle JDK 14(或简称 Java 14)[发行版][1]包含几个新功能,如果你想预览它们的话。我已添加了链接: +最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14。 + +Oracle JDK 14(或简称 Java 14)[发布版][1]包含几个新功能,如果你想预览它们的话。我已添加了链接: * [instanceof 的模式匹配][2] * [Records][3] * [Text Blocks][4] - - 除预览功能外,它还包含一些改进和补充。在新闻中,他们还提到了其他改进: ->此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的新 API,将低延迟 zgc 扩展到了 macOS 和 Windows,并添加在 incubator 模块中,独立的 Java 应用打包和为了安全的新的外部内存访问 API 来有效地访问 Java 堆外部的内存。 +> 此外,最新的 Java 版本增加了 Java 语言对 switch 表达式的支持,新增了用于持续监控 JDK Flight Recorder 数据的新 API,将低延迟 zgc 扩展到了 macOS 和 Windows,并添加在 incubator 模块中,独立的 Java 应用打包,以及为了安全、有效地访问 Java 堆外部内存的新的外部内存访问 API。 -当然,如果你想详细了解细节,那么你应查看[官方公告][1]。 +当然,如果你想深入了解细节,那么你应查看[官方公告][1]。 -在本教程中,我将向你展示在 Ubuntu 系统上安装 Java 14 的简便方法。继续阅读。 +在本教程中,我将向你展示在 Ubuntu 系统上安装 Java 14 的简便方法。请继续阅读。 -**注意:**如果你选择 Oracle Java 11 或更高版本,那么应该了解新的 [Oracle 技术网络许可协议][5],以了解它如何影响个人用户、开发人员和商业组织。通常,它们可以免费用于开发和测试,但不能用于生产。 +**注意:**如果你选择使用 Oracle Java 11 或更高版本,那么应该了解新的 [Oracle 技术网络许可协议][5],以了解它如何影响个人用户、开发人员和商业组织。通常,它们可以免费用于开发和测试,但不能用于生产环境。 ### 如何在 Ubuntu Linux 上安装 Java 14? -![][6] - 作为参考,我已成功在默认安装 **OpenJDK 11** 的 **Pop!_OS 19.10** 上成功安装了它。 这里,我们将使用 [Linux Uprising][7] 的 Java 14 安装程序(最初基于 WebUpd8 Java 软件包)。 @@ -56,7 +54,7 @@ sudo apt install oracle-java14-set-default ### 总结 -当然,这些是最新的特性,如果你不想破环环境,你或许会希望继续使用 Java11。如果你想在了解风险的情况下进行试验,请继续尝试! +当然,这些会带来最新的特性,如果你不想破环原有环境,你或许会希望继续使用 Java 11。如果你想在了解风险的情况下进行试验,请继续尝试! 欢迎在下面的评论中让我知道你对 Java 14 的想法。 @@ -67,7 +65,7 @@ via: https://itsfoss.com/java-14-ubuntu/ 作者:[Ankush Das][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 924b3609a6f2a55f735d204037124032776cc2e7 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 20:55:33 +0800 Subject: [PATCH 172/218] PUB @geekpi https://linux.cn/article-12076-1.html --- ...le Announces Java 14- How to Install it on Ubuntu Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md (98%) diff --git a/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md b/published/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md similarity index 98% rename from translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md rename to published/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md index 62b77b4a1c..fc7af79bb5 100644 --- a/translated/tech/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md +++ b/published/20200329 Oracle Announces Java 14- How to Install it on Ubuntu Linux.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12076-1.html) [#]: subject: (Oracle Announces Java 14! How to Install it on Ubuntu Linux) [#]: via: (https://itsfoss.com/java-14-ubuntu/) [#]: author: (Ankush Das https://itsfoss.com/author/ankush/) From b772fd958d9c428d235465db500be4d5ef43ff41 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 23:25:01 +0800 Subject: [PATCH 173/218] PRF @wxy --- ...0331 5 ways to level up your Vim skills.md | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/translated/tech/20200331 5 ways to level up your Vim skills.md index 2ddeb2f40d..53e49926dd 100644 --- a/translated/tech/20200331 5 ways to level up your Vim skills.md +++ b/translated/tech/20200331 5 ways to level up your Vim skills.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (5 ways to level up your Vim skills) @@ -10,13 +10,13 @@ 提升你的 Vim 技能的 5 个方法 ====== -> 通过一些有趣的技巧使你的文本编辑器更上一层楼。 +> 通过一些有趣的小技巧使你的文本编辑器更上一层楼。 -![Computer keyboard typing][1] +![](https://img.linux.net.cn/data/attachment/album/202004/05/232434x1hnzlnhcnm3nrc7.jpg) -Vim 是最受欢迎的文本编辑器之一,因此绝对值得花时间学习如何使用它。如果你使用这个无处不在的 [Vi(m)][2] 命令行文本编辑器来做的只是打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,那么你还有很大的提示空间、。 +Vim 是最受欢迎的文本编辑器之一,因此绝对值得你花时间去学习如何使用它。就算你只是学习使用这个无处不在的 [Vi(m)][2] 命令行文本编辑器打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,你都会受益匪浅。 -在某些情况下你会发现,使用 Vim 非常方便的的场景几乎总是涉及到运行远程 Shell 操作的任务。如果你时不时地使用 ssh,比如 +你会发现,使用 Vim 非常方便的的场景几乎总是涉及到运行远程 Shell 操作的任务。如果你时不时地使用 ssh,比如 ``` $ ssh user@hostname.provider.com @@ -26,11 +26,11 @@ $ ssh user@hostname.provider.com ### 将 Vim 设置为默认的文本编辑器 -几乎在所有现代 Linux(或 BSD)发行版中,都可以在终端仿真器的 shell 命令提示符下使用 Vim。在用户 shell 程序中将 Vim 定义为默认编辑器后,即可使用熟悉的 Vim 键绑定来浏览内置的实用程序,例如 `man`。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 现在是 macOS 用户的默认shell(自 Catalina 起)。 +几乎所有的现代 Linux(或 BSD)发行版中,都可以在终端仿真器的 shell 命令提示符下使用 Vim。一旦在你的用户 shell 程序中将 Vim 定义为默认编辑器后,那么就可以使用熟悉的 Vim 键绑定来在内置的实用程序(例如 `man`)中导航。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 现在是 macOS 用户的默认 shell(自 Catalina 起)。 #### 在 Bash 中将 Vim 设置为默认 -Bash 通过点文件的组合来管理设置。将首选编辑器添加到主目录中的 `.bashrc` 文件中是最常见的,但也可以将其添加到 `.bash_profile` 中。(请阅读 [GNU Bash 文档][3]了解不同之处)。 +Bash 通过点文件的组合来管理设置。最常见的的做法将你的编辑器添加到主目录中的 `.bashrc` 文件中,但也可以将其添加到 `.bash_profile` 中。(请阅读 [GNU Bash 文档][3]了解两者的不同之处)。 通过在 `~/.bashrc` 中添加以下内容,将 Vim 设置为默认编辑器: @@ -39,11 +39,11 @@ Bash 通过点文件的组合来管理设置。将首选编辑器添加到主目 export EDITOR=vim ``` -以 `#` 开头的行是可选的注释,这是提醒自己该命令的功能的好方法。 +以 `#` 开头的行是可选的注释,这是一个好方法,可以提醒自己该命令的作用。 #### 在 zsh 中将 Vim 设置为默认 -zsh 是一种越来越流行的终端模拟器,尤其是自苹果的基于 FreeBSD 的 Darwin 系统最近从 Bash 切换到 zsh 以来。 +zsh 是一种越来越流行的终端仿真器,尤其是在苹果公司的基于 FreeBSD 的 Darwin 系统最近从 Bash 转向 zsh 以来。 zsh 点文件与 Bash 的文件相当,因此你可以在 `~/.zshrc` 或 `~/.zprofile` 之间进行选择。有关何时使用哪一个的详细信息,请参见 [zsh文档][4]。 @@ -56,13 +56,13 @@ export EDITOR=vim ### 优化 Vim 配置 -Vim 很像终端仿真器外壳,它使用点文件来设置个人偏好。如果发现该模式,则可能已经猜到它是 `~/.vimrc`。 +Vim 像是终端仿真器 shell 一样,也使用点文件来设置个人偏好。如果你发现了这种模式,则可能已经猜到它是 `~/.vimrc`。 -你可能要更改的第一个设置是将对旧 Vi 兼容模式切换为“关”。由于 Vim 是 Vi 的超集,因此 Vi 中的所有功能都可用,并在 Vim 中进行了很大的改进,你可以获得许多高级功能。最新版本(8.2)允许你在拆分的窗口中打开终端运行一个子进程 shell 程序。 +你可能要更改的第一个设置是将对传统的 Vi 兼容模式切换为“关闭”。由于 Vim 是 Vi 的超集,因此 Vi 中的所有功能在 Vim 中都是可用的,并且在 Vim 中得到了很大的改进,你可以获得许多高级功能。最新版本(8.2)允许你在分割的窗口中以子进程 shell 的方式打开一个终端。 -顺便说一句,关闭旧版兼容性似乎没有做什么事情([事实上,可能不是][5])。当遇到一个 `.vimrc` 文件时,Vim 会自动将该模式切换为关闭。但有时将其明确关闭仍然很重要。缩写 `nocp` 是 `nocompatible` 的同义词,也可以使用它。[条条大道通罗马][6],切换首选项有很多方式。 +顺便说一句,明确关闭对传统的 Vi 的兼容性看起来没有什么作用([事实上,可能并没有什么作用][5])。当 Vim 遇到 `.vimrc` 文件时,它会暗暗地自动将兼容模式切换到关闭。但有时将其明确关闭仍然很重要。缩写 `nocp` 是 `nocompatible` 的同义词,作用是一样的。[条条大道通罗马][6],切换首选项有很多方式。 -在 `.vimrc` 语法中, 以 `"` 开头的行是注释(就像 `.bashrc` 文件中的 `#` 一样),这些注释可以帮助你记住诸如为何选择一个隐秘的设置名称之类的内容。 +在 `.vimrc` 语法中, 以 `"` 开头的行是注释(就像 `.bashrc` 文件中的 `#` 一样),这些注释可以帮助你记住诸如为何选择了一个隐晦的设置名称之类的内容。 要关闭 Vi 兼容性,请将以下内容添加到 `~/.vimrc` 文件中: @@ -74,21 +74,22 @@ set nocp ### 理解模式 -Vim的 “模式”概念是非常重要的,尤其是“正常模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并不是 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以至于它比 70 年代的[复制和粘贴][7]功能的发明还要早。 +Vim 的 “模式”概念是非常重要的,尤其是“普通模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并不是 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以至于它比 70 年代发明的[复制和粘贴][7]功能还要早。 #### 重要的模式 -Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重要模式有 +Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重要模式有: -* 正常模式:默认模式,主要用于导航和打开文件。 +* 普通模式:默认模式,主要用于导航和打开文件。 * 插入模式(包括替换):这种模式下 Vim 允许将文本输入到打开的文件中。 * 可视模式:Vim 的行为类似于基于鼠标的输入方式,如复制、编辑、替换等。 -* 命令模式(包括行模式、Ex 命令模式和末行模式):在 Vim 中做更多事情的强大方法。 +* 命令模式(包括行模式、Ex 命令模式和末行模式):是在 Vim 中做更多事情的强大方法。 每种模式都有很多值得探索的地方。使用 [Vimtutor][8](`vimtutor`)可以交互式地学习移动光标、模式和在末行模式下运行 Ex 命令。一些不可缺少的生产力操作符包括: -`:E` | 打开资源管理器,用于定位文件和目录。 +操作符 | 说明 --- | --- +`:E` | 打开资源管理器,用于定位文件和目录。 `.` | 重复上次的编辑操作。 `;` | 向前重复上一次的动作或移动 `,` | 向后重复上一次的动作或移动。 @@ -97,30 +98,30 @@ Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重 `*` | 查找光标所在处的单词的下一个出现的地方。 `#` | 查找光标所在处的单词的上一次出现的地方。 `~` | 切换大小写。 -`%` | 在打开和关闭的 `()`、`[]` 和 `{}` 之间切换;对编码非常有用。 +`%` | 在 `()`、`[]` 和 `{}` 的开闭符号之间切换;对编码非常有用。 `z=` | 提出拼写建议。 ### 像钢琴一样弹奏 Vim -把 Vim 的操作符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家一样思考,把操作符和动作组合成“和声和弦”,这样你就可以像弹钢琴一样弹奏 Vim。这就是 Vim 的文本操作能力可以与另一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 `Esc` 键,而另一个编辑器会让你的 `Ctrl` 键磨损掉。) +尽管把 Vim 的操作符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家一样思考,把操作符和动作组合成“和弦”,这样你就可以像弹钢琴一样弹奏 Vim。这就是 Vim 的文本操作能力可以与另一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 `Esc` 键,而另一个编辑器会让你的 `Ctrl` 键磨损掉。) -在描述和弦时,Vim 中的传统做法是用大写字母 `C` 来指代 `Ctrl` 键,后面加上一个连字符(`C-`)。这并不是通用的,但我将从这里开始遵循这一惯例,并在有可能引起混淆的时候加以说明。 +在描述键“和弦”时,Vim 中的传统做法是用大写字母 C 后面加上一个连字符(`C-`)来指代 `Ctrl` 键。这并不是通用的,但我将从这里开始遵循这一惯例,并在有可能引起混淆的时候加以说明。 -如果你在 Vim 中键入长行,你会想把它设置成可以换行你的文字。想要根据你的工作方式对 Vim 进行个性化设置,请考虑一下这个设置:当 Vim 启动时,你希望 Vim 默认情况下如何处理文本换行?开着还是关着?我喜欢将其关闭,并在运行时用命令打开它。当我想让文本换行时,我只需在命令行模式下用 `:set wrap` 设置即可。 +如果你在 Vim 中键入长行,你会想把它设置成可以换行。想要根据你的工作方式对 Vim 进行个性化设置,请考虑一下这个设置:默认情况下,你希望 Vim 启动时如何处理文本换行?开还是关?我喜欢将其关闭,并将其留在运行命令文件之外。当我想让文本自动换行时,我只需在命令行模式下用 `:set wrap` 设置即可。 -让 Vim 设置为默认文字换行并没有什么问题。这只是一个偏好的问题 —— 它可能随着时间的推移而改变。同样你也可以控制粘贴、代码语言缩进语法和 `Tab` 键的设置(制表符还是空格?多少个空格?可也在[这里][9]深入研究这些选项)。所有这些默认行为的选项都是完全可配置的,并且在你使用命令行模式操作时可以实时更改。 +让 Vim 设置为默认情况下自动换行并没有错,这只是一个偏好问题 —— 它可能随着时间的推移而改变。同样你也可以控制粘贴、代码语言缩进语法和 `Tab` 键的设置(制表符还是空格?多少个空格?可也在[这里][9]深入研究这些选项)。所有这些默认行为的选项都是完全可配置和可更改的,并且在你使用命令行模式操作时可以实时更改。 -你会在社区论坛、Vim 维基和文章中找到很多关于设置 Vim 默认设置的建议(比如这篇文章)。为你的个人计算环境设置首选项对你来说应该相当熟悉,Vim 也不例外。我强烈建议你从对你的设置进行非常小的更改开始,慢慢地进行更多的更改,这样你就可以轻松地恢复设置。这样一来,你就可以避免使用插件好多年或完全不用。 +你会在社区论坛、Vim 维基和文章(比如这篇文章)中找到很多关于设置 Vim 默认设置的建议。你应该很熟悉为你的个人计算环境设置首选项,Vim 也不例外。我强烈建议你从对设置进行很小的更改开始,慢慢地进行其它更改,以便你可以轻松地恢复设置。这样一来,你就可以好多年避免使用插件或完全不用插件。 -### Vim 8.2中的分割、标签和终端 +### Vim 8.2 中的分割、标签和终端 有两种方法可以将你正在处理的文件分割成不同的视图:它们可以并排显示,也可以使用应用程序标签页在全屏(窗口)中切换。这些对应用程序窗口的更改是从命令模式启动的,这需要使用冒号(`:`)来调起提示符。 -每个分割的窗口可以容纳一个文件进行编辑,你可以通过标签页在更多的文件之间随意切换。分割的屏幕空间是有限的,所以当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属个人喜好的问题。要横向分割一个窗口,使用 `:sp`,垂直分割时使用 `:vs`。 +每个分割的窗口可以容纳一个文件进行编辑,你可以通过标签页在更多的文件之间随意切换。分割的屏幕空间有限,所以当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属个人喜好的问题。要水平分割一个窗口,使用 `:sp`,垂直分割时使用 `:vs`。 -从 [Vim 8.2][10] 开始,你可以用 `:vert term` 打开一个垂直分割的终端 shell 子进程,来在你的代码旁边在命令行进行操作。你需要键入 `exit` 来关闭你的终端进程,就像你结束一个 shell 会话一样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口一样,用 `:q` 来关闭。 +从 [Vim 8.2][10] 开始,你可以用 `:vert term` 打开一个垂直分割的终端 shell 子进程,以在你的代码旁边的命令行上进行操作。你需要键入 `exit` 来关闭你的终端进程,就像你结束一个 shell 会话一样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口一样,要用 `:q` 来关闭。 -要初始化一个标签页,请使用一个特殊的编辑命令:`:tabedit`,它会自动切换到新打开的标签页。如果你给该命令一个文件名作为参数,将会打开该文件并进行编辑。如果你忽略了给它一个文件名作为参数,可以在命令行模式下的使用编辑命令 `:e filename.txt`,就像在任何一个普通的 Vim 窗口中一样。可以使用下一个(`:tabn`)和上一个(`:tabp`)命令在标签页间导航。 +要初始化一个标签页,请使用一个特殊的编辑命令:`:tabedit`,它会自动切换到新打开的标签页。如果你给该命令一个文件名作为参数,会打开该文件并进行编辑。如果你忽略了给它一个文件名作为参数,可以在命令行模式下的使用编辑命令 `:e filename.txt`,就像在任何一个普通的 Vim 窗口中一样。可以使用下一个(`:tabn`)和上一个(`:tabp`)命令在标签页间导航。 要使用分割,你需要知道如何使用组合键 `C-w` 和你想要移动的方向的移动键,例如左(`h`)、下(`j`)、左(`k`)、右(`l`)。如果你想学习更多的组合键,请阅读 Vim 手册中的 `:help split` 和 `:help tabpage`。 @@ -137,7 +138,7 @@ via: https://opensource.com/article/20/3/vim-skills 作者:[Detlef Johnson][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 4afce28ccd3222f72b7b40eca505ec7f019ef9ba Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Sun, 5 Apr 2020 23:25:38 +0800 Subject: [PATCH 174/218] PUB @wxy https://linux.cn/article-12077-1.html --- .../20200331 5 ways to level up your Vim skills.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200331 5 ways to level up your Vim skills.md (99%) diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/published/20200331 5 ways to level up your Vim skills.md similarity index 99% rename from translated/tech/20200331 5 ways to level up your Vim skills.md rename to published/20200331 5 ways to level up your Vim skills.md index 53e49926dd..487f0247ba 100644 --- a/translated/tech/20200331 5 ways to level up your Vim skills.md +++ b/published/20200331 5 ways to level up your Vim skills.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12077-1.html) [#]: subject: (5 ways to level up your Vim skills) [#]: via: (https://opensource.com/article/20/3/vim-skills) [#]: author: (Detlef Johnson https://opensource.com/users/deckart) From b740f3639678facffcad42187f778ae473460ac1 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Sun, 5 Apr 2020 23:27:08 +0800 Subject: [PATCH 175/218] Update 20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md --- ...pt in Ubuntu- What is It and How to Use it.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index 7026431f0c..b84bcf7c57 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -8,36 +8,48 @@ [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) The Keyring Concept in Ubuntu: What is It and How to Use it? +认识Ubuntu里的密钥环 ====== If you use [automatic login in Ubuntu][1] or other Linux distributions, you might have come across a pop-up message of this sort: +如果你使用ubuntu里的自动登录功能或者其他的Linux发行版, 你可能遇到过这种弹出消息: -**Enter password to unlock your login keyring -The login keyring did not get unlocked when you logged into your computer.** +**Enter password to unlock your login keyring 请输入密码解锁你的登录密钥环 +The login keyring did not get unlocked when you logged into your computer. 当你登录时登录密钥环未被解锁** ![Enter Password To Unlock Your Login Keyring Ubuntu][2] It keeps on popping up several times before disappearing if you keep on clicking cancel. You may wonder why do you keep seeing this keyring message all the time? +你需要点击多次取消才能让它消失。你可能想知道为什么系统会一直提示这个密钥环消息框? Let me tell you something. It’s not an error. It’s a security feature. +让我来告诉你答案。它其实并没有出错,它只是一个安全特性。 Surprised? Let me explain the keyring concept in Linux. +奇怪吗?下面就让我来解释下Linux里的密钥环概念。 ### What is keyring in Linux and why is it used? +Linux里的密钥环是什么以及为什么需要它? ![][3] Why do you use a keyring (also called [keychain][4]) in the real life? You use it to keep one or more keys grouped together so that they are easy to find and carry. +在现实生活中你为什么要用一个钥匙环(也叫钥匙链)? 你用它把一把或多把钥匙挂到一起, 以便于携带和寻找。 It’s the same concept in Linux. The keyring feature allows your system to group various passwords together and keep it one place. +Linux里也是类似的。密钥环功能使您的系统可以将各种密码放在一起,并将其保存在一个地方。 Most desktop environments like GNOME, KDE, Xfce etc use an implementation of [gnome-keyring][5] to provide this keyring feature in Linux. +大多数Linux桌面环境像GNOME, KDE, Xfce等采用gnome的密钥环实现来提供这个功能。 This keyring keeps your ssh keys, GPG keys and keys from applications that use this feature, like Chromium browser. By default, the **keyring is locked with a master password** which is often the login password of the account. +该密钥环保存了ssh密钥,GPG密钥以及使用此功能的应用程序(例如Chromium浏览器)的密钥。 默认情况下,**“密钥环”通过主密码来保护**,该密码通常是帐户的登录密码。 Every user on your system has its own keyring with (usually) the same password as that of the user account itself. When you login to your system with your password, your keyring is unlocked automatically with your account’s password. +系统上的每个用户都有自己的密钥环,(通常)密码与用户帐户本身的密码相同。 当您使用密码登录系统时,您的密匙环将使用您帐户的密码自动解锁。 The problem comes when you [switch to auto-login in Ubuntu][1]. This means that you login to the system without entering the password. In such case, your keyring is not unlocked automatically. +当您[启用Ubuntu中的自动登录功能时][1]时,就有问题了。这意味着您无需输入密码即可登录系统。 在这种情况下,您的密钥环不会自动解锁。 #### Keyring is a security feature From dd2301299b010ff80108cf6f445c6114162df5e9 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Mon, 6 Apr 2020 00:53:57 +0800 Subject: [PATCH 176/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200406=20Meet?= =?UTF-8?q?=20LBRY,=20A=20Blockchain-based=20Decentralized=20Alternative?= =?UTF-8?q?=20to=20YouTube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200406 Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube.md --- ...ed Decentralized Alternative to YouTube.md | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 sources/tech/20200406 Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube.md diff --git a/sources/tech/20200406 Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube.md b/sources/tech/20200406 Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube.md new file mode 100644 index 0000000000..6c6c84e084 --- /dev/null +++ b/sources/tech/20200406 Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube.md @@ -0,0 +1,107 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube) +[#]: via: (https://itsfoss.com/lbry/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +Meet LBRY, A Blockchain-based Decentralized Alternative to YouTube +====== + +_**LBRY is a new Blockchain-based, open source platform for sharing digital content. It is gaining popularity as a decentralized alternative to YouTube but LBRY is more than just a video sharing service.**_ + +### LBRY is an open source blockchain based platform for content sharing + +At the core of it, [LBRY][1] is a new protocol which is a peer to peer, decentralized file sharing and payment network secured by [blockchain][2] technology. Anyone can build apps on top of LBRY protocol that interact with digital content on the LBRY network. But these technical stuff is for developers. + +As a user you can use [LBRY platform][3] for watching videos, listening to music and reading eBooks. + +As a content creator, you can use LBRY to share your digital content like video, music, images, podcasts, eBooks etc. + +Unlike YouTube, your activities are not tracked to serve you ads. In fact, LBRY is ad free. If you are logged into the network, you won’t see any ads anywhere on its website. + +### No ads, and you may even earn cryptocurrency for viewing videos on LBRY + +The LBRY is ‘governed’ by its own cryptocurrency called LBC (LBRY Credits). + +Like any other cryptocurrency, you can mine it, buy it or get it from someone else. Content creators can set a price in LBC for streaming their content or they can provide it for free and get tipped in LBC by the viewers. + +Don’t worry, you don’t necessarily need to buy LBC. Since its new, you’ll get LBC as rewards for doing simple tasks as viewing videos, exploring LBRY, following channels etc. In fact, you’ll get a few LBC simply for creating an account at LBRY and setting up your profile. + +![LBRY Rewards Sample][4] + +You’ll also get LBC in rewards for inviting other users to LBRY platform. For example, if you join [LBRY from It’s FOSS invite link][5], both you and I get LBC as reward. + +The LBRY reward system will change once the platform grows. Remember initially Bitcoins were also readily available and now it values thousands of dollars. + +### Open source, peer to peer, blockchain: LBRY ticks all the right blocks for a privacy-aware user + +![LBRY interface][6] + +While the cyptocurrency is essential to create a fair and open marketplace in LBRY, its main feature is the peer to peer, decentralized network using blockchain. LBRY puts emphasis on treating you as user, not a product. + +Everything built to power LBRY is open source. You can find the entire source code on its GitHub repository. + +[LBRY on GitHub][7] + +The [LBRY FAQ page][8] is a good resource to know more about LBRY and how it works. + +### Using LBRY + +![][9] + +If you want to give LBRY a try, you can check out its [video sharing platform][3]. If you are logged in or using its app, you won’t see any ads. + +Creating an account on LBRY will also let you get the LBRY rewards (i.e. the LBC cryptocurrency). You can watch the videos on LBRY web site or on its application. + +I have noticed that video streaming is slightly faster when you use the app instead of web browser. [LBRY app is available][10] for Linux, Windows, macOS, iOS and Android. + +As a web publisher, It’s FOSS is on all major social media channels. We appreciate and respect such decentralized services and try to make a presence on such offbeat platform. You can [find us on Mastodon][11], a [decentralized alternative to Twitter][12]. You can also find It’s FOSS on LBRY. + +While we will be putting our video content primarily on YouTube and Vimeo (for ad-free experience), our YouTube content will be automatically available on LBRY as well. + +So if you are going to use LBRY, you can follow us there to watch all our videos on LBRY. + +[Join LBRY and follow It’s FOSS][5] + +### Conclusion + +There may not be a lot of content on LBRY right now. LBRY is trying to encourage and reward creators who publish on LBRY first instead of YouTube. + +LBRY is in early stages but its team is working hard to become a viable alternative to YouTube. It has an open road map where they have shared an insight into all their future plans. You may [check it out yourself][13]. + +By the way, LBRY is not the only platform of this kind. [PeerTube][14] is a similar service that provides a peer to peer video sharing platform. + +_**If you are someone who doesn’t like tech giants like Google, Microsoft, Huawei ‘spying’ on your data, keeping a profile of you to serve you targeted ads, you may try platforms like PeerTube and LBRY.**_ + +What do you think of LBRY? Are you already using something like LBRY or PeerTube? If not, are you willing to give it a try? What’s your overall feeling about P2P platforms like LBRY? Do share your views in the comment section. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/lbry/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://lbry.com/ +[2]: https://en.wikipedia.org/wiki/Blockchain +[3]: https://lbry.tv/ +[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/lbry-rewards-sample.png?ssl=1 +[5]: https://lbry.tv/$/invite/@itsfoss:0 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/lbry.png?ssl=1 +[7]: https://github.com/lbryio/ +[8]: https://lbry.com/faq +[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/lbry-interface.jpg?ssl=1 +[10]: https://lbry.com/get +[11]: https://mastodon.social/@itsfoss +[12]: https://itsfoss.com/mastodon-open-source-alternative-twitter/ +[13]: https://lbry.com/roadmap +[14]: https://joinpeertube.org/ From 7c43be9ed00020ca35be8a1d949c87e117a9875a Mon Sep 17 00:00:00 2001 From: DarkSun Date: Mon, 6 Apr 2020 00:55:18 +0800 Subject: [PATCH 177/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200405=20Book?= =?UTF-8?q?=20review:=20Nine=20Lies=20About=20Work?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200405 Book review- Nine Lies About Work.md --- ...00405 Book review- Nine Lies About Work.md | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 sources/tech/20200405 Book review- Nine Lies About Work.md diff --git a/sources/tech/20200405 Book review- Nine Lies About Work.md b/sources/tech/20200405 Book review- Nine Lies About Work.md new file mode 100644 index 0000000000..a4c06438aa --- /dev/null +++ b/sources/tech/20200405 Book review- Nine Lies About Work.md @@ -0,0 +1,106 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Book review: Nine Lies About Work) +[#]: via: (https://opensource.com/open-organization/20/4/book-review-nine-lies-about-work) +[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) + +Book review: Nine Lies About Work +====== +An examination of common work misconceptions and how open organizations +are often ahead of the curve. +![Carrot on a stick][1] + +In _Nine Lies About Work_, authors Marcus Buckingham and Ashley Goodall examine what we might consider "common theories" about aspects of contemporary organizational life—and they debunk those theories. The book's so-called "lies" are, therefore, not really lies but rather common beliefs about work that simply aren't accurate in actual working environments today. + +In this review, I'll outline all nine of those misconceptions and explain what the authors believe is really true in the case of each one. But then I'll focus more on explaining the misconceptions that are especially relevant to [open organizations][2]. + +### Liar, liar + +Buckingham and Goodall address the following nine "lies" about work. + +Lie #1—People care about which company they work for. The authors believe that people really care about which team they're directly working on. That is where we [find engagement][3]. + +Lie #2—The best plan wins. The authors believe that the best front-line intelligence and feedback wins. In this rapidly changing world, [plans only tell you where you are now][4] and where you may be in the very near future (that is, in a few weeks or months). + +Lie #3—The best companies cascade goals. The authors believe that the best companies [disseminate downward meaning][5] (that is, public purpose) to their staff. + +Lie #4—The best people are well-rounded. The authors believe that the best people are good only at specific tasks (and not _necessarily_ other tasks). + +Lie #5—People need feedback. The authors believe that people need nonjudgmental, uncritical attention, and to be recognized; they don't need criticism. + +Lie #6—People can reliably rate other people. The authors believe that people can reliably rate their own experience and [evaluate their own performance][6] often better than others can. + +Lie #7—People have potential. The authors believe that every person possesses individual needs and individual feelings of forward momentum and progress. Therefore, their potential cannot be determined. + +Lie #8—Work-life balance matters most. The authors believe that love-in-work matters most. Companies should promote each individual finding the [love of what they do at work][7], then expand on that love. Companies should promote having fun at work, but they rarely do. + +Lie #9—Leadership is a thing. The authors believe that [we each follow people with a vision][8] in which we believe. To say a person is "a good leader" is, therefore, only situational according to individual followers. No universal criteria, rule, or model for effective leadership exists. + +### Teams over companies + +Now let's take a hard look at Lie #1. The authors believe that someone seeking a job will care about the quality of a company, their status inside that company, and their pay, but as soon as work begins, team engagement becomes far more important to them. That's because teams focus on what we do on a daily basis. Those teams might even be unofficial groups inside an organization—"[internal communities][9]," we might call them. Buckingham and Goodall provide eight characteristics of great teams, and these characteristics would ring equally true in [open organization communities][2]. The authors present them separated into two categories—"We"-related and "Me"-related): + + * The members are enthusiastic about the team mission ("We"). + * Each is surrounded by people who share the same values ("We"). + * Their teammates will stand behind them when needed ("We") + * The members feel confident regarding the future of the company ("We"). + * Each member understands what is expected ("Me"). + * Everyone feels they have a chance to use their particular strengths ("Me"). According to a 2018 study from ADP Research Institute, cited in the book's appendix, if we can use our strengths that bring us joy and energizes us 20% of the time at work, total work engagement skyrockets. + * All members can be recognized for excellent work ("Me"). + * The members are challenged to grow ("Me"). + + + +All these characteristics describe a healthy culture in an open organization community. + +According to the authors, a company should explore what [informal, unofficial teams][10] it has and learn what they're involved in. Usually, they say, the average person is on five teams, each with different purposes. Ask people if they have these types of teams (or a single mentor) with whom they can consult inside the company. Larger, more formal groups are less important. + +More important, however, are lunch meetings between informal team members or chats in corners discussing how they can help each other. When I was providing sales seminars, for example, I would walk around the company cafeteria and have these discussions with global sales departments. By doing this, I developed strong communities over a 20-year period. The quality and quantities of these teams are directly connected to employee engagement and are extremely important to the success of a company, according to the authors. An organizational leader's primary job is to create an environment where these teams can grow and thrive. + +### Forget planning + +Next, let's turn to Lie #2: the best plan wins. Buckingham and Goodall believe the best front-line intelligence wins. Open organizations [rely a great deal on bottom-up management techniques][11], which fits nicely into what the authors are saying here. All the action is on the front-line, and real-time reporting to management on situational developments is extremely important, according to the authors. Conditions are changing so fast that [by the time some plans are introduced, they are already out-of-date][12]. That is why open organizations strongly believe in cultivating ground-level decision-making practices. People closest to the issues know what's happening. + +Regarding [open organization principles][2], we might note the emphasis on getting front-line information in real-time and broadly distributing it as much as possible (inclusivity, transparency, broader community), as well as encouraging and reporting front-line suggestions (collaboration, adaptability). Communication is two-way. To share information efficiently and understand when it's needed, Buckingham and Goodall believe that many small, short, frequent meetings are always more productive than large, long, infrequent ones. + +### Don't judge + +Next, let's examine Lie #5: People need feedback. The authors do recognize people's need for nonjudgmental, uncritical attention, and their desire to be recognized. A leader's level of uncritical attention is directly connected to the level of staff engagement. Just asking, "[How are you doing in your work?][13]" and "Well, how can I help?" is all that is needed. + +The authors believe that the worst managers are those that ignore people. Average managers don't ignore people, but they give negative feedback, which weakens their teams' feelings of engagement. The best managers, team leaders, or community leaders don't ignore and don't judge. At least weekly, they simply ask questions and provide help if needed. A high degree of managerial attention directly improves front-line engagement. The authors believe that it makes members feel connected, supported, and understood. + +Buckingham and Goodall believe that looking at a staff's negative qualities is a natural tendency. Therefore, leaders and managers must make strong efforts to avoid doing so. This effort is worth it, the authors argue, as it results in greater performance, engagement, and growth. For example, when I was giving sales manager training, I frequently needed to address the situation of handling sales staff coming to the manager to help them with a customer problem. I recommended that the manager just ask the sales staff a simple question: "What did you do and say when you met the customer, and what would you do differently if you could visit the customer all over again?" This forced salespeople to come up with their own advice. + +### Concluding thoughts + +_Nine Lies about Work_ has much to teach anyone interested in open organizations. Buckingham is a global researcher in human strengths development and performance; Goodall is a senior VP in leadership and team intelligence at Cisco. It is amazing how closely their beliefs align with open organization principles. The ways they articulate those beliefs in this book are enlightening. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/open-organization/20/4/book-review-nine-lies-about-work + +作者:[Ron McFarland][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/ron-mcfarland +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_pink2.png?itok=I5Wgct6V (Carrot on a stick) +[2]: https://opensource.com/open-organization/resources/open-org-definition +[3]: https://opensource.com/open-organization/18/10/understanding-engagement-empowerment +[4]: https://opensource.com/open-organization/19/5/planning-future-unknowable +[5]: https://opensource.com/open-organization/18/7/culture-of-experimentation-in-4-steps +[6]: https://opensource.com/open-organization/15/5/measuring-performance-open-source-way +[7]: https://opensource.com/open-organization/15/11/reigniting-employee-passion +[8]: https://opensource.com/open-organization/18/12/what-is-open-leadership +[9]: https://opensource.com/open-organization/19/11/what-is-community-practice +[10]: https://opensource.com/open-organization/20/1/why-build-community-of-practice +[11]: https://opensource.com/open-organization/17/3/making-better-open-decisions +[12]: https://opensource.com/open-organization/18/3/try-learn-modify +[13]: https://opensource.com/open-organization/16/10/how-ask-why-without-upsetting-anyone From 0d8d697091c5286edc3981f8a63e6bf31e96f5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Mon, 6 Apr 2020 08:37:48 +0800 Subject: [PATCH 178/218] Translated --- ...ox Linux desktop as your window manager.md | 164 ------------------ ...ox Linux desktop as your window manager.md | 164 ++++++++++++++++++ 2 files changed, 164 insertions(+), 164 deletions(-) delete mode 100644 sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md create mode 100644 translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md diff --git a/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md b/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md deleted file mode 100644 index 6d1d84b9bd..0000000000 --- a/sources/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md +++ /dev/null @@ -1,164 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (robsean) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use the Fluxbox Linux desktop as your window manager) -[#]: via: (https://opensource.com/article/19/12/fluxbox-linux-desktop) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Use the Fluxbox Linux desktop as your window manager -====== -This article is part of a special series of 24 days of Linux desktops. -Fluxbox is very light on system resources, yet it has vital Linux -desktop features to make your user experience easy, blazingly efficient, -and unduly fast. -![Text editor on a browser, in blue][1] - -The concept of a desktop may differ from one computer user to another. Many people see the desktop as a home base, or a comfy living room, or even a literal desktop where they place frequently used notepads, their best pens and pencils, and their favorite coffee mug. KDE, GNOME, Pantheon (and so on) provide that kind of comfort on Linux. - -But for some users, the desktop is just empty monitor space, a side effect of not yet having any free-floating application windows projected directly onto their retina. For these users, the desktop is a void over which they can run applications—whether big office and graphic suites, or a simple terminal window, or docked applets—to manage services. This model of operating a [POSIX][2] computer has a long history, and one branch of that family tree is the *box window managers: Blackbox, Fluxbox, and Openbox. - -[Fluxbox][3] is a window manager for X11 systems that's based on an older project called Blackbox. Blackbox development was waning when I discovered Linux, so I fell into Fluxbox, and I've used it ever since on at least one of my active systems. It is written in C++ and is licensed under the MIT open source license. - -### Installing Fluxbox - -You are likely to find Fluxbox included in the software repository of your Linux distribution, but you can also find it on [Fluxbox.org][4]. If you're already running a different desktop, it's safe to install Fluxbox on the same system because Fluxbox doesn't predetermine any configuration or accompanying applications. - -After installing Fluxbox, log out of your current desktop session so you can log into your new one. By default, your session manager (KDM, GDM, LightDM, or XDM, depending on your setup) will continue to log you into your previous desktop, so you must override that before logging in. - -To override the desktop with GDM: - -![Select your desktop session in GDM][5] - -Or with KDM: - -![Select your desktop session with KDM][6] - -### Configuring the Fluxbox desktop - -When you first log in, the screen is mostly empty because all Fluxbox provides are panels (for a taskbar, system tray, and so on) and window decoration for application windows. - -![Default Fluxbox configuration on CentOS 7][7] - -If your distribution delivers a plain Fluxbox desktop, you can set a background for your desktop using the **feh** command (you may need to install it from your distribution's repository). This command has a few options for setting the background, including **\--bg-fill** to fill the screen with your wallpaper of choice, **\--bg-scale** to scale it to fit, and so on. - - -``` -`$ feh --bg-fill ~/photo/oamaru/leaf-spiral.jpg` -``` - -![Fluxbox with a theme applied][8] - -By default, Fluxbox auto-generates a menu, available with a right-click anywhere on the desktop, that gives you access to applications. Depending on your distribution, this menu may be very minimal, or it may list all the launchers in your **/usr/share/applications** directory. - -Fluxbox configuration is set in text files, and those text files are contained in the **$HOME/.fluxbox** directory. You can: - - * Set keyboard shortcuts in **keys** - * Set startup services and applications in **startup** - * Set desktop preferences (such as the number of workspaces, locations of panels, and so on) in **init** - * Set menu items in **menu** - - - -The text configuration files are easy to reverse-engineer, but you also can (and should) read the Fluxbox [documentation][9]. - -For example, this is my typical menu (or at least the basic structure of it): - - -``` -# to use your own menu, copy this to ~/.fluxbox/menu, then edit -# ~/.fluxbox/init and change the session.menuFile path to ~/.fluxbox/menu - -[begin] (fluxkbox) - [submenu] (apps) {} -  [submenu] (txt) {} -   [exec] (Emacs 23 (text\\)) { x-terminal-emulator -T "Emacs (text)" -e /usr/bin/emacs -nw} <> -   [exec] (Emacs (X11\\)) {/usr/bin/emacs} <> -   [exec] (LibreOffice) {/usr/bin/libreoffice} -  [end] -  [submenu] (code) {} -   [exec] (qtCreator) {/usr/bin/qtcreator} -   [exec] (eclipse) {/usr/bin/eclipse} -  [end] -  [submenu] (graphics) {} -   [exec] (ksnapshot) {/usr/bin/ksnapshot} -   [exec] (gimp) {/usr/bin/gimp} -   [exec] (blender) {/usr/bin/blender} -  [end] -  [submenu] (files) {} -   [exec] (dolphin) {/usr/bin/dolphin} -   [exec] (konqueror) { /usr/bin/kfmclient openURL $HOME } -  [end] -  [submenu] (network) {} -   [exec] (firefox) {/usr/bin/firefox} -   [exec] (konqueror) {/usr/bin/konqueror} -  [end] - [end] -## change window manager or work env -[submenu] (environments) {} - [restart] (flux)  {/usr/bin/startfluxbox} - [restart] (ratpoison)  {/usr/bin/ratpoison} - [exec] (openIndiana) {/home/kenlon/qemu/startSolaris.sh} -[end] - -[config] (config) - [submenu] (styles) {} -  [stylesdir] (/usr/share/fluxbox/styles) -  [stylesdir] (~/.fluxbox/styles) - [end] -[workspaces] (workspaces) -[reconfig] (reconfigure) -[restart] (restart) -[exit] (exeunt) -[end] -``` - -The menu also provides a few preference settings, such as the ability to pick a theme and restart or log out from your Fluxbox session. - -I launch most applications using keyboard shortcuts, which are entered into the **keys** configuration file. Here are some examples (the **Mod4** key is the Super key, which I use to designate global shortcuts): - - -``` -# open apps -Mod4 t :Exec konsole -Mod4 k :Exec konqueror -Mod4 z :Exec fbrun -Mod4 e :Exec emacs -Mod4 f :Exec firefox -Mod4 x :Exec urxvt -Mod4 d :Exec dolphin -Mod4 q :Exec xscreensaver-command -activate -Mod4 3 :Exec ksnapshot -``` - -Between these shortcuts and an open terminal, I have little use for a mouse during most of my workday, so there's no wasted time switching from one controller to another. And because Fluxbox stays well out of the way, there's little distraction. - -### Why you should use Fluxbox - -Fluxbox is very light on system resources, yet it has vital features to make your user experience easy, blazingly efficient, and unduly fast. It's simple to customize, and it allows you to define your own workflow. You don't have to use Fluxbox's panels, because there are other excellent panels out there. You can even middle-click and drag two separate application windows into one another so that they become one window, each in its own tab. - -The possibilities are endless, so try the steady simplicity that is Fluxbox on your Linux box today! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/fluxbox-linux-desktop - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue) -[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains -[3]: http://fluxbox.org -[4]: http://fluxbox.org/download/ -[5]: https://opensource.com/sites/default/files/advent-gdm_0.jpg (Select your desktop session in GDM) -[6]: https://opensource.com/sites/default/files/advent-kdm.jpg (Select your desktop session with KDM) -[7]: https://opensource.com/sites/default/files/advent-fluxbox-default.jpg (Default Fluxbox configuration on CentOS 7) -[8]: https://opensource.com/sites/default/files/advent-fluxbox-green.jpg (Fluxbox with a theme applied) -[9]: http://fluxbox.org/features/ diff --git a/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md b/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md new file mode 100644 index 0000000000..3fd04333d3 --- /dev/null +++ b/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md @@ -0,0 +1,164 @@ +[#]: collector: (lujun9972) +[#]: translator: (robsean) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Use the Fluxbox Linux desktop as your window manager) +[#]: via: (https://opensource.com/article/19/12/fluxbox-linux-desktop) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +使用 Fluxbox Linux desktop 作为你的窗口管理器 +====== +这篇文章是Linux 桌面24天的特别系列的一部分。 +Fluxbox 对系统资源的占用非常轻量,但是它拥有重要的 Linux +桌面特色来使你的用户体验轻松快速高效。 +![在蓝色区域中是,在浏览器上的文本编辑器][1] + +桌面的概念可谓是仁者见仁智者见智。很多人把桌面看作一个家基地,或者一个舒适的客厅,甚至是一个字面意义上的桌面,在其中放置着他们经常使用的记事本,最好的笔和铅笔,还有他们最喜欢的咖啡杯。KDE, GNOME, Pantheon (等等)在 Linux 上提供了这种舒适的生活方式。 + +但是对一些用户来说,桌面只是一个空荡荡的监控控件,将还没有自由浮动的应用程序窗口直接投射到显示器上的一个侧面效果。对于这些用户来说,桌面是真空的,在其中他们可以运行应用程序—不管的大型办公软件和图形套件,还是一个简单的终端窗口,或是来管理服务的停靠小程序。这种操作一台 [POSIX][2] 计算机的模式有很长的历史,该家族树的一支是 *box 窗口管理器:Blackbox, Fluxbox 和 Openbox 。 + +[Fluxbox][3] 是一个针对 X11 系统的窗口管理器,它基于一个较老的名为 Blackbox 的项目。当我发现 Linux 时,Blackbox 的开发已进入衰退期,因此我进入 Fluxbox ,此后我至少在一个以上的活跃的系统上使用它。它使用 C++ 编写,并在 MIT 开源许可证下授权。 + +### 安装 Fluxbox + +你很可能会在你的 Linux 发行版的存储库中找到 Fluxbox ,但是你也可以在 [Fluxbox.org][4] 上找到它。如果你正在运行一个不同的桌面,在同一个系统上安装 Fluxbox 是安全的,因为 Fluxbox 不预先决定任何配置或附带应用程序。 + +在安装 Fluxbox 后,注销你当前的桌面会话,以便你可以登录一个新的桌面会话。默认情况下,你的桌面会话管理器 (KDM, GDM, LightDM 或 XDM,取决于你的安装设置) 将你继续登录到上一个在桌面,所以你在登录前必需要覆盖上一个桌面。 + +使用 GDM 覆盖一个桌面: + +![在 GDM 中选择你的桌面会话][5] + +或者使用 KDM: + +![使用 KDM 选择你的桌面会话][6] + +### 配置 Fluxbox 桌面 + +当你第一次登录到桌面时,屏幕大部分是空的,因为 Fluxbox 提供的所有东西是面板(用于任务栏,系统托盘等等)和用于应用程序窗口的窗口装饰品。 + +![在 CentOS 7 上的默认 Fluxbox 配置][7] + +如果你的发行版提供一个简单的 Fluxbox 桌面,你可以使用 **feh** 命令 (你可能需要从你的发行版存储库中来安装它) 来为你的桌面设置背景。这个命令有一些用于设置背景的选项,包括使用你选择的墙纸来填充屏幕的 **\--bg-fill** ,来按比例缩放的 **\--bg-scale** 等等选项。 + + +``` +`$ feh --bg-fill ~/photo/oamaru/leaf-spiral.jpg` +``` + +![应用主题的 Fluxbox ][8] + +默认情况下,Fluxbox 自动生成一个菜单,在桌面上任意位置右键单击可用该菜单,这给予你访问应用程序的能力。取决于你的发行版,这个菜单可能非常小,也可能列出 **/usr/share/applications** 目录中的所有启动程序。 + +Fluxbox 配置是在文本文件中设置的,这些文本文件包含在 **$HOME/.fluxbox** 目录中。你可以: + + * 在 **keys** 中设置键盘快捷键 + * 在 **startup** 中启动服务和应用程序 + * 在 **init** 设置桌面首选项(例如工作区数量、面板位置等等) + * 在 **menu** 中设置菜单项 + + + +该文本配置文件非常易于逆向工程,但是你也可以 (并且是应该) 阅读 Fluxbox [文档][9] 。 + +例如,这是我的典型菜单 (或者说至少有它的基本结构): + + +``` +# 为使用你自己的菜单,复制这些文本到 ~/.fluxbox/menu,然后编辑 +# ~/.fluxbox/init ,并更改 session.menuFile 文件到 ~/.fluxbox/menu + +[begin] (fluxkbox) + [submenu] (apps) {} + [submenu] (txt) {} + [exec] (Emacs 23 (text\)) { x-terminal-emulator -T "Emacs (text)" -e /usr/bin/emacs -nw} <> + [exec] (Emacs (X11\)) {/usr/bin/emacs} <> + [exec] (LibreOffice) {/usr/bin/libreoffice} + [end] + [submenu] (code) {} + [exec] (qtCreator) {/usr/bin/qtcreator} + [exec] (eclipse) {/usr/bin/eclipse} + [end] + [submenu] (graphics) {} + [exec] (ksnapshot) {/usr/bin/ksnapshot} + [exec] (gimp) {/usr/bin/gimp} + [exec] (blender) {/usr/bin/blender} + [end] + [submenu] (files) {} + [exec] (dolphin) {/usr/bin/dolphin} + [exec] (konqueror) { /usr/bin/kfmclient openURL $HOME } + [end] + [submenu] (network) {} + [exec] (firefox) {/usr/bin/firefox} + [exec] (konqueror) {/usr/bin/konqueror} + [end] + [end] +## 更改窗口管理器或工作环境 +[submenu] (environments) {} + [restart] (flux) {/usr/bin/startfluxbox} + [restart] (ratpoison) {/usr/bin/ratpoison} + [exec] (openIndiana) {/home/kenlon/qemu/startSolaris.sh} +[end] + +[config] (config) + [submenu] (styles) {} + [stylesdir] (/usr/share/fluxbox/styles) + [stylesdir] (~/.fluxbox/styles) + [end] +[workspaces] (workspaces) +[reconfig] (reconfigure) +[restart] (restart) +[exit] (exeunt) +[end] +``` + +该菜单也提供一些首选项设置,例如,选择一个主题和从 Fluxbox 会话中重启或注销的能力。 + +我使用键盘快捷键来启动大多数的应用程序,这些快捷键写入到 **keys** 配置文件中。这里有一些示例 ( **Mod4** 按键是超级按键,我使用其来指定全局快捷键): + + +``` +# 打开应用程序 +Mod4 t :Exec konsole +Mod4 k :Exec konqueror +Mod4 z :Exec fbrun +Mod4 e :Exec emacs +Mod4 f :Exec firefox +Mod4 x :Exec urxvt +Mod4 d :Exec dolphin +Mod4 q :Exec xscreensaver-command -activate +Mod4 3 :Exec ksnapshot +``` + +在这些快捷方式和一个打开的终端之间,在我工作日的大部分时间内很少使用鼠标,因此从一个控制器切换到另一个控制器不会浪费时间。并且因为 Fluxbox 很好地避开了控制器之间切换的方法,因此在其中操作没有一丝干扰。 + +### 为什么你应该使用 Fluxbox + +Fluxbox 对系统资源的占用非常轻量,但是它拥有重要的功能来使你的用户体验轻松快速高效。它很容易定制,并且它允许你定义你自己的工作流。你不必使用 Fluxbox 的面板,因为在这里有其它的极好的面板。你甚至可以鼠标双击和拖动两个独立的应用程序窗口到彼此之中,以便它们成为一个窗口,每个窗口都有自己的选项卡。 + + +无穷的可能性,所以今天就在你的 Linux 上尝试一下 Fluxbox 的简单稳定吧! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/fluxbox-linux-desktop + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[robsean](https://github.com/robsean) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue) +[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains +[3]: http://fluxbox.org +[4]: http://fluxbox.org/download/ +[5]: https://opensource.com/sites/default/files/advent-gdm_0.jpg (Select your desktop session in GDM) +[6]: https://opensource.com/sites/default/files/advent-kdm.jpg (Select your desktop session with KDM) +[7]: https://opensource.com/sites/default/files/advent-fluxbox-default.jpg (Default Fluxbox configuration on CentOS 7) +[8]: https://opensource.com/sites/default/files/advent-fluxbox-green.jpg (Fluxbox with a theme applied) +[9]: http://fluxbox.org/features/ From 65fa4f5493d600bd4bf2c54f7445860d1ad52627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91?= Date: Mon, 6 Apr 2020 08:40:48 +0800 Subject: [PATCH 179/218] Translating --- ...nstalling Kali Linux on VirtualBox- Quickest - Safest Way.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20190205 Installing Kali Linux on VirtualBox- Quickest - Safest Way.md b/sources/tech/20190205 Installing Kali Linux on VirtualBox- Quickest - Safest Way.md index e8722c63cc..3b7629d2a6 100644 --- a/sources/tech/20190205 Installing Kali Linux on VirtualBox- Quickest - Safest Way.md +++ b/sources/tech/20190205 Installing Kali Linux on VirtualBox- Quickest - Safest Way.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (robsean) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 1c6dbb9797f719c441518b6bb33bca1fb9971e65 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 6 Apr 2020 09:59:21 +0800 Subject: [PATCH 180/218] translating --- ...epository (AUR)- How to Use AUR on Arch and Manjaro Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md b/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md index c9c4ff7340..550ac3f9e4 100644 --- a/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md +++ b/sources/tech/20200404 What is Arch User Repository (AUR)- How to Use AUR on Arch and Manjaro Linux.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 4e56d10e589e1a7c0abf59a43543f78dcc1625d6 Mon Sep 17 00:00:00 2001 From: MjSeven Date: Mon, 6 Apr 2020 10:44:54 +0800 Subject: [PATCH 181/218] =?UTF-8?q?=E5=88=9D=E7=A8=BF=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ing tasks on Linux using the at command.md | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) rename {sources => translated}/tech/20200403 Scheduling tasks on Linux using the at command.md (62%) diff --git a/sources/tech/20200403 Scheduling tasks on Linux using the at command.md b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md similarity index 62% rename from sources/tech/20200403 Scheduling tasks on Linux using the at command.md rename to translated/tech/20200403 Scheduling tasks on Linux using the at command.md index 42b1025fe4..81b9d6f7a4 100644 --- a/sources/tech/20200403 Scheduling tasks on Linux using the at command.md +++ b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md @@ -8,22 +8,28 @@ [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) Scheduling tasks on Linux using the at command +在 Linux 上使用 at 命令来管理任务 ====== The at command makes it easy to schedule Linux tasks to be run at any time or date you choose. Check out what it can do for you. +at 命令很容易安排 Linux 任务在你选择的任何时间或日期运行,看看它能为你做什么。 + romkaz / Getty Images When you want commands or scripts to run at some particular time, you don’t have to sit with your fingers hovering over the keyboard waiting to press the enter key or even be at your desk at the right time. Instead, you can set your task to be run through the **at** command. In this post, we’ll look at how tasks are scheduled using **at**, how you can precisely select the time you want your process to run and how to view what’s been scheduled to run using **at**. +当你想要命令或脚本在某个特定时间运行时,你不需要用你的手指在键盘上盘旋等待按下 enter 键,甚至在特定时间坐在办公桌前。相反,你可以通过 **at** 命令来设置任务。在本文中,我们将研究如何使用 **at** 来安排任务,如何精确选择要运行的时间以及如何查看使用 **at** 安排的时间。 ### at vs cron For those who’ve been scheduling tasks on Linux systems using **cron**, the **at** command is something like **cron** in that you can schedule tasks to run at a selected time, but **cron** is used for jobs that are run periodically – even if that means only once a year. Most **cron** jobs are set up to be run daily, weekly or monthly, though you control how often and when. +对于那些使用 **cron** 在 Linux 系统上计划任务的人来说,**at** 命令类似于 **cron**,因为你可以计划在选定时间运行的任务,但是 **cron** 用于定期运行的工作-即使着意味着每年仅一次。大多数 **cron** 作业都设置为每天,每周或每月运行,尽管你可以控制频率和时间。 The **at** command, on the other hand, is used for tasks which are run only once. Want to reboot your system at midnight tonight? No problem, **at** can do that for you assuming you have the proper permissions. If you want the system rebooted every Saturday night at 2 a.m., use **cron** instead. +另一方面,**at** 命令用于仅运行一次的任务。是否想在今晚午夜重启系统?没问题,假设你拥有适当的权限,**at** 可以为你完成此操作。如果你希望系统在每个星期六晚上凌晨 2 点重启,请改用 **cron**。 -### Using at +### 使用 at The **at** command is easy to use ,and there are only a few things to remember. A simple use of **at** might look like this: - +**at** 命令易于使用,只需记住几件事。**at** 的简单用法如下所示: ``` $ at 5:00PM at> date >> thisfile @@ -31,11 +37,13 @@ at> ``` After typing “at” and the time the command should be run, **at** prompts you for the command to be run (in this case, the **date** command). Type **^D** to complete your request. +在输入 "at" 并允许命令的时间后,**at** 会提示你运行该命令(在这种情况下,是 "date" 命令)。输入 **^D** 来完成请求。 Assuming we set up this **at** command earlier than 5 p.m., the date and time will be added to the end of a file named “thisfile” later the same day. Otherwise, the command will run at 5 p.m. the following day. +假设我们在下午 5 点之前设置此 **at** 命令,那么日期和时间将在当天晚些时候添加到名为 "thisfile" 的文件的末尾。否则,该命令将在下午 5 点运行。 You can enter more than one command when interacting with the **at** command. If you want more than one command to be run at the same time, simply specify more than one command line: - +与 **at** 命令进行交互时,可以输入多个命令。如果要同时运行多个目录,只需指定多个命令行即可: [][1] ``` @@ -47,8 +55,10 @@ at> ``` In the commands above, we’re using a regular user account and adding some simple text to a file in that user’s home directory. If it’s after 6:22 a.m. when this command is run, the command will run the following day because 6:22 is taken to mean 6:22 a.m. If you want it to run at 6:22 p.m., either use 6:22 PM or 18:22. “6:22 PM” also works. +在上面的命令中,我们使用常规账户,将一些简单的文本添加到该用户主目录的文件中。如果运行此命令的时间是上午 6:22 之后,则该命令将在第二天运行,因为 6:22 表示上午 6:22。如果要使其在下午 6:22 运行,使用 6:22 PM 或者 18:22。 You can use **at** to schedule commands to run on specific dates either by specifying the dates or specifying dates and times like “10:00AM April 15 2021” or “noon + 5 days” (run at noon five days from today). Here are some examples: +你可以通过指定日期或指定日期和时间,例如 “2021 年 4 月 15 日上午 10:00”或“中午 + 5 天”(从今天起中午五点运行),使用 **at** 来安排命令在特定日期运行。以下是些例子: ``` at 6PM tomorrow @@ -58,6 +68,7 @@ at 9:15 + 1000 days ``` After you specify the command to run and press **^D**, you will notice that the **at** command has assigned a job number to each request. This number will show up in the **at** command's job queue. +指定要运行的命令并按下 **^D** 后,你会注意到 **at** 命令已为每个请求分配了作业编号,此数字将显示在 **at** 命令的作业队列中。 ``` $ at noon + 1000 days @@ -67,9 +78,10 @@ at> job 36 at Tue Dec 27 12:00:00 2022 <== job # is 36 ``` -### Checking the queue +### Checking the queue检查队列 You can look at the queue of **at** jobs with the **atq** (at queue) command: +你可以使用 **atq**(at queue) 命令来查看 **at** 作业队列: ``` $ atq @@ -80,6 +92,7 @@ $ atq ``` If you need to cancel one of the jobs in the queue, use the **atrm** (at remove) command along with the job number. +如果你需要取消队列中作业之一,使用 **atrm**(at remote) 命令和作业编号: ``` $ atrm 32 @@ -90,6 +103,7 @@ $ atq ``` You can look into the details of a scheduled task using the **at -c** command. Additional details (the active search path, etc.) are also available, but the bottom lines of the output will show you what command has been scheduled to run. +你可以使用 **at -c** 命令来查看计划任务的详细信息。还可以提供其它详细信息(活动的搜索路径等),但是输出的底行将显示已计划运行的命令。 ``` $ at -c 36 | tail -6 @@ -101,10 +115,12 @@ date >> thisfile ``` Notice that the command shown begins with testing whether the user’s directory can be entered with a **cd** command. The job will exit with an error if this is not the case. Otherwise the command specified when the **at** command was issued will be run. Read the command as "move into /home/shs OR exit with the error shown". +注意,显示的命令首先测试是否可以通过 **cd** 命令输入用户目录。如果不是这种情况,作业将退出并出现错误。否则,将运行发出 **at** 目录时指定的命令。将命令读为 "move into /home/shs 或退出并显示错误"。 -### Running jobs as root +### Running jobs as root以 root 身份运行作业 To run **at** jobs as root, simply use **sudo** with your **at** command like this: +要以 root 身份运行 **at** 作业,只需将 **sudo** 与你的 **at** 命令一起使用,如下所示: ``` $ sudo at 8PM @@ -116,6 +132,7 @@ job 37 at Wed Apr 1 16:00:00 2020 ``` Notice that the root task shows up in the queue with **root** as the one to execute it. +注意,根任务以 **root** 作为执行任务显示在队列中。 ``` 35 Mon Apr 6 12:00:00 2020 a shs @@ -123,9 +140,10 @@ Notice that the root task shows up in the queue with **root** as the one to exec 37 Wed Apr 1 20:00:00 2020 a root <== ``` -### Running scripts +### 运行脚本 You can also use the **at** command to run scripts. Here's an example: +你可以使用 **at** 命令来运行脚本,这是一个例子: ``` $ at 4:30PM @@ -134,15 +152,18 @@ at> bin/tryme at> ``` -### Denying use of the at command +### Denying use of the at command 拒绝使用 at 命令 The **/etc/at.deny** file provides a way to disallow users from being able to make use of the **at** command. By default, it will probably include a list of disallowed accounts like **ftp** and **nobody**. An **/etc/at.allow** file could be used to do the opposite but, generally, only the **at.deny** file is configured. +**/etc/at.deny** 文件提供了一种禁止用户使用 **at** 命令的方法。默认情况下,它可能会包含不允许的账户列表,例如 ftp 和 nobody。可以使用 **/etc/at.allow** 文件执行相反的操作,但是通常只配置 **at.deny** 文件。 -**Wrap-Up** +**总结** The **at** command is very versatile and easy to use when you want to schedule a one-time task – even if you want it to run this afternoon or years in the future. +当你要计划一项一次性任务时,即使你希望在今天下午或将来运行该任务,**at** 命令也非常通用且易于使用。 Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. +加入 [Facebook][2] 和 [LinkedIn][3] 上的网络世界社区,评论最火的主题。 -------------------------------------------------------------------------------- @@ -150,7 +171,7 @@ via: https://www.networkworld.com/article/3535808/scheduling-tasks-on-linux-usin 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[MjSeven](https://github.com/MjSeven) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 78dc8c4c9032bc67647356a3c3be0c7b23ac2b5d Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Mon, 6 Apr 2020 10:47:13 +0800 Subject: [PATCH 182/218] Rename sources/tech/20200405 Book review- Nine Lies About Work.md to sources/talk/20200405 Book review- Nine Lies About Work.md --- .../{tech => talk}/20200405 Book review- Nine Lies About Work.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200405 Book review- Nine Lies About Work.md (100%) diff --git a/sources/tech/20200405 Book review- Nine Lies About Work.md b/sources/talk/20200405 Book review- Nine Lies About Work.md similarity index 100% rename from sources/tech/20200405 Book review- Nine Lies About Work.md rename to sources/talk/20200405 Book review- Nine Lies About Work.md From 09bf2f9f879dc108f223f86839c830122326d50d Mon Sep 17 00:00:00 2001 From: MjSeven Date: Mon, 6 Apr 2020 20:43:53 +0800 Subject: [PATCH 183/218] Done --- ...ing tasks on Linux using the at command.md | 73 ++++++------------- 1 file changed, 22 insertions(+), 51 deletions(-) diff --git a/translated/tech/20200403 Scheduling tasks on Linux using the at command.md b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md index 81b9d6f7a4..a8986be39a 100644 --- a/translated/tech/20200403 Scheduling tasks on Linux using the at command.md +++ b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md @@ -7,43 +7,34 @@ [#]: via: (https://www.networkworld.com/article/3535808/scheduling-tasks-on-linux-using-the-at-command.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) -Scheduling tasks on Linux using the at command -在 Linux 上使用 at 命令来管理任务 +使用 at 命令在 Linu 上安排任务 ====== -The at command makes it easy to schedule Linux tasks to be run at any time or date you choose. Check out what it can do for you. -at 命令很容易安排 Linux 任务在你选择的任何时间或日期运行,看看它能为你做什么。 +at 命令可以很容易地安排 Linux 任务在你选择的任何时间或日期运行,让我们来看看它能为你做什么。 romkaz / Getty Images -When you want commands or scripts to run at some particular time, you don’t have to sit with your fingers hovering over the keyboard waiting to press the enter key or even be at your desk at the right time. Instead, you can set your task to be run through the **at** command. In this post, we’ll look at how tasks are scheduled using **at**, how you can precisely select the time you want your process to run and how to view what’s been scheduled to run using **at**. -当你想要命令或脚本在某个特定时间运行时,你不需要用你的手指在键盘上盘旋等待按下 enter 键,甚至在特定时间坐在办公桌前。相反,你可以通过 **at** 命令来设置任务。在本文中,我们将研究如何使用 **at** 来安排任务,如何精确选择要运行的时间以及如何查看使用 **at** 安排的时间。 +当你希望命令或脚本在某个特定时间运行时,你不需要将手指放在键盘上盘旋等待按下回车键,或者是在特定时间坐在办公桌前。相反,你可以通过 **at** 命令来设置任务。在本文中,我们将研究如何使用 **at** 来安排任务,如何精确地选择任务希望运行的时间以及如何使用 **at** 来查看安排运行的任务。 ### at vs cron -For those who’ve been scheduling tasks on Linux systems using **cron**, the **at** command is something like **cron** in that you can schedule tasks to run at a selected time, but **cron** is used for jobs that are run periodically – even if that means only once a year. Most **cron** jobs are set up to be run daily, weekly or monthly, though you control how often and when. -对于那些使用 **cron** 在 Linux 系统上计划任务的人来说,**at** 命令类似于 **cron**,因为你可以计划在选定时间运行的任务,但是 **cron** 用于定期运行的工作-即使着意味着每年仅一次。大多数 **cron** 作业都设置为每天,每周或每月运行,尽管你可以控制频率和时间。 +对于那些使用 **cron** 在 Linux 系统上安排任务的人来说,**at** 命令类似于 **cron**,因为你可以在选定的时间调度任务,但是 **cron** 用于定期运行的作业 - 甚至是每年仅一次。大多数 **cron** 作业的频率都设置为每天、每周或每月运行一次,不过你可以控制运行的频率和时间。 -The **at** command, on the other hand, is used for tasks which are run only once. Want to reboot your system at midnight tonight? No problem, **at** can do that for you assuming you have the proper permissions. If you want the system rebooted every Saturday night at 2 a.m., use **cron** instead. -另一方面,**at** 命令用于仅运行一次的任务。是否想在今晚午夜重启系统?没问题,假设你拥有适当的权限,**at** 可以为你完成此操作。如果你希望系统在每个星期六晚上凌晨 2 点重启,请改用 **cron**。 +另一方面,**at** 命令用于仅运行一次的任务。想在午夜重启系统?没问题,假设你有适当的权限,**at** 可以为你完成此操作。如果你希望系统在每个星期六凌晨 2 点重启,那么改用 **cron**。 ### 使用 at -The **at** command is easy to use ,and there are only a few things to remember. A simple use of **at** might look like this: -**at** 命令易于使用,只需记住几件事。**at** 的简单用法如下所示: +**at** 命令很容易使用,只需记住几件事。一个简单的使用 **at** 类似于这样: ``` $ at 5:00PM at> date >> thisfile at> ``` -After typing “at” and the time the command should be run, **at** prompts you for the command to be run (in this case, the **date** command). Type **^D** to complete your request. -在输入 "at" 并允许命令的时间后,**at** 会提示你运行该命令(在这种情况下,是 "date" 命令)。输入 **^D** 来完成请求。 +在输入 "at" 和应该运行命令的时间,**at** 会提示你在设定时间会运行该命令(此例中是 **`date`** 命令)。输入 **^D** 来完成请求。 -Assuming we set up this **at** command earlier than 5 p.m., the date and time will be added to the end of a file named “thisfile” later the same day. Otherwise, the command will run at 5 p.m. the following day. -假设我们在下午 5 点之前设置此 **at** 命令,那么日期和时间将在当天晚些时候添加到名为 "thisfile" 的文件的末尾。否则,该命令将在下午 5 点运行。 +假设我们在下午 5 点之前设置这个 **at** 命令,那么日期和时间将在当天下午 5 点添加到名为 "thisfile" 文件的末尾。否则,该命令将在第二天下午 5 点运行。 -You can enter more than one command when interacting with the **at** command. If you want more than one command to be run at the same time, simply specify more than one command line: -与 **at** 命令进行交互时,可以输入多个命令。如果要同时运行多个目录,只需指定多个命令行即可: +与 **at** 命令进行交互时,可以输入多个命令。如果你要同时运行多个命令,只需输入多个命令行即可: [][1] ``` @@ -54,11 +45,9 @@ at> echo second >> thisfile at> ``` -In the commands above, we’re using a regular user account and adding some simple text to a file in that user’s home directory. If it’s after 6:22 a.m. when this command is run, the command will run the following day because 6:22 is taken to mean 6:22 a.m. If you want it to run at 6:22 p.m., either use 6:22 PM or 18:22. “6:22 PM” also works. -在上面的命令中,我们使用常规账户,将一些简单的文本添加到该用户主目录的文件中。如果运行此命令的时间是上午 6:22 之后,则该命令将在第二天运行,因为 6:22 表示上午 6:22。如果要使其在下午 6:22 运行,使用 6:22 PM 或者 18:22。 +在上面的命令中,我们使用了一个普通的用户账户,将一些简单的文本添加到该用户主目录的文件中。如果在上午 6:22 之后运行这些命令,那么命令会在第二天运行,因为 6:22 表示上午 6:22。如果你想在下午 6:22 运行,使用 6:22 PM 或者 18:22,"6:22 PM" 也可以。 -You can use **at** to schedule commands to run on specific dates either by specifying the dates or specifying dates and times like “10:00AM April 15 2021” or “noon + 5 days” (run at noon five days from today). Here are some examples: -你可以通过指定日期或指定日期和时间,例如 “2021 年 4 月 15 日上午 10:00”或“中午 + 5 天”(从今天起中午五点运行),使用 **at** 来安排命令在特定日期运行。以下是些例子: +你也可以通过使用 **at** 来安排命令在指定的日期或时间运行,例如 "10:00AM April 15 2021" 或 "noon + 5 days"(从今天起 5 天内的中午运行),以下是一些例子: ``` at 6PM tomorrow @@ -67,9 +56,7 @@ at noon + 5 days at 9:15 + 1000 days ``` -After you specify the command to run and press **^D**, you will notice that the **at** command has assigned a job number to each request. This number will show up in the **at** command's job queue. -指定要运行的命令并按下 **^D** 后,你会注意到 **at** 命令已为每个请求分配了作业编号,此数字将显示在 **at** 命令的作业队列中。 - +在指定要运行的命令并按下 **^D** 后,你会注意到 **at** 命令为每个请求分配了一个作业编号,这个数字将显示在 **at** 命令的作业队列中。 ``` $ at noon + 1000 days warning: commands will be executed using /bin/sh @@ -78,11 +65,9 @@ at> job 36 at Tue Dec 27 12:00:00 2022 <== job # is 36 ``` -### Checking the queue检查队列 +### 检查队列 -You can look at the queue of **at** jobs with the **atq** (at queue) command: 你可以使用 **atq**(at queue) 命令来查看 **at** 作业队列: - ``` $ atq 32 Thu Apr 2 03:06:00 2020 a shs @@ -91,9 +76,7 @@ $ atq 34 Thu Apr 2 18:00:00 2020 a shs ``` -If you need to cancel one of the jobs in the queue, use the **atrm** (at remove) command along with the job number. -如果你需要取消队列中作业之一,使用 **atrm**(at remote) 命令和作业编号: - +如果你需要取消队列中的一个作业,使用 **atrm**(at remote) 命令和作业编号: ``` $ atrm 32 $ atq @@ -102,9 +85,7 @@ $ atq 34 Thu Apr 2 18:00:00 2020 a shs ``` -You can look into the details of a scheduled task using the **at -c** command. Additional details (the active search path, etc.) are also available, but the bottom lines of the output will show you what command has been scheduled to run. -你可以使用 **at -c** 命令来查看计划任务的详细信息。还可以提供其它详细信息(活动的搜索路径等),但是输出的底行将显示已计划运行的命令。 - +你可以使用 **at -c** 命令来查看安排任务的详细信息,其它详细信息(活动的搜索路径等)也可以,但是输出的最后一行将显示计划运行的命令。 ``` $ at -c 36 | tail -6 cd /home/shs || { @@ -114,14 +95,11 @@ cd /home/shs || { date >> thisfile ``` -Notice that the command shown begins with testing whether the user’s directory can be entered with a **cd** command. The job will exit with an error if this is not the case. Otherwise the command specified when the **at** command was issued will be run. Read the command as "move into /home/shs OR exit with the error shown". -注意,显示的命令首先测试是否可以通过 **cd** 命令输入用户目录。如果不是这种情况,作业将退出并出现错误。否则,将运行发出 **at** 目录时指定的命令。将命令读为 "move into /home/shs 或退出并显示错误"。 +注意,命令首先会测试是否可以通过 **cd** 命令进入用户目录。如果不可以,作业将退出并显示错误。如果可以,则运行在 **at** 中指定的命令。它将命令视为 “进入 /home/shs 或退出并显示错误”。 -### Running jobs as root以 root 身份运行作业 +### 以 root 身份运行作业 -To run **at** jobs as root, simply use **sudo** with your **at** command like this: 要以 root 身份运行 **at** 作业,只需将 **sudo** 与你的 **at** 命令一起使用,如下所示: - ``` $ sudo at 8PM [sudo] password for shs: @@ -131,9 +109,7 @@ at> job 37 at Wed Apr 1 16:00:00 2020 ``` -Notice that the root task shows up in the queue with **root** as the one to execute it. -注意,根任务以 **root** 作为执行任务显示在队列中。 - +注意,root 的任务以 **root** 作为执行者显示在队列中。 ``` 35 Mon Apr 6 12:00:00 2020 a shs 36 Tue Dec 27 12:00:00 2022 a shs @@ -142,9 +118,7 @@ Notice that the root task shows up in the queue with **root** as the one to exec ### 运行脚本 -You can also use the **at** command to run scripts. Here's an example: -你可以使用 **at** 命令来运行脚本,这是一个例子: - +你还可以使用 **at** 命令来运行脚本,这里有一个例子: ``` $ at 4:30PM warning: commands will be executed using /bin/sh @@ -152,17 +126,14 @@ at> bin/tryme at> ``` -### Denying use of the at command 拒绝使用 at 命令 +### 禁止使用 at 命令 -The **/etc/at.deny** file provides a way to disallow users from being able to make use of the **at** command. By default, it will probably include a list of disallowed accounts like **ftp** and **nobody**. An **/etc/at.allow** file could be used to do the opposite but, generally, only the **at.deny** file is configured. -**/etc/at.deny** 文件提供了一种禁止用户使用 **at** 命令的方法。默认情况下,它可能会包含不允许的账户列表,例如 ftp 和 nobody。可以使用 **/etc/at.allow** 文件执行相反的操作,但是通常只配置 **at.deny** 文件。 +**/etc/at.deny** 文件提供了一种禁止用户使用 **at** 命令的方法。默认情况下,它可能会包含一个不允许的账户列表,例如 **ftp** 和 **nobody**。可以使用 **/etc/at.allow** 文件执行相反的操作,但是通常只配置 **at.deny** 文件。 **总结** -The **at** command is very versatile and easy to use when you want to schedule a one-time task – even if you want it to run this afternoon or years in the future. -当你要计划一项一次性任务时,即使你希望在今天下午或将来运行该任务,**at** 命令也非常通用且易于使用。 +当你要安排一项一次性任务时,即使你希望在今天下午或几年后运行,**at** 命令是通用且易于使用的。 -Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. 加入 [Facebook][2] 和 [LinkedIn][3] 上的网络世界社区,评论最火的主题。 -------------------------------------------------------------------------------- From 7e52f3cbb00acb5cf9a8b9f4e657074f163c2360 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 6 Apr 2020 21:42:51 +0800 Subject: [PATCH 184/218] PRF @MjSeven --- ...20200325 Linux firewall basics with ufw.md | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/translated/tech/20200325 Linux firewall basics with ufw.md b/translated/tech/20200325 Linux firewall basics with ufw.md index e281821b70..bfdd782f85 100644 --- a/translated/tech/20200325 Linux firewall basics with ufw.md +++ b/translated/tech/20200325 Linux firewall basics with ufw.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (MjSeven) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Linux firewall basics with ufw) @@ -9,15 +9,17 @@ Linux 防火墙 ufw 简介 ====== -我们来研究下 ufw - linux 上一个简单的防火墙,它为防火墙更改提供了一些见解和命令。 + +> 我们来研究下 Linux 上的 ufw(简单防火墙),为你更改防火墙提供一些见解和命令。 ![][0] -**ufw** (简易防火墙)可以说是 [iptables][1] 的简化版,最近几年,它已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 **ufw** 出乎意料的简单,这对新管理员来说是一个福音,否则他们可能不得不投入大量时间来加快防火墙管理的速度。 +`ufw`(简单防火墙Uncomplicated FireWall)真正地简化了 [iptables][1],它从出现的这几年,已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 `ufw` 出乎意料的简单,这对新管理员来说是一个福音,否则他们可能需要投入大量时间来学习防火墙管理。 -**ufw** 也有 GUI 客户端(例如 **gufw**),但是 **ufw** 命令通常在命令行上发出。本文介绍了一些使用 **ufw** 的命令,并研究了它的工作方式。 +`ufw` 也有 GUI 客户端(例如 `gufw`),但是 `ufw` 命令通常在命令行上执行的。本文介绍了一些使用 `ufw` 的命令,并研究了它的工作方式。 -首先,查看 **ufw** 如何配置的一个快速方法是查看其配置文件 -- **/etc/default/ufw**。使用下面的命令可以查看其配置,使用 **grep** 来禁止显示空白行和注释(以 # 开头的行)。 +首先,快速查看 `ufw` 配置的方法是查看其配置文件 —— `/etc/default/ufw`。使用下面的命令可以查看其配置,使用 `grep` 来抑制了空行和注释(以 # 开头的行)的显示。 + ``` $ grep -v '^#\|^$' /etc/default/ufw IPV6=yes @@ -30,16 +32,18 @@ IPT_SYSCTL=/etc/ufw/sysctl.conf IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" ``` -正如你所看到的,默认策略是丢弃输入但允许输出。如果你想接受专有连接,你需要单独配置。 +正如你所看到的,默认策略是丢弃输入但允许输出。允许你接受特定的连接的其它规则是需要单独配置的。 + +`ufw` 命令的基本语法如下所示,但是这个概要并不意味着你只需要输入 `ufw` 就行,而是一个告诉你需要哪些参数的快速提示。 -ufw 命令的基本语法如下所示,但是这个概要并不意味着你只需要输入 "ufw" 就能熟悉它,而是通过一个个错误提示来告诉你需要哪些参数。 ``` ufw [--dry-run] [options] [rule syntax] ``` -**\--dry-run** 选项意味着 **ufw** 不会运行你指定的命令,但你会看到它是否执行了的结果。如果进行了更改,它将显示整个规则集,因此你要做好多行输出的准备。 +`--dry-run` 选项意味着 `ufw` 不会运行你指定的命令,但会显示给你如果执行后的结果。但是它会显示假如更改后的整个规则集,因此你要做有好多行输出的准备。 + +要检查 `ufw` 的状态,请运行以下命令。注意,即使是这个命令也需要使用 `sudo` 或 root 账户。 -运行以下命令来检查 **ufw** 的状态。注意,即使此命令也需要使用 **sudo** 或 root 账户。 ``` $ sudo ufw status Status: active @@ -52,12 +56,14 @@ To Action From ``` 否则,你会看到以下内容: + ``` $ ufw status ERROR: You need to be root to run this script ``` -"verbose" 选项将提供一些其它细节: +加上 `verbose` 选项会提供一些其它细节: + ``` $ sudo ufw status verbose Status: active @@ -73,12 +79,14 @@ To Action From ``` 你可以使用以下命令轻松地通过端口号允许和拒绝连接: + ``` $ sudo ufw allow 80 <== 允许 http 访问 $ sudo ufw deny 25 <== 拒绝 smtp 访问 ``` -你可以查看 **/etc/services** 文件来找到端口号和服务名称之间的联系。 +你可以查看 `/etc/services` 文件来找到端口号和服务名称之间的联系。 + ``` $ grep 80/ /etc/services http 80/tcp www # WorldWideWeb HTTP @@ -119,7 +127,7 @@ To Action From 443/tcp (v6) ALLOW Anywhere (v6) <== ``` -**ufw** 遵循的规则存储在 **/etc/ufw** 目录中,注意,你需要 root 用户访问权限才能查看这些文件,每个文件都包含大量规则。 +`ufw` 遵循的规则存储在 `/etc/ufw` 目录中。注意,你需要 root 用户访问权限才能查看这些文件,每个文件都包含大量规则。 ``` $ ls -ltr /etc/ufw @@ -137,7 +145,8 @@ drwxr-xr-x 3 root root 4096 Nov 12 08:21 applications.d -rw-r----- 1 root root 1530 Mar 19 10:42 user6.rules ``` -本文前面所作的更改,为 **http** 访问添加了端口 **80** 和为 **https** 访问添加了端口 **443**,在 **user.rules** 和 **user6.rules** 文件中看起来像这样: +本文前面所作的更改,为 `http` 访问添加了端口 `80` 和为 `https` 访问添加了端口 `443`,在 `user.rules` 和 `user6.rules` 文件中看起来像这样: + ``` # grep " 80 " user*.rules user6.rules:### tuple ### allow tcp 80 ::/0 any ::/0 in @@ -152,13 +161,15 @@ user.rules:### tuple ### allow tcp 443 0.0.0.0/0 any 0.0.0.0/0 in user.rules:-A ufw-user-input -p tcp --dport 443 -j ACCEPT ``` -使用 **ufw**,你还可以使用以下命令轻松地阻止来自一个系统的连接: +使用 `ufw`,你还可以使用以下命令轻松地阻止来自一个 IP 地址的连接: + ``` $ sudo ufw deny from 208.176.0.50 Rule added ``` -status 命令将显示更改: +`status` 命令将显示更改: + ``` $ sudo ufw status verbose Status: active @@ -178,9 +189,7 @@ Anywhere DENY IN 208.176.0.50 <== new 443/tcp (v6) ALLOW IN Anywhere (v6) ``` -总而言之,**ufw** 不仅容易配置,而且且容易理解。 - -加入 [Facebook][4] 和 [LinkedIn][5] 上的网络世界社区,评论最火的主题。 +总而言之,`ufw` 不仅容易配置,而且且容易理解。 -------------------------------------------------------------------------------- @@ -189,7 +198,7 @@ via: https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw 作者:[Sandra Henry-Stocker][a] 选题:[lujun9972][b] 译者:[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 8ac5e24cd0a87eed4bc2bdb1d22d36f591dc4d9c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Mon, 6 Apr 2020 21:43:50 +0800 Subject: [PATCH 185/218] PUB @MjSeven https://linux.cn/article-12079-1.html --- .../20200325 Linux firewall basics with ufw.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200325 Linux firewall basics with ufw.md (99%) diff --git a/translated/tech/20200325 Linux firewall basics with ufw.md b/published/20200325 Linux firewall basics with ufw.md similarity index 99% rename from translated/tech/20200325 Linux firewall basics with ufw.md rename to published/20200325 Linux firewall basics with ufw.md index bfdd782f85..538d1a928a 100644 --- a/translated/tech/20200325 Linux firewall basics with ufw.md +++ b/published/20200325 Linux firewall basics with ufw.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (MjSeven) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12079-1.html) [#]: subject: (Linux firewall basics with ufw) [#]: via: (https://www.networkworld.com/article/3533551/linux-firewall-basics-with-ufw.html) [#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) From 7d9ef64876784d5c02167a51c34785f482b6cd9f Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Mon, 6 Apr 2020 22:09:41 +0800 Subject: [PATCH 186/218] Update 20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md --- ...in Ubuntu- What is It and How to Use it.md | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index b84bcf7c57..4aabc122d5 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -12,10 +12,10 @@ The Keyring Concept in Ubuntu: What is It and How to Use it? ====== If you use [automatic login in Ubuntu][1] or other Linux distributions, you might have come across a pop-up message of this sort: -如果你使用ubuntu里的自动登录功能或者其他的Linux发行版, 你可能遇到过这种弹出消息: +如果您用过[ubuntu里的自动登录功能][1]或者其他的Linux发行版, 您可能遇到过这种弹出消息: -**Enter password to unlock your login keyring 请输入密码解锁你的登录密钥环 -The login keyring did not get unlocked when you logged into your computer. 当你登录时登录密钥环未被解锁** +**Enter password to unlock your login keyring 请输入密码解锁您的登录密钥环 +The login keyring did not get unlocked when you logged into your computer. 当您登录时登录密钥环未被解锁** ![Enter Password To Unlock Your Login Keyring Ubuntu][2] @@ -34,13 +34,13 @@ Linux里的密钥环是什么以及为什么需要它? ![][3] Why do you use a keyring (also called [keychain][4]) in the real life? You use it to keep one or more keys grouped together so that they are easy to find and carry. -在现实生活中你为什么要用一个钥匙环(也叫钥匙链)? 你用它把一把或多把钥匙挂到一起, 以便于携带和寻找。 +在现实生活中你为什么要用一个钥匙环(也叫[钥匙链][4])? 你用它把一把或多把钥匙挂到一起, 以便于携带和寻找。 It’s the same concept in Linux. The keyring feature allows your system to group various passwords together and keep it one place. Linux里也是类似的。密钥环功能使您的系统可以将各种密码放在一起,并将其保存在一个地方。 Most desktop environments like GNOME, KDE, Xfce etc use an implementation of [gnome-keyring][5] to provide this keyring feature in Linux. -大多数Linux桌面环境像GNOME, KDE, Xfce等采用gnome的密钥环实现来提供这个功能。 +大多数Linux桌面环境像GNOME, KDE, Xfce等采用[gnome的密钥环][5]实现来提供这个功能。 This keyring keeps your ssh keys, GPG keys and keys from applications that use this feature, like Chromium browser. By default, the **keyring is locked with a master password** which is often the login password of the account. 该密钥环保存了ssh密钥,GPG密钥以及使用此功能的应用程序(例如Chromium浏览器)的密钥。 默认情况下,**“密钥环”通过主密码来保护**,该密码通常是帐户的登录密码。 @@ -51,49 +51,64 @@ Every user on your system has its own keyring with (usually) the same password a The problem comes when you [switch to auto-login in Ubuntu][1]. This means that you login to the system without entering the password. In such case, your keyring is not unlocked automatically. 当您[启用Ubuntu中的自动登录功能时][1]时,就有问题了。这意味着您无需输入密码即可登录系统。 在这种情况下,您的密钥环不会自动解锁。 -#### Keyring is a security feature +#### Keyring is a security feature 密钥环是一个安全特性 Remember I told you that the keyring was a security feature? Now imagine that on your Linux desktop, you are using auto-login. Anyone with access to your desktop can enter the system without password but you have no issues with that perhaps because you use it to browse internet only. +记得我说过密钥环是一个安全特性吗?现在想象一下您在您的Linux电脑上开启了自动登录功能。有权访问您电脑的任何人无需密码就能进入您的系统。但是您可能不会在意,因为您只是用它来访问互联网。 But if you use a browser like Chromium or [Google Chrome in Ubuntu][6], and use it to save your login-password for various websites, you have an issue on your hand. Anyone can use the browser and login to the websites for which you have saved password in your browser. That’s risky, isn’t it? +但是,如果您使用Chromium或[Ubuntu中的Google Chrome][6]之类的浏览器,并使用它来保存各种网站的登录密码,那么您将遇到麻烦。任何人都可以使用浏览器并利用您在浏览器中保存的密码登录网站。那不就是风险吗? This is why when you try to use Chrome, it will ask you to unlock the keyring repeatedly. This ensures that only the person who knows the keyring’s password (i.e. the account password) can use the saved password in browser for logging in to their respective websites. +这就是为什么当您使用Chrome时,它将重复地提示您先解锁密钥环。这确保了只有知道密钥环密码的人才能使用在浏览器中保存的密码来登录它们相关联的网站。 If you keep on cancelling the prompt for keyring unlock, it will eventually go away and let you use the browser. However, the saved password won’t be unlocked and you’ll see ‘sync paused’ in Chromium/Chrome browsers. +如果您继续取消解锁密钥环的提示,它最终将消失并允许您使用浏览器。但是,保存的密码将不会被解锁,您在Chromium/Chome浏览器上将会看到'同步暂停'的提示。 ![Sync paused in Google Chrome][7] -#### If this keyring always exited, why you never saw it? +#### If this keyring always exited, why you never saw it? 如果密钥环总是存在的,为什么您从来没有见过它呢? That’s a valid question if you have never seen this keyring thing in your Linux system. +如果您在您的Linux系统上从没见过它的话,这就是一个有效的问题。 If you never used automatic login (or changed your account’s password), you might not even have realized that this feature exists. +如果您从没有用过自动登录功能(或者修改您的账户密码),您可能都没有意识到这个特性的存在。 This is because when you login to your system with your password, your keyring is unlocked automatically with your account’s password. +这是因为当您通过您的密码登录系统时,您的密钥环被您的账户密码自动解锁了。 Ubuntu (and other distributions) asks for password for common admin tasks like modifying users, installing new software etc irrespective of whether you auto login or not. But for regular tasks like using a browser, it doesn’t ask for password because keyring is already unlocked. +Ubuntu(和其他发行版)对于通用的管理任务像修改用户, 安装新软件等需要输入密码,无论您是否是自动登录的。但是对于日常任务像使用浏览器,它不需要输入密码因为密钥环已经被解锁了。 When you switch to automatic login, you don’t enter the password for login anymore. This means that the keyring is not unlocked and hence when you try to use a browser which uses the keyring feature, it will ask to unlock the keyring. +当您切换到自动登录时,您不再需要输入登录密码。这意味着密钥环没有被自动解锁,因此当您使用利用了密钥环特性的浏览器时,它将提示您来解锁密钥环。 -#### You can easily manage the keyring and passwords +#### You can easily manage the keyring and passwords 您可以容易地管理密钥环和密码 Where is this keyring located? At the core, it’s a daemon (a program that runs automatically in the background). +这个密钥环放在哪里?它的核心是一个守护任务(一个后台自动运行的程序)。 Don’t worry. You don’t have to ‘fight the daemon’ in the terminal. Most desktop environments come with a graphical application that interacts with this daemon. On KDE, there is KDE Wallet, on GNOME and others, it’s called Password and Keys (originally known as [Seahorse][8]). +别担心。您不必通过终端来操作守护任务。大多数桌面环境都自带有图形化的应用程序可以和守护进程进行交互。KDE上有KDE钱包,GNOME和其他桌面上叫做密码和密钥(原来叫[海马][8])。 -![Password And Keys App in Ubuntu][9] +![Password And Keys App in Ubuntu][9] Ubuntu上的密码和密钥App You can use this GUI application to see what application use the keyring to manage/lock passwords. +您可以用这个GUI程序来查看什么应用程序在用密钥环来管理/保护密码。 As you can see, my system has the login keyring which is automatically created. There is also a keyrings for storing GPG and SSH keys. The [Certificates][10] is for keeping the certificates (like HTTPS certificates) issued by a certificate authority. +您可以看到,我的系统有自动创建的登录密钥环。也有一个存储GPG和SSH密钥的密钥环。那个[证书][10]是用来保存证书机构颁发的证书(像HTTPS证书)的。 -![Password and Keys application in Ubuntu][11] +![Password and Keys application in Ubuntu][11] Ubuntu上的密码和密钥应用程序 You can also use this application to manually store passwords for website. For example, I created a new password-protected keyring called ‘Test’ and stored a password in this keyring manually. +您也可以使用这个应用程序来手动保存网站的密码。例如,我创建了一个新的叫做'Test'的被密码保护的密钥环,并手动存储了一个密码。 This is slightly better than keeping a list of passwords in a text file. At least in this case your passwords can be viewed only when you unlock the keyring with password. +这比保存一批密码在一个文本文件中要好一些。至少在这种情况下,您的密码只有在您通过密码解锁了密钥环时才允许被看到。 -![Saving New Password Seahorse][12] +![Saving New Password Seahorse][12] 保存新密码 One potential problem here is that if you format your system, the manually saved passwords are definitely lost. Normally, you make backup of personal files, not of all the user specific data such as keyring files. From 5d91178493f5d4ed77d1e5b0d7a79fc591d5d05a Mon Sep 17 00:00:00 2001 From: MjSeven Date: Mon, 6 Apr 2020 22:10:45 +0800 Subject: [PATCH 187/218] ok --- ... Scheduling tasks on Linux using the at command.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/translated/tech/20200403 Scheduling tasks on Linux using the at command.md b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md index a8986be39a..3e44489281 100644 --- a/translated/tech/20200403 Scheduling tasks on Linux using the at command.md +++ b/translated/tech/20200403 Scheduling tasks on Linux using the at command.md @@ -10,7 +10,7 @@ 使用 at 命令在 Linu 上安排任务 ====== at 命令可以很容易地安排 Linux 任务在你选择的任何时间或日期运行,让我们来看看它能为你做什么。 - +![][0] romkaz / Getty Images 当你希望命令或脚本在某个特定时间运行时,你不需要将手指放在键盘上盘旋等待按下回车键,或者是在特定时间坐在办公桌前。相反,你可以通过 **at** 命令来设置任务。在本文中,我们将研究如何使用 **at** 来安排任务,如何精确地选择任务希望运行的时间以及如何使用 **at** 来查看安排运行的任务。 @@ -23,14 +23,14 @@ romkaz / Getty Images ### 使用 at -**at** 命令很容易使用,只需记住几件事。一个简单的使用 **at** 类似于这样: +**at** 命令很容易使用,只需记住几件事。一个简单使用 **at** 的例子类似于这样: ``` $ at 5:00PM at> date >> thisfile at> ``` -在输入 "at" 和应该运行命令的时间,**at** 会提示你在设定时间会运行该命令(此例中是 **`date`** 命令)。输入 **^D** 来完成请求。 +在输入 "at" 和应该运行命令的时间,**at** 会提示你在设定时间会运行该命令(此例中是 **`date`** 命令)。输入 **^D**(Ctrl + d) 来完成请求。 假设我们在下午 5 点之前设置这个 **at** 命令,那么日期和时间将在当天下午 5 点添加到名为 "thisfile" 文件的末尾。否则,该命令将在第二天下午 5 点运行。 @@ -132,9 +132,7 @@ at> **总结** -当你要安排一项一次性任务时,即使你希望在今天下午或几年后运行,**at** 命令是通用且易于使用的。 - -加入 [Facebook][2] 和 [LinkedIn][3] 上的网络世界社区,评论最火的主题。 +当你要安排一项一次性任务时,无论你是希望在今天下午或几年后运行,**at** 命令都是通用且易于使用的。 -------------------------------------------------------------------------------- @@ -149,6 +147,7 @@ via: https://www.networkworld.com/article/3535808/scheduling-tasks-on-linux-usin [a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ [b]: https://github.com/lujun9972 +[0]: https://images.idgesg.net/images/article/2019/08/gettyimages-140389307-100808283-large.jpg [1]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) [2]: https://www.facebook.com/NetworkWorld/ [3]: https://www.linkedin.com/company/network-world From 303717ee21dc23572f5817b68656526a2448e47c Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Mon, 6 Apr 2020 23:19:26 +0800 Subject: [PATCH 188/218] Update 20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md --- ...in Ubuntu- What is It and How to Use it.md | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index 4aabc122d5..4e2b84c1ab 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -108,74 +108,92 @@ You can also use this application to manually store passwords for website. For e This is slightly better than keeping a list of passwords in a text file. At least in this case your passwords can be viewed only when you unlock the keyring with password. 这比保存一批密码在一个文本文件中要好一些。至少在这种情况下,您的密码只有在您通过密码解锁了密钥环时才允许被看到。 -![Saving New Password Seahorse][12] 保存新密码 +![Saving New Password Seahorse][12] One potential problem here is that if you format your system, the manually saved passwords are definitely lost. Normally, you make backup of personal files, not of all the user specific data such as keyring files. +一个潜在的问题是如果您格式化您的系统,手动保存的密码必然会丢失。通常,您会备份您的个人文件,但并不是所有的用户特定数据如密钥环文件。 There is way to handle that. The keyring data is usually stored in ~/.local/share/keyrings directory. You can see all the keyrings here but you cannot see its content directly. If you remove the password of the keyring (I’ll show the steps in later section of this article), you can read the content of the keyring like a regular text file. You can copy this unlocked keyring file entirely and import it in the Password and Keys application on some other Linux computer (running this application). +有一种办法能解决它。密钥环数据通常保存在~/.local/share/keyrings目录。在这里您可以看到所有的密钥环但是您不能直接看到它们的内容。如果您移除密钥环的密码(我会在这篇文章的后面描述操作步骤),您可以像一个普通的文本文件一样读取密钥环的内容。您可以完整地拷贝这个解锁后的密钥环文件并在其他的Linux机器(安装了密码和密钥应用)上导入到密码和密钥应用程序。 So, let me summarize what you have learned so far: - - * Most Linux has this ‘keyring feature’ installed and activated by default - * Each user on a system has its own keyring - * The keyring is normally locked with the account’s password - * Keyring is unlocked automatically when you login with your password - * For auto-login, the keyring is not unlocked and hence you are asked to unlock it when you try to use an application that uses keyring - * Not all browsers or application use the keyring feature - * There is a GUI application installed to interact with keyring - * You can use the keyring to manually store passwords in encrypted format - * You can change the keyring password on your own - * You can export (by unlocking the keyring first) and import it on some other computer to get your manually saved passwords +来总结一下目前为止所学的内容: + * Most Linux has this ‘keyring feature’ installed and activated by default 大多数Linux缺省已经安装并激活了密钥环特性 + * Each user on a system has its own keyring 系统上的每个用户都拥有他自己的密钥环 + * The keyring is normally locked with the account’s password 密钥环通常被账户密码锁定(保护) + * Keyring is unlocked automatically when you login with your password 当您通过密码登录时密钥环会被自动解锁 + * For auto-login, the keyring is not unlocked and hence you are asked to unlock it when you try to use an application that uses keyring 对于自动登录,密钥环不会自动解锁,因此当您试图使用依赖密钥环的应用程序时会被提示先解锁它 + * Not all browsers or application use the keyring feature 并不是所有的浏览器或应用程序利用了密钥环特性 + * There is a GUI application installed to interact with keyring (Linux上)安装了一个GUI程序可以和密钥环交互 + * You can use the keyring to manually store passwords in encrypted format 您可以用密钥环来手动以加密格式来存储密码 + * You can change the keyring password on your own 您可以自己修改密钥环密码 + * You can export (by unlocking the keyring first) and import it on some other computer to get your manually saved passwords 您可以通过导出(需要先解锁密钥环)并导入(到其他计算机上)的方式来获取手工保存的密码。 -### Change keyring password +### Change keyring password 修改密钥环密码 Suppose you changed your account password. Now when you login, your system tries to unlock the keyring automatically using the new login password. But the keyring still uses the old login password. +假设您修改了您的账户密码。当您登录时,您的系统试图通过新的登录密码来自动解锁密钥环。但是密钥环还在使用老的登录密码。 In such a case, you can change the keyring password to the new login password so that the keyring gets unlocked automatically as soon as you login to your system. +这种情况下,您可以修改密钥环密码为新的登录密码,这样密码环才能在您登录系统时自动解锁。 Open the Password and Keys application from the menu: +从菜单中打开密码和密钥应用程序: ![Look for Password and Keys app in the menu][9] Now, right click on the Login keyring and click on Change Password: +在登录密钥环上右击并点击修改密码: ![Change Keyring Password][13] What if you don’t remember the old login password? +如果您不记得老的登录密码怎么办? You probably know that it is [easy to reset forgotten password in Ubuntu][14]. The problem comes with the keyring in such cases. You changed the account password but you don’t remember the old account password that is still used by the keyring. +您可能知道[Ubuntu上复位忘记的密码是很容易的][14]。但是密钥环在这种场景下还是有问题。您修改了账户密码但是您不记得仍然被密钥环使用的老的账户密码。 Now you cannot change it because you don’t know the old password. What to do now? +您不能修改它因为您不知道老的密码。怎么办? In such a case, you’ll have to remove the entire keyring itself. You can do that from the Passwords and Keys application: +这种情况下,您将不得不移除整个密钥环。您可以通过密码和密钥应用程序来操作: ![Delete Keyring Ubuntu][15] It will ask for your confirmation: +它会提示您进行确认: ![Delete Keyring][16] Alternatively, you may also manually delete the keyring files in ~/.local/share/keyrings directory. +另外,您也可以手动删除~/.local/share/keyrings目录下的密钥环文件。 When the old keyring is removed and you try to use Chrome/Chromium, it will ask you to create new keyring. +老的密钥环文件被移除后,您再打开Chrome/Chromium时,它会提示您创建一个新的密钥环。 ![New Keyring Password][17] You can use the new login password so that the keyring gets unlocked automatically. +您可以用新的登录密码,密钥环就会被自动解锁了。 -### Disable keyring password +### Disable keyring password 禁用密钥环密码 In cases where you want to use automatic login but don’t want to unlockk keyring manually, you may choose to disable the keyring with a workaround. Keep in mind that you are disabling a security feature so think twice before doing so. +在您想用自动登录但又不想手动解锁密钥环时,您可以把禁用密钥环密码作为一个规避方法。记住您正在禁用一个安全特性,因此请三思。 The process is similar to changing keyring password. Open Password and Keys application and go on to change the keyring password. +操作步骤和修改密钥环相似。打开密码和密钥应用程序,然后修改密钥环密码。 The trick is that when it asks to change the password, don’t enter a new password and hit Continue instead. This will remove any password from the keyring. +技巧在于当它提示修改密码时,不要输入新密码,而是点击继续按钮。这将移除密钥环的密码。 ![Disable Keyring password by not setting any password at all][18] This way, the keyring will have no password and it remains unlocked all the time. +这种方法,密钥环没有密码保护并将一直处于解锁状态。 -------------------------------------------------------------------------------- @@ -183,7 +201,7 @@ via: https://itsfoss.com/ubuntu-keyring/ 作者:[Abhishek Prakash][a] 选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) +译者:[messon007](https://github.com/messon007) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 5eae2561b8390b3221bd43cfb4450263276b828d Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Mon, 6 Apr 2020 23:31:16 +0800 Subject: [PATCH 189/218] Almost Finished Almost Finished --- ...in Ubuntu- What is It and How to Use it.md | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index 4e2b84c1ab..f1f390c55f 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -8,19 +8,19 @@ [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) The Keyring Concept in Ubuntu: What is It and How to Use it? -认识Ubuntu里的密钥环 +解读Ubuntu里的密钥环概念 ====== If you use [automatic login in Ubuntu][1] or other Linux distributions, you might have come across a pop-up message of this sort: 如果您用过[ubuntu里的自动登录功能][1]或者其他的Linux发行版, 您可能遇到过这种弹出消息: -**Enter password to unlock your login keyring 请输入密码解锁您的登录密钥环 -The login keyring did not get unlocked when you logged into your computer. 当您登录时登录密钥环未被解锁** +**Enter password to unlock your login keyring 请输入密码以解锁您的登录密钥环 +The login keyring did not get unlocked when you logged into your computer. 登录密钥环在您登录系统时未解锁** ![Enter Password To Unlock Your Login Keyring Ubuntu][2] It keeps on popping up several times before disappearing if you keep on clicking cancel. You may wonder why do you keep seeing this keyring message all the time? -你需要点击多次取消才能让它消失。你可能想知道为什么系统会一直提示这个密钥环消息框? +你需要点击多次取消才能让它消失。你可能想知道为什么系统会多次反复提示这个密钥环消息? Let me tell you something. It’s not an error. It’s a security feature. 让我来告诉你答案。它其实并没有出错,它只是一个安全特性。 @@ -28,16 +28,15 @@ Let me tell you something. It’s not an error. It’s a security feature. Surprised? Let me explain the keyring concept in Linux. 奇怪吗?下面就让我来解释下Linux里的密钥环概念。 -### What is keyring in Linux and why is it used? -Linux里的密钥环是什么以及为什么需要它? +### What is keyring in Linux and why is it used? Linux里的密钥环是什么以及为什么需要它? ![][3] Why do you use a keyring (also called [keychain][4]) in the real life? You use it to keep one or more keys grouped together so that they are easy to find and carry. -在现实生活中你为什么要用一个钥匙环(也叫[钥匙链][4])? 你用它把一把或多把钥匙挂到一起, 以便于携带和寻找。 +在现实生活中您为什么要用钥匙环(也叫[钥匙链][4])? 您用它把一把或多把钥匙串到一起, 以便于携带和查找。 It’s the same concept in Linux. The keyring feature allows your system to group various passwords together and keep it one place. -Linux里也是类似的。密钥环功能使您的系统可以将各种密码放在一起,并将其保存在一个地方。 +Linux里也是类似的。密钥环特性使您的系统可以将各种密码放在一起,并将其保存在一个地方。 Most desktop environments like GNOME, KDE, Xfce etc use an implementation of [gnome-keyring][5] to provide this keyring feature in Linux. 大多数Linux桌面环境像GNOME, KDE, Xfce等采用[gnome的密钥环][5]实现来提供这个功能。 @@ -60,10 +59,10 @@ But if you use a browser like Chromium or [Google Chrome in Ubuntu][6], and use 但是,如果您使用Chromium或[Ubuntu中的Google Chrome][6]之类的浏览器,并使用它来保存各种网站的登录密码,那么您将遇到麻烦。任何人都可以使用浏览器并利用您在浏览器中保存的密码登录网站。那不就是风险吗? This is why when you try to use Chrome, it will ask you to unlock the keyring repeatedly. This ensures that only the person who knows the keyring’s password (i.e. the account password) can use the saved password in browser for logging in to their respective websites. -这就是为什么当您使用Chrome时,它将重复地提示您先解锁密钥环。这确保了只有知道密钥环密码的人才能使用在浏览器中保存的密码来登录它们相关联的网站。 +这就是为什么当您使用Chrome时,它将反复地提示您先解锁密钥环。这确保了只有知道密钥环密码的人才能使用在浏览器中保存的密码来登录它们相关的网站。 If you keep on cancelling the prompt for keyring unlock, it will eventually go away and let you use the browser. However, the saved password won’t be unlocked and you’ll see ‘sync paused’ in Chromium/Chrome browsers. -如果您继续取消解锁密钥环的提示,它最终将消失并允许您使用浏览器。但是,保存的密码将不会被解锁,您在Chromium/Chome浏览器上将会看到'同步暂停'的提示。 +如果您反复取消解锁密钥环的提示,它最终将消失并允许您使用浏览器。但是,保存的密码将不会被解锁,您在Chromium/Chome浏览器上将会看到'同步暂停'的提示。 ![Sync paused in Google Chrome][7] @@ -92,7 +91,7 @@ Where is this keyring located? At the core, it’s a daemon (a program that runs Don’t worry. You don’t have to ‘fight the daemon’ in the terminal. Most desktop environments come with a graphical application that interacts with this daemon. On KDE, there is KDE Wallet, on GNOME and others, it’s called Password and Keys (originally known as [Seahorse][8]). 别担心。您不必通过终端来操作守护任务。大多数桌面环境都自带有图形化的应用程序可以和守护进程进行交互。KDE上有KDE钱包,GNOME和其他桌面上叫做密码和密钥(原来叫[海马][8])。 -![Password And Keys App in Ubuntu][9] Ubuntu上的密码和密钥App +![Password And Keys App in Ubuntu][9] You can use this GUI application to see what application use the keyring to manage/lock passwords. 您可以用这个GUI程序来查看什么应用程序在用密钥环来管理/保护密码。 @@ -100,7 +99,7 @@ You can use this GUI application to see what application use the keyring to mana As you can see, my system has the login keyring which is automatically created. There is also a keyrings for storing GPG and SSH keys. The [Certificates][10] is for keeping the certificates (like HTTPS certificates) issued by a certificate authority. 您可以看到,我的系统有自动创建的登录密钥环。也有一个存储GPG和SSH密钥的密钥环。那个[证书][10]是用来保存证书机构颁发的证书(像HTTPS证书)的。 -![Password and Keys application in Ubuntu][11] Ubuntu上的密码和密钥应用程序 +![Password and Keys application in Ubuntu][11] You can also use this application to manually store passwords for website. For example, I created a new password-protected keyring called ‘Test’ and stored a password in this keyring manually. 您也可以使用这个应用程序来手动保存网站的密码。例如,我创建了一个新的叫做'Test'的被密码保护的密钥环,并手动存储了一个密码。 From 642760f25e652912b1582a6c2915bf191342c7c3 Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Mon, 6 Apr 2020 23:36:46 +0800 Subject: [PATCH 190/218] Remove origin Remove origin --- ...in Ubuntu- What is It and How to Use it.md | 83 +++++-------------- 1 file changed, 19 insertions(+), 64 deletions(-) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md index f1f390c55f..f2c2602601 100644 --- a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md +++ b/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md @@ -7,191 +7,146 @@ [#]: via: (https://itsfoss.com/ubuntu-keyring/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) -The Keyring Concept in Ubuntu: What is It and How to Use it? 解读Ubuntu里的密钥环概念 ====== -If you use [automatic login in Ubuntu][1] or other Linux distributions, you might have come across a pop-up message of this sort: 如果您用过[ubuntu里的自动登录功能][1]或者其他的Linux发行版, 您可能遇到过这种弹出消息: -**Enter password to unlock your login keyring 请输入密码以解锁您的登录密钥环 -The login keyring did not get unlocked when you logged into your computer. 登录密钥环在您登录系统时未解锁** +**请输入密码以解锁您的登录密钥环 + 登录密钥环在您登录系统时未解锁** ![Enter Password To Unlock Your Login Keyring Ubuntu][2] -It keeps on popping up several times before disappearing if you keep on clicking cancel. You may wonder why do you keep seeing this keyring message all the time? 你需要点击多次取消才能让它消失。你可能想知道为什么系统会多次反复提示这个密钥环消息? -Let me tell you something. It’s not an error. It’s a security feature. 让我来告诉你答案。它其实并没有出错,它只是一个安全特性。 -Surprised? Let me explain the keyring concept in Linux. 奇怪吗?下面就让我来解释下Linux里的密钥环概念。 -### What is keyring in Linux and why is it used? Linux里的密钥环是什么以及为什么需要它? +### Linux里的密钥环是什么以及为什么需要它? ![][3] -Why do you use a keyring (also called [keychain][4]) in the real life? You use it to keep one or more keys grouped together so that they are easy to find and carry. 在现实生活中您为什么要用钥匙环(也叫[钥匙链][4])? 您用它把一把或多把钥匙串到一起, 以便于携带和查找。 -It’s the same concept in Linux. The keyring feature allows your system to group various passwords together and keep it one place. Linux里也是类似的。密钥环特性使您的系统可以将各种密码放在一起,并将其保存在一个地方。 -Most desktop environments like GNOME, KDE, Xfce etc use an implementation of [gnome-keyring][5] to provide this keyring feature in Linux. 大多数Linux桌面环境像GNOME, KDE, Xfce等采用[gnome的密钥环][5]实现来提供这个功能。 -This keyring keeps your ssh keys, GPG keys and keys from applications that use this feature, like Chromium browser. By default, the **keyring is locked with a master password** which is often the login password of the account. 该密钥环保存了ssh密钥,GPG密钥以及使用此功能的应用程序(例如Chromium浏览器)的密钥。 默认情况下,**“密钥环”通过主密码来保护**,该密码通常是帐户的登录密码。 -Every user on your system has its own keyring with (usually) the same password as that of the user account itself. When you login to your system with your password, your keyring is unlocked automatically with your account’s password. 系统上的每个用户都有自己的密钥环,(通常)密码与用户帐户本身的密码相同。 当您使用密码登录系统时,您的密匙环将使用您帐户的密码自动解锁。 -The problem comes when you [switch to auto-login in Ubuntu][1]. This means that you login to the system without entering the password. In such case, your keyring is not unlocked automatically. 当您[启用Ubuntu中的自动登录功能时][1]时,就有问题了。这意味着您无需输入密码即可登录系统。 在这种情况下,您的密钥环不会自动解锁。 -#### Keyring is a security feature 密钥环是一个安全特性 +#### 密钥环是一个安全特性 -Remember I told you that the keyring was a security feature? Now imagine that on your Linux desktop, you are using auto-login. Anyone with access to your desktop can enter the system without password but you have no issues with that perhaps because you use it to browse internet only. 记得我说过密钥环是一个安全特性吗?现在想象一下您在您的Linux电脑上开启了自动登录功能。有权访问您电脑的任何人无需密码就能进入您的系统。但是您可能不会在意,因为您只是用它来访问互联网。 -But if you use a browser like Chromium or [Google Chrome in Ubuntu][6], and use it to save your login-password for various websites, you have an issue on your hand. Anyone can use the browser and login to the websites for which you have saved password in your browser. That’s risky, isn’t it? 但是,如果您使用Chromium或[Ubuntu中的Google Chrome][6]之类的浏览器,并使用它来保存各种网站的登录密码,那么您将遇到麻烦。任何人都可以使用浏览器并利用您在浏览器中保存的密码登录网站。那不就是风险吗? -This is why when you try to use Chrome, it will ask you to unlock the keyring repeatedly. This ensures that only the person who knows the keyring’s password (i.e. the account password) can use the saved password in browser for logging in to their respective websites. 这就是为什么当您使用Chrome时,它将反复地提示您先解锁密钥环。这确保了只有知道密钥环密码的人才能使用在浏览器中保存的密码来登录它们相关的网站。 -If you keep on cancelling the prompt for keyring unlock, it will eventually go away and let you use the browser. However, the saved password won’t be unlocked and you’ll see ‘sync paused’ in Chromium/Chrome browsers. 如果您反复取消解锁密钥环的提示,它最终将消失并允许您使用浏览器。但是,保存的密码将不会被解锁,您在Chromium/Chome浏览器上将会看到'同步暂停'的提示。 ![Sync paused in Google Chrome][7] -#### If this keyring always exited, why you never saw it? 如果密钥环总是存在的,为什么您从来没有见过它呢? +#### 如果密钥环总是存在的,为什么您从来没有见过它呢? -That’s a valid question if you have never seen this keyring thing in your Linux system. 如果您在您的Linux系统上从没见过它的话,这就是一个有效的问题。 -If you never used automatic login (or changed your account’s password), you might not even have realized that this feature exists. 如果您从没有用过自动登录功能(或者修改您的账户密码),您可能都没有意识到这个特性的存在。 -This is because when you login to your system with your password, your keyring is unlocked automatically with your account’s password. 这是因为当您通过您的密码登录系统时,您的密钥环被您的账户密码自动解锁了。 -Ubuntu (and other distributions) asks for password for common admin tasks like modifying users, installing new software etc irrespective of whether you auto login or not. But for regular tasks like using a browser, it doesn’t ask for password because keyring is already unlocked. Ubuntu(和其他发行版)对于通用的管理任务像修改用户, 安装新软件等需要输入密码,无论您是否是自动登录的。但是对于日常任务像使用浏览器,它不需要输入密码因为密钥环已经被解锁了。 -When you switch to automatic login, you don’t enter the password for login anymore. This means that the keyring is not unlocked and hence when you try to use a browser which uses the keyring feature, it will ask to unlock the keyring. 当您切换到自动登录时,您不再需要输入登录密码。这意味着密钥环没有被自动解锁,因此当您使用利用了密钥环特性的浏览器时,它将提示您来解锁密钥环。 -#### You can easily manage the keyring and passwords 您可以容易地管理密钥环和密码 +#### 您可以容易地管理密钥环和密码 -Where is this keyring located? At the core, it’s a daemon (a program that runs automatically in the background). 这个密钥环放在哪里?它的核心是一个守护任务(一个后台自动运行的程序)。 -Don’t worry. You don’t have to ‘fight the daemon’ in the terminal. Most desktop environments come with a graphical application that interacts with this daemon. On KDE, there is KDE Wallet, on GNOME and others, it’s called Password and Keys (originally known as [Seahorse][8]). 别担心。您不必通过终端来操作守护任务。大多数桌面环境都自带有图形化的应用程序可以和守护进程进行交互。KDE上有KDE钱包,GNOME和其他桌面上叫做密码和密钥(原来叫[海马][8])。 ![Password And Keys App in Ubuntu][9] -You can use this GUI application to see what application use the keyring to manage/lock passwords. 您可以用这个GUI程序来查看什么应用程序在用密钥环来管理/保护密码。 -As you can see, my system has the login keyring which is automatically created. There is also a keyrings for storing GPG and SSH keys. The [Certificates][10] is for keeping the certificates (like HTTPS certificates) issued by a certificate authority. 您可以看到,我的系统有自动创建的登录密钥环。也有一个存储GPG和SSH密钥的密钥环。那个[证书][10]是用来保存证书机构颁发的证书(像HTTPS证书)的。 ![Password and Keys application in Ubuntu][11] -You can also use this application to manually store passwords for website. For example, I created a new password-protected keyring called ‘Test’ and stored a password in this keyring manually. 您也可以使用这个应用程序来手动保存网站的密码。例如,我创建了一个新的叫做'Test'的被密码保护的密钥环,并手动存储了一个密码。 -This is slightly better than keeping a list of passwords in a text file. At least in this case your passwords can be viewed only when you unlock the keyring with password. 这比保存一批密码在一个文本文件中要好一些。至少在这种情况下,您的密码只有在您通过密码解锁了密钥环时才允许被看到。 ![Saving New Password Seahorse][12] -One potential problem here is that if you format your system, the manually saved passwords are definitely lost. Normally, you make backup of personal files, not of all the user specific data such as keyring files. 一个潜在的问题是如果您格式化您的系统,手动保存的密码必然会丢失。通常,您会备份您的个人文件,但并不是所有的用户特定数据如密钥环文件。 -There is way to handle that. The keyring data is usually stored in ~/.local/share/keyrings directory. You can see all the keyrings here but you cannot see its content directly. If you remove the password of the keyring (I’ll show the steps in later section of this article), you can read the content of the keyring like a regular text file. You can copy this unlocked keyring file entirely and import it in the Password and Keys application on some other Linux computer (running this application). 有一种办法能解决它。密钥环数据通常保存在~/.local/share/keyrings目录。在这里您可以看到所有的密钥环但是您不能直接看到它们的内容。如果您移除密钥环的密码(我会在这篇文章的后面描述操作步骤),您可以像一个普通的文本文件一样读取密钥环的内容。您可以完整地拷贝这个解锁后的密钥环文件并在其他的Linux机器(安装了密码和密钥应用)上导入到密码和密钥应用程序。 -So, let me summarize what you have learned so far: -来总结一下目前为止所学的内容: - * Most Linux has this ‘keyring feature’ installed and activated by default 大多数Linux缺省已经安装并激活了密钥环特性 - * Each user on a system has its own keyring 系统上的每个用户都拥有他自己的密钥环 - * The keyring is normally locked with the account’s password 密钥环通常被账户密码锁定(保护) - * Keyring is unlocked automatically when you login with your password 当您通过密码登录时密钥环会被自动解锁 - * For auto-login, the keyring is not unlocked and hence you are asked to unlock it when you try to use an application that uses keyring 对于自动登录,密钥环不会自动解锁,因此当您试图使用依赖密钥环的应用程序时会被提示先解锁它 - * Not all browsers or application use the keyring feature 并不是所有的浏览器或应用程序利用了密钥环特性 - * There is a GUI application installed to interact with keyring (Linux上)安装了一个GUI程序可以和密钥环交互 - * You can use the keyring to manually store passwords in encrypted format 您可以用密钥环来手动以加密格式来存储密码 - * You can change the keyring password on your own 您可以自己修改密钥环密码 - * You can export (by unlocking the keyring first) and import it on some other computer to get your manually saved passwords 您可以通过导出(需要先解锁密钥环)并导入(到其他计算机上)的方式来获取手工保存的密码。 +总结一下目前为止所学的内容: + * 大多数Linux缺省已经安装并激活了密钥环特性 + * 系统上的每个用户都拥有他自己的密钥环 + * 密钥环通常被账户密码锁定(保护) + * 当您通过密码登录时密钥环会被自动解锁 + * 对于自动登录,密钥环不会自动解锁,因此当您试图使用依赖密钥环的应用程序时会被提示先解锁它 + * 并不是所有的浏览器或应用程序利用了密钥环特性 + * (Linux上)安装了一个GUI程序可以和密钥环交互 + * 您可以用密钥环来手动以加密格式来存储密码 + * 您可以自己修改密钥环密码 + * 您可以通过导出(需要先解锁密钥环)并导入(到其他计算机上)的方式来获取手工保存的密码。 -### Change keyring password 修改密钥环密码 +### 修改密钥环密码 -Suppose you changed your account password. Now when you login, your system tries to unlock the keyring automatically using the new login password. But the keyring still uses the old login password. 假设您修改了您的账户密码。当您登录时,您的系统试图通过新的登录密码来自动解锁密钥环。但是密钥环还在使用老的登录密码。 -In such a case, you can change the keyring password to the new login password so that the keyring gets unlocked automatically as soon as you login to your system. 这种情况下,您可以修改密钥环密码为新的登录密码,这样密码环才能在您登录系统时自动解锁。 -Open the Password and Keys application from the menu: 从菜单中打开密码和密钥应用程序: ![Look for Password and Keys app in the menu][9] -Now, right click on the Login keyring and click on Change Password: 在登录密钥环上右击并点击修改密码: ![Change Keyring Password][13] -What if you don’t remember the old login password? 如果您不记得老的登录密码怎么办? -You probably know that it is [easy to reset forgotten password in Ubuntu][14]. The problem comes with the keyring in such cases. You changed the account password but you don’t remember the old account password that is still used by the keyring. 您可能知道[Ubuntu上复位忘记的密码是很容易的][14]。但是密钥环在这种场景下还是有问题。您修改了账户密码但是您不记得仍然被密钥环使用的老的账户密码。 -Now you cannot change it because you don’t know the old password. What to do now? 您不能修改它因为您不知道老的密码。怎么办? -In such a case, you’ll have to remove the entire keyring itself. You can do that from the Passwords and Keys application: 这种情况下,您将不得不移除整个密钥环。您可以通过密码和密钥应用程序来操作: ![Delete Keyring Ubuntu][15] -It will ask for your confirmation: 它会提示您进行确认: ![Delete Keyring][16] -Alternatively, you may also manually delete the keyring files in ~/.local/share/keyrings directory. 另外,您也可以手动删除~/.local/share/keyrings目录下的密钥环文件。 -When the old keyring is removed and you try to use Chrome/Chromium, it will ask you to create new keyring. 老的密钥环文件被移除后,您再打开Chrome/Chromium时,它会提示您创建一个新的密钥环。 ![New Keyring Password][17] -You can use the new login password so that the keyring gets unlocked automatically. 您可以用新的登录密码,密钥环就会被自动解锁了。 -### Disable keyring password 禁用密钥环密码 +### 禁用密钥环密码 -In cases where you want to use automatic login but don’t want to unlockk keyring manually, you may choose to disable the keyring with a workaround. Keep in mind that you are disabling a security feature so think twice before doing so. 在您想用自动登录但又不想手动解锁密钥环时,您可以把禁用密钥环密码作为一个规避方法。记住您正在禁用一个安全特性,因此请三思。 -The process is similar to changing keyring password. Open Password and Keys application and go on to change the keyring password. 操作步骤和修改密钥环相似。打开密码和密钥应用程序,然后修改密钥环密码。 -The trick is that when it asks to change the password, don’t enter a new password and hit Continue instead. This will remove any password from the keyring. 技巧在于当它提示修改密码时,不要输入新密码,而是点击继续按钮。这将移除密钥环的密码。 ![Disable Keyring password by not setting any password at all][18] -This way, the keyring will have no password and it remains unlocked all the time. 这种方法,密钥环没有密码保护并将一直处于解锁状态。 -------------------------------------------------------------------------------- From 92ac29628b592c3b1b7ab9fd0cddfbe2d9e565be Mon Sep 17 00:00:00 2001 From: messon007 <306809057@qq.com> Date: Mon, 6 Apr 2020 23:39:33 +0800 Subject: [PATCH 191/218] Move to translated Move to translated --- ...The Keyring Concept in Ubuntu- What is It and How to Use it.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md (100%) diff --git a/sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md b/translated/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md similarity index 100% rename from sources/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md rename to translated/tech/20200329 The Keyring Concept in Ubuntu- What is It and How to Use it.md From 39ca3d5193ba4b86e6fc063915431bc4b895660f Mon Sep 17 00:00:00 2001 From: Name1e5s Date: Mon, 6 Apr 2020 23:57:13 +0800 Subject: [PATCH 192/218] [name1e5s translating] 20200402 When debugging, your attitude matters --- sources/talk/20200402 When debugging, your attitude matters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20200402 When debugging, your attitude matters.md b/sources/talk/20200402 When debugging, your attitude matters.md index 106b40a64a..6968d3f8e3 100644 --- a/sources/talk/20200402 When debugging, your attitude matters.md +++ b/sources/talk/20200402 When debugging, your attitude matters.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (name1e5s) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 83cdc851292fd26410981106d695f29209559ff2 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 7 Apr 2020 00:52:29 +0800 Subject: [PATCH 193/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=20Bitwar?= =?UTF-8?q?den:=20A=20Free=20&=20Open=20Source=20Password=20Manager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md --- ...- A Free - Open Source Password Manager.md | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md diff --git a/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md b/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md new file mode 100644 index 0000000000..26fa46b858 --- /dev/null +++ b/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md @@ -0,0 +1,114 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Bitwarden: A Free & Open Source Password Manager) +[#]: via: (https://itsfoss.com/bitwarden/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +Bitwarden: A Free & Open Source Password Manager +====== + +_**Brief:** Bitwarden is a popular open-source password manager. Here, we take a look at what it has to offer._ + +![][1] + +[Bitwarden][2] is a free and open-source password manager. You might remember that earlier we listed it as one of the [best password managers available for Linux][3]. + +Personally, I’ve been using Bitwarden as my password manager across multiple devices for several months now. So, in this article, I’ll be mentioning the features it offers along with my experience with it. + +**Note:** _In case you have questions about how secure the service is, check out their official security [FAQ page][4] to explore about it._ + +### Features of Bitwarden password manager + +![][5] + +[Bitwarden][2] is an impressive alternative to a lot of other convenient password managers out there. + +Here’s a breakdown of the features: + + * Free & Paid options available + * Available for Teams (Enterprise) and Individuals + * Open source + * Self-hosting support + * Ability to use it as an authenticator app (like Google Authenticator) + * Cross-platform support (Android, iOS, Linux, Windows, & macOS) + * Browser extensions available (Firefox, Chrome, Opera, Edge, Safari) + * Offers command-line tools + * Offers a Web Vault + * Ability to Import/Export Passwords + * [Password Generator][6] + * Auto-fill password + * Two-step authentication + + + +Technically, Bitwarden is completely free to use – however, it also offers some paid plans (Personal pricing plans & Business plans). + +With the premium plans, you get the ability to share the passwords with more users, get API access (business use), and more such premium perks. + +Here’s how the pricing looks like (at the time of writing this article): + +![][7] + +For most individuals, the premium personal plan of **$10/year** shouldn’t be an issue considering the fact that you will be supporting an open-source project. Of course, you can also choose to use it for free with no essential restrictions. + +### Installing Bitwarden on Linux + +![][8] + +It’s quite easy to get Bitwarden installed on your Linux system because it offers an .**AppImage** file. You can refer to our guide on [how to use AppImage][9] files, if you didn’t know it already. + +If you don’t prefer using AppImage – you can opt for the [snap package][10] or simply download the **.deb** or **.rpm** file available on their [official download page][11]. You can also check out their [GitHub page][12] for more information. + +[Download Bitwarden][2] + +You can also utilize the browser extensions if you’re not interested in using the desktop app. + +### My experience with Bitwarden + +Before Bitwarden, I was using [LastPass][13] as my password manager. Even though that’s not a bad option – it’s not an open-source software. + +So, I decided to switch to Bitwarden as soon as I found out about it. + +To start with, I simply exported my data from LastPass and imported it to Bitwarden without any hiccups. I didn’t lose any data in the process. + +In addition to the desktop app, I’ve been using Bitwarden the Firefox add-on, and the Android app. I haven’t had any issues with it after over six months of usage. So, I’d definitely give it thumbs up from my side if you’re willing to try it out! + +### Wrapping Up + +I’d say that Bitwarden is a complete solution for Linux users who want a password manager that works everywhere and syncs easily across multiple devices. + +You can get started for free but if you can, please go for the premium plan of **$10/year** to support this open-source project. + +You may also check our list of [top 5 password managers for Linux][3] should come in handy if you’re looking for more options. + +Have you tried Bitwarden yet? If not, give it a try! Also, what is your favorite password manager? Let me know in the comments below! + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/bitwarden/ + +作者:[Ankush Das][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/bitwarden-screenshot.jpg?ssl=1 +[2]: https://bitwarden.com/ +[3]: https://itsfoss.com/password-managers-linux/ +[4]: https://help.bitwarden.com/security/ +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/bitwarden-dark-mode.jpg?ssl=1 +[6]: https://itsfoss.com/password-generators-linux/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/bitwarden-pricing.jpg?ssl=1 +[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/bitwarden-settings.png?ssl=1 +[9]: https://itsfoss.com/use-appimage-linux/ +[10]: https://snapcraft.io/bitwarden +[11]: https://bitwarden.com/#download +[12]: https://github.com/bitwarden +[13]: https://www.lastpass.com/ From f8b6cceff55b08393f53830530cbd65fc8ab106d Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 7 Apr 2020 00:53:26 +0800 Subject: [PATCH 194/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=20New=20?= =?UTF-8?q?Linux=20Distribution=20UbuntuDDE=20Brings=20The=20Beautiful=20D?= =?UTF-8?q?eepin=20Desktop=20to=20Ubuntu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu.md --- ... The Beautiful Deepin Desktop to Ubuntu.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sources/tech/20200407 New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu.md diff --git a/sources/tech/20200407 New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu.md b/sources/tech/20200407 New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu.md new file mode 100644 index 0000000000..20ea7834d6 --- /dev/null +++ b/sources/tech/20200407 New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu.md @@ -0,0 +1,84 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu) +[#]: via: (https://itsfoss.com/ubuntudde/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +New Linux Distribution UbuntuDDE Brings The Beautiful Deepin Desktop to Ubuntu +====== + +Deepin is a beautiful desktop environment with an intuitive UI. UbuntuDDE project combines the power of Ubuntu and the beauty of Deepin. + +[Deepin Desktop Environment][1] (DDE) is a beautiful desktop environment created by the developers of [Deepin Linux][2]. Initially, Deepin Linux was based on [Ubuntu][3] but later they switched to [Debian][4]. + +![Deepin Desktop Environment in Ubuntu][5] + +One major problem with Deepin Linux is its slow servers. A regular system takes hours to download for the fact that they have all their servers in China and these servers are unfortunately extremely slow. + +If you want to use Deepin desktop, nothing stops you from installing it on your regular Ubuntu system. [UbuntuDDE][6] is trying to make it simpler by providing you an out of the box Deepin desktop experience on top of Ubuntu. This saves you time and effort in installing and configuring Deepin on Ubuntu. + +![Screenshot of UbuntuDDE][7] + +### Ubuntu DDE: Power of Ubuntu and beauty of Deepin desktop + +Please note that UbuntuDDE is not an official flavor of Ubuntu. UbuntuDDE developers are not associated with the Ubuntu team. UbuntuDDE is currently a Remix distribution and is aiming for getting recognized as Ubuntu’s official flavor in future releases. + +UbuntuDDE developers are helped by Alan Pope of Ubuntu’s Snapcraft team and teams of Ubuntu Budgie and [Ubuntu Cinnamon][8] and a few other developers. + +In a conversation with It’s FOSS, its lead developer Arun highlighted that the important aspect of this project is to regularly maintain the DDE packages for Ubuntu and help users enjoy the full taste of DDE (Deepin Desktop Environment). + +![Ubuntu Deepin Edition login screen][9] + +Arun also mentioned that this Ubuntu Deepin remix project started first by maintaining and packaging the packages to the latest release from the upstream i.e. Deepin Repository. Then, it eventually got spin with Ubuntu 20.04 focal resulting in an image file that everyone can install without the hassle to install regular Ubuntu first and then the Deepin Desktop. UbuntuDDE is not just the combo of DDE and Ubuntu but also the fusion of selective packages and design changes by the UbuntuDDE Team. + +![UbuntuDDE screenshot][10] + +Unlike Deepin Linux, UbuntuDDE doesn’t use Deepin Appstore. It uses Ubuntu Software Center instead. This should be a good news if you are spooked by the [spyware labeling of Wuhan-based Deepin Linux][11]. + +### Download UbuntuDDE 20.04 Beta + +UbuntuDDE is aiming to release its first official stable release with Ubuntu 20.04. Like [other Ubuntu flavors][12], UbuntuDDE 20.04 beta is also available for you to download and try. + +Warning! + +A word of warning. UbuntuDDE is a novice project under development. Please don’t use it on your main system. If you want to try it, use it in virtual machine or on a spare system. + +[Download Ubuntu 20.04 DDE Beta][13] + +![Installing UbuntuDDE][14] + +Since it is essentially Ubuntu, installing UbuntuDDE is the same as installing Ubuntu. You may refer to this tutorial showing [how to install Ubuntu inside VirtualBox][15]. + +I know you may think ‘not another Ubuntu’ or ‘it’s just Deepin on Ubuntu that anyone can do’ and you do have a point. But I also know there is a small segment of users who like projects like UbuntuDDE that makes thing easier for them. I mean that’s how many Ubuntu flavor came into existence. What do you think? + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/ubuntudde/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://www.deepin.org/en/dde/ +[2]: https://www.deepin.org/en/ +[3]: https://ubuntu.com/ +[4]: https://www.debian.org/ +[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-deepin-edition-screenshot.jpg?ssl=1 +[6]: https://ubuntudde.com/ +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-deepin-edition-screenshot-1.jpg?ssl=1 +[8]: https://itsfoss.com/ubuntu-cinnamon/ +[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-deepin-edition-screenshot-5.jpg?ssl=1 +[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-deepin-edition-screenshot-2.jpg?ssl=1 +[11]: https://www.deepin.org/en/2018/04/14/linux-deepin-is-not-spyware/ +[12]: https://itsfoss.com/which-ubuntu-install/ +[13]: https://ubuntudde.com/download/ +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/ubuntu-deepin-edition-screenshot-4.jpg?ssl=1 +[15]: https://itsfoss.com/install-linux-in-virtualbox/ From 3caeead340a71b5505da54beebfb699eda260b28 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 7 Apr 2020 00:55:54 +0800 Subject: [PATCH 195/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200406=20What?= =?UTF-8?q?=20is=20good=20documentation=20for=20software=20projects=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200406 What is good documentation for software projects.md --- ...ood documentation for software projects.md | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 sources/tech/20200406 What is good documentation for software projects.md diff --git a/sources/tech/20200406 What is good documentation for software projects.md b/sources/tech/20200406 What is good documentation for software projects.md new file mode 100644 index 0000000000..7726287131 --- /dev/null +++ b/sources/tech/20200406 What is good documentation for software projects.md @@ -0,0 +1,156 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (What is good documentation for software projects?) +[#]: via: (https://opensource.com/article/20/4/documentation) +[#]: author: (Cameron Shorter https://opensource.com/users/cameronshorter) + +What is good documentation for software projects? +====== +Mixing experienced tech writers with open source communities reveals new +approaches for creating better docs. +![Typewriter with hands][1] + +The [Open Geospatial (OSGeo) Foundation][2] recently participated in Google's first [Season of Docs][3], in which Google sponsored senior technical writers to contribute to open source projects. OSGeo is an umbrella organization for around 50 geospatial open source projects. I've contributed to a number of these projects over the years and recently co-mentored the two Season of Docs technical writers Google allocated to OSGeo. + +We discovered during our involvement that, like many open source projects, we knew little about: + + * The state of our docs + * What we were aiming for + * Our priorities + * The details of the challenges we faced + * How to improve + + + +We discovered: + + * How hard it is to keep tech docs current + * Skillsets from multiple roles are needed to create good docs + * Open source's docs and writing processes are immature when compared to software development + + + +It is an exciting problem space with high-value challenges ready to be tackled. It reminds me of the early days of open source, before it became trendy with business. + +### What should tech writers work on? + +Open source communities welcomed the chance to have tech writers improve our docs and expressed a pressing need for it, but found it hard to articulate exactly what needed to be fixed: + + * People explained that their project docs often hadn't been updated between doc releases. + * Some projects had new features that had not been documented. + * Other projects had issue lists, collating observed deficiencies, but had no systematic review. + * Most observed that docs were created by developers with no formal tech writing training. + * Many noted that their English docs were written by non-native English speakers. + + + +But where should we start? We needed to decide on what we wanted and what we should work on first. + +### Defining good docs + +We then realized that we didn't have a good definition of "good documentation." For our software projects, we have a comprehensive [incubation process][4] to assess the maturity of software and the project's community, but we couldn't find a similar set of metrics to define "good documentation." So we started the [Good Docs Project][5] to collate "best-practice templates and writing instructions for documenting open source software." This helped us define what we were aiming for and prioritize what we can achieve with our available resources. + +### Documentation audit + +Once we knew what good docs looked like, we could audit the status of a project's docs: + + * What documentation do we have? + * Does it cover all the functionality? + * Does it cover end-user needs? + * Is the documentation any good? + + + +We discovered that the quality, currency, and completeness of our OSGeo docs were immature when compared to the quality of the software they described. + +### It takes a village to raise good docs + +In researching open source projects' documentation needs, it became clear that crafting good docs requires multiple skillsets. Ideally, a doc team has access to: + + * A developer with a deep understanding of the software being described + * A software user who can explain the application within the context of the application's domain + * An educator who understands the principles of learning + * An information architect who understands how to structure material + * A writer who writes clearly and concisely with good grammar + * Someone who speaks English as a first language (for English docs) + * A translator who is good at translating docs into multiple languages + * A DevOps person who can set up doc-build pipelines + * A community builder, facilitator, and coordinator who can inspire collective action, capture offers of help, and help all these different personas collaborate + + + +Technical writers usually have a high-level understanding of most of these domains, and their skills are often under-appreciated and under-utilized, especially if they are directed with a vague "just clean up the grammar and stuff." + +However, the best docs typically have been influenced by multiple stakeholders. This can be partly achieved by [using templates to collaborate][6] between domains, timeframes, projects, and organizations. + +### Tools for documenting open source projects are painful + +We experienced significant pain in trying to convert between software and [writing toolsets][7]. We love the versioning of Git, are frustrated by clunky Markdown interfaces, and want access to editing and review workflows in Word and Google Docs along with grammar and syntax plugin tools such as Grammarly. Translation tools such as Transifex are pretty cool, too. + +Could someone please write an application that addresses this use case? Maybe there is an idea in here for a future [Google Summer of Code][8]? + +### Achievements during OSGeo's Season of Docs + +We're quite proud of our achievements during OSGeo's participation in Google's Season of Docs. Our allocated tech writers amplified the effectiveness of our existing documentation communities, and our documentation communities amplified the effectiveness of these tech writers: + + * [Felicity Brand][9] worked with around 50 of OSGeo's open source projects to update the Quickstarts as part of our [OSGeoLive][10] distribution of software. + * [Swapnil Ogale][11] worked directly with [GeoNetwork's][12] documentation team, auditing the breadth and quality of docs, setting up templates for future docs, and updating many of the docs. + + + +Further: + + * We kicked off the Good Docs Project to establish "best-practice templates and writing instructions for documenting open source software." + * In conjunction with the [OGC][13] and [ISO][14] spatial standards communities, we kicked off an [OSGeo Lexicon][15] project to coordinate official definitions for terminology used within the OSGeo context. This will apply best-practice definitions to previously haphazard glossaries. + * We did a [deep-dive analysis][16] of the documentation challenges faced by QGIS, one of OSGeo's most successful projects. Surprisingly, its biggest problem isn't a lack of tech writers or complicated tools (although they are factors). Key problems center around: + * Poorly capturing community goodwill and offers of assistance + * Lack of direction + * Struggling to keep up with a rapidly evolving software baseline + * Insufficient writing expertise + * A high technical barrier to entry + * Documentation and training being generated outside of the core project + * Awkward documentation tools and processes + + + +### Thanks, Google + +We are grateful to Google for sponsoring Season of Docs. We've learned plenty from Felicity and Swapnil, the great writers that Google provided to us, and we hope what we have learned will help make future Season of Docs initiatives even better. + +* * * + +_This originally appeared on [Cameron Shorter's blog][17] and is republished with permission._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/documentation + +作者:[Cameron Shorter][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/cameronshorter +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv (Typewriter with hands) +[2]: https://www.osgeo.org/ +[3]: https://developers.google.com/season-of-docs +[4]: https://www.osgeo.org/about/committees/incubation/graduation/ +[5]: https://thegooddocsproject.dev/ +[6]: http://cameronshorter.blogspot.com/2019/02/inspiring-techies-to-become-great.html +[7]: https://opensource.com/article/20/3/open-source-writing-tools +[8]: https://summerofcode.withgoogle.com/ +[9]: https://flicstar.com/2019/11/27/project-report-for-season-of-docs-2019/ +[10]: https://live.osgeo.org/en/index.html +[11]: https://docs.google.com/document/d/1sTGz8aWPTS6moxgrtsBRz19roemJlilcdQk6B-9IZOo +[12]: https://geonetwork-opensource.org/ +[13]: https://www.ogc.org/ +[14]: https://committee.iso.org/home/tc211 +[15]: https://wiki.osgeo.org/wiki/Lexicon_Committee +[16]: http://cameronshorter.blogspot.com/2019/12/why-qgis-docs-team-is-struggling.html +[17]: https://cameronshorter.blogspot.com/2020/03/insights-from-mixing-writers-with-open.html From 623885d1524e1a11fb4463bc93061eef400611fa Mon Sep 17 00:00:00 2001 From: DarkSun Date: Tue, 7 Apr 2020 01:03:15 +0800 Subject: [PATCH 196/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200406=20How=20?= =?UTF-8?q?to=20Use=20a=20Differential=20Analyzer=20(to=20Murder=20People)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md --- ...ifferential Analyzer (to Murder People).md | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md diff --git a/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md b/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md new file mode 100644 index 0000000000..6796e25603 --- /dev/null +++ b/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md @@ -0,0 +1,147 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Use a Differential Analyzer (to Murder People)) +[#]: via: (https://twobithistory.org/2020/04/06/differential-analyzer.html) +[#]: author: (Two-Bit History https://twobithistory.org) + +How to Use a Differential Analyzer (to Murder People) +====== + +A differential analyzer is a mechanical, analog computer that can solve differential equations. Differential analyzers aren’t used anymore because even a cheap laptop can solve the same equations much faster—and can do it in the background while you stream the new season of Westworld on HBO. Before the invention of digital computers though, differential analyzers allowed mathematicians to make calculations that would not have been practical otherwise. + +It is hard to see today how a computer made out of anything other than digital circuitry printed in silicon could work. A mechanical computer sounds like something out of a steampunk novel. But differential analyzers did work and even proved to be an essential tool in many lines of research. Most famously, differential analyzers were used by the US Army to calculate range tables for their artillery pieces. Even the largest gun is not going to be effective unless you have a range table to help you aim it, so differential analyzers arguably played an important role in helping the Allies win the Second World War. + +To understand how differential analyzers could do all this, you will need to know what differential equations are. Forgotten what those are? That’s okay, because I had too. + +### Differential Equations + +Differential equations are something you might first encounter in the final few weeks of a college-level Calculus I course. By that point in the semester, your underpaid adjunct professor will have taught you about limits, derivatives, and integrals; if you take those concepts and add an equals sign, you get a differential equation. + +Differential equations describe rates of change in terms of some other variable (or perhaps multiple other variables). Whereas a familiar algebraic expression like (y = 4x + 3) specifies the relationship between some variable quantity (y) and some other variable quantity (x), a differential equation, which might look like (\frac{dy}{dx} = x), or even (\frac{dy}{dx} = 2), specifies the relationship between a _rate of change_ and some other variable quantity. Basically, a differential equation is just a description of a rate of change in exact mathematical terms. The first of those last two differential equations is saying, “The variable (y) changes with respect to (x) at a rate defined exactly by (x),” and the second is saying, “No matter what (x) is, the variable (y) changes with respect to (x) at a rate of exactly 2.” + +Differential equations are useful because in the real world it is often easier to describe how complex systems change from one instant to the next than it is to come up with an equation describing the system at all possible instants. Differential equations are widely used in physics and engineering for that reason. One famous differential equation is the heat equation, which describes how heat diffuses through an object over time. It would be hard to come up with a function that fully describes the distribution of heat throughout an object given only a time (t), but reasoning about how heat diffuses from one time to the next is less likely to turn your brain into soup—the hot bits near lots of cold bits will probably get colder, the cold bits near lots of hot bits will probably get hotter, etc. So the heat equation, though it is much more complicated than the examples in the last paragraph, is likewise just a description of rates of change. It describes how the temperature of any one point on the object will change over time given how its temperature differs from the points around it. + +Let’s consider another example that I think will make all of this more concrete. If I am standing in a vacuum and throw a tennis ball straight up, will it come back down before I asphyxiate? This kind of question, posed less dramatically, is the kind of thing I was asked in high school physics class, and all I needed to solve it back then were some basic Newtonian equations of motion. But let’s pretend for a minute that I have forgotten those equations and all I can remember is that objects accelerate toward earth at a constant rate of (g), or about (10 ;m/s^2). How can differential equations help me solve this problem? + +Well, we can express the one thing I remember about high school physics as a differential equation. The tennis ball, once it leaves my hand, will accelerate toward the earth at a rate of (g). This is the same as saying that the velocity of the ball will change (in the negative direction) over time at a rate of (g). We could even go one step further and say that _the rate of change in the height of my ball above the ground_ (this is just its velocity) will change over time at a rate of negative (g). We can write this down as the following, where (h) represents height and (t) represents time: + +[\frac{d^2h}{dt^2} = -g] + +This looks slightly different from the differential equations we have seen so far because this is what is known as a second-order differential equation. We are talking about the rate of change of a rate of change, which, as you might remember from your own calculus education, involves second derivatives. That’s why parts of the expression on the left look like they are being squared. But this equation is still just expressing the fact that the ball accelerates downward at a constant acceleration of (g). + +From here, one option I have is to use the tools of calculus to solve the differential equation. With differential equations, this does not mean finding a single value or set of values that satisfy the relationship but instead finding a function or set of functions that do. Another way to think about this is that the differential equation is telling us that there is some function out there whose second derivative is the constant (-g); we want to find that function because it will give us the height of the ball at any given time. This differential equation happens to be an easy one to solve. By doing so, we can re-derive the basic equations of motion that I had forgotten and easily calculate how long it will take the ball to come back down. + +But most of the time differential equations are hard to solve. Sometimes they are even impossible to solve. So another option I have, given that I paid more attention in my computer science classes that my calculus classes in college, is to take my differential equation and use it as the basis for a simulation. If I know the starting velocity and the acceleration of my tennis ball, then I can easily write a little for-loop, perhaps in Python, that iterates through my problem second by second and tells me what the velocity will be at any given second (t) after the initial time. Once I’ve done that, I could tweak my for-loop so that it also uses the calculated velocity to update the height of the ball on each iteration. Now I can run my Python simulation and figure out when the ball will come back down. My simulation won’t be perfectly accurate, but I can decrease the size of the time step if I need more accuracy. All I am trying to accomplish anyway is to figure out if the ball will come back down while I am still alive. + +This is the numerical approach to solving a differential equation. It is how differential equations are solved in practice in most fields where they arise. Computers are indispensable here, because the accuracy of the simulation depends on us being able to take millions of small little steps through our problem. Doing this by hand would obviously be error-prone and take a long time. + +So what if I were not just standing in a vacuum with a tennis ball but were standing in a vacuum with a tennis ball in, say, 1936? I still want to automate my computation, but Claude Shannon won’t even complete his master’s thesis for another year yet (the one in which he casually implements Boolean algebra using electronic circuits). Without digital computers, I’m afraid, we have to go analog. + +### The Differential Analyzer + +The first differential analyzer was built between 1928 and 1931 at MIT by Vannevar Bush and Harold Hazen. Both men were engineers. The machine was created to tackle practical problems in applied mathematics and physics. It was supposed to address what Bush described, in [a 1931 paper][1] about the machine, as the contemporary problem of mathematicians who are “continually being hampered by the complexity rather than the profundity of the equations they employ.” + +A differential analyzer is a complicated arrangement of rods, gears, and spinning discs that can solve differential equations of up to the sixth order. It is like a digital computer in this way, which is also a complicated arrangement of simple parts that somehow adds up to a machine that can do amazing things. But whereas the circuitry of a digital computer implements Boolean logic that is then used to simulate arbitrary problems, the rods, gears, and spinning discs _directly_ simulate the differential equation problem. This is what makes a differential analyzer an analog computer—it is a direct mechanical analogy for the real problem. + +How on earth do gears and spinning discs do calculus? This is actually the easiest part of the machine to explain. The most important components in a differential analyzer are the six mechanical integrators, one for each order in a sixth-order differential equation. A mechanical integrator is a relatively simple device that can integrate a single input function; mechanical integrators go back to the 19th century. We will want to understand how they work, but, as an aside here, Bush’s big accomplishment was not inventing the mechanical integrator but rather figuring out a practical way to chain integrators together to solve higher-order differential equations. + +A mechanical integrator consists of one large spinning disc and one much smaller spinning wheel. The disc is laid flat parallel to the ground like the turntable of a record player. It is driven by a motor and rotates at a constant speed. The small wheel is suspended above the disc so that it rests on the surface of the disc ever so slightly—with enough pressure that the disc drives the wheel but not enough that the wheel cannot freely slide sideways over the surface of the disc. So as the disc turns, the wheel turns too. + +The speed at which the wheel turns will depend on how far from the center of the disc the wheel is positioned. The inner parts of the disc, of course, are rotating more slowly than the outer parts. The wheel stays fixed where it is, but the disc is mounted on a carriage that can be moved back and forth in one direction, which repositions the wheel relative to the center of the disc. Now this is the key to how the integrator works: The position of the disc carriage is driven by the input function to the integrator. The output from the integrator is determined by the rotation of the small wheel. So your input function drives the rate of change of your output function and you have just transformed the derivative of some function into the function itself—which is what we call integration! + +If that explanation does nothing for you, seeing a mechanical integrator in action really helps. The principle is surprisingly simple and there is no way to watch the device operate without grasping how it works. So I have created [a visualization of a running mechanical integrator][2] that I encourage you to take a look at. The visualization shows the integration of some function (f(x)) into its antiderivative (F(x)) while various things spin and move. It’s pretty exciting. + +![][3] _A nice screenshot of my visualization, but you should check out the real thing!_ + +So we have a component that can do integration for us, but that alone is not enough to solve a differential equation. To explain the full process to you, I’m going to use an example that Bush offers himself in his 1931 paper, which also happens to be essentially the same example we contemplated in our earlier discussion of differential equations. (This was a happy accident!) Bush introduces the following differential equation to represent the motion of a falling body: + +[\frac{d^2x}{dt^2} = -k,\frac{dx}{dt} - g] + +This is the same equation we used to model the motion of our tennis ball, only Bush has used (x) in place of (h) and has added another term that accounts for how air resistance will decelerate the ball. This new term describes the effect of air resistance on the ball in the simplest possible way: The air will slow the ball’s velocity at a rate that is proportional to its velocity (the (k) here is some proportionality constant whose value we don’t really care about). So as the ball moves faster, the force of air resistance will be stronger, further decelerating the ball. + +To configure a differential analyzer to solve this differential equation, we have to start with what Bush calls the “input table.” The input table is just a piece of graphing paper mounted on a carriage. If we were trying to solve a more complicated equation, the operator of the machine would first plot our input function on the graphing paper and then, once the machine starts running, trace out the function using a pointer connected to the rest of the machine. In this case, though, our input is just the constant (g), so we only have to move the pointer to the right value and then leave it there. + +What about the other variables (x) and (t)? The (x) variable is our output as it represents the height of the ball. It will be plotted on graphing paper placed on the output table, which is similar to the input table only the pointer is a pen and is driven by the machine. The (t) variable should do nothing more than advance at a steady rate. (In our Python simulation of the tennis ball problem as posed earlier, we just incremented (t) in a loop.) So the (t) variable comes from the differential analyzer’s motor, which kicks off the whole process by rotating the rod connected to it at a constant speed. + +Bush has a helpful diagram documenting all of this that I will show you in a second, but first we need to make one more tweak to our differential equation that will make the diagram easier to understand. We can integrate both sides of our equation once, yielding the following: + +[\frac{dx}{dt} = - \int \left(k,\frac{dx}{dt} + g\right),dt] + +The terms in this equation map better to values represented by the rotation of various parts of the machine while it runs. Okay, here’s that diagram: + +![][4] _The differential analyzer configured to solve the problem of a falling body in one dimension._ + +The input table is at the top of the diagram. The output table is at the bottom-right. The output table here is set up to graph both (x) and (\frac{dx}{dt}), i.e. height and velocity. The integrators appear at the bottom-left; since this is a second-order differential equation, we need two. The motor drives the very top rod labeled (t). (Interestingly, Bush referred to these horizontal rods as “buses.”) + +That leaves two components unexplained. The box with the little (k) in it is a multiplier respresnting our proportionality constant (k). It takes the rotation of the rod labeled (\frac{dx}{dt}) and scales it up or down using a gear ratio. The box with the (\sum) symbol is an adder. It uses a clever arrangement of gears to add the rotations of two rods together to drive a third rod. We need it since our equation involves the sum of two terms. These extra components available in the differential analyzer ensure that the machine can flexibly simulate equations with all kinds of terms and coefficients. + +I find it helpful to reason in ultra-slow motion about the cascade of cause and effect that plays out as soon as the motor starts running. The motor immediately begins to rotate the rod labeled (t) at a constant speed. Thus, we have our notion of time. This rod does three things, illustrated by the three vertical rods connected to it: it drives the rotation of the discs in both integrators and also advances the carriage of the output table so that the output pen begins to draw. + +Now if the integrators were set up so that their wheels are centered, then the rotation of rod (t) would cause no other rods to rotate. The integrator discs would spin but the wheels, centered as they are, would not be driven. The output chart would just show a flat line. This happens because we have not accounted for the initial conditions of the problem. In our earlier Python simulation, we needed to know the initial velocity of the ball, which we would have represented there as a constant variable or as a parameter of our Python function. Here, we account for the initial velocity and acceleration by displacing the integrator discs by the appropriate amount before the machine begins to run. + +Once we’ve done that, the rotation of rod (t) propagates through the whole system. Physically, a lot of things start rotating at the same time, but we can think of the rotation going first to integrator II, which combines it with the acceleration expression calculated based on (g) and then integrates it to get the result (\frac{dx}{dt}). This represents the velocity of the ball. The velocity is in turn used as input to integrator I, whose disc is displaced so that the output wheel rotates at the rate (\frac{dx}{dt}). The output from integrator I is our final output (x), which gets routed directly to the output table. + +One confusing thing I’ve glossed over is that there is a cycle in the machine: Integrator II takes as an input the rotation of the rod labeled ((k,\frac{dx}{dt} + g)), but that rod’s rotation is determined in part by the output from integrator II itself. This might make you feel queasy, but there is no physical issue here—everything is rotating at once. If anything, we should not be surprised to see cycles like this, since differential equations often describe rates of change in a function as a function of the function itself. (In this example, the acceleration, which is the rate of change of velocity, depends on the velocity.) + +With everything correctly configured, the output we get is a nice graph, charting both the position and velocity of our ball over time. This graph is on paper. To our modern digital sensibilities, that might seem absurd. What can you do with a paper graph? While it’s true that the differential analyzer is not so magical that it can write out a neat mathematical expression for the solution to our problem, it’s worth remembering that neat solutions to many differential equations are not possible anyway. The paper graph that the machine does write out contains exactly the same information that could be output by our earlier Python simulation of a falling ball: where the ball is at any given time. It can be used to answer any practical question you might have about the problem. + +The differential analyzer is a preposterously cool machine. It is complicated, but it fundamentally involves nothing more than rotating rods and gears. You don’t have to be an electrical engineer or know how to fabricate a microchip to understand all the physical processes involved. And yet the machine does calculus! It solves differential equations that you never could on your own. The differential analyzer demonstrates that the key material required for the construction of a useful computing machine is not silicon but human ingenuity. + +### Murdering People + +Human ingenuity can serve purposes both good and bad. As I have mentioned, the highest-profile use of differential analyzers historically was to calculate artillery range tables for the US Army. To the extent that the Second World War was the “Good Fight,” this was probably for the best. But there is also no getting past the fact that differential analyzers helped to make very large guns better at killing lots of people. And kill lots of people they did—if Wikipedia is to be believed, more soldiers were killed by artillery than small arms fire during the Second World War. + +I will get back to the moralizing in a minute, but just a quick detour here to explain why calculating range tables was hard and how differential analyzers helped, because it’s nice to see how differential analyzers were applied to a real problem. A range table tells the artilleryman operating a gun how high to elevate the barrel to reach a certain range. One way to produce a range table might be just to fire that particular kind of gun at different angles of elevation many times and record the results. This was done at proving grounds like the Aberdeen Proving Ground in Maryland. But producing range tables solely through empirical observation like this is expensive and time-consuming. There is also no way to account for other factors like the weather or for different weights of shell without combinatorially increasing the necessary number of firings to something unmanageable. So using a mathematical theory that can fill in a complete range table based on a smaller number of observed firings is a better approach. + +I don’t want to get too deep into how these mathematical theories work, because the math is complicated and I don’t really understand it. But as you might imagine, the physics that governs the motion of an artillery shell in flight is not that different from the physics that governs the motion of a tennis ball thrown upward. The need for accuracy means that the differential equations employed have to depart from the idealized forms we’ve been using and quickly get gnarly. Even the earliest attempts to formulate a rigorous ballistic theory involve equations that account for, among other factors, the weight, diameter, and shape of the projectile, the prevailing wind, the altitude, the atmospheric density, and the rotation of the earth[1][5]. + +So the equations are complicated, but they are still differential equations that a differential analyzer can solve numerically in the way that we have already seen. Differential analyzers were put to work solving ballistics equations at the Aberdeen Proving Ground in 1935, where they dramatically sped up the process of calculating range tables.[2][6] Nevertheless, during the Second World War, the demand for range tables grew so quickly that the US Army could not calculate them fast enough to accompany all the weaponry being shipped to Europe. This eventually led the Army to fund the ENIAC project at the University of Pennsylvania, which, depending on your definitions, produced the world’s first digital computer. ENIAC could, through rewiring, run any program, but it was constructed primarily to perform range table calculations many times faster than could be done with a differential analyzer. + +Given that the range table problem drove much of the early history of computing even apart from the differential analyzer, perhaps it’s unfair to single out the differential analyzer for moral hand-wringing. The differential analyzer isn’t uniquely compromised by its military applications—the entire field of computing, during the Second World War and well afterward, advanced because of the endless funding being thrown at it by the United States military. + +Anyway, I think the more interesting legacy of the differential analyzer is what it teaches us about the nature of computing. I am surprised that the differential analyzer can accomplish as much as it can; my guess is that you are too. It is easy to fall into the trap of thinking of computing as the realm of what can be realized with very fast digital circuits. In truth, computing is a more abstract process than that, and electronic, digital circuits are just what we typically use to get it done. In his paper about the differential analyzer, Vannevar Bush suggests that his invention is just a small contribution to “the far-reaching project of utilizing complex mechanical interrelationships as substitutes for intricate processes of reasoning.” That puts it nicely. + +_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][7] on Twitter or subscribe to the [RSS feed][8] to make sure you know when a new post is out._ + +_Previously on TwoBitHistory…_ + +> Do you worry that your children are "BBS-ing"? Do you have a neighbor who talks too much about his "door games"? +> +> In this VICE News special report, we take you into the seedy underworld of bulletin board systems: +> +> — TwoBitHistory (@TwoBitHistory) [February 2, 2020][9] + + 1. Alan Gluchoff. “Artillerymen and Mathematicians: Forest Ray Moulton and Changes in American Exterior Ballistics, 1885-1934.” Historia Mathematica, vol. 38, no. 4, 2011, pp. 506–547., . [↩︎][10] + + 2. Karl Kempf. “Electronic Computers within the Ordnance Corps,” 1961, accessed April 6, 2020, . [↩︎][11] + + + + +-------------------------------------------------------------------------------- + +via: https://twobithistory.org/2020/04/06/differential-analyzer.html + +作者:[Two-Bit History][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://twobithistory.org +[b]: https://github.com/lujun9972 +[1]: http://worrydream.com/refs/Bush%20-%20The%20Differential%20Analyzer.pdf +[2]: https://sinclairtarget.com/differential-analyzer/ +[3]: https://twobithistory.org/images/diff-analyzer-viz.png +[4]: https://twobithistory.org/images/analyzer-diagram.png +[5]: tmp.GUgd146Tkg#fn:1 +[6]: tmp.GUgd146Tkg#fn:2 +[7]: https://twitter.com/TwoBitHistory +[8]: https://twobithistory.org/feed.xml +[9]: https://twitter.com/TwoBitHistory/status/1224014531778826240?ref_src=twsrc%5Etfw +[10]: tmp.GUgd146Tkg#fnref:1 +[11]: tmp.GUgd146Tkg#fnref:2 From f36146f1b3f3bbfcc32e9f45cf548de5cff40dc9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 7 Apr 2020 08:31:01 +0800 Subject: [PATCH 197/218] translated --- ...hich Graphics Card do You Have in Linux.md | 102 ------------------ ...hich Graphics Card do You Have in Linux.md | 102 ++++++++++++++++++ 2 files changed, 102 insertions(+), 102 deletions(-) delete mode 100644 sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md create mode 100644 translated/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md diff --git a/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md b/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md deleted file mode 100644 index 112a024b5c..0000000000 --- a/sources/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Find Which Graphics Card do You Have in Linux?) -[#]: via: (https://itsfoss.com/check-graphics-card-linux/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Find Which Graphics Card do You Have in Linux? -====== - -Be it [Nvidia][1] or [Radeon][2] or Intel, they all may have some issues with Linux. When you are on your way to troubleshoot the graphics problem, the first thing you want to know is which graphics card do you have in your system. - -Linux has several commands to check hardware information. You can use them to check what graphics card (also refer to as video card) do you have. Let me show you a couple of commands to get GPU information in Linux. - -### Check graphics card details in Linux command line - -![][3] - -#### Use lspci command to find graphics card - -The lspci command displays the information about devices connected through [PCI][4] (peripheral Component Interconnect) buses. Basically, this command gives you the detail about all the peripheral devices to your system from keyboard and mouse to sound, network and graphics cards. - -By default, you’ll have a huge list of such peripheral devices. This is why you need to filter the output for graphics card with grep command in this manner: - -``` -lspci | grep VGA -``` - -This should show a one line information about your graphics card: - -``` -[email protected]:~$ lspci | grep VGA -00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02) -``` - -As you can see, my system has Intel HD 620 video card. - -#### Get detailed graphics card information with lshw command in Linux - -The lspci command is good enough to see what graphics card you have but it doesn’t tell you a lot. You can use lshw command to get more information on it. - -This command requires you to have root access. You need to specify that you are looking for video card (graphics card) information in this fashion: - -``` -sudo lshw -C video -``` - -And as you can see in the output below, this command gives more information on the graphics card such as clock rate, width, driver etc. - -``` -[email protected]:~$ sudo lshw -C video -[sudo] password for abhishek: - *-display - description: VGA compatible controller - product: HD Graphics 620 - vendor: Intel Corporation - physical id: 2 - bus info: [email protected]:00:02.0 - version: 02 - width: 64 bits - clock: 33MHz - capabilities: pciexpress msi pm vga_controller bus_master cap_list rom - configuration: driver=i915 latency=0 - resources: irq:139 memory:db000000-dbffffff memory:90000000-9fffffff ioport:f000(size=64) memory:c0000-dffff -``` - -#### Bonus Tip: Check graphics card details graphically - -It’s not that you must use the command line to find graphics card details in Linux. Most Linux distributions (or should I say desktop environments) provide essential details in the settings application. - -For example, if you are using [GNOME desktop environment][5], you can check the details by going to About section of Settings. Here’s what it looks like in [Ubuntu 20.04][6]: - -![Graphics card information check graphically][7] - -I hope you find this quick tip helpful. You can also use the same commands to [find your network adapter][8] and [CPU information in Linux][9]. - -If you have questions or suggestions, don’t hesitate to write a comment. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/check-graphics-card-linux/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.nvidia.com/en-us/ -[2]: https://www.amd.com/en/graphics/radeon-rx-graphics -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/check-gpu-info-linux.jpg?ssl=1 -[4]: https://en.wikipedia.org/wiki/Conventional_PCI -[5]: https://www.gnome.org/ -[6]: https://itsfoss.com/ubuntu-20-04-release-features/ -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-gpu-check.jpg?ssl=1 -[8]: https://itsfoss.com/find-network-adapter-ubuntu-linux/ -[9]: https://linuxhandbook.com/check-cpu-info-linux/ diff --git a/translated/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md b/translated/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md new file mode 100644 index 0000000000..68e41c5b9a --- /dev/null +++ b/translated/tech/20200401 How to Find Which Graphics Card do You Have in Linux.md @@ -0,0 +1,102 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Find Which Graphics Card do You Have in Linux?) +[#]: via: (https://itsfoss.com/check-graphics-card-linux/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +如何找出 Linux 中的显卡? +====== + +无论是 [Nvidia][1] 还是 [Radeon][2] 或者 Intel,它们都可能在 Linux 中有问题。当你要对图形问题进行故障排除时,首先要了解系统中装有哪种显卡。 + +Linux 有几个命令可以检查硬件信息。你可以使用它们来检查你有哪些显卡(也称为视频卡)。让我向你展示一些命令来获取 Linux 中的 GPU 信息。 + +### 在 Linux 命令行中检查显卡详细信息 + +![][3] + +#### 使用 lspci 命令查找显卡 + +lspci 命令显示通过 [PCI][4](外设组件互连)总线连接的设备的信息。基本上,此命令提供有关系统所有外设的详细信息,从键盘和鼠标到声卡、网卡和显卡。 + +默认情况下,你会有大量的此类外设列表。这就是为什么你需要用 grep 命令过滤显卡的原因: + +``` +lspci | grep VGA +``` + +这应该会显示一行有关你显卡的信息: + +``` +[email protected]:~$ lspci | grep VGA +00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02) +``` + +如你所见,我的系统中有 Intel HD 620 显卡。 + +#### 在 Linux 中使用 lshw 命令获取显卡详细信息 + +lspci 命令足以查看你的显卡,但是并不能告诉你很多信息。你可以使用 lshw 命令获取有关它的更多信息。 + +此命令要求你有 root 用户权限。你需要以这种方式查找视频卡(显卡)信息: + +``` +sudo lshw -C video +``` + +正如你在下面的输出中看到的那样,此命令提供了有关显卡的更多信息,例如时钟频率、位宽、驱动等。 + +``` +[email protected]:~$ sudo lshw -C video +[sudo] password for abhishek: + *-display + description: VGA compatible controller + product: HD Graphics 620 + vendor: Intel Corporation + physical id: 2 + bus info: [email protected]:00:02.0 + version: 02 + width: 64 bits + clock: 33MHz + capabilities: pciexpress msi pm vga_controller bus_master cap_list rom + configuration: driver=i915 latency=0 + resources: irq:139 memory:db000000-dbffffff memory:90000000-9fffffff ioport:f000(size=64) memory:c0000-dffff +``` + +#### 额外的技巧:以图形方式检查显卡详细信息 + +并非必须使用命令行在 Linux 中查找显卡详细信息。大多数 Linux 发行版(或者应该说是桌面环境)在设置中提供了必要的详细信息。 + +例如,如果你使用的是 [GNOME 桌面环境][5],那么可以进入“设置”的“关于”部分来检查详细信息。[Ubuntu 20.04][6] 中看上去像这样: + +![Graphics card information check graphically][7] + +我希望这个快速技巧对你有所帮助。你也可以使用相同的命令来[查找网卡][8]和 [Linux 中的 CPU 信息][9]。 + +如果你有任何疑问或建议,请随时发表评论。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/check-graphics-card-linux/ + +作者:[Abhishek Prakash][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://www.nvidia.com/en-us/ +[2]: https://www.amd.com/en/graphics/radeon-rx-graphics +[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/check-gpu-info-linux.jpg?ssl=1 +[4]: https://en.wikipedia.org/wiki/Conventional_PCI +[5]: https://www.gnome.org/ +[6]: https://itsfoss.com/ubuntu-20-04-release-features/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/ubuntu-gpu-check.jpg?ssl=1 +[8]: https://itsfoss.com/find-network-adapter-ubuntu-linux/ +[9]: https://linuxhandbook.com/check-cpu-info-linux/ From dfcac2b5417a66f3ad8f4493879662bdf0e7ec98 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 7 Apr 2020 08:42:24 +0800 Subject: [PATCH 198/218] translating --- ...a private chat server with a Raspberry Pi and Rocket.Chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md b/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md index 26e823de79..8c7b49e7c3 100644 --- a/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md +++ b/sources/tech/20200327 Build a private chat server with a Raspberry Pi and Rocket.Chat.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a8b438fc8c351f723d3c1487693a480a74ac1be7 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Tue, 7 Apr 2020 09:46:51 +0800 Subject: [PATCH 199/218] Rename sources/tech/20200406 What is good documentation for software projects.md to sources/talk/20200406 What is good documentation for software projects.md --- .../20200406 What is good documentation for software projects.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200406 What is good documentation for software projects.md (100%) diff --git a/sources/tech/20200406 What is good documentation for software projects.md b/sources/talk/20200406 What is good documentation for software projects.md similarity index 100% rename from sources/tech/20200406 What is good documentation for software projects.md rename to sources/talk/20200406 What is good documentation for software projects.md From a26ba55a7d4002cbe3aca3504fb9d9ed0e30825b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 10:41:00 +0800 Subject: [PATCH 200/218] PRF @wxy --- ...recting Kubernetes traffic with Traefik.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md b/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md index bb35205ad2..fce1c26ee6 100644 --- a/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md +++ b/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Directing Kubernetes traffic with Traefik) @@ -16,21 +16,21 @@ 在本文中,我们将部署几个简单的网站,并学习如何使用 Traefik 将来自外部世界的流量引入到我们的集群中。之后,我们还将学习如何删除 Kubernetes 资源。让我们开始吧! -- [video](https://youtu.be/QcC-5fRhsM8) +- [video](https://img.linux.net.cn/static/video/Ingressing%20with%20k3s-QcC-5fRhsM8.mp4) ### 准备 -要继续阅读本文,你只需要我们在上一篇文章中构建的 [k3s 树莓派集群][2]。由于你的集群将从网络上拉取图像,因此该集群需要能够访问互联网。 +要继续阅读本文,你只需要我们在上一篇文章中构建的 [k3s 树莓派集群][2]。由于你的集群将从网络上拉取镜像,因此该集群需要能够访问互联网。 出于解释目的,本文将显示一些配置文件和示例 HTML 文件。所有示例文件都可以在[此处][3]下载。 ### 部署一个简单的网站 -之前,我们使用 `kubectl` 进行了直接部署。但是,这不是部署事物的典型方法。通常,会使用 YAML 配置文件,这就是我们将在本文中使用的配置文件。我们将从顶部开始,并以自顶向下的方式创建该配置文件。 +之前,我们使用 `kubectl` 进行了直接部署。但是,这不是典型的部署方法。一般情况都会使用 YAML 配置文件,这也是我们要在本文中使用的配置文件。我们将从顶部开始,并以自顶向下的方式创建该配置文件。 ### 部署配置 -首先是部署配置。配置如下所示,并在下面进行说明。我通常以 [Kubernetes 文档][4]中的示例为起点,然后对其进行修改以适合我的需求。例如,从[部署文档][5]复制示例后,修改下面的配置。 +首先是部署配置。配置如下所示,并在下面进行说明。我通常以 [Kubernetes 文档][4]中的示例为起点,然后根据需要对其进行修改。例如,下面的配置是复制了[部署文档][5]中的示例后修改的。 创建一个文件 `mysite.yaml`,其内容如下: @@ -58,15 +58,15 @@ spec: - containerPort: 80 ``` -其中大部分是样板。重要的部分,我们会将该部署命名为 `mysite-nginx`,并加上 `mysite-nginx` 的 `app` 标签。我们已指定要一个副本replica,这意味着将只创建一个 Pod。我们还指定了一个容器,我们将其命名为 `nginx`。我们将镜像image指定为 `nginx`。这意味着在部署时,k3s 将从 DockerHub 下载 `nginx` 镜像并从中创建一个 Pod。最后,我们指定了容器端口containerPort为 `80`,这只意味着在容器内部 Pod 会监听 `80` 端口。 +其中大部分是样板。重要的部分,我们会将该部署命名为 `mysite-nginx`,并为其加上同名的 `app` 标签。我们指定了一个副本replica,这意味着将只创建一个 Pod。我们还指定了一个容器,我们将其命名为 `nginx`。我们将镜像image指定为 `nginx`。这意味着在部署时,k3s 将从 DockerHub 下载 `nginx` 镜像并从中创建一个 Pod。最后,我们指定了容器端口containerPort为 `80`,这只意味着在容器内部 Pod 会监听 `80` 端口。 -我在上面强调了“在容器内部”,因为这是一个重要的区别。由于我们是按容器配置的,因此只能在容器内部访问它,并且进一步将其限制为内部网络。这是允许多个容器在同一容器端口上监听所必需的。换句话说,通过这种配置,其他某些 Pod 也可以在其容器端口 80 上侦听,并且不会与此容器冲突。为了提供对该 Pod 的正式访问权限,我们需要一个服务service配置。 +我在上面强调了“在容器内部”,因为这是一个重要的区别。由于我们是按容器配置的,因此只能在容器内部访问它,并且进一步将其限制为内部网络。这对于允许多个容器在同一容器端口上监听所是必要的。换句话说,通过这种配置,其他一些 Pod 也可以在其容器端口 80 上侦听,并且不会与此容器冲突。为了提供对该 Pod 的正式访问权限,我们需要一个服务service配置。 ### 服务配置 -在 Kubernetes 中,服务service是一种抽象。它提供了一种访问一个或一组 Pod 的方法。如果定义了多个 Pod 副本,则一个连接到服务,并且由服务路由到单个 Pod,或通过负载均衡路由到多个 Pod。 +在 Kubernetes 中,服务service是一种抽象。它提供了一种访问 Pod 或 Pod 集合的方法。当连接到服务时,服务会路由到单个 Pod,或者如果定义了多个 Pod 副本,会通过负载均衡路由到多个 Pod。 -可以在同一配置文件中指定该服务,这就是我们将在此处执行的操作。用 `---` 分隔配置区域。将以下内容添加到 `mysite.yaml` 中: +可以在同一配置文件中指定该服务,这就是我们将在此处要做的。用 `---` 分隔配置区域,将以下内容添加到 `mysite.yaml` 中: ``` --- @@ -82,11 +82,11 @@ spec: port: 80 ``` -在此配置中,我们将服务命名为 `mysite-nginx-service`。我们提供了 `app: mysite-nginx` 的选择器selector。这是服务选择其路由到的应用程序容器的方式。请记住,我们为容器提供了一个内容为 `mysite-nginx` 的 `app` 标签。这就是服务用来查找我们的容器的方式。最后,我们指定服务协议为 `TCP`,在端口 `80` 上侦听。 +在此配置中,我们将服务命名为 `mysite-nginx-service`。我们提供了一个选择器selector:`app: mysite-nginx`。这是服务选择其路由到的应用程序容器的方式。请记住,我们为容器提供了 `app` 标签:`mysite-nginx` 。这就是服务用来查找我们的容器的方式。最后,我们指定服务协议为 `TCP`,在端口 `80` 上监听。 ### 入口配置 -入口Ingress配置指定如何将流量从集群外部传递到集群内部的服务。请记住,k3s 预先配置了 Traefik 作为入口控制器。因此,我们将编写特定于 Traefik 的入口配置。将以下内容添加到 `mysite.yaml` 中(不要忘了用 `---` 分隔): +入口Ingress配置指定了如何将流量从集群外部传递到集群内部的服务。请记住,k3s 预先配置了 Traefik 作为入口控制器。因此,我们将编写特定于 Traefik 的入口配置。将以下内容添加到 `mysite.yaml` 中(不要忘了用 `---` 分隔): ``` --- @@ -106,13 +106,13 @@ spec: servicePort: 80 ``` -在此配置中,我们将入口记录命名为 `mysite-nginx-ingress`。我们告诉 Kubernetes,我们希望 `traefik` 成为我们的入口控制器,带有 `kubernetes.io/ingress.class` 的注解。 +在此配置中,我们将入口记录命名为 `mysite-nginx-ingress`。我们告诉 Kubernetes,我们希望 `traefik` 成为我们的入口控制器,再加上 `kubernetes.io/ingress.class` 的注解。 在规则rules部分中,我们基本上是说,当 `http` 流量进入时,并且 `path` 匹配 `/`(或其下的任何内容),将其路由到由 `serviceName mysite-nginx-service` 指定的后端backend服务中,并将其路由到 `servicePort 80`。这会将传入的 HTTP 流量连接到我们之前定义的服务。 -### 部署的东西 +### 需要部署的东西 -就配置而言,确实如此。如果现在部署,我们将获得默认的 nginx 页面,但这不是我们想要的。让我们创建一些简单但可自定义的部署方式。创建具有以下内容的文件 `index.html`: +就配置而言,就是这样了。如果我们现在部署,我们将获得默认的 nginx 页面,但这不是我们想要的。让我们创建一些简单但可自定义的部署方式。创建具有以下内容的文件 `index.html`: ``` @@ -143,13 +143,13 @@ spec: ``` -我们尚未介绍 Kubernetes 中的存储机制,因此在这里我们偷懒一下,仅将该文件存储在 Kubernetes 配置映射中。这不是建议的网站部署方式,但可以满足我们的目的。运行以下命令: +我们尚未介绍 Kubernetes 中的存储机制,因此在这里我们偷懒一下,仅将该文件存储在 Kubernetes 配置映射中。这不是我们推荐的部署网站的方式,但对于我们的目的来说是可行的。运行以下命令: ``` kubectl create configmap mysite-html --from-file index.html ``` -该命令从本地文件 `index.html` 创建名为 `mysite-html` 的配置映射configmap资源。这实际上是在 Kubernetes 资源中存储一个文件(或一组文件),我们可以在配置中调出该文件。它通常用于存储配置文件(因此而得名),因此我们在这里稍加滥用。在以后的文章中,我们将讨论 Kubernetes 中适当的存储解决方案。 +该命令从本地文件 `index.html` 创建名为 `mysite-html` 的配置映射configmap资源。这实际上是在 Kubernetes 资源中存储一个文件(或一组文件),我们可以在配置中调出该文件。它通常用于存储配置文件(因此而得名),我们在这里稍加滥用。在以后的文章中,我们将讨论 Kubernetes 中适当的存储解决方案。 创建配置映射后,让我们将其挂载在我们的 `nginx` 容器中。我们分两个步骤进行。首先,我们需要指定一个volume来调出配置映射。然后我们需要将该卷挂载到 `nginx` 容器中。通过在 `mysite.yaml` 中的 `container` 后面的 `spec` 标签下添加以下内容来完成第一步: @@ -162,7 +162,7 @@ kubectl create configmap mysite-html --from-file index.html 这告诉 Kubernetes 我们要定义一个名为 `html-volume` 的卷,并且该卷应包含名为 `html-volume`(我们在上一步中创建的)的配置映射的内容。 -接下来,在 `nginx` 容器规范中的端口port下方,添加以下内容: +接下来,在 `nginx` 容器规范中的端口ports下方,添加以下内容: ```         volumeMounts: @@ -170,7 +170,7 @@ kubectl create configmap mysite-html --from-file index.html           mountPath: /usr/share/nginx/html ``` -这告诉 Kubernetes,对于 `nginx` 容器,我们想在容器中的 `/usr/share/nginx/html` 路径中挂载名为 `html-volume` 的卷。 为什么要使用 `/usr/share/nginx/html`?那个位置就是 `nginx` 镜像提供 HTML 服务的地方。通过在该路径上挂载卷,我们用该卷内容替换了默认内容。 +这告诉 Kubernetes,对于 `nginx` 容器,我们想在容器中的 `/usr/share/nginx/html` 路径上挂载名为 `html-volume` 的卷。 为什么要使用 `/usr/share/nginx/html`?那个位置就是 `nginx` 镜像提供 HTML 服务的地方。通过在该路径上挂载卷,我们用该卷内容替换了默认内容。 作为参考,配置文件的 `deployment` 部分现在应如下所示: @@ -231,7 +231,7 @@ kubectl get pods ### 尝试一下! -Pod 运行之后,就该尝试了。 开浏览器,然后在地址栏中输入 `kmaster`。 +Pod 运行之后,就该尝试了。打开浏览器,然后在地址栏中输入 `kmaster`。 ![][6] @@ -239,9 +239,9 @@ Pod 运行之后,就该尝试了。 开浏览器,然后在地址栏中输入 ### 另一个 -因此,现在我们有了一个运行单个网站的整个 k3s 集群。但是我们可以做更多!如果我们要在同一集群中提供另一个网站怎么办?让我们看看如何做到这一点。 +因此,现在我们有了一个运行单个网站的整个 k3s 集群。但是我们可以有更多的网站!如果我们要在同一集群中提供另一个网站怎么办?让我们看看如何做到这一点。 -同样,我们需要部署一些东西。碰巧我的狗有一条信息,她想让世界知道一段时间。因此,我专门为她制作了一些 HTML(可从示例 zip 文件中获得)。同样,我们将使用配置映射的技巧来托管这些 HTML。这次我们将把整个目录(`html` 目录)放到配置映射中,但是调用是相同的。 +同样,我们需要部署一些东西。碰巧我的狗有一条她想让全世界都知道的信息,她想了好久了。因此,我专门为她制作了一些 HTML(可从示例 zip 文件中获得)。同样,我们将使用配置映射的技巧来托管这些 HTML。这次我们将把整个目录(`html` 目录)放到配置映射中,但是调用是相同的。 ``` kubectl create configmap mydog-html --from-file html @@ -324,11 +324,11 @@ kubectl apply -f mydog.yaml ![][7] -呼!消息出来了!也许今晚我们都可以睡一觉。 +呼!消息发出去了!也许今晚我们都可以睡一觉。 -因此,现在,我们有了一个 k3s 集群,该集群托管了两个网站,Traefik 根据路径名决定将请求传递给哪个服务!但是,我们不仅限于基于路径的路由。我们也可以使用基于主机名的路由,我们将在以后的文章中进行探讨。 +因此,现在,我们有了一个 k3s 集群,该集群托管了两个网站,Traefik 根据路径名决定将请求传递给哪个服务!但是,不仅限于基于路径的路由,我们也可以使用基于主机名的路由,我们将在以后的文章中进行探讨。 -另外,我们刚刚托管的网站是标准的未加密 HTML 网站,如今的所有内容都使用 SSL/TLS 加密。在我们的下一篇文章中,我们将为 k3s 集群添加支持以托管 SSL/TLS HTTPS 站点! +另外,我们刚刚托管的网站是标准的未加密 HTML 网站,而如今的所有内容都使用 SSL/TLS 加密。在我们的下一篇文章中,我们将为 k3s 集群添加支持以托管 SSL/TLS HTTPS 站点! ### 清理 @@ -366,14 +366,14 @@ via: https://opensource.com/article/20/3/kubernetes-traefik 作者:[Lee Carpenter][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://opensource.com/users/carpie [b]: https://github.com/lujun9972 [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) -[2]: https://opensource.com/article/20/3/kubernetes-raspberry-pi +[2]: https://linux.cn/article-12049-1.html [3]: https://gitlab.com/carpie/ingressing_with_k3s/-/archive/master/ingressing_with_k3s-master.zip [4]: https://kubernetes.io/docs/ [5]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment From 3551996215a9bd75425eb25a0f92597382452a1b Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 10:41:34 +0800 Subject: [PATCH 201/218] PUB @wxy https://linux.cn/article-12049-1.html --- .../20200311 Directing Kubernetes traffic with Traefik.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200311 Directing Kubernetes traffic with Traefik.md (99%) diff --git a/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md b/published/20200311 Directing Kubernetes traffic with Traefik.md similarity index 99% rename from translated/tech/20200311 Directing Kubernetes traffic with Traefik.md rename to published/20200311 Directing Kubernetes traffic with Traefik.md index fce1c26ee6..c9cc3c3f8e 100644 --- a/translated/tech/20200311 Directing Kubernetes traffic with Traefik.md +++ b/published/20200311 Directing Kubernetes traffic with Traefik.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12049-1.html) [#]: subject: (Directing Kubernetes traffic with Traefik) [#]: via: (https://opensource.com/article/20/3/kubernetes-traefik) [#]: author: (Lee Carpenter https://opensource.com/users/carpie) From b52a82df766031a55dcd4235c93675b6b18dd650 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 11:32:39 +0800 Subject: [PATCH 202/218] PRF @robsean --- ...ox Linux desktop as your window manager.md | 64 +++++++++---------- 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md b/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md index 3fd04333d3..c637a2416e 100644 --- a/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md +++ b/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md @@ -1,73 +1,69 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Use the Fluxbox Linux desktop as your window manager) [#]: via: (https://opensource.com/article/19/12/fluxbox-linux-desktop) [#]: author: (Seth Kenlon https://opensource.com/users/seth) -使用 Fluxbox Linux desktop 作为你的窗口管理器 +使用 Fluxbox 桌面作为你的窗口管理器 ====== -这篇文章是Linux 桌面24天的特别系列的一部分。 -Fluxbox 对系统资源的占用非常轻量,但是它拥有重要的 Linux -桌面特色来使你的用户体验轻松快速高效。 -![在蓝色区域中是,在浏览器上的文本编辑器][1] -桌面的概念可谓是仁者见仁智者见智。很多人把桌面看作一个家基地,或者一个舒适的客厅,甚至是一个字面意义上的桌面,在其中放置着他们经常使用的记事本,最好的笔和铅笔,还有他们最喜欢的咖啡杯。KDE, GNOME, Pantheon (等等)在 Linux 上提供了这种舒适的生活方式。 +> 本文是 24 天 Linux 桌面特别系列的一部分。Fluxbox 对系统资源的占用非常轻量,但它拥有重要的 Linux 桌面功能,让你的用户体验轻松、高效、快捷。 -但是对一些用户来说,桌面只是一个空荡荡的监控控件,将还没有自由浮动的应用程序窗口直接投射到显示器上的一个侧面效果。对于这些用户来说,桌面是真空的,在其中他们可以运行应用程序—不管的大型办公软件和图形套件,还是一个简单的终端窗口,或是来管理服务的停靠小程序。这种操作一台 [POSIX][2] 计算机的模式有很长的历史,该家族树的一支是 *box 窗口管理器:Blackbox, Fluxbox 和 Openbox 。 +![](https://img.linux.net.cn/data/attachment/album/202004/07/113105p0ng5skkn5kmvdm0.jpg) -[Fluxbox][3] 是一个针对 X11 系统的窗口管理器,它基于一个较老的名为 Blackbox 的项目。当我发现 Linux 时,Blackbox 的开发已进入衰退期,因此我进入 Fluxbox ,此后我至少在一个以上的活跃的系统上使用它。它使用 C++ 编写,并在 MIT 开源许可证下授权。 +桌面的概念可谓是仁者见仁智者见智。很多人把桌面看作一个家的基地,或者一个舒适的客厅,甚至是一个字面意义上的桌面,在其中放置着他们经常使用的记事本、最好的笔和铅笔,还有他们最喜欢的咖啡杯。KDE、 GNOME、Pantheon 等等在 Linux 上提供了这种舒适的生活方式。 + +但是对一些用户来说,桌面只是一个空荡荡的显示器空间,这是还没有任何可以自由浮动的应用程序窗口直接投射到他们的视网膜上的副作用。对于这些用户来说,桌面是一个空的空间,他们可以在上面运行应用程序 —— 无论是大型办公软件和图形套件,还是一个简单的终端窗口,或是来管理服务的托盘小程序。这种操作 [POSIX][2] 计算机的模式由来已久,该家族树的一支是 *box 窗口管理器:Blackbox、Fluxbox 和 Openbox。 + +[Fluxbox][3] 是一个 X11 系统的窗口管理器,它基于一个较老的名为 Blackbox 的项目。当我发现 Linux 时,Blackbox 的开发已进入衰退期,因此我就喜欢上了 Fluxbox ,此后我至少在一个以上的常用的系统上使用过它。它是用 C++ 编写的,并在 MIT 开源许可证下授权。 ### 安装 Fluxbox -你很可能会在你的 Linux 发行版的存储库中找到 Fluxbox ,但是你也可以在 [Fluxbox.org][4] 上找到它。如果你正在运行一个不同的桌面,在同一个系统上安装 Fluxbox 是安全的,因为 Fluxbox 不预先决定任何配置或附带应用程序。 +你很可能会在你的 Linux 发行版的软件库中找到 Fluxbox,但是你也可以在 [Fluxbox.org][4] 上找到它。如果你正在运行另外一个桌面,在同一个系统上安装 Fluxbox 是安全的,因为 Fluxbox 不会预设任何配置或附带的应用程序。 -在安装 Fluxbox 后,注销你当前的桌面会话,以便你可以登录一个新的桌面会话。默认情况下,你的桌面会话管理器 (KDM, GDM, LightDM 或 XDM,取决于你的安装设置) 将你继续登录到上一个在桌面,所以你在登录前必需要覆盖上一个桌面。 +在安装 Fluxbox 后,注销你当前的桌面会话,以便你可以登录一个新的桌面会话。默认情况下,你的桌面会话管理器 (KDM、GDM、LightDM 或 XDM,取决于你的安装设置) 将继续让登录到之前的桌面,所以你在登录前必需要覆盖上一个桌面。 使用 GDM 覆盖一个桌面: ![在 GDM 中选择你的桌面会话][5] -或者使用 KDM: +或者使用 KDM: ![使用 KDM 选择你的桌面会话][6] ### 配置 Fluxbox 桌面 -当你第一次登录到桌面时,屏幕大部分是空的,因为 Fluxbox 提供的所有东西是面板(用于任务栏,系统托盘等等)和用于应用程序窗口的窗口装饰品。 +当你第一次登录到桌面时,屏幕基本是空的,因为 Fluxbox 提供的所有东西是面板(用于任务栏、系统托盘等等)和用于应用程序窗口的窗口装饰品。 ![在 CentOS 7 上的默认 Fluxbox 配置][7] -如果你的发行版提供一个简单的 Fluxbox 桌面,你可以使用 **feh** 命令 (你可能需要从你的发行版存储库中来安装它) 来为你的桌面设置背景。这个命令有一些用于设置背景的选项,包括使用你选择的墙纸来填充屏幕的 **\--bg-fill** ,来按比例缩放的 **\--bg-scale** 等等选项。 - +如果你的发行版提供一个简单的 Fluxbox 桌面,你可以使用 `feh` 命令(你可能需要从你的发行版的软件库中安装它)来为你的桌面设置背景。这个命令有几个用于设置背景的选项,包括使用你选择的墙纸来填充屏幕的 `--bg-fill` 选项,来按比例缩放的 `--bg-scale` 等等选项。 ``` -`$ feh --bg-fill ~/photo/oamaru/leaf-spiral.jpg` +$ feh --bg-fill ~/photo/oamaru/leaf-spiral.jpg ``` ![应用主题的 Fluxbox ][8] -默认情况下,Fluxbox 自动生成一个菜单,在桌面上任意位置右键单击可用该菜单,这给予你访问应用程序的能力。取决于你的发行版,这个菜单可能非常小,也可能列出 **/usr/share/applications** 目录中的所有启动程序。 +默认情况下,Fluxbox 自动生成一个菜单,在桌面上任意位置右键单击可用该菜单,这给予你访问应用程序的能力。根据你的发行版的不同,这个菜单可能非常小,也可能列出 `/usr/share/applications` 目录中的所有启动程序。 -Fluxbox 配置是在文本文件中设置的,这些文本文件包含在 **$HOME/.fluxbox** 目录中。你可以: +Fluxbox 配置是在文本文件中设置的,这些文本文件包含在 `$HOME/.fluxbox` 目录中。你可以: - * 在 **keys** 中设置键盘快捷键 - * 在 **startup** 中启动服务和应用程序 - * 在 **init** 设置桌面首选项(例如工作区数量、面板位置等等) - * 在 **menu** 中设置菜单项 +* 在 `keys` 中设置键盘快捷键 +* 在 `startup` 中启动的服务和应用程序 +* 在 `init` 设置桌面首选项(例如工作区数量、面板位置等等) +* 在 `menu` 中设置菜单项 +该文本配置文件非常易于推断,但是你也可以(并且是应该)阅读 Fluxbox 的[文档][9]。 - -该文本配置文件非常易于逆向工程,但是你也可以 (并且是应该) 阅读 Fluxbox [文档][9] 。 - -例如,这是我的典型菜单 (或者说至少有它的基本结构): - +例如,这是我的典型菜单(或者说至少有它的基本结构): ``` # 为使用你自己的菜单,复制这些文本到 ~/.fluxbox/menu,然后编辑 -# ~/.fluxbox/init ,并更改 session.menuFile 文件到 ~/.fluxbox/menu +# ~/.fluxbox/init ,并更改 session.menuFile 文件路径到 ~/.fluxbox/menu [begin] (fluxkbox) [submenu] (apps) {} @@ -113,10 +109,9 @@ Fluxbox 配置是在文本文件中设置的,这些文本文件包含在 **$HO [end] ``` -该菜单也提供一些首选项设置,例如,选择一个主题和从 Fluxbox 会话中重启或注销的能力。 - -我使用键盘快捷键来启动大多数的应用程序,这些快捷键写入到 **keys** 配置文件中。这里有一些示例 ( **Mod4** 按键是超级按键,我使用其来指定全局快捷键): +该菜单也提供一些首选项设置,例如,选择一个主题,从 Fluxbox 会话中重启或注销的能力。 +我使用键盘快捷键来启动大多数的应用程序,这些快捷键写入到 `keys` 配置文件中。这里有一些示例(`Mod4` 按键是 `Super` 键,我使用其来指定全局快捷键): ``` # 打开应用程序 @@ -135,10 +130,9 @@ Mod4 3 :Exec ksnapshot ### 为什么你应该使用 Fluxbox -Fluxbox 对系统资源的占用非常轻量,但是它拥有重要的功能来使你的用户体验轻松快速高效。它很容易定制,并且它允许你定义你自己的工作流。你不必使用 Fluxbox 的面板,因为在这里有其它的极好的面板。你甚至可以鼠标双击和拖动两个独立的应用程序窗口到彼此之中,以便它们成为一个窗口,每个窗口都有自己的选项卡。 +Fluxbox 对系统资源的占用非常轻量,但是它拥有重要的功能,可以使你的用户体验轻松、快速、高效。它很容易定制,并且允许你定义你自己的工作流。你不必使用 Fluxbox 的面板,因为还有其它优秀的面板。你甚至可以鼠标中键点击并拖动两个独立的应用程序窗口到彼此之中,以便它们成为一个窗口,每个窗口都有自己的选项卡。 - -无穷的可能性,所以今天就在你的 Linux 上尝试一下 Fluxbox 的简单稳定吧! +可能性是无穷的,所以今天就在你的 Linux 上尝试一下 Fluxbox 的简单稳定吧! -------------------------------------------------------------------------------- @@ -147,7 +141,7 @@ via: https://opensource.com/article/19/12/fluxbox-linux-desktop 作者:[Seth Kenlon][a] 选题:[lujun9972][b] 译者:[robsean](https://github.com/robsean) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From f44609b7d36d1ca3982145413ac7181c00174179 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 11:35:00 +0800 Subject: [PATCH 203/218] PUB @robsean https://linux.cn/article-12082-1.html --- ...09 Use the Fluxbox Linux desktop as your window manager.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20191209 Use the Fluxbox Linux desktop as your window manager.md (99%) diff --git a/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md b/published/20191209 Use the Fluxbox Linux desktop as your window manager.md similarity index 99% rename from translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md rename to published/20191209 Use the Fluxbox Linux desktop as your window manager.md index c637a2416e..d3eb78339e 100644 --- a/translated/tech/20191209 Use the Fluxbox Linux desktop as your window manager.md +++ b/published/20191209 Use the Fluxbox Linux desktop as your window manager.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (robsean) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12082-1.html) [#]: subject: (Use the Fluxbox Linux desktop as your window manager) [#]: via: (https://opensource.com/article/19/12/fluxbox-linux-desktop) [#]: author: (Seth Kenlon https://opensource.com/users/seth) From 9e367f35a8b892fe3296c7984a28c680dead12c0 Mon Sep 17 00:00:00 2001 From: Chunibyo <359806334@qq.com> Date: Tue, 7 Apr 2020 17:31:49 +0800 Subject: [PATCH 204/218] =?UTF-8?q?chunibyo-wly=20=E5=8F=91=E5=B8=83=20(#1?= =?UTF-8?q?8017)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 20/04/03 * 20/04/03 * 20/04/06 * 190612 翻译完成 * 审阅完成 * 发布 --- .../20190612 How to write a loop in Bash.md | 282 ------------------ .../20190612 How to write a loop in Bash.md | 260 ++++++++++++++++ ...0331 5 ways to level up your Vim skills.md | 155 ++++++++++ 3 files changed, 415 insertions(+), 282 deletions(-) delete mode 100644 sources/tech/20190612 How to write a loop in Bash.md create mode 100644 translated/tech/20190612 How to write a loop in Bash.md create mode 100644 translated/tech/20200331 5 ways to level up your Vim skills.md diff --git a/sources/tech/20190612 How to write a loop in Bash.md b/sources/tech/20190612 How to write a loop in Bash.md deleted file mode 100644 index c795a3bf82..0000000000 --- a/sources/tech/20190612 How to write a loop in Bash.md +++ /dev/null @@ -1,282 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chunibyo-wly) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to write a loop in Bash) -[#]: via: (https://opensource.com/article/19/6/how-write-loop-bash) -[#]: author: (Seth Kenlon https://opensource.com/users/seth/users/goncasousa/users/howtopamm/users/howtopamm/users/seth/users/wavesailor/users/seth) - -How to write a loop in Bash -====== -Automatically perform a set of actions on multiple files with for loops -and find commands. -![bash logo on green background][1] - -A common reason people want to learn the Unix shell is to unlock the power of batch processing. If you want to perform some set of actions on many files, one of the ways to do that is by constructing a command that iterates over those files. In programming terminology, this is called _execution control,_ and one of the most common examples of it is the **for** loop. - -A **for** loop is a recipe detailing what actions you want your computer to take _for_ each data object (such as a file) you specify. - -### The classic for loop - -An easy loop to try is one that analyzes a collection of files. This probably isn't a useful loop on its own, but it's a safe way to prove to yourself that you have the ability to handle each file in a directory individually. First, create a simple test environment by creating a directory and placing some copies of some files into it. Any file will do initially, but later examples require graphic files (such as JPEG, PNG, or similar). You can create the folder and copy files into it using a file manager or in the terminal: - - -``` -$ mkdir example -$ cp ~/Pictures/vacation/*.{png,jpg} example -``` - -Change directory to your new folder, then list the files in it to confirm that your test environment is what you expect: - - -``` -$ cd example -$ ls -1 -cat.jpg -design_maori.png -otago.jpg -waterfall.png -``` - -The syntax to loop through each file individually in a loop is: create a variable ( **f** for file, for example). Then define the data set you want the variable to cycle through. In this case, cycle through all files in the current directory using the ***** wildcard character (the ***** wildcard matches _everything_ ). Then terminate this introductory clause with a semicolon ( **;** ). - - -``` -`$ for f in * ;` -``` - -Depending on your preference, you can choose to press **Return** here. The shell won't try to execute the loop until it is syntactically complete. - -Next, define what you want to happen with each iteration of the loop. For simplicity, use the **file** command to get a little bit of data about each file, represented by the **f** variable (but prepended with a **$** to tell the shell to swap out the value of the variable for whatever the variable currently contains): - - -``` -`do file $f ;` -``` - -Terminate the clause with another semi-colon and close the loop: - - -``` -`done` -``` - -Press **Return** to start the shell cycling through _everything_ in the current directory. The **for** loop assigns each file, one by one, to the variable **f** and runs your command: - - -``` -$ for f in * ; do -> file $f ; -> done -cat.jpg: JPEG image data, EXIF standard 2.2 -design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -otago.jpg: JPEG image data, EXIF standard 2.2 -waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -``` - -You can also write it this way: - - -``` -$ for f in *; do file $f; done -cat.jpg: JPEG image data, EXIF standard 2.2 -design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -otago.jpg: JPEG image data, EXIF standard 2.2 -waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -``` - -Both the multi-line and single-line formats are the same to your shell and produce the exact same results. - -### A practical example - -Here's a practical example of how a loop can be useful for everyday computing. Assume you have a collection of vacation photos you want to send to friends. Your photo files are huge, making them too large to email and inconvenient to upload to your [photo-sharing service][2]. You want to create smaller web-versions of your photos, but you have 100 photos and don't want to spend the time reducing each photo, one by one. - -First, install the **ImageMagick** command using your package manager on Linux, BSD, or Mac. For instance, on Fedora and RHEL: - - -``` -`$ sudo dnf install ImageMagick` -``` - -On Ubuntu or Debian: - - -``` -`$ sudo apt install ImageMagick` -``` - -On BSD, use **ports** or [pkgsrc][3]. On Mac, use [Homebrew][4] or [MacPorts][5]. - -Once you install ImageMagick, you have a set of new commands to operate on photos. - -Create a destination directory for the files you're about to create: - - -``` -`$ mkdir tmp` -``` - -To reduce each photo to 33% of its original size, try this loop: - - -``` -`$ for f in * ; do convert $f -scale 33% tmp/$f ; done` -``` - -Then look in the **tmp** folder to see your scaled photos. - -You can use any number of commands within a loop, so if you need to perform complex actions on a batch of files, you can place your whole workflow between the **do** and **done** statements of a **for** loop. For example, suppose you want to copy each processed photo straight to a shared photo directory on your web host and remove the photo file from your local system: - - -``` -$ for f in * ; do -convert $f -scale 33% tmp/$f -scp -i seth_web tmp/$f [seth@example.com][6]:~/public_html -trash tmp/$f ; -done -``` - -For each file processed by the **for** loop, your computer automatically runs three commands. This means if you process just 10 photos this way, you save yourself 30 commands and probably at least as many minutes. - -### Limiting your loop - -A loop doesn't always have to look at every file. You might want to process only the JPEG files in your example directory: - - -``` -$ for f in *.jpg ; do convert $f -scale 33% tmp/$f ; done -$ ls -m tmp -cat.jpg, otago.jpg -``` - -Or, instead of processing files, you may need to repeat an action a specific number of times. A **for** loop's variable is defined by whatever data you provide it, so you can create a loop that iterates over numbers instead of files: - - -``` -$ for n in {0..4}; do echo $n ; done -0 -1 -2 -3 -4 -``` - -### More looping - -You now know enough to create your own loops. Until you're comfortable with looping, use them on _copies_ of the files you want to process and, as often as possible, use commands with built-in safeguards to prevent you from clobbering your data and making irreparable mistakes, like accidentally renaming an entire directory of files to the same name, each overwriting the other. - -For advanced **for** loop topics, read on. - -### Not all shells are Bash - -The **for** keyword is built into the Bash shell. Many similar shells use the same keyword and syntax, but some shells, like [tcsh][7], use a different keyword, like **foreach** , instead. - -In tcsh, the syntax is similar in spirit but more strict than Bash. In the following code sample, do not type the string **foreach?** in lines 2 and 3. It is a secondary prompt alerting you that you are still in the process of building your loop. - - -``` -$ foreach f (*) -foreach? file $f -foreach? end -cat.jpg: JPEG image data, EXIF standard 2.2 -design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -otago.jpg: JPEG image data, EXIF standard 2.2 -waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced -``` - -In tcsh, both **foreach** and **end** must appear alone on separate lines, so you cannot create a **for** loop on one line as you can with Bash and similar shells. - -### For loops with the find command - -In theory, you could find a shell that doesn't provide a **for** loop function, or you may just prefer to use a different command with added features. - -The **find** command is another way to implement the functionality of a **for** loop, as it offers several ways to define the scope of which files to include in your loop as well as options for [Parallel][8] processing. - -The **find** command is meant to help you find files on your hard drives. Its syntax is simple: you provide the path of the location you want to search, and **find** finds all files and directories: - - -``` -$ find . -. -./cat.jpg -./design_maori.png -./otago.jpg -./waterfall.png -``` - -You can filter the search results by adding some portion of the name: - - -``` -$ find . -name "*jpg" -./cat.jpg -./otago.jpg -``` - -The great thing about **find** is that each file it finds can be fed into a loop using the **-exec** flag. For instance, to scale down only the PNG photos in your example directory: - - -``` -$ find . -name "*png" -exec convert {} -scale 33% tmp/{} \; -$ ls -m tmp -design_maori.png, waterfall.png -``` - -In the **-exec** clause, the bracket characters **{}** stand in for whatever item **find** is processing (in other words, any file ending in PNG that has been located, one at a time). The **-exec** clause must be terminated with a semicolon, but Bash usually tries to use the semicolon for itself. You "escape" the semicolon with a backslash ( **\;** ) so that **find** knows to treat that semicolon as its terminating character. - -The **find** command is very good at what it does, and it can be too good sometimes. For instance, if you reuse it to find PNG files for another photo process, you will get a few errors: - - -``` -$ find . -name "*png" -exec convert {} -flip -flop tmp/{} \; -convert: unable to open image `tmp/./tmp/design_maori.png': -No such file or directory @ error/blob.c/OpenBlob/2643. -... -``` - -It seems that **find** has located all the PNG files—not only the ones in your current directory ( **.** ) but also those that you processed before and placed in your **tmp** subdirectory. In some cases, you may want **find** to search the current directory plus all other directories within it (and all directories in _those_ ). It can be a powerful recursive processing tool, especially in complex file structures (like directories of music artists containing directories of albums filled with music files), but you can limit this with the **-maxdepth** option. - -To find only PNG files in the current directory (excluding subdirectories): - - -``` -`$ find . -maxdepth 1 -name "*png"` -``` - -To find and process files in the current directory plus an additional level of subdirectories, increment the maximum depth by 1: - - -``` -`$ find . -maxdepth 2 -name "*png"` -``` - -Its default is to descend into all subdirectories. - -### Looping for fun and profit - -The more you use loops, the more time and effort you save, and the bigger the tasks you can tackle. You're just one user, but with a well-thought-out loop, you can make your computer do the hard work. - -You can and should treat looping like any other command, keeping it close at hand for when you need to repeat a single action or two on several files. However, it's also a legitimate gateway to serious programming, so if you have to accomplish a complex task on any number of files, take a moment out of your day to plan out your workflow. If you can achieve your goal on one file, then wrapping that repeatable process in a **for** loop is relatively simple, and the only "programming" required is an understanding of how variables work and enough organization to separate unprocessed from processed files. With a little practice, you can move from a Linux user to a Linux user who knows how to write a loop, so get out there and make your computer work for you! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/how-write-loop-bash - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth/users/goncasousa/users/howtopamm/users/howtopamm/users/seth/users/wavesailor/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background) -[2]: http://nextcloud.com -[3]: http://pkgsrc.org -[4]: http://brew.sh -[5]: https://www.macports.org -[6]: mailto:seth@example.com -[7]: https://en.wikipedia.org/wiki/Tcsh -[8]: https://opensource.com/article/18/5/gnu-parallel diff --git a/translated/tech/20190612 How to write a loop in Bash.md b/translated/tech/20190612 How to write a loop in Bash.md new file mode 100644 index 0000000000..d17bfdd4b2 --- /dev/null +++ b/translated/tech/20190612 How to write a loop in Bash.md @@ -0,0 +1,260 @@ +[#]: collector: "lujun9972" +[#]: translator: "chunibyo-wly" +[#]: reviewer: " " +[#]: publisher: " " +[#]: url: " " +[#]: subject: "How to write a loop in Bash" +[#]: via: "https://opensource.com/article/19/6/how-write-loop-bash" +[#]: author: "Seth Kenlon https://opensource.com/users/seth/users/goncasousa/users/howtopamm/users/howtopamm/users/seth/users/wavesailor/users/seth" + +# 如何在 Bash 中使用循环 + +使用循环和查找命令批量自动处理文件。 +![bash logo on green background][1] + +人们希望学习批处理命令的一个普遍原因是批处理具有强大的功能。如果你希望批量的对文件执行指令,制作一个可以重复运行在那些文件上的命令就是一种方法。在编程术语中,这被称作 _execution control_ ,**for** 循环就是其中最常见的一种。 + +**for** 循环可以详细描述你希望你的计算机对 _for_ 遍历的数据对象(比如说文件)所进行的操作。 + +### 一般循环 + +使用循环的一个简单例子是对一组文件进行分析。这个循环可能没什么用,但是这是一个安全的证明自己有能力独立处理文件夹里每一个文件的方法。首先,创建一个文件夹然后拷贝一些文件(例如 JPEG,PNG 等类似的文件)至文件夹中生成一个测试环境。你可以通过文件管理器或者终端来完成创建文件夹和拷贝文件的操作: + +```bash +$ mkdir example +$ cp ~/Pictures/vacation/*.{png,jpg} example +``` + +切换到你刚创建的那个文件夹,然后列出文件并确认这个测试环境是你需要的: + +``` +$ cd example +$ ls -1 +cat.jpg +design_maori.png +otago.jpg +waterfall.png +``` + +在循环中逐一遍历文件的语法是:首先声明一个变量(例如使用 **f** 代表文件),然后定义一个你希望用变量循环的数据集。在这种情况下,使用 **\*** 通配符来遍历当前文件夹下的所有文件(通配符 **\*** 匹配 _一切_)。然后使用一个分号(**;**)来结束这个语句。 + +``` +`$ for f in * ;` +``` + +取决于你个人的喜好,你可以选择在这里按下 **Return**。在语法完成前,shell 是不会尝试执行这个循环的。 + +接下来,定义在每次循环中你想要进行的操作。简单起见,使用 **file** 命令来得到 **f** 变量(使用 **\$** 告诉 shell 使用这个变量的值,无论这个变量现在存储着什么)所存储着的文件的信息: + +``` +`do file $f ;` +``` + +使用另一个引号结束这一行,然后关闭这个循环: + +``` +`done` +``` + +按下 **Return** 启动 shell 对当前文件夹下 _所有东西_ 的遍历。**for** 循环将会一个一个的将文件分配给变量 **f** 并且执行你的命令: + +``` +$ for f in * ; do +> file $f ; +> done +cat.jpg: JPEG image data, EXIF standard 2.2 +design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +otago.jpg: JPEG image data, EXIF standard 2.2 +waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +``` + +你也可以用这种形式书写命令: + +``` +$ for f in *; do file $f; done +cat.jpg: JPEG image data, EXIF standard 2.2 +design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +otago.jpg: JPEG image data, EXIF standard 2.2 +waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +``` + +对你的 shell 来说,多行和单行的格式没有什么区别,并且会输出完全一样的结果。 + +### 一个实用的例子 + +下面是一个循环在日常使用中的实用案例。假如你拥有一堆假期拍的照片想要发给你的朋友。它们对于 email 来说太大了,上传到 [photo-sharing service][2] 也不方便。因此你希望创建小型的 web 版本的照片,但是你不希望花费太多时间在一个一个的压缩图片体积上。 + +首先,在你的 Linux,BSD 或者 Mac 上使用包管理器安装 **ImageMagick** 命令。例如,在 Fedora 和 RHEL 上: + +``` +`$ sudo dnf install ImageMagick` +``` + +在 Ubuntu 和 Debian 上: + +``` +`$ sudo apt install ImageMagick` +``` + +在 BSD 上,使用 **ports** 或者 [pkgsrc][3]。在 Mac 上,使用 [Homebrew][4] 或者 [MacPorts][5]。 + +在你安装了 ImageMagick 之后,你就拥有一系列命令可以用来操作图片了。 + +为你将要创建的文件建立一个目标文件夹: + +``` +`$ mkdir tmp` +``` + +使用下面的循环可以将每张图片减小至原来大小的 33%。 + +``` +`$ for f in * ; do convert $f -scale 33% tmp/$f ; done` +``` + +然后就可以在 **tmp** 文件夹中看到已经缩小了的照片了。 + +你可以在循环体中使用任意数量的命令,因此如果你需要对一批文件进行复杂的操作,可以将你的命令放在一个 **for** 循环的 **do** 和 **done** 声明之间。例如,假设你希望将所有处理过的图片拷贝至你的网站所托管的图片文件夹并且在本地系统移除这些文件: + +``` +$ for f in * ; do +convert $f -scale 33% tmp/$f +scp -i seth_web tmp/$f [seth@example.com][6]:~/public_html +trash tmp/$f ; +done +``` + +你的计算机会对 **for** 循环中处理的每一个文件自动的执行 3 条命令。这意味着假如你仅仅处理 10 张图片,也会省下 30 条指令和更多的时间。 + +### 限制你的循环 + +一个循环常常不需要处理所有文件。在示例文件夹中,你可能需要处理的只是 JPEG 文件: + +``` +$ for f in *.jpg ; do convert $f -scale 33% tmp/$f ; done +$ ls -m tmp +cat.jpg, otago.jpg +``` + +或者,你希望重复特定次数的某个操作而不仅仅只处理文件。**for** 循环的变量的值是被你赋给它的不管何种类型的数据所决定的,所以你可以创建一个循环遍历数字而不只是文件: + +``` +$ for n in {0..4}; do echo $n ; done +0 +1 +2 +3 +4 +``` + +### 更多循环 + +现在你了解的知识已经足够用来创建自己的循环体了。直到你对循环非常熟悉之前,尽可能的在需要处理的文件的 _复制_ 上进行操作。使用固有的保护措施可以预防损坏自己的数据和制造不可复现的错误,例如偶然将一个文件夹下的所有文件重命名为同一个名字,就可能会导致他们的相互覆盖。 + +更多的 **for** 循环话题,请继续阅读。 + +### Not all shells are Bash 不是所有的 shell 都是 Bash + +关键字 **for** 是内置在 Bash shell 中的。许多类似的 shell 会使用和 Bash 同样的关键字和语法,但是也有某些 shell ,比如 [tcsh][7],使用不同的关键字,例如 **foreach**。 + +tcsh 的语法与 Bash 类似,但是它更为严格。例如在下面的例子中,不要在你的终端的第 2,3 行键入 **foreach?** 。它只是提示你仍处在构建循环的过程中。 + +``` +$ foreach f (*) +foreach? file $f +foreach? end +cat.jpg: JPEG image data, EXIF standard 2.2 +design_maori.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +otago.jpg: JPEG image data, EXIF standard 2.2 +waterfall.png: PNG image data, 4608 x 2592, 8-bit/color RGB, non-interlaced +``` + +在 tcsh 中,**foreach** 和 **end** 都必须单独的在一行中出现。因此你不能像 Bash 或者其他类似的 shell 一样只使用一行命令创建一个 **for** 循环。 + +### for 循环与 find 命令 + +理论上,你可能会用到不支持 **for** 循环的 shell,或者你只是更想使用其他命令的一些特性来完成和循环一样的工作。 + +使用**find** 命令是另一个实现 **for** 循环功能的途径。这个命令通过 [Parallel][8] 提供了几种方法来定义你的循环中需要包括的文件的范围。 + +**find** 命令顾名思义就是帮助你查询存储在硬盘里的文件。他的用法很简单:提供一个你希望它查询的位置的路径,接着 **find** 就会查询这个路径下面的所有文件和文件夹。 + +``` +$ find . +. +./cat.jpg +./design_maori.png +./otago.jpg +./waterfall.png +``` + +你可以通过添加名称的某些部分用于过滤搜索结果: + +``` +$ find . -name "*jpg" +./cat.jpg +./otago.jpg +``` + +**find** 命令非常好的地方在于你可以通过 **-exec** 参数标志将它查询到的每一个文件放入循环中。例如,只对存放在你的 example 文件夹下的 PNG 图片进行体积压缩操作: + +``` +$ find . -name "*png" -exec convert {} -scale 33% tmp/{} \; +$ ls -m tmp +design_maori.png, waterfall.png +``` + +在 **-exec** 短语中,括号 **{}** 表示的是 **find** 正在处理的条目(换句话说,每一个被找到的以 PNG 结尾的文件)。**-exec** 短语必须使用分号结尾,但是 Bash 中常常也会使用分号。为了解决这个二义性问题,你的 **结束符** 可以使用反斜杠加上一个分号(**\;**),使得 **find** 命令可以知道这个结束符是用来标识自己结束使用的。 + +**find** 命令的操作非常棒,某些情况下它甚至可以表现得更棒。比如说,在一个新的进程中使用同一条命令查找 PNG 文件,你可能就会得到一些错误信息: + +``` +$ find . -name "*png" -exec convert {} -flip -flop tmp/{} \; +convert: unable to open image `tmp/./tmp/design_maori.png': +No such file or directory @ error/blob.c/OpenBlob/2643. +... +``` + +看起来 **find** 不只是定位了当前文件夹(**.**)下的所有 PNG 文件,还包括已经处理并且存储到了 **tmp** 下的文件。在一些情况下,你可能希望 **find** 查询当前文件夹下再加上其子文件夹下的所有文件。**find** 命令是一个功能强大的递归工具,特别体现在处理一些文件结构复杂的情境下(比如用来放置存满了音乐人音乐专辑的文件夹),同时你也可以使用 **-maxdepth** 选项来限制最大的递归深度。 + +只在当前文件夹下查找 PNG 文件(不包括子文件夹) + +``` +`$ find . -maxdepth 1 -name "*png"` +``` + +上一条命令的最大深度再加 1 就可以查找和处理当前文件夹及下一级子文件夹下面的文件 + +``` +`$ find . -maxdepth 2 -name "*png"` +``` + +**find** 命令默认是查找每一级文件夹。 + +### 循环的乐趣与收益 + +你使用的循环越多,你就可以越多的省下时间和力气,并且可以应对庞大的任务。虽然你只是一个用户,但是通过使用循环,可以使你的计算机完成困难的任务。 + +你可以并且应该使用循环就像使用其他的命令一样。在你需要重复的处理单个或多个文件时,尽可能的使用这个命令。无论如何,这也算是一项需要被严肃对待的编程活动,因此如果你需要在一些文件上完成复杂的任务,你应该多花点时间在计划自己的工作流上面。如果你可以在一份文件上完成你的工作,接下来将操作包装进 **for** 循环里就相对简单了,这里面唯一的“编程”的需要只是理解变量是如何工作的并且进行充分的规划工作将已处理过的文件和未处理过的文件分开。经过一段时间的练习,你就可以从一名 Linux 用户升级成一位知道如何使用循环的 Linux 用户,所以开始让计算机为你工作吧! + +--- + +via: https://opensource.com/article/19/6/how-write-loop-bash + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[chunibyo-wly](https://github.com/chunibyo-wly) +校对:[校对者 ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux 中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth/users/goncasousa/users/howtopamm/users/howtopamm/users/seth/users/wavesailor/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U "bash logo on green background" +[2]: http://nextcloud.com +[3]: http://pkgsrc.org +[4]: http://brew.sh +[5]: https://www.macports.org +[6]: mailto:seth@example.com +[7]: https://en.wikipedia.org/wiki/Tcsh +[8]: https://opensource.com/article/18/5/gnu-parallel diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/translated/tech/20200331 5 ways to level up your Vim skills.md new file mode 100644 index 0000000000..2ddeb2f40d --- /dev/null +++ b/translated/tech/20200331 5 ways to level up your Vim skills.md @@ -0,0 +1,155 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (5 ways to level up your Vim skills) +[#]: via: (https://opensource.com/article/20/3/vim-skills) +[#]: author: (Detlef Johnson https://opensource.com/users/deckart) + +提升你的 Vim 技能的 5 个方法 +====== + +> 通过一些有趣的技巧使你的文本编辑器更上一层楼。 + +![Computer keyboard typing][1] + +Vim 是最受欢迎的文本编辑器之一,因此绝对值得花时间学习如何使用它。如果你使用这个无处不在的 [Vi(m)][2] 命令行文本编辑器来做的只是打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,那么你还有很大的提示空间、。 + +在某些情况下你会发现,使用 Vim 非常方便的的场景几乎总是涉及到运行远程 Shell 操作的任务。如果你时不时地使用 ssh,比如 + +``` +$ ssh user@hostname.provider.com +``` + +并在虚拟专用服务器(VPS)或本地虚拟化容器中工作,那么就可以从这些强大的 Vim 技能中受益匪浅。 + +### 将 Vim 设置为默认的文本编辑器 + +几乎在所有现代 Linux(或 BSD)发行版中,都可以在终端仿真器的 shell 命令提示符下使用 Vim。在用户 shell 程序中将 Vim 定义为默认编辑器后,即可使用熟悉的 Vim 键绑定来浏览内置的实用程序,例如 `man`。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 现在是 macOS 用户的默认shell(自 Catalina 起)。 + +#### 在 Bash 中将 Vim 设置为默认 + +Bash 通过点文件的组合来管理设置。将首选编辑器添加到主目录中的 `.bashrc` 文件中是最常见的,但也可以将其添加到 `.bash_profile` 中。(请阅读 [GNU Bash 文档][3]了解不同之处)。 + +通过在 `~/.bashrc` 中添加以下内容,将 Vim 设置为默认编辑器: + +``` +# set default editor to Vim +export EDITOR=vim +``` + +以 `#` 开头的行是可选的注释,这是提醒自己该命令的功能的好方法。 + +#### 在 zsh 中将 Vim 设置为默认 + +zsh 是一种越来越流行的终端模拟器,尤其是自苹果的基于 FreeBSD 的 Darwin 系统最近从 Bash 切换到 zsh 以来。 + +zsh 点文件与 Bash 的文件相当,因此你可以在 `~/.zshrc` 或 `~/.zprofile` 之间进行选择。有关何时使用哪一个的详细信息,请参见 [zsh文档][4]。 + +将其设置为默认: + +``` +# set default editor to Vim +export EDITOR=vim +``` + +### 优化 Vim 配置 + +Vim 很像终端仿真器外壳,它使用点文件来设置个人偏好。如果发现该模式,则可能已经猜到它是 `~/.vimrc`。 + +你可能要更改的第一个设置是将对旧 Vi 兼容模式切换为“关”。由于 Vim 是 Vi 的超集,因此 Vi 中的所有功能都可用,并在 Vim 中进行了很大的改进,你可以获得许多高级功能。最新版本(8.2)允许你在拆分的窗口中打开终端运行一个子进程 shell 程序。 + +顺便说一句,关闭旧版兼容性似乎没有做什么事情([事实上,可能不是][5])。当遇到一个 `.vimrc` 文件时,Vim 会自动将该模式切换为关闭。但有时将其明确关闭仍然很重要。缩写 `nocp` 是 `nocompatible` 的同义词,也可以使用它。[条条大道通罗马][6],切换首选项有很多方式。 + +在 `.vimrc` 语法中, 以 `"` 开头的行是注释(就像 `.bashrc` 文件中的 `#` 一样),这些注释可以帮助你记住诸如为何选择一个隐秘的设置名称之类的内容。 + +要关闭 Vi 兼容性,请将以下内容添加到 `~/.vimrc` 文件中: + +``` +" ensure that legacy compatibility mode is off +" documentation: ' +set nocp +``` + +### 理解模式 + +Vim的 “模式”概念是非常重要的,尤其是“正常模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并不是 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以至于它比 70 年代的[复制和粘贴][7]功能的发明还要早。 + +#### 重要的模式 + +Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重要模式有 + +* 正常模式:默认模式,主要用于导航和打开文件。 +* 插入模式(包括替换):这种模式下 Vim 允许将文本输入到打开的文件中。 +* 可视模式:Vim 的行为类似于基于鼠标的输入方式,如复制、编辑、替换等。 +* 命令模式(包括行模式、Ex 命令模式和末行模式):在 Vim 中做更多事情的强大方法。 + +每种模式都有很多值得探索的地方。使用 [Vimtutor][8](`vimtutor`)可以交互式地学习移动光标、模式和在末行模式下运行 Ex 命令。一些不可缺少的生产力操作符包括: + +`:E` | 打开资源管理器,用于定位文件和目录。 +--- | --- +`.` | 重复上次的编辑操作。 +`;` | 向前重复上一次的动作或移动 +`,` | 向后重复上一次的动作或移动。 +`/` | 向前搜索文档。 +`?` | 向后搜索文档。 +`*` | 查找光标所在处的单词的下一个出现的地方。 +`#` | 查找光标所在处的单词的上一次出现的地方。 +`~` | 切换大小写。 +`%` | 在打开和关闭的 `()`、`[]` 和 `{}` 之间切换;对编码非常有用。 +`z=` | 提出拼写建议。 + +### 像钢琴一样弹奏 Vim + +把 Vim 的操作符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家一样思考,把操作符和动作组合成“和声和弦”,这样你就可以像弹钢琴一样弹奏 Vim。这就是 Vim 的文本操作能力可以与另一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 `Esc` 键,而另一个编辑器会让你的 `Ctrl` 键磨损掉。) + +在描述和弦时,Vim 中的传统做法是用大写字母 `C` 来指代 `Ctrl` 键,后面加上一个连字符(`C-`)。这并不是通用的,但我将从这里开始遵循这一惯例,并在有可能引起混淆的时候加以说明。 + +如果你在 Vim 中键入长行,你会想把它设置成可以换行你的文字。想要根据你的工作方式对 Vim 进行个性化设置,请考虑一下这个设置:当 Vim 启动时,你希望 Vim 默认情况下如何处理文本换行?开着还是关着?我喜欢将其关闭,并在运行时用命令打开它。当我想让文本换行时,我只需在命令行模式下用 `:set wrap` 设置即可。 + +让 Vim 设置为默认文字换行并没有什么问题。这只是一个偏好的问题 —— 它可能随着时间的推移而改变。同样你也可以控制粘贴、代码语言缩进语法和 `Tab` 键的设置(制表符还是空格?多少个空格?可也在[这里][9]深入研究这些选项)。所有这些默认行为的选项都是完全可配置的,并且在你使用命令行模式操作时可以实时更改。 + +你会在社区论坛、Vim 维基和文章中找到很多关于设置 Vim 默认设置的建议(比如这篇文章)。为你的个人计算环境设置首选项对你来说应该相当熟悉,Vim 也不例外。我强烈建议你从对你的设置进行非常小的更改开始,慢慢地进行更多的更改,这样你就可以轻松地恢复设置。这样一来,你就可以避免使用插件好多年或完全不用。 + +### Vim 8.2中的分割、标签和终端 + +有两种方法可以将你正在处理的文件分割成不同的视图:它们可以并排显示,也可以使用应用程序标签页在全屏(窗口)中切换。这些对应用程序窗口的更改是从命令模式启动的,这需要使用冒号(`:`)来调起提示符。 + +每个分割的窗口可以容纳一个文件进行编辑,你可以通过标签页在更多的文件之间随意切换。分割的屏幕空间是有限的,所以当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属个人喜好的问题。要横向分割一个窗口,使用 `:sp`,垂直分割时使用 `:vs`。 + +从 [Vim 8.2][10] 开始,你可以用 `:vert term` 打开一个垂直分割的终端 shell 子进程,来在你的代码旁边在命令行进行操作。你需要键入 `exit` 来关闭你的终端进程,就像你结束一个 shell 会话一样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口一样,用 `:q` 来关闭。 + +要初始化一个标签页,请使用一个特殊的编辑命令:`:tabedit`,它会自动切换到新打开的标签页。如果你给该命令一个文件名作为参数,将会打开该文件并进行编辑。如果你忽略了给它一个文件名作为参数,可以在命令行模式下的使用编辑命令 `:e filename.txt`,就像在任何一个普通的 Vim 窗口中一样。可以使用下一个(`:tabn`)和上一个(`:tabp`)命令在标签页间导航。 + +要使用分割,你需要知道如何使用组合键 `C-w` 和你想要移动的方向的移动键,例如左(`h`)、下(`j`)、左(`k`)、右(`l`)。如果你想学习更多的组合键,请阅读 Vim 手册中的 `:help split` 和 `:help tabpage`。 + +### 获取帮助 + +虽然可以在 Vimtutor 中打开参考 Vim 手册,但用 `:help` 打开 Vim 帮助,可以让你自己把时间花在编辑器上,不用完全依赖像这样的文章,就能获得更多的成果。经验是掌握 Vim 的关键。经验有助于提高你的整体计算直觉,因为 Vim 中的很多东西都是从 Unix 宇宙中汲取的。 + +祝你在探索 Vim 之美的过程中玩得开心,有什么问题可以在评论中分享。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/3/vim-skills + +作者:[Detlef Johnson][a] +选题:[lujun9972][b] +译者:[wxy](https://github.com/wxy) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/deckart +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) +[2]: https://www.vim.org/ +[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html +[4]: http://zsh.sourceforge.net/Intro/intro_3.html +[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default +[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it +[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions +[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor +[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse +[10]: https://www.vim.org/vim-8.2-released.php From da13dbb8081602cedac0467376271ff62e8930da Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 17:45:07 +0800 Subject: [PATCH 205/218] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=20PR=20=E6=8F=90=E4=BA=A4=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0331 5 ways to level up your Vim skills.md | 155 ------------------ 1 file changed, 155 deletions(-) delete mode 100644 translated/tech/20200331 5 ways to level up your Vim skills.md diff --git a/translated/tech/20200331 5 ways to level up your Vim skills.md b/translated/tech/20200331 5 ways to level up your Vim skills.md deleted file mode 100644 index 2ddeb2f40d..0000000000 --- a/translated/tech/20200331 5 ways to level up your Vim skills.md +++ /dev/null @@ -1,155 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 ways to level up your Vim skills) -[#]: via: (https://opensource.com/article/20/3/vim-skills) -[#]: author: (Detlef Johnson https://opensource.com/users/deckart) - -提升你的 Vim 技能的 5 个方法 -====== - -> 通过一些有趣的技巧使你的文本编辑器更上一层楼。 - -![Computer keyboard typing][1] - -Vim 是最受欢迎的文本编辑器之一,因此绝对值得花时间学习如何使用它。如果你使用这个无处不在的 [Vi(m)][2] 命令行文本编辑器来做的只是打开文件、输入和编辑一些文本、保存编辑的文件并退出程序,那么你还有很大的提示空间、。 - -在某些情况下你会发现,使用 Vim 非常方便的的场景几乎总是涉及到运行远程 Shell 操作的任务。如果你时不时地使用 ssh,比如 - -``` -$ ssh user@hostname.provider.com -``` - -并在虚拟专用服务器(VPS)或本地虚拟化容器中工作,那么就可以从这些强大的 Vim 技能中受益匪浅。 - -### 将 Vim 设置为默认的文本编辑器 - -几乎在所有现代 Linux(或 BSD)发行版中,都可以在终端仿真器的 shell 命令提示符下使用 Vim。在用户 shell 程序中将 Vim 定义为默认编辑器后,即可使用熟悉的 Vim 键绑定来浏览内置的实用程序,例如 `man`。我将说明如何使用 Bash 和 Z shell(zsh)来实现此目的,zsh 现在是 macOS 用户的默认shell(自 Catalina 起)。 - -#### 在 Bash 中将 Vim 设置为默认 - -Bash 通过点文件的组合来管理设置。将首选编辑器添加到主目录中的 `.bashrc` 文件中是最常见的,但也可以将其添加到 `.bash_profile` 中。(请阅读 [GNU Bash 文档][3]了解不同之处)。 - -通过在 `~/.bashrc` 中添加以下内容,将 Vim 设置为默认编辑器: - -``` -# set default editor to Vim -export EDITOR=vim -``` - -以 `#` 开头的行是可选的注释,这是提醒自己该命令的功能的好方法。 - -#### 在 zsh 中将 Vim 设置为默认 - -zsh 是一种越来越流行的终端模拟器,尤其是自苹果的基于 FreeBSD 的 Darwin 系统最近从 Bash 切换到 zsh 以来。 - -zsh 点文件与 Bash 的文件相当,因此你可以在 `~/.zshrc` 或 `~/.zprofile` 之间进行选择。有关何时使用哪一个的详细信息,请参见 [zsh文档][4]。 - -将其设置为默认: - -``` -# set default editor to Vim -export EDITOR=vim -``` - -### 优化 Vim 配置 - -Vim 很像终端仿真器外壳,它使用点文件来设置个人偏好。如果发现该模式,则可能已经猜到它是 `~/.vimrc`。 - -你可能要更改的第一个设置是将对旧 Vi 兼容模式切换为“关”。由于 Vim 是 Vi 的超集,因此 Vi 中的所有功能都可用,并在 Vim 中进行了很大的改进,你可以获得许多高级功能。最新版本(8.2)允许你在拆分的窗口中打开终端运行一个子进程 shell 程序。 - -顺便说一句,关闭旧版兼容性似乎没有做什么事情([事实上,可能不是][5])。当遇到一个 `.vimrc` 文件时,Vim 会自动将该模式切换为关闭。但有时将其明确关闭仍然很重要。缩写 `nocp` 是 `nocompatible` 的同义词,也可以使用它。[条条大道通罗马][6],切换首选项有很多方式。 - -在 `.vimrc` 语法中, 以 `"` 开头的行是注释(就像 `.bashrc` 文件中的 `#` 一样),这些注释可以帮助你记住诸如为何选择一个隐秘的设置名称之类的内容。 - -要关闭 Vi 兼容性,请将以下内容添加到 `~/.vimrc` 文件中: - -``` -" ensure that legacy compatibility mode is off -" documentation: ' -set nocp -``` - -### 理解模式 - -Vim的 “模式”概念是非常重要的,尤其是“正常模式”和“插入模式”之间的区别。对模式的混淆是大多数新用户的困扰。模式并不是 Vim 所独有的,甚至也不是 Vi 所引入的。命令模式是如此的古老,以至于它比 70 年代的[复制和粘贴][7]功能的发明还要早。 - -#### 重要的模式 - -Vim 依赖于不同的模式来定义键盘的敲击行为。需要了解的重要模式有 - -* 正常模式:默认模式,主要用于导航和打开文件。 -* 插入模式(包括替换):这种模式下 Vim 允许将文本输入到打开的文件中。 -* 可视模式:Vim 的行为类似于基于鼠标的输入方式,如复制、编辑、替换等。 -* 命令模式(包括行模式、Ex 命令模式和末行模式):在 Vim 中做更多事情的强大方法。 - -每种模式都有很多值得探索的地方。使用 [Vimtutor][8](`vimtutor`)可以交互式地学习移动光标、模式和在末行模式下运行 Ex 命令。一些不可缺少的生产力操作符包括: - -`:E` | 打开资源管理器,用于定位文件和目录。 ---- | --- -`.` | 重复上次的编辑操作。 -`;` | 向前重复上一次的动作或移动 -`,` | 向后重复上一次的动作或移动。 -`/` | 向前搜索文档。 -`?` | 向后搜索文档。 -`*` | 查找光标所在处的单词的下一个出现的地方。 -`#` | 查找光标所在处的单词的上一次出现的地方。 -`~` | 切换大小写。 -`%` | 在打开和关闭的 `()`、`[]` 和 `{}` 之间切换;对编码非常有用。 -`z=` | 提出拼写建议。 - -### 像钢琴一样弹奏 Vim - -把 Vim 的操作符“语言”记在记忆中是很重要的,但要想掌握它,难点在于学会像音乐家一样思考,把操作符和动作组合成“和声和弦”,这样你就可以像弹钢琴一样弹奏 Vim。这就是 Vim 的文本操作能力可以与另一个著名的命令行编辑器 Emacs 相媲美的地方。(虽然其中一个编辑器会让磨损掉你的 `Esc` 键,而另一个编辑器会让你的 `Ctrl` 键磨损掉。) - -在描述和弦时,Vim 中的传统做法是用大写字母 `C` 来指代 `Ctrl` 键,后面加上一个连字符(`C-`)。这并不是通用的,但我将从这里开始遵循这一惯例,并在有可能引起混淆的时候加以说明。 - -如果你在 Vim 中键入长行,你会想把它设置成可以换行你的文字。想要根据你的工作方式对 Vim 进行个性化设置,请考虑一下这个设置:当 Vim 启动时,你希望 Vim 默认情况下如何处理文本换行?开着还是关着?我喜欢将其关闭,并在运行时用命令打开它。当我想让文本换行时,我只需在命令行模式下用 `:set wrap` 设置即可。 - -让 Vim 设置为默认文字换行并没有什么问题。这只是一个偏好的问题 —— 它可能随着时间的推移而改变。同样你也可以控制粘贴、代码语言缩进语法和 `Tab` 键的设置(制表符还是空格?多少个空格?可也在[这里][9]深入研究这些选项)。所有这些默认行为的选项都是完全可配置的,并且在你使用命令行模式操作时可以实时更改。 - -你会在社区论坛、Vim 维基和文章中找到很多关于设置 Vim 默认设置的建议(比如这篇文章)。为你的个人计算环境设置首选项对你来说应该相当熟悉,Vim 也不例外。我强烈建议你从对你的设置进行非常小的更改开始,慢慢地进行更多的更改,这样你就可以轻松地恢复设置。这样一来,你就可以避免使用插件好多年或完全不用。 - -### Vim 8.2中的分割、标签和终端 - -有两种方法可以将你正在处理的文件分割成不同的视图:它们可以并排显示,也可以使用应用程序标签页在全屏(窗口)中切换。这些对应用程序窗口的更改是从命令模式启动的,这需要使用冒号(`:`)来调起提示符。 - -每个分割的窗口可以容纳一个文件进行编辑,你可以通过标签页在更多的文件之间随意切换。分割的屏幕空间是有限的,所以当你想分割更多的屏幕时,标签页是很方便的。想要如何设置,纯属个人喜好的问题。要横向分割一个窗口,使用 `:sp`,垂直分割时使用 `:vs`。 - -从 [Vim 8.2][10] 开始,你可以用 `:vert term` 打开一个垂直分割的终端 shell 子进程,来在你的代码旁边在命令行进行操作。你需要键入 `exit` 来关闭你的终端进程,就像你结束一个 shell 会话一样,但你关闭这个分割的窗口和标签页的方式和关闭任何普通的 Vim 窗口一样,用 `:q` 来关闭。 - -要初始化一个标签页,请使用一个特殊的编辑命令:`:tabedit`,它会自动切换到新打开的标签页。如果你给该命令一个文件名作为参数,将会打开该文件并进行编辑。如果你忽略了给它一个文件名作为参数,可以在命令行模式下的使用编辑命令 `:e filename.txt`,就像在任何一个普通的 Vim 窗口中一样。可以使用下一个(`:tabn`)和上一个(`:tabp`)命令在标签页间导航。 - -要使用分割,你需要知道如何使用组合键 `C-w` 和你想要移动的方向的移动键,例如左(`h`)、下(`j`)、左(`k`)、右(`l`)。如果你想学习更多的组合键,请阅读 Vim 手册中的 `:help split` 和 `:help tabpage`。 - -### 获取帮助 - -虽然可以在 Vimtutor 中打开参考 Vim 手册,但用 `:help` 打开 Vim 帮助,可以让你自己把时间花在编辑器上,不用完全依赖像这样的文章,就能获得更多的成果。经验是掌握 Vim 的关键。经验有助于提高你的整体计算直觉,因为 Vim 中的很多东西都是从 Unix 宇宙中汲取的。 - -祝你在探索 Vim 之美的过程中玩得开心,有什么问题可以在评论中分享。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/vim-skills - -作者:[Detlef Johnson][a] -选题:[lujun9972][b] -译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/deckart -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) -[2]: https://www.vim.org/ -[3]: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html -[4]: http://zsh.sourceforge.net/Intro/intro_3.html -[5]: http://vimdoc.sourceforge.net/htmldoc/starting.html#compatible-default -[6]: https://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it -[7]: https://www.npr.org/2020/02/22/808404858/remembering-the-pioneer-behind-your-computers-cut-copy-and-paste-functions -[8]: http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor -[9]: https://opensource.com/article/18/9/vi-editor-productivity-powerhouse -[10]: https://www.vim.org/vim-8.2-released.php From 6a787fa119ffe7af55f0232f9bf5f5ff5991eebd Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Tue, 7 Apr 2020 20:30:31 +0800 Subject: [PATCH 206/218] APL (#18018) --- sources/tech/20200403 Take back your dotfiles with Chezmoi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200403 Take back your dotfiles with Chezmoi.md b/sources/tech/20200403 Take back your dotfiles with Chezmoi.md index 2b2bed6621..44846d3beb 100644 --- a/sources/tech/20200403 Take back your dotfiles with Chezmoi.md +++ b/sources/tech/20200403 Take back your dotfiles with Chezmoi.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (wxy) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From b7f2aecf4fc38d004a2bdf1fd8ce42d89cd7322d Mon Sep 17 00:00:00 2001 From: cycoe <871873687@qq.com> Date: Tue, 7 Apr 2020 20:32:26 +0800 Subject: [PATCH 207/218] Translating by Cycoe (#18019) Co-authored-by: cycoe --- .../20200311 What you need to know about variables in Emacs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200311 What you need to know about variables in Emacs.md b/sources/tech/20200311 What you need to know about variables in Emacs.md index d66ba374f4..fdbeffe90d 100644 --- a/sources/tech/20200311 What you need to know about variables in Emacs.md +++ b/sources/tech/20200311 What you need to know about variables in Emacs.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (cycoe) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From b1f2bbb5987844aba51af6f740baadac8ed896d8 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 7 Apr 2020 22:20:45 +0800 Subject: [PATCH 208/218] TSL --- ...03 Take back your dotfiles with Chezmoi.md | 309 ------------------ ...03 Take back your dotfiles with Chezmoi.md | 308 +++++++++++++++++ 2 files changed, 308 insertions(+), 309 deletions(-) delete mode 100644 sources/tech/20200403 Take back your dotfiles with Chezmoi.md create mode 100644 translated/tech/20200403 Take back your dotfiles with Chezmoi.md diff --git a/sources/tech/20200403 Take back your dotfiles with Chezmoi.md b/sources/tech/20200403 Take back your dotfiles with Chezmoi.md deleted file mode 100644 index 44846d3beb..0000000000 --- a/sources/tech/20200403 Take back your dotfiles with Chezmoi.md +++ /dev/null @@ -1,309 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (wxy) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Take back your dotfiles with Chezmoi) -[#]: via: (https://fedoramagazine.org/take-back-your-dotfiles-with-chezmoi/) -[#]: author: (Ryan Walter https://fedoramagazine.org/author/rwaltr/) - -Take back your dotfiles with Chezmoi -====== - -![][1] - -In Linux, dotfiles are hidden text files that are used to store various configuration settings for many such as Bash and Git to more complex applications like i3 or VSCode. - -Most of these files are contained in the _~/.config_ directory or right in the home directory. Editing these files allows you to customize applications beyond what a settings menu may provide, and they tend to be portable across devices and even other Linux distributions. But one talking point across the Linux enthusiast community is how to manage these dotfiles and how to share them. - -We will be showcasing a tool called [Chezmoi][2] that does this task a little differently from the others. - -### The history of dotfile management - -If you search [GitHub for dotfiles][3], what you will see are over 100k repositories after one goal: Store people’s dotfiles in a shareable and repeatable manor. However, other than using git, they store their files differently. - -While Git has solved code management problems that also translates to config file management, It does not solve how to separate between distributions, roles (such as home vs work computers) secrets management, and per device configuration. - -Because of this, many users decide to craft their own solutions, and the community has responded with multiple answers over the years. This article will briefly cover some of the solutions that have been created. - -#### Experiment in an isolated environment - -Do you want to try these below solutions quickly in a contained environment? Run: - -``` -$ podman run --rm -it fedora -``` - -… to create a Fedora container to try the applications in. This container will automatically delete itself when you exit the shell. - -#### The install problem - -If you store your dotfiles in Git repository, you will want to make it easy for your changes to automatically be applied inside your home directory, the easiest way to do this at first glance is to use a symlink, such as _ln -s ~/.dotfies/bashrc ~/.bashrc_. This will allow your changes to take place instantly when your repository is updated. - -The problem with symlinks is that managing symlinks can be a chore. Stow and [RCM (covered here on Fedora Magazine)][4] can help you manage those, but these are not seamless solutions. Files that are private will need to be modified and chmoded properly after download. If you revamp your dotfiles on one system, and download your repository to another system, you may get conflicts and require troubleshooting. - -Another solution to this problem is writing your own install script. This is the most flexible option, but has the tradeoff of requiring more time into building a custom solution. - -#### The secrets problem - -Git is designed to track changes. If you store a secret such as a password or an API key in your git repository, you will have a difficult time and will need to rewrite your git history to remove that secret. If your repository is public, your secret would be impossible to recover if someone else has downloaded your repository. This problem alone will prevent many individuals from sharing their dotfiles with the public world. - -#### The multi-device config problem - -The problem is not pulling your config to multiple devices, the problem is when you have multiple devices that require different configuration. Most individuals handle this by either having different folders or by using different forks. This makes it difficult to share configs across the different devices and role sets - -### How Chezmoi works - -Chezmoi is a tool to manage your dotfiles with the above problems in mind, it doesn’t blindly copy or symlink files from your repository. Chezmoi acts more like a template engine to generate your dotfiles based on system variables, templates, secret managers, and Chezmoi’s own config file. - -#### Getting Started with Chezmoi - -Currently Chezmoi is not in the default repositories. You can download the current version of Chezmoi as of writing with the following command. - -``` -$ sudo dnf install https://github.com/twpayne/chezmoi/releases/download/v1.7.17/chezmoi-1.7.17-x86_64.rpm -``` - -This will install the pre-packaged RPM to your system. - -Lets go ahead and create your repository using: - -``` -$ chezmoi init -``` - -It will create your new repository in _~/.local/share/chezmoi/_. You can easily cd to this directory by using: - -``` -$ chezmoi cd -``` - -Lets add our first file: - -``` -chezmoi add ~/.bashrc -``` - -… to add your bashrc file to your chezmoi repository. - -Note: if your bashrc file is actually a symlink, you will need to add the -f flag to follow it and read the contents of the real file. - -You can now edit this file using: - -``` -$ chezmoi edit ~/.bashrc -``` - -Now lets add a private file, This is a file that has the permissions 600 or similar. I have a file at .ssh/config that I would like to add by using - -``` -$ chezmoi add ~/.ssh/config -``` - -Chezmoi uses special prefixes to keep track of what is a hidden file and a private file to work around Git’s limitations. Run the following command to see it: - -``` -$ chezmoi cd -``` - -**Do note that files that are marked as private are not actually private, they are still saved as plain text in your git repo. More on that later.** - -You can apply any changes by using: - -``` -$ chezmoi apply -``` - -and inspect what is different by using - -``` -$ chezmoi diff -``` - -#### Using variables and templates - -To export all of your data Chezmoi can gather, run: - -``` -$ chezmoi data -``` - -Most of these are information about your username, arch, hostname, os type and os name. But you can also add our own variables. - -Go ahead and run: - -``` -$ chezmoi edit-config -``` - -… and input the following: - -``` -[data] - email = "fedorauser@example.com" - name = "Fedora Mcdora" -``` - -Save your file and run chezmoi data again. You will see on the bottom that your email and name are now added. You can now use these with templates with Chezmoi. Run: - -``` -$ chezmoi add -T --autotemplate ~/.gitconfig -``` - -… to add your gitconfig as a template into Chezmoi. If Chezmoi is successful in inferring template correctly, you could get the following: - -``` -[user] - email = "{{ .email }}" - name = "{{ .name }}" -``` - -If it does not, you can change the file to this instead. - -Inspect your file with: - -``` -$ chezmoi edit ~/.gitconfig -``` - -After using - -``` -$ chezmoi cat ~/.gitconfig -``` - -… to see what chezmoi will generate for this file. My generated example is below: - -``` -[root@a6e273a8d010 ~]# chezmoi cat ~/.gitconfig - [user] - email = "fedorauser@example.com" - name = "Fedora Mcdora" - [root@a6e273a8d010 ~]# -``` - -It will generate a file filled with the variables in our chezmoi config. -You can also use the varibles to perform simple logic statements. One example is: - -``` -{{- if eq .chezmoi.hostname "fsteel" }} -# this will only be included if the host name is equal to "fsteel" -{{- end }} -``` - -Do note that for this to work the file has to be a template. You can check this by seeing if the file has a “.tmpl” appended to its name on the file in _chezmoi cd_, or by readding the file using the -T option - -#### Keeping secrets… secret - -To troubleshoot your setup, use the following command. - -``` -$ chezmoi doctor -``` - -What is important here is that it also shows you the [password managers it supports][5]. - -``` -[root@a6e273a8d010 ~]# chezmoi doctor - warning: version dev - ok: runtime.GOOS linux, runtime.GOARCH amd64 - ok: /root/.local/share/chezmoi (source directory, perm 700) - ok: /root (destination directory, perm 550) - ok: /root/.config/chezmoi/chezmoi.toml (configuration file) - ok: /bin/bash (shell) - ok: /usr/bin/vi (editor) - warning: vimdiff (merge command, not found) - ok: /usr/bin/git (source VCS command, version 2.25.1) - ok: /usr/bin/gpg (GnuPG, version 2.2.18) - warning: op (1Password CLI, not found) - warning: bw (Bitwarden CLI, not found) - warning: gopass (gopass CLI, not found) - warning: keepassxc-cli (KeePassXC CLI, not found) - warning: lpass (LastPass CLI, not found) - warning: pass (pass CLI, not found) - warning: vault (Vault CLI, not found) - [root@a6e273a8d010 ~]# -``` - -You can use either of these clients, or a [generic client][6], or your system’s [Keyring][7]. - -For GPG, you will need to add the following to your config using: - -``` -$ chezmoi edit-config -``` - -``` -[gpg] - recipient = " Date: Wed, 8 Apr 2020 00:55:40 +0800 Subject: [PATCH 209/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200408=20How=20?= =?UTF-8?q?to=20Create=20Templates=20in=20LibreOffice=20to=20Save=20Time?= =?UTF-8?q?=20and=20Increase=20Productivity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200408 How to Create Templates in LibreOffice to Save Time and Increase Productivity.md --- ... to Save Time and Increase Productivity.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 sources/tech/20200408 How to Create Templates in LibreOffice to Save Time and Increase Productivity.md diff --git a/sources/tech/20200408 How to Create Templates in LibreOffice to Save Time and Increase Productivity.md b/sources/tech/20200408 How to Create Templates in LibreOffice to Save Time and Increase Productivity.md new file mode 100644 index 0000000000..6eb5183c01 --- /dev/null +++ b/sources/tech/20200408 How to Create Templates in LibreOffice to Save Time and Increase Productivity.md @@ -0,0 +1,89 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Create Templates in LibreOffice to Save Time and Increase Productivity) +[#]: via: (https://itsfoss.com/create-templates-libreoffice/) +[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) + +How to Create Templates in LibreOffice to Save Time and Increase Productivity +====== + +Creating a template in [LibreOffice][1] can save you some time for the documents that you use often. It can be a letter, a financial spreadsheet or even a presentation. + +Time is one factor that a template can save and on the other hand it provides consistency where a group of people in an organization work together at the same project. + +For example, if you are a small organization that has to often issue certificates of experience, instead of copy-pasting from a saved document somewhere, you can create a template. When you need to issue a new certificate of experience, you create a new one from the template, edit it slightly and you are good to go. + +LibreOffice comes with a few templates by default but you are not restricted to use just them. You are free to create your own as per your requirements. + +I think templates are one of the [essential LibreOffice tips][2] that every user should know. Let me show you how to do it. + +### How to create a template in LibreOffice + +First, create the document that you want to reuse with minimal editing. It could be a document, spreadsheet or presentation. I am using a word document in the example but the steps are the same for all of them. + +Now go to file and select Save as Template. You will be prompted to give a name and a category from the menu, the press save. + +![Creating a new template in LibreOffice][3] + +This file will be saved in the LibreOffice template folder in .ots format. You can use these .ots files on other systems that have LibreOffice installed and use the same templates on those systems as well. + +### How to use templates in LibreOffice + +To use a template, select File and then Templates. + +Don’t worry! Opening a template LibreOffice creates a copy without affecting the original template. You can edit the document without worrying about your template getting changed. + +![Using templates][4] + +Once you choose your template, click open. You can edit it as you like. + +### How to change a template in LibreOffice + +Needs may change from time to time and adjustments to your templates can be necessary. + +To edit an existing template go to File -> Templates and then right click on the desired template and click edit. + +![edit Template][5] + +When you finish editing the template, click on save to make the changes permanent. + +**Recommended Read:** + +![][6] + +#### [7 LibreOffice Tips To Get More Out of It][2] + +LibreOffice is an excellent office suite. These LibreOffice tips will enable you to use it more effectively. + +All in all templates are great not only at reducing the workload on repetitive tasks but also for user mistake proofing. You can take advantage of your computer’s ability to handle a repetitive task but with flexibility. It increases your efficiency. + +Bonus Tip! + +You can find tons of additional templates on the [LibreOffice website][7]. You can search for the ones you need, download them and use them. Be advised that these are from third-party, unverified users. So use them at your risk. + +I’ll keep on sharing more such tips in future. Meanwhile, you may also learn about creating templates to [add the “create new document” option in the right click menu context in GNOME][8]. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/create-templates-libreoffice/ + +作者:[Dimitrios Savvopoulos][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/dimitrios/ +[b]: https://github.com/lujun9972 +[1]: https://www.libreoffice.org/ +[2]: https://itsfoss.com/libreoffice-tips/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/1.Template-save-as.png?resize=800%2C567&ssl=1 +[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/2.Use-a-template.png?ssl=1 +[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/3.edit-template.png?ssl=1 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2017/12/LibreOffice-logo.jpeg?fit=800%2C450&ssl=1 +[7]: https://extensions.libreoffice.org/templates +[8]: https://itsfoss.com/add-new-document-option/ From c5bd2311bc22ca9730e3ccfcbcd71ababafbecc1 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 8 Apr 2020 00:56:58 +0800 Subject: [PATCH 210/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=2015=20y?= =?UTF-8?q?ears=20of=20Git:=20How=20to=20get=20started=20or=20learn=20some?= =?UTF-8?q?thing=20new?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 15 years of Git- How to get started or learn something new.md --- ...w to get started or learn something new.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 sources/tech/20200407 15 years of Git- How to get started or learn something new.md diff --git a/sources/tech/20200407 15 years of Git- How to get started or learn something new.md b/sources/tech/20200407 15 years of Git- How to get started or learn something new.md new file mode 100644 index 0000000000..e4db52398b --- /dev/null +++ b/sources/tech/20200407 15 years of Git- How to get started or learn something new.md @@ -0,0 +1,74 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (15 years of Git: How to get started or learn something new) +[#]: via: (https://opensource.com/article/20/4/get-started-git) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +15 years of Git: How to get started or learn something new +====== +On Git's 15th anniversary, learn why it is a major component in keeping +the software industry running. +![Scissors cutting open access to files][1] + +If there's anything that's changed software in the past two decades, [Git][2] is at the top of the list. + +If you don't use Git personally, you might think it's just a tech fad, an incidental darling among developers just because it was created by the same person who started the [Linux][3] project itself. There may be some truth to that, but Git does manage to achieve some feats that no other industry has managed. With Git, developers spread all over the world are able to work on the same code, literally at the same time, with a history of every change made, and then merge all the work together to result in a finished product. The complexity is enormous, and so the tool itself can get complex, but in the end, it's a major component in keeping the software industry running. + +Whether you know Git or not, you'll very likely encounter it should you dig deep enough into open source software or enter into computer science. Whether you use Git to just download an installer package or whether you interface with it daily to manage code, learning more about it is elucidating and empowering. + +### Git terminology + +As with any specialized tool, there's a lot of jargon in Git. Terms like "clone" and "merge" and "rebase" are mysterious at best, and at worst can feel almost exclusionary. Trying to understand what all of these terms mean can be overwhelming, but not if you take a little guidance from Matthew Broberg's excellent [Git Terminology 101][4] article. In just one quick read, you'll be able to listen in on conversations about Git with real comprehension. + +### Getting started with Git + +If you need to know how to use Git, then my own [introductory article series about using Git][5] is a great place to start. The articles are several years old now, but as with so many Linux and UNIX technologies, the interface hasn't changed significantly, so the articles are as relevant today as they were when I wrote them. The series introduces you to the most basic concepts of Git, and steps you through the process of creating a repository, committing files, restoring files, merging branches, and much more. + +### Common Git services + +One of the most common uses of Git is a public Git hosting service, such as GitLab and GitHub. In his [How to clone, modify, add, and delete files in Git][6] article, Kedar Vijay Kulkarni demonstrates the everyday tasks most developers perform with Git. This isn't required reading for non-developers, but it's a must for anyone who wants to contribute to a project on a public Git hosting service. This article addresses Github specifically because it's one of the most common platforms today, but the principles apply to any web front-end for Git, including popular open source frameworks like [GitLab][7], [Gogs][8], and [Gitea][9]. + +### Try this Git walkthrough + +Do you prefer a guided tour to aimless exploration? Sometimes the easiest way to learn something is to mimic someone else's exact steps. You know the end result is a guaranteed success, so you have confidence while performing the exercise, and your brain and fingers get the benefit of repetition, which builds memory. If that's your learning style, then follow along with Alan Formy-Duvall's [practical learning exercise for Git][10] and find out what a successful Git session feels like. + +### Git apps + +Believe it or not, Git has more interfaces than text you type into a terminal. Obviously there are the web interfaces of Git hosts online, but you can use Git clients on your computer, too. For just a light layer of assistance, read Jesse Duffield's article about [Lazygit][11] or Olaf Anders' article about [Tig][12]. For the full graphical application experience, read my article about [Git-cola][13], [Sparkleshare][14], and [still others][15]. And yes, there are even [interfaces for your mobile devices][16]! + +### Learn more about Git + +Knowledge is power, so don't let Git be a mystery to you. Whether you use it directly or you only know it by name or you'd never heard of it before, now's a great time to learn about Git. There are great resources out there to help you understand how it works, why it works, and why people love it so much.  Dive in, take it at your own pace, and learn to love Git! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/get-started-git + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/document_free_access_cut_security.png?itok=ocvCv8G2 (Scissors cutting open access to files) +[2]: https://en.wikipedia.org/wiki/Git +[3]: https://opensource.com/resources/linux +[4]: https://opensource.com/article/19/2/git-terminology +[5]: https://opensource.com/life/16/7/stumbling-git +[6]: https://opensource.com/article/18/2/how-clone-modify-add-delete-git-files +[7]: https://about.gitlab.com/install/ +[8]: https://gogs.io/ +[9]: https://gitea.io/en-us/ +[10]: https://opensource.com/article/19/5/practical-learning-exercise-git +[11]: https://opensource.com/article/20/3/lazygit +[12]: https://opensource.com/article/19/6/what-tig +[13]: https://opensource.com/article/20/3/git-cola +[14]: https://opensource.com/article/19/4/file-sharing-git +[15]: https://opensource.com/life/16/8/graphical-tools-git +[16]: https://opensource.com/article/19/4/calendar-git#mobile From b42682737ddfb4ac5554d7bb33a2d5c87088e27f Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 8 Apr 2020 00:57:50 +0800 Subject: [PATCH 211/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=20Love?= =?UTF-8?q?=20or=20hate=20chat=3F=204=20best=20practices=20for=20remote=20?= =?UTF-8?q?teams?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md --- ...chat- 4 best practices for remote teams.md | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md diff --git a/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md b/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md new file mode 100644 index 0000000000..855c622e49 --- /dev/null +++ b/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md @@ -0,0 +1,92 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Love or hate chat? 4 best practices for remote teams) +[#]: via: (https://opensource.com/article/20/4/chat-tools-best-practices) +[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) + +Love or hate chat? 4 best practices for remote teams +====== +Plus, learn about a few open source alternatives for chat. +![Chat via email][1] + +Chat is a part of most people's daily lives, especially if you work in tech, and especially if you work with teammates located in different parts of the world. It can be a great way to achieve these goals: + + * **to connect**; to share with teammates on a personal level + * **to get work done**; to communicate with teammates about work in progress + * **to share**; to give notes and feedback from experiences, meetings, and interactions outside of the group that may be relevant to your work or interests + + + +I encourage you to explore [open source alternatives to chat][2] like [Mattermost][3], [Rocket.Chat][4], and [Riot][5]. + +### To chat or not to chat, that is the question + +First, it's important to make time to have a discussion with each member of your team focused on answering whether they are comfortable with using a chat platform to keep in touch throughout the workday. Some people enjoy chat and see it as a vital part of their workday, getting things done and communicating with teammates who they rely on to get that work done and move forward with projects. Others struggle with chat as a way of getting work done and prefer to use it when they feel like having more casual conversations with teammates on topics less focused on work and more on social interaction and personal sharing. Some people wish chat would burn in a fire. + +Gather these opinions and talk through these feelings with each person. You can do this as a group or one-on-one if that feels more appropriate. + +Why? Because communication is important and always will be, and your team will find a way to chat no matter what you do. We're human, and need various levels and types of interaction with each other throughout our days and lives. And when it comes to our work colleagues, it's helpful to put some structure in place to guide your team. + +### Best practices for team chat + +If you have decided to use chat in some form, the next step is to place structure around when and how to use it and **not** use it. These best practices work well for teams who are working remotely and at home, as well as in the office. + +**1\. Create rooms and threads to focus your conversations.** + +My team has a room for each of our sub-teams who work on a particular project together. We also have an at-large room for all of us to banter and share. + +Additionally, we use threads to focus on one topic at a time which is helpful when you have several to dozens of teammates in one room together. It helps conversations to continue and not stop prematurely because they were lost in the mix of other conversations. + +**2\. Decide when your team will be signed in and available to talk.** + +Is it throughout the workday (whatever hours those are for you), during a set timeframe, or as desired? + +My team has set the expectation that they will be signed in and available to chat at some point during the workday **about work-related topics**, and that at that time they will check for and respond to messages that were sent to them while they were away. So, we are using it as an asynchronous way to communicate about work. + +For us, asynchronous chat helps us plan and schedule each day how we see fit with the goal of being productive and serving our project in the best we can _that day_. + +If a teammate does **not** plan on signing in and responding to messages one day, that is OK, and we set the expectation that they will send a message to let the team know. For my team, almost no communication is wrong (see guideline #4), but it should be communicated. We also review our schedules for the following week in a team meeting the week before so we know when someone will be away from their desk, not working, or blocking out a chunk of time for a project. + +**3\. Decide when your teammates are responsible for responding (and when they are not).** + +Use @ mentions if you want someone to see and respond to your question or comment in chat. Don't expect them to be watching every thread and conversation.  + +And I would recommend that you take it a step further and define when teammates should be responsible for responding and when they should not. This type of decision is meant to free you and your teammates, not hold you down. The more you understand the expectations, the freer you are to operate within the same understood universe. When you are unsure of the rules, you may act and make decisions in fear or trepidation instead, like staying signed in to chat all day when you really just need to block it out to get something done. + +Our team has decided that it's nice if you can respond in chat when you are mentioned, but if you don't that is OK. Perhaps you were AFK during that time and lost track of the notification. For us, if you definitely want a response to something from someone, send them an email.  + +**4\. Communicate clearly and with kindness.** + +The way we interpret messages when we are chatting via text is different than when we are chatting verbally, in-person or over video. + +My team uses a lot of humor, emojis, and clear, concise messages to chat with each other. + +We also hold weekly in-person or video conference meetings so that we can get to know each other better. The more you trust someone, the easier it is to give them the benefit of the doubt when you're confused by a message and the better you are at understanding what they are saying and what their intention is behind the text coming through to you. + +### Signing off + +What best practices does your team use? Do you love or hate chat, and why?  + +For all kinds of teams today, chat is a special part of how we stay connected, working, and sharing with each other. Finding ways to do that in a healthy and committed way is part of everyone's responsibility. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/chat-tools-best-practices + +作者:[Jen Wike Huger][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jen-wike +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_chat_communication_message.png?itok=LKjiLnQu (Chat via email) +[2]: https://opensource.com/alternatives/slack +[3]: https://mattermost.com/ +[4]: https://rocket.chat/ +[5]: https://riot.im/app/ From f5670eb8d95cb90c97749f1bf64db1e380b9ed51 Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 8 Apr 2020 00:58:29 +0800 Subject: [PATCH 212/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=20How=20?= =?UTF-8?q?to=20use=20pyenv=20to=20run=20multiple=20versions=20of=20Python?= =?UTF-8?q?=20on=20a=20Mac?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 How to use pyenv to run multiple versions of Python on a Mac.md --- ...un multiple versions of Python on a Mac.md | 186 ++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 sources/tech/20200407 How to use pyenv to run multiple versions of Python on a Mac.md diff --git a/sources/tech/20200407 How to use pyenv to run multiple versions of Python on a Mac.md b/sources/tech/20200407 How to use pyenv to run multiple versions of Python on a Mac.md new file mode 100644 index 0000000000..4d15072b90 --- /dev/null +++ b/sources/tech/20200407 How to use pyenv to run multiple versions of Python on a Mac.md @@ -0,0 +1,186 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use pyenv to run multiple versions of Python on a Mac) +[#]: via: (https://opensource.com/article/20/4/pyenv) +[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg) + +How to use pyenv to run multiple versions of Python on a Mac +====== +If you need to run a project that uses a Python version you don't have +installed on macOS, try pyenv. +![Searching for code][1] + +Managing a local Python development environment continues to be a challenge, even for experienced developers. While there are well-documented [strategies for package management][2], there is another step necessary to ensure you are running the version of Python you need when you need it. + +### Why does the version of Python matter? + +It's a strange concept at first, but programming languages change like any other software. They have bugs, fixes, and updates like any of your favorite [APIs][3] and any other software. Similarly again, different releases are identified by a three-digit number known as a [semantic version][4]. + +> 😭😭😭 [pic.twitter.com/yt1Z2439W8][5] +> +> — Denny Perez (@dennyperez18) [May 28, 2019][6] + +For many years, Python 2 was the commonly used major version of the programming language. In January 2020, Python 2 [reached end of life][7], and only Python 3 will be supported by the language's core maintainers from then forward. Python 3 is developing steadily, and releasing new updates regularly. That makes it important for me to regularly get those updates. + +Recently, I tried to run a project on macOS that depended on Python 3.5.9, a version that I did not have installed on my system. It might seem logical to think the Python package manager **pip** could install it*, but that wasn't the case: + + +``` +$ pip install python3.5.9 +Collecting python3.5.9 +  ERROR: Could not find a version that satisfies the requirement python3.5.9 (from versions: none) +ERROR: No matching distribution found for python3.5.9 +``` + +Alternatively, I could have downloaded that version from the official Python website, but how would I run it in on my Mac alongside my existing version of Python? Specifying the version of Python I intend to use every time I run the interpreter (python3.7 or python3.5 for example) seems error-prone at best. There has to be a better way. + +_(A note on the above: I know this makes no sense to seasoned Python developer, but it made sense to me at the time. I would happily talk about why I still think it should.)_ + +### Installing and setting up pyenv + +Thankfully, **pyenv** exists to work around this series of complexities. To start, I needed to install pyenv. I could clone and compile it myself [from source][8], but I prefer to manage packages like this through the Homebrew package manager: + + +``` +`$ brew install pyenv` +``` + +In order to use the version of Python through pyenv, it's essential to understand the shell's PATH variable. PATH determines where the shell searches for files by the name of the command. You must ensure the shell will find the version of Python run by pyenv, not the one installed by default (which is often called the _system version_). If you don't change the path, here is the result: + + +``` +$ which python +/usr/bin/python +``` + +That's the system version of Python. + +To set up pyenv correctly, you can run the following in Bash or zsh: + + +``` +`$ PATH=$(pyenv root)/shims:$PATH` +``` + +Now, if you check the version of Python, you'll see it is the one managed by pyenv: + + +``` +$ which python +/Users/my_username/.pyenv/shims/python +``` + +That export statement (PATH=) will only change for this shell instance, so make it a permanent change, you need to add it to your dotfiles. Since zsh is officially macOS's default shell, I'll focus on it. Append that same syntax to the **~/.zshrc** file: + + +``` +`$ echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc` +``` + +Now every time we run a command in zsh, it will use the pyenv version of Python. Note that I used single quotes with **echo** so it does not evaluate and expand the commands. + +The .zshrc file only manages zsh instances, so be sure to check what your shell is and edit the associated dotfiles. If you need to double-check what your default shell is, you can run **echo $SHELL**. If it's zsh, use the command above. If you use Bash, change **~/.zshrc** to **~/.bashrc**. You can dive deep into [path setting][9] in pyenv's README if you would like to learn more. + +### Using pyenv to manage Python versions + +Now that pyenv is in control, we can see it only has the system Python available to it: + + +``` +$ pyenv versions +system +``` + +As mentioned above, you absolutely do not want to use this version ([read more on why][10]). Now that pyenv is set up correctly, I want it to have a few different versions of Python that I regularly use. + +There is a way to see all Python versions available from all the different repositories pyenv has access to by running **pyenv install --list**. It's a long, overwhelming list that may be helpful to review in the future. For now, I stick with the latest of each dot-release (3.5.x or 3.6.x where x is the latest) found on the [Python download page][11]. With that in mind, I'll install 3.5.9 and 3.8.0: + + +``` +$ pyenv install 3.5.9 +$ pyenv install 3.8.0 +``` + +This will take a while, so get some tea (or read one of the links above). It's interesting to note that the output walks through the download and building of that version of Python. For example, the output shows that the file comes directly from [Python.org][12]. + +Once everything is installed, you can set up your defaults. I like to live at the cutting edge, so I set my global default Python version to the latest: + + +``` +`$ pyenv global 3.8.0` +``` + +And that version is immediately set in my shell. To confirm: + + +``` +$ python -V +Python 3.8.0 +``` + +The project I want to run works only with Python 3.5, so I'll set the version locally and confirm it's in use: + + +``` +$ pyenv local 3.5.9 +$ python -V +Python 3.5.9 +``` + +Because I used the **local** option with pyenv, it added a file to my current directory to track that information.  + + +``` +$ cat .python-version +3.5.9 +``` + +Now, I can finally set up a virtual environment for the project I want and be sure I'm running the right version of Python. + + +``` +$ python -m venv venv +$ source ./venv/bin/activate +(venv) $ which python +/Users/mbbroberg/Develop/my_project/venv/bin/python +``` + +To learn more, check out this tutorial about [managing virtual environments on a Mac][13]. + +### Wrapping up + +By default, running multiple Python versions can be a challenge. I find starting with pyenv ensures I have the versions of Python I need set up to run when I need them. + +Do you have other beginner or intermediate Python questions? Leave a comment, and we will consider them for a future article. + +Newcomers to python-ideas occasionally make reference to the idea of "Python 4000" when proposing... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/pyenv + +作者:[Matthew Broberg][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/mbbroberg +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/search_find_code_python_programming.png?itok=ynSL8XRV (Searching for code) +[2]: https://opensource.com/article/19/4/managing-python-packages +[3]: https://opensource.com/article/19/5/api-evolution-right-way +[4]: https://semver.org/ +[5]: https://t.co/yt1Z2439W8 +[6]: https://twitter.com/dennyperez18/status/1133505310516232203?ref_src=twsrc%5Etfw +[7]: https://opensource.com/article/19/11/end-of-life-python-2 +[8]: https://github.com/pyenv/pyenv +[9]: https://github.com/pyenv/pyenv#understanding-path +[10]: https://opensource.com/article/19/5/python-3-default-mac +[11]: https://www.python.org/downloads/ +[12]: http://python.org +[13]: https://opensource.com/article/19/6/python-virtual-environments-mac From 4ae2ba97a8f8dcfeee1031425cab75ac61cd6dad Mon Sep 17 00:00:00 2001 From: DarkSun Date: Wed, 8 Apr 2020 00:59:20 +0800 Subject: [PATCH 213/218] =?UTF-8?q?=E9=80=89=E9=A2=98:=2020200407=20How=20?= =?UTF-8?q?to=20avoid=20man-in-the-middle=20cyber=20attacks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sources/tech/20200407 How to avoid man-in-the-middle cyber attacks.md --- ...o avoid man-in-the-middle cyber attacks.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 sources/tech/20200407 How to avoid man-in-the-middle cyber attacks.md diff --git a/sources/tech/20200407 How to avoid man-in-the-middle cyber attacks.md b/sources/tech/20200407 How to avoid man-in-the-middle cyber attacks.md new file mode 100644 index 0000000000..5db0d5c572 --- /dev/null +++ b/sources/tech/20200407 How to avoid man-in-the-middle cyber attacks.md @@ -0,0 +1,94 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to avoid man-in-the-middle cyber attacks) +[#]: via: (https://opensource.com/article/20/4/mitm-attacks) +[#]: author: (Jackie Lam https://opensource.com/users/beenverified) + +How to avoid man-in-the-middle cyber attacks +====== +Understanding MITM attacks is the first step in not being a victim of +this high-tech style of eavesdropping. +![Security monster][1] + +Whether you're sending data on your computer or talking to someone online, you want to assume some level of security and privacy. + +But what if a third party is eavesdropping online, unbeknownst to you? And worse, what if they're impersonating someone from a business you trust in order to gain damaging information? This could put your personal data into the hands of dangerous, would-be thieves. + +Welcome to what's called a man-in-the-middle (MITM) attack. + +### What are man-in-the-middle attacks? + +A man-in-the-middle attack occurs when a cybercriminal inserts themselves into communications between you, the targeted victim, and a device in order to steal sensitive information that can be used for a variety of criminal purposes—most notably identity theft, says Steve J. J. Weisman, founder of Scamicide. + +"A man-in-the-middle-attack can also occur when the victim believes he or she is communicating with a legitimate app or website," says Weisman, "when the truth is that the victim is communicating with a phony website or app and thereby providing sensitive information to the criminal." + +One of the oldest forms of cyberattacks, MITM attacks have been around since the 1980s. What's more, they're quite common. As Weisman explains, there are a handful of ways a MITM attack can happen: + + * **Attacking a WiFi router that is not properly secured:** This typically occurs when someone is using public WiFi. "While home routers might be vulnerable, it's more common for criminals to attack public WiFi networks," says Weisman. The goal is to spy on unsuspecting people who are handling sensitive information, such as their online bank accounts, he adds. + * **Hacking email accounts of banks, financial advisers, and other companies:** "Once [the criminals] have hacked these email systems, they send out emails that appear to come from the legitimate bank or other company," Weisman says. "[They ask] for personal information, such as usernames and passwords, under the guise of an emergency. The targeted victim is lured into providing that information." + * **Sending phishing emails:** Thieves might also send emails pretending to be legitimate companies that the targeted victim does business with, asking the recipient for their personal information. "In many instances, the spear-phishing emails will direct the victim to a counterfeit website that appears to be that of a legitimate company with which the victim does business," says Weisman. + * **Using malicious code in legitimate websites:** Attackers can also place malicious code—usually JavaScript—into a legitimate website by way of a web application. "When the victim loads the legitimate page, the malicious code just sits in the background until the user enters sensitive information, such as account login or credit card details, which the malicious code then copies and sends to the attackers' servers," says Nicholas McBride, a cybersecurity consultant. + + + +### What is an example of an MITM attack? + +The Lenovo case is a well-known example of an MITM attack. In 2014 and 2015, the major computer manufacturer sold consumer laptops with preinstalled software that meddled with how a user's browser communicated with websites. Whenever the user's cursor hovered over a product, this software, called VisualDiscovery, sent pop-up ads from retail partners that sold similar products. + +Here's the kicker: This MITM attack allowed VisualDiscovery to access all of the user's personal data, including social security numbers, info about financial transactions, medical info, and logins and passwords. All without the user knowing or granting permission beforehand. The FTC deemed this a deceptive and unfair online scam. Lenovo agreed to pay $8.3 million in a class-action settlement in 2019. + +### How can I protect myself from an online attack? + + * **Avoid using public WiFi:** Weisman recommends never using public WiFi for financial transactions unless you've installed a reliable virtual private network (VPN) client on your device and have a VPN host you can use and trust. Over a VPN connection, your communications are encrypted, so your information can't be stolen. + + * **Be on the lookout:** Be wary of emails or text messages that ask you to update your password or provide your username or personal information. These methods can be used to steal your identity. + +If you are unsure of the actual identity of the party sending you the email, you can use tools such as a reverse phone or email search. With a reverse phone number lookup, you may be able to find out more about the identity of an unknown texter. And with a reverse email lookup, you can try to determine who might have sent you a message. + +Generally, if something's actually a problem, you'll hear from someone you know and trust within your company, or from someone you can also go and meet, in person, at your bank or school or other organization. Important account information is never the purview of an unknown technician. + + * **Don't click on links contained in emails:** If someone sends you an email telling you that you need to sign into an account, don't click on the link provided in the email. Instead, navigate to the site yourself, log in as you normally would, and look for an alert there. If you don't see an alert message in your account settings, contact a representative by phone using contact information on the site and _not_ from the email. + + * **Install reliable security software:** If you're on Windows, install good open source antivirus like [ClamAV][2]. On all platforms, keep your software up to date with the latest security patches. + + * **Take alerts seriously:** If you're visiting a site that starts with HTTPS, your browser might alert you to an issue, says McBride. For instance, if the domain name on the site's certificate doesn't match the one you're trying to visit. Don't ignore the alert. Heed it and navigate away from the site for now. Verify that you haven't [mistyped it][3], and if the problem persists, contact the site owner if you can. + + * **Use an ad blocker:** Pop-up ads (also known as _adware attacks_) can be used to intercept your personal information, so use an ad blocker. "The truth is, as an individual user, it's hard to protect against a MITM attack," says McBride, "as it is designed to leave the victim in the dark and to prevent them from noticing that there is anything wrong." + +A good open source ad blocker (or "wide-spectrum blocker," in the developer's words) is [uBlock origin][4]. It's available for both Firefox and Chromium (and all Chromium-based browsers, such as Chrome, Brave, Vivaldi, Edge, and so on), and even Safari. + + + + +### Stay alert + +Remember, you don't have to click anything online right away, and you don't have to follow random people's instructions, no matter how urgent they may seem. The internet will still be there after you step away from the computer and verify the identity of a person or site demanding your attention. + +While MITM attacks can happen to anyone, understanding what they are, knowing how they happen, and actively taking steps to prevent them can safeguard you from being a victim. + +* * * + +_This article was originally published on [BeenVerified.com][5] under a [CC BY-SA 2.0][6] license._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/4/mitm-attacks + +作者:[Jackie Lam][a] +选题:[lujun9972][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/beenverified +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/security_password_chaos_engineer_monster.png?itok=J31aRccu (Security monster) +[2]: https://www.clamav.net +[3]: https://opensource.com/article/20/1/stop-typosquatting-attacks +[4]: https://github.com/gorhill/uBlock +[5]: https://www.beenverified.com/crime/what-is-a-man-in-the-middle-attack/ +[6]: https://creativecommons.org/licenses/by-sa/2.0/ From 5c316e453dfb2a5813da89cb76c59dd2fd2a3b25 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 8 Apr 2020 08:30:53 +0800 Subject: [PATCH 214/218] translated --- ...from spreadsheets in Fedora with Python.md | 117 ------------------ ...from spreadsheets in Fedora with Python.md | 117 ++++++++++++++++++ 2 files changed, 117 insertions(+), 117 deletions(-) delete mode 100644 sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md create mode 100644 translated/tech/20200330 Using data from spreadsheets in Fedora with Python.md diff --git a/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md b/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md deleted file mode 100644 index a24dd7faa9..0000000000 --- a/sources/tech/20200330 Using data from spreadsheets in Fedora with Python.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using data from spreadsheets in Fedora with Python) -[#]: via: (https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/) -[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) - -Using data from spreadsheets in Fedora with Python -====== - -![][1] - -[Python][2] is one of the most popular and powerful programming languages available. Because it’s free and open source, it’s available to everyone — and most Fedora systems come with the language already installed. Python is useful for a wide variety of tasks, but among them is processing comma-separated value (**CSV**) data. CSV files often start off life as tables or spreadsheets. This article shows how to get started working with CSV data in Python 3. - -CSV data is precisely what it sounds like. A CSV file includes one row of data at a time, with data values separated by commas. Each row is defined by the same _fields_. Short CSV files are often easily read and understood. But longer data files, or those with more fields, may be harder to parse with the naked eye, so computers work better in those cases. - -Here’s a simple example where the fields are _Name_, _Email_, and _Country_. In this example, the CSV data includes a field definition as the first row, although that is not always the case. - -``` -Name,Email,Country -John Q. Smith,jqsmith@example.com,USA -Petr Novak,pnovak@example.com,CZ -Bernard Jones,bjones@example.com,UK -``` - -### Reading CSV from spreadsheets - -Python helpfully includes a _csv_ module that has functions for reading and writing CSV data. Most spreadsheet applications, both native like Excel or Numbers, and web-based such as Google Sheets, can export CSV data. In fact, many other services that can publish tabular reports will also export as CSV (PayPal for instance). - -The Python _csv_ module has a built in reader method called _DictReader_ that can deal with each data row as an ordered dictionary (OrderedDict). It expects a file object to access the CSV data. So if our file above is called _example.csv_ in the current directory, this code snippet is one way to get at this data: - -``` -f = open('example.csv', 'r') -from csv import DictReader -d = DictReader(f) -data = [] -for row in d: - data.append(row) -``` - -Now the _data_ object in memory is a list of OrderedDict objects : - -``` -[OrderedDict([('Name', 'John Q. Smith'), - ('Email', 'jqsmith@example.com'), - ('Country', 'USA')]), - OrderedDict([('Name', 'Petr Novak'), - ('Email', 'pnovak@example.com'), - ('Country', 'CZ')]), - OrderedDict([('Name', 'Bernard Jones'), - ('Email', 'bjones@example.com'), - ('Country', 'UK')])] -``` - -Referencing each of these objects is easy: - -``` ->>> print(data[0]['Country']) -USA ->>> print(data[2]['Email']) -bjones@example.com -``` - -By the way, if you have to deal with a CSV file with no header row of field names, the _DictReader_ class lets you define them. In the example above, add the _fieldnames_ argument and pass a sequence of the names: - -``` -d = DictReader(f, fieldnames=['Name', 'Email', 'Country']) -``` - -### A real world example - -I recently wanted to pick a random winner from a long list of individuals. The CSV data I pulled from spreadsheets was a simple list of names and email addresses. - -Fortunately, Python also has a helpful _random_ module good for generating random values. The _randrange_ function in the _Random_ class from that module was just what I needed. You can give it a regular range of numbers — like integers — and a step value between them. The function then generates a random result, meaning I could get a random integer (or row number!) back within the total number of rows in my data. - -So this small program worked well: - -``` -from csv import DictReader -from random import Random - -d = DictReader(open('mydata.csv')) -data = [] -for row in d: - data.append(row) - -r = Random() -winner = data[r.randrange(0, len(data), 1)] -print('The winner is:', winner['Name']) -print('Email address:', winner['Email']) -``` - -Obviously this example is extremely simple. Spreadsheets themselves include sophisticated ways to analyze data. However, if you want to do something outside the realm of your spreadsheet app, Python may be just the trick! - -* * * - -_Photo by [Isaac Smith][3] on [Unsplash][4]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/ - -作者:[Paul W. Frields][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/pfrields/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/03/spreadsheets-python-816x345.jpg -[2]: https://python.org -[3]: https://unsplash.com/@isaacmsmith?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[4]: https://unsplash.com/s/photos/spreadsheets?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20200330 Using data from spreadsheets in Fedora with Python.md b/translated/tech/20200330 Using data from spreadsheets in Fedora with Python.md new file mode 100644 index 0000000000..abd3f63cf8 --- /dev/null +++ b/translated/tech/20200330 Using data from spreadsheets in Fedora with Python.md @@ -0,0 +1,117 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Using data from spreadsheets in Fedora with Python) +[#]: via: (https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/) +[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) + +在 Fedora 中使用 Python 读取电子表格中的数据 +====== + +![][1] + +[Python][2] 是最流行、功能最强大的编程语言之一。由于它是免费和开源的,因此每个人都可以使用。大多数 Fedora 系统都已安装了该语言。Python 可用于多种任务,其中包括处理逗号分隔值(**CSV**)数据。CSV 文件通常作为表格启动。本文介绍了如何在 Python 3 中处理 CSV 数据。 + +CSV 数据正是它听起来的样子。CSV 文件一次包含一行数据,数值之间用逗号分隔。每行由相同的_字段_定义。简短的 CSV 文件通常易于阅读和理解。但是较长的数据或具有更多字段的数据文件可能很难用肉眼解析,因此在这种情况下计算机做得更好。 + +这是一个简单的示例,其中的字段是 _Name _、_ Email_ 和 _Country_。在此例中,CSV 数据将字段定义作为第一行,尽管并非总是如此。 + +``` +Name,Email,Country +John Q. Smith,jqsmith@example.com,USA +Petr Novak,pnovak@example.com,CZ +Bernard Jones,bjones@example.com,UK +``` + +### 从电子表格读取 CSV + +Python 包含了一个 _csv_ 模块,它可读取和写入 CSV 数据。大多数电子表格应用,无论是原生(例如 Excel 或 Numbers)还是基于 Web 的(例如 Google Sheet),都可以导出 CSV 数据。实际上,许多其他可发布表格报告的服务也将导出为 CSV(例如,PayPal)。 + +Python _csv_ 模块有一个名为 _DictReader_ 的内置读取器方法,它可以将每个数据行作为有序字典 (OrderedDict) 处理。它需要一个文件对象访问 CSV 数据。因此,如果上面的文件在当前目录中为 _example.csv_,那么以下代码段是获取此数据的一种方法: + +``` +f = open('example.csv', 'r') +from csv import DictReader +d = DictReader(f) +data = [] +for row in d: + data.append(row) +``` + +现在,内存中的 _data_ 对象是 OrderedDict 对象的列表: + +``` +[OrderedDict([('Name', 'John Q. Smith'), + ('Email', 'jqsmith@example.com'), + ('Country', 'USA')]), + OrderedDict([('Name', 'Petr Novak'), + ('Email', 'pnovak@example.com'), + ('Country', 'CZ')]), + OrderedDict([('Name', 'Bernard Jones'), + ('Email', 'bjones@example.com'), + ('Country', 'UK')])] +``` + +引用这些对象很容易: + +``` +>>> print(data[0]['Country']) +USA +>>> print(data[2]['Email']) +bjones@example.com +``` + +顺便说一句,如果你需要处理没有字段名标题行的 CSV 文件,那么 _DictReader_ 类可以让你定义它们。在上面的示例中,添加 _fieldnames_ 参数并传递一系列名称: + +``` +d = DictReader(f, fieldnames=['Name', 'Email', 'Country']) +``` + +### 真实例子 + +我最近想从一长串人中随机选择一名赢家。我从电子表格中提取的 CSV 数据是一个简单的名称和邮件地址列表。 + +幸运的是,Python 有一个有用的 _random_ 模块,可以很好地生成随机值。该模块 _Random_ 类中的 _randrange_ 函数正是我需要的。你可以给它一个常规的数字范围(例如整数),以及它们之间的步长值。然后,该函数会生成一个随机结果,这意味着我可以在数据的总行数范围内获得一个随机整数(或行号!)。 + +这个小程序运行良好: + +``` +from csv import DictReader +from random import Random + +d = DictReader(open('mydata.csv')) +data = [] +for row in d: + data.append(row) + +r = Random() +winner = data[r.randrange(0, len(data), 1)] +print('The winner is:', winner['Name']) +print('Email address:', winner['Email']) +``` + +显然,这个例子非常简单。电子表格本身包含了复杂的分析数据的方法。但是,如果你想在电子表格应用之外做某事,Python 或许是一种技巧! + +* * * + +_由 [Isaac Smith][3] 拍摄,发表于 [U​​nsplash][4]。_ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/using-data-from-spreadsheets-in-fedora-with-python/ + +作者:[Paul W. Frields][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/pfrields/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2020/03/spreadsheets-python-816x345.jpg +[2]: https://python.org +[3]: https://unsplash.com/@isaacmsmith?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[4]: https://unsplash.com/s/photos/spreadsheets?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText From bdd4a01469d915f164958572d75bfc86a2dbe6b1 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 8 Apr 2020 08:37:44 +0800 Subject: [PATCH 215/218] translating --- ...20200407 Bitwarden- A Free - Open Source Password Manager.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md b/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md index 26fa46b858..bac49804f7 100644 --- a/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md +++ b/sources/tech/20200407 Bitwarden- A Free - Open Source Password Manager.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From a636e72e8b8bca6f9592a8e19fe1f27bf2b74141 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Wed, 8 Apr 2020 09:31:05 +0800 Subject: [PATCH 216/218] Rename sources/tech/20200407 15 years of Git- How to get started or learn something new.md to sources/talk/20200407 15 years of Git- How to get started or learn something new.md --- ... 15 years of Git- How to get started or learn something new.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => talk}/20200407 15 years of Git- How to get started or learn something new.md (100%) diff --git a/sources/tech/20200407 15 years of Git- How to get started or learn something new.md b/sources/talk/20200407 15 years of Git- How to get started or learn something new.md similarity index 100% rename from sources/tech/20200407 15 years of Git- How to get started or learn something new.md rename to sources/talk/20200407 15 years of Git- How to get started or learn something new.md From 621ded7bcea7f6d6586151e28cbdd9a75b2144ed Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 8 Apr 2020 12:52:06 +0800 Subject: [PATCH 217/218] PRF @HankChow --- ...to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md index fd629c8db7..9b542f814b 100644 --- a/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md +++ b/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md @@ -1,26 +1,30 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10) [#]: via: (https://itsfoss.com/upgrade-ubuntu-beta/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) -如何将 Ubuntu 18.04/19.10 升级到 Ubuntu 20.04 beta +如何将 Ubuntu 18.04 LTS/19.10 升级到 Ubuntu 20.04 beta ====== +![](https://img.linux.net.cn/data/attachment/album/202004/08/125043m1qyy7gzvkjazx41.jpg) + [Ubuntu 20.04 LTS 版本][1]还有不到一个月就发布了,Ubuntu 在这一个版本中对视觉效果作出了大变动,同时在性能方面也有所提高。 如果你还在使用 Ubuntu 18.04 LTS 版本,你会发现 Ubuntu 20.04 配合深色 Yaru 主题非常惊艳,看过 [Ubuntu 20.04 的展示视频][2]你就知道了。 -[订阅我们的 YouTube 频道观看更多 Linux 视频][3] +- [video](https://img.linux.net.cn/static/video/Ubuntu%2020.04%20Desktop%20Tour%20-%20Check%20Out%20New%20Features-9u5B0njRgOw.mp4) -感觉确实不错。如果你想在 4 月 23 日最终稳定版正式发布前率先使用 Ubuntu 20.04,也可以在官方网站上下载 beta 版本。尽管如此,它的稳定性并不差,同时你也可以在使用这个版本的过程中帮助 Ubuntu 团队进行测试。 +感觉确实不错。如果你想在 4 月 23 日最终稳定版正式发布前率先使用 Ubuntu 20.04,也可以在官方网站上下载 beta 版本。尽管是测试版本,但它的稳定性并不差,同时你也可以在使用这个版本的过程中帮助 Ubuntu 团队进行测试。 你可以下载每日构建daily build版并进行重新安装,如果你正在使用的是 Ubuntu 18.04 或 Ubuntu 19.10,也可以在现有系统的基础上直接升级到 Ubuntu 20.04 beta 版本。 -如果你需要确认正在使用的 Ubuntu 版本,可以参考[这篇文章][4]。 +从现有系统中升级是很方便的,因为你不会丢失系统设置和其他文件。与重新安装不同的是,你不需要从头开始重新安装所有的软件。当你切换到新版本时,你的主目录、应用程序(大部分)、文件都会保持原样。 + +> 如果你需要确认正在使用的 Ubuntu 版本,可以参考[这篇文章][4]。 在本文中,我将会介绍如何升级到 Ubuntu 20.04 beta 版本。 @@ -31,9 +35,9 @@ 在你阅读后面的内容之前,我首先说明一些关于升级到 Ubuntu beta 版本的常见问题。 * 版本升级的过程并不复杂,但在整个过程中需要有良好的网络连接,以便下载高达好几 GB 的数据。 - * 版本升级的过程中,第三方存储库(比如你自行添加的 [PPA][6])会被禁用,有些 PPA 可能也和新版本不兼容,在版本升级完毕后,你可以手动启用 PPA。 + * 版本升级的过程中,第三方存储库(比如你自行添加的 [PPA][6])会被禁用,有些 PPA 可能也和新版本不兼容,在版本升级完毕后,你可以手动启用这些 PPA。 * 强烈建议将重要数据备份到外部的 USB 硬盘上。你只需要将各个目录下的重要文件直接复制到外部 USB 硬盘上保存即可。 - * 升级到新版本之后,就无法再回滚到之前的旧版本了,只能重新安装旧版本系统。 + * 升级到新版本之后,就无法再回滚到之前的旧版本了,如果需要旧版本的系统,只能重新安装。 * 如果你选择升级到 Ubuntu 20.04 beta 版本,那么在 Ubuntu 20.04 最终稳定版发布之后,你也不需要重新安装。只需要保持定期更新 Ubuntu 系统,届时你就可以直接用上最终稳定版了。 * Ubuntu 16.04/17/18/19.04 都无法直接升级到 Ubuntu 20.04。 @@ -83,7 +87,7 @@ update-manager -d #### 步骤 4:开始升级到 Ubuntu 20.04 beta -接下来只要等待下载更新就可以了,遇到对话框直接点击 OK 即可。 +接下来只要等待下载更新就可以了,遇到对话框直接点击 “OK” 即可。 ![][13] @@ -99,6 +103,8 @@ update-manager -d 下面的视频展示了所有相关步骤。 +- [video](https://img.linux.net.cn/static/video/How%20to%20Upgrade%20to%20Ubuntu%2020.04%20Beta%20from%2018.04%20&%2019.10%20Right%20Now-RkxxEtaTVkA.mp4) + 由此可见,这个升级流程并不复杂。欢迎体验 Ubuntu 20.04 带来的新特性。 如果你有疑问或建议,欢迎在评论区留言。 @@ -111,7 +117,7 @@ via: https://itsfoss.com/upgrade-ubuntu-beta/ 作者:[Abhishek Prakash][a] 选题:[lujun9972][b] 译者:[HankChow](https://github.com/HankChow) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 @@ -120,7 +126,7 @@ via: https://itsfoss.com/upgrade-ubuntu-beta/ [1]: https://itsfoss.com/ubuntu-20-04-release-features/ [2]: https://www.youtube.com/watch?v=9u5B0njRgOw [3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 -[4]: https://itsfoss.com/how-to-know-ubuntu-unity-version/ +[4]: https://linux.cn/article-9872-1.html [5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-beta.jpg?ssl=1 [6]: https://itsfoss.com/ppa-guide/ [7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/software-updates-app-ubuntu.jpg?ssl=1 From 2f7a306baf68ec1c3805f11e733ab3324bf6a67c Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 8 Apr 2020 12:52:31 +0800 Subject: [PATCH 218/218] PUB @HankChow https://linux.cn/article-12085-1.html --- ... How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md (99%) diff --git a/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md b/published/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md similarity index 99% rename from translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md rename to published/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md index 9b542f814b..10db11050c 100644 --- a/translated/tech/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md +++ b/published/20200402 How to Upgrade to Ubuntu 20.04 Beta from 18.04 - 19.10.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (HankChow) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-12085-1.html) [#]: subject: (How to Upgrade to Ubuntu 20.04 Beta from 18.04 & 19.10) [#]: via: (https://itsfoss.com/upgrade-ubuntu-beta/) [#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)